ScriptStack 1.0.5
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]

Private Member Functions

void Validate (Type type)
string ToString (Type type)

Private Attributes

string name
List< Type > parameters
Type result
string description
Host host

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:137

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);
List< Type > parameters
Definition Routine.cs:75
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 137 of file Routine.cs.

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

References host, name, parameters, result, and Validate().

◆ Routine() [2/12]

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

Definition at line 152 of file Routine.cs.

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

References description, host, name, result, and Validate().

◆ Routine() [3/12]

ScriptStack.Runtime.Routine.Routine ( string name)

Definition at line 168 of file Routine.cs.

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

References name.

◆ Routine() [4/12]

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

Definition at line 172 of file Routine.cs.

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

References description, and name.

◆ Routine() [5/12]

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

Definition at line 176 of file Routine.cs.

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

References name, and result.

◆ Routine() [6/12]

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

Definition at line 180 of file Routine.cs.

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

References description, name, and result.

◆ Routine() [7/12]

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

Definition at line 184 of file Routine.cs.

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

References name, parameters, and result.

◆ Routine() [8/12]

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

Definition at line 189 of file Routine.cs.

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

References description, name, parameters, and result.

◆ Routine() [9/12]

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

Definition at line 194 of file Routine.cs.

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

References name, parameters, and result.

◆ Routine() [10/12]

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

Definition at line 200 of file Routine.cs.

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

References description, name, parameters, and result.

◆ Routine() [11/12]

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

Definition at line 206 of file Routine.cs.

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

References name, parameters, and result.

◆ Routine() [12/12]

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

Definition at line 213 of file Routine.cs.

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

References description, name, parameters, and result.

Member Function Documentation

◆ Description()

string ScriptStack.Runtime.Routine.Description ( )

Definition at line 298 of file Routine.cs.

299 {
300 return description;
301 }

References description.

Referenced by ScriptStack.Compiler.Parser.RoutineCall().

◆ ToString() [1/2]

override string ScriptStack.Runtime.Routine.ToString ( )

Definition at line 268 of file Routine.cs.

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

References name, parameters, result, and ToString().

Referenced by ToString().

◆ ToString() [2/2]

string ScriptStack.Runtime.Routine.ToString ( Type type)
private

Definition at line 103 of file Routine.cs.

104 {
105
106 string tmp = "";
107
108 if (type == null)
109 tmp = "null";
110 else if (type == typeof(void))
111 tmp = "void";
112 else if (type == typeof(int))
113 tmp = "int";
114 else if (type == typeof(float))
115 tmp = "float";
116 else if (type == typeof(double))
117 tmp = "double";
118 else if (type == typeof(bool))
119 tmp = "bool";
120 else if (type == typeof(char))
121 tmp = "char";
122 else if (type == typeof(string))
123 tmp = "string";
124 else if (type == typeof(ArrayList))
125 tmp = "array";
126 else
127 tmp = type.ToString().Replace("System.", "").ToLower();
128
129 return tmp;
130
131 }

◆ Validate()

void ScriptStack.Runtime.Routine.Validate ( Type type)
private

Definition at line 84 of file Routine.cs.

85 {
86
87 if (type == null || type == typeof(void))
88 return;
89
90 if (type != typeof(int)
91 && type != typeof(float)
92 && type != typeof(bool)
93 && type != typeof(double)
94 && type != typeof(decimal)
95 && type != typeof(string)
96 && type != typeof(char)
97 && type != typeof(ArrayList)
98 )
99 throw new ExecutionException("Der Typ '" + type.Name + "' ist kein generischer Datentyp und es wurden keine Erweiterungen registriert.");
100
101 }

Referenced by Routine(), and Routine().

◆ 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 224 of file Routine.cs.

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

References name, and parameters.

Referenced by ScriptStack.Runtime.Interpreter.INV().

◆ 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 254 of file Routine.cs.

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

References name, and result.

Member Data Documentation

◆ description

string ScriptStack.Runtime.Routine.description
private

Definition at line 77 of file Routine.cs.

Referenced by Description(), Routine(), Routine(), Routine(), Routine(), Routine(), and Routine().

◆ host

Host ScriptStack.Runtime.Routine.host
private

Definition at line 78 of file Routine.cs.

Referenced by Routine(), and Routine().

◆ name

string ScriptStack.Runtime.Routine.name
private

◆ parameters

List<Type> ScriptStack.Runtime.Routine.parameters
private

Definition at line 75 of file Routine.cs.

Referenced by Routine(), Routine(), Routine(), Routine(), Routine(), Routine(), Routine(), ToString(), and Verify().

◆ result

Type ScriptStack.Runtime.Routine.result
private

Property Documentation

◆ Handler

Host ScriptStack.Runtime.Routine.Handler
getset

Definition at line 322 of file Routine.cs.

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

Referenced by ScriptStack.Runtime.Interpreter.INV().

◆ Name

string ScriptStack.Runtime.Routine.Name
get

Definition at line 307 of file Routine.cs.

308 {
309 get { return name; }
310 }

Referenced by ScriptStack.Runtime.Interpreter.INV(), ScriptStack.Manager.Register(), and ScriptStack.Manager.UnRegister().

◆ ParameterTypes

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

Definition at line 312 of file Routine.cs.

313 {
314 get { return parameters; }
315 }

Referenced by ScriptStack.Runtime.Interpreter.INV(), and ScriptStack.Compiler.Parser.RoutineCall().

◆ Result

Type ScriptStack.Runtime.Routine.Result
get

Definition at line 317 of file Routine.cs.

318 {
319 get { return result; }
320 }

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