223 lines
8.1 KiB
C
223 lines
8.1 KiB
C
/*
|
|
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
* SCR_Cxt.h
|
|
* Scripts, Beaudet Christophe
|
|
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
*
|
|
*/
|
|
|
|
#ifndef __SCR_Cxt_h__Types
|
|
#define __SCR_Cxt_h__Types
|
|
|
|
#ifndef __Only_Types__
|
|
#define __SCR_Cxt_h__Undef
|
|
#define __Only_Types__
|
|
#endif /* !__Only_Types__ */
|
|
|
|
/*
|
|
*=================================================================================================
|
|
* Includes.
|
|
*=================================================================================================
|
|
*/
|
|
|
|
#include "SCR_Cfg.h"
|
|
#include "SCR_DyAr.h"
|
|
#include "SCR_Bin.h"
|
|
|
|
#ifdef __SCR_Cxt_h__Undef
|
|
#undef __Only_Types__
|
|
#undef __SCR_Cxt_h__Undef
|
|
#endif /* __SCR_Cxt_h__Undef */
|
|
|
|
/*
|
|
*=================================================================================================
|
|
* Constants.
|
|
*=================================================================================================
|
|
*/
|
|
|
|
/*
|
|
* To export code.
|
|
*/
|
|
#undef CPA_EXPORT
|
|
#if defined(CPA_WANTS_IMPORT)
|
|
#define CPA_EXPORT __declspec(dllimport)
|
|
#elif defined(CPA_WANTS_EXPORT)
|
|
#define CPA_EXPORT __declspec(dllexport)
|
|
#else /* CPA_WANTS_IMPORT */
|
|
#define CPA_EXPORT
|
|
#endif /* CPA_WANTS_IMPORT */
|
|
|
|
/*
|
|
*=================================================================================================
|
|
* Types.
|
|
*=================================================================================================
|
|
*/
|
|
|
|
/*
|
|
* To define a current position in file.
|
|
*/
|
|
typedef struct SCR_tdst_Cxt_Position_
|
|
{
|
|
unsigned int uiLineInFile; /* Line in script file */
|
|
long lAfterSeekInFile; /* Position after line in file */
|
|
unsigned int uiLevel; /* Level of section */
|
|
} SCR_tdst_Cxt_Position;
|
|
|
|
/*
|
|
* All buffers.
|
|
* Static ones.
|
|
*/
|
|
typedef struct SCR_tdst_Cxt_Buffers_
|
|
{
|
|
char a_szBufferCompleteName[SCR_CV_ui_Cfg_MaxLenName];
|
|
char a_szBufferName[SCR_CV_ui_Cfg_MaxLenAtomicName];
|
|
char a_szBufferNameExt[SCR_CV_ui_Cfg_MaxLenWord];
|
|
char a_szBufferFormat[SCR_CV_ui_Cfg_MaxLenFormat];
|
|
char a_szBufferParams[SCR_CV_ui_Cfg_MaxLenParams];
|
|
} SCR_tdst_Cxt_Buffers;
|
|
|
|
/* Dynmamic ones : When size of data inside won't change */
|
|
typedef struct SCR_tdst_Cxt_DynBuffers_
|
|
{
|
|
char *p_szBufferCompleteName;
|
|
char *p_szBufferName;
|
|
char *p_szBufferNameExt;
|
|
char a_szBufferFormat[SCR_CV_ui_Cfg_MaxLenFormat]; /* Always static */
|
|
char a_szBufferParams[SCR_CV_ui_Cfg_MaxLenParams]; /* Always static */
|
|
} SCR_tdst_Cxt_DynBuffers;
|
|
|
|
/*
|
|
* Structure that describes a result.
|
|
*/
|
|
typedef struct SCR_tdst_Cxt_Values_
|
|
{
|
|
unsigned long a_ulValues[SCR_CV_ui_Cfg_MaxResults]; /* Unsigned long values */
|
|
double a_dfValues[SCR_CV_ui_Cfg_MaxResults]; /* Double values */
|
|
} SCR_tdst_Cxt_Values;
|
|
|
|
/*
|
|
* To describe what is in the buffers of parser.
|
|
*/
|
|
typedef enum SCR_tde_Cxt_ParseType_
|
|
{
|
|
SCR_EPT_Cxt_None,
|
|
SCR_EPT_Cxt_EOF, /* MP: BINARY*/
|
|
SCR_EPT_Cxt_BeginSection,
|
|
SCR_EPT_Cxt_EndSection,
|
|
SCR_EPT_Cxt_Entry,
|
|
SCR_EPT_Cxt_Directive,
|
|
} SCR_tde_Cxt_ParseType;
|
|
|
|
/*
|
|
* Structure that describes a context.
|
|
*/
|
|
typedef struct SCR_tdst_Cxt_Description_
|
|
{
|
|
SCR_tdst_DyAr_Header stHeader; /* Header of element */
|
|
char cForSection; /* It's a file or a section */
|
|
SCR_tdst_Cxt_Buffers stBuffers; /* All buffers */
|
|
SCR_tdst_Cxt_Buffers stBuffersCopy; /* All buffers */
|
|
SCR_tdst_Cxt_Position stPosition; /* Current position in file */
|
|
struct SCR_tdst_File_Open_ *p_stOpenFile; /* Current open file */
|
|
struct SCR_tdst_Anl_SectionDes_ *p_stSectionDes; /* Current section description */
|
|
struct SCR_tdst_Sect_Open_ *p_stOpenSection; /* Current open section */
|
|
SCR_tdst_Cxt_Values stContextValues; /* Results for that context */
|
|
SCR_tdst_Cxt_Values stFileValues; /* Results for open file */
|
|
SCR_tdst_Cxt_Values stSectionValues; /* Results for open section */
|
|
char cFileValuesValid; /* Values for file are valid */
|
|
char cSectionValuesValid; /* Values for section are valid */
|
|
unsigned short uwDynamicFlags; /* Current dynamic flags */
|
|
SCR_tde_Cxt_ParseType eParseType; /* Type of parsing results */
|
|
} SCR_tdst_Cxt_Description;
|
|
|
|
#endif /* !__SCR_Cxt_h__Types */
|
|
|
|
/*
|
|
*=================================================================================================
|
|
* Global variables.
|
|
*=================================================================================================
|
|
*/
|
|
|
|
#if !defined(__SCR_Cxt_h__Globals) && !defined(__Only_Types__)
|
|
#define __SCR_Cxt_h__Globals
|
|
|
|
CPA_EXPORT extern SCR_tdst_DyAr_Description SCR_g_st_Cxt_Array;
|
|
|
|
#endif /* !__SCR_Cxt_h__Globals && !__Only_Types__ */
|
|
|
|
/*
|
|
*=================================================================================================
|
|
* Macros.
|
|
*=================================================================================================
|
|
*/
|
|
|
|
#if !defined(__SCR_Cxt_h__Macros) && !defined(__Only_Types__)
|
|
#define __SCR_Cxt_h__Macros
|
|
|
|
/*
|
|
* Copy a buffer to another.
|
|
*/
|
|
#define SCR_M_Cxt_CopyBuffers(_Dest, _Src)\
|
|
{\
|
|
strcpy((_Dest)->a_szBufferCompleteName, (_Src)->a_szBufferCompleteName);\
|
|
strcpy((_Dest)->a_szBufferName, (_Src)->a_szBufferName);\
|
|
strcpy((_Dest)->a_szBufferNameExt, (_Src)->a_szBufferNameExt);\
|
|
memcpy((_Dest)->a_szBufferFormat, (_Src)->a_szBufferFormat, SCR_CV_ui_Cfg_MaxLenLine * sizeof(char));\
|
|
memcpy((_Dest)->a_szBufferParams, (_Src)->a_szBufferParams, SCR_CV_ui_Cfg_MaxLenLine * sizeof(char));\
|
|
}
|
|
|
|
/* With allocations */
|
|
#define SCR_M_Cxt_CopyBuffersToDyn(_Dest, _Src)\
|
|
{\
|
|
SCR_M_Mem_Alloc(char, (_Dest)->p_szBufferCompleteName, strlen((_Src)->a_szBufferCompleteName) + 1);\
|
|
SCR_M_Mem_Alloc(char, (_Dest)->p_szBufferName, strlen((_Src)->a_szBufferName) + 1);\
|
|
SCR_M_Mem_Alloc(char, (_Dest)->p_szBufferNameExt, strlen((_Src)->a_szBufferNameExt) + 1);\
|
|
strcpy((_Dest)->p_szBufferCompleteName, (_Src)->a_szBufferCompleteName);\
|
|
strcpy((_Dest)->p_szBufferName, (_Src)->a_szBufferName);\
|
|
strcpy((_Dest)->p_szBufferNameExt, (_Src)->a_szBufferNameExt);\
|
|
memcpy((_Dest)->a_szBufferFormat, (_Src)->a_szBufferFormat, SCR_CV_ui_Cfg_MaxLenLine * sizeof(char));\
|
|
memcpy((_Dest)->a_szBufferParams, (_Src)->a_szBufferParams, SCR_CV_ui_Cfg_MaxLenLine * sizeof(char));\
|
|
}
|
|
|
|
#define SCR_M_Cxt_FreeDynBuffers(_Src)\
|
|
{\
|
|
SCR_M_Mem_Free((_Src)->p_szBufferCompleteName);\
|
|
SCR_M_Mem_Free((_Src)->p_szBufferName);\
|
|
SCR_M_Mem_Free((_Src)->p_szBufferNameExt);\
|
|
}
|
|
|
|
#define SCR_M_Cxt_CopyDynToBuffers(_Dest, _Src)\
|
|
{\
|
|
strcpy((_Dest)->a_szBufferCompleteName, (_Src)->p_szBufferCompleteName);\
|
|
strcpy((_Dest)->a_szBufferName, (_Src)->p_szBufferName);\
|
|
strcpy((_Dest)->a_szBufferNameExt, (_Src)->p_szBufferNameExt);\
|
|
memcpy((_Dest)->a_szBufferFormat, (_Src)->a_szBufferFormat, SCR_CV_ui_Cfg_MaxLenLine * sizeof(char));\
|
|
memcpy((_Dest)->a_szBufferParams, (_Src)->a_szBufferParams, SCR_CV_ui_Cfg_MaxLenLine * sizeof(char));\
|
|
}
|
|
|
|
/*
|
|
* Get current context.
|
|
*/
|
|
#define SCR_M_Cxt_GetCurrentContext() ((int) (SCR_g_st_Cxt_Array.uiNumValues - 1))
|
|
|
|
#endif /* !__SCR_Cxt_h__Macros && !__Only_Types__ */
|
|
|
|
/*
|
|
*=================================================================================================
|
|
* Protos.
|
|
*=================================================================================================
|
|
*/
|
|
|
|
#if !defined(__SCR_Cxt_h__Protos) && !defined(__Only_Types__)
|
|
#define __SCR_Cxt_h__Protos
|
|
|
|
extern void fn_v_Cxt_InitModule(void);
|
|
extern void fn_v_Cxt_CloseModule(void);
|
|
|
|
extern SCR_tdst_Cxt_Description *fnp_st_Cxt_Add(void);
|
|
extern void fn_v_Cxt_DeleteLast(void);
|
|
|
|
CPA_EXPORT extern SCR_tdst_Cxt_Description *fnp_st_Cxt_Compute(int);
|
|
|
|
#endif /* !__SCR_Cxt_h__Protos && !__Only_Types__ */
|