mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-21 11:31:41 +00:00
added STL compatible access functions to TArray.
This allows using them in templates made for STL containers.
This commit is contained in:
parent
52c878c0d7
commit
41573df58f
3 changed files with 42 additions and 6 deletions
|
@ -150,7 +150,7 @@ bool FScanner::OpenFile (const char *name)
|
|||
auto filebuff = fr.Read();
|
||||
if (filebuff.size() == 0 && filesize > 0) return false;
|
||||
|
||||
ScriptBuffer = FString((const char *)filebuff.data(), filesize);
|
||||
ScriptBuffer = FString(filebuff.string(), filesize);
|
||||
ScriptName = name; // This is used for error messages so the full file name is preferable
|
||||
LumpNum = -1;
|
||||
PrepareScript ();
|
||||
|
|
|
@ -71,12 +71,10 @@ public:
|
|||
void Open(const char *lumpname);
|
||||
bool OpenFile(const char *filename);
|
||||
void OpenMem(const char *name, const char *buffer, int size);
|
||||
void OpenMem(const char *name, const TArray<uint8_t> &buffer)
|
||||
{
|
||||
OpenMem(name, (const char*)buffer.Data(), buffer.Size());
|
||||
}
|
||||
void OpenMem(const char* name, const std::vector<uint8_t>& buffer)
|
||||
template<class T>
|
||||
void OpenMem(const char* name, const T& buffer)
|
||||
{
|
||||
static_assert(sizeof(T::value_type) == 1);
|
||||
OpenMem(name, (const char*)buffer.data(), (int)buffer.size());
|
||||
}
|
||||
void OpenString(const char *name, FString buffer);
|
||||
|
|
|
@ -657,6 +657,44 @@ public:
|
|||
std::swap(Most, other.Most);
|
||||
}
|
||||
|
||||
// aliases with STL compliant names to allow using TArrays with templates designed for STL containers
|
||||
|
||||
size_t size() const
|
||||
{
|
||||
return Count;
|
||||
}
|
||||
|
||||
T* data() const
|
||||
{
|
||||
return Data();
|
||||
}
|
||||
|
||||
T& front() const
|
||||
{
|
||||
return *Data();
|
||||
}
|
||||
|
||||
T& back() const
|
||||
{
|
||||
return Last();
|
||||
}
|
||||
|
||||
void resize(size_t i)
|
||||
{
|
||||
Resize(i);
|
||||
}
|
||||
|
||||
void push_back(T& elem)
|
||||
{
|
||||
Push(elem);
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
T *Array;
|
||||
unsigned int Count;
|
||||
|
|
Loading…
Reference in a new issue