summaryrefslogtreecommitdiffstats
path: root/src/common/windows/unicode.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/windows/unicode.h')
-rw-r--r--src/common/windows/unicode.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/common/windows/unicode.h b/src/common/windows/unicode.h
new file mode 100644
index 0000000..f58b425
--- /dev/null
+++ b/src/common/windows/unicode.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include "common/FFstrbuf.h"
+#include <wchar.h>
+
+void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source);
+void ffStrbufAppendNWS(FFstrbuf* result, uint32_t length, const wchar_t* source);
+
+static inline void ffStrbufSetWS(FFstrbuf* result, const wchar_t* source) {
+ if (!source) {
+ return ffStrbufClear(result);
+ }
+ return ffStrbufSetNWS(result, (uint32_t) wcslen(source), source);
+}
+
+static inline void ffStrbufAppendWS(FFstrbuf* result, const wchar_t* source) {
+ if (!source) {
+ return;
+ }
+ return ffStrbufAppendNWS(result, (uint32_t) wcslen(source), source);
+}
+
+static inline void ffStrbufInitNWS(FFstrbuf* result, uint32_t length, const wchar_t* source) {
+ ffStrbufInit(result);
+ return ffStrbufSetNWS(result, length, source);
+}
+
+static inline void ffStrbufInitWS(FFstrbuf* result, const wchar_t* source) {
+ if (!source) {
+ return ffStrbufInit(result);
+ }
+ return ffStrbufInitNWS(result, (uint32_t) wcslen(source), source);
+}
+
+static inline FFstrbuf ffStrbufCreateNWS(uint32_t length, const wchar_t* source) {
+ FFstrbuf result;
+ ffStrbufInitNWS(&result, length, source);
+ return result;
+}
+
+static inline FFstrbuf ffStrbufCreateWS(const wchar_t* source) {
+ if (!source) {
+ return ffStrbufCreate();
+ }
+ return ffStrbufCreateNWS((uint32_t) wcslen(source), source);
+}