summaryrefslogtreecommitdiff
path: root/upb/msg.h
diff options
context:
space:
mode:
authorJosh Haberman <jhaberman@gmail.com>2016-12-12 18:47:55 +0000
committerJosh Haberman <jhaberman@gmail.com>2016-12-12 18:52:20 +0000
commit15c388b819ebfebb83851950893413041288970f (patch)
tree2c266da71bda82fdcc641f4af9bf0e406396f49f /upb/msg.h
parent076a82ee7edf35fb5f2a3430535e21a6dbd4cd6d (diff)
Basic serialization for upb_msg and Lua.
Doesn't yet include strings, submessages, maps, or repeated fields.
Diffstat (limited to 'upb/msg.h')
-rw-r--r--upb/msg.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/upb/msg.h b/upb/msg.h
index 11f0d5c..141095c 100644
--- a/upb/msg.h
+++ b/upb/msg.h
@@ -57,6 +57,8 @@ UPB_DECLARE_TYPE(upb::VisitorPlan, upb_visitorplan)
UPB_BEGIN_EXTERN_C
+typedef void upb_msg;
+
/** upb_msglayout *************************************************************/
@@ -64,6 +66,9 @@ UPB_BEGIN_EXTERN_C
* instances of this from a upb_msgfactory, and the factory always owns the
* msglayout. */
+/* Gets the factory for this layout */
+upb_msgfactory *upb_msglayout_factory(const upb_msglayout *l);
+
/* Get the msglayout for a submessage. This requires that this field is a
* submessage, ie. upb_fielddef_issubmsg(upb_msglayout_msgdef(l)) == true.
*
@@ -84,7 +89,7 @@ const upb_msgdef *upb_msglayout_msgdef(const upb_msglayout *l);
upb_visitor *upb_visitor_create(upb_env *e, const upb_visitorplan *vp,
upb_sink *output);
-bool upb_visitor_visitmsg(upb_visitor *v, const void *msg);
+bool upb_visitor_visitmsg(upb_visitor *v, const upb_msg *msg);
/** upb_msgfactory ************************************************************/
@@ -117,8 +122,8 @@ const upb_msglayout *upb_msgfactory_getlayout(upb_msgfactory *f,
const upb_msgdef *m);
const upb_handlers *upb_msgfactory_getmergehandlers(upb_msgfactory *f,
const upb_msgdef *m);
-const upb_visitorplan *upb_msgfactory_getvisitorplan(const upb_msgfactory *f,
- const upb_msgdef *m);
+const upb_visitorplan *upb_msgfactory_getvisitorplan(upb_msgfactory *f,
+ const upb_handlers *h);
/** upb_msgval ****************************************************************/
@@ -126,8 +131,6 @@ const upb_visitorplan *upb_msgfactory_getvisitorplan(const upb_msgfactory *f,
/* A union representing all possible protobuf values. Used for generic get/set
* operations. */
-typedef void upb_msg;
-
typedef union {
bool b;
float flt;
@@ -180,6 +183,14 @@ UPB_INLINE upb_msgval upb_msgval_str(const char *ptr, size_t len) {
return ret;
}
+UPB_INLINE const char* upb_msgval_getstr(upb_msgval val) {
+ return val.str.ptr;
+}
+
+UPB_INLINE size_t upb_msgval_getstrlen(upb_msgval val) {
+ return val.str.len;
+}
+
/** upb_msg *******************************************************************/
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback