# Copyright (c) 2024, 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

load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")

package(default_applicable_licenses = ["//:license"])

cc_library(
    name = "os_macros",
    textual_hdrs = [
        "os_macros_undef.inc",
        "os_macros_restore.inc",
    ],
    visibility = ["//hpb:__subpackages__"],
    deps = [
        "//src/google/protobuf:os_macros",
    ],
)

cc_library(
    name = "template_help",
    hdrs = ["template_help.h"],
    visibility = ["//hpb:__subpackages__"],
    deps = [
        "//hpb:ptr",
    ],
)

cc_test(
    name = "template_help_test",
    srcs = ["template_help_test.cc"],
    deps = [
        ":template_help",
        "//hpb_generator/tests:test_model_hpb_proto",
        "@googletest//:gtest",
        "@googletest//:gtest_main",
    ],
)

cc_library(
    name = "internal",
    hdrs = ["internal.h"],
    visibility = [
        "//hpb:__subpackages__",
    ],
    deps = [
        "//upb/mem",
        "//upb/message",
    ],
)

cc_library(
    name = "message_lock",
    srcs = ["message_lock.cc"],
    hdrs = [
        "message_lock.h",
    ],
    visibility = [
        "//hpb:__subpackages__",
    ],
    deps = [
        "//hpb:status",
        "//upb/mem",
        "//upb/message",
        "//upb/message:copy",
        "//upb/message:promote",
        "//upb/mini_table",
        "//upb/wire",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/strings:string_view",
    ],
)

cc_test(
    name = "message_lock_test",
    srcs = ["message_lock_test.cc"],
    deps = [
        ":message_lock",
        "//hpb",
        "//hpb:arena",
        "//hpb:extension",
        "//hpb_generator/tests:test_model_hpb_proto",
        "//upb/mem",
        "//upb/mini_table",
        "@abseil-cpp//absl/base:core_headers",
        "@abseil-cpp//absl/hash",
        "@abseil-cpp//absl/log:absl_check",
        "@abseil-cpp//absl/synchronization",
        "@googletest//:gtest",
        "@googletest//:gtest_main",
    ],
)
