# msgengine.h File Reference

`#include <gwenhywfar/gwenhywfarapi.h>`
`#include <gwenhywfar/xml.h>`
`#include <gwenhywfar/db.h>`
`#include <gwenhywfar/buffer.h>`

Go to the source code of this file.

## Read Flags

#define | GWEN_MSGENGINE_READ_FLAGS_DEFAULT 0
#define | GWEN_MSGENGINE_READ_FLAGS_TRUSTINFO 0x0001

## Virtual Functions

A message engine contains some pointers to functions which allow extending the functionality of a message engine (like virtual functions in C++)
typedef int(* | GWEN_MSGENGINE_BINTYPEREAD_PTR )(GWEN_MSGENGINE *e, GWEN_XMLNODE *node, GWEN_DB_NODE *gr, GWEN_BUFFER *vbuf)
typedef int(* | GWEN_MSGENGINE_BINTYPEWRITE_PTR )(GWEN_MSGENGINE *e, GWEN_XMLNODE *node, GWEN_DB_NODE *gr, GWEN_BUFFER *dbuf)
typedef void(* | GWEN_MSGENGINE_FREEDATA_PTR )(GWEN_MSGENGINE *e)
typedef const char *(* | GWEN_MSGENGINE_GETCHARVALUE_PTR )(GWEN_MSGENGINE *e, const char *name, const char *defValue)
typedef GWEN_DB_NODE *(* | GWEN_MSGENGINE_GETGLOBALVALUES_PTR )(GWEN_MSGENGINE *e)
typedef int(* | GWEN_MSGENGINE_GETINTVALUE_PTR )(GWEN_MSGENGINE *e, const char *name, int defValue)
typedef GWEN_DB_VALUETYPE(* | GWEN_MSGENGINE_TYPECHECK_PTR )(GWEN_MSGENGINE *e, const char *tname)
typedef int(* | GWEN_MSGENGINE_TYPEREAD_PTR )(GWEN_MSGENGINE *e, GWEN_BUFFER *msgbuf, GWEN_XMLNODE *node, GWEN_BUFFER *vbuf, char escapeChar, const char *delimiters)
typedef int(* | GWEN_MSGENGINE_TYPEWRITE_PTR )(GWEN_MSGENGINE *e, GWEN_BUFFER *gbuf, GWEN_BUFFER *data, GWEN_XMLNODE *node)

## Setters And Getters

GWENHYWFAR_API int | GWEN_MsgEngine_AddDefinitions (GWEN_MSGENGINE *e, GWEN_XMLNODE *node)
GWENHYWFAR_API const char * | GWEN_MsgEngine_GetCharsToEscape (GWEN_MSGENGINE *e)
GWENHYWFAR_API GWEN_XMLNODE * | GWEN_MsgEngine_GetDefinitions (GWEN_MSGENGINE *e)
GWENHYWFAR_API const char * | GWEN_MsgEngine_GetDelimiters (GWEN_MSGENGINE *e)
GWENHYWFAR_API char | GWEN_MsgEngine_GetEscapeChar (GWEN_MSGENGINE *e)
GWENHYWFAR_API const char * | GWEN_MsgEngine_GetMode (GWEN_MSGENGINE *e)
GWENHYWFAR_API unsigned int | GWEN_MsgEngine_GetProtocolVersion (GWEN_MSGENGINE *e)
GWENHYWFAR_API void | GWEN_MsgEngine_SetCharsToEscape (GWEN_MSGENGINE *e, const char *c)
GWENHYWFAR_API void | GWEN_MsgEngine_SetDefinitions (GWEN_MSGENGINE *e, GWEN_XMLNODE *n, int take)
GWENHYWFAR_API void | GWEN_MsgEngine_SetDelimiters (GWEN_MSGENGINE *e, const char *s)
GWENHYWFAR_API void | GWEN_MsgEngine_SetEscapeChar (GWEN_MSGENGINE *e, char c)
GWENHYWFAR_API void | GWEN_MsgEngine_SetMode (GWEN_MSGENGINE *e, const char *mode)
GWENHYWFAR_API void | GWEN_MsgEngine_SetProtocolVersion (GWEN_MSGENGINE *e, unsigned int p)

## Handling Trust Information

GWENHYWFAR_API int | GWEN_MsgEngine_AddTrustInfo (GWEN_MSGENGINE *e, const char *data, unsigned int size, const char *description, GWEN_MSGENGINE_TRUSTLEVEL trustLevel, unsigned int pos)
GWENHYWFAR_API GWEN_MSGENGINE_TRUSTEDDATA * | GWEN_MsgEngine_TakeTrustInfo (GWEN_MSGENGINE *e)

## Constructor And Destructor

GWENHYWFAR_API void | GWEN_MsgEngine_Attach (GWEN_MSGENGINE *e)
GWENHYWFAR_API void | GWEN_MsgEngine_free (GWEN_MSGENGINE *e)
GWENHYWFAR_API GWEN_MSGENGINE * | GWEN_MsgEngine_new ()

## Parsing, Listing And Creating Messages

GWENHYWFAR_API int | GWEN_MsgEngine_CreateMessage (GWEN_MSGENGINE *e, const char *msgName, int msgVersion, GWEN_BUFFER *gbuf, GWEN_DB_NODE *msgData)
GWENHYWFAR_API int | GWEN_MsgEngine_CreateMessageFromNode (GWEN_MSGENGINE *e, GWEN_XMLNODE *node, GWEN_BUFFER *gbuf, GWEN_DB_NODE *msgData)
GWENHYWFAR_API GWEN_XMLNODE * | GWEN_MsgEngine_ListMessage (GWEN_MSGENGINE *e, const char *typ, const char *msgName, int msgVersion, GWEN_TYPE_UINT32 flags)
GWENHYWFAR_API int | GWEN_MsgEngine_ParseMessage (GWEN_MSGENGINE *e, GWEN_XMLNODE *group, GWEN_BUFFER *msgbuf, GWEN_DB_NODE *gr, GWEN_TYPE_UINT32 flags)
GWENHYWFAR_API int | GWEN_MsgEngine_ReadMessage (GWEN_MSGENGINE *e, const char *gtype, GWEN_BUFFER *mbuf, GWEN_DB_NODE *gr, GWEN_TYPE_UINT32 flags)
GWENHYWFAR_API int | GWEN_MsgEngine_ShowMessage (GWEN_MSGENGINE *e, const char *typ, const char *msgName, int msgVersion, GWEN_TYPE_UINT32 flags)
GWENHYWFAR_API int | GWEN_MsgEngine_SkipSegment (GWEN_MSGENGINE *e, GWEN_BUFFER *msgbuf, unsigned char escapeChar, unsigned char delimiter)

## Locating XML Nodes And Properties

GWENHYWFAR_API GWEN_XMLNODE * | GWEN_MsgEngine_FindGroupByProperty (GWEN_MSGENGINE *e, const char *pname, int version, const char *pvalue)
GWENHYWFAR_API GWEN_XMLNODE * | GWEN_MsgEngine_FindNodeByProperty (GWEN_MSGENGINE *e, const char *t, const char *pname, int version, const char *pvalue)
GWENHYWFAR_API const char * | GWEN_MsgEngine_SearchForProperty (GWEN_XMLNODE *node, GWEN_XMLNODE *refnode, const char *name, int topDown)

## Setters For Virtual Functions: Extending Binary Data Handling

GWENHYWFAR_API GWEN_MSGENGINE_BINTYPEREAD_PTR | GWEN_MsgEngine_GetBinTypeReadFunction (GWEN_MSGENGINE *e)
GWENHYWFAR_API GWEN_MSGENGINE_BINTYPEWRITE_PTR | GWEN_MsgEngine_GetBinTypeWriteFunction (GWEN_MSGENGINE *e)
GWENHYWFAR_API void | GWEN_MsgEngine_SetBinTypeReadFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_BINTYPEREAD_PTR p)
GWENHYWFAR_API void | GWEN_MsgEngine_SetBinTypeWriteFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_BINTYPEWRITE_PTR p)

## Setters For Virtual Functions: Extending Data Type Handling

GWENHYWFAR_API GWEN_MSGENGINE_GETGLOBALVALUES_PTR | GWEN_MsgEngine_GetGetGlobalValuesFunction (GWEN_MSGENGINE *e)
GWENHYWFAR_API GWEN_MSGENGINE_TYPECHECK_PTR | GWEN_MsgEngine_GetTypeCheckFunction (GWEN_MSGENGINE *e)
GWENHYWFAR_API GWEN_MSGENGINE_TYPEREAD_PTR | GWEN_MsgEngine_GetTypeReadFunction (GWEN_MSGENGINE *e)
GWENHYWFAR_API GWEN_MSGENGINE_TYPEWRITE_PTR | GWEN_MsgEngine_GetTypeWriteFunction (GWEN_MSGENGINE *e)
GWENHYWFAR_API void | GWEN_MsgEngine_SetGetGlobalValuesFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_GETGLOBALVALUES_PTR p)
GWENHYWFAR_API void | GWEN_MsgEngine_SetTypeCheckFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_TYPECHECK_PTR p)
GWENHYWFAR_API void | GWEN_MsgEngine_SetTypeReadFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_TYPEREAD_PTR p)
GWENHYWFAR_API void | GWEN_MsgEngine_SetTypeWriteFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_TYPEWRITE_PTR p)

## Extending GWEN_MSGENGINE

The functions in this group are strongly deprecated.
GWENHYWFAR_API void * | GWEN_MsgEngine_GetInheritorData (const GWEN_MSGENGINE *e)
GWENHYWFAR_API void | GWEN_MsgEngine_SetFreeDataFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_FREEDATA_PTR p)
GWENHYWFAR_API void | GWEN_MsgEngine_SetInheritorData (GWEN_MSGENGINE *e, void *d)

## Getters And Setters for Global Variables

GWENHYWFAR_API int | GWEN_MsgEngine_GetIntValue (GWEN_MSGENGINE *e, const char *path, int defValue)
GWENHYWFAR_API const char * | GWEN_MsgEngine_GetValue (GWEN_MSGENGINE *e, const char *path, const char *defValue)
GWENHYWFAR_API int | GWEN_MsgEngine_SetIntValue (GWEN_MSGENGINE *e, const char *path, int value)
GWENHYWFAR_API int | GWEN_MsgEngine_SetValue (GWEN_MSGENGINE *e, const char *path, const char *value)

## Setters For Virtual Functions: Getting Variables

GWENHYWFAR_API void | GWEN_MsgEngine_SetGetCharValueFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_GETCHARVALUE_PTR p)
GWENHYWFAR_API void | GWEN_MsgEngine_SetGetIntValueFunction (GWEN_MSGENGINE *e, GWEN_MSGENGINE_GETINTVALUE_PTR p)

## Defines

#define | GWEN_MSGENGINE_MAX_VALUE_LEN 8192
#define | GWEN_MSGENGINE_SHOW_FLAGS_NOSET 0x0001

## Typedefs

typedef GWEN__MSGENGINE | GWEN_MSGENGINE
typedef GWEN_MSGENGINE_TRUSTEDDATA | GWEN_MSGENGINE_TRUSTEDDATA

## Enumerations

enum | GWEN_MSGENGINE_TRUSTLEVEL { GWEN_MsgEngineTrustLevelNone = 0, GWEN_MsgEngineTrustLevelLow, GWEN_MsgEngineTrustLevelMedium, GWEN_MsgEngineTrustLevelHigh, GWEN_MsgEngineTrustLevelFull }

## Functions

GWENHYWFAR_API int | GWEN_MsgEngine_TrustedData_AddPos (GWEN_MSGENGINE_TRUSTEDDATA *td, unsigned int pos)
GWENHYWFAR_API int | GWEN_MsgEngine_TrustedData_CreateReplacements (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API void | GWEN_MsgEngine_TrustedData_free (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API const char * | GWEN_MsgEngine_TrustedData_GetData (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API const char * | GWEN_MsgEngine_TrustedData_GetDescription (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API int | GWEN_MsgEngine_TrustedData_GetFirstPos (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API GWEN_MSGENGINE_TRUSTEDDATA * | GWEN_MsgEngine_TrustedData_GetNext (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API int | GWEN_MsgEngine_TrustedData_GetNextPos (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API const char * | GWEN_MsgEngine_TrustedData_GetReplacement (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API unsigned int | GWEN_MsgEngine_TrustedData_GetSize (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API GWEN_MSGENGINE_TRUSTLEVEL | GWEN_MsgEngine_TrustedData_GetTrustLevel (GWEN_MSGENGINE_TRUSTEDDATA *td)
GWENHYWFAR_API GWEN_MSGENGINE_TRUSTEDDATA * | GWEN_MsgEngine_TrustedData_new (const char *data, unsigned int size, const char *description, GWEN_MSGENGINE_TRUSTLEVEL trustLevel)