130 lines
4.7 KiB
C
Raw Permalink Normal View History

2025-04-30 16:24:29 +08:00
/****************************************************************************/
/* Copyright (c) 2008,<2C><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾ */
/* All rights reserved. */
/* */
/* ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/** damapӳ<70><D3B3><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ȡ<EFBFBD>ӿ<EFBFBD>
* @file as_damap.h */
/* */
/* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ע<><D7A2> */
/* 2008/09/22 DJF <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
/****************************************************************************/
#ifndef AS_DAMAP_INCLUDED
#define AS_DAMAP_INCLUDED
//#include "scl.h" /* need SCL_INFO */
#include "as_def.h"
#include "mms_vvar.h"
#ifdef __cplusplus
extern "C" {
#endif
#define NUMHAR 10 /* г<><D0B3>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
#define MAX_NEST_LEVEL 50
//added djf 20090807
typedef struct
{
DBL_LNK l;
//MVL_VAR_ASSOC * var;
ST_UINT32 index; //<2F><>Ϊ<EFBFBD><EFBFBD><E6B4A2>userinfo<66>ж<EFBFBD>ȡ<EFBFBD><C8A1>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
ST_BOOLEAN gse_trged;//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>goose
}MVL_VAR_LIST;
typedef struct
{
ST_CHAR da_ref [MAX_IDENT_LEN + 1]; /* <20><><EFBFBD><EFBFBD>da<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:E1Q1SB1Ld1/LN$ST$Mod$stVal*/
ST_CHAR usr_data_info [MAX_IDENT_LEN + 1];
ST_VOID * dataPtr;
RUNTIME_TYPE * dataType; /* data type of this leaf */
AS_DA_TYPE type; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
ST_VOID * do_map; /* <20><>da<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>do<64><6F>map<61>ṹ,ʹ<><CAB9>ʱǿ<CAB1><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊas_do_map*/
MVL_VAR_LIST * var_list;//<2F><>data_map<61><70><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC>ij<EFBFBD>Ա added djf 20090807
ST_VOID * last_data;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱȽ<DDB1> added djf 20090807
} AS_DA_MAP;
/************************************************************************/
/* TRACK_INFO structure */
/************************************************************************/
typedef struct
{
ST_UINT primdata_num; /* # of primitive data elements in variable */
/* must account for arrays of structs. */
ST_INT data_offset;
ST_INT str_nest; /* current struct nest level */
/* rt_type of start of structs containing this leaf. First entry is */
/* top level struct, next is lower level struct, etc. */
RUNTIME_TYPE * rt_type_str_start [MAX_NEST_LEVEL];
ST_INT data_offset_str_start [MAX_NEST_LEVEL];
} TRACK_INFO;
/**
* <EFBFBD>ͷ<EFBFBD>vmd<EFBFBD><EFBFBD>maphead<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>da_map,do_map<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
*/
ST_VOID as_datamap_cfg_destroy ();
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>damap<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
ST_INT as_da_map_count ( ST_CHAR * in_filename );
typedef ST_VOID (* U_USERMAP_CALLBACK )( AS_DA_MAP * map_entry );
extern U_USERMAP_CALLBACK u_datamap_user_leaf;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap_file==NULL<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>Ϊÿ<EFBFBD><EFBFBD>da<EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap
* @param da_map_file damapӳ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
* @param ied_name ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
*/
ST_RET as_create_da_map( ST_CHAR * da_map_file, ST_CHAR * ied_name );
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap.cfg<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>user_map<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>da_map->usr_data_info<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>ai_init_envir֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
* @param obj_ref 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ld/ln$fc$do$da
* @param user_map <EFBFBD>û<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
*/
ST_RET as_reconfig_datamap( ST_CHAR * obj_ref, ST_CHAR * user_map );
/**
* <EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>da<EFBFBD><EFBFBD>map_entry
* @param ref da<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ld/ln$fc$do$da
* @return AS_DA_MAPָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL
*/
AS_DA_MAP * as_find_da_map_entry( ST_CHAR * ref );
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>da<EFBFBD><EFBFBD>do<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>damap_num_outΪda<EFBFBD><EFBFBD>da<EFBFBD>µ<EFBFBD>map<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param dx_ref da<EFBFBD><EFBFBD><EFBFBD><EFBFBD>do<EFBFBD><EFBFBD>leafname<EFBFBD><EFBFBD><EFBFBD>ST$DO$DA
* @param ln_ctrl
* @param damap_num_out <EFBFBD><EFBFBD><EFBFBD><EFBFBD>do<EFBFBD><EFBFBD>da<EFBFBD><EFBFBD>damap<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>da<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ϊ1
* @return AS_DA_MAP ** damap<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ָ<EFBFBD><EFBFBD>ָ<EFBFBD>򷵻ص<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL
*/
//AS_DA_MAP ** as_get_damaps_dxref( ST_CHAR * dx_ref,
// MVL_VAR_ASSOC * ln_ctrl,
// ST_INT * damap_num_out );
/**
* <EFBFBD><EFBFBD>ȡda<EFBFBD><EFBFBD>ln<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>da<EFBFBD><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>λln<EFBFBD>е<EFBFBD>damap
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
*/
//ST_RET as_get_map_info_daref( ST_CHAR * da_ref, //da<64><61>leafname<6D><65><EFBFBD>磺ST$DO$DA
// MVL_VAR_ASSOC * ln_ctrl, //ln<6C>
// ST_INT * fst_offset, //<2F><><EFBFBD>ص<EFBFBD>da<64><61>ln<6C>µ<EFBFBD>ƫ<EFBFBD><C6AB>
// RUNTIME_TYPE ** dx_rt_out );//<2F><><EFBFBD>ص<EFBFBD>da<64><61>rt
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rt<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
ST_VOID as_loop_count_prim ( RUNTIME_TYPE * rt_first,
ST_INT rt_num,
TRACK_INFO * track_info );
#ifdef __cplusplus
}
#endif
#endif /* !AS_DAMAP_INCLUDED */