summaryrefslogtreecommitdiff
path: root/src/upb_data.c
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2009-12-29 18:39:51 -0800
committerJoshua Haberman <joshua@reverberate.org>2009-12-29 18:39:51 -0800
commitcc396257679698852380822bc6bfb61d33244172 (patch)
treea8aa652251198a9a47bcd2434ae490140accb986 /src/upb_data.c
parent2876225d0547ea7833991b9da8a72427e4bc69b9 (diff)
Getting closer, only a few functions undefined now.
Diffstat (limited to 'src/upb_data.c')
-rw-r--r--src/upb_data.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/upb_data.c b/src/upb_data.c
index 73a880f..b654fac 100644
--- a/src/upb_data.c
+++ b/src/upb_data.c
@@ -6,6 +6,7 @@
#include <stdlib.h>
#include "upb_data.h"
+#include "upb_def.h"
INLINE void data_init(upb_data *d, int flags) {
d->v = flags;
@@ -64,8 +65,7 @@ void _upb_string_free(upb_string *s)
free(s);
}
-char *upb_string_getrwbuf(upb_string *s, upb_strlen_t byte_len)
-{
+void upb_string_resize(upb_string *s, upb_strlen_t byte_len) {
check_not_frozen(&s->common.base);
if(string_get_bytesize(s) < byte_len) {
// Need to resize.
@@ -74,7 +74,13 @@ char *upb_string_getrwbuf(upb_string *s, upb_strlen_t byte_len)
string_set_bytesize(s, new_byte_size);
}
s->common.byte_len = byte_len;
- return s->common.ptr;
+}
+
+upb_msg *upb_msg_new(struct upb_msgdef *md) {
+ upb_msg *msg = malloc(md->size);
+ memset(msg, 0, md->size);
+ data_init(&msg->base, UPB_DATA_HEAPALLOCATED | UPB_DATA_REFCOUNTED);
+ return msg;
}
#if 0
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback