From e1d2f0b168ebd698d7a69dbb53fe15cc7fa548aa Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 19 Jan 2025 11:58:47 +0100 Subject: Move ov000 documentation from Ghidra --- libs/c/include/stddef.h | 8 ++++++++ libs/c/include/string.h | 4 +++- libs/cpp/include/cxxabi.h | 11 +++++++++++ libs/cpp/include/vector | 36 +++++++++++++++++++++++++++++++++--- 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 libs/c/include/stddef.h create mode 100644 libs/cpp/include/cxxabi.h (limited to 'libs') diff --git a/libs/c/include/stddef.h b/libs/c/include/stddef.h new file mode 100644 index 00000000..4986043a --- /dev/null +++ b/libs/c/include/stddef.h @@ -0,0 +1,8 @@ +#ifndef _C_STDDEF_H +#define _C_STDDEF_H + +#define NULL 0 + +typedef unsigned int size_t; + +#endif diff --git a/libs/c/include/string.h b/libs/c/include/string.h index 61fde219..bd27c855 100644 --- a/libs/c/include/string.h +++ b/libs/c/include/string.h @@ -1,8 +1,10 @@ #ifndef _C_STRING_H #define _C_STRING_H -typedef unsigned int size_t; +#include +void memcpy(void *dest, void *src, size_t count); +void memmove(void *dest, void *src, size_t count); void memset(void *dest, int ch, size_t count); void *memchr(const void *ptr, int ch, size_t count); void *memrchr(const void *ptr, int ch, size_t count); diff --git a/libs/cpp/include/cxxabi.h b/libs/cpp/include/cxxabi.h new file mode 100644 index 00000000..be49baba --- /dev/null +++ b/libs/cpp/include/cxxabi.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace __cxxabiv1 { + extern "C" { + typedef void (*__cxa_cdtor_type)(void *); + + void __cxa_vec_cleanup(void *array, size_t count, size_t elementSize, __cxa_cdtor_type dtor); + } +} // namespace __cxxabiv1 diff --git a/libs/cpp/include/vector b/libs/cpp/include/vector index 7d78e50c..37e7a4d8 100644 --- a/libs/cpp/include/vector +++ b/libs/cpp/include/vector @@ -1,10 +1,40 @@ #pragma once +#include + namespace std { template class vector { public: - T *elements; - int size; - int capacity; + T *mElements; + int mSize; + int mCapacity; + + ~vector() { + if (mElements != NULL) { + decrease_size(mSize); + delete mElements; + } + } + + void push_back(T &value) { + get_new_capacity(1); + append_back(1, &value); + } + + T *erase(T *first, T *last) { + if (first != last) { + int bytesToMove = (int) mElements + mSize * sizeof(T) - (int) last; + memmove(first, last, bytesToMove); + mSize -= (int) last - (int) first; + } + return first; + } + + private: + void decrease_size(int amount); + + int get_new_capacity(int growth); + + void append_back(int length, T *items); }; } // namespace std -- cgit v1.2.3