| --[[-------------------------------------------------------------------------- | |
| 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 |