Files
ANSLibs/chilkat/include/CkJsonObjectW.h

677 lines
27 KiB
C++

// CkJsonObjectW.h: interface for the CkJsonObjectW class.
//
//////////////////////////////////////////////////////////////////////
// This header is generated for Chilkat 11.3.0
#ifndef _CkJsonObjectW_H
#define _CkJsonObjectW_H
#include "chilkatDefs.h"
#include "CkString.h"
#include "CkWideCharBase.h"
class CkJsonArrayW;
class CkStringTableW;
class CkBinDataW;
class CkDateTimeW;
class CkDtObjW;
class CkStringBuilderW;
class CkHashtableW;
#if !defined(__sun__) && !defined(__sun)
#pragma pack (push, 8)
#endif
// CLASS: CkJsonObjectW
class CK_VISIBLE_PUBLIC CkJsonObjectW : public CkWideCharBase
{
private:
// Don't allow assignment or copying these objects.
CkJsonObjectW(const CkJsonObjectW &);
CkJsonObjectW &operator=(const CkJsonObjectW &);
public:
CkJsonObjectW(void);
virtual ~CkJsonObjectW(void);
static CkJsonObjectW *createNew(void);
void CK_VISIBLE_PRIVATE inject(void *impl);
// May be called when finished with the object to free/dispose of any
// internal resources held by the object.
void dispose(void);
// BEGIN PUBLIC INTERFACE
// ----------------------
// Properties
// ----------------------
// Sets the delimiter char for JSON paths. The default value is . . To use Firebase
// style paths, set this property to / . (This is a string property that should
// have a length of 1 char.)
void get_DelimiterChar(CkString &str);
// Sets the delimiter char for JSON paths. The default value is . . To use Firebase
// style paths, set this property to / . (This is a string property that should
// have a length of 1 char.)
const wchar_t *delimiterChar(void);
// Sets the delimiter char for JSON paths. The default value is . . To use Firebase
// style paths, set this property to / . (This is a string property that should
// have a length of 1 char.)
void put_DelimiterChar(const wchar_t *newVal);
// If true then the Emit method outputs in the most compact form possible (a
// single-line with no extra whitespace). If false, then emits with whitespace
// and indentation to make the JSON human-readable.
//
// The default value is true.
//
bool get_EmitCompact(void);
// If true then the Emit method outputs in the most compact form possible (a
// single-line with no extra whitespace). If false, then emits with whitespace
// and indentation to make the JSON human-readable.
//
// The default value is true.
//
void put_EmitCompact(bool newVal);
// If true then the Emit method uses CRLF line-endings when emitting the
// non-compact (pretty-print) format. If false, then bare-LF's are emitted. (The
// compact format emits to a single line with no end-of-line characters.) Windows
// systems traditionally use CRLF line-endings, whereas Linux, Mac OS X, and other
// systems traditionally use bare-LF line-endings.
//
// The default value is true.
//
bool get_EmitCrLf(void);
// If true then the Emit method uses CRLF line-endings when emitting the
// non-compact (pretty-print) format. If false, then bare-LF's are emitted. (The
// compact format emits to a single line with no end-of-line characters.) Windows
// systems traditionally use CRLF line-endings, whereas Linux, Mac OS X, and other
// systems traditionally use bare-LF line-endings.
//
// The default value is true.
//
void put_EmitCrLf(bool newVal);
// The value of the i index to be used when evaluating a JSON path.
int get_I(void);
// The value of the i index to be used when evaluating a JSON path.
void put_I(int newVal);
// The value of the j index to be used when evaluating a JSON path.
int get_J(void);
// The value of the j index to be used when evaluating a JSON path.
void put_J(int newVal);
// The value of the k index to be used when evaluating a JSON path.
int get_K(void);
// The value of the k index to be used when evaluating a JSON path.
void put_K(int newVal);
// If true then all member names are converted to lowercase when the JSON is
// initially loaded by the following methods: Load, LoadBd, LoadSb, LoadFile.
//
// The default value is false.
//
bool get_LowerCaseNames(void);
// If true then all member names are converted to lowercase when the JSON is
// initially loaded by the following methods: Load, LoadBd, LoadSb, LoadFile.
//
// The default value is false.
//
void put_LowerCaseNames(bool newVal);
// A prefix string that is automatically added to the JSON path passed in the first
// argument for other methods (such as StringOf, UpdateString, SetBoolOf,
// SizeOfArray, etc.)
//
// The default value is the empty string.
//
void get_PathPrefix(CkString &str);
// A prefix string that is automatically added to the JSON path passed in the first
// argument for other methods (such as StringOf, UpdateString, SetBoolOf,
// SizeOfArray, etc.)
//
// The default value is the empty string.
//
const wchar_t *pathPrefix(void);
// A prefix string that is automatically added to the JSON path passed in the first
// argument for other methods (such as StringOf, UpdateString, SetBoolOf,
// SizeOfArray, etc.)
//
// The default value is the empty string.
//
void put_PathPrefix(const wchar_t *newVal);
// The number of name/value members in this JSON object.
int get_Size(void);
// This is a catch-all property to be used for uncommon needs. This property
// defaults to the empty string and should typically remain empty.
void get_UncommonOptions(CkString &str);
// This is a catch-all property to be used for uncommon needs. This property
// defaults to the empty string and should typically remain empty.
const wchar_t *uncommonOptions(void);
// This is a catch-all property to be used for uncommon needs. This property
// defaults to the empty string and should typically remain empty.
void put_UncommonOptions(const wchar_t *newVal);
// ----------------------
// Methods
// ----------------------
// Inserts a new and empty JSON array member to the position indicated by index. To
// prepend, pass an index of 0. To append, pass an index of -1. Indexing is 0-based
// (the 1st member is at index 0).
bool AddArrayAt(int index, const wchar_t *name);
// Inserts a copy of a JSON array to the position indicated by index. To prepend,
// pass an index of 0. To append, pass an index of -1. Indexing is 0-based (the 1st
// member is at index 0).
bool AddArrayCopyAt(int index, const wchar_t *name, CkJsonArrayW &jarr);
// Inserts a new boolean member to the position indicated by index. To prepend, pass
// an index of 0. To append, pass an index of -1. Indexing is 0-based (the 1st member
// is at index 0).
bool AddBoolAt(int index, const wchar_t *name, bool value);
// Inserts a new integer member to the position indicated by index. To prepend, pass
// an index of 0. To append, pass an index of -1. Indexing is 0-based (the 1st member
// is at index 0).
bool AddIntAt(int index, const wchar_t *name, int value);
// Inserts a new null member to the position indicated by index. To prepend, pass an
// index of 0. To append, pass an index of -1. Indexing is 0-based (the 1st member is
// at index 0).
bool AddNullAt(int index, const wchar_t *name);
// Inserts a new numeric member to the position indicated by index. The numericStr is an
// integer, float, or double already converted to a string in the format desired by
// the application. To prepend, pass an index of 0. To append, pass an index of -1.
// Indexing is 0-based (the 1st member is at index 0).
bool AddNumberAt(int index, const wchar_t *name, const wchar_t *numericStr);
// Inserts a new and empty JSON object member to the position indicated by index. To
// prepend, pass an index of 0. To append, pass an index of -1. Indexing is 0-based
// (the 1st member is at index 0).
bool AddObjectAt(int index, const wchar_t *name);
// Inserts a copy of a JSON object to the position indicated by index. To prepend,
// pass an index of 0. To append, pass an index of -1. Indexing is 0-based (the 1st
// member is at index 0).
bool AddObjectCopyAt(int index, const wchar_t *name, CkJsonObjectW &jsonObj);
// Inserts a new string member to the position indicated by index. To prepend, pass
// an index of 0. To append, pass an index of -1. Indexing is 0-based (the 1st member
// is at index 0).
bool AddStringAt(int index, const wchar_t *name, const wchar_t *value);
// Appends a new and empty JSON array and returns it.
//
// Important: The name is the member name, it is not a JSON path.
//
// The caller is responsible for deleting the object returned by this method.
CkJsonArrayW *AppendArray(const wchar_t *name);
// Appends a new and empty JSON array and returns it in jarr.
//
// Important: The name is the member name, it is not a JSON path.
//
bool AppendArray2(const wchar_t *name, CkJsonArrayW &jarr);
// Appends a copy of a JSON array.
//
// Important: The name is the member name, it is not a JSON path.
//
bool AppendArrayCopy(const wchar_t *name, CkJsonArrayW &jarr);
// Appends a new boolean member. (This is the same as passing -1 to the AddBoolAt
// method.)
//
// Important: The name is the member name. It is not a JSON path. To append (or
// update) using a JSON path, call UpdateBool instead.
//
bool AppendBool(const wchar_t *name, bool value);
// Appends a new integer member. (This is the same as passing an index of -1 to the
// AddIntAt method.)
//
// Important: The name is the member name. It is not a JSON path. To append (or
// update) using a JSON path, call UpdateInt instead.
//
bool AppendInt(const wchar_t *name, int value);
// Appends a new and empty JSON object and returns it.
//
// Important: The name is the member name, it is not a JSON path.
//
// The caller is responsible for deleting the object returned by this method.
CkJsonObjectW *AppendObject(const wchar_t *name);
// Appends a new and empty JSON object and returns it in jsonObj.
//
// Important: The name is the member name, it is not a JSON path.
//
bool AppendObject2(const wchar_t *name, CkJsonObjectW &jsonObj);
// Appends a copy of a JSON object.
//
// Important: The name is the member name, it is not a JSON path.
//
bool AppendObjectCopy(const wchar_t *name, CkJsonObjectW &jsonObj);
// Appends a new string member. (This is the same as passing -1 to the AddStringAt
// method.)
//
// Important: The name is the member name. It is not a JSON path. To append (or
// update) using a JSON path, call UpdateString instead.
//
bool AppendString(const wchar_t *name, const wchar_t *value);
// Appends an array of string values.
//
// Important: The name is the member name, it is not a JSON path.
//
bool AppendStringArray(const wchar_t *name, CkStringTableW &values);
// Returns the JSON array found at index, where indexing starts at 0.
// The caller is responsible for deleting the object returned by this method.
CkJsonArrayW *ArrayAt(int index);
// Sets jarr to reference the JSON array found at index, where indexing starts at 0.
bool ArrayAt2(int index, CkJsonArrayW &jarr);
// Returns the JSON array at the specified jsonPath.
// The caller is responsible for deleting the object returned by this method.
CkJsonArrayW *ArrayOf(const wchar_t *jsonPath);
// Sets jarr to reference the JSON array found at jsonPath.
bool ArrayOf2(const wchar_t *jsonPath, CkJsonArrayW &jarr);
// Returns the boolean value of the Nth member. Indexing is 0-based (the 1st member
// is at index 0).
bool BoolAt(int index);
// Returns the boolean at the specified jsonPath.
bool BoolOf(const wchar_t *jsonPath);
// Appends the binary bytes at the specified jsonPath to bd. The encoding indicates the
// encoding of the bytes, such as base64 , hex , etc.
bool BytesOf(const wchar_t *jsonPath, const wchar_t *encoding, CkBinDataW &bd);
// Clears the contents of the JSON object. This is the equivalent of calling
// jsonObject.Load( {} )
void Clear(void);
// Applications should instead call MakeCopy .
//
// Returns a copy of this JSON object.
//
// The caller is responsible for deleting the object returned by this method.
CkJsonObjectW *Clone(void);
// Updates jsonObj to reference this JSON object.
bool CopyRef(CkJsonObjectW &jsonObj);
// Fills the dateTime with the date/time string located at jsonPath. Auto-recognizes the
// following date/time string formats: ISO-8061 Timestamp (such as
// 2009-11-04T19:55:41Z ), RFC822 date/time format (such as Wed, 18 Apr 2018
// 15:51:55 -0400 ), or Unix timestamp integers.
bool DateOf(const wchar_t *jsonPath, CkDateTimeW &dateTime);
// Deletes the member at having the name specified by name. Note: The name is not a
// tag path. It is the name of a member of this JSON object.
bool Delete(const wchar_t *name);
// Deletes the member at index index. Indexing is 0-based (the 1st member is at
// index 0).
bool DeleteAt(int index);
// Deletes JSON records in an array where a particular field equals or matches a
// value pattern. Returns the number of JSON records deleted.
int DeleteRecords(const wchar_t *arrayPath, const wchar_t *relpath, const wchar_t *value, bool caseSensitive);
// Fills the dt with the date/time string located at jsonPath. If bLocal is true,
// then dt is filled with the local date/time values, otherwise it is filled with
// the UTC/GMT values. Auto-recognizes the following date/time string formats:
// ISO-8061 Timestamp (such as 2009-11-04T19:55:41Z ), RFC822 date/time format
// (such as Wed, 18 Apr 2018 15:51:55 -0400 ), or Unix timestamp integers.
bool DtOf(const wchar_t *jsonPath, bool bLocal, CkDtObjW &dt);
// Writes the JSON document (rooted at the caller) and returns as a string.
bool Emit(CkString &outStr);
// Writes the JSON document (rooted at the caller) and returns as a string.
// QT defines the macro "emit" globally. (Good grief!)
#if defined(QT_VERSION)
#pragma push_macro("emit")
#undef emit
const wchar_t *emit(void);
#pragma pop_macro("emit")
#else
const wchar_t *emit(void);
#endif
// Emits (appends) to the contents of bd.
bool EmitBd(CkBinDataW &bd);
// Appends the JSON to a StringBuilder object.
bool EmitSb(CkStringBuilderW &sb);
// Emits the JSON document with variable substitutions applied. If omitEmpty is true,
// then members having empty strings or empty arrays are omitted.
bool EmitWithSubs(CkHashtableW &subs, bool omitEmpty, CkString &outStr);
// Emits the JSON document with variable substitutions applied. If omitEmpty is true,
// then members having empty strings or empty arrays are omitted.
const wchar_t *emitWithSubs(CkHashtableW &subs, bool omitEmpty);
// Recursively searches this JSON subtree for an object with a specified member,
// name. If the function is called at the root of the JSON document, it searches
// the entire document. It returns the first match found, or _NULL_ if no match is
// found.
// The caller is responsible for deleting the object returned by this method.
CkJsonObjectW *FindObjectWithMember(const wchar_t *name);
// Recursively searches this JSON subtree for an object containing a specified
// member, name. If initiated at the root, it searches the entire document. It
// returns true and stores the result in jsonObj if the member is found; otherwise,
// it returns false.
bool FindObjectWithMember2(const wchar_t *name, CkJsonObjectW &jsonObj);
// Locate a JSON record in an array where a specific field matches a given value or
// pattern. Refer to the example below for clarification.
// The caller is responsible for deleting the object returned by this method.
CkJsonObjectW *FindRecord(const wchar_t *arrayPath, const wchar_t *relPath, const wchar_t *value, bool caseSensitive);
// Locate a JSON record in an array where a specific field matches a given value or
// pattern. Refer to the example below for clarification.
bool FindRecord2(const wchar_t *arrayPath, const wchar_t *relPath, const wchar_t *value, bool caseSensitive, CkJsonObjectW &jsonObj);
// Finds a JSON value in an record array where a particular field equals or matches
// a value pattern. Reviewing the example below is the best way to understand this
// function.
bool FindRecordString(const wchar_t *arrayPath, const wchar_t *relPath, const wchar_t *value, bool caseSensitive, const wchar_t *retRelPath, CkString &outStr);
// Finds a JSON value in an record array where a particular field equals or matches
// a value pattern. Reviewing the example below is the best way to understand this
// function.
const wchar_t *findRecordString(const wchar_t *arrayPath, const wchar_t *relPath, const wchar_t *value, bool caseSensitive, const wchar_t *retRelPath);
// Applies a Firebase event to the JSON. The data contains JSON having a format
// such as{"path": "/", "data": {"a": 1, "b": 2}}
// The name should be put or patch .
bool FirebaseApplyEvent(const wchar_t *name, const wchar_t *data);
// For each key in the jsonData, update (or add) the corresponding key in the JSON at
// the given jsonPath. The jsonPath is relative to this JSON object. (This is effectively
// applying a Firebase patch event.)
bool FirebasePatch(const wchar_t *jsonPath, const wchar_t *jsonData);
// Inserts or replaces the value at the jsonPath. The value can contain JSON text, an
// integer (in decimal string format), a boolean (true/false), the keyword null ,
// or a quoted string.
//
// The jsonPath is relative to this JSON object. (This is effectively applying a
// Firebase put event.)
//
bool FirebasePut(const wchar_t *jsonPath, const wchar_t *value);
// Returns the root of the JSON document, accessible from any JSON object within
// it. The entire document stays in memory as long as at least one JSON object is
// referenced by the application. Once the last reference is removed, the document
// is automatically deallocated.
// The caller is responsible for deleting the object returned by this method.
CkJsonObjectW *GetDocRoot(void);
// Returns in docRoot the root of the JSON document. The entire document stays in
// memory as long as at least one JSON object is referenced by the application.
// Once the last reference is removed, the document is automatically deallocated.
bool GetDocRoot2(CkJsonObjectW &docRoot);
// Returns true if the item at the jsonPath exists.
bool HasMember(const wchar_t *jsonPath);
// Returns the index of the member having the given name. Returns -1 if the name is
// not found.
int IndexOf(const wchar_t *name);
// Returns the integer value of the Nth member. Indexing is 0-based (the 1st member
// is at index 0).
int IntAt(int index);
// Returns the integer at the specified jsonPath.
int IntOf(const wchar_t *jsonPath);
// Returns the boolean value of the member having the specified index.
bool IsNullAt(int index);
// Returns true if the value at the specified jsonPath is null. Otherwise returns
// false.
bool IsNullOf(const wchar_t *jsonPath);
// Returns the type of data at the given jsonPath. Possible return values are:
// 1. 1 - string
// 2. 2- number
// 3. 3- object
// 4. 4- array
// 5. 5- boolean
// 6. 6- null
// Returns -1 if no member exists at the given jsonPath.
int JsonTypeOf(const wchar_t *jsonPath);
// Parses a JSON string and loads it into this JSON object to provide DOM-style
// access.
bool Load(const wchar_t *json);
// Loads the contents of bd.
bool LoadBd(CkBinDataW &bd);
// Loads a JSON file into this JSON object. The path is the file path to the JSON
// file.
bool LoadFile(const wchar_t *path);
// Loads this JSON object from a predefined document having a specified name.
bool LoadPredefined(const wchar_t *name);
// Loads JSON from the contents of a StringBuilder object.
bool LoadSb(CkStringBuilderW &sb);
// Returns a copy of this JSON object in json.
bool MakeCopy(CkJsonObjectW &json);
// Move the member from fromIndex to toIndex. If toIndex equals -1, then moves the member at
// position fromIndex to the last position. Set toIndex = 0 to move a member to the first
// position.
bool MoveMember(int fromIndex, int toIndex);
// Returns the name of the Nth member. Indexing is 0-based (the 1st member is at
// index 0).
bool NameAt(int index, CkString &outStr);
// Returns the name of the Nth member. Indexing is 0-based (the 1st member is at
// index 0).
const wchar_t *nameAt(int index);
// Returns the JSON object found at index, where indexing starts at 0.
// The caller is responsible for deleting the object returned by this method.
CkJsonObjectW *ObjectAt(int index);
// Sets jsonObj to reference the JSON object found at index, where indexing starts at
// 0.
bool ObjectAt2(int index, CkJsonObjectW &jsonObj);
// Returns the JSON object at the specified jsonPath.
// The caller is responsible for deleting the object returned by this method.
CkJsonObjectW *ObjectOf(const wchar_t *jsonPath);
// Returns in jsonObj the JSON object at the specified jsonPath.
bool ObjectOf2(const wchar_t *jsonPath, CkJsonObjectW &jsonObj);
// Adds or replaces this JSON to an internal global set of predefined JSON
// documents that can be subsequently loaded by name.
bool Predefine(const wchar_t *name);
// Renames the member named oldName to newName.
bool Rename(const wchar_t *oldName, const wchar_t *newName);
// Renames the member at index to name.
bool RenameAt(int index, const wchar_t *name);
// Sets the boolean value of the Nth member. Indexing is 0-based (the 1st member is
// at index 0).
bool SetBoolAt(int index, bool value);
// Sets the boolean value at the specified jsonPath.
bool SetBoolOf(const wchar_t *jsonPath, bool value);
// Sets the integer value of the Nth member. Indexing is 0-based (the 1st member is
// at index 0).
bool SetIntAt(int index, int value);
// Sets the integer at the specified jsonPath.
bool SetIntOf(const wchar_t *jsonPath, int value);
// Sets the value of the Nth member to null. Indexing is 0-based (the 1st member is
// at index 0).
bool SetNullAt(int index);
// Sets the value at the specified jsonPath to null.
bool SetNullOf(const wchar_t *jsonPath);
// Sets the numeric value of the Nth member. The value is an integer, float, or
// double already converted to a string in the format desired by the application.
// Indexing is 0-based (the 1st member is at index 0).
bool SetNumberAt(int index, const wchar_t *value);
// Sets the numeric value at the specified jsonPath. The value is an integer, float, or
// double already converted to a string in the format desired by the application.
bool SetNumberOf(const wchar_t *jsonPath, const wchar_t *value);
// Sets the string value of the Nth member. Indexing is 0-based (the 1st member is
// at index 0).
bool SetStringAt(int index, const wchar_t *value);
// Sets the string value at the specified jsonPath.
bool SetStringOf(const wchar_t *jsonPath, const wchar_t *value);
// Returns the size of the array at the given jsonPath. Returns -1 if the jsonPath does not
// evaluate to an existent JSON array.
int SizeOfArray(const wchar_t *jsonPath);
// Sorts the JSON members by the member name.
void Sort(bool ascending, bool caseSensitive);
// Returns the string value of the Nth member. Indexing is 0-based (the 1st member
// is at index 0).
bool StringAt(int index, CkString &outStr);
// Returns the string value of the Nth member. Indexing is 0-based (the 1st member
// is at index 0).
const wchar_t *stringAt(int index);
// Returns the string value at the specified jsonPath.
bool StringOf(const wchar_t *jsonPath, CkString &outStr);
// Returns the string value at the specified jsonPath.
const wchar_t *stringOf(const wchar_t *jsonPath);
// Returns true if the string value at the specified jsonPath equals value. Otherwise
// returns false
bool StringOfEquals(const wchar_t *jsonPath, const wchar_t *value, bool caseSensitive);
// Appends the string value at the specified jsonPath to sb.
bool StringOfSb(const wchar_t *jsonPath, CkStringBuilderW &sb);
// Swaps the positions of members at index1 and index2.
bool Swap(int index1, int index2);
// Returns the type of data at the given index. Possible return values are:
// 1. string
// 2. number
// 3. object
// 4. array
// 5. boolean
// 6. null
// Returns -1 if no member exists at the given index.
int TypeAt(int index);
// Returns the unsigned integer at the specified jsonPath.
unsigned long UIntOf(const wchar_t *jsonPath);
// Updates or appends a new string member with the encoded contents of bd. If the
// full path specified by jsonPath does not exist, it is automatically created as
// needed. The bytes contained in bd are encoded according to encoding (such as
// base64 , hex , etc.)
bool UpdateBd(const wchar_t *jsonPath, const wchar_t *encoding, CkBinDataW &bd);
// Updates or appends a new boolean member. If the full path specified by jsonPath does
// not exist, it is automatically created as needed.
bool UpdateBool(const wchar_t *jsonPath, bool value);
// Updates or appends a new integer member. If the full path specified by jsonPath does
// not exist, it is automatically created as needed.
bool UpdateInt(const wchar_t *jsonPath, int value);
// Updates or appends a new and empty array at the jsonPath. If the full path specified
// by jsonPath does not exist, it is automatically created as needed.
bool UpdateNewArray(const wchar_t *jsonPath);
// Updates or appends a new and empty JSON object at the jsonPath. If the full path
// specified by jsonPath does not exist, it is automatically created as needed.
bool UpdateNewObject(const wchar_t *jsonPath);
// Updates or appends a null member. If the full path specified by jsonPath does not
// exist, it is automatically created as needed.
bool UpdateNull(const wchar_t *jsonPath);
// Updates or appends a new numeric member. If the full path specified by jsonPath does
// not exist, it is automatically created as needed.
bool UpdateNumber(const wchar_t *jsonPath, const wchar_t *numericStr);
// Updates or appends a new string member with the contents of sb. If the full
// path specified by jsonPath does not exist, it is automatically created as needed.
bool UpdateSb(const wchar_t *jsonPath, CkStringBuilderW &sb);
// Updates or appends a new string member. If the full path specified by jsonPath does
// not exist, it is automatically created as needed.
//
// Important: Prior to version 9.5.0.68, the string passed in to this method did
// not get properly JSON escaped. This could cause problems if non-us-ascii chars
// are present, or if certain special chars such as quotes, CR's, or LF's are
// present. Version 9.5.0.68 fixes the problem.
//
bool UpdateString(const wchar_t *jsonPath, const wchar_t *value);
// Updates or appends a new unsigned integer member. If the full path specified by
// jsonPath does not exist, it is automatically created as needed.
bool UpdateUInt(const wchar_t *jsonPath, unsigned long value);
// Saves the JSON to a file.
bool WriteFile(const wchar_t *path);
// END PUBLIC INTERFACE
};
#if !defined(__sun__) && !defined(__sun)
#pragma pack (pop)
#endif
#endif