unit Chilkat.Xmp;

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

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

interface

uses
  SysUtils,
  Chilkat.Base;

type

  { TXmp wraps CkXmp via the C bridge layer. }
  TXmp = 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  GetNumEmbedded: Integer;
    function  GetStructInnerDescrip: Boolean;
    procedure SetStructInnerDescrip(AValue: Boolean);
    function  GetUncommonOptions: string;
    procedure SetUncommonOptions(AValue: string);
  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 NumEmbedded: Integer read GetNumEmbedded;
    property StructInnerDescrip: Boolean read GetStructInnerDescrip write SetStructInnerDescrip;
    property UncommonOptions: string read GetUncommonOptions write SetUncommonOptions;

    function  AddArray(xml: TChilkatBase; const arrType: string; const propName: string; values: TChilkatBase): Boolean;
    procedure AddNsMapping(const ns: string; const uri: string);
    function  AddSimpleInt(iXml: TChilkatBase; const propName: string; propVal: Integer): Boolean;
    function  AddSimpleStr(iXml: TChilkatBase; const propName: string; const propVal: string): Boolean;
    function  AddStructProp(iChilkatXml: TChilkatBase; const structName: string; const propName: string; const propValue: string): Boolean;
    function  Append(iXml: TChilkatBase): Boolean;
    function  GetArray(iXml: TChilkatBase; const propName: string): TChilkatBase;
    function  GetEmbedded(index: Integer): TChilkatBase;
    function  GetProperty(iXml: TChilkatBase; const propName: string): TChilkatBase;
    function  GetSimpleInt(iXml: TChilkatBase; const propName: string): Integer;
    function  GetSimpleStr(iXml: TChilkatBase; const propName: string): string;
    function  GetStructPropNames(iXml: TChilkatBase; const structName: string): TChilkatBase;
    function  GetStructValue(iXml: TChilkatBase; const structName: string; const propName: string): string;
    function  LoadAppFile(const filename: string): Boolean;
    function  NewXmp: TChilkatBase;
    function  RemoveAllEmbedded: Boolean;
    function  RemoveArray(iXml: TChilkatBase; const propName: string): Boolean;
    function  RemoveEmbedded(index: Integer): Boolean;
    procedure RemoveNsMapping(const ns: string);
    function  RemoveSimple(iXml: TChilkatBase; const propName: string): Boolean;
    function  RemoveStruct(iXml: TChilkatBase; const structName: string): Boolean;
    function  RemoveStructProp(iXml: TChilkatBase; const structName: string; const propName: string): Boolean;
    function  SaveAppFile(const filename: string): Boolean;
  end;

implementation

uses
  CkDllLoader,
  Chilkat.Utils;

{ ---- C bridge function pointer types ---- }
type
  TCkXmp_Create  = function(): Pointer; cdecl;
  TCkXmp_Dispose = procedure(handle: Pointer); cdecl;
  TCkXmp_get_LastErrorHtml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkXmp_get_LastErrorText = function(handle: Pointer): PAnsiChar; cdecl;
  TCkXmp_get_LastErrorXml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkXmp_get_Version = function(handle: Pointer): PAnsiChar; cdecl;
  TCkXmp_get_DebugLogFilePath = function(handle: Pointer): PAnsiChar; cdecl;
  TCkXmp_put_DebugLogFilePath = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkXmp_get_VerboseLogging = function(handle: Pointer): LongBool; cdecl;
  TCkXmp_put_VerboseLogging = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkXmp_get_LastMethodSuccess = function(handle: Pointer): LongBool; cdecl;
  TCkXmp_put_LastMethodSuccess = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkXmp_get_NumEmbedded = function(handle: Pointer): Integer; cdecl;
  TCkXmp_get_StructInnerDescrip = function(handle: Pointer): LongBool; cdecl;
  TCkXmp_put_StructInnerDescrip = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkXmp_get_UncommonOptions = function(handle: Pointer): PAnsiChar; cdecl;
  TCkXmp_put_UncommonOptions = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkXmp_AddArray = function(handle: Pointer; xml: Pointer; arrType: PAnsiChar; propName: PAnsiChar; values: Pointer): LongBool; cdecl;
  TCkXmp_AddNsMapping = procedure(handle: Pointer; ns: PAnsiChar; uri: PAnsiChar); cdecl;
  TCkXmp_AddSimpleInt = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar; propVal: Integer): LongBool; cdecl;
  TCkXmp_AddSimpleStr = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar; propVal: PAnsiChar): LongBool; cdecl;
  TCkXmp_AddStructProp = function(handle: Pointer; iChilkatXml: Pointer; structName: PAnsiChar; propName: PAnsiChar; propValue: PAnsiChar): LongBool; cdecl;
  TCkXmp_Append = function(handle: Pointer; iXml: Pointer): LongBool; cdecl;
  TCkXmp_GetArray = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar): Pointer; cdecl;
  TCkXmp_GetEmbedded = function(handle: Pointer; index: Integer): Pointer; cdecl;
  TCkXmp_GetProperty = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar): Pointer; cdecl;
  TCkXmp_GetSimpleInt = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar): Integer; cdecl;
  TCkXmp_GetSimpleStr = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar): PAnsiChar; cdecl;
  TCkXmp_GetStructPropNames = function(handle: Pointer; iXml: Pointer; structName: PAnsiChar): Pointer; cdecl;
  TCkXmp_GetStructValue = function(handle: Pointer; iXml: Pointer; structName: PAnsiChar; propName: PAnsiChar): PAnsiChar; cdecl;
  TCkXmp_LoadAppFile = function(handle: Pointer; filename: PAnsiChar): LongBool; cdecl;
  TCkXmp_NewXmp = function(handle: Pointer): Pointer; cdecl;
  TCkXmp_RemoveAllEmbedded = function(handle: Pointer): LongBool; cdecl;
  TCkXmp_RemoveArray = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar): LongBool; cdecl;
  TCkXmp_RemoveEmbedded = function(handle: Pointer; index: Integer): LongBool; cdecl;
  TCkXmp_RemoveNsMapping = procedure(handle: Pointer; ns: PAnsiChar); cdecl;
  TCkXmp_RemoveSimple = function(handle: Pointer; iXml: Pointer; propName: PAnsiChar): LongBool; cdecl;
  TCkXmp_RemoveStruct = function(handle: Pointer; iXml: Pointer; structName: PAnsiChar): LongBool; cdecl;
  TCkXmp_RemoveStructProp = function(handle: Pointer; iXml: Pointer; structName: PAnsiChar; propName: PAnsiChar): LongBool; cdecl;
  TCkXmp_SaveAppFile = function(handle: Pointer; filename: PAnsiChar): LongBool; cdecl;

{ ---- C bridge function pointer variables ---- }
var
  CkXmp_Create:  TCkXmp_Create  = nil;
  CkXmp_Dispose: TCkXmp_Dispose = nil;
  CkXmp_get_LastErrorHtml: TCkXmp_get_LastErrorHtml = nil;
  CkXmp_get_LastErrorText: TCkXmp_get_LastErrorText = nil;
  CkXmp_get_LastErrorXml: TCkXmp_get_LastErrorXml = nil;
  CkXmp_get_Version: TCkXmp_get_Version = nil;
  CkXmp_get_DebugLogFilePath: TCkXmp_get_DebugLogFilePath = nil;
  CkXmp_put_DebugLogFilePath: TCkXmp_put_DebugLogFilePath = nil;
  CkXmp_get_VerboseLogging: TCkXmp_get_VerboseLogging = nil;
  CkXmp_put_VerboseLogging: TCkXmp_put_VerboseLogging = nil;
  CkXmp_get_LastMethodSuccess: TCkXmp_get_LastMethodSuccess = nil;
  CkXmp_put_LastMethodSuccess: TCkXmp_put_LastMethodSuccess = nil;
  CkXmp_get_NumEmbedded: TCkXmp_get_NumEmbedded = nil;
  CkXmp_get_StructInnerDescrip: TCkXmp_get_StructInnerDescrip = nil;
  CkXmp_put_StructInnerDescrip: TCkXmp_put_StructInnerDescrip = nil;
  CkXmp_get_UncommonOptions: TCkXmp_get_UncommonOptions = nil;
  CkXmp_put_UncommonOptions: TCkXmp_put_UncommonOptions = nil;
  CkXmp_AddArray: TCkXmp_AddArray = nil;
  CkXmp_AddNsMapping: TCkXmp_AddNsMapping = nil;
  CkXmp_AddSimpleInt: TCkXmp_AddSimpleInt = nil;
  CkXmp_AddSimpleStr: TCkXmp_AddSimpleStr = nil;
  CkXmp_AddStructProp: TCkXmp_AddStructProp = nil;
  CkXmp_Append: TCkXmp_Append = nil;
  CkXmp_GetArray: TCkXmp_GetArray = nil;
  CkXmp_GetEmbedded: TCkXmp_GetEmbedded = nil;
  CkXmp_GetProperty: TCkXmp_GetProperty = nil;
  CkXmp_GetSimpleInt: TCkXmp_GetSimpleInt = nil;
  CkXmp_GetSimpleStr: TCkXmp_GetSimpleStr = nil;
  CkXmp_GetStructPropNames: TCkXmp_GetStructPropNames = nil;
  CkXmp_GetStructValue: TCkXmp_GetStructValue = nil;
  CkXmp_LoadAppFile: TCkXmp_LoadAppFile = nil;
  CkXmp_NewXmp: TCkXmp_NewXmp = nil;
  CkXmp_RemoveAllEmbedded: TCkXmp_RemoveAllEmbedded = nil;
  CkXmp_RemoveArray: TCkXmp_RemoveArray = nil;
  CkXmp_RemoveEmbedded: TCkXmp_RemoveEmbedded = nil;
  CkXmp_RemoveNsMapping: TCkXmp_RemoveNsMapping = nil;
  CkXmp_RemoveSimple: TCkXmp_RemoveSimple = nil;
  CkXmp_RemoveStruct: TCkXmp_RemoveStruct = nil;
  CkXmp_RemoveStructProp: TCkXmp_RemoveStructProp = nil;
  CkXmp_SaveAppFile: TCkXmp_SaveAppFile = nil;

constructor TXmp.Create;
begin
  inherited Create;
  FHandle := CkXmp_Create();
end;

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

function TXmp.GetLastErrorHtml: string;
begin
  Result := CkToStr(CkXmp_get_LastErrorHtml(FHandle));
end;

function TXmp.GetLastErrorText: string;
begin
  Result := CkToStr(CkXmp_get_LastErrorText(FHandle));
end;

function TXmp.GetLastErrorXml: string;
begin
  Result := CkToStr(CkXmp_get_LastErrorXml(FHandle));
end;

function TXmp.GetVersion: string;
begin
  Result := CkToStr(CkXmp_get_Version(FHandle));
end;

function TXmp.GetDebugLogFilePath: string;
begin
  Result := CkToStr(CkXmp_get_DebugLogFilePath(FHandle));
end;

procedure TXmp.SetDebugLogFilePath(AValue: string);
begin
  CkXmp_put_DebugLogFilePath(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TXmp.GetVerboseLogging: Boolean;
begin
  Result := Boolean(CkXmp_get_VerboseLogging(FHandle));
end;

procedure TXmp.SetVerboseLogging(AValue: Boolean);
begin
  CkXmp_put_VerboseLogging(FHandle, LongBool(AValue));
end;

function TXmp.GetLastMethodSuccess: Boolean;
begin
  Result := Boolean(CkXmp_get_LastMethodSuccess(FHandle));
end;

procedure TXmp.SetLastMethodSuccess(AValue: Boolean);
begin
  CkXmp_put_LastMethodSuccess(FHandle, LongBool(AValue));
end;

function TXmp.GetNumEmbedded: Integer;
begin
  Result := CkXmp_get_NumEmbedded(FHandle);
end;

function TXmp.GetStructInnerDescrip: Boolean;
begin
  Result := Boolean(CkXmp_get_StructInnerDescrip(FHandle));
end;

procedure TXmp.SetStructInnerDescrip(AValue: Boolean);
begin
  CkXmp_put_StructInnerDescrip(FHandle, LongBool(AValue));
end;

function TXmp.GetUncommonOptions: string;
begin
  Result := CkToStr(CkXmp_get_UncommonOptions(FHandle));
end;

procedure TXmp.SetUncommonOptions(AValue: string);
begin
  CkXmp_put_UncommonOptions(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TXmp.AddArray(xml: TChilkatBase; const arrType: string; const propName: string; values: TChilkatBase): Boolean;
begin
  Result := Boolean(CkXmp_AddArray(FHandle, xml.Handle, PAnsiChar(StrToCk(arrType)), PAnsiChar(StrToCk(propName)), values.Handle));
end;

procedure TXmp.AddNsMapping(const ns: string; const uri: string);
begin
  CkXmp_AddNsMapping(FHandle, PAnsiChar(StrToCk(ns)), PAnsiChar(StrToCk(uri)));
end;

function TXmp.AddSimpleInt(iXml: TChilkatBase; const propName: string; propVal: Integer): Boolean;
begin
  Result := Boolean(CkXmp_AddSimpleInt(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName)), propVal));
