821 lines
28 KiB
Plaintext
821 lines
28 KiB
Plaintext
/************************************************************************
|
|
* script name : eas_inc
|
|
* created by : eyesolated
|
|
* date : 2011/6/16
|
|
*
|
|
* description : The central include file for eyesolated Arrays and
|
|
* StringLists
|
|
*
|
|
* changes : 2010/6/16 - eyesolated - Initial creation
|
|
************************************************************************/
|
|
|
|
const int EAS_ARRAY_EXIST = 1;
|
|
const int EAS_ARRAY_NOTEXIST = 0;
|
|
|
|
const string EAS_ARRAY_NAME = "_AName";
|
|
const string EAS_ARRAY_SIZE = "_Asize";
|
|
const string EAS_ARRAY_TYPE = "_AType";
|
|
const int EAS_ARRAY_TYPE_STRING = 1;
|
|
const int EAS_ARRAY_TYPE_INTEGER = 2;
|
|
const int EAS_ARRAY_TYPE_FLOAT = 3;
|
|
const int EAS_ARRAY_TYPE_LOCATION = 4;
|
|
const int EAS_ARRAY_TYPE_OBJECT = 5;
|
|
|
|
void eas_Array_SetSize(object oStore, string sArrayName, int nArraySize);
|
|
int eas_Array_GetSize(object oStore, string sArrayName);
|
|
void eas_Array_SetType(object oStore, string sArrayName, int nArrayType);
|
|
int eas_Array_GetType(object oStore, string sArrayName);
|
|
|
|
// Checks if the Array exists
|
|
// oStore : The store on which the Array is saved
|
|
// sArrayName : The Array to check
|
|
int eas_Array_Exists(object oStore, string sArrayName);
|
|
|
|
// Deletes an Array
|
|
// oStore : The store on which the Array is saved
|
|
// sArrayName : The Array to delete
|
|
// bRealDelete : Really delete the stored objects instead of just setting ArraySize to 0
|
|
void eas_Array_Delete(object oStore, string sArrayName, int bRealDelete = FALSE);
|
|
|
|
// Creates an Array sArrayName on oStore
|
|
// nArrayType is unused for speed reasons, you can save any type on any array, just make sure
|
|
// you know what you do :)
|
|
int eas_Array_Create(object oStore, string sArrayName, int nArrayType = EAS_ARRAY_TYPE_STRING);
|
|
|
|
// String Arrays
|
|
|
|
// Adds an Entry to an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sEntry : The Entry to add to the Array
|
|
//
|
|
// Returns : The index of the added Entry
|
|
int eas_SArray_Entry_Add(object oStore, string sArrayName, string sEntry);
|
|
|
|
// Changes the Value of an existing Entry in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to change
|
|
// sEntry : The new value to save
|
|
void eas_SArray_Entry_Set(object oStore, string sArrayName, int nIndex, string sEntry);
|
|
|
|
// Returns the value of an Entry in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to retrieve
|
|
string eas_SArray_Entry_Get(object oStore, string sArrayName, int nIndex);
|
|
|
|
// Returns the Index of sEntry in Array sArrayName on object oStore
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sEntry : The Value to get the Index of
|
|
// Returns -1 if the entry is not found
|
|
int eas_SArray_Entry_IndexOf(object oStore, string sArrayName, string sEntry);
|
|
|
|
// Swaps the Index/Position of two entries in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex1 : The first Index
|
|
// nIndex2 : The second Index
|
|
void eas_SArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2);
|
|
|
|
// Inserts an Entry at a specified Index in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index at which to insert the Entry
|
|
// sEntry : The Value to insert
|
|
void eas_SArray_Entry_Insert(object oStore, string sArrayName, int nIndex, string sEntry);
|
|
|
|
// Deletes an Entry from an Array. All following Entries are reordered
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to delete
|
|
void eas_SArray_Entry_Delete(object oStore, string sArrayName, int nIndex);
|
|
|
|
// Delete an Entry from an Array by Value. The first Entry matching will be deleted
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sValue : The value to delete
|
|
// Returns the Index of the deleted Entry, -1 on Error
|
|
int eas_SArray_Entry_DeleteByValue(object oStore, string sArrayName, string sValue);
|
|
|
|
// Integer Arrays
|
|
|
|
// Adds an Entry to an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sEntry : The Entry to add to the Array
|
|
//
|
|
// Returns : The index of the added Entry
|
|
int eas_IArray_Entry_Add(object oStore, string sArrayName, int iValue);
|
|
|
|
// Changes the Value of an existing Entry in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to change
|
|
// sEntry : The new value to save
|
|
void eas_IArray_Entry_Set(object oStore, string sArrayName, int nIndex, int iValue);
|
|
|
|
// Returns the value of an Entry in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to retrieve
|
|
int eas_IArray_Entry_Get(object oStore, string sArrayName, int nIndex);
|
|
|
|
// Returns the Index of sEntry in Array sArrayName on object oStore
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sEntry : The Value to get the Index of
|
|
// Returns -1 if the entry is not found
|
|
int eas_IArray_Entry_IndexOf(object oStore, string sArrayName, int iValue);
|
|
|
|
// Swaps the Index/Position of two entries in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex1 : The first Index
|
|
// nIndex2 : The second Index
|
|
void eas_IArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2);
|
|
|
|
// Inserts an Entry at a specified Index in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index at which to insert the Entry
|
|
// sEntry : The Value to insert
|
|
void eas_IArray_Entry_Insert(object oStore, string sArrayName, int nIndex, int iValue);
|
|
|
|
// Deletes an Entry from an Array. All following Entries are reordered
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to delete
|
|
void eas_IArray_Entry_Delete(object oStore, string sArrayName, int nIndex);
|
|
|
|
// Delete an Entry from an Array by Value. The first Entry matching will be deleted
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sValue : The value to delete
|
|
// Returns the Index of the deleted Entry, -1 on Error
|
|
int eas_IArray_Entry_DeleteByValue(object oStore, string sArrayName, int iValue);
|
|
|
|
// Object Arrays
|
|
|
|
// Adds an Entry to an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sEntry : The Entry to add to the Array
|
|
//
|
|
// Returns : The index of the added Entry
|
|
int eas_OArray_Entry_Add(object oStore, string sArrayName, object oEntry);
|
|
|
|
// Changes the Value of an existing Entry in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to change
|
|
// sEntry : The new value to save
|
|
void eas_OArray_Entry_Set(object oStore, string sArrayName, int nIndex, object sEntry);
|
|
|
|
// Returns the value of an Entry in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to retrieve
|
|
object eas_OArray_Entry_Get(object oStore, string sArrayName, int nIndex);
|
|
|
|
// Returns the Index of sEntry in Array sArrayName on object oStore
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sEntry : The Value to get the Index of
|
|
// Returns -1 if the entry is not found
|
|
int eas_OArray_Entry_IndexOf(object oStore, string sArrayName, object oEntry);
|
|
|
|
// Swaps the Index/Position of two entries in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex1 : The first Index
|
|
// nIndex2 : The second Index
|
|
void eas_OArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2);
|
|
|
|
// Inserts an Entry at a specified Index in an Array
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index at which to insert the Entry
|
|
// sEntry : The Value to insert
|
|
void eas_OArray_Entry_Insert(object oStore, string sArrayName, int nIndex, object oEntry);
|
|
|
|
// Deletes an Entry from an Array. All following Entries are reordered
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// nIndex : The Index of the Entry to delete
|
|
void eas_OArray_Entry_Delete(object oStore, string sArrayName, int nIndex);
|
|
|
|
// Delete an Entry from an Array by Value. The first Entry matching will be deleted
|
|
// oStore : The object the Array is stored on
|
|
// sArrayName : The name of the Array
|
|
// sValue : The value to delete
|
|
// Returns the Index of the deleted Entry, -1 on Error
|
|
int eas_OArray_Entry_DeleteByValue(object oStore, string sArrayName, object oValue);
|
|
|
|
// Implementation
|
|
|
|
// STRING ARRAY
|
|
int eas_SArray_Entry_Add(object oStore, string sArrayName, string sEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
SetLocalString(oStore, sArrayName + IntToString(nArraySize), sEntry);
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
return (nArraySize);
|
|
}
|
|
|
|
void eas_SArray_Entry_Set(object oStore, string sArrayName, int nIndex, string sEntry)
|
|
{
|
|
if (eas_Array_GetSize(oStore, sArrayName) > nIndex)
|
|
{
|
|
SetLocalString(oStore, sArrayName + IntToString(nIndex), sEntry);
|
|
}
|
|
}
|
|
|
|
string eas_SArray_Entry_Get(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
return (GetLocalString(oStore, sArrayName + IntToString(nIndex)));
|
|
}
|
|
|
|
int eas_SArray_Entry_IndexOf(object oStore, string sArrayName, string sEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
if (eas_SArray_Entry_Get(oStore, sArrayName, nIndex) == sEntry)
|
|
{
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
void eas_SArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2)
|
|
{
|
|
string sEntry1 = eas_SArray_Entry_Get(oStore, sArrayName, nIndex1);
|
|
string sEntry2 = eas_SArray_Entry_Get(oStore, sArrayName, nIndex2);
|
|
eas_SArray_Entry_Set(oStore, sArrayName, nIndex1, sEntry2);
|
|
eas_SArray_Entry_Set(oStore, sArrayName, nIndex2, sEntry1);
|
|
}
|
|
|
|
void eas_SArray_Entry_Insert(object oStore, string sArrayName, int nIndex, string sEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
// Only able to insert something if it is within the array
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Increase the Array Size
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
|
|
// Add 1 to the index of each Entry before the Insert Position
|
|
int nOldIndex;
|
|
for (nOldIndex = nArraySize - 1; nOldIndex >= nIndex; nOldIndex--)
|
|
{
|
|
eas_SArray_Entry_Set(oStore, sArrayName, nOldIndex + 1, eas_SArray_Entry_Get(oStore, sArrayName, nOldIndex));
|
|
}
|
|
|
|
// Finally, set the inserted value
|
|
eas_SArray_Entry_Set(oStore, sArrayName, nIndex, sEntry);
|
|
}
|
|
}
|
|
|
|
void eas_SArray_Entry_Delete(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
// Only able to delete something if it is within the array
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Get the next entry and pull it to the deleted one until the end
|
|
int nNewIndex;
|
|
for (nNewIndex = nIndex; nNewIndex < nArraySize - 1; nNewIndex++)
|
|
{
|
|
eas_SArray_Entry_Set(oStore, sArrayName, nNewIndex, eas_SArray_Entry_Get(oStore, sArrayName, nNewIndex +1));
|
|
}
|
|
|
|
// Finally, delete the last entry and decrease the Array's Size
|
|
DeleteLocalString(oStore, sArrayName + IntToString(nArraySize - 1));
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize - 1);
|
|
}
|
|
}
|
|
|
|
int eas_SArray_Entry_DeleteByValue(object oStore, string sArrayName, string sValue)
|
|
{
|
|
// Deletes an entry by Object
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
string sCompare;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
sCompare = eas_SArray_Entry_Get(oStore, sArrayName, nIndex);
|
|
if (sCompare == sValue)
|
|
{
|
|
eas_SArray_Entry_Delete(oStore, sArrayName, nIndex);
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
// INTEGER ARRAY
|
|
int eas_IArray_Entry_Add(object oStore, string sArrayName, int iEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
SetLocalInt(oStore, sArrayName + IntToString(nArraySize), iEntry);
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
return (nArraySize);
|
|
}
|
|
|
|
void eas_IArray_Entry_Set(object oStore, string sArrayName, int nIndex, int iEntry)
|
|
{
|
|
if (eas_Array_GetSize(oStore, sArrayName) > nIndex)
|
|
{
|
|
SetLocalInt(oStore, sArrayName + IntToString(nIndex), iEntry);
|
|
}
|
|
}
|
|
|
|
int eas_IArray_Entry_Get(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
return (GetLocalInt(oStore, sArrayName + IntToString(nIndex)));
|
|
}
|
|
|
|
int eas_IArray_Entry_IndexOf(object oStore, string sArrayName, int iEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
if (eas_IArray_Entry_Get(oStore, sArrayName, nIndex) == iEntry)
|
|
{
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
void eas_IArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2)
|
|
{
|
|
int iEntry1 = eas_IArray_Entry_Get(oStore, sArrayName, nIndex1);
|
|
int iEntry2 = eas_IArray_Entry_Get(oStore, sArrayName, nIndex2);
|
|
eas_IArray_Entry_Set(oStore, sArrayName, nIndex1, iEntry2);
|
|
eas_IArray_Entry_Set(oStore, sArrayName, nIndex2, iEntry1);
|
|
}
|
|
|
|
void eas_IArray_Entry_Insert(object oStore, string sArrayName, int nIndex, int iEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
// Only able to insert something if it is within the array
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Increase the Array Size
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
|
|
// Add 1 to the index of each Entry before the Insert Position
|
|
int nOldIndex;
|
|
for (nOldIndex = nArraySize - 1; nOldIndex >= nIndex; nOldIndex--)
|
|
{
|
|
eas_IArray_Entry_Set(oStore, sArrayName, nOldIndex + 1, eas_IArray_Entry_Get(oStore, sArrayName, nOldIndex));
|
|
}
|
|
|
|
// Finally, set the inserted value
|
|
eas_IArray_Entry_Set(oStore, sArrayName, nIndex, iEntry);
|
|
}
|
|
}
|
|
|
|
void eas_IArray_Entry_Delete(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
// Only able to delete something if it is within the array
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Get the next entry and pull it to the deleted one until the end
|
|
int nNewIndex;
|
|
for (nNewIndex = nIndex; nNewIndex < nArraySize - 1; nNewIndex++)
|
|
{
|
|
eas_IArray_Entry_Set(oStore, sArrayName, nNewIndex, eas_IArray_Entry_Get(oStore, sArrayName, nNewIndex +1));
|
|
}
|
|
|
|
// Finally, delete the last entry and decrease the Array's Size
|
|
DeleteLocalInt(oStore, sArrayName + IntToString(nArraySize - 1));
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize - 1);
|
|
}
|
|
}
|
|
|
|
int eas_IArray_Entry_DeleteByValue(object oStore, string sArrayName, int nValue)
|
|
{
|
|
// Deletes an entry by Object
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
int nCompare;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
nCompare = eas_IArray_Entry_Get(oStore, sArrayName, nIndex);
|
|
if (nCompare == nValue)
|
|
{
|
|
eas_IArray_Entry_Delete(oStore, sArrayName, nIndex);
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
// FLOAT ARRAY
|
|
int eas_FArray_Entry_Add(object oStore, string sArrayName, float fEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
SetLocalFloat(oStore, sArrayName + IntToString(nArraySize), fEntry);
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
return (nArraySize);
|
|
}
|
|
|
|
void eas_FArray_Entry_Set(object oStore, string sArrayName, int nIndex, float fEntry)
|
|
{
|
|
if (eas_Array_GetSize(oStore, sArrayName) > nIndex)
|
|
{
|
|
SetLocalFloat(oStore, sArrayName + IntToString(nIndex), fEntry);
|
|
}
|
|
}
|
|
|
|
float eas_FArray_Entry_Get(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
return (GetLocalFloat(oStore, sArrayName + IntToString(nIndex)));
|
|
}
|
|
|
|
int eas_FArray_Entry_IndexOf(object oStore, string sArrayName, float fEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
if (eas_FArray_Entry_Get(oStore, sArrayName, nIndex) == fEntry)
|
|
{
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
void eas_FArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2)
|
|
{
|
|
float fEntry1 = eas_FArray_Entry_Get(oStore, sArrayName, nIndex1);
|
|
float fEntry2 = eas_FArray_Entry_Get(oStore, sArrayName, nIndex2);
|
|
eas_FArray_Entry_Set(oStore, sArrayName, nIndex1, fEntry2);
|
|
eas_FArray_Entry_Set(oStore, sArrayName, nIndex2, fEntry1);
|
|
}
|
|
|
|
void eas_FArray_Entry_Insert(object oStore, string sArrayName, int nIndex, float fEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
// Only able to insert something if it is within the array
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Increase the Array Size
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
|
|
// Add 1 to the index of each Entry before the Insert Position
|
|
int nOldIndex;
|
|
for (nOldIndex = nArraySize - 1; nOldIndex >= nIndex; nOldIndex--)
|
|
{
|
|
eas_FArray_Entry_Set(oStore, sArrayName, nOldIndex + 1, eas_FArray_Entry_Get(oStore, sArrayName, nOldIndex));
|
|
}
|
|
|
|
// Finally, set the inserted value
|
|
eas_FArray_Entry_Set(oStore, sArrayName, nIndex, fEntry);
|
|
}
|
|
}
|
|
|
|
void eas_FArray_Entry_Delete(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
// Only able to delete something if it is within the array
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Get the next entry and pull it to the deleted one until the end
|
|
int nNewIndex;
|
|
for (nNewIndex = nIndex; nNewIndex < nArraySize - 1; nNewIndex++)
|
|
{
|
|
eas_FArray_Entry_Set(oStore, sArrayName, nNewIndex, eas_FArray_Entry_Get(oStore, sArrayName, nNewIndex +1));
|
|
}
|
|
|
|
// Finally, delete the last entry and decrease the Array's Size
|
|
DeleteLocalFloat(oStore, sArrayName + IntToString(nArraySize - 1));
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize - 1);
|
|
}
|
|
}
|
|
|
|
int eas_FArray_Entry_DeleteByValue(object oStore, string sArrayName, float fValue)
|
|
{
|
|
// Deletes an entry by Object
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
float fCompare;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
fCompare = eas_FArray_Entry_Get(oStore, sArrayName, nIndex);
|
|
if (fCompare == fValue)
|
|
{
|
|
eas_FArray_Entry_Delete(oStore, sArrayName, nIndex);
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
// OBJECT ARRAY
|
|
int eas_OArray_Entry_Add(object oStore, string sArrayName, object oEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
SetLocalObject(oStore, sArrayName + IntToString(nArraySize), oEntry);
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
return (nArraySize);
|
|
}
|
|
|
|
void eas_OArray_Entry_Set(object oStore, string sArrayName, int nIndex, object oEntry)
|
|
{
|
|
if (eas_Array_GetSize(oStore, sArrayName) > nIndex)
|
|
{
|
|
SetLocalObject(oStore, sArrayName + IntToString(nIndex), oEntry);
|
|
}
|
|
}
|
|
|
|
object eas_OArray_Entry_Get(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
return (GetLocalObject(oStore, sArrayName + IntToString(nIndex)));
|
|
}
|
|
|
|
int eas_OArray_Entry_IndexOf(object oStore, string sArrayName, object oEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
if (eas_OArray_Entry_Get(oStore, sArrayName, nIndex) == oEntry)
|
|
{
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
void eas_OArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2)
|
|
{
|
|
object oEntry1 = eas_OArray_Entry_Get(oStore, sArrayName, nIndex1);
|
|
object oEntry2 = eas_OArray_Entry_Get(oStore, sArrayName, nIndex2);
|
|
eas_OArray_Entry_Set(oStore, sArrayName, nIndex1, oEntry2);
|
|
eas_OArray_Entry_Set(oStore, sArrayName, nIndex2, oEntry1);
|
|
}
|
|
|
|
void eas_OArray_Entry_Insert(object oStore, string sArrayName, int nIndex, object oEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
// Only able to insert something if it is within the array
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Increase the Array Size
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
|
|
// Add 1 to the index of each Entry before the Insert Position
|
|
int nOldIndex;
|
|
for (nOldIndex = nArraySize - 1; nOldIndex >= nIndex; nOldIndex--)
|
|
{
|
|
eas_OArray_Entry_Set(oStore, sArrayName, nOldIndex + 1, eas_OArray_Entry_Get(oStore, sArrayName, nOldIndex));
|
|
}
|
|
|
|
// Finally, set the inserted value
|
|
eas_OArray_Entry_Set(oStore, sArrayName, nIndex, oEntry);
|
|
}
|
|
}
|
|
|
|
void eas_OArray_Entry_Delete(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
// Only able to delete something if it is within the array
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Get the next entry and pull it to the deleted one until the end
|
|
int nNewIndex;
|
|
for (nNewIndex = nIndex; nNewIndex < nArraySize - 1; nNewIndex++)
|
|
{
|
|
eas_OArray_Entry_Set(oStore, sArrayName, nNewIndex, eas_OArray_Entry_Get(oStore, sArrayName, nNewIndex +1));
|
|
}
|
|
|
|
// Finally, delete the last entry and decrease the Array's Size
|
|
DeleteLocalObject(oStore, sArrayName + IntToString(nArraySize - 1));
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize - 1);
|
|
}
|
|
}
|
|
|
|
int eas_OArray_Entry_DeleteByValue(object oStore, string sArrayName, object oValue)
|
|
{
|
|
// Deletes an entry by Object
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
object oCompare;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
oCompare = eas_OArray_Entry_Get(oStore, sArrayName, nIndex);
|
|
if (oCompare == oValue)
|
|
{
|
|
eas_OArray_Entry_Delete(oStore, sArrayName, nIndex);
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
// LOCATION ARRAY
|
|
int eas_LArray_Entry_Add(object oStore, string sArrayName, location lEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
SetLocalLocation(oStore, sArrayName + IntToString(nArraySize), lEntry);
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
return (nArraySize);
|
|
}
|
|
|
|
void eas_LArray_Entry_Set(object oStore, string sArrayName, int nIndex, location lEntry)
|
|
{
|
|
if (eas_Array_GetSize(oStore, sArrayName) > nIndex)
|
|
{
|
|
SetLocalLocation(oStore, sArrayName + IntToString(nIndex), lEntry);
|
|
}
|
|
}
|
|
|
|
location eas_LArray_Entry_Get(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
return (GetLocalLocation(oStore, sArrayName + IntToString(nIndex)));
|
|
}
|
|
|
|
int eas_LArray_Entry_IndexOf(object oStore, string sArrayName, location lEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
if (eas_LArray_Entry_Get(oStore, sArrayName, nIndex) == lEntry)
|
|
{
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
void eas_LArray_Entry_Swap(object oStore, string sArrayName, int nIndex1, int nIndex2)
|
|
{
|
|
location lEntry1 = eas_LArray_Entry_Get(oStore, sArrayName, nIndex1);
|
|
location lEntry2 = eas_LArray_Entry_Get(oStore, sArrayName, nIndex2);
|
|
eas_LArray_Entry_Set(oStore, sArrayName, nIndex1, lEntry2);
|
|
eas_LArray_Entry_Set(oStore, sArrayName, nIndex2, lEntry1);
|
|
}
|
|
|
|
void eas_LArray_Entry_Insert(object oStore, string sArrayName, int nIndex, location lEntry)
|
|
{
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
// Only able to insert something if it is within the array
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Increase the Array Size
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize + 1);
|
|
|
|
// Add 1 to the index of each Entry before the Insert Position
|
|
int nOldIndex;
|
|
for (nOldIndex = nArraySize - 1; nOldIndex >= nIndex; nOldIndex--)
|
|
{
|
|
eas_LArray_Entry_Set(oStore, sArrayName, nOldIndex + 1, eas_LArray_Entry_Get(oStore, sArrayName, nOldIndex));
|
|
}
|
|
|
|
// Finally, set the inserted value
|
|
eas_LArray_Entry_Set(oStore, sArrayName, nIndex, lEntry);
|
|
}
|
|
}
|
|
|
|
void eas_LArray_Entry_Delete(object oStore, string sArrayName, int nIndex)
|
|
{
|
|
// Only able to delete something if it is within the array
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
if (nArraySize > nIndex)
|
|
{
|
|
// Get the next entry and pull it to the deleted one until the end
|
|
int nNewIndex;
|
|
for (nNewIndex = nIndex; nNewIndex < nArraySize - 1; nNewIndex++)
|
|
{
|
|
eas_LArray_Entry_Set(oStore, sArrayName, nNewIndex, eas_LArray_Entry_Get(oStore, sArrayName, nNewIndex +1));
|
|
}
|
|
|
|
// Finally, delete the last entry and decrease the Array's Size
|
|
DeleteLocalLocation(oStore, sArrayName + IntToString(nArraySize - 1));
|
|
eas_Array_SetSize(oStore, sArrayName, nArraySize - 1);
|
|
}
|
|
}
|
|
|
|
int eas_LArray_Entry_DeleteByValue(object oStore, string sArrayName, location lValue)
|
|
{
|
|
// Deletes an entry by Location Comparison
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nIndex;
|
|
location lCompare;
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
lCompare = eas_LArray_Entry_Get(oStore, sArrayName, nIndex);
|
|
if (lCompare == lValue)
|
|
{
|
|
eas_LArray_Entry_Delete(oStore, sArrayName, nIndex);
|
|
return (nIndex);
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
// GENERAL
|
|
void eas_Array_SetSize(object oStore, string sArrayName, int nArraySize)
|
|
{
|
|
SetLocalInt(oStore, sArrayName + EAS_ARRAY_SIZE, nArraySize);
|
|
}
|
|
|
|
int eas_Array_GetSize(object oStore, string sArrayName)
|
|
{
|
|
return (GetLocalInt(oStore, sArrayName + EAS_ARRAY_SIZE));
|
|
}
|
|
|
|
void eas_Array_SetType(object oStore, string sArrayName, int nArrayType)
|
|
{
|
|
SetLocalInt(oStore, sArrayName + EAS_ARRAY_TYPE, nArrayType);
|
|
}
|
|
|
|
int eas_Array_GetType(object oStore, string sArrayName)
|
|
{
|
|
return (GetLocalInt(oStore, sArrayName + EAS_ARRAY_TYPE));
|
|
}
|
|
|
|
void eas_Array_Delete(object oStore, string sArrayName, int bRealDelete = FALSE)
|
|
{
|
|
int nIndex;
|
|
int nArraySize = eas_Array_GetSize(oStore, sArrayName);
|
|
int nArrayType = eas_Array_GetType(oStore, sArrayName);
|
|
|
|
if (bRealDelete)
|
|
{
|
|
switch (nArrayType)
|
|
{
|
|
case EAS_ARRAY_TYPE_STRING:
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
DeleteLocalString(oStore, sArrayName + IntToString(nIndex));
|
|
}
|
|
break;
|
|
case EAS_ARRAY_TYPE_INTEGER:
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
DeleteLocalInt(oStore, sArrayName + IntToString(nIndex));
|
|
}
|
|
break;
|
|
case EAS_ARRAY_TYPE_FLOAT:
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
DeleteLocalFloat(oStore, sArrayName + IntToString(nIndex));
|
|
}
|
|
break;
|
|
case EAS_ARRAY_TYPE_OBJECT:
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
DeleteLocalObject(oStore, sArrayName + IntToString(nIndex));
|
|
}
|
|
break;
|
|
case EAS_ARRAY_TYPE_LOCATION:
|
|
for (nIndex = 0; nIndex < nArraySize; nIndex++)
|
|
{
|
|
DeleteLocalLocation(oStore, sArrayName + IntToString(nIndex));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
DeleteLocalInt(oStore, sArrayName + EAS_ARRAY_NAME);
|
|
DeleteLocalInt(oStore, sArrayName + EAS_ARRAY_SIZE);
|
|
DeleteLocalInt(oStore, sArrayName + EAS_ARRAY_TYPE);
|
|
}
|
|
|
|
int eas_Array_Exists(object oStore, string sArrayName)
|
|
{
|
|
if (GetLocalInt(oStore, sArrayName + EAS_ARRAY_NAME) != EAS_ARRAY_NOTEXIST)
|
|
{
|
|
return (TRUE);
|
|
}
|
|
|
|
return (FALSE);
|
|
}
|
|
|
|
int eas_Array_Create(object oStore, string sArrayName, int nArrayType = EAS_ARRAY_TYPE_STRING)
|
|
{
|
|
// If the Array already exists, return false
|
|
if (GetLocalInt(oStore, sArrayName + EAS_ARRAY_NAME) != EAS_ARRAY_NOTEXIST)
|
|
{
|
|
return (FALSE);
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oStore, sArrayName + EAS_ARRAY_NAME, EAS_ARRAY_EXIST);
|
|
eas_Array_SetSize(oStore, sArrayName, 0);
|
|
eas_Array_SetType(oStore, sArrayName, nArrayType);
|
|
return (TRUE);
|
|
}
|
|
}
|