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