35 lines
1.2 KiB
C
35 lines
1.2 KiB
C
|
#ifndef FALLOUT_SFALL_ARRAYS_H_
|
||
|
#define FALLOUT_SFALL_ARRAYS_H_
|
||
|
|
||
|
#include "interpreter.h"
|
||
|
|
||
|
namespace fallout {
|
||
|
|
||
|
#define SFALL_ARRAYFLAG_ASSOC (1) // is map
|
||
|
#define SFALL_ARRAYFLAG_CONSTVAL (2) // don't update value of key if the key exists in map
|
||
|
#define SFALL_ARRAYFLAG_RESERVED (4)
|
||
|
|
||
|
using ArrayId = unsigned int;
|
||
|
|
||
|
bool sfallArraysInit();
|
||
|
void sfallArraysReset();
|
||
|
void sfallArraysExit();
|
||
|
ArrayId CreateArray(int len, unsigned int flags);
|
||
|
ArrayId CreateTempArray(int len, unsigned int flags);
|
||
|
ProgramValue GetArrayKey(ArrayId arrayId, int index, Program* program);
|
||
|
int LenArray(ArrayId arrayId);
|
||
|
ProgramValue GetArray(ArrayId arrayId, const ProgramValue& key, Program* program);
|
||
|
void SetArray(ArrayId arrayId, const ProgramValue& key, const ProgramValue& val, bool allowUnset, Program* program);
|
||
|
void FreeArray(ArrayId arrayId);
|
||
|
void FixArray(ArrayId id);
|
||
|
void ResizeArray(ArrayId arrayId, int newLen);
|
||
|
void DeleteAllTempArrays();
|
||
|
int StackArray(const ProgramValue& key, const ProgramValue& val, Program* program);
|
||
|
ProgramValue ScanArray(ArrayId arrayId, const ProgramValue& val, Program* program);
|
||
|
|
||
|
ArrayId StringSplit(const char* str, const char* split);
|
||
|
|
||
|
} // namespace fallout
|
||
|
|
||
|
#endif /* FALLOUT_SFALL_ARRAYS_H_ */
|