Всем спасибо, но времени разбираться с недокументированными классами не было, а типы структур данных уже известны - решил сам набросать метод посчитывающий занимаемую память. Считает для::Container, Date, Integer, Real, String, Array, Struct, Map. Для остальных типов возвратит 0.
PHP код:
static int getMemSizeOfItem(anyType _item)
{
int i;
int result;
Array arr;
Struct struct;
Map map;
MapIterator mi;
;
switch (typeOf(_item))
{
case types::Container :
result = 0;
for (i=1; i<=conLen(_item); i++)
{
result+=RTRTimeAccountProcess::getMemSizeOfItem(conPeek(_item, i));
}
break;
case types::Date : result = 4;
break;
case types::Integer : result = 4;
break;
case types::Real : result = 8;
break;
case types::String : result = strLen(_item);
break;
case types::Class :
switch (classIdGet(_item))
{
case classNum(Array) :
arr = _item;
for (i=1; i<=arr.lastIndex(); i++)
{
result+=RTRTimeAccountProcess::getMemSizeOfItem(arr.value(i));
}
break;
case classNum(Struct) :
struct = _item;
for (i=1; i<=struct.fields(); i++)
{
result+=RTRTimeAccountProcess::getMemSizeOfItem(struct.valueIndex(i));
}
break;
case classNum(Map) :
map = _item;
mi = new MapIterator(map);
while (mi.more())
{
result+=RTRTimeAccountProcess::getMemSizeOfItem(mi.key());
result+=RTRTimeAccountProcess::getMemSizeOfItem(mi.value());
mi.next();
}
break;
}
break;
}
return result;
}