summaryrefslogtreecommitdiff
path: root/libs/cpp/include/vector
diff options
context:
space:
mode:
authorAetias <144526980+AetiasHax@users.noreply.github.com>2025-02-03 23:53:59 +0100
committerGitHub <noreply@github.com>2025-02-03 23:53:59 +0100
commit66fa3f0623820bc4fb099289a398453cd28e4ed9 (patch)
tree49de846e0516c9490ea31fd14a867cc14253f7e4 /libs/cpp/include/vector
parent48bbd8bb7f008ac913cabb6f7faf4a47ad86878b (diff)
parent2bd1bbd10b1ba5a595372a3313e80e4274a4e912 (diff)
Merge pull request #59 from AetiasHax/ghidra-symbols
Import documentation from Ghidra server
Diffstat (limited to 'libs/cpp/include/vector')
-rw-r--r--libs/cpp/include/vector36
1 files changed, 33 insertions, 3 deletions
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 <string.h>
+
namespace std {
template <class T> 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