summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-02-25 10:49:27 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-02-27 09:03:30 +0100
commit0570178dbfd3e90f1532421dab91b510e6c42937 (patch)
treeb7f8b7307765666ea21bb7f533662d767bd04665
parenta8a167cb206f6c66e52ab4e92e0939e91b8dfed8 (diff)
downloadjustbuild-0570178dbfd3e90f1532421dab91b510e6c42937.tar.gz
ArtifactBlob: Add cpp file
-rw-r--r--src/buildtool/common/TARGETS4
-rw-r--r--src/buildtool/common/artifact_blob.cpp32
-rw-r--r--src/buildtool/common/artifact_blob.hpp14
3 files changed, 38 insertions, 12 deletions
diff --git a/src/buildtool/common/TARGETS b/src/buildtool/common/TARGETS
index 6db5cbd7..b7c65fce 100644
--- a/src/buildtool/common/TARGETS
+++ b/src/buildtool/common/TARGETS
@@ -83,7 +83,9 @@
{ "type": ["@", "rules", "CC", "library"]
, "name": ["artifact_blob"]
, "hdrs": ["artifact_blob.hpp"]
- , "deps": ["common", ["src/utils/cpp", "hash_combine"]]
+ , "srcs": ["artifact_blob.cpp"]
+ , "deps": ["common"]
+ , "private-deps": [["src/utils/cpp", "hash_combine"]]
, "stage": ["src", "buildtool", "common"]
}
, "common":
diff --git a/src/buildtool/common/artifact_blob.cpp b/src/buildtool/common/artifact_blob.cpp
new file mode 100644
index 00000000..894d6d91
--- /dev/null
+++ b/src/buildtool/common/artifact_blob.cpp
@@ -0,0 +1,32 @@
+// Copyright 2025 Huawei Cloud Computing Technology Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/buildtool/common/artifact_blob.hpp"
+
+#include "src/utils/cpp/hash_combine.hpp"
+
+auto ArtifactBlob::ReadContent() const noexcept
+ -> std::shared_ptr<std::string const> {
+ return content_;
+}
+
+namespace std {
+auto hash<ArtifactBlob>::operator()(ArtifactBlob const& blob) const noexcept
+ -> std::size_t {
+ std::size_t seed{};
+ hash_combine(&seed, blob.GetDigest());
+ hash_combine(&seed, blob.IsExecutable());
+ return seed;
+}
+} // namespace std
diff --git a/src/buildtool/common/artifact_blob.hpp b/src/buildtool/common/artifact_blob.hpp
index 3fc4ba23..d75a6b01 100644
--- a/src/buildtool/common/artifact_blob.hpp
+++ b/src/buildtool/common/artifact_blob.hpp
@@ -19,10 +19,9 @@
#include <functional>
#include <memory>
#include <string>
-#include <utility> //std::move
+#include <utility>
#include "src/buildtool/common/artifact_digest.hpp"
-#include "src/utils/cpp/hash_combine.hpp"
class ArtifactBlob final {
public:
@@ -51,9 +50,7 @@ class ArtifactBlob final {
/// \brief Read the content from source.
[[nodiscard]] auto ReadContent() const noexcept
- -> std::shared_ptr<std::string const> {
- return content_;
- }
+ -> std::shared_ptr<std::string const>;
/// \brief Set executable permission.
void SetExecutable(bool is_executable) noexcept {
@@ -75,12 +72,7 @@ namespace std {
template <>
struct hash<ArtifactBlob> {
[[nodiscard]] auto operator()(ArtifactBlob const& blob) const noexcept
- -> std::size_t {
- std::size_t seed{};
- hash_combine(&seed, blob.GetDigest());
- hash_combine(&seed, blob.IsExecutable());
- return seed;
- }
+ -> std::size_t;
};
} // namespace std