end;

function TXmp.AddSimpleStr(iXml: TChilkatBase; const propName: string; const propVal: string): Boolean;
begin
  Result := Boolean(CkXmp_AddSimpleStr(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName)), PAnsiChar(StrToCk(propVal))));
end;

function TXmp.AddStructProp(iChilkatXml: TChilkatBase; const structName: string; const propName: string; const propValue: string): Boolean;
begin
  Result := Boolean(CkXmp_AddStructProp(FHandle, iChilkatXml.Handle, PAnsiChar(StrToCk(structName)), PAnsiChar(StrToCk(propName)), PAnsiChar(StrToCk(propValue))));
end;

function TXmp.Append(iXml: TChilkatBase): Boolean;
begin
  Result := Boolean(CkXmp_Append(FHandle, iXml.Handle));
end;

function TXmp.GetArray(iXml: TChilkatBase; const propName: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkXmp_GetArray(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName))));
end;

function TXmp.GetEmbedded(index: Integer): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkXmp_GetEmbedded(FHandle, index));
end;

function TXmp.GetProperty(iXml: TChilkatBase; const propName: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkXmp_GetProperty(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName))));
end;

function TXmp.GetSimpleInt(iXml: TChilkatBase; const propName: string): Integer;
begin
  Result := CkXmp_GetSimpleInt(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName)));
end;

function TXmp.GetSimpleStr(iXml: TChilkatBase; const propName: string): string;
begin
  Result := CkToStr(CkXmp_GetSimpleStr(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName))));
end;

function TXmp.GetStructPropNames(iXml: TChilkatBase; const structName: string): TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkXmp_GetStructPropNames(FHandle, iXml.Handle, PAnsiChar(StrToCk(structName))));
end;

function TXmp.GetStructValue(iXml: TChilkatBase; const structName: string; const propName: string): string;
begin
  Result := CkToStr(CkXmp_GetStructValue(FHandle, iXml.Handle, PAnsiChar(StrToCk(structName)), PAnsiChar(StrToCk(propName))));
end;

function TXmp.LoadAppFile(const filename: string): Boolean;
begin
  Result := Boolean(CkXmp_LoadAppFile(FHandle, PAnsiChar(StrToCk(filename))));
end;

function TXmp.NewXmp: TChilkatBase;
begin
  Result := TChilkatBase.CreateFromHandle(CkXmp_NewXmp(FHandle));
end;

function TXmp.RemoveAllEmbedded: Boolean;
begin
  Result := Boolean(CkXmp_RemoveAllEmbedded(FHandle));
end;

function TXmp.RemoveArray(iXml: TChilkatBase; const propName: string): Boolean;
begin
  Result := Boolean(CkXmp_RemoveArray(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName))));
end;

function TXmp.RemoveEmbedded(index: Integer): Boolean;
begin
  Result := Boolean(CkXmp_RemoveEmbedded(FHandle, index));
end;

procedure TXmp.RemoveNsMapping(const ns: string);
begin
  CkXmp_RemoveNsMapping(FHandle, PAnsiChar(StrToCk(ns)));
end;

function TXmp.RemoveSimple(iXml: TChilkatBase; const propName: string): Boolean;
begin
  Result := Boolean(CkXmp_RemoveSimple(FHandle, iXml.Handle, PAnsiChar(StrToCk(propName))));
end;

function TXmp.RemoveStruct(iXml: TChilkatBase; const structName: string): Boolean;
begin
  Result := Boolean(CkXmp_RemoveStruct(FHandle, iXml.Handle, PAnsiChar(StrToCk(structName))));
end;

function TXmp.RemoveStructProp(iXml: TChilkatBase; const structName: string; const propName: string): Boolean;
begin
  Result := Boolean(CkXmp_RemoveStructProp(FHandle, iXml.Handle, PAnsiChar(StrToCk(structName)), PAnsiChar(StrToCk(propName))));
end;

function TXmp.SaveAppFile(const filename: string): Boolean;
begin
  Result := Boolean(CkXmp_SaveAppFile(FHandle, PAnsiChar(StrToCk(filename))));
end;

