Implement basic support for namespaces
Next steps are:
* use qualified paths where needed
* create a single detail module per crate; this requires access to qualified paths.
* add support for reopened namespaces within the same C++ library
* add support for reopened namespaces across C++ libraries
PiperOrigin-RevId: 441183150
diff --git a/rs_bindings_from_cc/ir.cc b/rs_bindings_from_cc/ir.cc
index 675d122..064c50a 100644
--- a/rs_bindings_from_cc/ir.cc
+++ b/rs_bindings_from_cc/ir.cc
@@ -456,6 +456,25 @@
};
}
+llvm::json::Value Namespace::ToJson() const {
+ std::vector<llvm::json::Value> json_item_ids;
+ json_item_ids.reserve(child_item_ids.size());
+ for (const auto& id : child_item_ids) {
+ json_item_ids.push_back(id.value());
+ }
+
+ llvm::json::Object ns{
+ {"name", name},
+ {"id", id},
+ {"owning_target", owning_target},
+ {"child_item_ids", std::move(json_item_ids)},
+ };
+
+ return llvm::json::Object{
+ {"Namespace", std::move(ns)},
+ };
+}
+
llvm::json::Value IR::ToJson() const {
std::vector<llvm::json::Value> json_items;
json_items.reserve(items.size());