reman3/Rayman_X/cpa/tempgrp/SCR/SCR_Vars.c

180 lines
6.1 KiB
C

/*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
* SCR_Vars.c
* To manage global script variables.
*
* Scripts, Beaudet Christophe
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
/*
*=================================================================================================
* Includes.
*=================================================================================================
*/
#include <memory.h>
#include "SCR.h"
/*
*=================================================================================================
* Global variables.
*=================================================================================================
*/
/*
* Array of all variables.
*/
SCR_tdst_DyAr_Description SCR_g_st_Vars_Array;
/*
*=================================================================================================
* Functions.
*=================================================================================================
*/
/*
*-------------------------------------------------------------------------------------------------
* Init.
*-------------------------------------------------------------------------------------------------
*/
void fn_v_Vars_InitModule(void)
{
fn_v_DyAr_InitArray(&SCR_g_st_Vars_Array);
}
/*
*-------------------------------------------------------------------------------------------------
* Close.
*-------------------------------------------------------------------------------------------------
*/
void fn_v_Vars_CloseModule(void)
{
SCR_M_DyAr_DeleteAllElements(SCR_tdst_Vars_Description, &SCR_g_st_Vars_Array, ;);
}
/*===============================================================================================*/
/*
*-------------------------------------------------------------------------------------------------
* To add one variable.
* _p_szName : Name of variable to add.
* _p_szValue : Value of variable to add.
* Returns allocated structure.
*-------------------------------------------------------------------------------------------------
*/
SCR_tdst_Vars_Description *fnp_st_Vars_Add
(
char *_p_szName,
char *_p_szValue
)
{
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
unsigned int uiPos;
SCR_tdst_Vars_Description *p_stPointer;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
SCR_M_Dbg_Assert_P(_p_szName != NULL);
SCR_M_Dbg_Assert_P(_p_szValue != NULL);
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*
* Add element in array.
*/
SCR_M_DyAr_AddElement(SCR_tdst_Vars_Description, uiPos, p_stPointer, SCR_g_st_Vars_Array);
/*
* Initialize structure.
*/
p_stPointer->stHeader.uiIndexInArray = uiPos;
strcpy(p_stPointer->a_szVarName, _p_szName);
strcpy(p_stPointer->a_szVarValue, _p_szValue);
/*
* Return structure.
*/
return p_stPointer;
}
/*
*-------------------------------------------------------------------------------------------------
* To delete a variable.
* _p_stVar : Variable to delete.
*-------------------------------------------------------------------------------------------------
*/
void fn_v_Vars_Delete(SCR_tdst_Vars_Description *_p_stVar)
{
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
SCR_M_Dbg_AssertStruct_P(SCR_tdst_Vars_Description, _p_stVar);
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
SCR_M_DyAr_DeleteElement
(
SCR_tdst_Vars_Description,
_p_stVar->stHeader.uiIndexInArray,
&SCR_g_st_Vars_Array,
;);
}
/*
*-------------------------------------------------------------------------------------------------
* To search a variable.
* _p_szName : Name of variable to search.
* Returns structure found, NULL if not.
*-------------------------------------------------------------------------------------------------
*/
SCR_tdst_Vars_Description *fnp_st_Vars_Search(char *_p_szName)
{
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
unsigned int uiPos;
SCR_tdst_Vars_Description *p_stPointer = NULL;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
SCR_M_Dbg_Assert_P(_p_szName != NULL);
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*
* Search variable and return pointer.
*/
SCR_M_DyAr_SearchElement
(
SCR_tdst_Vars_Description,
uiPos,
p_stPointer,
SCR_g_st_Vars_Array,
(!strcmpi(p_stPointer->a_szVarName, _p_szName))
);
return p_stPointer;
}
/*
**************************************************************************************************
**************************************************************************************************
**************************************************************************************************
**************************************************************************************************
*/
/*
*-------------------------------------------------------------------------------------------------
* To reduce memory size.
*-------------------------------------------------------------------------------------------------
*/
void fn_v_Vars_ReduceMemory(void)
{
SCR_M_DyAr_PackArray(SCR_tdst_Vars_Description, SCR_g_st_Vars_Array, ;);
}
/*
*-------------------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------------------
*/
void fn_v_Vars_DeleteWithMemLevel(unsigned char _ucMin, unsigned char _ucMax)
{
SCR_M_DyAr_DeleteElementWithMemLevel
(
SCR_tdst_Vars_Description,
SCR_g_st_Vars_Array,
;,
_ucMin,
_ucMax
);
}