mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/4jcraft.git
synced 2026-06-22 02:35:34 +00:00
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:
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
@@ -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; }
|
||||
};
|
||||
@@ -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);
|
||||
};
|
||||
@@ -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;
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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(); };
|
||||
|
||||
@@ -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(); };
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user