Skip to content

Commit 67e9fd3

Browse files
committed
common: add entdict_t::get_vec3f
1 parent 03a3bea commit 67e9fd3

3 files changed

Lines changed: 27 additions & 0 deletions

File tree

common/entdata.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ int32_t entdict_t::get_vector(std::string_view key, qvec3f &vec) const
8383
return sscanf(value.data(), "%f %f %f", &vec[0], &vec[1], &vec[2]);
8484
}
8585

86+
qvec3f entdict_t::get_vec3f(std::string_view key) const
87+
{
88+
qvec3f result{};
89+
if (3 == get_vector(key, result))
90+
return result;
91+
return {};
92+
}
93+
8694
void entdict_t::set(std::string_view key, std::string_view value)
8795
{
8896
// search for existing key to update

include/common/entdata.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class entdict_t
4747
int32_t get_int(std::string_view key) const;
4848
// returns number of vector components read
4949
int32_t get_vector(std::string_view key, qvec3f &out) const;
50+
// returns {0 0 0} if we couldn't parse exactly 3 components
51+
qvec3f get_vec3f(std::string_view key) const;
5052
void set(std::string_view key, std::string_view value);
5153
void remove(std::string_view key);
5254
void rename(std::string_view from, std::string_view to);

tests/test_common.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,3 +726,20 @@ TEST(tests, logMessagesPrefix)
726726
logging::print("WARNING: something\n");
727727
EXPECT_THAT(get_current_test_log(), WarningMatcher);
728728
}
729+
730+
TEST(entdict, getVec3f)
731+
{
732+
entdict_t test;
733+
test.set("vec3key1", "1 2 3");
734+
test.set("vec3key2", "1.0 2.0 3.0");
735+
736+
EXPECT_EQ(qvec3f(1, 2, 3), test.get_vec3f("vec3key1"));
737+
EXPECT_EQ(qvec3f(1, 2, 3), test.get_vec3f("vec3key2"));
738+
739+
test.set("fail1", "1");
740+
test.set("fail2", "asdf");
741+
742+
EXPECT_EQ(qvec3f(0, 0, 0), test.get_vec3f("fail1"));
743+
EXPECT_EQ(qvec3f(0, 0, 0), test.get_vec3f("fail2"));
744+
EXPECT_EQ(qvec3f(0, 0, 0), test.get_vec3f("fail3"));
745+
}

0 commit comments

Comments
 (0)