#ifndef CLUA_H_
#define CLUA_H_

#define MAX_LUA_STRING_SIZE 1024

typedef enum {
    LUA_VALUE_NONE,
    LUA_VALUE_STRING,
    LUA_VALUE_NUMBER
} LuaValueType;

typedef struct {
    LuaValueType type;
    long long int64Val;
    double doubleVal;
    char stringVal[MAX_LUA_STRING_SIZE];
} LuaValue;

/**
 * @brief       根据lua文件创建对应的对象
 * @param[in]   const char * luafile lua文件路径
 * @return      void *
 * @retval      obj对象
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-02           JHC        创建初始版本          \n
*/
void * clua_createluaobj(const char * luafile);

/**
 * @brief       lua对象销毁
 * @param[in]   void *luaobj
 * @return      void
 * @retval      none
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-02           JHC        创建初始版本          \n
*/
void clua_destoryluaobj(void *luaobj);

/**
 * @brief       根据lua节点路径获取值
 * @param[in]   void *obj            lua对象
 * @param[in]   const char* path     lua节点路径
 * @example     path:"event_config.BCU_point_table[1].regs[1].extrainfo[4][2]"
 * @param[out]  LuaValue* result     结果
 * @return      int
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2024-02-02           JHC        创建初始版本          \n
*/
int clua_getvalue(void *obj, const char* path, LuaValue* result);


#endif