From 96f244e9c14dcd4a8abd2c6ad4b90aafd65739b3 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 31 Aug 2021 21:12:11 +0200
Subject: [PATCH] WIP: add SetValue(int)

---
 include/caosdb/entity.h |  4 ++++
 include/caosdb/value.h  |  1 +
 src/caosdb/entity.cpp   | 12 ++++++++++++
 test/test_value.cpp     |  4 ++--
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/include/caosdb/entity.h b/include/caosdb/entity.h
index 831200c..ec773b8 100644
--- a/include/caosdb/entity.h
+++ b/include/caosdb/entity.h
@@ -517,9 +517,11 @@ public:
   auto SetValue(const std::vector<std::string> &values) -> StatusCode;
   auto SetValue(const std::vector<char *> &values) -> StatusCode;
   auto SetValue(const std::vector<int64_t> &values) -> StatusCode;
+  auto SetValue(const std::vector<int> &values) -> StatusCode;
   auto SetValue(const std::vector<double> &values) -> StatusCode;
   auto SetValue(const std::vector<bool> &values) -> StatusCode;
   auto SetValue(const int64_t value) -> StatusCode;
+  auto SetValue(const int value) -> StatusCode;
   auto SetValue(const bool value) -> StatusCode;
 
   /**
@@ -671,9 +673,11 @@ public:
   auto SetValue(const std::vector<std::string> &values) -> StatusCode;
   auto SetValue(const std::vector<char *> &values) -> StatusCode;
   auto SetValue(const std::vector<int64_t> &values) -> StatusCode;
+  auto SetValue(const std::vector<int> &values) -> StatusCode;
   auto SetValue(const std::vector<double> &values) -> StatusCode;
   auto SetValue(const std::vector<bool> &values) -> StatusCode;
   auto SetValue(const int64_t value) -> StatusCode;
+  auto SetValue(const int value) -> StatusCode;
   auto SetValue(const bool value) -> StatusCode;
 
   auto SetUnit(const std::string &unit) -> void;
diff --git a/include/caosdb/value.h b/include/caosdb/value.h
index 30ee2b1..e6ca1f3 100644
--- a/include/caosdb/value.h
+++ b/include/caosdb/value.h
@@ -110,6 +110,7 @@ public:
   explicit inline Value(int64_t value) : ProtoMessageWrapper<ProtoValue>() {
     this->wrapped->mutable_scalar_value()->set_integer_value(value);
   }
+  explicit inline Value(int value) : Value(static_cast<int64_t>(value)) {}
   explicit inline Value(bool value) : ProtoMessageWrapper<ProtoValue>() {
     this->wrapped->mutable_scalar_value()->set_boolean_value(value);
   }
diff --git a/src/caosdb/entity.cpp b/src/caosdb/entity.cpp
index 55c5936..293368b 100644
--- a/src/caosdb/entity.cpp
+++ b/src/caosdb/entity.cpp
@@ -128,6 +128,10 @@ auto Property::SetValue(const std::vector<int64_t> &values) -> StatusCode {
   return SetValue(Value(values));
 }
 
+auto Property::SetValue(const std::vector<int> &values) -> StatusCode {
+  return SetValue(Value(values));
+}
+
 auto Property::SetValue(const std::vector<double> &values) -> StatusCode {
   return SetValue(Value(values));
 }
@@ -138,6 +142,8 @@ auto Property::SetValue(const std::vector<bool> &values) -> StatusCode {
 
 auto Property::SetValue(const int64_t value) -> StatusCode { return SetValue(Value(value)); }
 
+auto Property::SetValue(const int value) -> StatusCode { return SetValue(Value(value)); }
+
 auto Property::SetValue(const bool value) -> StatusCode { return SetValue(Value(value)); }
 
 auto Property::SetUnit(const std::string &unit) -> void { this->wrapped->set_unit(unit); }
@@ -226,6 +232,10 @@ auto Entity::SetValue(const std::vector<int64_t> &values) -> StatusCode {
   return SetValue(Value(values));
 }
 
+auto Entity::SetValue(const std::vector<int> &values) -> StatusCode {
+  return SetValue(Value(values));
+}
+
 auto Entity::SetValue(const std::vector<double> &values) -> StatusCode {
   return SetValue(Value(values));
 }
@@ -236,6 +246,8 @@ auto Entity::SetValue(const std::vector<bool> &values) -> StatusCode {
 
 auto Entity::SetValue(const int64_t value) -> StatusCode { return SetValue(Value(value)); }
 
+auto Entity::SetValue(const int value) -> StatusCode { return SetValue(Value(value)); }
+
 auto Entity::SetValue(const bool value) -> StatusCode { return SetValue(Value(value)); }
 
 auto Entity::SetUnit(const std::string &unit) -> void { this->wrapped->set_unit(unit); }
diff --git a/test/test_value.cpp b/test/test_value.cpp
index 855d010..74d30f0 100644
--- a/test/test_value.cpp
+++ b/test/test_value.cpp
@@ -68,7 +68,7 @@ TEST(test_value, test_string) {
 
   // Test inequality
   Value string1("1");
-  Value int1(static_cast<int64_t>(1));
+  Value int1(1);
   EXPECT_FALSE(string1 == int1);
 }
 
@@ -93,7 +93,7 @@ TEST(test_value, test_double) {
 }
 
 TEST(test_value, test_integer) {
-  Value value(static_cast<int64_t>(1337));
+  Value value(1337);
   EXPECT_FALSE(value.IsNull());
   EXPECT_FALSE(value.IsString());
   EXPECT_FALSE(value.IsDouble());
-- 
GitLab