summaryrefslogtreecommitdiff
path: root/upb/bindings/lua/upb.lua
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2016-04-21 16:26:52 -0700
committerJoshua Haberman <jhaberman@gmail.com>2016-04-21 16:26:52 -0700
commitac2689cec721eb94b49dfbfed310e2e0e3bdfa2b (patch)
tree1f6b0b65b2a8b49d281b23ed4a1ef066525e4556 /upb/bindings/lua/upb.lua
parente6fa3f9d869765544b8e424e8573fe8d9af35534 (diff)
Put oneofs in the same table as fields. (#60)
* Put oneofs in the same table as fields. Oneofs and fields are not allowed to have names that conflict, so we might as well put them all in the same table. This also allows an efficient operation that looks for both fields and oneofs in a single lookup. Added support for OneofDef to Lua to allow testing of this. * Addressed PR comments.
Diffstat (limited to 'upb/bindings/lua/upb.lua')
-rw-r--r--upb/bindings/lua/upb.lua21
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)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback