Cleanup
This commit is contained in:
@@ -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);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
package hscript;
|
||||
|
||||
interface IHScriptCustomClassBehaviour {
|
||||
public var __interp:Interp;
|
||||
public var __customClass:hscript.customclass.CustomClass;
|
||||
public var __custom__variables:Map<String, Dynamic>;
|
||||
public var __allowSetGet:Bool;
|
||||
public var __real_fields:Array<String>;
|
||||
public var __class__fields:Array<String>;
|
||||
|
||||
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;
|
||||
}
|
||||
+3
-62
@@ -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<Any> = 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<Expr>):Array<Dynamic> {
|
||||
var args:Array<Dynamic> = []; // [for (p in params) expr(p)];
|
||||
var args:Array<Dynamic> = [];
|
||||
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>):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;
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ class CustomClass implements IHScriptCustomAccessBehaviour {
|
||||
private var __class:CustomClassDecl;
|
||||
private var __cachedSuperFields:Null<Map<String, Dynamic>> = null;
|
||||
|
||||
private var __cachedFieldDecls:Map<String, FieldDecl> = null;
|
||||
private var __cachedFunctionDecls:Map<String, FunctionDecl> = null;
|
||||
private var __cachedVarDecls:Map<String, VarDecl> = null;
|
||||
private var __cachedFieldDecls:Map<String, FieldDecl> = [];
|
||||
private var __cachedFunctionDecls:Map<String, FunctionDecl> = [];
|
||||
private var __cachedVarDecls:Map<String, VarDecl> = [];
|
||||
|
||||
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<String> = null;
|
||||
// TODO: superHasField when it extends another Custom Class
|
||||
|
||||
public function superHasField(name:String):Bool {
|
||||
if (superClass == null)
|
||||
return false;
|
||||
|
||||
@@ -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<String>),
|
||||
access: [APublic]
|
||||
});
|
||||
|
||||
/*
|
||||
shadowClass.fields.push({
|
||||
name: "__class__fields",
|
||||
pos: Context.currentPos(),
|
||||
kind: FVar(macro: Array<String>),
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user