diff --git a/hpb/BUILD b/hpb/BUILD index ad97ba856258f..d29e10fce78b6 100644 --- a/hpb/BUILD +++ b/hpb/BUILD @@ -187,14 +187,19 @@ cc_library( ":arena", ":multibackend", ":ptr", - "//hpb/backend/upb:extension", - "//hpb/backend/upb:interop", "//hpb/internal:message_lock", "//hpb/internal:template_help", "//upb/message", "//upb/mini_table", "@abseil-cpp//absl/base:core_headers", - ], + ] + select({ + "//hpb:hpb_backend_cpp": [ + ], + "//hpb:hpb_backend_upb": [ + "//hpb/backend/upb:extension", + "//hpb/backend/upb:interop", + ], + }), ) cc_library( diff --git a/hpb/extension.h b/hpb/extension.h index af1920d8a021f..5a58f7abd4e23 100644 --- a/hpb/extension.h +++ b/hpb/extension.h @@ -13,14 +13,16 @@ #include "absl/base/attributes.h" #include "hpb/arena.h" -#include "hpb/backend/upb/extension.h" -#include "hpb/backend/upb/interop.h" #include "hpb/internal/message_lock.h" #include "hpb/internal/template_help.h" #include "hpb/multibackend.h" #include "hpb/ptr.h" #include "upb/message/accessors.h" #include "upb/mini_table/extension_registry.h" +#if HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB +#include "hpb/backend/upb/extension.h" +#include "hpb/backend/upb/interop.h" +#endif // HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB namespace hpb { // upb has a notion of an ExtensionRegistry. We expect most callers to use @@ -87,6 +89,7 @@ class ExtensionRegistry { explicit ExtensionRegistry() = default; }; +#if HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB template > ABSL_MUST_USE_RESULT bool HasExtension( @@ -186,6 +189,7 @@ constexpr uint32_t ExtensionNumber( const internal::ExtensionIdentifier& id) { return internal::PrivateAccess::GetExtensionNumber(id); } +#endif // HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB } // namespace hpb diff --git a/hpb/internal/BUILD b/hpb/internal/BUILD index 2c2336d161967..c70164fb9c529 100644 --- a/hpb/internal/BUILD +++ b/hpb/internal/BUILD @@ -49,6 +49,7 @@ cc_library( "//hpb:__subpackages__", ], deps = [ + "//hpb:multibackend", "//upb/mem", "//upb/message", ], diff --git a/hpb/internal/internal.h b/hpb/internal/internal.h index f4be198ed4bd8..74fed915fbfd2 100644 --- a/hpb/internal/internal.h +++ b/hpb/internal/internal.h @@ -11,8 +11,12 @@ #include #include +#include "hpb/multibackend.h" + +#if HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB #include "upb/mem/arena.h" #include "upb/message/message.h" +#endif // HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB namespace hpb::internal { @@ -25,6 +29,13 @@ struct PrivateAccess { static auto* GetInternalArena(T&& message) { return message->arena(); } + + template + static constexpr auto InvokeConstructor(Args&&... args) { + return T(std::forward(args)...); + } + +#if HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB template static auto* GetInternalUPBArena(T&& arena) { return arena.arena_.ptr(); @@ -42,11 +53,6 @@ struct PrivateAccess { return typename T::Proxy(upb_Message_New(T::minitable(), arena), arena); } - template - static constexpr auto InvokeConstructor(Args&&... args) { - return T(std::forward(args)...); - } - template static constexpr uint32_t GetExtensionNumber(const ExtensionId& id) { return id.number(); @@ -56,10 +62,13 @@ struct PrivateAccess { static decltype(auto) GetDefaultValue(const ExtensionId& id) { return id.default_value(); } +#endif // HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB }; +#if HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB template struct AssociatedUpbTypes; +#endif // HPB_INTERNAL_BACKEND == HPB_INTERNAL_BACKEND_UPB } // namespace hpb::internal