#if !defined(_YYCDLL_WFASSOC_UTILS_H__IMPORTED_) #define _YYCDLL_WFASSOC_UTILS_H__IMPORTED_ #include "wfassoc.h" #include typedef struct _WFString { wchar_t* mRawData; uint32_t mLength; uint32_t mCapacity; uint32_t mRealLength; uint32_t mRealCapacity; }WFString; WFERROR WFString_Alloc(WFString** strl, wchar_t* raw_data); WFERROR WFString_Alloc(WFString** strl, char* raw_data, BOOL is_utf8); WFERROR WFString_Alloc(WFString** strl, uint32_t size); WFERROR WFString_Free(WFString* strl); WFERROR WFString_Resize(WFString* strl, uint32_t new_size); WFERROR WFString_GetData(WFString* strl, wchar_t** pdata); WFERROR WFString_SetData(WFString* strl, wchar_t* data); WFERROR WFString_GetLength(WFString* strl, uint32_t* len); WFERROR WFString_Printf(WFString* strl, wchar_t* format, ...); typedef WFERROR(*WFLinkedListNode_FreeDataFunc)(void* data); typedef struct _WFLinkedListNode { void* mRawData; WFLinkedListNode* mNext; }WFLinkedListNode; typedef struct _WFLinkedList { WFLinkedListNode* mHead; WFLinkedListNode* mTail; uint32_t mLength; }WFLinkedList; WFERROR WFLinkedList_Alloc(WFLinkedList** list); WFERROR WFLinkedList_Free(WFLinkedList* list); WFERROR WFLinkedList_Free_Full(WFLinkedList* list, WFLinkedListNode_FreeDataFunc free_func); WFERROR WFLinkedList_Add(WFLinkedList* list, void* data); WFERROR WFLinkedList_NodeIterator(WFLinkedList* list, WFLinkedListNode** node_ptr); WFERROR WFLinkedListNode_GetData(WFLinkedListNode* node, void** pdata); #endif