forked from Mirrorlandia_minetest/irrlicht
Add equals and set_data functions to core::array for easier working with blocks of data.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6242 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
parent
a5f38804a3
commit
075c64bebb
@ -1,5 +1,6 @@
|
|||||||
--------------------------
|
--------------------------
|
||||||
Changes in 1.9 (not yet released)
|
Changes in 1.9 (not yet released)
|
||||||
|
- Add equals and set_data functions to core::array for easier working with blocks of data.
|
||||||
- SIrrlichtCreationParameters::IgnoreInput set to false works again on X11.
|
- SIrrlichtCreationParameters::IgnoreInput set to false works again on X11.
|
||||||
Thanks @ Victor Gaydov for report + patch + very good test cases! (bug #401)
|
Thanks @ Victor Gaydov for report + patch + very good test cases! (bug #401)
|
||||||
This had been broken since Irrlicht 1.6
|
This had been broken since Irrlicht 1.6
|
||||||
|
@ -231,6 +231,40 @@ public:
|
|||||||
free_when_destroyed=_free_when_destroyed;
|
free_when_destroyed=_free_when_destroyed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Set (copy) data from given memory block
|
||||||
|
/** \param newData data to set, must have newSize elements
|
||||||
|
\param newSize Amount of elements in newData
|
||||||
|
\param canShrink When true we reallocate the array even it can shrink.
|
||||||
|
May reduce memory usage, but call is more whenever size changes.
|
||||||
|
\param newDataIsSorted Info if you pass sorted/unsorted data
|
||||||
|
*/
|
||||||
|
void set_data(const T* newData, u32 newSize, bool newDataIsSorted=false, bool canShrink=false)
|
||||||
|
{
|
||||||
|
reallocate(newSize, canShrink);
|
||||||
|
set_used(newSize);
|
||||||
|
for ( u32 i=0; i<newSize; ++i)
|
||||||
|
{
|
||||||
|
data[i] = newData[i];
|
||||||
|
}
|
||||||
|
is_sorted = newDataIsSorted;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Compare if given data block is identical to the data in our array
|
||||||
|
/** Like operator ==, but without the need to create the array
|
||||||
|
\param otherData Address to data against which we compare, must contain size elements
|
||||||
|
\param size Amount of elements in otherData */
|
||||||
|
bool equals(const T* otherData, u32 size) const
|
||||||
|
{
|
||||||
|
if (used != size)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (u32 i=0; i<size; ++i)
|
||||||
|
if (data[i] != otherData[i])
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//! Sets if the array should delete the memory it uses upon destruction.
|
//! Sets if the array should delete the memory it uses upon destruction.
|
||||||
/** Also clear and set_pointer will only delete the (original) memory
|
/** Also clear and set_pointer will only delete the (original) memory
|
||||||
@ -258,7 +292,6 @@ public:
|
|||||||
used = usedNow;
|
used = usedNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//! Assignment operator
|
//! Assignment operator
|
||||||
const array<T, TAlloc>& operator=(const array<T, TAlloc>& other)
|
const array<T, TAlloc>& operator=(const array<T, TAlloc>& other)
|
||||||
{
|
{
|
||||||
@ -290,13 +323,7 @@ public:
|
|||||||
//! Equality operator
|
//! Equality operator
|
||||||
bool operator == (const array<T, TAlloc>& other) const
|
bool operator == (const array<T, TAlloc>& other) const
|
||||||
{
|
{
|
||||||
if (used != other.used)
|
return equals(other.const_pointer(), other.size());
|
||||||
return false;
|
|
||||||
|
|
||||||
for (u32 i=0; i<other.used; ++i)
|
|
||||||
if (data[i] != other[i])
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user