add several atb-units to structure the code
This commit is contained in:
parent
52def3f6a1
commit
4501c85227
21
atbgit.pas
Normal file
21
atbgit.pas
Normal file
@ -0,0 +1,21 @@
|
||||
unit ATBGit;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, CTypes, fpjson, jsonparser;
|
||||
|
||||
type
|
||||
function SetFile(const localRepository: String; const fileId: String; const json: TJSONData): Boolean;
|
||||
function SetFileInternal(const localRepository: PChar;
|
||||
const fileId: PChar;
|
||||
const json: PChar;
|
||||
size: cint32): cbool; stdcall;
|
||||
|
||||
implementation
|
||||
const DLLName = 'CalculatorCInterface.dll';
|
||||
|
||||
end.
|
||||
|
17
atbutils.pas
Normal file
17
atbutils.pas
Normal file
@ -0,0 +1,17 @@
|
||||
unit ATBUtils;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses Classes, SysUtils, CTypes;
|
||||
|
||||
procedure DeleteMem(P: PChar); stdcall;
|
||||
|
||||
implementation
|
||||
const DLLName = 'CalculatorCInterface.dll';
|
||||
|
||||
procedure DeleteMem(P: PChar); stdcall; external DLLName;
|
||||
|
||||
end.
|
||||
|
136
atbwebinterface.pas
Normal file
136
atbwebinterface.pas
Normal file
@ -0,0 +1,136 @@
|
||||
unit ATBWebInterface;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses SysUtils, CTypes, fpjson, jsonparser, ATBUtils;
|
||||
|
||||
type
|
||||
PTJSONObject = ^TJSONObject;
|
||||
|
||||
//
|
||||
// public interface
|
||||
//
|
||||
function GetFileMenu(const localRepository: UTF8String;
|
||||
jObj: PTJSONObject): Boolean;
|
||||
|
||||
function GetFile(const localRepository: UTF8String;
|
||||
const fileId: UTF8String;
|
||||
jObj: PTJSONObject): Boolean;
|
||||
|
||||
function SetFile(const localRepository: UTF8String;
|
||||
const fileId: UTF8String;
|
||||
const jsonData: TJSONData): Boolean;
|
||||
|
||||
function GetFileName(const localRepository: UTF8String;
|
||||
const fileId: UTF8String): UTF8String;
|
||||
|
||||
// private c-interface
|
||||
function GetFileMenuInternal(const localRepository: PChar): PChar; stdcall;
|
||||
function GetFileInternal(const localRepository: PChar; const fileId: PChar): PChar; stdcall;
|
||||
function SetFileInternal(const localRepository: PChar; const fileId: PChar;
|
||||
const json: PChar; size: cint32): cbool; stdcall;
|
||||
function GetFileNameInternal(const localRepository: PChar;
|
||||
const fileId: PChar): PChar; stdcall;
|
||||
|
||||
|
||||
implementation
|
||||
const DLLName = 'CalculatorCInterface.dll';
|
||||
|
||||
|
||||
///
|
||||
function GetFileMenu(const localRepository: UTF8String; jObj: PTJSONObject): Boolean;
|
||||
var
|
||||
p: PChar;
|
||||
fileMenuContent: UTF8String;
|
||||
begin
|
||||
Result := false;
|
||||
try
|
||||
p := GetFileMenuInternal(PChar(Utf8ToAnsi(localRepository)));
|
||||
if p <> nil then begin
|
||||
fileMenuContent := UTF8String(p);
|
||||
jObj^ := GetJSON(fileMenuContent) as TJSONObject;
|
||||
Result := true;
|
||||
end;
|
||||
finally
|
||||
DeleteMem(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetFileName(const localRepository: UTF8String;
|
||||
const fileId: UTF8String): UTF8String;
|
||||
var
|
||||
p: PChar;
|
||||
begin
|
||||
Result := '';
|
||||
try
|
||||
p := GetFileNameInternal(PChar(Utf8ToAnsi(localRepository)),
|
||||
PChar(Utf8ToAnsi(fileId)));
|
||||
if p <> nil then begin
|
||||
Result := UTF8String(p);
|
||||
end;
|
||||
finally
|
||||
DeleteMem(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetFile(const localRepository: UTF8String; const fileId: UTF8String;
|
||||
jObj: PTJSONObject): Boolean;
|
||||
var
|
||||
p: PChar;
|
||||
fileContent: UTF8String;
|
||||
begin
|
||||
Result := false;
|
||||
try
|
||||
p := GetFileInternal(PChar(Utf8ToAnsi(localRepository)),
|
||||
PChar(Utf8ToAnsi(fileId)));
|
||||
if p <> nil then begin
|
||||
fileContent := UTF8String(p);
|
||||
jObj^ := GetJSON(fileContent) as TJSONObject;
|
||||
Result := true;
|
||||
end;
|
||||
finally
|
||||
DeleteMem(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
///
|
||||
function SetFile(const localRepository: UTF8String; const fileId: UTF8String;
|
||||
const jsonData: TJSONData): Boolean;
|
||||
var
|
||||
P: PChar;
|
||||
Len: Integer;
|
||||
S: UTF8String;
|
||||
begin
|
||||
try
|
||||
writeLn(jsonData.FormatJSON);
|
||||
S := jsonData.AsJSON;
|
||||
P := PChar(S);
|
||||
Len := System.Length(Utf8ToAnsi(P));
|
||||
Result := SetFileInternal(PChar(Utf8ToAnsi(localRepository)),
|
||||
PChar(Utf8ToAnsi(fileId)), P, Len);
|
||||
finally
|
||||
end;
|
||||
end;
|
||||
|
||||
// external c-interface
|
||||
function GetFileInternal(const localRepository: PChar;
|
||||
const fileId: PChar): PChar; stdcall;
|
||||
external DLLName;
|
||||
|
||||
function GetFileNameInternal(const localRepository: PChar;
|
||||
const fileId: PChar): PChar; stdcall;
|
||||
external DLLName;
|
||||
|
||||
function GetFileMenuInternal(const localRepository: PChar): PChar; stdcall;
|
||||
external DLLName;
|
||||
|
||||
function SetFileInternal(const localRepository: PChar;
|
||||
const fileId: PChar;
|
||||
const json: PChar;
|
||||
size: cint32): cbool; stdcall;
|
||||
external DLLName;
|
||||
|
||||
end.
|
||||
|
21
deploy/atbgit.pas
Normal file
21
deploy/atbgit.pas
Normal file
@ -0,0 +1,21 @@
|
||||
unit ATBGit;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, CTypes, fpjson, jsonparser;
|
||||
|
||||
type
|
||||
function SetFile(const localRepository: String; const fileId: String; const json: TJSONData): Boolean;
|
||||
function SetFileInternal(const localRepository: PChar;
|
||||
const fileId: PChar;
|
||||
const json: PChar;
|
||||
size: cint32): cbool; stdcall;
|
||||
|
||||
implementation
|
||||
const DLLName = 'CalculatorCInterface.dll';
|
||||
|
||||
end.
|
||||
|
17
deploy/atbutils.pas
Normal file
17
deploy/atbutils.pas
Normal file
@ -0,0 +1,17 @@
|
||||
unit ATBUtils;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses Classes, SysUtils, CTypes;
|
||||
|
||||
procedure DeleteMem(P: PChar); stdcall;
|
||||
|
||||
implementation
|
||||
const DLLName = 'CalculatorCInterface.dll';
|
||||
|
||||
procedure DeleteMem(P: PChar); stdcall; external DLLName;
|
||||
|
||||
end.
|
||||
|
136
deploy/atbwebinterface.pas
Normal file
136
deploy/atbwebinterface.pas
Normal file
@ -0,0 +1,136 @@
|
||||
unit ATBWebInterface;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses SysUtils, CTypes, fpjson, jsonparser, ATBUtils;
|
||||
|
||||
type
|
||||
PTJSONObject = ^TJSONObject;
|
||||
|
||||
//
|
||||
// public interface
|
||||
//
|
||||
function GetFileMenu(const localRepository: UTF8String;
|
||||
jObj: PTJSONObject): Boolean;
|
||||
|
||||
function GetFile(const localRepository: UTF8String;
|
||||
const fileId: UTF8String;
|
||||
jObj: PTJSONObject): Boolean;
|
||||
|
||||
function SetFile(const localRepository: UTF8String;
|
||||
const fileId: UTF8String;
|
||||
const jsonData: TJSONData): Boolean;
|
||||
|
||||
function GetFileName(const localRepository: UTF8String;
|
||||
const fileId: UTF8String): UTF8String;
|
||||
|
||||
// private c-interface
|
||||
function GetFileMenuInternal(const localRepository: PChar): PChar; stdcall;
|
||||
function GetFileInternal(const localRepository: PChar; const fileId: PChar): PChar; stdcall;
|
||||
function SetFileInternal(const localRepository: PChar; const fileId: PChar;
|
||||
const json: PChar; size: cint32): cbool; stdcall;
|
||||
function GetFileNameInternal(const localRepository: PChar;
|
||||
const fileId: PChar): PChar; stdcall;
|
||||
|
||||
|
||||
implementation
|
||||
const DLLName = 'CalculatorCInterface.dll';
|
||||
|
||||
|
||||
///
|
||||
function GetFileMenu(const localRepository: UTF8String; jObj: PTJSONObject): Boolean;
|
||||
var
|
||||
p: PChar;
|
||||
fileMenuContent: UTF8String;
|
||||
begin
|
||||
Result := false;
|
||||
try
|
||||
p := GetFileMenuInternal(PChar(Utf8ToAnsi(localRepository)));
|
||||
if p <> nil then begin
|
||||
fileMenuContent := UTF8String(p);
|
||||
jObj^ := GetJSON(fileMenuContent) as TJSONObject;
|
||||
Result := true;
|
||||
end;
|
||||
finally
|
||||
DeleteMem(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetFileName(const localRepository: UTF8String;
|
||||
const fileId: UTF8String): UTF8String;
|
||||
var
|
||||
p: PChar;
|
||||
begin
|
||||
Result := '';
|
||||
try
|
||||
p := GetFileNameInternal(PChar(Utf8ToAnsi(localRepository)),
|
||||
PChar(Utf8ToAnsi(fileId)));
|
||||
if p <> nil then begin
|
||||
Result := UTF8String(p);
|
||||
end;
|
||||
finally
|
||||
DeleteMem(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetFile(const localRepository: UTF8String; const fileId: UTF8String;
|
||||
jObj: PTJSONObject): Boolean;
|
||||
var
|
||||
p: PChar;
|
||||
fileContent: UTF8String;
|
||||
begin
|
||||
Result := false;
|
||||
try
|
||||
p := GetFileInternal(PChar(Utf8ToAnsi(localRepository)),
|
||||
PChar(Utf8ToAnsi(fileId)));
|
||||
if p <> nil then begin
|
||||
fileContent := UTF8String(p);
|
||||
jObj^ := GetJSON(fileContent) as TJSONObject;
|
||||
Result := true;
|
||||
end;
|
||||
finally
|
||||
DeleteMem(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
///
|
||||
function SetFile(const localRepository: UTF8String; const fileId: UTF8String;
|
||||
const jsonData: TJSONData): Boolean;
|
||||
var
|
||||
P: PChar;
|
||||
Len: Integer;
|
||||
S: UTF8String;
|
||||
begin
|
||||
try
|
||||
writeLn(jsonData.FormatJSON);
|
||||
S := jsonData.AsJSON;
|
||||
P := PChar(S);
|
||||
Len := System.Length(Utf8ToAnsi(P));
|
||||
Result := SetFileInternal(PChar(Utf8ToAnsi(localRepository)),
|
||||
PChar(Utf8ToAnsi(fileId)), P, Len);
|
||||
finally
|
||||
end;
|
||||
end;
|
||||
|
||||
// external c-interface
|
||||
function GetFileInternal(const localRepository: PChar;
|
||||
const fileId: PChar): PChar; stdcall;
|
||||
external DLLName;
|
||||
|
||||
function GetFileNameInternal(const localRepository: PChar;
|
||||
const fileId: PChar): PChar; stdcall;
|
||||
external DLLName;
|
||||
|
||||
function GetFileMenuInternal(const localRepository: PChar): PChar; stdcall;
|
||||
external DLLName;
|
||||
|
||||
function SetFileInternal(const localRepository: PChar;
|
||||
const fileId: PChar;
|
||||
const json: PChar;
|
||||
size: cint32): cbool; stdcall;
|
||||
external DLLName;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user