From 6c20ad3a8f3c6ad7793acdf5acf0df5058f2214b Mon Sep 17 00:00:00 2001 From: lunarcleint Date: Thu, 22 Aug 2024 14:53:05 -0700 Subject: [PATCH] temp remove int vars --- hscript/Expr.hx | 32 ++-- hscript/Interp.hx | 357 +++++++-------------------------------- hscript/Parser.hx | 6 +- hscript/Postprocessor.hx | 4 +- hscript/Printer.hx | 14 +- hscript/Tools.hx | 6 +- 6 files changed, 88 insertions(+), 331 deletions(-) diff --git a/hscript/Expr.hx b/hscript/Expr.hx index ea4527a..948aac1 100644 --- a/hscript/Expr.hx +++ b/hscript/Expr.hx @@ -73,8 +73,8 @@ enum Expr #end { EConst( c : Const ); - EIdent( v : VarN ); - EVar( n : VarN, ?t : CType, ?e : Expr, ?isPublic : Bool, ?isStatic : Bool ); + EIdent( v : String ); + EVar( n : String, ?t : CType, ?e : Expr, ?isPublic : Bool, ?isStatic : Bool ); EParent( e : Expr, ?noOptimize : Bool ); EBlock( e : Array ); EField( e : Expr, f : String , ?safe : Bool ); @@ -83,18 +83,18 @@ enum Expr ECall( e : Expr, params : Array ); EIf( cond : Expr, e1 : Expr, ?e2 : Expr ); EWhile( cond : Expr, e : Expr ); - EFor( v : VarN, it : Expr, e : Expr); - EForKeyValue( v : VarN, it : Expr, e : Expr, ithv: VarN); + EFor( v : String, it : Expr, e : Expr); + EForKeyValue( v : String, it : Expr, e : Expr, ithv: String); EBreak; EContinue; - EFunction( args : Array, e : Expr, ?name : VarN, ?ret : CType, ?isPublic : Bool, ?isStatic : Bool, ?isOverride : Bool ); + EFunction( args : Array, e : Expr, ?name : String, ?ret : CType, ?isPublic : Bool, ?isStatic : Bool, ?isOverride : Bool ); EReturn( ?e : Expr ); EArray( e : Expr, index : Expr ); EMapDecl( type: MapType, keys: Array, values: Array ); EArrayDecl( e : Array ); - ENew( cl : VarN, params : Array ); + ENew( cl : String, params : Array ); EThrow( e : Expr ); - ETry( e : Expr, v : VarN, t : Null, ecatch : Expr ); + ETry( e : Expr, v : String, t : Null, ecatch : Expr ); EObject( fl : Array ); ETernary( cond : Expr, e1 : Expr, e2 : Expr ); ESwitch( e : Expr, cases : Array, ?defaultExpr : Expr ); @@ -103,10 +103,10 @@ enum Expr ECheckType( e : Expr, t : CType ); EImport( c : String, mode: KImportMode ); - EClass( name:VarN, fields:Array, ?extend:String, interfaces:Array ); + EClass( name:String, fields:Array, ?extend:String, interfaces:Array ); #if HSCRIPT_INT_VARS - EInfo( info: InfoClass, e: Expr ); + //EInfo( info: InfoClass, e: Expr ); #end } @@ -270,13 +270,13 @@ enum abstract Unop(UInt8) { } #if HSCRIPT_INT_VARS -class InfoClass { +/*class InfoClass { public var variables:Array; public function new(variables:Array) { this.variables = variables; } -} +}*/ #end enum KImportMode { @@ -308,7 +308,7 @@ class SwitchCase { //typedef Argument = { name : String, ?t : CType, ?opt : Bool, ?value : Expr }; class Argument { - public var name : VarN; + public var name : String; public var t : Null; public var opt : Bool; public var value : Null; @@ -392,10 +392,4 @@ typedef VarDecl = { var set : Null; var expr : Null; var type : Null; -} - -#if HSCRIPT_INT_VARS -abstract VarN(Dynamic) from Int from String to Int to String {} -#else -typedef VarN = String; -#end \ No newline at end of file +} \ No newline at end of file diff --git a/hscript/Interp.hx b/hscript/Interp.hx index 887a04f..3d28343 100644 --- a/hscript/Interp.hx +++ b/hscript/Interp.hx @@ -60,7 +60,7 @@ class DeclaredVar { @:structInit class RedeclaredVar { - public var n:VarN; + public var n:String; public var old:DeclaredVar; public var depth:Int; } @@ -94,19 +94,12 @@ class Interp { public var errorHandler:Error->Void; public var importFailedCallback:Array->Bool; - #if HSCRIPT_INT_VARS - public var _variablesNames:Array = []; - public var _variables:Array = []; - public var _locals:Array = []; - #else public var locals:Map; - #end - // Used for backwards compat when using int vars!!! - public var customClasses:HScriptVariables; - public var variables:HScriptVariables; - public var publicVariables:HScriptVariables; - public var staticVariables:HScriptVariables; + public var customClasses:Map; + public var variables:Map; + public var publicVariables:Map; + public var staticVariables:Map; var depth:Int = 0; var inTry:Bool; @@ -133,12 +126,6 @@ class Interp { resetVariables(); private function resetVariables() { - #if HSCRIPT_INT_VARS - _variablesNames = []; - loadTables(0); - - staticVariables = publicVariables = customClasses = variables = new HScriptVariables(this); - #else customClasses = new Map(); variables = new Map(); publicVariables = new Map(); @@ -146,7 +133,6 @@ class Interp { locals = new Map(); setDefaultVariables(); - #end } private function setDefaultVariables() { @@ -301,12 +287,9 @@ class Interp { switch(Tools.expr(e2)) { case EIdent(id): - #if HSCRIPT_INT_VARS - var sid = _variablesNames[id]; - #end - if (#if HSCRIPT_INT_VARS sid #else id #end == "Class") + if (id == "Class") return Std.isOfType(expr1, Class); - if (#if HSCRIPT_INT_VARS sid #else id #end == "Map" || #if HSCRIPT_INT_VARS sid #else id #end == "IMap") + if (id == "Map" || id == "IMap") return Std.isOfType(expr1, IMap); default: } @@ -315,21 +298,6 @@ class Interp { return expr2 != null ? Std.isOfType(expr1, expr2) : false; } - #if HSCRIPT_INT_VARS - public inline function setVar(name:String, v:Dynamic) { - isetVar(_variablesNames.indexOf(name), v); - } - - public function isetVar(id:Int, v:Dynamic) { - var sid:String = _variablesNames[id]; - if (allowStaticVariables && staticVariables.exists(sid)) - staticVariables.set(sid, v); - else if (allowPublicVariables && publicVariables.exists(sid)) - publicVariables.set(sid, v); - else - _variables[id] = v; - } - #else public function setVar(name:String, v:Dynamic) { if (allowStaticVariables && staticVariables.exists(name)) staticVariables.set(name, v); @@ -338,46 +306,42 @@ class Interp { else variables.set(name, v); } - #end function assign(e1:Expr, e2:Expr):Dynamic { var v = expr(e2); switch (Tools.expr(e1)) { case EIdent(id): - var l = #if HSCRIPT_INT_VARS _locals #else locals #end[id]; + var l = locals[id]; if (l == null) { - #if HSCRIPT_INT_VARS - var sid:String = _variablesNames[id]; - #end // TODO: WHEN ADDING ENUM DEFINED THING CHANGE THIS - if (#if HSCRIPT_INT_VARS _variables[id] != null #else !variables.exists(id) #end && - !staticVariables.exists(#if HSCRIPT_INT_VARS sid #else id #end) && !publicVariables.exists(#if HSCRIPT_INT_VARS sid #else id #end) && _hasScriptObject + if (!variables.exists(id) && + !staticVariables.exists(id) && !publicVariables.exists(id) && _hasScriptObject ) { if (_scriptObjectType == SObject) { - UnsafeReflect.setField(scriptObject, #if HSCRIPT_INT_VARS sid #else id #end, v); + UnsafeReflect.setField(scriptObject, id, v); } else { if (isBypassAccessor) { - if (__instanceFields.contains(#if HSCRIPT_INT_VARS sid #else id #end)) { - UnsafeReflect.setField(scriptObject, #if HSCRIPT_INT_VARS sid #else id #end, v); + if (__instanceFields.contains(id)) { + UnsafeReflect.setField(scriptObject, id, v); return v; } } - if (__instanceFields.contains(#if HSCRIPT_INT_VARS sid #else id #end)) { - UnsafeReflect.setProperty(scriptObject, #if HSCRIPT_INT_VARS sid #else id #end, v); - } else if (__instanceFields.contains('set_${#if HSCRIPT_INT_VARS sid #else id #end}')) { // setter - UnsafeReflect.getProperty(scriptObject, 'set_${#if HSCRIPT_INT_VARS sid #else id #end}')(v); + if (__instanceFields.contains(id)) { + UnsafeReflect.setProperty(scriptObject, id, v); + } else if (__instanceFields.contains('set_${id}')) { // setter + UnsafeReflect.getProperty(scriptObject, 'set_${id}')(v); } else { - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v); + setVar(id, v); } } } else { - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v); + setVar(id, v); } } else { l.r = v; if (l.depth == 0) { - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v); + setVar(id, v); } } case EField(e, f, s): @@ -403,24 +367,21 @@ class Interp { var v:Dynamic = null; switch (Tools.expr(e1)) { case EIdent(id): - var l = #if HSCRIPT_INT_VARS _locals #else locals #end[id]; + var l = locals[id]; v = fop(expr(e1), expr(e2)); if (l == null) { if(_hasScriptObject) { - #if HSCRIPT_INT_VARS - var sid:String = _variablesNames[id]; - #end if(_scriptObjectType == SObject) { - UnsafeReflect.setField(scriptObject, #if HSCRIPT_INT_VARS sid #else id #end, v); - } else if (__instanceFields.contains(#if HSCRIPT_INT_VARS sid #else id #end)) { - UnsafeReflect.setProperty(scriptObject, #if HSCRIPT_INT_VARS sid #else id #end, v); - } else if (__instanceFields.contains('set_${#if HSCRIPT_INT_VARS sid #else id #end}')) { // setter - UnsafeReflect.getProperty(scriptObject, 'set_${#if HSCRIPT_INT_VARS sid #else id #end}')(v); + UnsafeReflect.setField(scriptObject, id, v); + } else if (__instanceFields.contains(id)) { + UnsafeReflect.setProperty(scriptObject, id, v); + } else if (__instanceFields.contains('set_${id}')) { // setter + UnsafeReflect.getProperty(scriptObject, 'set_${id}')(v); } else { - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v); + setVar(id, v); } } else { - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v); + setVar(id, v); } } else @@ -454,24 +415,21 @@ class Interp { var v:Dynamic = null; switch (Tools.expr(e1)) { case EIdent(id): - var l = #if HSCRIPT_INT_VARS _locals #else locals #end[id]; + var l = locals[id]; v = fop(aFunc, bFunc); if (l == null) { if(_hasScriptObject) { - #if HSCRIPT_INT_VARS - var sid:String = _variablesNames[id]; - #end if(_scriptObjectType == SObject) { - UnsafeReflect.setField(scriptObject, #if HSCRIPT_INT_VARS sid #else id #end, v); - } else if (__instanceFields.contains(#if HSCRIPT_INT_VARS sid #else id #end)) { - UnsafeReflect.setProperty(scriptObject, #if HSCRIPT_INT_VARS sid #else id #end, v); - } else if (__instanceFields.contains('set_${#if HSCRIPT_INT_VARS sid #else id #end}')) { // setter - UnsafeReflect.getProperty(scriptObject, 'set_${#if HSCRIPT_INT_VARS sid #else id #end}')(v); + UnsafeReflect.setField(scriptObject, id, v); + } else if (__instanceFields.contains(id)) { + UnsafeReflect.setProperty(scriptObject, id, v); + } else if (__instanceFields.contains('set_${id}')) { // setter + UnsafeReflect.getProperty(scriptObject, 'set_${id}')(v); } else { - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v); + setVar(id, v); } } else { - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v); + setVar(id, v); } } else @@ -506,16 +464,16 @@ class Interp { #end switch (e) { case EIdent(id): - var l = #if HSCRIPT_INT_VARS _locals #else locals #end[id]; - var v:Dynamic = (l == null) ? #if HSCRIPT_INT_VARS iresolve #else resolve #end (id) : l.r; + var l = locals[id]; + var v:Dynamic = (l == null) ? resolve(id) : l.r; if (prefix) { v += delta; if (l == null) - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v) + setVar(id, v) else l.r = v; } else if (l == null) - #if HSCRIPT_INT_VARS isetVar #else setVar #end (id, v + delta) + setVar(id, v + delta) else l.r = v + delta; return v; @@ -558,11 +516,7 @@ class Interp { public function execute(expr:Expr):Dynamic { depth = 0; declared = []; - #if HSCRIPT_INT_VARS - _locals = []; - #else locals = new Map(); - #end return exprReturn(expr); } @@ -600,11 +554,6 @@ class Interp { } // TODO: use array.copy(); - #if HSCRIPT_INT_VARS - public function duplicate(array:Array):Array { - return [for (a in array) a]; - } - #else public function duplicate(h:#if haxe3 Map #else Hash #end) { #if haxe3 var h2 = new Map(); @@ -615,16 +564,11 @@ class Interp { h2.set(k, h.get(k)); return h2; } - #end function restore(old:Int) { while (declared.length > old) { var d = declared.pop(); - #if HSCRIPT_INT_VARS - _locals[d.n] = d.old; - #else locals.set(d.n, d.old); - #end } } @@ -647,46 +591,6 @@ class Interp { #end } - #if HSCRIPT_INT_VARS - public function iresolve(id:Int, doException:Bool = true):Dynamic { - //var l:DeclaredVar = untyped __cpp__("this->_locals->__get(id)");//_locals[id]; - var l:DeclaredVar = _locals[id]; - if (l != null) - return l.r; - - var v = _variables[id]; - if (v != null) return v; - - var sid:String = _variablesNames[id]; - for(map in [publicVariables, staticVariables, customClasses]) - if (map.exists(sid)) - return map.get(sid); - - if (_hasScriptObject) { - // search in object - if (sid == "this") { - return scriptObject; - } else if (_scriptObjectType == SObject && UnsafeReflect.hasField(scriptObject, sid)) { - return UnsafeReflect.field(scriptObject, sid); - } else { - if (__instanceFields.contains(sid)) { - return UnsafeReflect.getProperty(scriptObject, sid); - } else if (__instanceFields.contains('get_$sid')) { // getter - return UnsafeReflect.getProperty(scriptObject, 'get_$sid')(); - } - } - } - if (doException) - error(EUnknownVariable(sid)); - //var v = variables.get(id); - return null; - } - - public inline function resolve(id:String, doException:Bool = true):Dynamic { - if (id != null) id = StringTools.trim(id); - return iresolve(_variablesNames.indexOf(id), doException); - } - #else public function resolve(id:String, doException:Bool = true):Dynamic { if (id == null) return null; @@ -718,7 +622,6 @@ class Interp { error(EUnknownVariable(id)); return v; } - #end function getClass(c:String):haxe.ds.Either, Enum> { if (importBlocklist.contains(c)) @@ -743,28 +646,18 @@ class Interp { #end switch (e) { #if HSCRIPT_INT_VARS - case EInfo(info, e): + /*case EInfo(info, e): _variablesNames = info.variables.copy(); loadTables(_variablesNames.length); setDefaultVariables(); variables.loadDefaults(); - return expr(e); + return expr(e);*/ #end case EClass(name, fields, extend, interfaces): - #if HSCRIPT_INT_VARS - var className:String = _variablesNames[name]; - #end - - #if HSCRIPT_INT_VARS - // TODO: Change this when we add undefined thing - if (_variables[name] != null) - error(EAlreadyExistingClass(className)); - #else if (customClasses.exists(name)) error(EAlreadyExistingClass(name)); - #end inline function importVar(thing:String):String { if (thing == null) @@ -772,11 +665,7 @@ class Interp { final variable:Class = variables.exists(thing) ? cast variables.get(thing) : null; return variable == null ? thing : Type.getClassName(variable); } - #if HSCRIPT_INT_VARS - _variables[name] = new CustomClassHandler(this, className, fields, importVar(extend), [for (i in interfaces) importVar(i)]); - #else customClasses.set(name, new CustomClassHandler(this, name, fields, importVar(extend), [for (i in interfaces) importVar(i)])); - #end case EImport(c, mode): if (!importEnabled) return null; @@ -851,33 +740,11 @@ class Interp { #end } case EIdent(id): - #if HSCRIPT_INT_VARS - return iresolve(id); - #else return resolve(id); - #end case EVar(n, _, e, isPublic, isStatic): - declared.push({n: n, old: #if HSCRIPT_INT_VARS _locals[n] #else locals.get(n) #end, depth: depth}); - #if HSCRIPT_INT_VARS - _locals[n] = {r: (e == null) ? null : expr(e), depth: depth}; - #else + declared.push({n: n, old: locals.get(n), depth: depth}); locals.set(n, {r: (e == null) ? null : expr(e), depth: depth}); - #end if (depth == 0) { - #if HSCRIPT_INT_VARS - if(isPublic == true || isStatic == true) { - var varName:String = _variablesNames[n]; - if(isStatic == true) { - if(!staticVariables.exists(varName)) { // dont overwrite existing static variables - staticVariables.set(varName, _locals[n].r); - } - } else if (isPublic) { - publicVariables.set(varName, _locals[n].r); - } - } - else - _variables[n] = _locals[n].r; - #else if(isPublic == true || isStatic == true) { if(isStatic == true) { if(!staticVariables.exists(n)) { // dont overwrite existing static variables @@ -889,7 +756,6 @@ class Interp { } else variables[n] = locals[n].r; - #end } return null; case EParent(e): @@ -968,22 +834,11 @@ class Interp { returnValue = e == null ? null : expr(e); throw SReturn; case EFunction(params, fexpr, name, _, isPublic, isStatic, isOverride): - #if HSCRIPT_INT_VARS - var __capturedLocals = duplicate(_locals); - var capturedLocals:Array = []; - for(k=>e in __capturedLocals) - if (e != null && e.depth > 0) - capturedLocals[k] = e; - else - // TODO: REPLACE THIS WITH UNDEFINED WHEN WE ADD -lunar - capturedLocals[k] = null; - #else var __capturedLocals = duplicate(locals); var capturedLocals:Map = []; for(k=>e in __capturedLocals) if (e != null && e.depth > 0) capturedLocals.set(k, e); - #end var me = this; var hasOpt = false, minParams = 0; @@ -994,9 +849,7 @@ class Interp { else minParams++; var f = function(args:Array) { - if ( - #if HSCRIPT_INT_VARS me._locals #else me.locals #end == null || - #if HSCRIPT_INT_VARS me._variables #else me.variables #end == null) return null; + if (me.locals == null || me.variables == null) return null; if (((args == null) ? 0 : args.length) != params.length) { if (args.length < minParams) { @@ -1020,18 +873,18 @@ class Interp { args2.push(args[pos++]); args = args2; } - var old = #if HSCRIPT_INT_VARS me._locals #else me.locals #end, depth = me.depth; + var old = me.locals, depth = me.depth; me.depth++; - #if HSCRIPT_INT_VARS me._locals #else me.locals #end = cast me.duplicate(capturedLocals); + me.locals = cast me.duplicate(capturedLocals); for (i in 0...params.length) - #if HSCRIPT_INT_VARS me._locals #else me.locals #end[params[i].name] = cast {r: args[i], depth: depth}; + me.locals[params[i].name] = cast {r: args[i], depth: depth}; var r = null; var oldDecl = declared.length; if (inTry) try { r = me.exprReturn(fexpr); } catch (e:Dynamic) { - #if HSCRIPT_INT_VARS me._locals #else me.locals #end = old; + me.locals = old; me.depth = depth; #if neko neko.Lib.rethrow(e); @@ -1042,30 +895,11 @@ class Interp { else r = me.exprReturn(fexpr); restore(oldDecl); - #if HSCRIPT_INT_VARS me._locals #else me.locals #end = old; + me.locals = old; me.depth = depth; return r; }; var f = Reflect.makeVarArgs(f); - #if HSCRIPT_INT_VARS - if (name != null) { - if (depth == 0) { - // global function - if ((isStatic && allowStaticVariables)) - staticVariables.set(_variablesNames[name], f); - else if (isPublic && allowPublicVariables) - publicVariables.set(_variablesNames[name], f); - else - _variables[name] = f; - } else { - // function-in-function is a local function - declared.push({n: name, old: _locals[name], depth: depth}); - var ref:DeclaredVar = {r: f, depth: depth}; - _locals[name] = ref; - capturedLocals[name] = ref; // allow self-recursion - } - } - #else if (name != null) { if (depth == 0) { // global function @@ -1078,7 +912,6 @@ class Interp { capturedLocals.set(name, ref); // allow self-recursion } } - #end return f; case EMapDecl(type, _keys, _values): var keys:Array = []; @@ -1140,7 +973,7 @@ class Interp { var a = new Array(); for (i in 0...params.length) a.push(expr(params[i])); - return cnew(#if HSCRIPT_INT_VARS _variablesNames[cl] #else cl #end, a); + return cnew(cl, a); case EThrow(e): throw expr(e); case ETry(e, n, _, ecatch): @@ -1160,8 +993,8 @@ class Interp { restore(old); inTry = oldTry; // declare 'v' - declared.push({n: n, old: #if HSCRIPT_INT_VARS _locals #else locals #end[n], depth: depth}); - #if HSCRIPT_INT_VARS _locals #else locals #end[n] = cast {r: err, depth: depth}; + declared.push({n: n, old: locals[n], depth: depth}); + locals[n] = cast {r: err, depth: depth}; var v:Dynamic = expr(ecatch); restore(old); return v; @@ -1280,13 +1113,13 @@ class Interp { function forLoop(n, it, e) { var old = declared.length; - declared.push({n: n, old: #if HSCRIPT_INT_VARS _locals #else locals #end[n], depth: depth}); + declared.push({n: n, old: locals[n], depth: depth}); var it = makeIterator(expr(it)); var _hasNext = it.hasNext; var _next = it.next; while (_hasNext()) { var next = _next(); - #if HSCRIPT_INT_VARS _locals #else locals #end[n] = cast {r: next, depth: depth}; + locals[n] = cast {r: next, depth: depth}; try { expr(e); } catch (err:Stop) { @@ -1304,15 +1137,15 @@ class Interp { function forLoopKeyValue(n, it, e, ithv) { var old = declared.length; - declared.push({n: ithv, old: #if HSCRIPT_INT_VARS _locals #else locals #end[ithv], depth: depth}); - declared.push({n: n, old: #if HSCRIPT_INT_VARS _locals #else locals #end[n], depth: depth}); + declared.push({n: ithv, old: locals[ithv], depth: depth}); + declared.push({n: n, old: locals[n], depth: depth}); var it = makeKeyValueIterator(expr(it)); var _hasNext = it.hasNext; var _next = it.next; while (_hasNext()) { var next = _next(); - #if HSCRIPT_INT_VARS _locals #else locals #end[ithv] = cast {r: next.key, depth: depth}; - #if HSCRIPT_INT_VARS _locals #else locals #end[n] = cast {r: next.value, depth: depth}; + locals.set(ithv, {r: next.key, depth: depth}); + locals.set(n, {r: next.value, depth: depth}); try { expr(e); } catch (err:Stop) { @@ -1321,7 +1154,7 @@ class Interp { case SBreak: break; case SReturn: - throw err; + throw err;// the error again, wait go out of benchamrk } } } @@ -1436,13 +1269,6 @@ class Interp { return (c is IHScriptCustomConstructor) ? cast(c, IHScriptCustomConstructor).hnew(args) : Type.createInstance(c, args); } - #if HSCRIPT_INT_VARS - inline function loadTables(len:Int) { - _variables = cast new haxe.ds.Vector(len); - _locals = cast new haxe.ds.Vector(len); - } - #end - #if cpp static inline function b2i(b:Bool) return untyped __cpp__("({0} ? 1 : 0)", b); //static inline function b2i(b:Bool) return untyped __cpp__("(int)({0})", b); @@ -1469,67 +1295,4 @@ class HScriptVariablesKeyValueIterator { _current++; return {value: values[_current], key: names[_current]}; } -} - -#if HSCRIPT_INT_VARS -class HScriptVariables { - public var defaults:Map = []; - public var usedefaults:Bool = true; - - public function loadDefaults() { - usedefaults = false; - for (key => value in defaults) - set(key, value); - defaults.clear(); - } - - public var parent:Interp; - public function new(parent:Interp) - this.parent = parent; - - public inline function set(key:String, value:Dynamic) { - if (usedefaults) defaults.set(key, value); - if (parent._variablesNames.contains(key)) - parent._variables[parent._variablesNames.indexOf(key)] = value; - } - - public inline function get(key:String):Dynamic { - if (parent._variablesNames.contains(key)) - return parent._variables[parent._variablesNames.indexOf(key)]; - return null; - } - - public inline function exists(key:String):Bool { - var indx:Int = parent._variablesNames.indexOf(key); - return indx != -1 && (key == "null" ? true : parent._variables[indx] != null); - } - - public inline function remove(key:String) - parent._variables[parent._variablesNames.indexOf(key)] = null; - - public inline function clear():Void { - parent._variablesNames.resize(0); - parent._variables.resize(0); - } - - public inline function copy():Map { - var map:Map = [ - for (i in 0...parent._variables.length) - parent._variablesNames[i] => parent._variables[i] - ]; - return map; - } - - public inline function iterator():ArrayIterator - return parent._variables.iterator(); - - public inline function keys():ArrayIterator - return parent._variablesNames.iterator(); - - public function keyValueIterator() : HScriptVariablesKeyValueIterator { - return new HScriptVariablesKeyValueIterator(parent._variablesNames, parent._variables); - } -} -#else -typedef HScriptVariables = Map; -#end \ No newline at end of file +} \ No newline at end of file diff --git a/hscript/Parser.hx b/hscript/Parser.hx index b6f73f5..83b470a 100644 --- a/hscript/Parser.hx +++ b/hscript/Parser.hx @@ -227,9 +227,9 @@ class Parser { expr = Preprocessor.process(expr); if(Parser.optimize) expr = Optimizer.optimize(expr); - #if HSCRIPT_INT_VARS - expr = Postprocessor.processvars(expr); - #end + //#if HSCRIPT_INT_VARS + //expr = Postprocessor.processvars(expr); + //#end // trace("INPUT: " + s); // useful for debugging //trace("OUTPUT: " + Printer.toString(expr)); return expr; diff --git a/hscript/Postprocessor.hx b/hscript/Postprocessor.hx index b484271..117508c 100644 --- a/hscript/Postprocessor.hx +++ b/hscript/Postprocessor.hx @@ -17,7 +17,7 @@ class Postprocessor { #end } - #if HSCRIPT_INT_VARS + /*#if HSCRIPT_INT_VARS public static function processvars(e:Expr, ?vars:Array) { if(vars == null) vars = []; for(v in getvars(e)) vars.push(v); @@ -103,5 +103,5 @@ class Postprocessor { }); return vars; } - #end + #end*/ } \ No newline at end of file diff --git a/hscript/Printer.hx b/hscript/Printer.hx index 6b84dfc..79059e7 100644 --- a/hscript/Printer.hx +++ b/hscript/Printer.hx @@ -204,16 +204,16 @@ class Printer { return buf.toString(); } - function getVar(v:VarN) { + function getVar(v:String) { if( v == null ) { return ("??NULL??"); } - if(v is Int) { - return ("$" + v); - } else { + //if(v is Int) { + // return ("$" + v); + //} else { return (v); - } + //} } public static function getBinaryOp(op:Binop) { @@ -580,8 +580,8 @@ class Printer { addType(t); add(")"); #if HSCRIPT_INT_VARS - case EInfo(_, e): - expr(e); + //case EInfo(_, e): + // expr(e); #end } } diff --git a/hscript/Tools.hx b/hscript/Tools.hx index 07bb8a9..25caf34 100644 --- a/hscript/Tools.hx +++ b/hscript/Tools.hx @@ -63,7 +63,7 @@ class Tools { case EMeta(name, args, e): if( args != null ) for( a in args ) f(a); f(e); case ECheckType(e,_): f(e); #if HSCRIPT_INT_VARS - case EInfo(info, e): f(e); + //case EInfo(info, e): f(e); #end } } @@ -108,7 +108,7 @@ class Tools { case EMeta(name, args, e): if( args != null ) for( a in args ) rec(a); rec(e); case ECheckType(e,_): rec(e); #if HSCRIPT_INT_VARS - case EInfo(info, e): rec(e); + //case EInfo(info, e): rec(e); #end } } @@ -144,7 +144,7 @@ class Tools { case EImport(c, m): EImport(c, m); case EClass(name, el, extend, interfaces): EClass(name, [for( e in el ) f(e)], extend, interfaces); #if HSCRIPT_INT_VARS - case EInfo(info, e): EInfo(info, f(e)); + //case EInfo(info, e): EInfo(info, f(e)); #end } return mk(edef, e);