mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
99 lines
3.3 KiB
C
99 lines
3.3 KiB
C
/*H*************************************************************************************/
|
|
/*!
|
|
\File jsonformat.h
|
|
|
|
\Description
|
|
This module formats simple Json, in a linear fashion, using a character buffer
|
|
that the client provides.
|
|
|
|
\Notes
|
|
References:
|
|
JSON RFC: http://tools.ietf.org/html/rfc4627
|
|
|
|
\Copyright
|
|
Copyright (c) Electronic Arts 2012.
|
|
|
|
\Version 12/11/2012 (jbrookes) First Version
|
|
*/
|
|
/*************************************************************************************H*/
|
|
|
|
#ifndef _jsonformat_h
|
|
#define _jsonformat_h
|
|
|
|
/*!
|
|
\Moduledef JsonFormat JsonFormat
|
|
\Modulemember Util
|
|
*/
|
|
//@{
|
|
|
|
/*** Include files *********************************************************************/
|
|
|
|
#include "DirtySDK/platform.h"
|
|
|
|
/*** Defines ***************************************************************************/
|
|
|
|
#define JSON_ERR_NONE (0) //!< no error
|
|
#define JSON_ERR_FULL (-1) //!< buffer is full, no space to add attribute or element.
|
|
#define JSON_ERR_UNINIT (-2) //!< did not call JsonInit() prior to writing.
|
|
#define JSON_ERR_NOT_OPEN (-3) //!< attempt to set elem or attrib, but, no tag opened.
|
|
#define JSON_ERR_ATTR_POSITION (-4) //!< attempt to set an attrib, but, child element already added to tag.
|
|
#define JSON_ERR_INVALID_PARAM (-5) //!< invalid parameter passed to function
|
|
|
|
// Encoding control flags
|
|
#define JSON_FL_WHITESPACE (1) //!< include formatting whitespace
|
|
|
|
/*** Functions *************************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// init the API -- pass in the character buffer. MUST be called first.
|
|
DIRTYCODE_API void JsonInit(char *pBuffer, int32_t iBufLen, uint8_t uFlags);
|
|
|
|
// notify the API that the buf size was increased
|
|
DIRTYCODE_API void JsonBufSizeIncrease(char *pBuffer, int32_t iNewBufLen);
|
|
|
|
// finish JSON output to this buffer; use returned pointer ref
|
|
DIRTYCODE_API char *JsonFinish(char *pBuffer);
|
|
|
|
// start an object
|
|
DIRTYCODE_API int32_t JsonObjectStart(char *pBuffer, const char *pName);
|
|
|
|
// end the current object -- must have an outstanding open object
|
|
DIRTYCODE_API int32_t JsonObjectEnd(char *pBuffer);
|
|
|
|
// start an array
|
|
DIRTYCODE_API int32_t JsonArrayStart(char *pBuffer, const char *pName);
|
|
|
|
// end the current array -- must have an outstanding open array
|
|
DIRTYCODE_API int32_t JsonArrayEnd(char *pBuffer);
|
|
|
|
// add a string element
|
|
DIRTYCODE_API int32_t JsonAddStr(char *pBuffer, const char *pElemName, const char *pValue);
|
|
|
|
// add a number
|
|
DIRTYCODE_API int32_t JsonAddNum(char *pBuffer, const char *pElemName, const char *pFormatSpec, float fValue);
|
|
|
|
// add an integer element
|
|
DIRTYCODE_API int32_t JsonAddInt(char *pBuffer, const char *pElemName, int64_t iValue);
|
|
|
|
// add a date (will be encoded as a string; use JsonAddInteger for integer encoding)
|
|
DIRTYCODE_API int32_t JsonAddDate(char *pBuffer, const char *pElemName, uint32_t uEpochDate);
|
|
|
|
// build a JSON output string from a formatted pattern (like vprintf) $$TODO
|
|
#ifdef va_start
|
|
DIRTYCODE_API char *JsonFormatVPrintf(char *pJsonBuff, int32_t iBufLen, const char *pFormat, va_list pFmtArgs);
|
|
#endif
|
|
|
|
// build a JSON output string from a formatted pattern (like printf) $$TODO
|
|
DIRTYCODE_API char *JsonFormatPrintf(char *pJsonBuff, int32_t iBufLen, const char *pFormat, ...);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
//@}
|
|
|
|
#endif // _jsonformat_h
|