String type: complete migration to bitwise position
[babeltrace.git] / formats / ctf / types / string.c
index 5cd09d9538e4acd3e6f8470d7b8884cc356ff2dd..53a9692f85b46b3c2c8baaef851fd27ac08eac6f 100644 (file)
@@ -33,12 +33,50 @@ void ctf_string_copy(struct stream_pos *dest, struct stream_pos *src,
        align_pos(src, string_class->p.alignment);
        srcaddr = get_pos_addr(src);
        len = strlen(srcaddr) + 1;
-       if (!dest)
+       if (dest->dummy)
                goto end;
        align_pos(dest, string_class->p.alignment);
        destaddr = get_pos_addr(dest);
-       strcpy(dest, src);
+       strcpy(destaddr, srcaddr);
+end:
        move_pos(dest, len);
+       move_pos(src, len);
+}
+
+void ctf_string_read(unsigned char **dest, struct stream_pos *src,
+                    const struct type_class_string *string_class)
+{
+       size_t len;
+       unsigned char *srcaddr;
+
+       align_pos(src, string_class->p.alignment);
+       srcaddr = get_pos_addr(src);
+       len = strlen(srcaddr) + 1;
+       if (dest->dummy)
+               goto end;
+       *dest = g_realloc(*dest, len);
+       strcpy(dest, srcaddr);
 end:
        move_pos(src, len);
 }
+
+void ctf_string_write(struct stream_pos *dest, const unsigned char *src,
+                     const struct type_class_string *string_class)
+{
+       size_t len;
+       unsigned char *destaddr;
+
+       align_pos(dest, string_class->p.alignment);
+       len = strlen(src) + 1;
+       if (dest->dummy)
+               goto end;
+       destaddr = get_pos_addr(dest);
+       strcpy(destaddr, src);
+end:
+       move_pos(dest, len);
+}
+
+void ctf_string_free_temp(unsigned char *string)
+{
+       g_free(string);
+}
This page took 0.023824 seconds and 4 git commands to generate.