--- linuxsampler/trunk/src/scriptvm/tree.h 2016/07/14 00:22:26 2945 +++ linuxsampler/trunk/src/scriptvm/tree.h 2016/12/15 12:47:45 3054 @@ -98,7 +98,7 @@ std::vector args; void add(ExpressionRef arg) { args.push_back(arg); } void dump(int level = 0); - int argsCount() const { return args.size(); } + int argsCount() const { return (int) args.size(); } VMExpr* arg(int i) { return (i >= 0 && i < argsCount()) ? &*args.at(i) : NULL; } bool isPolyphonic() const; }; @@ -150,9 +150,10 @@ VMIntRelPtr* ptr; public: BuiltInIntVariable(const String& name, VMIntRelPtr* ptr); - void assign(Expression* expr); - int evalInt(); - void dump(int level = 0); + bool isAssignable() const OVERRIDE { return !ptr->readonly; } + void assign(Expression* expr) OVERRIDE; + int evalInt() OVERRIDE; + void dump(int level = 0) OVERRIDE; }; typedef Ref BuiltInIntVariableRef; @@ -413,7 +414,7 @@ int evalInt() { return 0; } EventHandler* eventHandlerByName(const String& name) const; EventHandler* eventHandler(uint index) const; - inline uint size() const { return args.size(); } + inline uint size() const { return (int) args.size(); } bool isPolyphonic() const; }; typedef Ref EventHandlersRef; @@ -601,6 +602,7 @@ std::set userPreprocessorConditions; std::map vartable; + std::map userFnTable; int globalIntVarCount; int globalStrVarCount; int polyphonicIntVarCount; @@ -632,6 +634,7 @@ IntVariableRef globalIntVar(const String& name); StringVariableRef globalStrVar(const String& name); VariableRef variableByName(const String& name); + StatementsRef userFunctionByName(const String& name); void addErr(int firstLine, int lastLine, int firstColumn, int lastColumn, const char* txt); void addWrn(int firstLine, int lastLine, int firstColumn, int lastColumn, const char* txt); void createScanner(std::istream* is);