initialization
  Chilkat_GetProcedureAddress(CkXmp_Create,  'CkXmp_Create');
  Chilkat_GetProcedureAddress(CkXmp_Dispose, 'CkXmp_Dispose');
  Chilkat_GetProcedureAddress(CkXmp_get_LastErrorHtml, 'CkXmp_get_LastErrorHtml');
  Chilkat_GetProcedureAddress(CkXmp_get_LastErrorText, 'CkXmp_get_LastErrorText');
  Chilkat_GetProcedureAddress(CkXmp_get_LastErrorXml, 'CkXmp_get_LastErrorXml');
  Chilkat_GetProcedureAddress(CkXmp_get_Version, 'CkXmp_get_Version');
  Chilkat_GetProcedureAddress(CkXmp_get_DebugLogFilePath, 'CkXmp_get_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkXmp_put_DebugLogFilePath, 'CkXmp_put_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkXmp_get_VerboseLogging, 'CkXmp_get_VerboseLogging');
  Chilkat_GetProcedureAddress(CkXmp_put_VerboseLogging, 'CkXmp_put_VerboseLogging');
  Chilkat_GetProcedureAddress(CkXmp_get_LastMethodSuccess, 'CkXmp_get_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkXmp_put_LastMethodSuccess, 'CkXmp_put_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkXmp_get_NumEmbedded, 'CkXmp_get_NumEmbedded');
  Chilkat_GetProcedureAddress(CkXmp_get_StructInnerDescrip, 'CkXmp_get_StructInnerDescrip');
  Chilkat_GetProcedureAddress(CkXmp_put_StructInnerDescrip, 'CkXmp_put_StructInnerDescrip');
  Chilkat_GetProcedureAddress(CkXmp_get_UncommonOptions, 'CkXmp_get_UncommonOptions');
  Chilkat_GetProcedureAddress(CkXmp_put_UncommonOptions, 'CkXmp_put_UncommonOptions');
  Chilkat_GetProcedureAddress(CkXmp_AddArray, 'CkXmp_AddArray');
  Chilkat_GetProcedureAddress(CkXmp_AddNsMapping, 'CkXmp_AddNsMapping');
  Chilkat_GetProcedureAddress(CkXmp_AddSimpleInt, 'CkXmp_AddSimpleInt');
  Chilkat_GetProcedureAddress(CkXmp_AddSimpleStr, 'CkXmp_AddSimpleStr');
  Chilkat_GetProcedureAddress(CkXmp_AddStructProp, 'CkXmp_AddStructProp');
  Chilkat_GetProcedureAddress(CkXmp_Append, 'CkXmp_Append');
  Chilkat_GetProcedureAddress(CkXmp_GetArray, 'CkXmp_GetArray');
  Chilkat_GetProcedureAddress(CkXmp_GetEmbedded, 'CkXmp_GetEmbedded');
  Chilkat_GetProcedureAddress(CkXmp_GetProperty, 'CkXmp_GetProperty');
  Chilkat_GetProcedureAddress(CkXmp_GetSimpleInt, 'CkXmp_GetSimpleInt');
  Chilkat_GetProcedureAddress(CkXmp_GetSimpleStr, 'CkXmp_GetSimpleStr');
  Chilkat_GetProcedureAddress(CkXmp_GetStructPropNames, 'CkXmp_GetStructPropNames');
  Chilkat_GetProcedureAddress(CkXmp_GetStructValue, 'CkXmp_GetStructValue');
  Chilkat_GetProcedureAddress(CkXmp_LoadAppFile, 'CkXmp_LoadAppFile');
  Chilkat_GetProcedureAddress(CkXmp_NewXmp, 'CkXmp_NewXmp');
  Chilkat_GetProcedureAddress(CkXmp_RemoveAllEmbedded, 'CkXmp_RemoveAllEmbedded');
  Chilkat_GetProcedureAddress(CkXmp_RemoveArray, 'CkXmp_RemoveArray');
  Chilkat_GetProcedureAddress(CkXmp_RemoveEmbedded, 'CkXmp_RemoveEmbedded');
  Chilkat_GetProcedureAddress(CkXmp_RemoveNsMapping, 'CkXmp_RemoveNsMapping');
  Chilkat_GetProcedureAddress(CkXmp_RemoveSimple, 'CkXmp_RemoveSimple');
  Chilkat_GetProcedureAddress(CkXmp_RemoveStruct, 'CkXmp_RemoveStruct');
  Chilkat_GetProcedureAddress(CkXmp_RemoveStructProp, 'CkXmp_RemoveStructProp');
  Chilkat_GetProcedureAddress(CkXmp_SaveAppFile, 'CkXmp_SaveAppFile');

end.
