mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
adapted to latest upstream changes.
This commit is contained in:
parent
8b964acedb
commit
946e2f7f85
9 changed files with 83 additions and 76 deletions
72
GNUmakefile
72
GNUmakefile
|
|
@ -1,52 +1,58 @@
|
||||||
VOC = /opt/voc/bin/voc
|
VOC = /opt/voc/bin/voc
|
||||||
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||||
mkfile_dir_path := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
mkfile_dir_path := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||||
build_dir_path := $(mkfile_dir_path)/build
|
ifndef BUILD
|
||||||
|
BUILD="build"
|
||||||
|
endif
|
||||||
|
build_dir_path := $(mkfile_dir_path)/$(BUILD)
|
||||||
current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
|
current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
|
||||||
BLD := $(mkfile_dir_path)/build
|
BLD := $(mkfile_dir_path)/build
|
||||||
DPS := $(mkfile_dir_path)/dps
|
DPD = deps
|
||||||
|
ifndef DPS
|
||||||
|
DPS := $(mkfile_dir_path)/$(DPD)
|
||||||
|
endif
|
||||||
|
all: get_deps build_deps buildThis
|
||||||
|
|
||||||
all: get_deps build_deps vipack
|
|
||||||
#Internet lists opts skprJson skprLogger time
|
|
||||||
get_deps:
|
get_deps:
|
||||||
mkdir -p $(DPS)
|
mkdir -p $(DPS)
|
||||||
if [ -d $(DPS)/lists ]; then cd $(DPS)/lists; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/lists; cd -; fi
|
if [ -d $(DPS)/lists ]; then cd $(DPS)/lists; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/lists; cd -; fi
|
||||||
if [ -d $(DPS)/Internet ]; then cd $(DPS)/Internet; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/Internet; cd -; fi
|
if [ -d $(DPS)/Internet ]; then cd $(DPS)/Internet; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/Internet; cd -; fi
|
||||||
if [ -d $(DPS)/time ]; then cd $(DPS)/time; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/time; cd -; fi
|
|
||||||
if [ -d $(DPS)/opts ]; then cd $(DPS)/opts; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/opts; cd -; fi
|
if [ -d $(DPS)/opts ]; then cd $(DPS)/opts; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/opts; cd -; fi
|
||||||
if [ -d $(DPS)/skprLogger ]; then cd $(DPS)/skprLogger; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/skprLogger; cd -; fi
|
if [ -d $(DPS)/skprLogger ]; then cd $(DPS)/skprLogger; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/skprLogger; cd -; fi
|
||||||
if [ -d $(DPS)/skprJson ]; then cd $(DPS)/skprJson; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/skprJson; cd -; fi
|
if [ -d $(DPS)/skprJson ]; then cd $(DPS)/skprJson; git pull; cd -; else cd $(DPS); git clone https://github.com/norayr/skprJson; cd -; fi
|
||||||
|
|
||||||
build_deps:
|
build_deps:
|
||||||
mkdir -p $(BLD)
|
mkdir -p $(BUILD)
|
||||||
cd $(CURDIR)/$(BUILD)
|
cd $(BUILD)
|
||||||
make -f $(DPS)/lists/GNUmakefile BUILD=$(BLD)
|
make -f $(DPS)/lists/GNUmakefile BUILD=$(BUILD)
|
||||||
make -f $(DPS)/Internet/GNUmakefile BUILD=$(BLD)
|
make -f $(DPS)/Internet/GNUmakefile BUILD=$(BUILD)
|
||||||
make -f $(DPS)/time/GNUmakefile BUILD=$(BLD)
|
make -f $(DPS)/opts/GNUmakefile BUILD=$(BUILD)
|
||||||
make -f $(DPS)/opts/GNUmakefile BUILD=$(BLD)
|
make -f $(DPS)/skprLogger/GNUmakefile BUILD=$(BUILD)
|
||||||
make -f $(DPS)/skprLogger/GNUmakefile BUILD=$(BLD)
|
make -f $(DPS)/skprJson/GNUmakefile BUILD=$(BUILD)
|
||||||
make -f $(DPS)/skprJson/GNUmakefile BUILD=$(BLD)
|
|
||||||
|
|
||||||
vipack:
|
buildThis:
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkSettings.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vkpSettings.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/unix/vpkLinuxFiles.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkLinuxFiles.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/unix/vpkTime.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkTime.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkLogger.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkLogger.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkHttp.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkHttp.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/unix/vpkEnv.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkEnv.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/unix/vpkGit.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkGit.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkCharacterStack.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkCharacterStack.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkJsonParser.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkJsonParser.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkConf.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkConf.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkStorage.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkStorage.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkSyncer.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkSyncer.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkdepTree.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkdepTree.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkDot.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkDot.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkResolver.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkResolver.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkJsonDepRetriever.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkJsonDepRetriever.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vpkInstaller.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkInstaller.Mod
|
||||||
cd $(BLD) && $(VOC) $(mkfile_dir_path)/src/vipack.Mod -m
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vipack.Mod
|
||||||
|
|
||||||
|
tests:
|
||||||
|
#cd $(BUILD) && $(VOC) $(mkfile_dir_path)/test/testList.Mod -m
|
||||||
|
#build/testList
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
if [ -d "$(BLD)" ]; then rm -rf $(BLD); fi
|
if [ -d "$(BUILD)" ]; then rm -rf $(BLD); fi
|
||||||
|
|
|
||||||
3
Makefile
3
Makefile
|
|
@ -3,7 +3,8 @@
|
||||||
CFLAGS =
|
CFLAGS =
|
||||||
|
|
||||||
# The following order is important, do not alphabetise
|
# The following order is important, do not alphabetise
|
||||||
DEPS = norayr/lists \
|
DEPS = norayr/strutils \
|
||||||
|
norayr/lists \
|
||||||
norayr/Internet \
|
norayr/Internet \
|
||||||
norayr/opts \
|
norayr/opts \
|
||||||
norayr/time \
|
norayr/time \
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE vpkEnv;
|
MODULE vpkEnv;
|
||||||
IMPORT Files, Platform, Strings, Out, vpkSettings, vpkFiles, lDefs;
|
IMPORT Files, Platform, Strings, Out, vpkSettings, vpkFiles, strTypes;
|
||||||
|
|
||||||
VAR
|
VAR
|
||||||
conf, confDir : ARRAY 256 OF CHAR;
|
conf, confDir : ARRAY 256 OF CHAR;
|
||||||
|
|
@ -28,9 +28,9 @@ BEGIN
|
||||||
|
|
||||||
END createIfNotThere;
|
END createIfNotThere;
|
||||||
|
|
||||||
PROCEDURE getSrcRelPath*(VAR depName, path0: ARRAY OF CHAR): lDefs.pstring;
|
PROCEDURE getSrcRelPath*(VAR depName, path0: ARRAY OF CHAR): strTypes.pstring;
|
||||||
VAR
|
VAR
|
||||||
p: lDefs.pstring;
|
p: strTypes.pstring;
|
||||||
len: INTEGER;
|
len: INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
len := 9 + Strings.Length(depName) + Strings.Length(path0);
|
len := 9 + Strings.Length(depName) + Strings.Length(path0);
|
||||||
|
|
@ -52,9 +52,9 @@ BEGIN
|
||||||
Strings.Append(vpkSettings.vpkConfDir, path);
|
Strings.Append(vpkSettings.vpkConfDir, path);
|
||||||
END mkConfDirPath;
|
END mkConfDirPath;
|
||||||
|
|
||||||
PROCEDURE mkBldDir*(VAR prefix: ARRAY OF CHAR): lDefs.pstring;
|
PROCEDURE mkBldDir*(VAR prefix: ARRAY OF CHAR): strTypes.pstring;
|
||||||
VAR
|
VAR
|
||||||
builddir: lDefs.pstring;
|
builddir: strTypes.pstring;
|
||||||
ln : INTEGER;
|
ln : INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
ln := 3 + Strings.Length(prefix) + Strings.Length(vpkSettings.vpkBldDir);
|
ln := 3 + Strings.Length(prefix) + Strings.Length(vpkSettings.vpkBldDir);
|
||||||
|
|
@ -68,9 +68,9 @@ BEGIN
|
||||||
RETURN builddir
|
RETURN builddir
|
||||||
END mkBldDir;
|
END mkBldDir;
|
||||||
|
|
||||||
PROCEDURE mkdefBldDir*(): lDefs.pstring;
|
PROCEDURE mkdefBldDir*(): strTypes.pstring;
|
||||||
VAR
|
VAR
|
||||||
builddir: lDefs.pstring;
|
builddir: strTypes.pstring;
|
||||||
ln: INTEGER;
|
ln: INTEGER;
|
||||||
home: ARRAY 128 OF CHAR;
|
home: ARRAY 128 OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
@ -118,9 +118,9 @@ BEGIN
|
||||||
END mkPkgDirPath;
|
END mkPkgDirPath;
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE mkCmd*(VAR p0, p1: ARRAY OF CHAR): lDefs.pstring;
|
PROCEDURE mkCmd*(VAR p0, p1: ARRAY OF CHAR): strTypes.pstring;
|
||||||
VAR
|
VAR
|
||||||
cmd: lDefs.pstring;
|
cmd: strTypes.pstring;
|
||||||
ln: INTEGER;
|
ln: INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
ln := 2 + Strings.Length(p0) + Strings.Length(p1);
|
ln := 2 + Strings.Length(p0) + Strings.Length(p1);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE vpkGit;
|
MODULE vpkGit;
|
||||||
IMPORT Out, Strings, Platform, vpkEnv, strutils;
|
IMPORT Out, Strings, Platform, vpkEnv;
|
||||||
|
|
||||||
PROCEDURE pull*(VAR url : ARRAY OF CHAR; VAR dst : ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
PROCEDURE pull*(VAR url : ARRAY OF CHAR; VAR dst : ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
||||||
VAR i : INTEGER;
|
VAR i : INTEGER;
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,19 @@
|
||||||
MODULE vpkCharacterStack;
|
MODULE vpkCharacterStack;
|
||||||
IMPORT lDefs, List, Out;
|
IMPORT strTypes, List, Out;
|
||||||
|
|
||||||
TYPE
|
TYPE
|
||||||
TObject* = lDefs.TObject;
|
TObject* = List.TObject;
|
||||||
|
|
||||||
Node* = POINTER TO NodeDesc;
|
Node* = POINTER TO NodeDesc;
|
||||||
NodeDesc* = List.NodeDesc;
|
NodeDesc* = List.NodeDesc;
|
||||||
|
|
||||||
TChar* = POINTER TO TCharDesc;
|
TChar* = POINTER TO TCharDesc;
|
||||||
|
|
||||||
TCharDesc = RECORD (lDefs.TObjectDesc)
|
TCharDesc = RECORD (List.TObjectDesc)
|
||||||
char* : CHAR
|
char* : CHAR
|
||||||
END;
|
END;
|
||||||
|
|
||||||
string = lDefs.string;
|
string = strTypes.string;
|
||||||
|
|
||||||
CharacterStackType* = POINTER TO CharacterStackTypeDesc;
|
CharacterStackType* = POINTER TO CharacterStackTypeDesc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
MODULE vpkJsonDepRetriever;
|
MODULE vpkJsonDepRetriever;
|
||||||
IMPORT Out, StringList, strutils, vpkJsonParser, vpkStorage, vpkSettings, vpkdepTree;
|
IMPORT Out, StringList, strUtils, vpkJsonParser, vpkStorage, vpkSettings, vpkdepTree;
|
||||||
|
|
||||||
PROCEDURE getBuildInfo*(VAR d: vpkdepTree.Tdep; VAR k, v: StringList.TStringList): BOOLEAN;
|
PROCEDURE getBuildInfo*(VAR d: vpkdepTree.Tdep; VAR k, v: StringList.TStringList): BOOLEAN;
|
||||||
VAR
|
VAR
|
||||||
p: strutils.pstring;
|
p: strUtils.pstring;
|
||||||
jsonRecord, build : vpkJsonParser.JsonTypePointer;
|
jsonRecord, build : vpkJsonParser.JsonTypePointer;
|
||||||
keys, values: StringList.TStringList;
|
keys, values: StringList.TStringList;
|
||||||
b: BOOLEAN;
|
b: BOOLEAN;
|
||||||
|
|
@ -31,14 +31,14 @@ END getBuildInfo;
|
||||||
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
||||||
VAR
|
VAR
|
||||||
jsonRecord, remote: vpkJsonParser.JsonTypePointer;
|
jsonRecord, remote: vpkJsonParser.JsonTypePointer;
|
||||||
p: strutils.pstring;
|
p: strUtils.pstring;
|
||||||
k, v: StringList.pstring;
|
k, v: StringList.pstring;
|
||||||
keys, values: StringList.TStringList;
|
keys, values: StringList.TStringList;
|
||||||
i: LONGINT;
|
i: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
strutils.zeroStr(URI);
|
strUtils.zeroStr(URI);
|
||||||
strutils.zeroStr(type);
|
strUtils.zeroStr(type);
|
||||||
strutils.zeroStr(branch);
|
strUtils.zeroStr(branch);
|
||||||
p := NIL;
|
p := NIL;
|
||||||
vpkStorage.json2pstring(d.name^, p);
|
vpkStorage.json2pstring(d.name^, p);
|
||||||
IF p # NIL THEN
|
IF p # NIL THEN
|
||||||
|
|
@ -72,7 +72,7 @@ END getURIandType;
|
||||||
PROCEDURE getDeps*(VAR d: vpkdepTree.Tdep; VAR depstrlist: StringList.TStringList): LONGINT;
|
PROCEDURE getDeps*(VAR d: vpkdepTree.Tdep; VAR depstrlist: StringList.TStringList): LONGINT;
|
||||||
VAR
|
VAR
|
||||||
jsonRecord, dependencies: vpkJsonParser.JsonTypePointer;
|
jsonRecord, dependencies: vpkJsonParser.JsonTypePointer;
|
||||||
p: strutils.pstring;
|
p: strUtils.pstring;
|
||||||
b: BOOLEAN;
|
b: BOOLEAN;
|
||||||
pkgName : ARRAY 32 OF CHAR;
|
pkgName : ARRAY 32 OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE vpkJsonParser;
|
MODULE vpkJsonParser;
|
||||||
IMPORT vpkLogger, vpkCharacterStack, Strings, strutils, vpkSettings, StringList;
|
IMPORT vpkLogger, vpkCharacterStack, Strings, strUtils, vpkSettings, StringList;
|
||||||
CONST
|
CONST
|
||||||
ArrayMaxNumber = 30;
|
ArrayMaxNumber = 30;
|
||||||
ArrayMaxNumberChar = 2000;
|
ArrayMaxNumberChar = 2000;
|
||||||
|
|
@ -68,7 +68,7 @@ PROCEDURE GetTerminal *(self: JsonTypePointer; key: ARRAY OF CHAR; VAR returnVal
|
||||||
VAR
|
VAR
|
||||||
i: LONGINT;
|
i: LONGINT;
|
||||||
noneTerminal: JsonTypePointer;
|
noneTerminal: JsonTypePointer;
|
||||||
strings: strutils.pstrings;
|
strings: strUtils.pstrings;
|
||||||
parent, children: ARRAY ArrayMaxNumber OF CHAR;
|
parent, children: ARRAY ArrayMaxNumber OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
|
|
@ -76,7 +76,7 @@ BEGIN
|
||||||
IF Strings.Match(key, self.TerminalKeys[i]) THEN COPY(self.TerminalValues[i], returnValue); RETURN TRUE END;
|
IF Strings.Match(key, self.TerminalKeys[i]) THEN COPY(self.TerminalValues[i], returnValue); RETURN TRUE END;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
strings := strutils.tokenize(key, '.');
|
strings := strUtils.tokenize(key, '.');
|
||||||
|
|
||||||
IF LEN(strings^) < 1 THEN RETURN FALSE END;
|
IF LEN(strings^) < 1 THEN RETURN FALSE END;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
MODULE vpkStorage;
|
MODULE vpkStorage;
|
||||||
IMPORT Files, Out, Strings,
|
IMPORT Files, Out, Strings,
|
||||||
strutils, vpkLogger, vpkEnv, vpkFiles;
|
strUtils, vpkLogger, vpkEnv, vpkFiles;
|
||||||
|
|
||||||
PROCEDURE WriteString(VAR r : Files.Rider; str : ARRAY OF CHAR);
|
PROCEDURE WriteString(VAR r : Files.Rider; str : ARRAY OF CHAR);
|
||||||
BEGIN
|
BEGIN
|
||||||
Files.WriteBytes(r, str, Strings.Length(str));
|
Files.WriteBytes(r, str, Strings.Length(str));
|
||||||
END WriteString;
|
END WriteString;
|
||||||
|
|
||||||
PROCEDURE fileToString*(VAR fileName: ARRAY OF CHAR; VAR returnString: strutils.pstring);
|
PROCEDURE fileToString*(VAR fileName: ARRAY OF CHAR; VAR returnString: strUtils.pstring);
|
||||||
VAR
|
VAR
|
||||||
f: Files.File;
|
f: Files.File;
|
||||||
r: Files.Rider;
|
r: Files.Rider;
|
||||||
|
|
@ -59,7 +59,7 @@ BEGIN
|
||||||
RETURN TRUE;
|
RETURN TRUE;
|
||||||
END stringToFile;
|
END stringToFile;
|
||||||
|
|
||||||
PROCEDURE json2pstring*(VAR json: ARRAY OF CHAR; VAR pstr: strutils.pstring);
|
PROCEDURE json2pstring*(VAR json: ARRAY OF CHAR; VAR pstr: strUtils.pstring);
|
||||||
VAR
|
VAR
|
||||||
fi: vpkFiles.fileInfo;
|
fi: vpkFiles.fileInfo;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
MODULE vpkdepTree;
|
MODULE vpkdepTree;
|
||||||
IMPORT Out, Strings, strutils, StringList;
|
IMPORT Out, Strings, strUtils, StringList;
|
||||||
TYPE
|
TYPE
|
||||||
|
|
||||||
pstring = strutils.pstring;
|
pstring = strUtils.pstring;
|
||||||
pstrings = strutils.pstrings;
|
pstrings = strUtils.pstrings;
|
||||||
|
|
||||||
Tdep* = POINTER TO TdepDesc;
|
Tdep* = POINTER TO TdepDesc;
|
||||||
Tdeps* = POINTER TO ARRAY OF Tdep;
|
Tdeps* = POINTER TO ARRAY OF Tdep;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue