From 05577f75593afc323315120120f8427469efed01 Mon Sep 17 00:00:00 2001 From: Jaime Humberto Macias Bustamante Date: Tue, 6 May 2025 11:58:38 -0700 Subject: [PATCH] Cleanup --- hscript/CustomClassHandler.hx | 12 +++-- hscript/IHScriptCustomClassBehaviour.hx | 11 ----- hscript/Interp.hx | 65 ++----------------------- hscript/customclass/CustomClass.hx | 37 ++------------ hscript/macros/ClassExtendMacro.hx | 40 +++++++++------ 5 files changed, 39 insertions(+), 126 deletions(-) diff --git a/hscript/CustomClassHandler.hx b/hscript/CustomClassHandler.hx index 619699c..73cd6b1 100644 --- a/hscript/CustomClassHandler.hx +++ b/hscript/CustomClassHandler.hx @@ -76,7 +76,7 @@ class CustomClassHandler implements IHScriptCustomConstructor { comparisonMap.set(key, value); } - _class.__custom__variables = interp.variables; + //_class.__custom__variables = interp.variables; //trace(fields); for(expr in fields) { @@ -100,21 +100,21 @@ class CustomClassHandler implements IHScriptCustomConstructor { // } //} - _class.__class__fields = [for(key => value in classVariables) key]; + //_class.__class__fields = [for(key => value in classVariables) key]; //trace(_class.__class__fields); //@:privateAccess //trace(interp.__instanceFields); - _class.__interp = interp; - _class.__allowSetGet = false; + //_class.__interp = interp; + //_class.__allowSetGet = false; interp.scriptObject = _class; for(variable => value in interp.variables) { if(variable == "this" || variable == "super" || variable == "new") continue; if(variable.startsWith("set_") || variable.startsWith("get_")) { - _class.__allowSetGet = true; + //_class.__allowSetGet = true; } } @@ -139,9 +139,11 @@ class CustomClassHandler implements IHScriptCustomConstructor { if(!interp.__instanceFields.contains(variable)) { interp.__instanceFields.push(variable); } + /* if(!_class.__class__fields.contains(variable)) { _class.__class__fields.push(variable); } + */ } } diff --git a/hscript/IHScriptCustomClassBehaviour.hx b/hscript/IHScriptCustomClassBehaviour.hx index e51b19d..c51bc21 100644 --- a/hscript/IHScriptCustomClassBehaviour.hx +++ b/hscript/IHScriptCustomClassBehaviour.hx @@ -1,17 +1,6 @@ package hscript; interface IHScriptCustomClassBehaviour { - public var __interp:Interp; public var __customClass:hscript.customclass.CustomClass; - public var __custom__variables:Map; - public var __allowSetGet:Bool; public var __real_fields:Array; - public var __class__fields:Array; - - public function hset(name:String, val:Dynamic):Dynamic; - public function hget(name:String):Dynamic; - - public function __callGetter(name:String):Dynamic; - - public function __callSetter(name:String, val:Dynamic):Dynamic; } \ No newline at end of file diff --git a/hscript/Interp.hx b/hscript/Interp.hx index a149f50..e7931c8 100644 --- a/hscript/Interp.hx +++ b/hscript/Interp.hx @@ -328,17 +328,6 @@ class Interp { UnsafeReflect.setField(scriptObject, id, v); return v; } - /* - else if (_scriptObjectType == SCustomClass && instanceHasField) { - var obj:IHScriptCustomClassBehaviour = cast scriptObject; - if(isBypassAccessor) { - obj.__allowSetGet = false; - var res = obj.hset(id, v); - obj.__allowSetGet = true; - return res; - } - return obj.hset(id, v); - } */ else if(_scriptObjectType == SAccessBehaviourObject) { var obj:IHScriptCustomAccessBehaviour = cast scriptObject; if(isBypassAccessor) { @@ -462,17 +451,6 @@ class Interp { UnsafeReflect.setField(scriptObject, id, v); return v; } - /* - else if (_scriptObjectType == SCustomClass && instanceHasField) { - var obj:IHScriptCustomClassBehaviour = cast scriptObject; - if(isBypassAccessor) { - obj.__allowSetGet = false; - var res = obj.hset(id, v); - obj.__allowSetGet = true; - return res; - } - return obj.hset(id, v); - } */ else if(_scriptObjectType == SAccessBehaviourObject) { var obj:IHScriptCustomAccessBehaviour = cast scriptObject; if(isBypassAccessor) { @@ -857,17 +835,6 @@ class Interp { final variable:Class = variables.exists(thing) ? cast variables.get(thing) : null; return variable == null ? thing : Type.getClassName(variable); } - /* - if (!newCustomClass) { - if (customClasses.exists(name)) - error(EAlreadyExistingClass(name)); - - trace("WARNING: Old Custom Class system marked for removal.\n'newCustomClass = true' to use the new system (STILL IN DEVELOPMENT)"); - customClasses.set(name, new CustomClassHandler(this, name, fields, importVar(extend), [for (i in interfaces) importVar(i)])); - return null; - } - */ - // New Custom Class system if (localParsedClasses.contains(name)) error(EAlreadyExistingClass(name)); @@ -1354,11 +1321,6 @@ class Interp { return arr[index]; } case ENew(cl, params): - /* - var a = []; - for (e in params) - a.push(expr(e)); - */ return cnew(cl, makeArgs(params)); case EThrow(e): throw expr(e); @@ -1529,7 +1491,7 @@ class Interp { } function makeArgs(params:Array):Array { - var args:Array = []; // [for (p in params) expr(p)]; + var args:Array = []; for (p in params) { switch (Tools.expr(p)) { case EIdent(id): @@ -1691,18 +1653,6 @@ class Interp { cl != null && setRedirects.exists(cl) && (_setRedirect = setRedirects[cl]) != null; }) return _setRedirect(o, f, v); - /* - if(o is IHScriptCustomClassBehaviour) { - var obj:IHScriptCustomClassBehaviour = cast o; - if(isBypassAccessor) { - obj.__allowSetGet = false; - var res = obj.hset(f, v); - obj.__allowSetGet = true; - return res; - } - return obj.hset(f, v); - } - */ if (o is IHScriptCustomAccessBehaviour) { var obj:IHScriptCustomAccessBehaviour = cast o; if(isBypassAccessor) { @@ -1854,11 +1804,7 @@ class Interp { if(staticClass.hasFunction(f)) return staticClass.callFunction(f, args); } - /* - if(_hasScriptObject && o == CustomClassHandler.staticHandler) { - return UnsafeReflect.callMethodUnsafe(scriptObject, UnsafeReflect.field(scriptObject, "_HX_SUPER__" + f), args); - } - */ + var func = get(o, f); // Workaround for an HTML5-specific issue. @@ -1873,11 +1819,6 @@ class Interp { } function call(o:Dynamic, f:Dynamic, args:Array):Dynamic { - /* - if(f == CustomClassHandler.staticHandler) { - return null; - } - */ if (_inCustomClass) { if (o == null && _nextCallObject != null) { o = _nextCallObject; @@ -1896,7 +1837,7 @@ class Interp { _nextCallObject = null; return r; } catch (e) { - error(ECustom('${_proxy.className} threw an exception: \n${e.details()}')); + error(ECustom('${_proxy.className} threw an exception: \n${e.message}')); _nextCallObject = null; return null; } diff --git a/hscript/customclass/CustomClass.hx b/hscript/customclass/CustomClass.hx index 58ce639..30efd16 100644 --- a/hscript/customclass/CustomClass.hx +++ b/hscript/customclass/CustomClass.hx @@ -35,9 +35,9 @@ class CustomClass implements IHScriptCustomAccessBehaviour { private var __class:CustomClassDecl; private var __cachedSuperFields:Null> = null; - private var __cachedFieldDecls:Map = null; - private var __cachedFunctionDecls:Map = null; - private var __cachedVarDecls:Map = null; + private var __cachedFieldDecls:Map = []; + private var __cachedFunctionDecls:Map = []; + private var __cachedVarDecls:Map = []; public var __allowSetGet:Bool = false; @@ -81,10 +81,6 @@ class CustomClass implements IHScriptCustomAccessBehaviour { } function buildClass() { - __cachedFieldDecls = []; - __cachedFunctionDecls = []; - __cachedVarDecls = []; - if (__cachedSuperFields == null) __cachedSuperFields = []; @@ -156,29 +152,6 @@ class CustomClass implements IHScriptCustomAccessBehaviour { interp.variables.set(s, v); } } - /* - var extendString = new Printer().typeToString(__class.classDecl.extend); - if (__class.pkg != null && extendString.indexOf(".") == -1) { - extendString = __class.pkg.join(".") + "." + extendString; - } - - if (Interp.customClassExist(extendString)) { - var customSuperClass:CustomClass = new CustomClass(Interp.getCustomClass(extendString), args, _cachedSuperFields, this.interp); - superClass = customSuperClass; - } else { - var c = Type.resolveClass('${extendString}_HSX'); - if (c == null) { - interp.error(ECustom("could not resolve super class: " + extendString)); - } - if (_cachedSuperFields != null) { - Reflect.setField(c, "__cachedFields", _cachedSuperFields); // Static field - } - - superClass = Type.createInstance(c, args); - superClass.__customClass = this; - superClass.__real_fields = Type.getInstanceFields(c); - } - */ } function buildImports() { @@ -254,7 +227,7 @@ class CustomClass implements IHScriptCustomAccessBehaviour { + '\n' + 'InvalidAccess error: Super function "${name}" does not exist! Define it or call the correct superclass function.')); } - r = Reflect.callMethod(superClass is CustomClass ? null : superClass, superFn, fixedArgs); + r = Reflect.callMethod((superClass is CustomClass) ? null : superClass, superFn, fixedArgs); } return r; } @@ -295,7 +268,7 @@ class CustomClass implements IHScriptCustomAccessBehaviour { } var __superClassFieldList:Array = null; - // TODO: superHasField when it extends another Custom Class + public function superHasField(name:String):Bool { if (superClass == null) return false; diff --git a/hscript/macros/ClassExtendMacro.hx b/hscript/macros/ClassExtendMacro.hx index 91327b5..85de43e 100644 --- a/hscript/macros/ClassExtendMacro.hx +++ b/hscript/macros/ClassExtendMacro.hx @@ -254,7 +254,7 @@ class ClassExtendMacro { if (returns) { overrideExpr = macro { var name:String = $v{name}; - + /* if (__custom__variables != null) { if(__custom__variables.exists(name)) { var v:Dynamic = null; @@ -263,7 +263,7 @@ class ClassExtendMacro { } } } - + */ if (__customClass != null && @:privateAccess __customClass.hasFunction(name)) { return __customClass.callFunction(name, [$a{arguments}]); } @@ -273,7 +273,7 @@ class ClassExtendMacro { } else { overrideExpr = macro { var name:String = $v{name}; - + /* if (__custom__variables != null) { if(__custom__variables.exists(name)) { var v:Dynamic = null; @@ -283,7 +283,7 @@ class ClassExtendMacro { } } } - + */ if (__customClass != null && @:privateAccess __customClass.hasFunction(name)) { __customClass.callFunction(name, [$a{arguments}]); return; @@ -351,7 +351,7 @@ class ClassExtendMacro { pack: cl.pack.copy(), name: cl.name }, [ - {name: "IHScriptCustomAccessBehaviour", pack: ["hscript"]}, + {name: "IHScriptCustomBehaviour", pack: ["hscript"]}, {name: "IHScriptCustomClassBehaviour", pack: ["hscript"]} ], false, true, false); shadowClass.name = '${cl.name}$CLASS_SUFFIX'; @@ -367,21 +367,21 @@ class ClassExtendMacro { }); // Adding hscript getters and setters - + /* shadowClass.fields.push({ name: "__interp", pos: Context.currentPos(), kind: FVar(macro: hscript.Interp), access: [APublic] }); - + */ shadowClass.fields.push({ name: "__customClass", pos: Context.currentPos(), kind: FVar(macro: hscript.customclass.CustomClass), access: [APublic] }); - + /* shadowClass.fields.push({ name: "__custom__variables", pos: Context.currentPos(), @@ -395,21 +395,23 @@ class ClassExtendMacro { kind: FVar(macro: Bool, macro true), access: [APublic] }); - + */ shadowClass.fields.push({ name: "__real_fields", pos: Context.currentPos(), kind: FVar(macro: Array), access: [APublic] }); - + /* shadowClass.fields.push({ name: "__class__fields", pos: Context.currentPos(), kind: FVar(macro: Array), access: [APublic] }); - + */ + // Unneccessary since the get/set call is already handled. + /* shadowClass.fields.push({ name: "__callGetter", pos: Context.currentPos(), @@ -463,7 +465,7 @@ class ClassExtendMacro { }), access: [APublic] }); - + */ // Todo: make it possible to override if(cl.name == "FunkinShader" || cl.name == "CustomShader" || cl.name == "MultiThreadedScript") { Context.defineModule(cl.module, [shadowClass], imports); @@ -506,28 +508,33 @@ class ClassExtendMacro { var hgetField = if(hasHgetInSuper) { macro { + /* if(__custom__variables != null) { if(__allowSetGet && __custom__variables.exists("get_" + name)) return __callGetter(name); if (__custom__variables.exists(name)) return __custom__variables.get(name); } + */ return super.hget(name); } } else { macro { + /* if(__custom__variables != null) { if(__allowSetGet && __custom__variables.exists("get_" + name)) return __callGetter(name); if (__custom__variables.exists(name)) return __custom__variables.get(name); } + */ return UnsafeReflect.getProperty(this, name); } } var hsetField = if(hasHsetInSuper) { macro { + /* if(__custom__variables != null) { if(__allowSetGet && __custom__variables.exists("set_" + name)) return __callSetter(name, val); @@ -536,7 +543,7 @@ class ClassExtendMacro { return val; } } - + */ if(__real_fields != null && __real_fields.contains(name)) { UnsafeReflect.setProperty(this, name, val); return UnsafeReflect.field(this, name); @@ -545,6 +552,7 @@ class ClassExtendMacro { } } else { macro { + /* if(__custom__variables != null) { if(__allowSetGet && __custom__variables.exists("set_" + name)) return __callSetter(name, val); @@ -553,12 +561,12 @@ class ClassExtendMacro { return val; } } - + */ if(__real_fields != null && __real_fields.contains(name)) { UnsafeReflect.setProperty(this, name, val); return UnsafeReflect.field(this, name); } - if(__custom__variables != null) __custom__variables.set(name, val); + //if(__custom__variables != null) __custom__variables.set(name, val); return val; } } @@ -610,7 +618,7 @@ class ClassExtendMacro { ] }) }); - + /*var p = new Printer(); var aa = p.printTypeDefinition(shadowClass); if(aa.length < 5024)