]> www.ginac.de Git - cln.git/blob - src/base/string/cl_st_concat1.cc
Initial revision
[cln.git] / src / base / string / cl_st_concat1.cc
1 // cl_string concatenation.
2
3 // General includes.
4 #include "cl_sysdep.h"
5
6 // Specification.
7 #include "cl_string.h"
8
9
10 // Implementation.
11
12 #undef MAYBE_INLINE
13 #define MAYBE_INLINE inline
14 #include "cl_st_make0.cc"
15
16 const cl_string operator+ (const cl_string& str1, const cl_string& str2)
17 {
18     unsigned long len1 = strlen(str1);
19     unsigned long len2 = strlen(str2);
20     var cl_heap_string* str = cl_make_heap_string(len1+len2);
21     var char * ptr = &str->data[0];
22     {
23         var const char * ptr1 = asciz(str1);
24         for (var unsigned long count = len1; count > 0; count--)
25             *ptr++ = *ptr1++;
26     }
27     {
28         var const char * ptr2 = asciz(str2);
29         for (var unsigned long count = len2; count > 0; count--)
30             *ptr++ = *ptr2++;
31     }
32     *ptr++ = '\0';
33     return str;
34 }