MinitScript  0.9.31 PRE-BETA
ArrayMethods.cpp
Go to the documentation of this file.
1 #include <span>
2 
7 
8 using std::span;
9 
11 
13 
15 
16 void ArrayMethods::registerConstants(MinitScript* minitScript) {
17 }
18 
19 void ArrayMethods::registerMethods(MinitScript* minitScript) {
20  // array methods
21  {
22  //
23  class MethodArray: public MinitScript::Method {
24  private:
25  MinitScript* minitScript { nullptr };
26  public:
27  MethodArray(MinitScript* minitScript):
29  {},
30  MinitScript::TYPE_ARRAY
31  ),
32  minitScript(minitScript) {}
33  const string getMethodName() override {
34  return "Array";
35  }
36  bool isVariadic() const override {
37  return true;
38  }
39  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
40  returnValue.setType(MinitScript::TYPE_ARRAY);
41  for (const auto& argument: arguments) {
42  returnValue.pushArrayEntry(argument);
43  }
44  }
45  };
46  minitScript->registerMethod(new MethodArray(minitScript));
47  }
48  {
49  //
50  class MethodArrayGetSize: public MinitScript::Method {
51  private:
52  MinitScript* minitScript { nullptr };
53  public:
54  MethodArrayGetSize(MinitScript* minitScript):
56  {
57  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = false, .nullable = false }
58  },
59  MinitScript::TYPE_INTEGER
60  ),
61  minitScript(minitScript) {}
62  const string getMethodName() override {
63  return "Array::getSize";
64  }
65  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
66  if (arguments.size() == 1 &&
67  arguments[0].getType() == MinitScript::TYPE_ARRAY) {
68  returnValue.setValue(static_cast<int64_t>(arguments[0].getArraySize()));
69  } else {
70  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
71  }
72  }
73  };
74  minitScript->registerMethod(new MethodArrayGetSize(minitScript));
75  }
76  {
77  //
78  class MethodArrayIsEmpty: public MinitScript::Method {
79  private:
80  MinitScript* minitScript { nullptr };
81  public:
82  MethodArrayIsEmpty(MinitScript* minitScript):
84  {
85  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = false, .nullable = false }
86  },
87  MinitScript::TYPE_BOOLEAN
88  ),
89  minitScript(minitScript) {}
90  const string getMethodName() override {
91  return "Array::isEmpty";
92  }
93  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
94  if (arguments.size() == 1 &&
95  arguments[0].getType() == MinitScript::TYPE_ARRAY) {
96  returnValue.setValue(arguments[0].getArraySize() == 0);
97  } else {
98  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
99  }
100  }
101  };
102  minitScript->registerMethod(new MethodArrayIsEmpty(minitScript));
103  }
104  {
105  //
106  class MethodArrayPush: public MinitScript::Method {
107  private:
108  MinitScript* minitScript { nullptr };
109  public:
110  MethodArrayPush(MinitScript* minitScript):
112  {
113  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = true, .nullable = false }
114  },
115  MinitScript::TYPE_NULL
116  ),
117  minitScript(minitScript) {}
118  const string getMethodName() override {
119  return "Array::push";
120  }
121  bool isVariadic() const override {
122  return true;
123  }
124  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
125  //
126  if (arguments.size() > 1 &&
127  arguments[0].getType() == MinitScript::TYPE_ARRAY) {
128  for (auto i = 1; i < arguments.size(); i++) {
129  arguments[0].pushArrayEntry(arguments[i]);
130  }
131  } else {
132  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
133  }
134  }
135  };
136  minitScript->registerMethod(new MethodArrayPush(minitScript));
137  }
138  {
139  //
140  class MethodArrayGet: public MinitScript::Method {
141  private:
142  MinitScript* minitScript { nullptr };
143  public:
144  MethodArrayGet(MinitScript* minitScript):
146  {
147  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = false, .nullable = false },
148  { .type = MinitScript::TYPE_INTEGER, .name = "index", .optional = false, .reference = false, .nullable = false }
149  },
150  MinitScript::TYPE_PSEUDO_MIXED
151  ),
152  minitScript(minitScript) {}
153  const string getMethodName() override {
154  return "Array::get";
155  }
156  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
157  int64_t index;
158  if (arguments.size() == 2 &&
159  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
160  MinitScript::getIntegerValue(arguments, 1, index) == true) {
161  returnValue.setValue(arguments[0].getArrayEntry(index));
162  } else {
163  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
164  }
165  }
166  };
167  minitScript->registerMethod(new MethodArrayGet(minitScript));
168  }
169  {
170  //
171  class MethodArraySet: public MinitScript::Method {
172  private:
173  MinitScript* minitScript { nullptr };
174  public:
175  MethodArraySet(MinitScript* minitScript):
177  {
178  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = true, .nullable = false },
179  { .type = MinitScript::TYPE_INTEGER, .name = "index", .optional = false, .reference = false, .nullable = false },
180  { .type = MinitScript::TYPE_PSEUDO_MIXED, .name = "value", .optional = false, .reference = false, .nullable = false }
181  },
182  MinitScript::TYPE_NULL
183  ),
184  minitScript(minitScript) {}
185  const string getMethodName() override {
186  return "Array::set";
187  }
188  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
189  int64_t index;
190  if (arguments.size() == 3 &&
191  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
192  MinitScript::getIntegerValue(arguments, 1, index) == true) {
193  arguments[0].setArrayEntry(index, arguments[2]);
194  } else {
195  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
196  }
197  }
198  };
199  minitScript->registerMethod(new MethodArraySet(minitScript));
200  }
201  {
202  //
203  class MethodArrayRemove: public MinitScript::Method {
204  private:
205  MinitScript* minitScript { nullptr };
206  public:
207  MethodArrayRemove(MinitScript* minitScript):
209  {
210  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = true, .nullable = false },
211  { .type = MinitScript::TYPE_INTEGER, .name = "index", .optional = false, .reference = false, .nullable = false }
212  },
213  MinitScript::TYPE_NULL
214  ),
215  minitScript(minitScript) {}
216  const string getMethodName() override {
217  return "Array::remove";
218  }
219  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
220  int64_t index;
221  if (arguments.size() == 2 &&
222  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
223  MinitScript::getIntegerValue(arguments, 1, index) == true) {
224  arguments[0].removeArrayEntry(index);
225  } else {
226  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
227  }
228  }
229  };
230  minitScript->registerMethod(new MethodArrayRemove(minitScript));
231  }
232  {
233  //
234  class MethodArrayRemoveOf: public MinitScript::Method {
235  private:
236  MinitScript* minitScript { nullptr };
237  public:
238  MethodArrayRemoveOf(MinitScript* minitScript):
240  {
241  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = true, .nullable = false },
242  { .type = MinitScript::TYPE_STRING, .name = "value", .optional = false, .reference = false, .nullable = false },
243  { .type = MinitScript::TYPE_INTEGER, .name = "beginIndex", .optional = true, .reference = false, .nullable = false },
244  },
245  MinitScript::TYPE_NULL
246  ),
247  minitScript(minitScript) {}
248  const string getMethodName() override {
249  return "Array::removeOf";
250  }
251  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
252  string stringValue;
253  int64_t beginIndex = 0;
254  if ((arguments.size() == 2 || arguments.size() == 3) &&
255  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
256  MinitScript::getStringValue(arguments, 1, stringValue) == true &&
257  MinitScript::getIntegerValue(arguments, 2, beginIndex, true) == true) {
258  auto& array = arguments[0];
259  for (auto i = beginIndex; i < array.getArraySize(); i++) {
260  auto arrayValue = array.getArrayEntry(i);
261  if (arrayValue.getValueAsString() == stringValue) {
262  array.removeArrayEntry(i);
263  i--;
264  }
265  }
266  } else {
267  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
268  }
269  }
270  };
271  minitScript->registerMethod(new MethodArrayRemoveOf(minitScript));
272  }
273  {
274  //
275  class MethodArrayIndexOf: public MinitScript::Method {
276  private:
277  MinitScript* minitScript { nullptr };
278  public:
279  MethodArrayIndexOf(MinitScript* minitScript):
281  {
282  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = false, .nullable = false },
283  { .type = MinitScript::TYPE_STRING, .name = "value", .optional = false, .reference = false, .nullable = false },
284  { .type = MinitScript::TYPE_INTEGER, .name = "beginIndex", .optional = true, .reference = false, .nullable = false },
285  },
286  MinitScript::TYPE_INTEGER
287  ),
288  minitScript(minitScript) {}
289  const string getMethodName() override {
290  return "Array::indexOf";
291  }
292  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
293  string stringValue;
294  int64_t beginIndex = 0;
295  if ((arguments.size() == 2 || arguments.size() == 3) &&
296  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
297  MinitScript::getStringValue(arguments, 1, stringValue) == true &&
298  MinitScript::getIntegerValue(arguments, 2, beginIndex, true) == true) {
299  const auto& array = arguments[0];
300  returnValue.setValue(static_cast<int64_t>(-1));
301  for (auto i = beginIndex; i < array.getArraySize(); i++) {
302  auto arrayValue = array.getArrayEntry(i);
303  if (arrayValue.getValueAsString() == stringValue) {
304  returnValue.setValue(static_cast<int64_t>(i));
305  break;
306  }
307  }
308  } else {
309  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
310  }
311  }
312  };
313  minitScript->registerMethod(new MethodArrayIndexOf(minitScript));
314  }
315  {
316  //
317  class MethodArraySort: public MinitScript::Method {
318  private:
319  MinitScript* minitScript { nullptr };
320  public:
321  MethodArraySort(MinitScript* minitScript):
323  {
324  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = true, .nullable = false },
325  { .type = MinitScript::TYPE_FUNCTION_ASSIGNMENT, .name = "sortFunction", .optional = false, .reference = false, .nullable = false },
326  },
327  MinitScript::TYPE_NULL
328  ),
329  minitScript(minitScript) {}
330  const string getMethodName() override {
331  return "Array::sort";
332  }
333  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
334  string sortFunction;
335  int sortFunctionScriptIdx;
336  if (arguments.size() == 2 &&
337  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
338  MinitScript::getFunctionValue(arguments, 1, sortFunction, sortFunctionScriptIdx) == true) {
339  auto arrayPtr = arguments[0].getArrayPointer();
340  if (arrayPtr != nullptr) {
341  if (sortFunction.empty() == false && sortFunctionScriptIdx == MinitScript::SCRIPTIDX_NONE) {
342  sortFunctionScriptIdx = minitScript->getFunctionScriptIdx(sortFunction);
343  }
344  if (sortFunctionScriptIdx == MinitScript::SCRIPTIDX_NONE) {
345  MINITSCRIPT_METHODUSAGE_COMPLAINM(getMethodName(), "Function not found: " + sortFunction);
346  } else {
347  class SortClass {
348  private:
349  MinitScript* minitScript;
350  int sortFunctionScriptIdx;
351  public:
352  SortClass(MinitScript* minitScript, int sortFunctionScriptIdx): minitScript(minitScript), sortFunctionScriptIdx(sortFunctionScriptIdx) {
353  }
354  bool operator()(const MinitScript::Variable* a, const MinitScript::Variable* b) const {
355  vector<MinitScript::Variable> sortArguments { MinitScript::Variable::createReferenceVariable(a), MinitScript::Variable::createReferenceVariable(b) };
356  span sortArgumentsSpan(sortArguments);
357  MinitScript::Variable sortReturnValue;
358  minitScript->call(sortFunctionScriptIdx, sortArgumentsSpan, sortReturnValue);
359  bool result = false;
360  sortReturnValue.getBooleanValue(result, false);
361  return result;
362  }
363  };
364  sort(arrayPtr->begin(), arrayPtr->end(), SortClass(minitScript, sortFunctionScriptIdx));
365  }
366  }
367  } else {
368  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
369  }
370  }
371  };
372  minitScript->registerMethod(new MethodArraySort(minitScript));
373  }
374  {
375  //
376  class MethodArrayReverse: public MinitScript::Method {
377  private:
378  MinitScript* minitScript { nullptr };
379  public:
380  MethodArrayReverse(MinitScript* minitScript):
382  {
383  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = true, .nullable = false }
384  },
385  MinitScript::TYPE_NULL
386  ),
387  minitScript(minitScript) {}
388  const string getMethodName() override {
389  return "Array::reverse";
390  }
391  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
392  if (arguments.size() == 1 &&
393  arguments[0].getType() == MinitScript::TYPE_ARRAY) {
394  auto arrayPtr = arguments[0].getArrayPointer();
395  if (arrayPtr != nullptr) {
396  reverse(arrayPtr->begin(), arrayPtr->end());
397  }
398  } else {
399  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
400  }
401  }
402  };
403  minitScript->registerMethod(new MethodArrayReverse(minitScript));
404  }
405  {
406  //
407  class MethodArrayClear: public MinitScript::Method {
408  private:
409  MinitScript* minitScript { nullptr };
410  public:
411  MethodArrayClear(MinitScript* minitScript):
413  {
414  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = true, .nullable = false }
415  },
416  MinitScript::TYPE_NULL
417  ),
418  minitScript(minitScript) {}
419  const string getMethodName() override {
420  return "Array::clear";
421  }
422  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
423  if (arguments.size() == 1 &&
424  arguments[0].getType() == MinitScript::TYPE_ARRAY) {
425  arguments[0].clearArray();
426  } else {
427  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
428  }
429  }
430  };
431  minitScript->registerMethod(new MethodArrayClear(minitScript));
432  }
433  {
434  //
435  class MethodArrayForEach: public MinitScript::Method {
436  private:
437  MinitScript* minitScript { nullptr };
438  public:
439  MethodArrayForEach(MinitScript* minitScript):
441  {
442  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = false, .nullable = false },
443  { .type = MinitScript::TYPE_FUNCTION_ASSIGNMENT, .name = "callbackFunction", .optional = false, .reference = false, .nullable = false },
444  { .type = MinitScript::TYPE_PSEUDO_MIXED, .name = "cookie", .optional = true, .reference = true, .nullable = false }
445  },
446  MinitScript::TYPE_NULL
447  ),
448  minitScript(minitScript) {}
449  const string getMethodName() override {
450  return "Array::forEach";
451  }
452  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
453  string callbackFunction;
454  int callbackFunctionScriptIdx;
455  if ((arguments.size() == 2 || arguments.size() == 3) &&
456  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
457  MinitScript::getFunctionValue(arguments, 1, callbackFunction, callbackFunctionScriptIdx) == true) {
458  auto arrayPtr = arguments[0].getArrayPointer();
459  if (arrayPtr != nullptr) {
460  if (callbackFunction.empty() == false && callbackFunctionScriptIdx == MinitScript::SCRIPTIDX_NONE) {
461  callbackFunctionScriptIdx = minitScript->getFunctionScriptIdx(callbackFunction);
462  }
463  if (callbackFunctionScriptIdx == MinitScript::SCRIPTIDX_NONE) {
464  MINITSCRIPT_METHODUSAGE_COMPLAINM(getMethodName(), "Function not found: " + callbackFunction);
465  } else {
466  for (auto arrayEntry: *arrayPtr) {
467  vector<MinitScript::Variable> functionArguments { MinitScript::Variable::createReferenceVariable(arrayEntry) };
468  if (arguments.size() == 3) functionArguments.push_back(arguments[2]);
469  span functionArgumentsSpan(functionArguments);
470  MinitScript::Variable functionReturnValue;
471  minitScript->call(callbackFunctionScriptIdx, functionArgumentsSpan, functionReturnValue);
472  // exit condition
473  bool result = false;
474  functionReturnValue.getBooleanValue(result, false);
475  if (result == true) break;
476  }
477  }
478  }
479  } else {
480  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
481  }
482  }
483  };
484  minitScript->registerMethod(new MethodArrayForEach(minitScript));
485  }
486  {
487  //
488  class MethodArrayForRange: public MinitScript::Method {
489  private:
490  MinitScript* minitScript { nullptr };
491  public:
492  MethodArrayForRange(MinitScript* minitScript):
494  {
495  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = false, .nullable = false },
496  { .type = MinitScript::TYPE_FUNCTION_ASSIGNMENT, .name = "callbackFunction", .optional = false, .reference = false, .nullable = false },
497  { .type = MinitScript::TYPE_INTEGER, .name = "beginIndex", .optional = false, .reference = false, .nullable = false },
498  { .type = MinitScript::TYPE_INTEGER, .name = "count", .optional = true, .reference = false, .nullable = false },
499  { .type = MinitScript::TYPE_INTEGER, .name = "step", .optional = true, .reference = false, .nullable = false },
500  { .type = MinitScript::TYPE_PSEUDO_MIXED, .name = "cookie", .optional = true, .reference = true, .nullable = false }
501  },
502  MinitScript::TYPE_NULL
503  ),
504  minitScript(minitScript) {}
505  const string getMethodName() override {
506  return "Array::forRange";
507  }
508  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
509  string callbackFunction;
510  int callbackFunctionScriptIdx;
511  int64_t beginIndex;
512  int64_t count = -1ll;
513  int64_t step = 1ll;
514  if ((arguments.size() == 3 || arguments.size() == 4 || arguments.size() == 5 || arguments.size() == 6) &&
515  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
516  MinitScript::getFunctionValue(arguments, 1, callbackFunction, callbackFunctionScriptIdx) == true &&
517  MinitScript::getIntegerValue(arguments, 2, beginIndex, true) == true &&
518  MinitScript::getIntegerValue(arguments, 3, count, true) == true &&
519  MinitScript::getIntegerValue(arguments, 4, step, true) == true) {
520  auto arrayPtr = arguments[0].getArrayPointer();
521  if (arrayPtr != nullptr) {
522  if (callbackFunction.empty() == false && callbackFunctionScriptIdx == MinitScript::SCRIPTIDX_NONE) {
523  callbackFunctionScriptIdx = minitScript->getFunctionScriptIdx(callbackFunction);
524  }
525  if (callbackFunctionScriptIdx == MinitScript::SCRIPTIDX_NONE) {
526  MINITSCRIPT_METHODUSAGE_COMPLAINM(getMethodName(), "Function not found: " + callbackFunction);
527  } else {
528  auto counter = 0;
529  for (auto i = beginIndex; i >= 0 && counter < count && i < arrayPtr->size(); i+= step) {
530  auto arrayEntry = (*arrayPtr)[i];
531  vector<MinitScript::Variable> functionArguments { MinitScript::Variable::createReferenceVariable(arrayEntry) };
532  if (arguments.size() == 6) functionArguments.push_back(arguments[5]);
533  span functionArgumentsSpan(functionArguments);
534  MinitScript::Variable functionReturnValue;
535  minitScript->call(callbackFunctionScriptIdx, functionArgumentsSpan, functionReturnValue);
536  // exit condition
537  bool result = false;
538  functionReturnValue.getBooleanValue(result, false);
539  if (result == true) break;
540  //
541  counter++;
542  }
543  }
544  }
545  } else {
546  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
547  }
548  }
549  };
550  minitScript->registerMethod(new MethodArrayForRange(minitScript));
551  }
552  {
553  //
554  class MethodArrayContains: public MinitScript::Method {
555  private:
556  MinitScript* minitScript { nullptr };
557  public:
558  MethodArrayContains(MinitScript* minitScript):
560  {
561  { .type = MinitScript::TYPE_ARRAY, .name = "array", .optional = false, .reference = false, .nullable = false },
562  { .type = MinitScript::TYPE_PSEUDO_MIXED, .name = "value", .optional = false, .reference = false, .nullable = false },
563  },
564  MinitScript::TYPE_BOOLEAN
565  ),
566  minitScript(minitScript) {}
567  const string getMethodName() override {
568  return "Array::contains";
569  }
570  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
571  string stringValue;
572  if ((arguments.size() == 2) &&
573  arguments[0].getType() == MinitScript::TYPE_ARRAY &&
574  MinitScript::getStringValue(arguments, 1, stringValue) == true) {
575  const auto& array = arguments[0];
576  returnValue.setValue(false);
577  for (auto i = 0; i < array.getArraySize(); i++) {
578  auto arrayValue = array.getArrayEntry(i);
579  if (arrayValue.getValueAsString() == stringValue) {
580  returnValue.setValue(true);
581  break;
582  }
583  }
584  } else {
585  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
586  }
587  }
588  };
589  minitScript->registerMethod(new MethodArrayContains(minitScript));
590  }
591 }
#define MINITSCRIPT_METHODUSAGE_COMPLAINM(methodName, message)
Definition: MinitScript.h:60
#define MINITSCRIPT_METHODUSAGE_COMPLAIN(methodName)
Definition: MinitScript.h:59
MinitScript script array methods.
Definition: ArrayMethods.h:12
void pushArrayEntry(const Variable &value)
Push entry to array.
Definition: MinitScript.h:1892
bool getBooleanValue(bool &value, bool optional=false) const
Get boolean value from given variable.
Definition: MinitScript.h:1405
void setType(VariableType newType)
Set type.
Definition: MinitScript.h:1253
void setValue(const Variable &variable)
Set value from given variable into variable.
Definition: MinitScript.h:1618
void registerMethod(Method *method)
Register method.
int getFunctionScriptIdx(const string &function)
Return function script index by function name.
Definition: MinitScript.h:5204
bool call(int scriptIdx, span< Variable > &arguments, Variable &returnValue, bool pushScriptState)
Call function.