📄 sx_defs.h
字号:
ST_RET (*u_sx_el_start_fun) (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag), ST_RET (*u_sx_el_end_fun) (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag));ST_RET sx_parseEx_mt (ST_CHAR *fileName, ST_INT numItems, SX_ELEMENT *itemTbl, ST_VOID *usr, ST_RET (*u_sx_el_start_fun) (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag), ST_RET (*u_sx_el_end_fun) (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag));ST_VOID sx_push (SX_DEC_CTRL *sxDecCtrl, ST_INT numItems, SX_ELEMENT *itemTbl, ST_BOOLEAN auto_pop);ST_VOID sx_pop (SX_DEC_CTRL *sxDecCtrl);ST_RET sx_get_entity (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *destBuf, ST_INT destLen, ST_INT *lenOut);ST_RET sx_get_int (SX_DEC_CTRL *sxDecCtrl, ST_INT *out_ptr);ST_RET sx_get_double (SX_DEC_CTRL *sxDecCtrl, ST_DOUBLE *out_ptr);ST_RET sx_get_uchar (SX_DEC_CTRL *sxDecCtrl, ST_UCHAR *out_ptr);ST_RET sx_get_int16 (SX_DEC_CTRL *sxDecCtrl, ST_INT16 *out_ptr);ST_RET sx_get_long (SX_DEC_CTRL *sxDecCtrl, ST_LONG *out_ptr);ST_RET sx_get_ulong (SX_DEC_CTRL *sxDecCtrl, ST_UINT32 *out_ptr);ST_RET sx_get_bool (SX_DEC_CTRL *sxDecCtrl, ST_BOOLEAN *out_ptr);ST_RET sx_get_time (SX_DEC_CTRL *sxDecCtrl, time_t *out_ptr);ST_RET sx_get_time_ex (SX_DEC_CTRL *sxDecCtrl, time_t *out_ptr, long *microseconds);ST_RET sx_get_uint (SX_DEC_CTRL *sxDecCtrl, ST_UINT *out_ptr);ST_RET sx_get_alloc_string (SX_DEC_CTRL *sxDecCtrl, ST_CHAR **strOut);ST_RET sx_get_string_ptr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR **strOut, ST_INT *lenOut);ST_RET sx_get_string (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *dest, ST_INT *lenOut);ST_VOID sx_format_string (ST_CHAR *dest, ST_CHAR *src);ST_RET sx_get_bitstring (SX_DEC_CTRL *sxDecCtrl, ST_INT *dest, ST_INT *lenOut);ST_RET sx_get_element_contents (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *destBuf, ST_INT destLen, ST_INT *lenOut);ST_RET sx_find_element_contents (SX_DEC_CTRL *sxDecCtrl, ST_CHAR **elStartOut, ST_INT *lenOut);ST_RET sx_get_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *value, ST_CHAR *name);ST_RET sx_get_attr_ptr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR **ptrOut, ST_CHAR *name);ST_RET sx_get_bool_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_BOOLEAN *out_ptr);ST_RET sx_get_int_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_INT *out_ptr);ST_RET sx_get_double_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_DOUBLE *out_ptr);ST_RET sx_get_uchar_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_UCHAR *out_ptr);ST_RET sx_get_int16_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_INT16 *out_ptr);ST_RET sx_get_long_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_LONG *out_ptr);ST_RET sx_get_ulong_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_UINT32 *out_ptr);ST_RET sx_get_uint_attr (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_UINT *out_ptr);#define sxd_decode_data_el(elName,xml,xmlLen,xmlUsed,vdp,typeId,elPres,checkDt)\ _sxd_decode_data_el(elName,xml,xmlLen,xmlUsed,vdp,typeId,elPres,sxdDefXmlStyle,checkDt)ST_RET _sxd_decode_data_el (ST_CHAR *elName, ST_CHAR *xml, ST_INT xmlLen, ST_INT *xmlUsed, ST_VOID *vdp, ST_INT typeId, ST_BOOLEAN *elPres, ST_INT sxdXmlStyle, ST_BOOLEAN checkDt);ST_RET sxd_decode_rtdata_el (SD_CONST ST_CHAR *elName, ST_CHAR *xml, ST_INT xmlLen, ST_INT *xmlUsed, ST_VOID *vdp, SD_CONST RUNTIME_TYPE *rt_head, ST_INT rt_num, ST_BOOLEAN *elPres, ST_INT sxdXmlStyle, ST_BOOLEAN checkDt);extern ST_RET (*u_sx_el_start) (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag);extern ST_RET (*u_sx_el_end) (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *tag);ST_VOID sxStartElement (SX_DEC_CTRL *sxDecCtrl);ST_VOID sxEndElement (SX_DEC_CTRL *sxDecCtrl);ST_RET sx_get_value (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *format_string, ST_VOID *out_ptr);ST_RET sx_get_attr_value (SX_DEC_CTRL *sxDecCtrl, ST_CHAR *name, ST_CHAR *format_string, ST_VOID *out_ptr);ST_VOID sx_load_characters (ST_CHAR *lineBuf, ST_BOOLEAN *eof, FILE *fp, ST_INT numToRead);/************************************************************************//************************************************************************//************************************************************************//* max prefix length in SXD_XML_STYLE_A */#define SXD_MAX_PREFIX 100typedef struct sx_enc_ctrl { ST_INT xmlBufLen; ST_CHAR *xmlBuf; ST_CHAR *xmlBufEnd; ST_BOOLEAN useFp; FILE *fp; ST_CHAR *nextWritePos; ST_INT currNestLevel; ST_CHAR tags[SX_MAX_STACK_LEVEL][SX_MAX_TAG_LEN+1]; ST_RET errCode; ST_BOOLEAN bUseFormatting; ST_BOOLEAN bOneLineEl;/* Used for data encoding */ ST_BOOLEAN encDt; ST_CHAR *outerElement; ST_INT sxdXmlStyle; ST_CHAR sxdPrefix[SXD_MAX_PREFIX+1]; /* only for SXD_XML_STYLE_A */ ST_INT sxdStructNestLevel; /* only for SXD_XML_STYLE_A */ ST_VOID *usr; } SX_ENC_CTRL;/* Macro for getting current encoded length */#define SX_ENC_LEN(__sxEncCtrl) ((__sxEncCtrl)->nextWritePos - (__sxEncCtrl)->xmlBuf)/************************************************************************//************************************************************************/SX_ENC_CTRL *sx_start_encode (ST_CHAR *xmlBuf, ST_INT xmlBufLen);SX_ENC_CTRL *sx_start_encodeEx (ST_CHAR *fileName);ST_VOID sx_end_encode (SX_ENC_CTRL *sxEncCtrl);ST_VOID sx_init_encode (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *xmlBuf, ST_INT xmlBufLen);ST_RET sx_init_encodeEx (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *fileName);#define sx_start_element(sxEncCtrl,tag,numAttr,attr)\ sx_write_element(sxEncCtrl,tag,numAttr,attr,SD_FALSE,SD_FALSE);#define sx_write_empty_element(sxEncCtrl,tag,numAttr,attr)\ sx_write_element(sxEncCtrl,tag,numAttr,attr,SD_FALSE,SD_TRUE);ST_VOID sx_end_element (SX_ENC_CTRL *sxEncCtrl);ST_VOID sx_write_element (SX_ENC_CTRL *sxEncCtrl, SD_CONST ST_CHAR *tag, ST_INT numAttr, SXE_ATTR_PAIR *attr, ST_BOOLEAN end, ST_BOOLEAN empty);/* Defines for 'no attribute' cases */#define sx_wr_string_el(sxEncCtrl,tag,str)\ sx_wrx_string_el(sxEncCtrl,tag,str,0,NULL)#define sx_wr_int_el(sxEncCtrl,tag,val)\ sx_wrx_int_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_uint_el(sxEncCtrl,tag,val)\ sx_wrx_uint_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_ulong_el(sxEncCtrl,tag,val)\ sx_wrx_ulong_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_float_el(sxEncCtrl,tag,val)\ sx_wrx_float_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_double_el(sxEncCtrl,tag,val)\ sx_wrx_double_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_long_el(sxEncCtrl,tag,val)\ sx_wrx_long_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_bool_el(sxEncCtrl,tag,val)\ sx_wrx_bool_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_time_el(sxEncCtrl,tag,val)\ sx_wrx_time_el(sxEncCtrl,tag,val,0,NULL)#define sx_wr_cdata_el(sxEncCtrl,tag,str, len)\ sx_wrx_cdata_el(sxEncCtrl,tag,str,len,0,NULL)/* Functions to write elements and element contents */ST_VOID sx_wr_string (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *str);ST_VOID sx_wrx_string_el (SX_ENC_CTRL *sxEncCtrl, SD_CONST ST_CHAR *tag, ST_CHAR *str, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_bitstring (SX_ENC_CTRL *sxEncCtrl, ST_INT numBits, ST_UINT8 *bitStr);ST_VOID sx_wrx_bitstring_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_INT numBits, ST_UINT8 *bitStr, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_int (SX_ENC_CTRL *sxEncCtrl, ST_INT val);ST_VOID sx_wrx_int_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_INT val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_uint (SX_ENC_CTRL *sxEncCtrl, ST_UINT val);ST_VOID sx_wrx_uint_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_UINT val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_ulong (SX_ENC_CTRL *sxEncCtrl, ST_ULONG val);ST_VOID sx_wrx_ulong_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_ULONG val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_float (SX_ENC_CTRL *sxEncCtrl, ST_FLOAT val);ST_VOID sx_wrx_float_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_FLOAT val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_double (SX_ENC_CTRL *sxEncCtrl, double val);ST_VOID sx_wrx_double_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, double val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_long (SX_ENC_CTRL *sxEncCtrl, ST_LONG val);ST_VOID sx_wrx_long_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_LONG val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_bool (SX_ENC_CTRL *sxEncCtrl, ST_BOOLEAN val);ST_VOID sx_wrx_bool_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_BOOLEAN val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_time (SX_ENC_CTRL *sxEncCtrl, time_t val);ST_VOID sx_wrx_time_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, time_t val, ST_INT numAttr, SXE_ATTR_PAIR *attr);ST_VOID sx_wr_cdata (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *str, ST_INT len);ST_VOID sx_wrx_cdata_el (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *tag, ST_CHAR *str, ST_INT len, ST_INT numAttr, SXE_ATTR_PAIR *attr);#define sxd_wr_data(ec,typeId,elName,data,encodeDt,elPres)\ _sxd_wr_data(ec,typeId,elName,data,sxdDefXmlStyle,encodeDt,elPres)\ST_RET _sxd_wr_data (SX_ENC_CTRL *sxEncCtrl, ST_INT typeId, ST_CHAR *elName, ST_VOID *data, ST_INT sxdXmlStyle, ST_BOOLEAN encodeDt, ST_BOOLEAN *elPres);ST_RET sxd_wr_rtdata (SX_ENC_CTRL *sxEncCtrl, RUNTIME_TYPE *rt, ST_INT numRt, ST_CHAR *elName, ST_VOID *data, ST_INT sxdXmlStyle, ST_BOOLEAN encodeDt, ST_BOOLEAN *elPres);ST_VOID sx_add_string (SX_ENC_CTRL *sxEncCtrl, SD_CONST ST_CHAR *_src, ST_CHAR **writePosIo);ST_RET sx_add_buf (SX_ENC_CTRL *sxEncCtrl, SD_CONST ST_CHAR *_src, ST_INT _srcLen, ST_CHAR **writePosIo);ST_VOID sx_wr_comment (SX_ENC_CTRL *sxEncCtrl, ST_CHAR *str);/************************************************************************//************************************************************************//* Arbitrary data processing, for use in traversing the RUNTIME_TYPE */typedef struct { ST_RET (*arrStart) (ST_VOID *usr, RUNTIME_TYPE *rt); ST_RET (*arrEnd) (ST_VOID *usr, RUNTIME_TYPE *rt); ST_RET (*strStart) (ST_VOID *usr, RUNTIME_TYPE *rt, SD_CONST RUNTIME_TYPE *rt_head); ST_RET (*strEnd) (ST_VOID *usr, RUNTIME_TYPE *rt); ST_RET (*int8) (ST_VOID *usr, ST_INT8 *data_dest, RUNTIME_TYPE *rt); ST_RET (*int16) (ST_VOID *usr, ST_INT16 *data_dest, RUNTIME_TYPE *rt); ST_RET (*int32) (ST_VOID *usr, ST_INT32 *data_dest, RUNTIME_TYPE *rt);#ifdef INT64_SUPPORT ST_RET (*int64) (ST_VOID *usr, ST_INT64 *data_dest, RUNTIME_TYPE *rt);#endif ST_RET (*uint8) (ST_VOID *usr, ST_UINT8 *data_dest, RUNTIME_TYPE *rt); ST_RET (*uint16) (ST_VOID *usr, ST_UINT16 *data_dest, RUNTIME_TYPE *rt); ST_RET (*uint32) (ST_VOID *usr, ST_UINT32 *data_dest, RUNTIME_TYPE *rt);#ifdef INT64_SUPPORT ST_RET (*uint64) (ST_VOID *usr, ST_UINT64 *data_dest, RUNTIME_TYPE *rt);#endif ST_RET (*flt) (ST_VOID *usr, ST_FLOAT *data_dest, RUNTIME_TYPE *rt); ST_RET (*dbl) (ST_VOID *usr, ST_DOUBLE *data_dest, RUNTIME_TYPE *rt); ST_RET (*oct) (ST_VOID *usr, ST_UCHAR *data_dest, RUNTIME_TYPE *rt); ST_RET (*booln) (ST_VOID *usr, ST_BOOLEAN *data_dest, RUNTIME_TYPE *rt); ST_RET (*bcd1) (ST_VOID *usr, ST_INT8 *data_dest, RUNTIME_TYPE *rt); ST_RET (*bcd2) (ST_VOID *usr, ST_INT16 *data_dest, RUNTIME_TYPE *rt); ST_RET (*bcd4) (ST_VOID *usr, ST_INT32 *data_dest, RUNTIME_TYPE *rt); ST_RET (*bs) (ST_VOID *usr, ST_UCHAR *data_dest, RUNTIME_TYPE *rt); ST_RET (*vis) (ST_VOID *usr, ST_CHAR *data_dest, RUNTIME_TYPE *rt); ST_RET (*bt4) (ST_VOID *usr, ST_INT32 *data_dest, RUNTIME_TYPE *rt); ST_RET (*bt6) (ST_VOID *usr, ST_INT32 *data_dest, RUNTIME_TYPE *rt); ST_RET (*gt) (ST_VOID *usr, time_t *data_dest, RUNTIME_TYPE *rt); ST_RET (*utc) (ST_VOID *usr, MMS_UTC_TIME *data_dest, RUNTIME_TYPE *rt); } SXD_ARB_DATA_CTRL;ST_RET sxd_process_arb_data (ST_CHAR *datptr, SD_CONST RUNTIME_TYPE *rt_head, ST_INT rt_num, ST_VOID *usr, SXD_ARB_DATA_CTRL *ac, ST_BOOLEAN *elPres);ST_RET sxaTextToLocal (ST_CHAR *pSource, ST_VOID *pDest, ST_INT numRt, RUNTIME_TYPE *rtHead);ST_CHAR *sxaLocalToText (ST_VOID *dataPtr, RUNTIME_TYPE *rtHead, ST_INT numRt);/************************************************************************/#ifdef __cplusplus}#endif#endif /* SX_DEFS_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -