unit Chilkat.JsonObject;

{
  Pascal wrapper for Chilkat JsonObject.
  Auto-generated by PascalWrapperGenerator -- do not edit manually.
}

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}

interface

uses
  SysUtils,
  Chilkat.Base;

type

  { TJsonObject wraps CkJsonObject via the C bridge layer. }
  TJsonObject = class(TChilkatBase)
  private
    function  GetLastErrorHtml: string;
    function  GetLastErrorText: string;
    function  GetLastErrorXml: string;
    function  GetVersion: string;
    function  GetDebugLogFilePath: string;
    procedure SetDebugLogFilePath(AValue: string);
    function  GetVerboseLogging: Boolean;
    procedure SetVerboseLogging(AValue: Boolean);
    function  GetLastMethodSuccess: Boolean;
    procedure SetLastMethodSuccess(AValue: Boolean);
    function  GetDelimiterChar: string;
    procedure SetDelimiterChar(AValue: string);
    function  GetEmitCompact: Boolean;
    procedure SetEmitCompact(AValue: Boolean);
    function  GetEmitCrLf: Boolean;
    procedure SetEmitCrLf(AValue: Boolean);
    function  GetI: Integer;
    procedure SetI(AValue: Integer);
    function  GetJ: Integer;
    procedure SetJ(AValue: Integer);
    function  GetK: Integer;
    procedure SetK(AValue: Integer);
    function  GetSize: Integer;
    function  GetPathPrefix: string;
    procedure SetPathPrefix(AValue: string);
    function  GetLowerCaseNames: Boolean;
    procedure SetLowerCaseNames(AValue: Boolean);
    function  GetUncommonOptions: string;
    procedure SetUncommonOptions(AValue: string);
    function  GetEnableSecrets: Boolean;
    procedure SetEnableSecrets(AValue: Boolean);
    function  GetStrict: Boolean;
    procedure SetStrict(AValue: Boolean);
  public
    constructor Create;
    destructor  Destroy; override;

    property LastErrorHtml: string read GetLastErrorHtml;
    property LastErrorText: string read GetLastErrorText;
    property LastErrorXml: string read GetLastErrorXml;
    property Version: string read GetVersion;
    property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;
    property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;
    property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;
    property DelimiterChar: string read GetDelimiterChar write SetDelimiterChar;
    property EmitCompact: Boolean read GetEmitCompact write SetEmitCompact;
    property EmitCrLf: Boolean read GetEmitCrLf write SetEmitCrLf;
    property I: Integer read GetI write SetI;
    property J: Integer read GetJ write SetJ;
    property K: Integer read GetK write SetK;
    property Size: Integer read GetSize;
    property PathPrefix: string read GetPathPrefix write SetPathPrefix;
    property LowerCaseNames: Boolean read GetLowerCaseNames write SetLowerCaseNames;
    property UncommonOptions: string read GetUncommonOptions write SetUncommonOptions;
    property EnableSecrets: Boolean read GetEnableSecrets write SetEnableSecrets;
    property Strict: Boolean read GetStrict write SetStrict;

    function  AddArrayAt(index: Integer; const name: string): Boolean;
    function  AddBoolAt(index: Integer; const name: string; value: Boolean): Boolean;
    function  AddIntAt(index: Integer; const name: string; value: Integer): Boolean;
    function  AddNullAt(index: Integer; const name: string): Boolean;
    function  AddNumberAt(index: Integer; const name: string; const numericStr: string): Boolean;
    function  AddObjectAt(index: Integer; const name: string): Boolean;
    function  AddStringAt(index: Integer; const name: string; const value: string): Boolean;
    function  AppendArray(const name: string): TChilkatBase;
    function  AppendBool(const name: string; value: Boolean): Boolean;
    function  AppendInt(const name: string; value: Integer): Boolean;
    function  AppendObject(const name: string): TChilkatBase;
    function  AppendString(const name: string; const value: string): Boolean;
    function  ArrayAt(index: Integer): TChilkatBase;
    function  ArrayOf(const jsonPath: string): TChilkatBase;
    function  BoolAt(index: Integer): Boolean;
    function  BoolOf(const jsonPath: string): Boolean;
    function  Delete(const name: string): Boolean;
    function  DeleteAt(index: Integer): Boolean;
    function  Emit: string;
    function  FirebaseApplyEvent(const name: string; const data: string): Boolean;
    function  FirebasePatch(const jsonPath: string; const jsonData: string): Boolean;
    function  FirebasePut(const jsonPath: string; const value: string): Boolean;
    function  GetDocRoot: TChilkatBase;
    function  HasMember(const jsonPath: string): Boolean;
    function  IndexOf(const name: string): Integer;
    function  IntAt(index: Integer): Integer;
    function  IntOf(const jsonPath: string): Integer;
    function  IsNullAt(index: Integer): Boolean;
    function  IsNullOf(const jsonPath: string): Boolean;
    function  Load(const json: string): Boolean;
    function  LoadFile(const path: string): Boolean;
    function  NameAt(index: Integer): string;
    function  ObjectAt(index: Integer): TChilkatBase;
    function  ObjectOf(const jsonPath: string): TChilkatBase;
    function  Rename(const oldName: string; const newName: string): Boolean;
    function  RenameAt(index: Integer; const name: string): Boolean;
    function  SetBoolAt(index: Integer; value: Boolean): Boolean;
    function  SetBoolOf(const jsonPath: string; value: Boolean): Boolean;
    function  SetIntAt(index: Integer; value: Integer): Boolean;
    function  SetIntOf(const jsonPath: string; value: Integer): Boolean;
    function  SetNullAt(index: Integer): Boolean;
    function  SetNullOf(const jsonPath: string): Boolean;
    function  SetNumberAt(index: Integer; const value: string): Boolean;
    function  SetNumberOf(const jsonPath: string; const value: string): Boolean;
    function  SetStringAt(index: Integer; const value: string): Boolean;
    function  SetStringOf(const jsonPath: string; const value: string): Boolean;
    function  SizeOfArray(const jsonPath: string): Integer;
    function  StringAt(index: Integer): string;
    function  StringOf(const jsonPath: string): string;
    function  TypeAt(index: Integer): Integer;
    function  LoadSb(sb: TChilkatBase): Boolean;
    function  EmitSb(sb: TChilkatBase): Boolean;
    function  UpdateString(const jsonPath: string; const value: string): Boolean;
    function  UpdateInt(const jsonPath: string; value: Integer): Boolean;
    function  UpdateBool(const jsonPath: string; value: Boolean): Boolean;
    function  FindRecord(const arrayPath: string; const relPath: string; const value: string; caseSensitive: Boolean): TChilkatBase;
    function  FindRecordString(const arrayPath: string; const relPath: string; const value: string; caseSensitive: Boolean; const retRelPath: string): string;
    function  UpdateNumber(const jsonPath: string; const numericStr: string): Boolean;
    function  UpdateNull(const jsonPath: string): Boolean;
    function  EmitWithSubs(subs: TChilkatBase; omitEmpty: Boolean): string;
    function  Predefine(const name: string): Boolean;
    function  LoadPredefined(const name: string): Boolean;
    function  AppendStringArray(const name: string; values: TChilkatBase): Boolean;
    function  FindObjectWithMember(const name: string): TChilkatBase;
    function  JsonTypeOf(const jsonPath: string): Integer;
    function  StringOfSb(const jsonPath: string; sb: TChilkatBase): Boolean;
    function  BytesOf(const jsonPath: string; const encoding: string; bd: TChilkatBase): Boolean;
    function  UpdateSb(const jsonPath: string; sb: TChilkatBase): Boolean;
    function  UpdateBd(const jsonPath: string; const encoding: string; bd: TChilkatBase): Boolean;
    function  DateOf(const jsonPath: string; dateTime: TChilkatBase): Boolean;
    function  DtOf(const jsonPath: string; bLocal: Boolean; dt: TChilkatBase): Boolean;
    function  UpdateNewArray(const jsonPath: string): Boolean;
    function  UpdateNewObject(const jsonPath: string): Boolean;
    procedure Clear;
    function  Swap(index1: Integer; index2: Integer): Boolean;
    function  WriteFile(const path: string): Boolean;
    function  LoadBd(bd: TChilkatBase): Boolean;
    function  EmitBd(bd: TChilkatBase): Boolean;
    function  MoveMember(fromIndex: Integer; toIndex: Integer): Boolean;
    function  AddArrayCopyAt(index: Integer; const name: string; jarr: TChilkatBase): Boolean;
    function  AddObjectCopyAt(index: Integer; const name: string; jsonObj: TChilkatBase): Boolean;
    function  AppendArrayCopy(const name: string; jarr: TChilkatBase): Boolean;
    function  AppendObjectCopy(const name: string; jsonObj: TChilkatBase): Boolean;
    function  DeleteRecords(const arrayPath: string; const relpath: string; const value: string; caseSensitive: Boolean): Integer;
    function  UpdateUInt(const jsonPath: string; value: LongWord): Boolean;
    function  UIntOf(const jsonPath: string): LongWord;
    function  StringOfEquals(const jsonPath: string; const value: string; caseSensitive: Boolean): Boolean;
    procedure Sort(ascending: Boolean; caseSensitive: Boolean);
    function  AppendArray2(const name: string; jarr: TChilkatBase): Boolean;
    function  AppendObject2(const name: string; jsonObj: TChilkatBase): Boolean;
    function  ArrayAt2(index: Integer; jarr: TChilkatBase): Boolean;
    function  ObjectAt2(index: Integer; jsonObj: TChilkatBase): Boolean;
    function  MakeCopy(json: TChilkatBase): Boolean;
    function  CopyRef(jsonObj: TChilkatBase): Boolean;
    function  FindObjectWithMember2(const name: string; jsonObj: TChilkatBase): Boolean;
    function  FindRecord2(const arrayPath: string; const relPath: string; const value: string; caseSensitive: Boolean; jsonObj: TChilkatBase): Boolean;
    function  GetDocRoot2(docRoot: TChilkatBase): Boolean;
    function  ObjectOf2(const jsonPath: string; jsonObj: TChilkatBase): Boolean;
    function  ArrayOf2(const jsonPath: string; jarr: TChilkatBase): Boolean;
    function  NewObjectOf(const path: string; const jObj: string): Boolean;
    function  NewArrayOf(const path: string; const jArr: string): Boolean;
  end;

