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
79 {
80 // ReSharper disable once NotDisposedResourceIsReturnedByProperty
81 public override IEnumerator<BadObject> Enumerator => Enumerable.Empty<BadObject>().GetEnumerator();
82
83 public override BadObject GetReturn()
84 {
85 return BadObject.Null;
86 }
87 }
88
89
94 {
99 public BadRunnableImpl(IEnumerator<BadObject> enumerator)
100 {
101 Enumerator = enumerator;
102 }
103
105 public override IEnumerator<BadObject> Enumerator { get; }
106
108 public override BadObject GetReturn()
109 {
110 return BadObject.Null;
111 }
112 }
113
118 {
123
131 {
132 Enumerator = RunnableFunction(func, ctx, args).GetEnumerator();
133 }
134
136 public override IEnumerator<BadObject> Enumerator { get; }
137
138
146 private IEnumerable<BadObject> RunnableFunction(
147 BadFunction func,
149 params BadObject[] args)
150 {
152
153 foreach (BadObject o in func.Invoke(args, ctx))
154 {
155 obj = o;
156
157 yield return o;
158 }
159
160 m_ReturnValue = obj.Dereference();
161 }
162
164 public override BadObject GetReturn()
165 {
166 return m_ReturnValue;
167 }
168 }
169}
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.