mirror of
https://github.com/Jackzmc/sourcemod-plugins.git
synced 2025-05-06 21:43:22 +00:00
400 lines
14 KiB
SourcePawn
400 lines
14 KiB
SourcePawn
// Decoding flags
|
|
enum
|
|
{
|
|
JSON_REJECT_DUPLICATES = 0x1, /**< Error if any JSON object contains duplicate keys */
|
|
JSON_DISABLE_EOF_CHECK = 0x2, /**< Allow extra data after a valid JSON array or object */
|
|
JSON_DECODE_ANY = 0x4, /**< Decode any value */
|
|
JSON_DECODE_INT_AS_REAL = 0x8, /**< Interpret all numbers as floats */
|
|
JSON_ALLOW_NUL = 0x10 /**< Allow \u0000 escape inside string values */
|
|
};
|
|
|
|
// Encoding flags
|
|
enum
|
|
{
|
|
JSON_COMPACT = 0x20, /**< Compact representation */
|
|
JSON_ENSURE_ASCII = 0x40, /**< Escape all Unicode characters outside the ASCII range */
|
|
JSON_SORT_KEYS = 0x80, /**< Sort object keys */
|
|
JSON_ENCODE_ANY = 0x200, /**< Encode any value */
|
|
JSON_ESCAPE_SLASH = 0x400, /**< Escape / with \/ */
|
|
JSON_EMBED = 0x10000 /**< Omit opening and closing braces of the top-level object */
|
|
};
|
|
|
|
// Maximum indentation
|
|
static const int JSON_MAX_INDENT = 0x1F;
|
|
|
|
// Pretty-print the result, indenting with n spaces
|
|
stock int JSON_INDENT(int n)
|
|
{
|
|
return n & JSON_MAX_INDENT;
|
|
}
|
|
|
|
// Output floats with at most n digits of precision
|
|
stock int JSON_REAL_PRECISION(int n)
|
|
{
|
|
return (n & 0x1F) << 11;
|
|
}
|
|
|
|
// Generic type for encoding JSON.
|
|
methodmap JSON < Handle
|
|
{
|
|
// Writes the JSON string representation to a file.
|
|
//
|
|
// @param file File to write to.
|
|
// @param flags Encoding flags.
|
|
// @return True on success, false on failure.
|
|
public native bool ToFile(const char[] file, int flags = 0);
|
|
|
|
// Retrieves the JSON string representation.
|
|
//
|
|
// @param buffer String buffer to write to.
|
|
// @param maxlength Maximum length of the string buffer.
|
|
// @param flags Encoding flags.
|
|
// @return True on success, false on failure.
|
|
public native bool ToString(char[] buffer, int maxlength, int flags = 0);
|
|
};
|
|
|
|
methodmap JSONObject < JSON
|
|
{
|
|
// Creates a JSON object. A JSON object maps strings (called "keys") to values. Keys in a
|
|
// JSON object are unique. That is, there is at most one entry in the map for a given key.
|
|
//
|
|
// The JSONObject must be freed via delete or CloseHandle().
|
|
public native JSONObject();
|
|
|
|
// Loads a JSON object from a file.
|
|
//
|
|
// @param file File to read from.
|
|
// @param flags Decoding flags.
|
|
// @return Object handle, or null on failure.
|
|
// @error Invalid JSON.
|
|
public static native JSONObject FromFile(const char[] file, int flags = 0);
|
|
|
|
// Loads a JSON object from a string.
|
|
//
|
|
// @param buffer String buffer to load into the JSON object.
|
|
// @param flags Decoding flags.
|
|
// @return Object handle, or null on failure.
|
|
// @error Invalid JSON.
|
|
public static native JSONObject FromString(const char[] buffer, int flags = 0);
|
|
|
|
// Retrieves an array or object value from the object.
|
|
//
|
|
// The JSON must be freed via delete or CloseHandle().
|
|
//
|
|
// @param key Key string.
|
|
// @return Value read.
|
|
// @error Invalid key.
|
|
public native JSON Get(const char[] key);
|
|
|
|
// Retrieves a boolean value from the object.
|
|
//
|
|
// @param key Key string.
|
|
// @return Value read.
|
|
// @error Invalid key.
|
|
public native bool GetBool(const char[] key);
|
|
|
|
// Retrieves a float value from the object.
|
|
//
|
|
// @param key Key string.
|
|
// @return Value read.
|
|
// @error Invalid key.
|
|
public native float GetFloat(const char[] key);
|
|
|
|
// Retrieves an integer value from the object.
|
|
//
|
|
// @param key Key string.
|
|
// @return Value read.
|
|
// @error Invalid key.
|
|
public native int GetInt(const char[] key);
|
|
|
|
// Retrieves a 64-bit integer value from the object.
|
|
//
|
|
// @param key Key string.
|
|
// @param buffer String buffer to store value.
|
|
// @param maxlength Maximum length of the string buffer.
|
|
// @return True on success, false if the key was not found.
|
|
public native bool GetInt64(const char[] key, char[] buffer, int maxlength);
|
|
|
|
// Retrieves a string value from the object.
|
|
//
|
|
// @param key Key string.
|
|
// @param buffer String buffer to store value.
|
|
// @param maxlength Maximum length of the string buffer.
|
|
// @return True on success. False if the key was not found, or the value is not a string.
|
|
public native bool GetString(const char[] key, char[] buffer, int maxlength);
|
|
|
|
// Returns whether or not a value in the object is null.
|
|
//
|
|
// @param key Key string.
|
|
// @return True if the value is null, false otherwise.
|
|
// @error Invalid key.
|
|
public native bool IsNull(const char[] key);
|
|
|
|
// Returns whether or not a key exists in the object.
|
|
//
|
|
// @param key Key string.
|
|
// @return True if the key exists, false otherwise.
|
|
public native bool HasKey(const char[] key);
|
|
|
|
// Sets an array or object value in the object, either inserting a new entry or replacing an old one.
|
|
//
|
|
// @param key Key string.
|
|
// @param value Value to store at this key.
|
|
// @return True on success, false on failure.
|
|
public native bool Set(const char[] key, JSON value);
|
|
|
|
// Sets a boolean value in the object, either inserting a new entry or replacing an old one.
|
|
//
|
|
// @param key Key string.
|
|
// @param value Value to store at this key.
|
|
// @return True on success, false on failure.
|
|
public native bool SetBool(const char[] key, bool value);
|
|
|
|
// Sets a float value in the object, either inserting a new entry or replacing an old one.
|
|
//
|
|
// @param key Key string.
|
|
// @param value Value to store at this key.
|
|
// @return True on success, false on failure.
|
|
public native bool SetFloat(const char[] key, float value);
|
|
|
|
// Sets an integer value in the object, either inserting a new entry or replacing an old one.
|
|
//
|
|
// @param key Key string.
|
|
// @param value Value to store at this key.
|
|
// @return True on success, false on failure.
|
|
public native bool SetInt(const char[] key, int value);
|
|
|
|
// Sets a 64-bit integer value in the object, either inserting a new entry or replacing an old one.
|
|
//
|
|
// @param key Key string.
|
|
// @param value Value to store at this key.
|
|
// @return True on success, false on failure.
|
|
public native bool SetInt64(const char[] key, const char[] value);
|
|
|
|
// Sets a null value in the object, either inserting a new entry or replacing an old one.
|
|
//
|
|
// @param key Key string.
|
|
// @return True on success, false on failure.
|
|
public native bool SetNull(const char[] key);
|
|
|
|
// Sets a string value in the object, either inserting a new entry or replacing an old one.
|
|
//
|
|
// @param key Key string.
|
|
// @param value Value to store at this key.
|
|
// @return True on success, false on failure.
|
|
public native bool SetString(const char[] key, const char[] value);
|
|
|
|
// Removes an entry from the object.
|
|
//
|
|
// @param key Key string.
|
|
// @return True on success, false if the key was not found.
|
|
public native bool Remove(const char[] key);
|
|
|
|
// Clears the object of all entries.
|
|
// @return True on success, false on failure.
|
|
public native bool Clear();
|
|
|
|
// Returns an iterator for the object's keys. See JSONObjectKeys.
|
|
public native JSONObjectKeys Keys();
|
|
|
|
// Retrieves the size of the object.
|
|
property int Size {
|
|
public native get();
|
|
}
|
|
};
|
|
|
|
/**
|
|
* A JSONObjectKeys is created via JSONObject.Keys(). It allows the keys of an
|
|
* object to be iterated. The JSONObjectKeys must be freed with delete or
|
|
* CloseHandle().
|
|
*/
|
|
methodmap JSONObjectKeys < Handle
|
|
{
|
|
// Reads an object key, then advances to the next key if any.
|
|
//
|
|
// @param buffer String buffer to store key.
|
|
// @param maxlength Maximum length of the string buffer.
|
|
// @return True on success, false if there are no more keys.
|
|
public native bool ReadKey(char[] buffer, int maxlength);
|
|
};
|
|
|
|
methodmap JSONArray < JSON
|
|
{
|
|
// Creates a JSON array.
|
|
//
|
|
// The JSONArray must be freed via delete or CloseHandle().
|
|
public native JSONArray();
|
|
|
|
// Loads a JSON array from a file.
|
|
//
|
|
// @param file File to read from.
|
|
// @param flags Decoding flags.
|
|
// @return Array handle, or null on failure.
|
|
// @error Invalid JSON.
|
|
public static native JSONArray FromFile(const char[] file, int flags = 0);
|
|
|
|
// Loads a JSON array from a string.
|
|
//
|
|
// @param buffer String buffer to load into the JSON array.
|
|
// @param flags Decoding flags.
|
|
// @return Array handle, or null on failure.
|
|
// @error Invalid JSON.
|
|
public static native JSONArray FromString(const char[] buffer, int flags = 0);
|
|
|
|
// Retrieves an array or object value from the array.
|
|
//
|
|
// The JSON must be freed via delete or CloseHandle().
|
|
//
|
|
// @param index Index in the array.
|
|
// @return Value read.
|
|
// @error Invalid index.
|
|
public native JSON Get(int index);
|
|
|
|
// Retrieves a boolean value from the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @return Value read.
|
|
// @error Invalid index.
|
|
public native bool GetBool(int index);
|
|
|
|
// Retrieves a float value from the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @return Value read.
|
|
// @error Invalid index.
|
|
public native float GetFloat(int index);
|
|
|
|
// Retrieves an integer value from the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @return Value read.
|
|
// @error Invalid index.
|
|
public native int GetInt(int index);
|
|
|
|
// Retrieves an 64-bit integer value from the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param buffer Buffer to copy to.
|
|
// @param maxlength Maximum size of the buffer.
|
|
// @error Invalid index.
|
|
public native void GetInt64(int index, char[] buffer, int maxlength);
|
|
|
|
// Retrieves a string value from the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param buffer Buffer to copy to.
|
|
// @param maxlength Maximum size of the buffer.
|
|
// @return True on success, false if the value is not a string.
|
|
// @error Invalid index.
|
|
public native bool GetString(int index, char[] buffer, int maxlength);
|
|
|
|
// Returns whether or not a value in the array is null.
|
|
//
|
|
// @param index Index in the array.
|
|
// @return True if the value is null, false otherwise.
|
|
// @error Invalid index.
|
|
public native bool IsNull(int index);
|
|
|
|
// Sets an array or object value in the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param value Value to set.
|
|
// @return True on success, false on failure.
|
|
public native bool Set(int index, JSON value);
|
|
|
|
// Sets a boolean value in the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param value Value to set.
|
|
// @return True on success, false on failure.
|
|
public native bool SetBool(int index, bool value);
|
|
|
|
// Sets a float value in the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param value Value to set.
|
|
// @return True on success, false on failure.
|
|
public native bool SetFloat(int index, float value);
|
|
|
|
// Sets an integer value in the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param value Value to set.
|
|
// @return True on success, false on failure.
|
|
public native bool SetInt(int index, int value);
|
|
|
|
// Sets a 64 bit integer value in the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param value 64-bit integer value to set.
|
|
// @return True on success, false on failure.
|
|
public native bool SetInt64(int index, const char[] value);
|
|
|
|
// Sets a null value in the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @return True on success, false on failure.
|
|
public native bool SetNull(int index);
|
|
|
|
// Sets a string value in the array.
|
|
//
|
|
// @param index Index in the array.
|
|
// @param value String value to set.
|
|
// @return True on success, false on failure.
|
|
public native bool SetString(int index, const char[] value);
|
|
|
|
// Pushes an array or object value onto the end of the array, adding a new index.
|
|
//
|
|
// @param value Value to push.
|
|
// @return True on success, false on failure.
|
|
public native bool Push(JSON value);
|
|
|
|
// Pushes a boolean value onto the end of the array, adding a new index.
|
|
//
|
|
// @param value Value to push.
|
|
// @return True on success, false on failure.
|
|
public native bool PushBool(bool value);
|
|
|
|
// Pushes a float value onto the end of the array, adding a new index.
|
|
//
|
|
// @param value Value to push.
|
|
// @return True on success, false on failure.
|
|
public native bool PushFloat(float value);
|
|
|
|
// Pushes an integer value onto the end of the array, adding a new index.
|
|
//
|
|
// @param value Value to push.
|
|
// @return True on success, false on failure.
|
|
public native bool PushInt(int value);
|
|
|
|
// Pushes a 64-bit integer value onto the end of the array, adding a new index.
|
|
//
|
|
// @param value 64-bit integer value to push.
|
|
// @return True on success, false on failure.
|
|
public native bool PushInt64(const char[] value);
|
|
|
|
// Pushes a null value onto the end of the array, adding a new index.
|
|
// @return True on success, false on failure.
|
|
public native bool PushNull();
|
|
|
|
// Pushes a string value onto the end of the array, adding a new index.
|
|
//
|
|
// @param value String value to push.
|
|
// @return True on success, false on failure.
|
|
public native bool PushString(const char[] value);
|
|
|
|
// Removes an entry from the array.
|
|
//
|
|
// @param index Index in the array to remove.
|
|
// @return True on success, false on invalid index.
|
|
public native bool Remove(int index);
|
|
|
|
// Clears the array of all entries.
|
|
// @return True on success, false on failure.
|
|
public native bool Clear();
|
|
|
|
// Retrieves the size of the array.
|
|
property int Length {
|
|
public native get();
|
|
}
|
|
};
|