implementation

uses
  CkDllLoader,
  Chilkat.Utils;

{ ---- C bridge function pointer types ---- }
type
  TCkJsonObject_Create  = function(): Pointer; cdecl;
  TCkJsonObject_Dispose = procedure(handle: Pointer); cdecl;
  TCkJsonObject_get_LastErrorHtml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_get_LastErrorText = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_get_LastErrorXml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_get_Version = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_get_DebugLogFilePath = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_put_DebugLogFilePath = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkJsonObject_get_VerboseLogging = function(handle: Pointer): LongBool; cdecl;
  TCkJsonObject_put_VerboseLogging = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkJsonObject_get_LastMethodSuccess = function(handle: Pointer): LongBool; cdecl;
  TCkJsonObject_put_LastMethodSuccess = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkJsonObject_get_DelimiterChar = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_put_DelimiterChar = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkJsonObject_get_EmitCompact = function(handle: Pointer): LongBool; cdecl;
  TCkJsonObject_put_EmitCompact = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkJsonObject_get_EmitCrLf = function(handle: Pointer): LongBool; cdecl;
  TCkJsonObject_put_EmitCrLf = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkJsonObject_get_I = function(handle: Pointer): Integer; cdecl;
  TCkJsonObject_put_I = procedure(handle: Pointer; value: Integer); cdecl;
  TCkJsonObject_get_J = function(handle: Pointer): Integer; cdecl;
  TCkJsonObject_put_J = procedure(handle: Pointer; value: Integer); cdecl;
  TCkJsonObject_get_K = function(handle: Pointer): Integer; cdecl;
  TCkJsonObject_put_K = procedure(handle: Pointer; value: Integer); cdecl;
  TCkJsonObject_get_Size = function(handle: Pointer): Integer; cdecl;
  TCkJsonObject_get_PathPrefix = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_put_PathPrefix = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkJsonObject_get_LowerCaseNames = function(handle: Pointer): LongBool; cdecl;
  TCkJsonObject_put_LowerCaseNames = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkJsonObject_get_UncommonOptions = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_put_UncommonOptions = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkJsonObject_get_EnableSecrets = function(handle: Pointer): LongBool; cdecl;
  TCkJsonObject_put_EnableSecrets = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkJsonObject_get_Strict = function(handle: Pointer): LongBool; cdecl;
  TCkJsonObject_put_Strict = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkJsonObject_AddArrayAt = function(handle: Pointer; index: Integer; name: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_AddBoolAt = function(handle: Pointer; index: Integer; name: PAnsiChar; value: LongBool): LongBool; cdecl;
  TCkJsonObject_AddIntAt = function(handle: Pointer; index: Integer; name: PAnsiChar; value: Integer): LongBool; cdecl;
  TCkJsonObject_AddNullAt = function(handle: Pointer; index: Integer; name: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_AddNumberAt = function(handle: Pointer; index: Integer; name: PAnsiChar; numericStr: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_AddObjectAt = function(handle: Pointer; index: Integer; name: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_AddStringAt = function(handle: Pointer; index: Integer; name: PAnsiChar; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_AppendArray = function(handle: Pointer; name: PAnsiChar): Pointer; cdecl;
  TCkJsonObject_AppendBool = function(handle: Pointer; name: PAnsiChar; value: LongBool): LongBool; cdecl;
  TCkJsonObject_AppendInt = function(handle: Pointer; name: PAnsiChar; value: Integer): LongBool; cdecl;
  TCkJsonObject_AppendObject = function(handle: Pointer; name: PAnsiChar): Pointer; cdecl;
  TCkJsonObject_AppendString = function(handle: Pointer; name: PAnsiChar; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_ArrayAt = function(handle: Pointer; index: Integer): Pointer; cdecl;
  TCkJsonObject_ArrayOf = function(handle: Pointer; jsonPath: PAnsiChar): Pointer; cdecl;
  TCkJsonObject_BoolAt = function(handle: Pointer; index: Integer): LongBool; cdecl;
  TCkJsonObject_BoolOf = function(handle: Pointer; jsonPath: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_Delete = function(handle: Pointer; name: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_DeleteAt = function(handle: Pointer; index: Integer): LongBool; cdecl;
  TCkJsonObject_Emit = function(handle: Pointer): PAnsiChar; cdecl;
  TCkJsonObject_FirebaseApplyEvent = function(handle: Pointer; name: PAnsiChar; data: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_FirebasePatch = function(handle: Pointer; jsonPath: PAnsiChar; jsonData: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_FirebasePut = function(handle: Pointer; jsonPath: PAnsiChar; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_GetDocRoot = function(handle: Pointer): Pointer; cdecl;
  TCkJsonObject_HasMember = function(handle: Pointer; jsonPath: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_IndexOf = function(handle: Pointer; name: PAnsiChar): Integer; cdecl;
  TCkJsonObject_IntAt = function(handle: Pointer; index: Integer): Integer; cdecl;
  TCkJsonObject_IntOf = function(handle: Pointer; jsonPath: PAnsiChar): Integer; cdecl;
  TCkJsonObject_IsNullAt = function(handle: Pointer; index: Integer): LongBool; cdecl;
  TCkJsonObject_IsNullOf = function(handle: Pointer; jsonPath: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_Load = function(handle: Pointer; json: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_LoadFile = function(handle: Pointer; path: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_NameAt = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkJsonObject_ObjectAt = function(handle: Pointer; index: Integer): Pointer; cdecl;
  TCkJsonObject_ObjectOf = function(handle: Pointer; jsonPath: PAnsiChar): Pointer; cdecl;
  TCkJsonObject_Rename = function(handle: Pointer; oldName: PAnsiChar; newName: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_RenameAt = function(handle: Pointer; index: Integer; name: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_SetBoolAt = function(handle: Pointer; index: Integer; value: LongBool): LongBool; cdecl;
  TCkJsonObject_SetBoolOf = function(handle: Pointer; jsonPath: PAnsiChar; value: LongBool): LongBool; cdecl;
  TCkJsonObject_SetIntAt = function(handle: Pointer; index: Integer; value: Integer): LongBool; cdecl;
  TCkJsonObject_SetIntOf = function(handle: Pointer; jsonPath: PAnsiChar; value: Integer): LongBool; cdecl;
  TCkJsonObject_SetNullAt = function(handle: Pointer; index: Integer): LongBool; cdecl;
  TCkJsonObject_SetNullOf = function(handle: Pointer; jsonPath: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_SetNumberAt = function(handle: Pointer; index: Integer; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_SetNumberOf = function(handle: Pointer; jsonPath: PAnsiChar; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_SetStringAt = function(handle: Pointer; index: Integer; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_SetStringOf = function(handle: Pointer; jsonPath: PAnsiChar; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_SizeOfArray = function(handle: Pointer; jsonPath: PAnsiChar): Integer; cdecl;
  TCkJsonObject_StringAt = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkJsonObject_StringOf = function(handle: Pointer; jsonPath: PAnsiChar): PAnsiChar; cdecl;
  TCkJsonObject_TypeAt = function(handle: Pointer; index: Integer): Integer; cdecl;
  TCkJsonObject_LoadSb = function(handle: Pointer; sb: Pointer): LongBool; cdecl;
  TCkJsonObject_EmitSb = function(handle: Pointer; sb: Pointer): LongBool; cdecl;
  TCkJsonObject_UpdateString = function(handle: Pointer; jsonPath: PAnsiChar; value: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_UpdateInt = function(handle: Pointer; jsonPath: PAnsiChar; value: Integer): LongBool; cdecl;
  TCkJsonObject_UpdateBool = function(handle: Pointer; jsonPath: PAnsiChar; value: LongBool): LongBool; cdecl;
  TCkJsonObject_FindRecord = function(handle: Pointer; arrayPath: PAnsiChar; relPath: PAnsiChar; value: PAnsiChar; caseSensitive: LongBool): Pointer; cdecl;
  TCkJsonObject_FindRecordString = function(handle: Pointer; arrayPath: PAnsiChar; relPath: PAnsiChar; value: PAnsiChar; caseSensitive: LongBool; retRelPath: PAnsiChar): PAnsiChar; cdecl;
  TCkJsonObject_UpdateNumber = function(handle: Pointer; jsonPath: PAnsiChar; numericStr: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_UpdateNull = function(handle: Pointer; jsonPath: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_EmitWithSubs = function(handle: Pointer; subs: Pointer; omitEmpty: LongBool): PAnsiChar; cdecl;
  TCkJsonObject_Predefine = function(handle: Pointer; name: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_LoadPredefined = function(handle: Pointer; name: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_AppendStringArray = function(handle: Pointer; name: PAnsiChar; values: Pointer): LongBool; cdecl;
  TCkJsonObject_FindObjectWithMember = function(handle: Pointer; name: PAnsiChar): Pointer; cdecl;
  TCkJsonObject_JsonTypeOf = function(handle: Pointer; jsonPath: PAnsiChar): Integer; cdecl;
  TCkJsonObject_StringOfSb = function(handle: Pointer; jsonPath: PAnsiChar; sb: Pointer): LongBool; cdecl;
  TCkJsonObject_BytesOf = function(handle: Pointer; jsonPath: PAnsiChar; encoding: PAnsiChar; bd: Pointer): LongBool; cdecl;
  TCkJsonObject_UpdateSb = function(handle: Pointer; jsonPath: PAnsiChar; sb: Pointer): LongBool; cdecl;
  TCkJsonObject_UpdateBd = function(handle: Pointer; jsonPath: PAnsiChar; encoding: PAnsiChar; bd: Pointer): LongBool; cdecl;
  TCkJsonObject_DateOf = function(handle: Pointer; jsonPath: PAnsiChar; dateTime: Pointer): LongBool; cdecl;
  TCkJsonObject_DtOf = function(handle: Pointer; jsonPath: PAnsiChar; bLocal: LongBool; dt: Pointer): LongBool; cdecl;
  TCkJsonObject_UpdateNewArray = function(handle: Pointer; jsonPath: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_UpdateNewObject = function(handle: Pointer; jsonPath: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_Clear = procedure(handle: Pointer); cdecl;
  TCkJsonObject_Swap = function(handle: Pointer; index1: Integer; index2: Integer): LongBool; cdecl;
  TCkJsonObject_WriteFile = function(handle: Pointer; path: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_LoadBd = function(handle: Pointer; bd: Pointer): LongBool; cdecl;
  TCkJsonObject_EmitBd = function(handle: Pointer; bd: Pointer): LongBool; cdecl;
  TCkJsonObject_MoveMember = function(handle: Pointer; fromIndex: Integer; toIndex: Integer): LongBool; cdecl;
  TCkJsonObject_AddArrayCopyAt = function(handle: Pointer; index: Integer; name: PAnsiChar; jarr: Pointer): LongBool; cdecl;
  TCkJsonObject_AddObjectCopyAt = function(handle: Pointer; index: Integer; name: PAnsiChar; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_AppendArrayCopy = function(handle: Pointer; name: PAnsiChar; jarr: Pointer): LongBool; cdecl;
  TCkJsonObject_AppendObjectCopy = function(handle: Pointer; name: PAnsiChar; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_DeleteRecords = function(handle: Pointer; arrayPath: PAnsiChar; relpath: PAnsiChar; value: PAnsiChar; caseSensitive: LongBool): Integer; cdecl;
  TCkJsonObject_UpdateUInt = function(handle: Pointer; jsonPath: PAnsiChar; value: LongWord): LongBool; cdecl;
  TCkJsonObject_UIntOf = function(handle: Pointer; jsonPath: PAnsiChar): LongWord; cdecl;
  TCkJsonObject_StringOfEquals = function(handle: Pointer; jsonPath: PAnsiChar; value: PAnsiChar; caseSensitive: LongBool): LongBool; cdecl;
  TCkJsonObject_Sort = procedure(handle: Pointer; ascending: LongBool; caseSensitive: LongBool); cdecl;
  TCkJsonObject_AppendArray2 = function(handle: Pointer; name: PAnsiChar; jarr: Pointer): LongBool; cdecl;
  TCkJsonObject_AppendObject2 = function(handle: Pointer; name: PAnsiChar; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_ArrayAt2 = function(handle: Pointer; index: Integer; jarr: Pointer): LongBool; cdecl;
  TCkJsonObject_ObjectAt2 = function(handle: Pointer; index: Integer; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_MakeCopy = function(handle: Pointer; json: Pointer): LongBool; cdecl;
  TCkJsonObject_CopyRef = function(handle: Pointer; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_FindObjectWithMember2 = function(handle: Pointer; name: PAnsiChar; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_FindRecord2 = function(handle: Pointer; arrayPath: PAnsiChar; relPath: PAnsiChar; value: PAnsiChar; caseSensitive: LongBool; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_GetDocRoot2 = function(handle: Pointer; docRoot: Pointer): LongBool; cdecl;
  TCkJsonObject_ObjectOf2 = function(handle: Pointer; jsonPath: PAnsiChar; jsonObj: Pointer): LongBool; cdecl;
  TCkJsonObject_ArrayOf2 = function(handle: Pointer; jsonPath: PAnsiChar; jarr: Pointer): LongBool; cdecl;
  TCkJsonObject_NewObjectOf = function(handle: Pointer; path: PAnsiChar; jObj: PAnsiChar): LongBool; cdecl;
  TCkJsonObject_NewArrayOf = function(handle: Pointer; path: PAnsiChar; jArr: PAnsiChar): LongBool; cdecl;

{ ---- C bridge function pointer variables ---- }
var
  CkJsonObject_Create:  TCkJsonObject_Create  = nil;
  CkJsonObject_Dispose: TCkJsonObject_Dispose = nil;
  CkJsonObject_get_LastErrorHtml: TCkJsonObject_get_LastErrorHtml = nil;
  CkJsonObject_get_LastErrorText: TCkJsonObject_get_LastErrorText = nil;
  CkJsonObject_get_LastErrorXml: TCkJsonObject_get_LastErrorXml = nil;
  CkJsonObject_get_Version: TCkJsonObject_get_Version = nil;
  CkJsonObject_get_DebugLogFilePath: TCkJsonObject_get_DebugLogFilePath = nil;
  CkJsonObject_put_DebugLogFilePath: TCkJsonObject_put_DebugLogFilePath = nil;
  CkJsonObject_get_VerboseLogging: TCkJsonObject_get_VerboseLogging = nil;
  CkJsonObject_put_VerboseLogging: TCkJsonObject_put_VerboseLogging = nil;
  CkJsonObject_get_LastMethodSuccess: TCkJsonObject_get_LastMethodSuccess = nil;
  CkJsonObject_put_LastMethodSuccess: TCkJsonObject_put_LastMethodSuccess = nil;
  CkJsonObject_get_DelimiterChar: TCkJsonObject_get_DelimiterChar = nil;
  CkJsonObject_put_DelimiterChar: TCkJsonObject_put_DelimiterChar = nil;
  CkJsonObject_get_EmitCompact: TCkJsonObject_get_EmitCompact = nil;
  CkJsonObject_put_EmitCompact: TCkJsonObject_put_EmitCompact = nil;
  CkJsonObject_get_EmitCrLf: TCkJsonObject_get_EmitCrLf = nil;
  CkJsonObject_put_EmitCrLf: TCkJsonObject_put_EmitCrLf = nil;
  CkJsonObject_get_I: TCkJsonObject_get_I = nil;
  CkJsonObject_put_I: TCkJsonObject_put_I = nil;
  CkJsonObject_get_J: TCkJsonObject_get_J = nil;
  CkJsonObject_put_J: TCkJsonObject_put_J = nil;
  CkJsonObject_get_K: TCkJsonObject_get_K = nil;
  CkJsonObject_put_K: TCkJsonObject_put_K = nil;
  CkJsonObject_get_Size: TCkJsonObject_get_Size = nil;
  CkJsonObject_get_PathPrefix: TCkJsonObject_get_PathPrefix = nil;
  CkJsonObject_put_PathPrefix: TCkJsonObject_put_PathPrefix = nil;
  CkJsonObject_get_LowerCaseNames: TCkJsonObject_get_LowerCaseNames = nil;
  CkJsonObject_put_LowerCaseNames: TCkJsonObject_put_LowerCaseNames = nil;
  CkJsonObject_get_UncommonOptions: TCkJsonObject_get_UncommonOptions = nil;
  CkJsonObject_put_UncommonOptions: TCkJsonObject_put_UncommonOptions = nil;
  CkJsonObject_get_EnableSecrets: TCkJsonObject_get_EnableSecrets = nil;
  CkJsonObject_put_EnableSecrets: TCkJsonObject_put_EnableSecrets = nil;
  CkJsonObject_get_Strict: TCkJsonObject_get_Strict = nil;
  CkJsonObject_put_Strict: TCkJsonObject_put_Strict = nil;
  CkJsonObject_AddArrayAt: TCkJsonObject_AddArrayAt = nil;
  CkJsonObject_AddBoolAt: TCkJsonObject_AddBoolAt = nil;
  CkJsonObject_AddIntAt: TCkJsonObject_AddIntAt = nil;
  CkJsonObject_AddNullAt: TCkJsonObject_AddNullAt = nil;
  CkJsonObject_AddNumberAt: TCkJsonObject_AddNumberAt = nil;
  CkJsonObject_AddObjectAt: TCkJsonObject_AddObjectAt = nil;
  CkJsonObject_AddStringAt: TCkJsonObject_AddStringAt = nil;
  CkJsonObject_AppendArray: TCkJsonObject_AppendArray = nil;
  CkJsonObject_AppendBool: TCkJsonObject_AppendBool = nil;
  CkJsonObject_AppendInt: TCkJsonObject_AppendInt = nil;
  CkJsonObject_AppendObject: TCkJsonObject_AppendObject = nil;
  CkJsonObject_AppendString: TCkJsonObject_AppendString = nil;
  CkJsonObject_ArrayAt: TCkJsonObject_ArrayAt = nil;
  CkJsonObject_ArrayOf: TCkJsonObject_ArrayOf = nil;
  CkJsonObject_BoolAt: TCkJsonObject_BoolAt = nil;
  CkJsonObject_BoolOf: TCkJsonObject_BoolOf = nil;
  CkJsonObject_Delete: TCkJsonObject_Delete = nil;
  CkJsonObject_DeleteAt: TCkJsonObject_DeleteAt = nil;
  CkJsonObject_Emit: TCkJsonObject_Emit = nil;
  CkJsonObject_FirebaseApplyEvent: TCkJsonObject_FirebaseApplyEvent = nil;
  CkJsonObject_FirebasePatch: TCkJsonObject_FirebasePatch = nil;
  CkJsonObject_FirebasePut: TCkJsonObject_FirebasePut = nil;
  CkJsonObject_GetDocRoot: TCkJsonObject_GetDocRoot = nil;
  CkJsonObject_HasMember: TCkJsonObject_HasMember = nil;
  CkJsonObject_IndexOf: TCkJsonObject_IndexOf = nil;
  CkJsonObject_IntAt: TCkJsonObject_IntAt = nil;
  CkJsonObject_IntOf: TCkJsonObject_IntOf = nil;
  CkJsonObject_IsNullAt: TCkJsonObject_IsNullAt = nil;
  CkJsonObject_IsNullOf: TCkJsonObject_IsNullOf = nil;
  CkJsonObject_Load: TCkJsonObject_Load = nil;
  CkJsonObject_LoadFile: TCkJsonObject_LoadFile = nil;
  CkJsonObject_NameAt: TCkJsonObject_NameAt = nil;
  CkJsonObject_ObjectAt: TCkJsonObject_ObjectAt = nil;
  CkJsonObject_ObjectOf: TCkJsonObject_ObjectOf = nil;
  CkJsonObject_Rename: TCkJsonObject_Rename = nil;
  CkJsonObject_RenameAt: TCkJsonObject_RenameAt = nil;
  CkJsonObject_SetBoolAt: TCkJsonObject_SetBoolAt = nil;
  CkJsonObject_SetBoolOf: TCkJsonObject_SetBoolOf = nil;
  CkJsonObject_SetIntAt: TCkJsonObject_SetIntAt = nil;
  CkJsonObject_SetIntOf: TCkJsonObject_SetIntOf = nil;
  CkJsonObject_SetNullAt: TCkJsonObject_SetNullAt = nil;
  CkJsonObject_SetNullOf: TCkJsonObject_SetNullOf = nil;
  CkJsonObject_SetNumberAt: TCkJsonObject_SetNumberAt = nil;
  CkJsonObject_SetNumberOf: TCkJsonObject_SetNumberOf = nil;
  CkJsonObject_SetStringAt: TCkJsonObject_SetStringAt = nil;
  CkJsonObject_SetStringOf: TCkJsonObject_SetStringOf = nil;
  CkJsonObject_SizeOfArray: TCkJsonObject_SizeOfArray = nil;
  CkJsonObject_StringAt: TCkJsonObject_StringAt = nil;
  CkJsonObject_StringOf: TCkJsonObject_StringOf = nil;
  CkJsonObject_TypeAt: TCkJsonObject_TypeAt = nil;
  CkJsonObject_LoadSb: TCkJsonObject_LoadSb = nil;
  CkJsonObject_EmitSb: TCkJsonObject_EmitSb = nil;
  CkJsonObject_UpdateString: TCkJsonObject_UpdateString = nil;
  CkJsonObject_UpdateInt: TCkJsonObject_UpdateInt = nil;
  CkJsonObject_UpdateBool: TCkJsonObject_UpdateBool = nil;
  CkJsonObject_FindRecord: TCkJsonObject_FindRecord = nil;
  CkJsonObject_FindRecordString: TCkJsonObject_FindRecordString = nil;
  CkJsonObject_UpdateNumber: TCkJsonObject_UpdateNumber = nil;
  CkJsonObject_UpdateNull: TCkJsonObject_UpdateNull = nil;
  CkJsonObject_EmitWithSubs: TCkJsonObject_EmitWithSubs = nil;
  CkJsonObject_Predefine: TCkJsonObject_Predefine = nil;
  CkJsonObject_LoadPredefined: TCkJsonObject_LoadPredefined = nil;
  CkJsonObject_AppendStringArray: TCkJsonObject_AppendStringArray = nil;
  CkJsonObject_FindObjectWithMember: TCkJsonObject_FindObjectWithMember = nil;
  CkJsonObject_JsonTypeOf: TCkJsonObject_JsonTypeOf = nil;
  CkJsonObject_StringOfSb: TCkJsonObject_StringOfSb = nil;
  CkJsonObject_BytesOf: TCkJsonObject_BytesOf = nil;
  CkJsonObject_UpdateSb: TCkJsonObject_UpdateSb = nil;
  CkJsonObject_UpdateBd: TCkJsonObject_UpdateBd = nil;
  CkJsonObject_DateOf: TCkJsonObject_DateOf = nil;
  CkJsonObject_DtOf: TCkJsonObject_DtOf = nil;
  CkJsonObject_UpdateNewArray: TCkJsonObject_UpdateNewArray = nil;
  CkJsonObject_UpdateNewObject: TCkJsonObject_UpdateNewObject = nil;
  CkJsonObject_Clear: TCkJsonObject_Clear = nil;
  CkJsonObject_Swap: TCkJsonObject_Swap = nil;
  CkJsonObject_WriteFile: TCkJsonObject_WriteFile = nil;
  CkJsonObject_LoadBd: TCkJsonObject_LoadBd = nil;
  CkJsonObject_EmitBd: TCkJsonObject_EmitBd = nil;
  CkJsonObject_MoveMember: TCkJsonObject_MoveMember = nil;
  CkJsonObject_AddArrayCopyAt: TCkJsonObject_AddArrayCopyAt = nil;
  CkJsonObject_AddObjectCopyAt: TCkJsonObject_AddObjectCopyAt = nil;
  CkJsonObject_AppendArrayCopy: TCkJsonObject_AppendArrayCopy = nil;
  CkJsonObject_AppendObjectCopy: TCkJsonObject_AppendObjectCopy = nil;
  CkJsonObject_DeleteRecords: TCkJsonObject_DeleteRecords = nil;
  CkJsonObject_UpdateUInt: TCkJsonObject_UpdateUInt = nil;
  CkJsonObject_UIntOf: TCkJsonObject_UIntOf = nil;
  CkJsonObject_StringOfEquals: TCkJsonObject_StringOfEquals = nil;
  CkJsonObject_Sort: TCkJsonObject_Sort = nil;
  CkJsonObject_AppendArray2: TCkJsonObject_AppendArray2 = nil;
  CkJsonObject_AppendObject2: TCkJsonObject_AppendObject2 = nil;
  CkJsonObject_ArrayAt2: TCkJsonObject_ArrayAt2 = nil;
  CkJsonObject_ObjectAt2: TCkJsonObject_ObjectAt2 = nil;
  CkJsonObject_MakeCopy: TCkJsonObject_MakeCopy = nil;
  CkJsonObject_CopyRef: TCkJsonObject_CopyRef = nil;
  CkJsonObject_FindObjectWithMember2: TCkJsonObject_FindObjectWithMember2 = nil;
  CkJsonObject_FindRecord2: TCkJsonObject_FindRecord2 = nil;
  CkJsonObject_GetDocRoot2: TCkJsonObject_GetDocRoot2 = nil;
  CkJsonObject_ObjectOf2: TCkJsonObject_ObjectOf2 = nil;
  CkJsonObject_ArrayOf2: TCkJsonObject_ArrayOf2 = nil;
  CkJsonObject_NewObjectOf: TCkJsonObject_NewObjectOf = nil;
  CkJsonObject_NewArrayOf: TCkJsonObject_NewArrayOf = nil;

constructor TJsonObject.Create;
begin
  inherited Create;
  FHandle := CkJsonObject_Create();
end;

destructor TJsonObject.Destroy;
begin
  if FHandle <> nil then
    CkJsonObject_Dispose(FHandle);
  FHandle := nil;
  inherited;
end;

function TJsonObject.GetLastErrorHtml: string;
begin
  Result := CkToStr(CkJsonObject_get_LastErrorHtml(FHandle));
end;

function TJsonObject.GetLastErrorText: string;
begin
  Result := CkToStr(CkJsonObject_get_LastErrorText(FHandle));
end;

function TJsonObject.GetLastErrorXml: string;
begin
  Result := CkToStr(CkJsonObject_get_LastErrorXml(FHandle));
end;

function TJsonObject.GetVersion: string;
begin
  Result := CkToStr(CkJsonObject_get_Version(FHandle));
end;

function TJsonObject.GetDebugLogFilePath: string;
begin
  Result := CkToStr(CkJsonObject_get_DebugLogFilePath(FHandle));
end;

procedure TJsonObject.SetDebugLogFilePath(AValue: string);
begin
  CkJsonObject_put_DebugLogFilePath(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TJsonObject.GetVerboseLogging: Boolean;
begin
  Result := Boolean(CkJsonObject_get_VerboseLogging(FHandle));
end;

procedure TJsonObject.SetVerboseLogging(AValue: Boolean);
begin
  CkJsonObject_put_VerboseLogging(FHandle, LongBool(AValue));
end;

function TJsonObject.GetLastMethodSuccess: Boolean;
begin
  Result := Boolean(CkJsonObject_get_LastMethodSuccess(FHandle));
end;

procedure TJsonObject.SetLastMethodSuccess(AValue: Boolean);
begin
  CkJsonObject_put_LastMethodSuccess(FHandle, LongBool(AValue));
end;

function TJsonObject.GetDelimiterChar: string;
begin
  Result := CkToStr(CkJsonObject_get_DelimiterChar(FHandle));
end;

procedure TJsonObject.SetDelimiterChar(AValue: string);
begin
  CkJsonObject_put_DelimiterChar(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TJsonObject.GetEmitCompact: Boolean;
begin
  Result := Boolean(CkJsonObject_get_EmitCompact(FHandle));
end;

procedure TJsonObject.SetEmitCompact(AValue: Boolean);
begin
  CkJsonObject_put_EmitCompact(FHandle, LongBool(AValue));
end;

function TJsonObject.GetEmitCrLf: Boolean;
begin
  Result := Boolean(CkJsonObject_get_EmitCrLf(FHandle));
end;

procedure TJsonObject.SetEmitCrLf(AValue: Boolean);
begin
  CkJsonObject_put_EmitCrLf(FHandle, LongBool(AValue));
end;

function TJsonObject.GetI: Integer;
begin
  Result := CkJsonObject_get_I(FHandle);
end;

procedure TJsonObject.SetI(AValue: Integer);
begin
  CkJsonObject_put_I(FHandle, AValue);
end;

function TJsonObject.GetJ: Integer;
begin
  Result := CkJsonObject_get_J(FHandle);
end;

procedure TJsonObject.SetJ(AValue: Integer);
begin
  CkJsonObject_put_J(FHandle, AValue);
end;

function TJsonObject.GetK: Integer;
begin
  Result := CkJsonObject_get_K(FHandle);
end;

procedure TJsonObject.SetK(AValue: Integer);
begin
  CkJsonObject_put_K(FHandle, AValue);
end;

function TJsonObject.GetSize: Integer;
begin
  Result := CkJsonObject_get_Size(FHandle);
end;

function TJsonObject.GetPathPrefix: string;
begin
  Result := CkToStr(CkJsonObject_get_PathPrefix(FHandle));
end;

procedure TJsonObject.SetPathPrefix(AValue: string);
begin
  CkJsonObject_put_PathPrefix(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TJsonObject.GetLowerCaseNames: Boolean;
begin
  Result := Boolean(CkJsonObject_get_LowerCaseNames(FHandle));
end;

procedure TJsonObject.SetLowerCaseNames(AValue: Boolean);
begin
  CkJsonObject_put_LowerCaseNames(FHandle, LongBool(AValue));
end;

function TJsonObject.GetUncommonOptions: string;
begin
  Result := CkToStr(CkJsonObject_get_UncommonOptions(FHandle));
end;

procedure TJsonObject.SetUncommonOptions(AValue: string);
begin
  CkJsonObject_put_UncommonOptions(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TJsonObject.GetEnableSecrets: Boolean;
begin
  Result := Boolean(CkJsonObject_get_EnableSecrets(FHandle));
end;

procedure TJsonObject.SetEnableSecrets(AValue: Boolean);
begin
  CkJsonObject_put_EnableSecrets(FHandle, LongBool(AValue));
end;

function TJsonObject.GetStrict: Boolean;
begin
  Result := Boolean(CkJsonObject_get_Strict(FHandle));
end;

procedure TJsonObject.SetStrict(AValue: Boolean);
begin
  CkJsonObject_put_Strict(FHandle, LongBool(AValue));
end;

function TJsonObject.AddArrayAt(index: Integer; const name: string): Boolean;
begin
  Result := Boolean(CkJsonObject_AddArrayAt(FHandle, index, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.AddBoolAt(index: Integer; const name: string; value: Boolean): Boolean;
begin
  Result := Boolean(CkJsonObject_AddBoolAt(FHandle, index, PAnsiChar(StrToCk(name)), LongBool(value)));
end;

function TJsonObject.AddIntAt(index: Integer; const name: string; value: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_AddIntAt(FHandle, index, PAnsiChar(StrToCk(name)), value));
end;

function TJsonObject.AddNullAt(index: Integer; const name: string): Boolean;
begin
  Result := Boolean(CkJsonObject_AddNullAt(FHandle, index, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.AddNumberAt(index: Integer; const name: string; const numericStr: string): Boolean;
begin
  Result := Boolean(CkJsonObject_AddNumberAt(FHandle, index, PAnsiChar(StrToCk(name)), PAnsiChar(StrToCk(numericStr))));
end;

function TJsonObject.AddObjectAt(index: Integer; const name: string): Boolean;
begin
  Result := Boolean(CkJsonObject_AddObjectAt(FHandle, index, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.AddStringAt(index: Integer; const name: string; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_AddStringAt(FHandle, index, PAnsiChar(StrToCk(name)), PAnsiChar(StrToCk(value))));
end;

function TJsonObject.AppendArray(const name: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_AppendArray(FHandle, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.AppendBool(const name: string; value: Boolean): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendBool(FHandle, PAnsiChar(StrToCk(name)), LongBool(value)));
end;

function TJsonObject.AppendInt(const name: string; value: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendInt(FHandle, PAnsiChar(StrToCk(name)), value));
end;

function TJsonObject.AppendObject(const name: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_AppendObject(FHandle, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.AppendString(const name: string; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendString(FHandle, PAnsiChar(StrToCk(name)), PAnsiChar(StrToCk(value))));
end;

function TJsonObject.ArrayAt(index: Integer): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_ArrayAt(FHandle, index));
end;

function TJsonObject.ArrayOf(const jsonPath: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_ArrayOf(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.BoolAt(index: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_BoolAt(FHandle, index));
end;

function TJsonObject.BoolOf(const jsonPath: string): Boolean;
begin
  Result := Boolean(CkJsonObject_BoolOf(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.Delete(const name: string): Boolean;
begin
  Result := Boolean(CkJsonObject_Delete(FHandle, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.DeleteAt(index: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_DeleteAt(FHandle, index));
end;

function TJsonObject.Emit: string;
begin
  Result := CkToStr(CkJsonObject_Emit(FHandle));
end;

function TJsonObject.FirebaseApplyEvent(const name: string; const data: string): Boolean;
begin
  Result := Boolean(CkJsonObject_FirebaseApplyEvent(FHandle, PAnsiChar(StrToCk(name)), PAnsiChar(StrToCk(data))));
end;

function TJsonObject.FirebasePatch(const jsonPath: string; const jsonData: string): Boolean;
begin
  Result := Boolean(CkJsonObject_FirebasePatch(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(jsonData))));
end;

function TJsonObject.FirebasePut(const jsonPath: string; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_FirebasePut(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(value))));
end;

function TJsonObject.GetDocRoot: TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_GetDocRoot(FHandle));
end;

function TJsonObject.HasMember(const jsonPath: string): Boolean;
begin
  Result := Boolean(CkJsonObject_HasMember(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.IndexOf(const name: string): Integer;
begin
  Result := CkJsonObject_IndexOf(FHandle, PAnsiChar(StrToCk(name)));
end;

function TJsonObject.IntAt(index: Integer): Integer;
begin
  Result := CkJsonObject_IntAt(FHandle, index);
end;

function TJsonObject.IntOf(const jsonPath: string): Integer;
begin
  Result := CkJsonObject_IntOf(FHandle, PAnsiChar(StrToCk(jsonPath)));
end;

function TJsonObject.IsNullAt(index: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_IsNullAt(FHandle, index));
end;

function TJsonObject.IsNullOf(const jsonPath: string): Boolean;
begin
  Result := Boolean(CkJsonObject_IsNullOf(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.Load(const json: string): Boolean;
begin
  Result := Boolean(CkJsonObject_Load(FHandle, PAnsiChar(StrToCk(json))));
end;

function TJsonObject.LoadFile(const path: string): Boolean;
begin
  Result := Boolean(CkJsonObject_LoadFile(FHandle, PAnsiChar(StrToCk(path))));
end;

function TJsonObject.NameAt(index: Integer): string;
begin
  Result := CkToStr(CkJsonObject_NameAt(FHandle, index));
end;

function TJsonObject.ObjectAt(index: Integer): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_ObjectAt(FHandle, index));
end;

function TJsonObject.ObjectOf(const jsonPath: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_ObjectOf(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.Rename(const oldName: string; const newName: string): Boolean;
begin
  Result := Boolean(CkJsonObject_Rename(FHandle, PAnsiChar(StrToCk(oldName)), PAnsiChar(StrToCk(newName))));
end;

function TJsonObject.RenameAt(index: Integer; const name: string): Boolean;
begin
  Result := Boolean(CkJsonObject_RenameAt(FHandle, index, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.SetBoolAt(index: Integer; value: Boolean): Boolean;
begin
  Result := Boolean(CkJsonObject_SetBoolAt(FHandle, index, LongBool(value)));
end;

function TJsonObject.SetBoolOf(const jsonPath: string; value: Boolean): Boolean;
begin
  Result := Boolean(CkJsonObject_SetBoolOf(FHandle, PAnsiChar(StrToCk(jsonPath)), LongBool(value)));
end;

function TJsonObject.SetIntAt(index: Integer; value: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_SetIntAt(FHandle, index, value));
end;

function TJsonObject.SetIntOf(const jsonPath: string; value: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_SetIntOf(FHandle, PAnsiChar(StrToCk(jsonPath)), value));
end;

function TJsonObject.SetNullAt(index: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_SetNullAt(FHandle, index));
end;

function TJsonObject.SetNullOf(const jsonPath: string): Boolean;
begin
  Result := Boolean(CkJsonObject_SetNullOf(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.SetNumberAt(index: Integer; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_SetNumberAt(FHandle, index, PAnsiChar(StrToCk(value))));
end;

function TJsonObject.SetNumberOf(const jsonPath: string; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_SetNumberOf(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(value))));
end;

function TJsonObject.SetStringAt(index: Integer; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_SetStringAt(FHandle, index, PAnsiChar(StrToCk(value))));
end;

function TJsonObject.SetStringOf(const jsonPath: string; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_SetStringOf(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(value))));
end;

function TJsonObject.SizeOfArray(const jsonPath: string): Integer;
begin
  Result := CkJsonObject_SizeOfArray(FHandle, PAnsiChar(StrToCk(jsonPath)));
end;

function TJsonObject.StringAt(index: Integer): string;
begin
  Result := CkToStr(CkJsonObject_StringAt(FHandle, index));
end;

function TJsonObject.StringOf(const jsonPath: string): string;
begin
  Result := CkToStr(CkJsonObject_StringOf(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.TypeAt(index: Integer): Integer;
begin
  Result := CkJsonObject_TypeAt(FHandle, index);
end;

function TJsonObject.LoadSb(sb: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_LoadSb(FHandle, sb.Handle));
end;

function TJsonObject.EmitSb(sb: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_EmitSb(FHandle, sb.Handle));
end;

function TJsonObject.UpdateString(const jsonPath: string; const value: string): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateString(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(value))));
end;

function TJsonObject.UpdateInt(const jsonPath: string; value: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateInt(FHandle, PAnsiChar(StrToCk(jsonPath)), value));
end;

function TJsonObject.UpdateBool(const jsonPath: string; value: Boolean): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateBool(FHandle, PAnsiChar(StrToCk(jsonPath)), LongBool(value)));
end;

function TJsonObject.FindRecord(const arrayPath: string; const relPath: string; const value: string; caseSensitive: Boolean): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_FindRecord(FHandle, PAnsiChar(StrToCk(arrayPath)), PAnsiChar(StrToCk(relPath)), PAnsiChar(StrToCk(value)), LongBool(caseSensitive)));
end;

function TJsonObject.FindRecordString(const arrayPath: string; const relPath: string; const value: string; caseSensitive: Boolean; const retRelPath: string): string;
begin
  Result := CkToStr(CkJsonObject_FindRecordString(FHandle, PAnsiChar(StrToCk(arrayPath)), PAnsiChar(StrToCk(relPath)), PAnsiChar(StrToCk(value)), LongBool(caseSensitive), PAnsiChar(StrToCk(retRelPath))));
end;

function TJsonObject.UpdateNumber(const jsonPath: string; const numericStr: string): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateNumber(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(numericStr))));
end;

function TJsonObject.UpdateNull(const jsonPath: string): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateNull(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.EmitWithSubs(subs: TChilkatBase; omitEmpty: Boolean): string;
begin
  Result := CkToStr(CkJsonObject_EmitWithSubs(FHandle, subs.Handle, LongBool(omitEmpty)));
end;

function TJsonObject.Predefine(const name: string): Boolean;
begin
  Result := Boolean(CkJsonObject_Predefine(FHandle, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.LoadPredefined(const name: string): Boolean;
begin
  Result := Boolean(CkJsonObject_LoadPredefined(FHandle, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.AppendStringArray(const name: string; values: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendStringArray(FHandle, PAnsiChar(StrToCk(name)), values.Handle));
end;

function TJsonObject.FindObjectWithMember(const name: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkJsonObject_FindObjectWithMember(FHandle, PAnsiChar(StrToCk(name))));
end;

function TJsonObject.JsonTypeOf(const jsonPath: string): Integer;
begin
  Result := CkJsonObject_JsonTypeOf(FHandle, PAnsiChar(StrToCk(jsonPath)));
end;

function TJsonObject.StringOfSb(const jsonPath: string; sb: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_StringOfSb(FHandle, PAnsiChar(StrToCk(jsonPath)), sb.Handle));
end;

function TJsonObject.BytesOf(const jsonPath: string; const encoding: string; bd: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_BytesOf(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(encoding)), bd.Handle));
end;

function TJsonObject.UpdateSb(const jsonPath: string; sb: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateSb(FHandle, PAnsiChar(StrToCk(jsonPath)), sb.Handle));
end;

function TJsonObject.UpdateBd(const jsonPath: string; const encoding: string; bd: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateBd(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(encoding)), bd.Handle));
end;

function TJsonObject.DateOf(const jsonPath: string; dateTime: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_DateOf(FHandle, PAnsiChar(StrToCk(jsonPath)), dateTime.Handle));
end;

function TJsonObject.DtOf(const jsonPath: string; bLocal: Boolean; dt: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_DtOf(FHandle, PAnsiChar(StrToCk(jsonPath)), LongBool(bLocal), dt.Handle));
end;

function TJsonObject.UpdateNewArray(const jsonPath: string): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateNewArray(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

function TJsonObject.UpdateNewObject(const jsonPath: string): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateNewObject(FHandle, PAnsiChar(StrToCk(jsonPath))));
end;

procedure TJsonObject.Clear;
begin
  CkJsonObject_Clear(FHandle);
end;

function TJsonObject.Swap(index1: Integer; index2: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_Swap(FHandle, index1, index2));
end;

function TJsonObject.WriteFile(const path: string): Boolean;
begin
  Result := Boolean(CkJsonObject_WriteFile(FHandle, PAnsiChar(StrToCk(path))));
end;

function TJsonObject.LoadBd(bd: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_LoadBd(FHandle, bd.Handle));
end;

function TJsonObject.EmitBd(bd: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_EmitBd(FHandle, bd.Handle));
end;

function TJsonObject.MoveMember(fromIndex: Integer; toIndex: Integer): Boolean;
begin
  Result := Boolean(CkJsonObject_MoveMember(FHandle, fromIndex, toIndex));
end;

function TJsonObject.AddArrayCopyAt(index: Integer; const name: string; jarr: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_AddArrayCopyAt(FHandle, index, PAnsiChar(StrToCk(name)), jarr.Handle));
end;

function TJsonObject.AddObjectCopyAt(index: Integer; const name: string; jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_AddObjectCopyAt(FHandle, index, PAnsiChar(StrToCk(name)), jsonObj.Handle));
end;

function TJsonObject.AppendArrayCopy(const name: string; jarr: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendArrayCopy(FHandle, PAnsiChar(StrToCk(name)), jarr.Handle));
end;

function TJsonObject.AppendObjectCopy(const name: string; jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendObjectCopy(FHandle, PAnsiChar(StrToCk(name)), jsonObj.Handle));
end;

function TJsonObject.DeleteRecords(const arrayPath: string; const relpath: string; const value: string; caseSensitive: Boolean): Integer;
begin
  Result := CkJsonObject_DeleteRecords(FHandle, PAnsiChar(StrToCk(arrayPath)), PAnsiChar(StrToCk(relpath)), PAnsiChar(StrToCk(value)), LongBool(caseSensitive));
end;

function TJsonObject.UpdateUInt(const jsonPath: string; value: LongWord): Boolean;
begin
  Result := Boolean(CkJsonObject_UpdateUInt(FHandle, PAnsiChar(StrToCk(jsonPath)), value));
end;

function TJsonObject.UIntOf(const jsonPath: string): LongWord;
begin
  Result := CkJsonObject_UIntOf(FHandle, PAnsiChar(StrToCk(jsonPath)));
end;

function TJsonObject.StringOfEquals(const jsonPath: string; const value: string; caseSensitive: Boolean): Boolean;
begin
  Result := Boolean(CkJsonObject_StringOfEquals(FHandle, PAnsiChar(StrToCk(jsonPath)), PAnsiChar(StrToCk(value)), LongBool(caseSensitive)));
end;

procedure TJsonObject.Sort(ascending: Boolean; caseSensitive: Boolean);
begin
  CkJsonObject_Sort(FHandle, LongBool(ascending), LongBool(caseSensitive));
end;

function TJsonObject.AppendArray2(const name: string; jarr: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendArray2(FHandle, PAnsiChar(StrToCk(name)), jarr.Handle));
end;

function TJsonObject.AppendObject2(const name: string; jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_AppendObject2(FHandle, PAnsiChar(StrToCk(name)), jsonObj.Handle));
end;

function TJsonObject.ArrayAt2(index: Integer; jarr: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_ArrayAt2(FHandle, index, jarr.Handle));
end;

function TJsonObject.ObjectAt2(index: Integer; jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_ObjectAt2(FHandle, index, jsonObj.Handle));
end;

function TJsonObject.MakeCopy(json: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_MakeCopy(FHandle, json.Handle));
end;

function TJsonObject.CopyRef(jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_CopyRef(FHandle, jsonObj.Handle));
end;

function TJsonObject.FindObjectWithMember2(const name: string; jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_FindObjectWithMember2(FHandle, PAnsiChar(StrToCk(name)), jsonObj.Handle));
end;

function TJsonObject.FindRecord2(const arrayPath: string; const relPath: string; const value: string; caseSensitive: Boolean; jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_FindRecord2(FHandle, PAnsiChar(StrToCk(arrayPath)), PAnsiChar(StrToCk(relPath)), PAnsiChar(StrToCk(value)), LongBool(caseSensitive), jsonObj.Handle));
end;

function TJsonObject.GetDocRoot2(docRoot: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_GetDocRoot2(FHandle, docRoot.Handle));
end;

function TJsonObject.ObjectOf2(const jsonPath: string; jsonObj: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_ObjectOf2(FHandle, PAnsiChar(StrToCk(jsonPath)), jsonObj.Handle));
end;

function TJsonObject.ArrayOf2(const jsonPath: string; jarr: TChilkatBase): Boolean;
begin
  Result := Boolean(CkJsonObject_ArrayOf2(FHandle, PAnsiChar(StrToCk(jsonPath)), jarr.Handle));
end;

function TJsonObject.NewObjectOf(const path: string; const jObj: string): Boolean;
begin
  Result := Boolean(CkJsonObject_NewObjectOf(FHandle, PAnsiChar(StrToCk(path)), PAnsiChar(StrToCk(jObj))));
end;

function TJsonObject.NewArrayOf(const path: string; const jArr: string): Boolean;
begin
  Result := Boolean(CkJsonObject_NewArrayOf(FHandle, PAnsiChar(StrToCk(path)), PAnsiChar(StrToCk(jArr))));
end;

initialization
  Chilkat_GetProcedureAddress(CkJsonObject_Create,  'CkJsonObject_Create');
  Chilkat_GetProcedureAddress(CkJsonObject_Dispose, 'CkJsonObject_Dispose');
  Chilkat_GetProcedureAddress(CkJsonObject_get_LastErrorHtml, 'CkJsonObject_get_LastErrorHtml');
  Chilkat_GetProcedureAddress(CkJsonObject_get_LastErrorText, 'CkJsonObject_get_LastErrorText');
  Chilkat_GetProcedureAddress(CkJsonObject_get_LastErrorXml, 'CkJsonObject_get_LastErrorXml');
  Chilkat_GetProcedureAddress(CkJsonObject_get_Version, 'CkJsonObject_get_Version');
  Chilkat_GetProcedureAddress(CkJsonObject_get_DebugLogFilePath, 'CkJsonObject_get_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkJsonObject_put_DebugLogFilePath, 'CkJsonObject_put_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkJsonObject_get_VerboseLogging, 'CkJsonObject_get_VerboseLogging');
  Chilkat_GetProcedureAddress(CkJsonObject_put_VerboseLogging, 'CkJsonObject_put_VerboseLogging');
  Chilkat_GetProcedureAddress(CkJsonObject_get_LastMethodSuccess, 'CkJsonObject_get_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkJsonObject_put_LastMethodSuccess, 'CkJsonObject_put_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkJsonObject_get_DelimiterChar, 'CkJsonObject_get_DelimiterChar');
  Chilkat_GetProcedureAddress(CkJsonObject_put_DelimiterChar, 'CkJsonObject_put_DelimiterChar');
  Chilkat_GetProcedureAddress(CkJsonObject_get_EmitCompact, 'CkJsonObject_get_EmitCompact');
  Chilkat_GetProcedureAddress(CkJsonObject_put_EmitCompact, 'CkJsonObject_put_EmitCompact');
  Chilkat_GetProcedureAddress(CkJsonObject_get_EmitCrLf, 'CkJsonObject_get_EmitCrLf');
  Chilkat_GetProcedureAddress(CkJsonObject_put_EmitCrLf, 'CkJsonObject_put_EmitCrLf');
  Chilkat_GetProcedureAddress(CkJsonObject_get_I, 'CkJsonObject_get_I');
  Chilkat_GetProcedureAddress(CkJsonObject_put_I, 'CkJsonObject_put_I');
  Chilkat_GetProcedureAddress(CkJsonObject_get_J, 'CkJsonObject_get_J');
  Chilkat_GetProcedureAddress(CkJsonObject_put_J, 'CkJsonObject_put_J');
  Chilkat_GetProcedureAddress(CkJsonObject_get_K, 'CkJsonObject_get_K');
  Chilkat_GetProcedureAddress(CkJsonObject_put_K, 'CkJsonObject_put_K');
  Chilkat_GetProcedureAddress(CkJsonObject_get_Size, 'CkJsonObject_get_Size');
  Chilkat_GetProcedureAddress(CkJsonObject_get_PathPrefix, 'CkJsonObject_get_PathPrefix');
  Chilkat_GetProcedureAddress(CkJsonObject_put_PathPrefix, 'CkJsonObject_put_PathPrefix');
  Chilkat_GetProcedureAddress(CkJsonObject_get_LowerCaseNames, 'CkJsonObject_get_LowerCaseNames');
  Chilkat_GetProcedureAddress(CkJsonObject_put_LowerCaseNames, 'CkJsonObject_put_LowerCaseNames');
  Chilkat_GetProcedureAddress(CkJsonObject_get_UncommonOptions, 'CkJsonObject_get_UncommonOptions');
  Chilkat_GetProcedureAddress(CkJsonObject_put_UncommonOptions, 'CkJsonObject_put_UncommonOptions');
  Chilkat_GetProcedureAddress(CkJsonObject_get_EnableSecrets, 'CkJsonObject_get_EnableSecrets');
  Chilkat_GetProcedureAddress(CkJsonObject_put_EnableSecrets, 'CkJsonObject_put_EnableSecrets');
  Chilkat_GetProcedureAddress(CkJsonObject_get_Strict, 'CkJsonObject_get_Strict');
  Chilkat_GetProcedureAddress(CkJsonObject_put_Strict, 'CkJsonObject_put_Strict');
  Chilkat_GetProcedureAddress(CkJsonObject_AddArrayAt, 'CkJsonObject_AddArrayAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AddBoolAt, 'CkJsonObject_AddBoolAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AddIntAt, 'CkJsonObject_AddIntAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AddNullAt, 'CkJsonObject_AddNullAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AddNumberAt, 'CkJsonObject_AddNumberAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AddObjectAt, 'CkJsonObject_AddObjectAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AddStringAt, 'CkJsonObject_AddStringAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendArray, 'CkJsonObject_AppendArray');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendBool, 'CkJsonObject_AppendBool');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendInt, 'CkJsonObject_AppendInt');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendObject, 'CkJsonObject_AppendObject');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendString, 'CkJsonObject_AppendString');
  Chilkat_GetProcedureAddress(CkJsonObject_ArrayAt, 'CkJsonObject_ArrayAt');
  Chilkat_GetProcedureAddress(CkJsonObject_ArrayOf, 'CkJsonObject_ArrayOf');
  Chilkat_GetProcedureAddress(CkJsonObject_BoolAt, 'CkJsonObject_BoolAt');
  Chilkat_GetProcedureAddress(CkJsonObject_BoolOf, 'CkJsonObject_BoolOf');
  Chilkat_GetProcedureAddress(CkJsonObject_Delete, 'CkJsonObject_Delete');
  Chilkat_GetProcedureAddress(CkJsonObject_DeleteAt, 'CkJsonObject_DeleteAt');
  Chilkat_GetProcedureAddress(CkJsonObject_Emit, 'CkJsonObject_Emit');
  Chilkat_GetProcedureAddress(CkJsonObject_FirebaseApplyEvent, 'CkJsonObject_FirebaseApplyEvent');
  Chilkat_GetProcedureAddress(CkJsonObject_FirebasePatch, 'CkJsonObject_FirebasePatch');
  Chilkat_GetProcedureAddress(CkJsonObject_FirebasePut, 'CkJsonObject_FirebasePut');
  Chilkat_GetProcedureAddress(CkJsonObject_GetDocRoot, 'CkJsonObject_GetDocRoot');
  Chilkat_GetProcedureAddress(CkJsonObject_HasMember, 'CkJsonObject_HasMember');
  Chilkat_GetProcedureAddress(CkJsonObject_IndexOf, 'CkJsonObject_IndexOf');
  Chilkat_GetProcedureAddress(CkJsonObject_IntAt, 'CkJsonObject_IntAt');
  Chilkat_GetProcedureAddress(CkJsonObject_IntOf, 'CkJsonObject_IntOf');
  Chilkat_GetProcedureAddress(CkJsonObject_IsNullAt, 'CkJsonObject_IsNullAt');
  Chilkat_GetProcedureAddress(CkJsonObject_IsNullOf, 'CkJsonObject_IsNullOf');
  Chilkat_GetProcedureAddress(CkJsonObject_Load, 'CkJsonObject_Load');
  Chilkat_GetProcedureAddress(CkJsonObject_LoadFile, 'CkJsonObject_LoadFile');
  Chilkat_GetProcedureAddress(CkJsonObject_NameAt, 'CkJsonObject_NameAt');
  Chilkat_GetProcedureAddress(CkJsonObject_ObjectAt, 'CkJsonObject_ObjectAt');
  Chilkat_GetProcedureAddress(CkJsonObject_ObjectOf, 'CkJsonObject_ObjectOf');
  Chilkat_GetProcedureAddress(CkJsonObject_Rename, 'CkJsonObject_Rename');
  Chilkat_GetProcedureAddress(CkJsonObject_RenameAt, 'CkJsonObject_RenameAt');
  Chilkat_GetProcedureAddress(CkJsonObject_SetBoolAt, 'CkJsonObject_SetBoolAt');
  Chilkat_GetProcedureAddress(CkJsonObject_SetBoolOf, 'CkJsonObject_SetBoolOf');
  Chilkat_GetProcedureAddress(CkJsonObject_SetIntAt, 'CkJsonObject_SetIntAt');
  Chilkat_GetProcedureAddress(CkJsonObject_SetIntOf, 'CkJsonObject_SetIntOf');
  Chilkat_GetProcedureAddress(CkJsonObject_SetNullAt, 'CkJsonObject_SetNullAt');
  Chilkat_GetProcedureAddress(CkJsonObject_SetNullOf, 'CkJsonObject_SetNullOf');
  Chilkat_GetProcedureAddress(CkJsonObject_SetNumberAt, 'CkJsonObject_SetNumberAt');
  Chilkat_GetProcedureAddress(CkJsonObject_SetNumberOf, 'CkJsonObject_SetNumberOf');
  Chilkat_GetProcedureAddress(CkJsonObject_SetStringAt, 'CkJsonObject_SetStringAt');
  Chilkat_GetProcedureAddress(CkJsonObject_SetStringOf, 'CkJsonObject_SetStringOf');
  Chilkat_GetProcedureAddress(CkJsonObject_SizeOfArray, 'CkJsonObject_SizeOfArray');
  Chilkat_GetProcedureAddress(CkJsonObject_StringAt, 'CkJsonObject_StringAt');
  Chilkat_GetProcedureAddress(CkJsonObject_StringOf, 'CkJsonObject_StringOf');
  Chilkat_GetProcedureAddress(CkJsonObject_TypeAt, 'CkJsonObject_TypeAt');
  Chilkat_GetProcedureAddress(CkJsonObject_LoadSb, 'CkJsonObject_LoadSb');
  Chilkat_GetProcedureAddress(CkJsonObject_EmitSb, 'CkJsonObject_EmitSb');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateString, 'CkJsonObject_UpdateString');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateInt, 'CkJsonObject_UpdateInt');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateBool, 'CkJsonObject_UpdateBool');
  Chilkat_GetProcedureAddress(CkJsonObject_FindRecord, 'CkJsonObject_FindRecord');
  Chilkat_GetProcedureAddress(CkJsonObject_FindRecordString, 'CkJsonObject_FindRecordString');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateNumber, 'CkJsonObject_UpdateNumber');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateNull, 'CkJsonObject_UpdateNull');
  Chilkat_GetProcedureAddress(CkJsonObject_EmitWithSubs, 'CkJsonObject_EmitWithSubs');
  Chilkat_GetProcedureAddress(CkJsonObject_Predefine, 'CkJsonObject_Predefine');
  Chilkat_GetProcedureAddress(CkJsonObject_LoadPredefined, 'CkJsonObject_LoadPredefined');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendStringArray, 'CkJsonObject_AppendStringArray');
  Chilkat_GetProcedureAddress(CkJsonObject_FindObjectWithMember, 'CkJsonObject_FindObjectWithMember');
  Chilkat_GetProcedureAddress(CkJsonObject_JsonTypeOf, 'CkJsonObject_JsonTypeOf');
  Chilkat_GetProcedureAddress(CkJsonObject_StringOfSb, 'CkJsonObject_StringOfSb');
  Chilkat_GetProcedureAddress(CkJsonObject_BytesOf, 'CkJsonObject_BytesOf');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateSb, 'CkJsonObject_UpdateSb');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateBd, 'CkJsonObject_UpdateBd');
  Chilkat_GetProcedureAddress(CkJsonObject_DateOf, 'CkJsonObject_DateOf');
  Chilkat_GetProcedureAddress(CkJsonObject_DtOf, 'CkJsonObject_DtOf');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateNewArray, 'CkJsonObject_UpdateNewArray');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateNewObject, 'CkJsonObject_UpdateNewObject');
  Chilkat_GetProcedureAddress(CkJsonObject_Clear, 'CkJsonObject_Clear');
  Chilkat_GetProcedureAddress(CkJsonObject_Swap, 'CkJsonObject_Swap');
  Chilkat_GetProcedureAddress(CkJsonObject_WriteFile, 'CkJsonObject_WriteFile');
  Chilkat_GetProcedureAddress(CkJsonObject_LoadBd, 'CkJsonObject_LoadBd');
  Chilkat_GetProcedureAddress(CkJsonObject_EmitBd, 'CkJsonObject_EmitBd');
  Chilkat_GetProcedureAddress(CkJsonObject_MoveMember, 'CkJsonObject_MoveMember');
  Chilkat_GetProcedureAddress(CkJsonObject_AddArrayCopyAt, 'CkJsonObject_AddArrayCopyAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AddObjectCopyAt, 'CkJsonObject_AddObjectCopyAt');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendArrayCopy, 'CkJsonObject_AppendArrayCopy');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendObjectCopy, 'CkJsonObject_AppendObjectCopy');
  Chilkat_GetProcedureAddress(CkJsonObject_DeleteRecords, 'CkJsonObject_DeleteRecords');
  Chilkat_GetProcedureAddress(CkJsonObject_UpdateUInt, 'CkJsonObject_UpdateUInt');
  Chilkat_GetProcedureAddress(CkJsonObject_UIntOf, 'CkJsonObject_UIntOf');
  Chilkat_GetProcedureAddress(CkJsonObject_StringOfEquals, 'CkJsonObject_StringOfEquals');
  Chilkat_GetProcedureAddress(CkJsonObject_Sort, 'CkJsonObject_Sort');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendArray2, 'CkJsonObject_AppendArray2');
  Chilkat_GetProcedureAddress(CkJsonObject_AppendObject2, 'CkJsonObject_AppendObject2');
  Chilkat_GetProcedureAddress(CkJsonObject_ArrayAt2, 'CkJsonObject_ArrayAt2');
  Chilkat_GetProcedureAddress(CkJsonObject_ObjectAt2, 'CkJsonObject_ObjectAt2');
  Chilkat_GetProcedureAddress(CkJsonObject_MakeCopy, 'CkJsonObject_MakeCopy');
  Chilkat_GetProcedureAddress(CkJsonObject_CopyRef, 'CkJsonObject_CopyRef');
  Chilkat_GetProcedureAddress(CkJsonObject_FindObjectWithMember2, 'CkJsonObject_FindObjectWithMember2');
  Chilkat_GetProcedureAddress(CkJsonObject_FindRecord2, 'CkJsonObject_FindRecord2');
  Chilkat_GetProcedureAddress(CkJsonObject_GetDocRoot2, 'CkJsonObject_GetDocRoot2');
  Chilkat_GetProcedureAddress(CkJsonObject_ObjectOf2, 'CkJsonObject_ObjectOf2');
  Chilkat_GetProcedureAddress(CkJsonObject_ArrayOf2, 'CkJsonObject_ArrayOf2');
  Chilkat_GetProcedureAddress(CkJsonObject_NewObjectOf, 'CkJsonObject_NewObjectOf');
  Chilkat_GetProcedureAddress(CkJsonObject_NewArrayOf, 'CkJsonObject_NewArrayOf');

end.
