diff --git a/.vscode/settings.json b/.vscode/settings.json index 83d026d..16ca074 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,11 +2,13 @@ "editor.detectIndentation": false, "editor.insertSpaces": false, "files.associations": { - "*.hx": "haxe", "*.hscript": "haxe", + "*.info": "json", + "*.hx": "haxe", "*.hsc": "haxe", "*.hxs": "haxe", - "vector": "cpp" + "vector": "cpp", + "random": "cpp" }, "files.eol": "\n", "files.insertFinalNewline": true, diff --git a/extraParams.hxml b/extraParams.hxml index 83d4416..5c13a47 100644 --- a/extraParams.hxml +++ b/extraParams.hxml @@ -1,2 +1,3 @@ --macro keep('IntIterator') --macro hxbytevm.utils.macros.OptimizerMacro.init() +--library cpphelpers diff --git a/haxelib.json b/haxelib.json index d3cd4d9..a5bf043 100644 --- a/haxelib.json +++ b/haxelib.json @@ -6,4 +6,7 @@ "version": "0.0.1", "releasenote": "", "contributors": ["Ne_Eo", "lunarcleint"], + "dependencies": { + "cpphelpers": "" + } } diff --git a/hxbytevm/utils/FastUtils.hx b/hxbytevm/utils/FastUtils.hx index 1bfdef2..88ab72b 100644 --- a/hxbytevm/utils/FastUtils.hx +++ b/hxbytevm/utils/FastUtils.hx @@ -7,84 +7,25 @@ package hxbytevm.utils; @:unreflective #if cpp extern #end class FastUtils { #if cpp - @:native('combineStringFast') public static function combineStringFast1(a:String):String; - @:native('combineStringFast') public static function combineStringFast2(a:String, b:String):String; - @:native('combineStringFast') public static function combineStringFast3(a:String, b:String, c:String):String; - @:native('combineStringFast') public static function combineStringFast4(a:String, b:String, c:String, d:String):String; - @:native('combineStringFast') public static function combineStringFast5(a:String, b:String, c:String, d:String, e:String):String; - @:native('combineStringFast') public static function combineStringFast6(a:String, b:String, c:String, d:String, e:String, f:String):String; - @:native('combineStringFast') public static function combineStringFast7(a:String, b:String, c:String, d:String, e:String, f:String, g:String):String; - @:native('combineStringFast') public static function combineStringFast8(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String):String; - @:native('combineStringFast') public static function combineStringFast9(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String):String; - @:native('combineStringFast') public static function combineStringFast10(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String):String; - @:native('combineStringFast') public static function combineStringFast11(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String):String; - @:native('combineStringFast') public static function combineStringFast12(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String):String; - @:native('combineStringFast') public static function combineStringFast13(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String):String; - @:native('combineStringFast') public static function combineStringFast14(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String):String; - @:native('combineStringFast') public static function combineStringFast15(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String):String; - @:native('combineStringFast') public static function combineStringFast16(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String, p:String):String; + @:native('combineStringFast') public static function combineStringFast(inArray:cpp.StdVector):String; - @:native('combineString') public static function combineString1(a:String):String; - @:native('combineString') public static function combineString2(a:String, b:String):String; - @:native('combineString') public static function combineString3(a:String, b:String, c:String):String; - @:native('combineString') public static function combineString4(a:String, b:String, c:String, d:String):String; - @:native('combineString') public static function combineString5(a:String, b:String, c:String, d:String, e:String):String; - @:native('combineString') public static function combineString6(a:String, b:String, c:String, d:String, e:String, f:String):String; - @:native('combineString') public static function combineString7(a:String, b:String, c:String, d:String, e:String, f:String, g:String):String; - @:native('combineString') public static function combineString8(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String):String; - @:native('combineString') public static function combineString9(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String):String; - @:native('combineString') public static function combineString10(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String):String; - @:native('combineString') public static function combineString11(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String):String; - @:native('combineString') public static function combineString12(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String):String; - @:native('combineString') public static function combineString13(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String):String; - @:native('combineString') public static function combineString14(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String):String; - @:native('combineString') public static function combineString15(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String):String; - @:native('combineString') public static function combineString16(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String, p:String):String; + @:native('combineString') public static function combineString(inArray:cpp.StdVector):String; @:native('repeatString') public static function repeatString(str:String, times:Int):String; @:native('parse_int_throw') public static function parseIntLimit(str:String):Int; #else - @:pure public static inline function combineStringFast1(a:String):String return _combineString(a); - @:pure public static inline function combineStringFast2(a:String, b:String):String return _combineString(a,b); - @:pure public static inline function combineStringFast3(a:String, b:String, c:String):String return _combineString(a,b,c); - @:pure public static inline function combineStringFast4(a:String, b:String, c:String, d:String):String return _combineString(a,b,c,d); - @:pure public static inline function combineStringFast5(a:String, b:String, c:String, d:String, e:String):String return _combineString(a,b,c,d,e); - @:pure public static inline function combineStringFast6(a:String, b:String, c:String, d:String, e:String, f:String):String return _combineString(a,b,c,d,e,f); - @:pure public static inline function combineStringFast7(a:String, b:String, c:String, d:String, e:String, f:String, g:String):String return _combineString(a,b,c,d,e,f,g); - @:pure public static inline function combineStringFast8(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String):String return _combineString(a,b,c,d,e,f,g,h); - @:pure public static inline function combineStringFast9(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String):String return _combineString(a,b,c,d,e,f,g,h,i); - @:pure public static inline function combineStringFast10(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String):String return _combineString(a,b,c,d,e,f,g,h,i,j); - @:pure public static inline function combineStringFast11(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k); - @:pure public static inline function combineStringFast12(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l); - @:pure public static inline function combineStringFast13(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m); - @:pure public static inline function combineStringFast14(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m,n); - @:pure public static inline function combineStringFast15(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o); - @:pure public static inline function combineStringFast16(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String, p:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); - - @:pure public static inline function combineString1(a:String):String return _combineString(a); - @:pure public static inline function combineString2(a:String, b:String):String return _combineString(a,b); - @:pure public static inline function combineString3(a:String, b:String, c:String):String return _combineString(a,b,c); - @:pure public static inline function combineString4(a:String, b:String, c:String, d:String):String return _combineString(a,b,c,d); - @:pure public static inline function combineString5(a:String, b:String, c:String, d:String, e:String):String return _combineString(a,b,c,d,e); - @:pure public static inline function combineString6(a:String, b:String, c:String, d:String, e:String, f:String):String return _combineString(a,b,c,d,e,f); - @:pure public static inline function combineString7(a:String, b:String, c:String, d:String, e:String, f:String, g:String):String return _combineString(a,b,c,d,e,f,g); - @:pure public static inline function combineString8(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String):String return _combineString(a,b,c,d,e,f,g,h); - @:pure public static inline function combineString9(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String):String return _combineString(a,b,c,d,e,f,g,h,i); - @:pure public static inline function combineString10(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String):String return _combineString(a,b,c,d,e,f,g,h,i,j); - @:pure public static inline function combineString11(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k); - @:pure public static inline function combineString12(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l); - @:pure public static inline function combineString13(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m); - @:pure public static inline function combineString14(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m,n); - @:pure public static inline function combineString15(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o); - @:pure public static inline function combineString16(a:String, b:String, c:String, d:String, e:String, f:String, g:String, h:String, i:String, j:String, k:String, l:String, m:String, n:String, o:String, p:String):String return _combineString(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p); + @:pure public static inline function combineStringFast(inArray:Array){ + combineString(inArray); + } - @:pure private static function _combineString(...a:String):String { + @:pure public static function combineString(inArray:Array){ var buf = new StringBuf(); - for(s in a) + for(s in inArray) buf.add(s); return buf.toString(); } + @:pure public static function repeatString(str:String, times:Int):String { var buf = new StringBuf(); for(i in 0...times) diff --git a/hxbytevm/utils/RegexUtils.hx b/hxbytevm/utils/RegexUtils.hx index b50a38b..7e9bd6f 100644 --- a/hxbytevm/utils/RegexUtils.hx +++ b/hxbytevm/utils/RegexUtils.hx @@ -18,8 +18,8 @@ class RegexUtils { if(suffix == "") return string; if(string.length == 1 || (string.lastIndexOf("[") == 0 && string.indexOf("]") == string.length - 1)) - return FastUtils.combineStringFast2(string, suffix); - return FastUtils.combineStringFast4("(?:", string, ")", suffix); + return FastUtils.combineStringFast([string, suffix]); + return FastUtils.combineStringFast(["(?:", string, ")", suffix]); //"(?:" + string + ")" + suffix; } for (rule in rules) { @@ -32,7 +32,7 @@ class RegexUtils { case Plus(pattern): makeGroup(_makeRegexRule(pattern), "+"); case Either([rr]): _makeRegexRule([rr]); case Either(rr) if(isStart): [for(r in rr) _makeRegexRule([r])].join("|"); - case Either(rr): FastUtils.combineStringFast3("(?:", [for(r in rr) _makeRegexRule([r])].join("|"), ")"); + case Either(rr): FastUtils.combineStringFast(["](?:", [for(r in rr) _makeRegexRule([r])].join("|"), ")"]); } } return str; diff --git a/hxbytevm/utils/StringUtils.hx b/hxbytevm/utils/StringUtils.hx index 3ea04f7..79ede36 100644 --- a/hxbytevm/utils/StringUtils.hx +++ b/hxbytevm/utils/StringUtils.hx @@ -58,7 +58,15 @@ class StringUtils { @:pure public static function getTitle(title:String, ?dashsLen:Int = 46) { var l = FastUtils.repeatString("-", Std.int((dashsLen - title.length - 2)/2)); - return FastUtils.combineString5(l, " ", title, " ", l); + #if cpp + var vec = new cpp.StdVector(5); + for(i in [l, " ", title, " ", l]){ + vec.pushBack(i); + } + return FastUtils.combineString(vec); + #else + return FastUtils.combineString([l, " ", title, " ", l]); + #end //l + ' $title ' + l; } diff --git a/hxbytevm/utils/include/FastUtils.cpp b/hxbytevm/utils/include/FastUtils.cpp index cd1bdc1..c6d28c8 100644 --- a/hxbytevm/utils/include/FastUtils.cpp +++ b/hxbytevm/utils/include/FastUtils.cpp @@ -4,7 +4,7 @@ #include #include -String _combineStringFast(const std::vector& inArray) { +String combineStringFast(const std::vector& inArray) { int len = 0; for (const auto& str : inArray) { //len += str.raw_ptr() ? str.length : 4; @@ -28,7 +28,7 @@ String _combineStringFast(const std::vector& inArray) { return String(buf, len); } -String _combineString(const std::vector& inArray) { +String combineString(const std::vector& inArray) { int len = 0; #ifdef HX_SMART_STRINGS bool isWChar = false; @@ -107,40 +107,6 @@ String _combineString(const std::vector& inArray) { // return _combineString(inArray); //} -String combineStringFast(String a) {return a;} -String combineStringFast(String a, String b) {return _combineStringFast({a, b});} -String combineStringFast(String a, String b, String c) {return _combineStringFast({a, b, c});} -String combineStringFast(String a, String b, String c, String d) {return _combineStringFast({a, b, c, d});} -String combineStringFast(String a, String b, String c, String d, String e) {return _combineStringFast({a, b, c, d, e});} -String combineStringFast(String a, String b, String c, String d, String e, String f) {return _combineStringFast({a, b, c, d, e, f});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g) {return _combineStringFast({a, b, c, d, e, f, g});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h) {return _combineStringFast({a, b, c, d, e, f, g, h});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i) {return _combineStringFast({a, b, c, d, e, f, g, h, i});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j) {return _combineStringFast({a, b, c, d, e, f, g, h, i, j});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k) {return _combineStringFast({a, b, c, d, e, f, g, h, i, j, k});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l) {return _combineStringFast({a, b, c, d, e, f, g, h, i, j, k, l});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m) {return _combineStringFast({a, b, c, d, e, f, g, h, i, j, k, l, m});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n) {return _combineStringFast({a, b, c, d, e, f, g, h, i, j, k, l, m, n});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o) {return _combineStringFast({a, b, c, d, e, f, g, h, i, j, k, l, m, n, o});} -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o, String p) {return _combineStringFast({a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p});} - -String combineString(String a) {return a;} -String combineString(String a, String b) {return _combineString({a, b});} -String combineString(String a, String b, String c) {return _combineString({a, b, c});} -String combineString(String a, String b, String c, String d) {return _combineString({a, b, c, d});} -String combineString(String a, String b, String c, String d, String e) {return _combineString({a, b, c, d, e});} -String combineString(String a, String b, String c, String d, String e, String f) {return _combineString({a, b, c, d, e, f});} -String combineString(String a, String b, String c, String d, String e, String f, String g) {return _combineString({a, b, c, d, e, f, g});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h) {return _combineString({a, b, c, d, e, f, g, h});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i) {return _combineString({a, b, c, d, e, f, g, h, i});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j) {return _combineString({a, b, c, d, e, f, g, h, i, j});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k) {return _combineString({a, b, c, d, e, f, g, h, i, j, k});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l) {return _combineString({a, b, c, d, e, f, g, h, i, j, k, l});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m) {return _combineString({a, b, c, d, e, f, g, h, i, j, k, l, m});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n) {return _combineString({a, b, c, d, e, f, g, h, i, j, k, l, m, n});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o) {return _combineString({a, b, c, d, e, f, g, h, i, j, k, l, m, n, o});} -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o, String p) {return _combineString({a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p});} - String repeatString(String str, int times) { if (times <= 0) return String("", 0); diff --git a/hxbytevm/utils/include/FastUtils.h b/hxbytevm/utils/include/FastUtils.h index 0461157..523e4df 100644 --- a/hxbytevm/utils/include/FastUtils.h +++ b/hxbytevm/utils/include/FastUtils.h @@ -9,39 +9,9 @@ //template //String combineString(T... args); -String combineStringFast(String a); -String combineStringFast(String a, String b); -String combineStringFast(String a, String b, String c); -String combineStringFast(String a, String b, String c, String d); -String combineStringFast(String a, String b, String c, String d, String e); -String combineStringFast(String a, String b, String c, String d, String e, String f); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o); -String combineStringFast(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o, String p); - -String combineString(String a); -String combineString(String a, String b); -String combineString(String a, String b, String c); -String combineString(String a, String b, String c, String d); -String combineString(String a, String b, String c, String d, String e); -String combineString(String a, String b, String c, String d, String e, String f); -String combineString(String a, String b, String c, String d, String e, String f, String g); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o); -String combineString(String a, String b, String c, String d, String e, String f, String g, String h, String i, String j, String k, String l, String m, String n, String o, String p); +String combineStringFast(const std::vector& inArray); + +String combineString(const std::vector& inArray); String repeatString(String str, int times); diff --git a/hxbytevm/utils/include/FastUtils.xml b/hxbytevm/utils/include/FastUtils.xml index 9adf64e..72dd992 100644 --- a/hxbytevm/utils/include/FastUtils.xml +++ b/hxbytevm/utils/include/FastUtils.xml @@ -4,8 +4,21 @@ + + + + + + + + + + + + + diff --git a/hxbytevm/utils/macros/OptimizerMacro.hx b/hxbytevm/utils/macros/OptimizerMacro.hx index ddedc7a..c755ad9 100644 --- a/hxbytevm/utils/macros/OptimizerMacro.hx +++ b/hxbytevm/utils/macros/OptimizerMacro.hx @@ -39,89 +39,11 @@ class OptimizerMacro { static function map(e:Expr) { // TODO: support EBinOp(OpAdd, e1, e2) var ret = switch(e.expr) { - case EConst(CString(s, SingleQuotes)) if(StringTools.contains(s, "$")): - optimizeStringInterpolation(MacroStringTools.formatString(s, e.pos)).map(map); default: e.map(map); } return ret; } - static function optimizeStringInterpolation(str: Expr): Expr { - var printer = new Printer(); - - var strElements:Array = []; - - function iter(e:Expr) { - switch (e.expr) { - case EBinop(OpAdd, e1, e2): - iter(e1); - iter(e2); - case EConst(CString(s, _)) if(s.length == 0): // exclude empty strings - case _: - strElements.push(e); - } - } - ExprTools.iter(str, iter); - if(strElements.length == 0) return str; - - var newstrElements:Array = []; - - function convertToCombineString(arr:Array):Expr { - var combined:Expr = null; - - while(arr.length > 0) { - var args = arr.splice(0, 16); - for(i in 0...args.length) { - var e = args[i]; - switch(e.expr) { - case EConst(CString(_, _)): - default: - //try { - // args[i] = switch(Context.typeof(e)) { - // case TInst(_.get() => {name: "String"}, _): e; - // default: macro @:pos(e.pos) Std.string($e); - // } - //} catch (err:Dynamic) { - //trace(err); - //trace(e.toString()); - //trace(e.pos); - //trace(CallStack.toString(CallStack.exceptionStack())); - args[i] = switch(e.expr) { - case EConst(CString(_, _)): e; - case ETernary(_, _.expr => EConst(CString(_, _)), _.expr => EConst(CString(_, _))): e; - case EIf(_, _.expr => EConst(CString(_, _)), _.expr => EConst(CString(_, _))): e; - case EMeta({name: ":str"}, ie): ie; - default: macro @:pos(e.pos) Std.string($e); - } - //} - } - } - var ta = args.length; - var e:Expr = null; - if(ta == 1) { - e = args[0]; - } else { - e = macro @:pos(str.pos) $p{["hxbytevm","utils","FastUtils","combineString" + ta]}($a{args}); - } - newstrElements.push(e); - combined = (combined == null) ? e : {expr: EBinop(OpAdd, combined, e), pos: str.pos}; - } - return combined; - } - - var e:Expr = convertToCombineString(strElements); - - while(newstrElements.length > 1) { - var arr = newstrElements; newstrElements = []; - e = convertToCombineString(arr); - } - - // trace(str.toString()); - // trace(e.toString()); - - return e; - } - /* static function optimizeStringInterpolationSmarter(str: Expr): Expr { var printer = new Printer(); diff --git a/tests/linux.hxml b/tests/linux.hxml index a410b95..4cdb335 100644 --- a/tests/linux.hxml +++ b/tests/linux.hxml @@ -1,9 +1,7 @@ build-generic.hxml --define linux +--define NO_PRECOMPILED_HEADERS -# Copying the assets from source code to bin folder ---cmd rm -rf bin/cpp/assets ---cmd cp -r assets bin/cpp/assets --cpp bin/cpp --cmd cd bin/cpp --cmd ./Main diff --git a/tests/mac.hxml b/tests/mac.hxml index c502f01..0f98c7a 100644 --- a/tests/mac.hxml +++ b/tests/mac.hxml @@ -5,9 +5,6 @@ build-generic.hxml # -D HXCPP_M64 # -D HXCPP_ARM64 -# Copying the assets from source code to bin folder ---cmd rm -rf bin/cpp/assets ---cmd cp -r assets bin/cpp/assets --cpp bin/cpp --cmd cd bin/cpp --cmd ./Main diff --git a/tests/src/Util.hx b/tests/src/Util.hx index db05361..a61a9a5 100644 --- a/tests/src/Util.hx +++ b/tests/src/Util.hx @@ -10,7 +10,7 @@ using stepper.A; class Util { public static inline function getTime():Float { - return untyped __global__.__time_stamp(); + return haxe.Timer.stamp(); } // expandScientificNotation but its WAY too long to write out