Advertisement
Guest User

flexsim lambda and purgelambda

a guest
Mar 5th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**lambda(codeOrNodefunction)*/
  2. Variant codeOrNodefn = param(1);
  3.  
  4. treenode callback;
  5. if (codeOrNodefn.type == VAR_TYPE_NODE) {
  6.     // a node function
  7.     callback = codeOrNodefn;
  8.     return callback;
  9. } else if (codeOrNodefn.type == VAR_TYPE_STRING) {
  10.     // create a temporary node and create a nodefunction there
  11.     string code = codeOrNodefn;
  12.     Array autovars = code.match(/([^%])%([1-9])/g);
  13.     if (autovars.length > 0) {
  14.         string preambula = "int __argc = 1;\n";
  15.         for (int i = 1; i <= 10; i++) {
  16.             preambula += ("var __autovar" + numtostring(i) + " = param(__argc++);\n");
  17.         }
  18.         code = code.replace(/([^%])%([1-9])/g, "$1__autovar$2");
  19.         code = preambula + "\n" + code;
  20.     }
  21.     code = code.replace(/%%/g, "%");
  22.     treenode project = node("MAIN:/project");
  23.     treenode exec = assertsubnode(project, "exec");
  24.     treenode lambdas = assertsubnode(exec, "lambdas");
  25.     callback = nodeinsertinto(lambdas);
  26.     nodeadddata(callback, DATATYPE_STRING);
  27.     sets(callback, code);
  28.     switch_flexscript(callback, 1);
  29.     buildnodeflexscript(callback);
  30.     return callback;
  31. } else {
  32.     return NULL;
  33. }
  34.  
  35. /**purgelambda([int lastN])*/
  36. int n = 1;
  37. if (parqty() >= 1) {
  38.     n = param(1);
  39. }
  40.  
  41. treenode project = node("MAIN:/project");
  42. treenode exec = assertsubnode(project, "exec");
  43. treenode lambdas = assertsubnode(exec, "lambdas");
  44.  
  45. if (n > 0) {
  46.     int m = content(lambdas);
  47.     n = min(n, m);
  48.     for (int i = m; i >= (m - n) && i >= 1; i--) {
  49.         destroyobject(lambdas.subnodes[i]);
  50.     }
  51. } else if (n < 0) {
  52.     clearcontents(lambdas);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement