/****************************************************************************/
/* Copyright (c) 2007,许继集团有限公司                                      */
/* All rights reserved.                                                     */
/*                                                                          */
/*  模块描述：                                                              */
/** 字符串与对象值转换功能
 *  @file  ai_valstr.h                                                      */
/*                                                                          */
/* 日期         作者    注释                                                */
/* 2007/08/07   ZYZ     创建文件                                            */
/****************************************************************************/ 

#ifndef AI_VALSTR_INCLUDE
#define AI_VALSTR_INCLUDE

#include "glbtypes.h"
#include "ai_def.h"
#include "mvl_defs.h"
#include "ai_objid.h"

#define MAX_DAT_VALUE_STR_LEN 512
#define MAX_TYPE_STR_LEN 20

#ifdef __cplusplus
extern "C" {
#endif

/**
 * 由基本类型数据转换为字符串
 * @param  type         对象数据类型
 * @param  val          对象数据指针
 * @param  str          字符串指针,输出
 * @retval SD_SUCCESS   成功
 * @retval SD_FAILURE   失败
*/
ST_RET ai_prim_value_to_str(AI_VAL_TYPE type, ST_VOID *val, ST_CHAR *str);

/**
 * 由字符串转换为基本类型数据值
 * @param  type         对象数据类型
 * @param  str          字符串指针
 * @param  val          对象数据指针,输出
 * @retval SD_SUCCESS   成功
 * @retval SD_FAILURE   失败
*/
ST_RET ai_prim_str_to_value(AI_VAL_TYPE type, ST_CHAR *str, ST_VOID *val);

/**
 * 打印obj_id对应的对象的名称及值,支持ld,ln,do,da,基本类型
 * @param  ied            服务器对象空间
 * @param  obj_id         对象ID
 * @retval ST_VOID
*/
ST_VOID ai_log_obj_value(AI_IED_CTRL *ied, AI_OBJ_ID obj_id);

/**
 * 由基本类型标示转化为类型字符串
 * @param  type         对象数据类型
 * @param  str          字符串指针，输出
 * @retval SD_SUCCESS   成功
 * @retval SD_FAILURE   失败
 * @author guoqiangm@xjgc.com
*/
ST_RET ai_type_to_str(AI_VAL_TYPE type, ST_CHAR *str);

/**
 * 由基本类型字符串转化为类型标示
 * @param  str          数据类型字符串指针
 * @retval 返回-1表示出错，否则返回基本类型标示
 * @author guoqiangm@xjgc.com
*/
AI_VAL_TYPE ai_str_to_type(ST_CHAR *str);

/**
*
* 用新子串newstr替换源字符串src中的前len个字符内所包含的oldstr子串
* @param const char* src     源字符串，被替换的字符串
* @param const char* oldstr 旧的子串，将被替换的子串
* @param const char* newstr 新的子串
* @param        int    len     将要被替换的前len个字符
*
* @retval char* dest   返回新串的地址
*
*/
char *strreplace(char *src, const char *oldstr, const char *newstr, int len);

#ifdef __cplusplus
}
#endif

#endif // AI_VALSTR_INCLUDE 
