Selaa lähdekoodia

改造了 ndi 接口,但是没有测试

jcsyshc 2 vuotta sitten
vanhempi
commit
9e49fc3288

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 219 - 373
src/tracker/ndi/ndi_interface.cpp


+ 14 - 0
src/utility/config_utility.hpp

@@ -13,6 +13,11 @@
     assert(config.contains(item_name)); \
     assert(config[item_name].is_string());
 
+#define LOAD_BOOL_ITEM(item_name) ({ \
+    assert(config.contains(item_name)); \
+    assert(config[item_name].is_boolean()); \
+    config[item_name].get<double>(); })
+
 #define LOAD_FLOAT_ITEM(item_name) ({ \
     assert(config.contains(item_name)); \
     assert(config[item_name].is_number()); \
@@ -39,6 +44,15 @@
     auto _name = LOAD_STRING_ITEM2(config, var_name); \
     REQUIRE_VARIABLE(var_type, _name); })
 
+#define TRY_LOAD_BOOL_ITEM(var_name, default_val) ({ \
+    bool _val = default_val; \
+    if (config.contains(var_name)) { \
+        assert(config[var_name].is_boolean()); \
+        _val = config[var_name].get<bool>(); \
+    } \
+        _val; \
+    })
+
 #define TRY_LOAD_VARIABLE_INDEX(var_type, var_name) ({ \
     variable_index_type _index = -1; \
     if (config.contains(var_name)) { \

+ 4 - 0
src/utility/string_map.hpp

@@ -36,6 +36,10 @@ namespace sophiar {
             m.clear();
         }
 
+        static auto calc_hash(std::string_view str) {
+            return hash_sv(str);
+        }
+
     private:
         static constexpr auto hash_sv = std::hash<std::string_view>{};
         std::unordered_map<std::size_t, T> m;

+ 8 - 0
src/utility/variable_helper.hpp

@@ -110,6 +110,14 @@ namespace sophiar {
         return var_ptr->value;
     }
 
+    template<typename SmallObjType>
+    auto try_update_variable(variable_index_type var_index,
+                             typename SmallObjType::pointer &&ptr,
+                             timestamp_type ts = current_timestamp()) {
+        if (!is_valid_id(var_index)) return;
+        UPDATE_VARIABLE_WITH_TS(SmallObjType, var_index, ptr, ts);
+    }
+
     template<typename SmallObjType>
     auto try_update_variable_value(variable_index_type var_index,
                                    const typename SmallObjType::value_type &value,

+ 8 - 0
src/utility/versatile_buffer2.hpp

@@ -37,6 +37,10 @@ namespace sophiar {
             return std::make_unique<this_type>();
         }
 
+        std::string_view as_string_view() const {
+            return {buf.data(), buf.data() + Length};
+        }
+
     private:
         std::array<char, Length> buf;
     };
@@ -78,6 +82,10 @@ namespace sophiar {
             return pointer{new dynamic_memory{req_size}};
         }
 
+        std::string_view as_string_view() const {
+            return {buf, buf + used_length};
+        }
+
     private:
         char *buf;
         size_t used_length;

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä