STD
Various utilities such as mutex, thread, ...
- Buffer — Binary buffer with cursor-based reading and writing
- DynamicLibrary — Cross-platform shared library loader
- List — Generic doubly-linked list
- Mutex — Mutual exclusion primitive for thread synchronization
- Thread — Lightweight thread creation and joining
Header
#include <uhcstd.uhh>Cheat sheet
#define UHC_LITTLE_ENDIAN 0
#define UHC_BIG_ENDIAN 1
namespace Mutex {
#if defined(_WIN32) || defined(_WIN64)
struct It {
CRITICAL_SECTION handle
}
#else
struct It {
pthread_mutex_t handle
}
#endif
Mutex.It create()
U0 destroy(Mutex mutex)
U0 lock(Mutex mutex)
U0 unlock(Mutex mutex)
}
namespace Buffer {
struct It {
U0* handle
U8 order
U32 cursor
};
U0 setOrder(Buffer buffer, U8 order)
U0 reset(Buffer buffer)
I8 getI8(Buffer buffer)
U8 getU8(Buffer buffer)
I16 getI16(Buffer buffer)
U16 getU16(Buffer buffer)
I32 getI32(Buffer buffer)
U32 getU32(Buffer buffer)
I64 getI64(Buffer buffer)
U64 getU64(Buffer buffer)
F32 getF32(Buffer buffer)
F64 getF64(Buffer buffer)
U0 putI8(Buffer buffer, I8 value)
U0 putU8(Buffer buffer, U8 value)
U0 putI16(Buffer buffer, I16 value)
U0 putU16(Buffer buffer, U16 value)
U0 putI32(Buffer buffer, I32 value)
U0 putU32(Buffer buffer, U32 value)
U0 putI64(Buffer buffer, I64 value)
U0 putU64(Buffer buffer, U64 value)
U0 putF32(Buffer buffer, F32 value)
U0 putF64(Buffer buffer, F64 value)
}
namespace Thread {
typedef U0* (*Fn)(U0*)
#if defined(_WIN32) || defined(_WIN64)
struct It {
HANDLE handle
}
#else
struct It {
pthread_t handle
}
#endif
Thread.It start(Thread.Fn method, U0* arg)
U0 join(Thread thread)
}
namespace DynamicLibrary {
#if defined(_WIN32) || defined(_WIN64)
struct It {
HINSTANCE handle
I8* name
U8 isValid
}
#else
struct It {
U0* handle
I8* name
U8 isValid
}
#endif
DynamicLibrary.It load(const I8* name)
U0* get(DynamicLibrary dll, const I8* functionName)
U0 unload(DynamicLibrary dll)
}
namespace List {
struct It {
std::list<T> handle
};
U0 add(List<T> list, T value);
U0 addAt(List<T> list, T value, I32 index);
U8 remove(List<T> list, T value);
U0 removeAt(List<T> list, I32 index);
T* get(List<T> list, I32 index);
U0 set(List<T> list, I32 index, T value);
T* first(List<T> list);
T* last(List<T> list);
U64 size(List<T> list);
U0 clear(List<T> list);
}