/**********************************************************
 * This file has been automatically created by "typemaker2"
 * from the file "param.xml".
 * Please do not edit this file, all changes will be lost.
 * Better edit the mentioned source file instead.
 **********************************************************/

#ifndef PARAM_H
#define PARAM_H


#ifdef __cplusplus
extern "C" {
#endif

/* define GWEN_PARAM_RTFLAGS */


/* define GWEN_PARAM_FLAGS */


/* needed system headers */
#include <gwenhywfar/types.h>
#include <gwenhywfar/list1.h>
#include <gwenhywfar/list2.h>
#include <gwenhywfar/tree.h>
#include <gwenhywfar/db.h>
#include <gwenhywfar/xml.h>

/* pre-headers */
#include <gwenhywfar/gwenhywfarapi.h>
#include <gwenhywfar/stringlist2.h>

typedef struct GWEN_PARAM GWEN_PARAM;
GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_PARAM, GWEN_Param, GWENHYWFAR_API)
GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_PARAM, GWEN_Param, GWENHYWFAR_API)
GWEN_TREE_FUNCTION_LIB_DEFS(GWEN_PARAM, GWEN_Param, GWENHYWFAR_API)


typedef enum {
  GWEN_Param_DataType_Unknown = -1,
  GWEN_Param_DataType_Int,
  GWEN_Param_DataType_Bool,
  GWEN_Param_DataType_Float,
  GWEN_Param_DataType_String
} GWEN_PARAM_DATATYPE;


typedef enum {
  GWEN_Param_Type_Unknown = -1,
  GWEN_Param_Type_Simple,
  GWEN_Param_Type_Choice
} GWEN_PARAM_TYPE;


/* post-headers */
#include <gwenhywfar/param_fns.h>


GWENHYWFAR_API GWEN_PARAM_DATATYPE GWEN_Param_DataType_fromString(const char *p_s);

GWENHYWFAR_API GWEN_PARAM_TYPE GWEN_Param_Type_fromString(const char *p_s);

GWENHYWFAR_API const char *GWEN_Param_DataType_toString(GWEN_PARAM_DATATYPE p_i);

GWENHYWFAR_API const char *GWEN_Param_Type_toString(GWEN_PARAM_TYPE p_i);

/** Constructor. */
GWENHYWFAR_API GWEN_PARAM *GWEN_Param_new(void);

/** Destructor. */
GWENHYWFAR_API void GWEN_Param_free(GWEN_PARAM *p_struct);

GWENHYWFAR_API void GWEN_Param_Attach(GWEN_PARAM *p_struct);

GWENHYWFAR_API GWEN_PARAM *GWEN_Param_dup(const GWEN_PARAM *p_struct);

GWENHYWFAR_API GWEN_PARAM *GWEN_Param_copy(GWEN_PARAM *p_struct, const GWEN_PARAM *p_src);

/** Getter.
 * Use this function to get the member "name"
*/
GWENHYWFAR_API const char *GWEN_Param_GetName(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "flags"
*/
GWENHYWFAR_API uint32_t GWEN_Param_GetFlags(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "type"
*/
GWENHYWFAR_API GWEN_PARAM_TYPE GWEN_Param_GetType(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "dataType"
*/
GWENHYWFAR_API GWEN_PARAM_DATATYPE GWEN_Param_GetDataType(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "shortDescription"
*/
GWENHYWFAR_API const char *GWEN_Param_GetShortDescription(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "longDescription"
*/
GWENHYWFAR_API const char *GWEN_Param_GetLongDescription(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "currentValue"
*/
GWENHYWFAR_API const char *GWEN_Param_GetCurrentValue(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "defaultValue"
*/
GWENHYWFAR_API const char *GWEN_Param_GetDefaultValue(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "choices"
*/
GWENHYWFAR_API GWEN_STRINGLIST2 *GWEN_Param_GetChoices(const GWEN_PARAM *p_struct);

/** Getter.
 * Use this function to get the member "runtimeFlags"
*/
GWENHYWFAR_API uint32_t GWEN_Param_GetRuntimeFlags(const GWEN_PARAM *p_struct);

/** Setter.
 * Use this function to set the member "name"
*/
GWENHYWFAR_API void GWEN_Param_SetName(GWEN_PARAM *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "flags"
*/
GWENHYWFAR_API void GWEN_Param_SetFlags(GWEN_PARAM *p_struct, uint32_t p_src);

/** Add flags.
 * Use this function to add flags to the member "flags"
*/
GWENHYWFAR_API void GWEN_Param_AddFlags(GWEN_PARAM *p_struct, uint32_t p_src);

/** Sub flags.
 * Use this function to sub flags from the member "flags"
*/
GWENHYWFAR_API void GWEN_Param_SubFlags(GWEN_PARAM *p_struct, uint32_t p_src);

/** Setter.
 * Use this function to set the member "type"
*/
GWENHYWFAR_API void GWEN_Param_SetType(GWEN_PARAM *p_struct, GWEN_PARAM_TYPE  p_src);

/** Setter.
 * Use this function to set the member "dataType"
*/
GWENHYWFAR_API void GWEN_Param_SetDataType(GWEN_PARAM *p_struct, GWEN_PARAM_DATATYPE  p_src);

/** Setter.
 * Use this function to set the member "shortDescription"
*/
GWENHYWFAR_API void GWEN_Param_SetShortDescription(GWEN_PARAM *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "longDescription"
*/
GWENHYWFAR_API void GWEN_Param_SetLongDescription(GWEN_PARAM *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "currentValue"
*/
GWENHYWFAR_API void GWEN_Param_SetCurrentValue(GWEN_PARAM *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "defaultValue"
*/
GWENHYWFAR_API void GWEN_Param_SetDefaultValue(GWEN_PARAM *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "choices"
*/
GWENHYWFAR_API void GWEN_Param_SetChoices(GWEN_PARAM *p_struct, GWEN_STRINGLIST2 *p_src);

/** Setter.
 * Use this function to set the member "runtimeFlags"
*/
GWENHYWFAR_API void GWEN_Param_SetRuntimeFlags(GWEN_PARAM *p_struct, uint32_t p_src);

/** Add flags.
 * Use this function to add flags to the member "runtimeFlags"
*/
GWENHYWFAR_API void GWEN_Param_AddRuntimeFlags(GWEN_PARAM *p_struct, uint32_t p_src);

/** Sub flags.
 * Use this function to sub flags from the member "runtimeFlags"
*/
GWENHYWFAR_API void GWEN_Param_SubRuntimeFlags(GWEN_PARAM *p_struct, uint32_t p_src);

/* list1 functions */
GWENHYWFAR_API GWEN_PARAM_LIST *GWEN_Param_List_dup(const GWEN_PARAM_LIST *p_src);

GWENHYWFAR_API void GWEN_Param_ReadDb(GWEN_PARAM *p_struct, GWEN_DB_NODE *p_db);

GWENHYWFAR_API int GWEN_Param_WriteDb(const GWEN_PARAM *p_struct, GWEN_DB_NODE *p_db);

GWENHYWFAR_API GWEN_PARAM *GWEN_Param_fromDb(GWEN_DB_NODE *p_db);

GWENHYWFAR_API int GWEN_Param_toDb(const GWEN_PARAM *p_struct, GWEN_DB_NODE *p_db);

GWENHYWFAR_API void GWEN_Param_ReadXml(GWEN_PARAM *p_struct, GWEN_XMLNODE *p_db);

GWENHYWFAR_API void GWEN_Param_WriteXml(const GWEN_PARAM *p_struct, GWEN_XMLNODE *p_db);

GWENHYWFAR_API void GWEN_Param_toXml(const GWEN_PARAM *p_struct, GWEN_XMLNODE *p_db);

GWENHYWFAR_API GWEN_PARAM *GWEN_Param_fromXml(GWEN_XMLNODE *p_db);

GWENHYWFAR_API GWEN_PARAM *GWEN_Param_List_GetByName(const GWEN_PARAM_LIST *p_list,  const char *p_cmp);

GWENHYWFAR_API GWEN_PARAM *GWEN_Param_Tree_GetByName(const GWEN_PARAM_TREE *p_tree,  const char *p_cmp);

#ifdef __cplusplus
}
#endif

#endif

