mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 20:13:13 +03:00
68 lines
1.5 KiB
Plaintext
68 lines
1.5 KiB
Plaintext
#define GET_COUNT(d) ((d) select 0)
|
|
#define SET_COUNT(d, c) ((d) set [0, c])
|
|
#define GET_SIZE(d) (count GET_KEYS(d))
|
|
#define GET_KEYS(d) ((d) select 1)
|
|
#define GET_VALUES(d) ((d) select 2)
|
|
#define GET_INDEX(d, k) (GET_KEYS(d) find (k))
|
|
|
|
dz_fn_dictionary_containsKey =
|
|
{
|
|
GET_INDEX(_this select 0, _this select 1) != -1
|
|
};
|
|
|
|
dz_fn_dictionary_add =
|
|
{
|
|
if (GET_INDEX(_this select 0, _this select 1) == -1) exitWith {false};
|
|
|
|
private "_index";
|
|
_index = count GET_KEYS(_this select 0);
|
|
GET_KEYS(_this select 0) set [_index, _this select 1];
|
|
GET_VALUES(_this select 0) set [_index, _this select 2];
|
|
SET_COUNT(_this select 0, GET_COUNT(_this select 0) + 1);
|
|
|
|
true
|
|
};
|
|
|
|
dz_fn_dictionary_get =
|
|
{
|
|
private "_index";
|
|
_index = GET_INDEX(_this select 0, _this select 1);
|
|
if (_index == -1) exitWith {nil};
|
|
GET_VALUES(_this select 0) select _index
|
|
};
|
|
|
|
dz_fn_dictionary_remove =
|
|
{
|
|
private "_index";
|
|
_index = GET_INDEX(_this select 0, _this select 1);
|
|
if (_index == -1) exitWith {false};
|
|
GET_KEYS(_this select 0) set [_index, nil];
|
|
GET_VALUES(_this select 0) set [_index, nil];
|
|
SET_COUNT(_this select 0, GET_COUNT(_this select 0) - 1);
|
|
|
|
true
|
|
};
|
|
|
|
dz_fn_dictionary_compact =
|
|
{
|
|
private ["_keys", "_values", "_i"];
|
|
_keys = [];
|
|
_values = [];
|
|
_keys resize (_this);
|
|
_values resize (_this);
|
|
_i = 0;
|
|
|
|
{
|
|
if (!isNil "_x") then
|
|
{
|
|
_keys set [_i, _x];
|
|
_values set [_i, GET_VALUES(_this) select _forEachIndex];
|
|
_i = _i + 1;
|
|
};
|
|
}
|
|
foreach GET_KEYS(_this);
|
|
|
|
_this set [1, _keys];
|
|
_this set [2, _values];
|
|
};
|