diff --git a/build_linux64/libamsstring4.linux64.a b/build_linux64/libamsstring4.linux64.a index 819532a..d510542 100644 Binary files a/build_linux64/libamsstring4.linux64.a and b/build_linux64/libamsstring4.linux64.a differ diff --git a/build_linux64/objstore/amsstring4_bintextencoding.o b/build_linux64/objstore/amsstring4_bintextencoding.o index e27774c..20132cd 100644 Binary files a/build_linux64/objstore/amsstring4_bintextencoding.o and b/build_linux64/objstore/amsstring4_bintextencoding.o differ diff --git a/build_linux64/objstore/amsstring4_class.o b/build_linux64/objstore/amsstring4_class.o index 97cbf55..be08aea 100644 Binary files a/build_linux64/objstore/amsstring4_class.o and b/build_linux64/objstore/amsstring4_class.o differ diff --git a/build_linux64/objstore/amsstring4_convenience1.o b/build_linux64/objstore/amsstring4_convenience1.o index 9d9b8e3..f52bfc1 100644 Binary files a/build_linux64/objstore/amsstring4_convenience1.o and b/build_linux64/objstore/amsstring4_convenience1.o differ diff --git a/build_linux64/objstore/amsstring4_portability.o b/build_linux64/objstore/amsstring4_portability.o index be9c445..ce4db38 100644 Binary files a/build_linux64/objstore/amsstring4_portability.o and b/build_linux64/objstore/amsstring4_portability.o differ diff --git a/build_linux64/objstore/amsstring4_template.o b/build_linux64/objstore/amsstring4_template.o index 66e27a5..03f1437 100644 Binary files a/build_linux64/objstore/amsstring4_template.o and b/build_linux64/objstore/amsstring4_template.o differ diff --git a/build_linux64/objstore/amsstring4_tests1.o b/build_linux64/objstore/amsstring4_tests1.o index 6ff44cd..07cb23d 100644 Binary files a/build_linux64/objstore/amsstring4_tests1.o and b/build_linux64/objstore/amsstring4_tests1.o differ diff --git a/build_linux64/objstore/amsstring4_unicode.o b/build_linux64/objstore/amsstring4_unicode.o index 52f47f6..8102b28 100644 Binary files a/build_linux64/objstore/amsstring4_unicode.o and b/build_linux64/objstore/amsstring4_unicode.o differ diff --git a/build_linux64/tests b/build_linux64/tests index 70249fe..d53356e 100644 Binary files a/build_linux64/tests and b/build_linux64/tests differ diff --git a/include/amsstring4/amsstring4.hpp b/include/amsstring4/amsstring4.hpp index 1460803..f495d32 100644 --- a/include/amsstring4/amsstring4.hpp +++ b/include/amsstring4/amsstring4.hpp @@ -185,14 +185,21 @@ amsarray splitpath(const amsstring &s); //selects between the outermost set of delimitleft and delimitright chars amsstring select_between(const amsstring &s, const ams_chartype delimitleft, const ams_chartype delimitright); +//selects between the outermost set of delimitleft and delimitright strings +//if delimitleft or delimitright strings are empty, selects the left or right end of the array +amsstring select_between(const amsstring &s, const ams_chartype *delimitleft, const ams_chartype *delimitright); // + amsstring concatenate(const amsarray &slist); +//adds \n between each line in the concatenated string +amsstring concat_lines(const amsarray &lns);// + void freadline(FILE *fp, amsstring *s); -void freadlines(FILE *fp, std::vector *lines); +void freadlines(FILE *fp, amsarray *lines); void fwritelines(FILE *fp, amsstring *s); -void fwritelines(FILE *fp, std::vector *lines); +void fwritelines(FILE *fp, amsarray *lines); void freadtxtfile(FILE *fp, amsstring *s); int readtextfile(const amsstring fname, amsstring *s); diff --git a/include/amsstring4/amsstring4_tests.hpp b/include/amsstring4/amsstring4_tests.hpp index 25b5aa4..9795998 100644 --- a/include/amsstring4/amsstring4_tests.hpp +++ b/include/amsstring4/amsstring4_tests.hpp @@ -19,7 +19,7 @@ namespace ams void amsstring4_test_concatenation_operators(); - + void amsstring4_test_convenience1a(); }; diff --git a/src/amsstring4/amsstring4_class.cpp b/src/amsstring4/amsstring4_class.cpp index 4a6c68f..f988166 100644 --- a/src/amsstring4/amsstring4_class.cpp +++ b/src/amsstring4/amsstring4_class.cpp @@ -793,8 +793,8 @@ namespace ams cc = 0; for(I=length-indstart-1;I>=0;I--) { - c1 = cstring[I]; - c2 = findstr[J]; + if(I>=0 && I=0 && J=findstrlen || J<0) { ret = I; break; @@ -1270,7 +1270,7 @@ namespace ams return; } - void freadlines(FILE *fp, std::vector *lines) + void freadlines(FILE *fp, amsarray *lines) { amsstring ln; //note - this does not resize the lines to zero, just adds to them @@ -1294,7 +1294,7 @@ namespace ams return; } - void fwritelines(FILE *fp, std::vector *lines) + void fwritelines(FILE *fp, amsarray *lines) { int I; if(fp!=NULL && lines!=NULL) diff --git a/src/amsstring4/amsstring4_convenience1.cpp b/src/amsstring4/amsstring4_convenience1.cpp index e9f848a..efb473a 100644 --- a/src/amsstring4/amsstring4_convenience1.cpp +++ b/src/amsstring4/amsstring4_convenience1.cpp @@ -440,4 +440,162 @@ amsstring concatenate(const amsarray &slist) return ret; } +void amsstring4_test_findright() +{ + amsstring s1,s2; + int I; + int I1,I2,I3,I4; + + s1 = "sdkfjskdfksd"; + for(I=-1;I sa; + int I; + + s1 = "a string\nwith multiple\nlines\n\r"; + sa = splitlines(s1); + for(I=0;I lns; - std::vector lns2; q1 = "This is a \n string on \n multiple \r\n lines\n\n with CR\\LFs\n"; //q1 = "\n\n"; //q1 = ""; //q1 = "More malformed\r string nonsense\n\r\n\r\r\na"; printf("q1='%s'\n",q1.cstring); - splitlines(&q1,&lns2); - for(I=0;I strs; + amsarray strs; int I; q1 = "this is a string to split "; @@ -396,7 +395,7 @@ namespace ams void amsstring4_test_strip() { amsstring q1; - std::vector strs; + amsarray strs; int I; q1 = " "; @@ -425,7 +424,7 @@ namespace ams FILE *fp2 = NULL; int I; amsstring q; - std::vector q2; + amsarray q2; fp = fopen("./ref/0p375_hexbolt.scad","r"); fp2 = fopen("./ref/testrewrite.scad","w+"); diff --git a/src/main.cpp b/src/main.cpp index f6c09ed..a1e5042 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,6 +21,8 @@ int main(int argc, char* argv[]) // amsstring4_test_freadwrite(); // amsstring4_test_concatenation_operators(); + + amsstring4_test_convenience1a(); return ret; } \ No newline at end of file