s4g  0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.

Сборщик мусора Подробнее...

#include <s4g_gc.h>

Открытые члены

void clear ()
 очистка всех данных (кроме внутренних констант)
 
void releaseEmptyPages ()
 удаление пустых страниц памяти
 
s4g_TablegetGtable ()
 возвращает таблицу глобального пространства имен Подробнее...
 
s4g_VariablegetGvar ()
 возвращает переменную со значением таблицы глобального пространства имен Подробнее...
 
s4g_VariablecreateVarData ()
 создать переменную и выделить память под значение
 
s4g_DatacreateDataCopy (s4g_Data *pDataSrc, int typeData=S4G_GC_TYPE_DATA_FREE)
 создание значения на основании уже существующего значения, по сути копия, ссылка нулевая
 
s4g_VariablecreateVarDataCopy (s4g_Variable *pVarSrc, int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE, bool canCopyData=false)
 создание копии переменной со значение, canCopyData - копировать ли данные, или просто присвоить (без изменнеий счетчика)
 
s4g_VariablecreateVarNull (int typeVar=S4G_GC_TYPE_VAR_FREE)
 создать переменную со значением null (то есть пустую переменную)
 
s4g_VariablecreateVarPdata (s4g_pdata pdata, int typeData=S4G_GC_TYPE_VAR_FREE)
 создать переменную со значением pdata.
 
