#pragma once | |
//------------------------------------------------------------------------------------------------- | |
// <copyright file="jsonutil.h" company="Outercurve Foundation"> | |
// Copyright (c) 2004, Outercurve Foundation. | |
// This software is released under Microsoft Reciprocal License (MS-RL). | |
// The license and further copyright text can be found in the file | |
// LICENSE.TXT at the root directory of the distribution. | |
// </copyright> | |
// | |
// <summary> | |
// JavaScript Object Notation (JSON) helper functions. | |
// </summary> | |
//------------------------------------------------------------------------------------------------- | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
enum JSON_TOKEN | |
{ | |
JSON_TOKEN_NONE, | |
JSON_TOKEN_ARRAY_START, | |
JSON_TOKEN_ARRAY_VALUE, | |
JSON_TOKEN_ARRAY_END, | |
JSON_TOKEN_OBJECT_START, | |
JSON_TOKEN_OBJECT_KEY, | |
JSON_TOKEN_OBJECT_VALUE, | |
JSON_TOKEN_OBJECT_END, | |
JSON_TOKEN_VALUE, | |
}; | |
typedef struct _JSON_VALUE | |
{ | |
} JSON_VALUE; | |
typedef struct _JSON_READER | |
{ | |
CRITICAL_SECTION cs; | |
LPWSTR sczJson; | |
LPWSTR pwz; | |
JSON_TOKEN token; | |
} JSON_READER; | |
typedef struct _JSON_WRITER | |
{ | |
CRITICAL_SECTION cs; | |
LPWSTR sczJson; | |
JSON_TOKEN* rgTokenStack; | |
DWORD cTokens; | |
DWORD cMaxTokens; | |
} JSON_WRITER; | |
DAPI_(HRESULT) JsonInitializeReader( | |
__in_z LPCWSTR wzJson, | |
__in JSON_READER* pReader | |
); | |
DAPI_(void) JsonUninitializeReader( | |
__in JSON_READER* pReader | |
); | |
DAPI_(HRESULT) JsonReadNext( | |
__in JSON_READER* pReader, | |
__out JSON_TOKEN* pToken, | |
__out JSON_VALUE* pValue | |
); | |
DAPI_(HRESULT) JsonReadValue( | |
__in JSON_READER* pReader, | |
__in JSON_VALUE* pValue | |
); | |
DAPI_(HRESULT) JsonInitializeWriter( | |
__in JSON_WRITER* pWriter | |
); | |
DAPI_(void) JsonUninitializeWriter( | |
__in JSON_WRITER* pWriter | |
); | |
DAPI_(HRESULT) JsonWriteBool( | |
__in JSON_WRITER* pWriter, | |
__in BOOL fValue | |
); | |
DAPI_(HRESULT) JsonWriteNumber( | |
__in JSON_WRITER* pWriter, | |
__in DWORD dwValue | |
); | |
DAPI_(HRESULT) JsonWriteString( | |
__in JSON_WRITER* pWriter, | |
__in_z LPCWSTR wzValue | |
); | |
DAPI_(HRESULT) JsonWriteArrayStart( | |
__in JSON_WRITER* pWriter | |
); | |
DAPI_(HRESULT) JsonWriteArrayEnd( | |
__in JSON_WRITER* pWriter | |
); | |
DAPI_(HRESULT) JsonWriteObjectStart( | |
__in JSON_WRITER* pWriter | |
); | |
DAPI_(HRESULT) JsonWriteObjectKey( | |
__in JSON_WRITER* pWriter, | |
__in_z LPCWSTR wzKey | |
); | |
DAPI_(HRESULT) JsonWriteObjectEnd( | |
__in JSON_WRITER* pWriter | |
); | |
#ifdef __cplusplus | |
} | |
#endif |