+ Initial implementation

This commit is contained in:
michael 2000-08-18 19:20:06 +00:00
parent bfdac9385b
commit 8592278ad0
6 changed files with 114 additions and 0 deletions

53
docs/dynlibex/Makefile Normal file
View File

@ -0,0 +1,53 @@
#######################################################################
#
# Makefile to compile all examples and convert them to LaTeX
#
#######################################################################
# Compiler
PP=ppc386
# Unit directory
# UNITDIR=/usr/lib/ppc/0.99.0/linuxunits
# Any options you wish to pass.
PPOPTS=
# Script to convert the programs to LaTeX examples which can be included.
PP2TEX=../pp2tex
# Script to collect all examples in 1 file.
MAKETEX=make1tex
#######################################################################
# No need to edit after this line.
#######################################################################
ifdef UNITDIR
PPOPTS:=$(PPOPTS) -Up$(UNITDIR);
endif
.SUFFIXES: .pp .tex
.PHONY: all tex clean
OBJECTS=plsubs subs
TEXOBJECTS=$(addsuffix .tex, $(OBJECTS))
all : $(OBJECTS)
tex : $(TEXOBJECTS)
onetex : tex
$(MAKETEX) $(TEXOBJECTS)
clean :
rm -f *.o *.s $(OBJECTS) $(TEXOBJECTS)
$(OBJECTS): %: %.pp
$(PP) $(PPOPTS) $*
$(TEXOBJECTS): %.tex: %.pp head.tex foot.tex
$(PP2TEX) $*

6
docs/dynlibex/README Normal file
View File

@ -0,0 +1,6 @@
These are the example programs that appear in the FPC documentation.
Units guide, chapter on dynlibs unit :
subs.pp : library used in dynlibs function.
plsubs.pp : example to show loading of libraries.

2
docs/dynlibex/foot.tex Normal file
View File

@ -0,0 +1,2 @@
\end{verbatim}
\end{FPCList}

3
docs/dynlibex/head.tex Normal file
View File

@ -0,0 +1,3 @@
\begin{FPCList}
\item[Example]
\begin{verbatim}

23
docs/dynlibex/plsubs.pp Normal file
View File

@ -0,0 +1,23 @@
program testsubs;
uses dynlibs;
Type
TSubStrFunc =
function(const CString:PChar;FromPos,ToPos: longint):PChar;cdecl;
var
s: PChar;
FromPos, ToPos: Integer;
lib : TLibHandle;
SubStr : TSubStrFunc;
begin
s := 'Test';
FromPos := 2;
ToPos := 3;
lib:=LoadLibrary('libsubs.so');
Pointer(Substr):=GetProcedureAddress(lib,'SubStr');
WriteLn(SubStr(s, FromPos, ToPos));
UnLoadLibrary(lib);
end.

27
docs/dynlibex/subs.pp Normal file
View File

@ -0,0 +1,27 @@
{
Example library
}
library subs;
function SubStr(CString: PChar;FromPos,ToPos: Longint): PChar;
cdecl; export;
var
Length: Integer;
begin
Length := StrLen(CString);
SubStr := CString + Length;
if (FromPos > 0) and (ToPos >= FromPos) then
begin
if Length >= FromPos then
SubStr := CString + FromPos - 1;
if Length > ToPos then
CString[ToPos] := #0;
end;
end;
exports
SubStr;
end.