ScriptStack 1.0.4
Loading...
Searching...
No Matches
ScriptStack.Runtime.Routine Class Reference

A Routine is an abstract representation of a method. More...

Public Member Functions

 Routine (Type result, string name, List< Type > parameters)
 Routine (Type result, string name, List< Type > parameterTypes, string description)
 Routine (string name)
 Routine (string name, string description)
 Routine (Type result, string name)
 Routine (Type result, string name, string description)
 Routine (Type result, string name, Type parameter)
 Routine (Type result, string name, Type parameter, string description)
 Routine (Type result, string name, Type parameter0, Type parameter1)
 Routine (Type result, string name, Type parameter0, Type parameter1, string description)
 Routine (Type result, string name, Type parameter0, Type parameter1, Type parameter2)
 Routine (Type result, string name, Type parameter0, Type parameter1, Type parameter2, string description)
void Verify (List< object > parameters)
 Verify the parameter types of a Routine. If null or void was specified values arent verified.
void Verify (object result)
 Verify the result of a Routine. If null or void was specified values arent verified.
override string ToString ()
string Description ()

Properties

string Name [get]
List< Type > ParameterTypes [get]
Type Result [get]
Host Handler [get, set]

Detailed Description

A Routine is an abstract representation of a method.

To successfully write a routine you have to use one of its several overloaded cunstuctors listed above and pass up to a maximum of 3 parameters.

Routine myRoutine;
myRoutine = new Routine(
typeof(int), // return value (optional)
"myFunction", // name of the function (required)
typeof(int), typeof(float), typeof(bool), // up to 3 parameters (optional)
"Describe your custom method" // a description (optional)
);
Routine(Type result, string name, List< Type > parameters)
Definition Routine.cs:136

To declare more then 3 parameters you can add them to a list and add the list as parameter

// create a generic list ..
List<Type> customParameter = new List<Type>();
// .. add all parameter types
customParameter.Add(typeof(int));
customParameter.Add(typeof(float));
customParameter.Add(typeof(bool));
customParameter.Add(typeof(int));
// .. and add them as a parameter
Routine myRoutine = new Routine(
typeof(int),
"myFunction",
typeof(customParameter), // the list as parameter
"Describe your function"
);

The Manager can invoke a Routine by using the Invoke method.

Routine myRoutine = manager.Routines["print"];
List<object> parameters = new List<object>();
parameters.Add("Hello world");
myRoutine.Handler.Invoke(myRoutine.Name, parameters);
object Invoke(string routine, List< object > parameters)
Called when a Routine is invoked.
See also
Manager, Host
Todo
The Constructor has serveral (way too much) Overloaders

Definition at line 69 of file Routine.cs.

Constructor & Destructor Documentation

◆ Routine() [1/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
List< Type > parameters )

Definition at line 136 of file Routine.cs.

136 {
137
138 Validate(result);
139
140 foreach (Type parameter in parameters)
141 Validate(parameter);
142
143 this.result = result;
144 this.name = name;
145 this.parameters = parameters;
146
147 host = null;
148
149 }

◆ Routine() [2/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
List< Type > parameterTypes,
string description )

Definition at line 151 of file Routine.cs.

152 {
153
154 Validate(result);
155
156 foreach (Type parameter in parameterTypes)
157 Validate(parameter);
158
159 this.result = result;
160 this.name = name;
161 this.parameters = parameterTypes;
162 this.description = description;
163 host = null;
164
165 }

◆ Routine() [3/12]

ScriptStack.Runtime.Routine.Routine ( string name)

Definition at line 167 of file Routine.cs.

167 : this(null, name, new List<Type>())
168 {
169 }

◆ Routine() [4/12]

ScriptStack.Runtime.Routine.Routine ( string name,
string description )

Definition at line 171 of file Routine.cs.

171 : this(null, name, new List<Type>(), description)
172 {
173 }

◆ Routine() [5/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name )

Definition at line 175 of file Routine.cs.

175 : this(result, name, new List<Type>())
176 {
177 }

◆ Routine() [6/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
string description )

Definition at line 179 of file Routine.cs.

179 : this(result, name, new List<Type>(), description)
180 {
181 }

◆ Routine() [7/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
Type parameter )

Definition at line 183 of file Routine.cs.

183 : this(result, name, new List<Type>())
184 {
185 parameters.Add(parameter);
186 }

◆ Routine() [8/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
Type parameter,
string description )

Definition at line 188 of file Routine.cs.

188 : this(result, name, new List<Type>(), description)
189 {
190 parameters.Add(parameter);
191 }

◆ Routine() [9/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
Type parameter0,
Type parameter1 )

