BadScript 2
Loading...
Searching...
No Matches
BadRunnable.cs
Go to the documentation of this file.
5
7
11public abstract class BadRunnable
12{
16 public BadRuntimeError? Error { get; private set; }
17
21 public static BadRunnable Empty { get; } = new BadEmptyRunnable();
22
26 public abstract IEnumerator<BadObject> Enumerator { get; }
27
32 public abstract BadObject GetReturn();
33
38 public void SetError(BadRuntimeError err)
39 {
40 Error = err;
41 }
42
48 public static BadRunnable Create(IEnumerable<BadObject> e)
49 {
50 return Create(e.GetEnumerator());
51 }
52
58 public static BadRunnable Create(IEnumerator<BadObject> e)
59 {
60 return new BadRunnableImpl(e);
61 }
62
70 public static BadRunnable Create(BadFunction func, BadExecutionContext ctx, params BadObject[] args)
71 {
72 return new BadFunctionRunnable(func, ctx, args);
73 }
74
75#region Nested type: BadEmptyRunnable
76
81 {
82 // ReSharper disable once NotDisposedResourceIsReturnedByProperty
83 public override IEnumerator<BadObject> Enumerator => Enumerable.Empty<BadObject>()
84 .GetEnumerator();
85
86 public override BadObject GetReturn()
87 {
88 return BadObject.Null;
89 }
90 }
91
92#endregion
93
94#region Nested type: BadFunctionRunnable
95
100 {
105
113 {
114 Enumerator = RunnableFunction(func, ctx, args)
115 .GetEnumerator();
116 }
117
119 public override IEnumerator<BadObject> Enumerator { get; }
120
121
129 private IEnumerable<BadObject> RunnableFunction(BadFunction func,
131 params BadObject[] args)
132 {
134
135 foreach (BadObject o in func.Invoke(args, ctx))
136 {
137 obj = o;
138
139 yield return o;
140 }
141
142 m_ReturnValue = obj.Dereference(null);
143 }
144
146 public override BadObject GetReturn()
147 {
148 return m_ReturnValue;
149 }
150 }
151
152#endregion
153
154#region Nested type: BadRunnableImpl
155
160 {
165 public BadRunnableImpl(IEnumerator<BadObject> enumerator)
166 {
167 Enumerator = enumerator;
168 }
169
171 public override IEnumerator<BadObject> Enumerator { get; }
172
174 public override BadObject GetReturn()
175 {
176 return BadObject.Null;
177 }
178 }
179
180#endregion
181}
BadFunctionRunnable(BadFunction func, BadExecutionContext ctx, params BadObject[] args)
Constructor.
IEnumerable< BadObject > RunnableFunction(BadFunction func, BadExecutionContext ctx, params BadObject[] args)
Creates an Enumeration from a Function.
BadRunnableImpl(IEnumerator< BadObject > enumerator)
Constructor.
Implements a Runnable Object.
static BadRunnable Create(BadFunction func, BadExecutionContext ctx, params BadObject[] args)
Creates a Runnable from a Function.
static BadRunnable Create(IEnumerable< BadObject > e)
Creates a Runnable from an Enumeration.
static BadRunnable Empty
Empty Runnable.
BadRuntimeError? Error
The Runtime Error.
BadObject GetReturn()
Gets the Return Value.
IEnumerator< BadObject > Enumerator
The Enumerator of the Runnable.
static BadRunnable Create(IEnumerator< BadObject > e)
Creates a Runnable from an Enumeration.
void SetError(BadRuntimeError err)
Sets the Runtime Error.
The Execution Context. Every execution of a script needs a context the script is running in....
Implements the Error Object Type.
The Base Class for all BadScript Objects.
Definition BadObject.cs:14
static readonly BadObject Null
The Null Value for the BadScript Language.
Definition BadObject.cs:28
Implements a function that can be called from the script.
Contains task/async Extensions and Integrations for the BadScript2 Runtime.
Contains the Error Objects for the BadScript2 Language.
Contains Runtime Function Objects.
Contains the Runtime Objects.
Definition BadArray.cs:10
Contains the Runtime Implementation.