refactor: remove arrayWithLength, replace with std::vector

Eliminates the custom arrayWithLength<T> wrapper and all typedefs, replacing with std::vector<T> directly.
This commit is contained in:
MatthewBeshay
2026-03-31 12:06:19 +11:00
parent 27a4964941
commit 7ddfaeb59e
414 changed files with 2412 additions and 2724 deletions

View File

@@ -4,39 +4,39 @@
class Arrays {
public:
static void fill(doubleArray arr, unsigned int from, unsigned int to,
static void fill(std::vector<double>& arr, unsigned int from, unsigned int to,
double value) {
assert(from >= 0);
assert(from <= to);
assert(to <= arr.length);
std::fill(arr.data + from, arr.data + to, value);
assert(to <= arr.size());
std::fill(arr.data() + from, arr.data() + to, value);
}
static void fill(floatArray arr, unsigned int from, unsigned int to,
static void fill(std::vector<float>& arr, unsigned int from, unsigned int to,
float value) {
assert(from >= 0);
assert(from <= to);
assert(to <= arr.length);
std::fill(arr.data + from, arr.data + to, value);
assert(to <= arr.size());
std::fill(arr.data() + from, arr.data() + to, value);
}
static void fill(BiomeArray arr, unsigned int from, unsigned int to,
static void fill(std::vector<Biome*>& arr, unsigned int from, unsigned int to,
Biome* value) {
assert(from >= 0);
assert(from <= to);
assert(to <= arr.length);
std::fill(arr.data + from, arr.data + to, value);
assert(to <= arr.size());
std::fill(arr.data() + from, arr.data() + to, value);
}
static void fill(byteArray arr, unsigned int from, unsigned int to,
static void fill(std::vector<uint8_t>& arr, unsigned int from, unsigned int to,
uint8_t value) {
assert(from >= 0);
assert(from <= to);
assert(to <= arr.length);
std::fill(arr.data + from, arr.data + to, value);
assert(to <= arr.size());
std::fill(arr.data() + from, arr.data() + to, value);
}
static void fill(byteArray arr, uint8_t value) {
std::fill(arr.data, arr.data + arr.length, value);
static void fill(std::vector<uint8_t>& arr, uint8_t value) {
std::fill(arr.data(), arr.data() + arr.size(), value);
}
};

View File

@@ -20,7 +20,7 @@ public:
ByteBuffer(unsigned int capacity, uint8_t* backingArray);
virtual ~ByteBuffer();
static ByteBuffer* wrap(byteArray& b);
static ByteBuffer* wrap(std::vector<uint8_t>& b);
static ByteBuffer* allocate(unsigned int capacity);
void order(ByteOrder a);
ByteBuffer* flip();
@@ -28,19 +28,19 @@ public:
int getSize();
int getInt();
int getInt(unsigned int index);
void get(byteArray) {} // 4J - TODO
void get(std::vector<uint8_t>) {} // 4J - TODO
uint8_t get(int index);
int64_t getLong();
short getShort();
void getShortArray(shortArray& s);
void getShortArray(std::vector<short>& s);
ByteBuffer* put(int index, uint8_t b);
ByteBuffer* putInt(int value);
ByteBuffer* putInt(unsigned int index, int value);
ByteBuffer* putShort(short value);
ByteBuffer* putShortArray(shortArray& s);
ByteBuffer* putShortArray(std::vector<short>& s);
ByteBuffer* putLong(int64_t value);
ByteBuffer* put(byteArray inputArray);
byteArray array();
ByteBuffer* put(std::vector<uint8_t>& inputArray);
std::vector<uint8_t> array();
IntBuffer* asIntBuffer();
FloatBuffer* asFloatBuffer();
};

View File

@@ -13,6 +13,6 @@ public:
FloatBuffer* flip();
FloatBuffer* put(float f);
void get(arrayWithLength<float>* dst);
void get(std::vector<float>* dst);
float* _getDataPointer() { return buffer; }
};

View File

@@ -8,7 +8,7 @@ private:
OutputStream* stream;
protected:
byteArray buf; // The internal buffer where data is stored.
std::vector<uint8_t> buf; // The internal buffer where data is stored.
unsigned int count; // The number of valid bytes in the buffer.
public:
@@ -17,7 +17,7 @@ public:
virtual void flush();
virtual void close();
virtual void write(byteArray b, unsigned int offset, unsigned int length);
virtual void write(byteArray b);
virtual void write(const std::vector<uint8_t>& b, unsigned int offset, unsigned int length);
virtual void write(const std::vector<uint8_t>& b);
virtual void write(unsigned int b);
};

View File

@@ -6,7 +6,7 @@
class ByteArrayInputStream : public InputStream {
protected:
byteArray buf; // An array of bytes that was provided by the creator of the
std::vector<uint8_t> buf; // An array of bytes that was provided by the creator of the
// stream.
unsigned int count; // The index one greater than the last valid character
// in the input stream buffer.
@@ -15,20 +15,20 @@ protected:
// stream buffer.
public:
ByteArrayInputStream(byteArray buf, unsigned int offset,
ByteArrayInputStream(std::vector<uint8_t>& buf, unsigned int offset,
unsigned int length);
ByteArrayInputStream(byteArray buf);
ByteArrayInputStream(std::vector<uint8_t>& buf);
virtual ~ByteArrayInputStream();
virtual int read();
virtual int read(byteArray b);
virtual int read(byteArray b, unsigned int offset, unsigned int length);
virtual int read(std::vector<uint8_t>& b);
virtual int read(std::vector<uint8_t>& b, unsigned int offset, unsigned int length);
virtual void close();
virtual int64_t skip(int64_t n);
// 4J Stu Added - Sometimes we don't want to delete the data on destroying
// this
void reset() {
buf = byteArray();
buf = std::vector<uint8_t>();
count = 0;
mark = 0;
pos = 0;

View File

@@ -4,10 +4,10 @@
#include "../../../../Minecraft.World/ConsoleHelpers/ArrayWithLength.h" // 4jcraft TODO
class ByteArrayOutputStream : public OutputStream {
// Note - when actually implementing, byteArray will need to grow as data is
// Note - when actually implementing, std::vector<uint8_t> will need to grow as data is
// written
public:
byteArray buf; // The buffer where data is stored.
std::vector<uint8_t> buf; // The buffer where data is stored.
protected:
unsigned int count; // The number of valid bytes in the buffer.
@@ -19,10 +19,10 @@ public:
virtual void flush() {}
virtual void write(unsigned int b);
virtual void write(byteArray b);
virtual void write(byteArray b, unsigned int offset, unsigned int length);
virtual void write(const std::vector<uint8_t>& b);
virtual void write(const std::vector<uint8_t>& b, unsigned int offset, unsigned int length);
virtual void close();
virtual byteArray toByteArray();
virtual std::vector<uint8_t> toByteArray();
void reset() { count = 0; }
unsigned int size() { return count; }

View File

@@ -5,12 +5,12 @@
class DataInput {
public:
virtual int read() = 0;
virtual int read(byteArray b) = 0;
virtual int read(byteArray b, unsigned int offset, unsigned int length) = 0;
virtual int read(std::vector<uint8_t>& b) = 0;
virtual int read(std::vector<uint8_t>& b, unsigned int offset, unsigned int length) = 0;
virtual bool readBoolean() = 0;
virtual uint8_t readByte() = 0;
virtual unsigned char readUnsignedByte() = 0;
virtual bool readFully(byteArray a) = 0;
virtual bool readFully(std::vector<uint8_t>& a) = 0;
virtual double readDouble() = 0;
virtual float readFloat() = 0;
virtual int readInt() = 0;

View File

@@ -16,15 +16,15 @@ private:
public:
DataInputStream(InputStream* in);
virtual int read();
virtual int read(byteArray b);
virtual int read(byteArray b, unsigned int offset, unsigned int length);
virtual int read(std::vector<uint8_t>& b);
virtual int read(std::vector<uint8_t>& b, unsigned int offset, unsigned int length);
virtual void close();
virtual bool readBoolean();
virtual uint8_t readByte();
virtual unsigned char readUnsignedByte();
virtual wchar_t readChar();
virtual bool readFully(byteArray b);
virtual bool readFully(charArray b);
virtual bool readFully(std::vector<uint8_t>& b);
virtual bool readFully(std::vector<char>& b);
virtual double readDouble();
virtual float readFloat();
virtual int readInt();

View File

@@ -5,8 +5,8 @@
class DataOutput {
public:
virtual void write(unsigned int b) = 0;
virtual void write(byteArray b) = 0;
virtual void write(byteArray b, unsigned int offset,
virtual void write(const std::vector<uint8_t>& b) = 0;
virtual void write(const std::vector<uint8_t>& b, unsigned int offset,
unsigned int length) = 0;
virtual void writeByte(uint8_t a) = 0;
virtual void writeDouble(double a) = 0;

View File

@@ -25,8 +25,8 @@ public:
void deleteChildStream();
virtual void write(unsigned int b);
virtual void write(byteArray b);
virtual void write(byteArray b, unsigned int offset, unsigned int length);
virtual void write(const std::vector<uint8_t>& b);
virtual void write(const std::vector<uint8_t>& b, unsigned int offset, unsigned int length);
virtual void close();
virtual void writeByte(uint8_t a);
virtual void writeDouble(double a);

View File

@@ -15,8 +15,8 @@ public:
FileInputStream(const File& file);
virtual ~FileInputStream();
virtual int read();
virtual int read(byteArray b);
virtual int read(byteArray b, unsigned int offset, unsigned int length);
virtual int read(std::vector<uint8_t>& b);
virtual int read(std::vector<uint8_t>& b, unsigned int offset, unsigned int length);
virtual void close();
virtual int64_t skip(int64_t n);

View File

@@ -14,8 +14,8 @@ public:
FileOutputStream(const File& file);
virtual ~FileOutputStream();
virtual void write(unsigned int b);
virtual void write(byteArray b);
virtual void write(byteArray b, unsigned int offset, unsigned int length);
virtual void write(const std::vector<uint8_t>& b);
virtual void write(const std::vector<uint8_t>& b, unsigned int offset, unsigned int length);
virtual void close();
virtual void flush();

View File

@@ -15,8 +15,8 @@ private:
public:
GZIPInputStream(InputStream* out) : stream(out) {};
virtual int read() { return stream->read(); };
virtual int read(byteArray b) { return stream->read(b); };
virtual int read(byteArray b, unsigned int offset, unsigned int length) {
virtual int read(std::vector<uint8_t>& b) { return stream->read(b); };
virtual int read(std::vector<uint8_t>& b, unsigned int offset, unsigned int length) {
return stream->read(b, offset, length);
};
virtual void close() { return stream->close(); };

View File

@@ -13,8 +13,8 @@ private:
public:
GZIPOutputStream(OutputStream* out) : stream(out) {};
virtual void write(unsigned int b) { stream->write(b); };
virtual void write(byteArray b) { stream->write(b); };
virtual void write(byteArray b, unsigned int offset, unsigned int length) {
virtual void write(const std::vector<uint8_t>& b) { stream->write(b); };
virtual void write(const std::vector<uint8_t>& b, unsigned int offset, unsigned int length) {
stream->write(b, offset, length);
};
virtual void close() { stream->close(); };

View File

@@ -12,8 +12,8 @@ public:
virtual ~InputStream() {}
virtual int read() = 0;
virtual int read(byteArray b) = 0;
virtual int read(byteArray b, unsigned int offset, unsigned int length) = 0;
virtual int read(std::vector<uint8_t>& b) = 0;
virtual int read(std::vector<uint8_t>& b, unsigned int offset, unsigned int length) = 0;
virtual void close() = 0;
virtual int64_t skip(int64_t n) = 0;

View File

@@ -9,8 +9,8 @@ public:
virtual ~OutputStream() {}
virtual void write(unsigned int b) = 0;
virtual void write(byteArray b) = 0;
virtual void write(byteArray b, unsigned int offset,
virtual void write(const std::vector<uint8_t>& b) = 0;
virtual void write(const std::vector<uint8_t>& b, unsigned int offset,
unsigned int length) = 0;
virtual void close() = 0;
virtual void flush() = 0;

View File

@@ -16,8 +16,8 @@ public:
virtual IntBuffer* flip();
int get(unsigned int index);
int* getBuffer();
IntBuffer* put(intArray* inputArray, unsigned int offset,
IntBuffer* put(std::vector<int>* inputArray, unsigned int offset,
unsigned int length);
IntBuffer* put(intArray inputArray);
IntBuffer* put(std::vector<int>& inputArray);
IntBuffer* put(int i);
};

View File

@@ -1,24 +1,28 @@
#pragma once
#include <cstdint>
#include <vector>
#include <algorithm>
#include <cstring>
#include <cassert>
#include "../../../Minecraft.World/ConsoleHelpers/ArrayWithLength.h" // 4jcraft TODO
// 4J Jev, just thought it would be easier this way.
#define ArrayCopyFunctionDeclaration(x) \
static void arraycopy(arrayWithLength<x> src, unsigned int srcPos, \
arrayWithLength<x>* dst, unsigned int dstPos, \
#define ArrayCopyFunctionDeclaration(x) \
static void arraycopy(const std::vector<x>& src, unsigned int srcPos, \
std::vector<x>* dst, unsigned int dstPos, \
unsigned int length);
#define ArrayCopyFunctionDefinition(x) \
void System::arraycopy(arrayWithLength<x> src, unsigned int srcPos, \
arrayWithLength<x>* dst, unsigned int dstPos, \
unsigned int length) { \
arraycopy<x>(src, srcPos, dst, dstPos, length); \
#define ArrayCopyFunctionDefinition(x) \
void System::arraycopy(const std::vector<x>& src, unsigned int srcPos, \
std::vector<x>* dst, unsigned int dstPos, \
unsigned int length) { \
arraycopy<x>(src, srcPos, dst, dstPos, length); \
}
class System {
template <class T>
static void arraycopy(arrayWithLength<T> src, unsigned int srcPos,
arrayWithLength<T>* dst, unsigned int dstPos,
static void arraycopy(const std::vector<T>& src, unsigned int srcPos,
std::vector<T>* dst, unsigned int dstPos,
unsigned int length);
public: