]> www.ginac.de Git - cln.git/blob - src/base/string/cl_st_make1.cc
919aba3a84bfa7d3d62e4ca719210eaed4e35eee
[cln.git] / src / base / string / cl_st_make1.cc
1 // cl_make_heap_string().
2
3 // General includes.
4 #include "cl_sysdep.h"
5
6 // Specification.
7 #include "cl_string.h"
8
9
10 // Implementation.
11
12 #include "cl_malloc.h"
13 #include "cl_offsetof.h"
14
15 cl_heap_string* cl_make_heap_string (const char * s)
16 {
17         var unsigned long len = strlen(s);
18         var cl_heap_string* str = (cl_heap_string*) cl_malloc_hook(offsetofa(cl_heap_string,data)+sizeof(char)*(len+1));
19         str->refcount = 1;
20         str->type = &cl_class_string;
21         str->length = len;
22         {
23                 var const char* ptr1 = s;
24                 var char* ptr2 = &str->data[0];
25                 var uintL count;
26                 for (count = len; count > 0; count--)
27                         *ptr2++ = *ptr1++;
28                 *ptr2++ = '\0';
29         }
30         return str;
31 }