Skip to content

Improve convoluted code and fix building outside of Windows platforms #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions extraParams.hxml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
--macro keep('IntIterator')
--macro hxbytevm.utils.macros.OptimizerMacro.init()
--library cpphelpers
3 changes: 3 additions & 0 deletions haxelib.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@
"version": "0.0.1",
"releasenote": "",
"contributors": ["Ne_Eo", "lunarcleint"],
"dependencies": {
"cpphelpers": ""
}
}
75 changes: 8 additions & 67 deletions hxbytevm/utils/FastUtils.hx
Original file line number Diff line number Diff line change
Expand Up @@ -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>):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>):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<String>){
combineString(inArray);
}

@:pure private static function _combineString(...a:String):String {
@:pure public static function combineString(inArray:Array<String>){
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)
Expand Down
6 changes: 3 additions & 3 deletions hxbytevm/utils/RegexUtils.hx
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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;
Expand Down
10 changes: 9 additions & 1 deletion hxbytevm/utils/StringUtils.hx
Original file line number Diff line number Diff line change
Expand Up @@ -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<String>(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;
}

Expand Down
38 changes: 2 additions & 36 deletions hxbytevm/utils/include/FastUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <limits.h>
#include <ctype.h>

String _combineStringFast(const std::vector<String>& inArray) {
String combineStringFast(const std::vector<String>& inArray) {
int len = 0;
for (const auto& str : inArray) {
//len += str.raw_ptr() ? str.length : 4;
Expand All @@ -28,7 +28,7 @@ String _combineStringFast(const std::vector<String>& inArray) {
return String(buf, len);
}

String _combineString(const std::vector<String>& inArray) {
String combineString(const std::vector<String>& inArray) {
int len = 0;
#ifdef HX_SMART_STRINGS
bool isWChar = false;
Expand Down Expand Up @@ -107,40 +107,6 @@ String _combineString(const std::vector<String>& 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);
Expand Down
Loading