Definition at line 193 of file Routine.cs.

193 : this(result, name, new List<Type>())
194 {
195 parameters.Add(parameter0);
196 parameters.Add(parameter1);
197 }

◆ Routine() [10/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
Type parameter0,
Type parameter1,
string description )

Definition at line 199 of file Routine.cs.

199 : this(result, name, new List<Type>(), description)
200 {
201 parameters.Add(parameter0);
202 parameters.Add(parameter1);
203 }

◆ Routine() [11/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
Type parameter0,
Type parameter1,
Type parameter2 )

Definition at line 205 of file Routine.cs.

205 : this(result, name, new List<Type>())
206 {
207 parameters.Add(parameter0);
208 parameters.Add(parameter1);
209 parameters.Add(parameter2);
210 }

◆ Routine() [12/12]

ScriptStack.Runtime.Routine.Routine ( Type result,
string name,
Type parameter0,
Type parameter1,
Type parameter2,
string description )

Definition at line 212 of file Routine.cs.

212 : this(result, name, new List<Type>(), description)
213 {
214 parameters.Add(parameter0);
215 parameters.Add(parameter1);
216 parameters.Add(parameter2);
217 }

Member Function Documentation

◆ Description()

string ScriptStack.Runtime.Routine.Description ( )

Definition at line 297 of file Routine.cs.

298 {
299 return description;
300 }

◆ ToString()

override string ScriptStack.Runtime.Routine.ToString ( )

Definition at line 267 of file Routine.cs.

268 {
269
270 StringBuilder sb = new StringBuilder();
271
272 //if(result != (Type)null)
273 sb.Append(ToString(result) + " ");
274
275 sb.Append(name);
276
277 sb.Append("(");
278
279 int i = 0;
280
281 for (i = 0; i < parameters.Count; i++)
282 {
283
284 if (i > 0)
285 sb.Append(", ");
286
287 sb.Append(ToString(parameters[i]));
288
289 }
290
291 sb.Append(")");
292
293 return sb.ToString();
294
295 }

References ToString().

Referenced by ToString().

◆ Verify() [1/2]

void ScriptStack.Runtime.Routine.Verify ( List< object > parameters)

Verify the parameter types of a Routine. If null or void was specified values arent verified.

Parameters
parameters

Definition at line 223 of file Routine.cs.

224 {
225
226 if (parameters.Count != this.parameters.Count)
227 throw new ExecutionException("Die Routine '" + name + "' wurde mit " + parameters.Count + " statt erwarteten " + this.parameters.Count + " Parametern aufgerufen.");
228
229 for (int i = 0; i < parameters.Count; i++)
230 {
231
232 if (null == this.parameters[i] || null == parameters[i])
233 continue;
234
235 if (typeof(void) == this.parameters[i] || typeof(void) == parameters[i])
236 continue;
237
238 Type expected = this.parameters[i];
239
240 Type specified = parameters[i].GetType();
241
242 if (expected != specified)
243 throw new ExecutionException("Typ '" + specified.Name + "' statt erwartetem Typ '" + expected.Name + "' als " + (i + 1) + " Parameter von '" + name +"' angegeben.");
244
245 }
246
247 }

◆ Verify() [2/2]

void ScriptStack.Runtime.Routine.Verify ( object result)

Verify the result of a Routine. If null or void was specified values arent verified.

Parameters
result

Definition at line 253 of file Routine.cs.

254 {
255
256 if (null == this.result || null == result)
257 return;
258
259 if (typeof(void) == this.result || typeof(void) == result)
260 return;
261
262 if (result.GetType() != this.result)
263 throw new ExecutionException("Typ '" + result.GetType().Name + "' statt erwartetem Typ '" + this.result.Name + "' als Ergebnis von '" + name + "' erhalten.");
264
265 }

Property Documentation

◆ Handler

Host ScriptStack.Runtime.Routine.Handler
getset

Definition at line 321 of file Routine.cs.

322 {
323 get { return host; }
324 internal set { host = value; }
325 }

◆ Name

string ScriptStack.Runtime.Routine.Name
get

Definition at line 306 of file Routine.cs.

307 {
308 get { return name; }
309 }

Referenced by ScriptStack.Manager.Register(), and ScriptStack.Manager.UnRegister().

◆ ParameterTypes

List<Type> ScriptStack.Runtime.Routine.ParameterTypes
get

Definition at line 311 of file Routine.cs.

312 {
313 get { return parameters; }
314 }

◆ Result

Type ScriptStack.Runtime.Routine.Result
get

Definition at line 316 of file Routine.cs.

317 {
318 get { return result; }
319 }

The documentation for this class was generated from the following file: