Repo for the search and displace ingest module that takes odf, docx and pdf and transforms it into .md to be used with search and displace operations
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

214 lines
5.3 KiB

unit LibDelphi;
{$ifdef FPC}
{$MODE OBJFPC}
{$endif}
interface
uses
SysUtils;
type
va_list = Pointer;
{$IFNDEF FPC}
{$IF CompilerVersion <= 18.5}
SizeInt = Integer;
PtrUInt = LongWord;
{$ELSE}
SizeInt = NativeInt;
PtrUInt = NativeUInt;
{$IFEND}
{$ENDIF}
const
{$IFDEF MSWINDOWS}
SRuntimeLib = 'msvcrt.dll';
{$ELSE}
SRuntimeLib = 'libc.so';
{$ENDIF}
function fprintf(stream: Pointer; format: Pointer; arguments: va_list): Integer; cdecl; {$ifdef FPC}[public];{$endif}
function sprintf(buffer: Pointer; format: Pointer; arguments: va_list): Integer; cdecl; {$ifdef FPC}[public];{$endif}
function snprintf(buffer: Pointer; n: Integer; format: Pointer; arguments: va_list): Integer; cdecl; {$ifdef FPC}[public];{$endif}
function fputs(s: Pointer; stream: Pointer): Integer; cdecl; external SRuntimeLib;
function fputc(c: Integer; stream: Pointer): Integer; cdecl; external SRuntimeLib;
function isprint(c: Integer): Integer; cdecl; external SRuntimeLib;
procedure memset(a: Pointer; b: Integer; c: SizeInt); cdecl; {$ifdef FPC}[public];{$endif}
function memcpy(dest: Pointer; const src: Pointer; count: SizeInt): Pointer; cdecl; {$ifdef FPC}[public];{$endif}
function memcmp(a, b: Pointer; c:SizeInt):Integer; cdecl; {$ifdef FPC}[public];{$endif}
function malloc(s: Longint): Pointer; cdecl; {$ifdef FPC}[public];{$endif}
procedure free(p: Pointer); cdecl; {$ifdef FPC}[public];{$endif}
{$ifndef FPC}
function _ftol: Integer; cdecl; external SRuntimeLib;
function _ltolower(ch: Integer): Integer; cdecl; external SRuntimeLib;
function _ltoupper(ch: Integer): Integer; cdecl; external SRuntimeLib;
function _ltowlower(ch: Integer): Integer; cdecl; external SRuntimeLib;
function _ltowupper(ch: Integer): Integer; cdecl; external SRuntimeLib;
function fwrite(ptr:pointer; size, count:SizeInt; stream:pointer ):SizeInt; cdecl; external SRuntimeLib;
{$endif}
function strcpy(dest: Pointer; src: Pointer): Pointer; cdecl; {$ifdef FPC}[public];{$endif}
{$ifdef FPC}
function fwrite(ptr:pointer; size, count:SizeInt; stream:pointer ):SizeInt; cdecl; {$ifdef FPC}[public];{$endif}
function __udivdi3(a,b:int64):int64; cdecl; [public];
function {$ifdef CPUX86}_imp__isprint{$else}__imp_isprint{$endif}(c: char): integer; cdecl; [public];
{$endif}
{$ifndef FPC}
var
__turboFloat: LongBool = False;
_streams: Integer;
{$else}
type
// from mingw - stdio.h
cIoBuf = record
_ptr:Pointer;
_cnt:LongInt;
_base:Pointer;
_flag:LongInt;
_file:LongInt;
_charbuf:LongInt;
_bufsiz:LongInt;
_tmpfname:Pointer;
end;
pIoBuf = ^cIoBuf;
var
_imp___iob:array[0..2] of cIoBuf; cvar; // stdin,stdout,stderr
iob:pIoBuf; cvar;
{$endif}
implementation
{$ifndef FPC}
uses
Windows;
{$endif}
{$ifdef FPC}
function __udivdi3(a, b: int64): int64; cdecl;
begin
Result:=a div b;
end;
function {$ifdef CPUX86}_imp__isprint{$else}__imp_isprint{$endif}(c: char): integer; cdecl;
begin
if (c>=#32)and(c<=#127) then
Result:=1
else
Result:=0;
end;
{$endif}
procedure free(p: Pointer); cdecl;
begin
FreeMem(p);
end;
function malloc(s: Longint): Pointer; cdecl;
begin
Result := AllocMem(s);
end;
function memcpy(dest: Pointer; const src: Pointer; count: SizeInt): Pointer; cdecl;
begin
system.Move(src^,dest^,count);
Result:=dest;
end;
procedure memset(a: Pointer; b: Integer; c: SizeInt); cdecl;
begin
system.FillChar(a^,c,b);
end;
function memcmp(a, b: Pointer; c: SizeInt): Integer; cdecl; {$ifdef FPC}[public];{$endif}
{$ifndef FPC}
var
ma,mb: PByte;
n: Integer;
begin
ma:=a;
mb:=b;
n:=0;
while Cardinal(n)<c do
begin
if ma^<>mb^ then
begin
if ma^<mb^ then
Result:=-1
else
Result:=1;
exit;
end;
Inc(ma);
Inc(mb);
Inc(n);
end;
Result:=0;
{$else}
begin
Result:=CompareMemRange(a,b,c);
{$endif}
end;
function __sprintf(buffer: Pointer; format: Pointer; arguments: Pointer): Integer; cdecl; external SRuntimeLib name 'sprintf';
function sprintf(buffer: Pointer; format: Pointer; arguments: Pointer): Integer; cdecl;
begin
Result := __sprintf(buffer, format, arguments);
end;
function __snprintf(buffer: Pointer; n: Integer; format: Pointer; arguments: va_list): Integer; cdecl; external SRuntimeLib name '_snprintf';
function snprintf(buffer: Pointer; n: Integer; format: Pointer; arguments: va_list): Integer; cdecl;
begin
Result := __snprintf(buffer, n, format, arguments);
end;
function fprintf(stream: Pointer; format: Pointer; arguments: va_list): Integer; cdecl;
var
m: Integer;
n: Pointer;
{$ifndef FPC}
o: Cardinal;
{$endif}
begin
m:=sprintf(nil,format,@arguments);
n:=AllocMem(m);
sprintf(n,format,@arguments);
{$ifndef FPC}
WriteFile(Cardinal(stream),n^,Cardinal(m),o,nil);
{$else}
FileWrite(pIoBuf(stream)^._file,n^,Cardinal(m));
{$endif}
FreeMem(n);
Result := m;
end;
function strcpy(dest: Pointer; src: Pointer): Pointer; cdecl;
begin
Result:=SysUtils.strcopy(PAnsiChar(dest),PAnsiChar(src));
end;
{$ifdef FPC}
function fwrite(ptr: pointer; size, count: SizeInt; stream: pointer): SizeInt; cdecl;
begin
Result:=FileWrite(pIoBuf(stream)^._file,ptr^,size * count);
end;
procedure init_iob;
begin
FillChar(_imp___iob[0],sizeof(cIoBuf)*3,0);
_imp___iob[0]._file:=StdInputHandle;
_imp___iob[1]._file:=StdOutputHandle;
_imp___iob[2]._file:=StdErrorHandle;
iob:=@_imp___iob[0];
end;
initialization
init_iob;
{$endif}
end.