| --[[-------------------------------------------------------------------------- |
| |
| Protocol Buffers - Google's data interchange format |
| Copyright 2023 Google LLC. All rights reserved. |
| |
| Use of this source code is governed by a BSD-style |
| license that can be found in the LICENSE file or at |
| https://developers.google.com/open-source/licenses/bsd |
| |
| --]]-------------------------------------------------------------------------- |
| |
| local upb = require("lupb") |
| |
| upb.generated_pool = upb.DefPool() |
| |
| local module_metatable = { |
| __index = function(t, k) |
| local package = t._filedef:package() |
| if package then |
| k = package .. "." .. k |
| end |
| local pool = upb.generated_pool |
| local def = pool:lookup_msg(k) or pool:lookup_enum(k) |
| local v = nil |
| if def and def:file():name() == t._filedef:name() then |
| v = def |
| t[k] = v |
| end |
| return v |
| end |
| } |
| |
| function upb._generated_module(desc_string) |
| local file = upb.generated_pool:add_file(desc_string) |
| local module = {_filedef = file} |
| setmetatable(module, module_metatable) |
| return module |
| end |
| |
| return upb |