s4g_VariablecreateVarTableEmpty (int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением "пустая таблица".
 
s4g_VariablecreateVarTable (s4g_Table *pTable, int typeVar=S4G_GC_TYPE_VAR_FREE)
 создать переменную со значением уже существующей таблицы
 
s4g_VariablecreateVarArrayEmpty (int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением "пустой массив".
 
s4g_VariablecreateVarSfuncEmpty (int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением скриптовой функции (пустой)
 
s4g_VariablecreateVarSfunc (s4g_Sfunction *func, int typeVar=S4G_GC_TYPE_VAR_FREE)
 создать переменную со значением уже существующей скриптовой функции
 
s4g_VariablecreateVarInt (s4g_int num, int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением num.
 
s4g_VariablecreateVarUint (s4g_uint num, int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением num.
 
s4g_VariablecreateVarFloat (s4g_float num, int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением num.
 
s4g_VariablecreateVarBool (s4g_bool bf, int typeVar=S4G_GC_TYPE_VAR_FREE)
 создать переменную со значением bf.
 
s4g_VariablecreateVarString (const char *szString, int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением szString.
 
s4g_VariablecreateVarCfunc (s4g_c_function func, int typeVar=S4G_GC_TYPE_VAR_FREE)
 создать переменную со значением С++ функция
 
s4g_VariablecreateVarClassEmpty (const char *szName, int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением класса
 
s4g_VariablecreateVarClassObjectEmpty (s4g_Variable *pVarClass, int typeVar=S4G_GC_TYPE_VAR_FREE, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать переменную со значением объект класса
 
s4g_DatacreateDataInt (s4g_int num, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать int со значением num.
 
s4g_DatacreateDataUint (s4g_uint num, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать uint со значением num.
 
s4g_DatacreateDataFloat (s4g_float num, int typeData=S4G_GC_TYPE_DATA_FREE)
 создать float со значением num.
 
s4g_VariablegetVarNull ()
 возвращает уже созданную переменную с null значением
 
s4g_VariablegetVarBool (bool bf)
 возвращает уже созданную переменную с bool значением
 
const char * getVarName (s4g_Variable *pVar, char *szName=0)
 в szName запишет имя переменной по ее указателю (поиск перебором), в ppOwner запишет владельца
 
void assign (s4g_Variable *pVarDest, s4g_Variable *pVarSrc)
 присвоить в pVarDest данные из pVarSrc.
 
s4g_int getInt (s4g_Variable *pVar)
 возвращает приведенное значение переменной к int.
 
s4g_uint getUint (s4g_Variable *pVar)
 возвращает приведенное значение переменной к uint.
 
s4g_float getFloat (s4g_Variable *pVar)
 возвращает приведенное значение переменной к float.
 
const char * getStr (s4g_Variable *pVar)
 возвращает приведенное значение переменной к константной строке
 
String * getStr2 (s4g_Variable *pVar)
 возвращает приведенное значение переменной к указателю на класс строки, изменение которого приведет к изменениям в строке
 
s4g_TablegetTable (s4g_Variable *pVar)
 возвращает приведенное значение переменной к table.
 
s4g_ArraygetArray (s4g_Variable *pVar)
 возвращает приведенное значение переменной к array.
 
s4g_SfunctiongetSfunc (s4g_Variable *pVar)
 возвращает приведенное значение переменной к скриптовой функции
 
s4g_c_function getCfunc (s4g_Variable *pVar)
 возвращает приведенное значение переменной к C/C++ функции
 
s4g_bool getBool (s4g_Variable *pVar)
 возвращает приведенное значение переменной к bool.
 
s4g_pdata getPdata (s4g_Variable *pVar)
 возвращает приведенное значение переменной к юзердате
 
s4g_ClassgetClass (s4g_Variable *pVar)
 возвращает приведенное значение переменной к class.
 
s4g_ClassObjectgetClassObject (s4g_Variable *pVar)
 возвращает приведенное значение переменной к объекту класса
 
S4G_TYPE getType (s4g_Variable *pVar)
 получить тип переменной
 
s4g_OwnerVar * getContextOwner (ID id)
 возвращает указатель на s4g_OwnerVar контекста по id.
 
s4g_OwnerVar * getDataOwner (ID id)
 возвращает указатель на s4g_OwnerVar значения по id.
 
ID createContext (s4g_Table **ppTable, S4G_CONTEXT_TYPE_WORK typeWork=S4G_CONTEXT_TYPE_WORK_ONLINE)
 создать и добавить новый контекст, возвращает id контекста, а в ppTable записывает указатель на таблицу
 
ID addContext (s4g_Table *pTable, S4G_CONTEXT_TYPE_WORK typeWork=S4G_CONTEXT_TYPE_WORK_ONLINE)
 добавить контекст основанный на таблице, возвращает id добавленного контекста, используется для замыканий
 
void activatePrev (ID idLastContext)
 активирует предыдущие контексты до idLastContext (это значение было получено при вызове deactivatePrev)
 
ID deactivatePrev ()
 деактивировать все предыдущие контексты, возвращает номер контекста который деактивирован последним
 
void deleteTopContext (bool canClear)
 пометить контекст как ненужный и при сборке мусора снести все с него
 
void removeTableInContext (ID id)
 заменить таблицу в контексте на контекстную таблицу, ибо если этот вызов произошел то у нас стояла замыкающая таблица
 
void clearTopContext ()
 очистить верхний контекст
 
bool add2ConstContext (const char *szName, s4g_Variable *pVar)
 добавить в константный контекст переменную и установить ей имя
 
s4g_VariablegetFromConstContext (const char *szName)
 получить переменную из константного контекста
 
ID existsInAccessibleContexts (const char *szName, s4g_Variable **ppVar)
 существует ли переменная с именем szName во всех доступных контекстах, если да то возвращает id контекста в котором найдено, в ppVar записывает указатель на переменную, если не найдено то возвращает -1.
 
s4g_VariablegetVarFromContextByNum (ID idRelativeTopContext, ID idVar)
 получить переменную по idVar из контекста, которые расположен на top - idRelativeTopContext позиции относительно верхнего контекста
 
void deleteData (s4g_Data *pData)
 удаления значения
 
void deleteVar (s4g_Variable *pVar)
 удаление переменной
 
void collectGarbage ()
 запуск сборки мусора
 
void fixationConstVarData ()
 фиксация конечной позиции констант (окончание загрузки скрипта)
 
int getMemCountBusy ()
 возращает количество занятой памяти в байтах
 
int getMemCountAllocated ()
 возращает количество выделенной (в том числе и зарезервированной) памяти в байтах
 

Защищенные члены

void allocMemContexts (int iCount=S4G_ADD_MEM_CONTEXTS)
 выделить дополнительную память для контекстов
 
void addConstContext ()
 добавить константный(всегда доступный) контекст, используется для бибилиотек языка
 

Защищенные данные

ID m_idVarNULL
 id null переменной в массиве переменных
 
ID m_idVarTRUE
 id true переменной в массиве переменных
 
ID m_idVarFALSE
 id false переменной в массиве переменных
 
ID m_idDataNULL
 id null переменной в массиве данных
 
ID m_idDataTRUE
 id true переменной в массиве данных
 
ID m_idDataFALSE
 id false переменной в массиве данных
 
s4g_Tablem_pGtable
 глобальное пространство имен _g.
 
s4g_Variablem_pGvar
 переменная хранящая в себе глобальное пространство имен
 
s4g_Stack< s4g_Variable *, S4G_RESERVE_VALUEm_aVars
 массив переменных
 
s4g_Stack< s4g_Data *, S4G_RESERVE_DATAm_aData
 массив данных
 
s4g_Stack< s4g_Context *, S4G_RESERVE_CONTEXTSm_aCurrContexts
 массив подключенных в данный момент контекстов
 
int m_iCountCurrContexts = 0
 текущий размер массива контекстов
 
MemAlloc< s4g_Variable, S4G_RESERVE_VALUE_MEMm_oMemVar
 резервация памяти для значений
 
MemAlloc< s4g_Data, S4G_RESERVE_DATA_MEMm_oMemData
 резервация памяти для данных
 
MemAlloc< s4g_Context, S4G_RESERVE_CONTEXTS_MEMm_oMemContext
 резервация памяти для контекстов
 
MemAlloc< String, S4G_RESERVE_STRING_MEMm_oMemString
 резервация памяти для строк
 
MemAlloc< s4g_Sfunction, S4G_RESERVE_SFUNC_MEMm_oMemSFunc
 резервация памяти для скриптовых функций
 
MemAlloc< s4g_Table, S4G_RESERVE_TABLE_MEMm_oMemTable
 резервация памяти для таблиц
 
MemAlloc< s4g_Array, S4G_RESERVE_TABLE_MEMm_oMemArray
 резервация памяти для массивов
 
MemAlloc< s4g_Class, S4G_RESERVE_CLASS_MEMm_oMemClass
 резервация памяти для классов
 
MemAlloc< s4g_ClassObject, S4G_RESERVE_CLASS_OBJECT_MEMm_oMemObjClass
 резервация памяти для объектов классов
 
ID m_idConstContext
 идентификатор константного контекста
 
ID m_idFixedData
 последний ключ в таблице с данными + 1 (для того чтобы не анализиировать константные данные при сборке мусора)
 
ID m_idFixedVars
 последний ключ в таблице со значениями + 1 (для того чтобы не анализиировать константные значения при сборке мусора)
 

Друзья

class s4g_Main
 

Подробное описание

Сборщик мусора

Необходимо сделать:
Сделать защиту от изменения константных переменных/значений null false true

Методы

◆ getGtable()

s4g_Table* s4g_GC::getGtable ( )
inline

возвращает таблицу глобального пространства имен

Предупреждения
Желательно оперировать доступными функциями обертками, но если очень хочется ...

◆ getGvar()

s4g_Variable* s4g_GC::getGvar ( )
inline

возвращает переменную со значением таблицы глобального пространства имен

Предупреждения
Желательно оперировать доступными функциями обертками, но если очень хочется ...

Объявления и описания членов классов находятся в файлах: