master ohmu/fastfetch-openbsd / src / common / windows / unicode.h
ohmu  ·  2026-10-15
 1#pragma once
 2
 3#include "common/FFstrbuf.h"
 4#include <wchar.h>
 5
 6void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source);
 7void ffStrbufAppendNWS(FFstrbuf* result, uint32_t length, const wchar_t* source);
 8
 9static inline void ffStrbufSetWS(FFstrbuf* result, const wchar_t* source) {
10    if (!source) {
11        return ffStrbufClear(result);
12    }
13    return ffStrbufSetNWS(result, (uint32_t) wcslen(source), source);
14}
15
16static inline void ffStrbufAppendWS(FFstrbuf* result, const wchar_t* source) {
17    if (!source) {
18        return;
19    }
20    return ffStrbufAppendNWS(result, (uint32_t) wcslen(source), source);
21}
22
23static inline void ffStrbufInitNWS(FFstrbuf* result, uint32_t length, const wchar_t* source) {
24    ffStrbufInit(result);
25    return ffStrbufSetNWS(result, length, source);
26}
27
28static inline void ffStrbufInitWS(FFstrbuf* result, const wchar_t* source) {
29    if (!source) {
30        return ffStrbufInit(result);
31    }
32    return ffStrbufInitNWS(result, (uint32_t) wcslen(source), source);
33}
34
35static inline FFstrbuf ffStrbufCreateNWS(uint32_t length, const wchar_t* source) {
36    FFstrbuf result;
37    ffStrbufInitNWS(&result, length, source);
38    return result;
39}
40
41static inline FFstrbuf ffStrbufCreateWS(const wchar_t* source) {
42    if (!source) {
43        return ffStrbufCreate();
44    }
45    return ffStrbufCreateNWS((uint32_t) wcslen(source), source);
46}