X-Git-Url: https://ginac.de/CLN/cln.git//cln.git?a=blobdiff_plain;f=src%2Fbase%2Fstring%2Fcl_st_concat2.cc;fp=src%2Fbase%2Fstring%2Fcl_st_concat2.cc;h=3a16604be1a2a86e0a6d47d1ed20f706030fd25a;hb=dd9e0f894eec7e2a8cf85078330ddc0a6639090b;hp=0000000000000000000000000000000000000000;hpb=d57000b193438122b366aa0d450674be9402d06c;p=cln.git diff --git a/src/base/string/cl_st_concat2.cc b/src/base/string/cl_st_concat2.cc new file mode 100644 index 0000000..3a16604 --- /dev/null +++ b/src/base/string/cl_st_concat2.cc @@ -0,0 +1,34 @@ +// cl_string concatenation. + +// General includes. +#include "cl_sysdep.h" + +// Specification. +#include "cl_string.h" + + +// Implementation. + +#undef MAYBE_INLINE +#define MAYBE_INLINE inline +#include "cl_st_make0.cc" + +const cl_string operator+ (const char* str1, const cl_string& str2) +{ + unsigned long len1 = strlen(str1); + unsigned long len2 = strlen(str2); + var cl_heap_string* str = cl_make_heap_string(len1+len2); + var char * ptr = &str->data[0]; + { + var const char * ptr1 = asciz(str1); + for (var unsigned long count = len1; count > 0; count--) + *ptr++ = *ptr1++; + } + { + var const char * ptr2 = asciz(str2); + for (var unsigned long count = len2; count > 0; count--) + *ptr++ = *ptr2++; + } + *ptr++ = '\0'; + return str; +}