Browse Source

libobs/util: Add uthash

Adds a header including uthash and redefining some of its options for
use withint libobs and plugins (potentially).
derrod 2 years ago
parent
commit
2986d36d9b
2 changed files with 36 additions and 0 deletions
  1. 2 0
      libobs/CMakeLists.txt
  2. 34 0
      libobs/util/uthash.h

+ 2 - 0
libobs/CMakeLists.txt

@@ -201,6 +201,7 @@ target_sources(
           util/threading.h
           util/threading.h
           util/utf8.c
           util/utf8.c
           util/utf8.h
           util/utf8.h
+          util/uthash.h
           util/util_uint64.h
           util/util_uint64.h
           util/util_uint128.h
           util/util_uint128.h
           util/curl/curl-helper.h
           util/curl/curl-helper.h
@@ -247,6 +248,7 @@ target_link_libraries(
           FFmpeg::swresample
           FFmpeg::swresample
           Jansson::Jansson
           Jansson::Jansson
           OBS::caption
           OBS::caption
+          OBS::uthash
           ZLIB::ZLIB
           ZLIB::ZLIB
   PUBLIC Threads::Threads)
   PUBLIC Threads::Threads)
 
 

+ 34 - 0
libobs/util/uthash.h

@@ -0,0 +1,34 @@
+/******************************************************************************
+    Copyright (C) 2023 by Dennis Sädtler <[email protected]>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+******************************************************************************/
+
+#pragma once
+
+/*
+ * This file (re)defines various uthash settings for use in libobs
+ */
+
+#include <uthash/uthash.h>
+
+/* Use OBS allocator */
+#undef uthash_malloc
+#undef uthash_free
+#define uthash_malloc(sz) bmalloc(sz)
+#define uthash_free(ptr, sz) bfree(ptr)
+
+/* Use SFH (Super Fast Hash) function instead of JEN */
+#undef HASH_FUNCTION
+#define HASH_FUNCTION HASH_SFH