diff options
Diffstat (limited to 'upb/bindings/lua/upb.lua')
-rw-r--r-- | upb/bindings/lua/upb.lua | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/upb/bindings/lua/upb.lua b/upb/bindings/lua/upb.lua index ee0ad4e..728852e 100644 --- a/upb/bindings/lua/upb.lua +++ b/upb/bindings/lua/upb.lua @@ -66,6 +66,7 @@ end local RealFieldDef = upb.FieldDef local RealEnumDef = upb.EnumDef local RealMessageDef = upb.MessageDef +local RealOneofDef = upb.OneofDef local RealSymbolTable = upb.SymbolTable -- FieldDef constructor; a wrapper around the real constructor that can @@ -136,6 +137,26 @@ upb.EnumDef = function(init) return e end +-- OneofDef constructor; a wrapper around the real constructor that can +-- set initial properties. +-- +-- User can specify initialization values like so: +-- upb.OneofDef{name="foo", fields={...}} +upb.OneofDef = function(init) + local o = RealOneofDef() + + if init then + for _, val in pairs(init.fields or {}) do + o:add(val) + end + init.fields = nil + + set_named(o, init) + end + + return o +end + -- SymbolTable constructor; a wrapper around the real constructor that can -- add an initial set of defs. upb.SymbolTable = function(defs) |