loadLib

 

 

Description

loadLib dynamically loads a shared library on any supported platform. The shared library must export two functions, __getLibName and __registerLibFunctions. See the xml C++ project for an example of a shared library meeting these requirements. To test a DLL (on a Windows platform) to make sure that it meets this requirement, use the command:
dumpbin /EXPORTS myLib.dll
For example, if "xml" is substituted for myLib, the dumpbin command yields:

		C:/ais>dumpbin /EXPORTS xml.dll
		Microsoft (R) COFF/PE Dumper Version 7.10.3077
		Copyright (C) Microsoft Corporation.  All rights reserved.
		Dump of file xml.dll
		File Type: DLL
		  Section contains the following exports for xml.dll
			00000000 characteristics
			4559CD35 time date stamp Tue Nov 14 06:05:41 2006
				0.00 version
				   1 ordinal base
				   2 number of functions
				   2 number of names
			ordinal hint RVA      name
				  1    0 0000101E __getLibName
				  2    1 00001023 __registerLibFunctions
 

DLL Location On a Windows platform, ALIBS begins its search for a DLL in the current directory and then searches the directories specified in the PATH environment variable for the DLL. See the MSDN discussion "DLL Hell" for more details on the selection of a DLL. One good place to put DLLs is in C:/ais/bin which is normally included in the PATH.

DLL Naming Only the base name of the shared library is required. The appropriate extension (.dll, .so, etc.) are automatically added to the name based upon the current platform.

getLibName loadLib depends upon its ability to extract and access the __getLibName function from the shared library. __getLibName is used to retrieve the name and version number of the shared library. This name and version is used as a key into a map holding all of the shared libraries in use. The value associated with each key is a pointer to the QLibrary class that provides a multi-platform method of loading shared libraries. See the Qt documentation for more details.

registerLibFunctions The shared library must also export a function named __registerLibFunctions that returns a pointer to a function that accepts four arguments. This function is called by loadLib to register one or more functions with the SmartBase engine. See the C++ xml project for an example.

When to use

Use the loadLib function to dynamically load a shared library to add new built-in Lambdas to AIS.

 

Syntax

(loadLib fileName)



Name Description AIS Types
fileName The path and base name of the shared library. The platform-dependent extension is added automatically. If no path is provided, the current directory and then the directories specified by the path environment variable are searched. The first match is used. The ais/bin directory is a good place to put shared libraries since it is normally included in the path environment variable's list of directories.String


Returns:

The loadObject function returns true iff loadLib is able to resolve getLibName, call it to extract the shared library name and version, extract the registerLibFunctions, fetch the pointer to the registration function and then successfully register the Lambdas in the shared library with the smartbase engine.

 

Examples

Here are a number of links to Lambda coding examples which contain this instruction in various use cases.

 

Argument Types

Here are the links to the data types of the function arguments.

String

Here are also a number of links to functions having arguments with any of these data types.

*=(Symbol) addMethod(BitVector) addMethod(Boolean) addMethod(Brick)
addMethod(Character) addMethod(CpxVector) addMethod(Date) addMethod(Dictionary)
addMethod(Directory) addMethod(FltVector) addMethod(Function) addMethod(IntVector)
addMethod(List) addMethod(Matrix) addMethod(NumMatrix) addMethod(NumVector)
addMethod(Number) addMethod(ObjVector) addMethod(ObjectRepository) addMethod(Pair)
addMethod(PcodeVector) addMethod(ShortVector) addMethod(String) addMethod(Structure)
addMethod(Symbol) addMethod(Vector) addMethod(Void) appendWriteln(ByteVector)
append(BitVector) append(Complex) append(CpxVector) append(FltVector)
append(IntVector) append(Matrix) append(NumMatrix) append(NumVector)
append(ObjVector) append(Pair) append(ShortVector) append(String)
append(Structure) append(Symbol) append(Vector) balance(Lambda)
binaryInsert(CpxVector) binaryInsert(FltVector) binaryInsert(IntVector) binaryInsert(Matrix)
binaryInsert(NumMatrix) binaryInsert(NumVector) binaryInsert(ShortVector) binaryInsert(Structure)
binaryInsert(Vector) binarySearch(CpxVector) binarySearch(Dictionary) binarySearch(FltVector)
binarySearch(IntVector) binarySearch(Matrix) binarySearch(NumMatrix) binarySearch(NumVector)
binarySearch(ObjVector) binarySearch(ShortVector) binarySearch(Structure) binarySearch(Vector)
boolean(Boolean) character(Character) clean(String) closeLog(FileIO)
code(String) compareEQ(BitVector) compareEQ(Boolean) compareEQ(Brick)
compareEQ(Character) compareEQ(Complex) compareEQ(CpxVector) compareEQ(Date)
compareEQ(Dictionary) compareEQ(Directory) compareEQ(FltVector) compareEQ(Function)
compareEQ(IntVector) compareEQ(Lambda) compareEQ(List) compareEQ(Matrix)
compareEQ(NumMatrix) compareEQ(NumVector) compareEQ(Number) compareEQ(ObjVector)
compareEQ(ObjectRepository) compareEQ(Pair) compareEQ(ShortVector) compareEQ(String)
compareEQ(Structure) compareEQ(Symbol) compareEQ(Vector) compareEQ(Void)
compareGE(BitVector) compareGE(Boolean) compareGE(Brick) compareGE(Character)
compareGE(Complex) compareGE(CpxVector) compareGE(Date) compareGE(Dictionary)
compareGE(Directory) compareGE(Function) compareGE(IntVector) compareGE(Lambda)
compareGE(List) compareGE(Matrix) compareGE(NumMatrix) compareGE(Number)
compareGE(ObjVector) compareGE(ObjectRepository) compareGE(Pair) compareGE(ShortVector)
compareGE(String) compareGE(Structure) compareGE(Symbol) compareGE(Vector)
compareGE(Void) compareGT(BitVector) compareGT(Boolean) compareGT(Brick)
compareGT(Character) compareGT(Complex) compareGT(CpxVector) compareGT(Date)
compareGT(Dictionary) compareGT(Directory) compareGT(Function) compareGT(IntVector)
compareGT(Lambda) compareGT(List) compareGT(Matrix) compareGT(NumMatrix)
compareGT(NumVector) compareGT(Number) compareGT(ObjVector) compareGT(ObjectRepository)
compareGT(Pair) compareGT(ShortVector) compareGT(String) compareGT(Structure)
compareGT(Symbol) compareGT(Vector) compareGT(Void) compareLE(BitVector)
compareLE(Boolean) compareLE(Brick) compareLE(Character) compareLE(Complex)
compareLE(CpxVector) compareLE(Date) compareLE(Dictionary) compareLE(Directory)
compareLE(FltVector) compareLE(Function) compareLE(IntVector) compareLE(Lambda)
compareLE(List) compareLE(Matrix) compareLE(NumMatrix) compareLE(NumVector)
compareLE(Number) compareLE(ObjVector) compareLE(ObjectRepository) compareLE(Pair)
compareLE(ShortVector) compareLE(String) compareLE(Structure) compareLE(Symbol)
compareLE(Vector) compareLE(Void) compareLT(BitVector) compareLT(Boolean)
compareLT(Brick) compareLT(Character) compareLT(Complex) compareLT(CpxVector)
compareLT(Date) compareLT(Dictionary) compareLT(Directory) compareLT(FltVector)
compareLT(Function) compareLT(IntVector) compareLT(Lambda) compareLT(List)
compareLT(Matrix) compareLT(NumMatrix) compareLT(NumVector) compareLT(Number)
compareLT(ObjVector) compareLT(ObjectRepository) compareLT(Pair) compareLT(ShortVector)
compareLT(String) compareLT(Structure) compareLT(Symbol) compareLT(Vector)
compareLT(Void) compareNE(BitVector) compareNE(Boolean) compareNE(Brick)
compareNE(Character) compareNE(Complex) compareNE(CpxVector) compareNE(Date)
compareNE(Dictionary) compareNE(Directory) compareNE(FltVector) compareNE(Function)
compareNE(IntVector) compareNE(Lambda) compareNE(List) compareNE(Matrix)
compareNE(NumMatrix) compareNE(NumVector) compareNE(Number) compareNE(ObjVector)
compareNE(ObjectRepository) compareNE(Pair) compareNE(ShortVector) compareNE(String)
compareNE(Structure) compareNE(Symbol) compareNE(Vector) compareNE(Void)
compare(BitVector) compare(Boolean) compare(Brick) compare(Character)
compare(Complex) compare(CpxVector) compare(Date) compare(Dictionary)
compare(Directory) compare(FltVector) compare(Function) compare(IntVector)
compare(Lambda) compare(List) compare(Matrix) compare(NumMatrix)
compare(NumVector) compare(Number) compare(ObjVector) compare(ObjectRepository)
compare(Pair) compare(ShortVector) compare(String) compare(Structure)
compare(Symbol) compare(Vector) compare(Void) comparison(BitVector)
comparison(Boolean) comparison(Brick) comparison(Character) comparison(Complex)
comparison(Date) comparison(Dictionary) comparison(Directory) comparison(FltVector)
comparison(Function) comparison(IntVector) comparison(List) comparison(Matrix)
comparison(NumMatrix) comparison(NumVector) comparison(Number) comparison(ObjVector)
comparison(ObjectRepository) comparison(Pair) comparison(ShortVector) comparison(String)
comparison(Structure) comparison(Symbol) comparison(Vector) comparison(Void)
compress(ByteVector) cons(Pair) count(Dictionary) count(Directory)
count(List) count(Matrix) count(NumMatrix) count(Pair)
count(Structure) count(Vector) date(Date) day(Date)
days360(Date) debugBrowsableProcs(Context) debugBrowsableProcs(Lambda) debugDialog(String)
disassemble(Context) disassemble(Lambda) display(ByteVector) display(FileIO)
downcase(String) downcase(Symbol) encode(ByteVector) evalInSyncLocalContext(Context)
eval(Lambda) eval(List) exportTab(Lambda) exportTab(ObjectRepository)
fileReadRecord(ByteVector) fileReadRecord(String) fileReadRecord(Text) find(String)
getContextPtr(Context) getHttp(String) getHttp(Text) hashString(String)
hashString(Symbol) hour(Date) importTab(Lambda) importTab(ObjectRepository)
insert(Dictionary) insert(Directory) insert(FltVector) insert(IntVector)
insert(Matrix) insert(NumMatrix) insert(NumVector) insert(ObjVector)
insert(ShortVector) insert(Structure) insert(Vector) inside(BitVector)
inside(Dictionary) inside(Directory) inside(IntVector) inside(List)
inside(Matrix) inside(NumMatrix) inside(NumVector) inside(ShortVector)
inside(Structure) inside(Vector) inspect(Context) inspect(Lambda)
inspect(ObjectRepository) integer(Integer) isAtom(BitVector) isAtom(Brick)
isAtom(Dictionary) isAtom(Directory) isAtom(FltVector) isAtom(IntVector)
isAtom(List) isAtom(Matrix) isAtom(NumMatrix) isAtom(NumVector)
isAtom(ObjVector) isAtom(Pair) isAtom(PcodeVector) isAtom(ShortVector)
isAtom(Structure) isAtom(Vector) isBitVector(BitVector) isBoolean(Boolean)
isByteVector(ByteVector) isCharAlphabetic(ByteVector) isCharAlphabetic(String) isCharAlphabetic(Symbol)
isCharAlphanumeric(ByteVector) isCharAlphanumeric(String) isCharAlphanumeric(Symbol) isCharLowercase(ByteVector)
isCharLowercase(String) isCharLowercase(Symbol) isCharName(ByteVector) isCharName(String)
isCharName(Symbol) isCharNumeric(ByteVector) isCharNumeric(String) isCharNumeric(Symbol)
isCharUppercase(ByteVector) isCharUppercase(String) isCharUppercase(Symbol) isCharWhitespace(ByteVector)
isCharWhitespace(String) isCharWhitespace(Symbol) isChar(String) isCharacter(Character)
isComplex(Complex) isDate(Date) isDictionary(Dictionary) isDirectory(Directory)
isEqual(BitVector) isEqual(Boolean) isEqual(Brick) isEqual(Character)
isEqual(Complex) isEqual(Date) isEqual(Dictionary) isEqual(Directory)
isEqual(FltVector) isEqual(Function) isEqual(IntVector) isEqual(List)
isEqual(Matrix) isEqual(NumMatrix) isEqual(NumVector) isEqual(Number)
isEqual(ObjVector) isEqual(Pair) isEqual(ShortVector) isEqual(String)
isEqual(Structure) isEqual(Vector) isEqual(Void) isError(Error)
isFloatVector(FltVector) isIdentical(BitVector) isIdentical(Boolean) isIdentical(Brick)
isIdentical(Character) isIdentical(Complex) isIdentical(Date) isIdentical(Dictionary)
isIdentical(Directory) isIdentical(Error) isIdentical(FltVector) isIdentical(Function)
isIdentical(IntVector) isIdentical(List) isIdentical(Matrix) isIdentical(NumMatrix)
isIdentical(NumVector) isIdentical(Number) isIdentical(ObjVector) isIdentical(ObjectRepository)
isIdentical(Pair) isIdentical(PcodeVector) isIdentical(ShortVector) isIdentical(Structure)
isIdentical(Vector) isIdentical(Void) isInside(BitVector) isInside(Dictionary)
isInside(Directory) isInside(IntVector) isInside(List) isInside(Matrix)
isInside(NumMatrix) isInside(NumVector) isInside(ObjVector) isInside(Pair)
isInside(ShortVector) isInside(Structure) isInside(Vector) isIntegerVector(IntVector)
isInteger(Integer) isMatrix(Matrix) isMember(BitVector) isMember(Dictionary)
isMember(Directory) isMember(IntVector) isMember(List) isMember(Matrix)
isMember(NumMatrix) isMember(NumVector) isMember(ObjVector) isMember(Pair)
isMember(ShortVector) isMember(Structure) isMember(Vector) isMoney(Number)
isNumberMatrix(NumMatrix) isNumberVector(NumVector) isNumber(Number) isObjectVector(ObjVector)
isObject(BitVector) isObject(Brick) isObject(ByteVector) isObject(Dictionary)
isObject(Directory) isObject(FltVector) isObject(IntVector) isObject(List)
isObject(Matrix) isObject(NumMatrix) isObject(NumVector) isObject(ObjVector)
isObject(Pair) isObject(PcodeVector) isObject(ShortVector) isObject(String)
isObject(Structure) isObject(Symbol) isObject(Vector) isPair(List)
isPair(Pair) isPcodeVector(PcodeVector) isString(String) isStructure(Structure)
isSymbol(Symbol) isText(String) isType(BitVector) isType(Boolean)
isType(Brick) isType(Character) isType(Complex) isType(Date)
isType(Dictionary) isType(Directory) isType(FltVector) isType(Function)
isType(IntVector) isType(Matrix) isType(NumMatrix) isType(NumVector)
isType(Number) isType(ObjVector) isType(ObjectRepository) isType(Pair)
isType(ShortVector) isType(String) isType(Structure) isType(Symbol)
isType(Vector) isType(Void) isVector(Vector) julian(Date)
left(String) length(BitVector) length(Brick) length(Dictionary)
length(Directory) length(FltVector) length(IntVector) length(List)
length(Matrix) length(NumMatrix) length(NumVector) length(ObjVector)
length(ObjectRepository) length(Pair) length(PcodeVector) length(ShortVector)
length(String) length(Structure) length(Symbol) length(Vector)
list(List) loadLib(String) loadWorkspace(Context) macroReplace(String)
makeQuotedList(List) makeQuotedSymbol(Symbol) member(BitVector) member(Dictionary)
member(Directory) member(IntVector) member(List) member(Matrix)
member(NumMatrix) member(NumVector) member(ObjVector) member(ShortVector)
member(Structure) member(Vector) mid(String) minute(Date)
money(Number) month(Date) new(BitVector) new(Brick)
new(ByteVector) new(CpxVector) new(Dictionary) new(Directory)
new(FltVector) new(IntVector) new(Lambda) new(Matrix)
new(NumMatrix) new(NumVector) new(ObjVector) new(ObjectRepository)
new(PcodeVector) new(ShortVector) new(String) new(Structure)
new(Symbol) new(Vector) number(Number) openLog(FileIO)
openLog(String) pair(Pair) parse(String) postHttp(String)
postHttp(Text) readHtmlPage(String) readHtmlPage(Text) ref(BitVector)
ref(Boolean) ref(Brick) ref(Character) ref(Complex)
ref(Date) ref(Dictionary) ref(Directory) ref(FltVector)
ref(Function) ref(IntVector) ref(Lambda) ref(List)
ref(Matrix) ref(NumMatrix) ref(NumVector) ref(Number)
ref(ObjVector) ref(ObjectRepository) ref(PcodeVector) ref(ShortVector)
ref(String) ref(Structure) ref(Symbol) ref(Vector)
ref(Void) remove(BitVector) remove(Dictionary) remove(Directory)
remove(IntVector) remove(Matrix) remove(NumMatrix) remove(NumVector)
remove(ObjVector) remove(ShortVector) remove(Structure) remove(Vector)
replace(String) rept(String) requestHttp(String) requestHttp(Text)
right(String) run(ByteVector) run(Text) saveImmediate(ObjectRepository)
saveObject(ByteVector) saveObject(Integer) saveWorkspace(Context) second(Date)
send(BitVector) send(Boolean) send(Brick) send(Character)
send(CpxVector) send(Date) send(Dictionary) send(Directory)
send(FltVector) send(Function) send(IntVector) send(Lambda)
send(List) send(Matrix) send(NumMatrix) send(NumVector)
send(Number) send(ObjectRepository) send(Pair) send(ShortVector)
send(String) send(Structure) send(Symbol) send(Vector)
send(Void) setCar(List) setCar(Pair) setCdr(BitVector)
setCdr(Brick) setCdr(Dictionary) setCdr(Directory) setCdr(FltVector)
setCdr(IntVector) setCdr(List) setCdr(Matrix) setCdr(NumMatrix)
setCdr(NumVector) setCdr(ObjVector) setCdr(Pair) setCdr(ShortVector)
setCdr(Structure) setCdr(Vector) setLastCdr(BitVector) setLastCdr(FltVector)
setLastCdr(IntVector) setLastCdr(List) setLastCdr(Matrix) setLastCdr(NumMatrix)
setLastCdr(NumVector) setLastCdr(ObjVector) setLastCdr(Structure) setLastCdr(Vector)
set(ObjectRepository) setf(ObjectRepository) setq(BitVector) setq(Boolean)
setq(Brick) setq(Character) setq(Date) setq(Dictionary)
setq(Directory) setq(FltVector) setq(IntVector) setq(Lambda)
setq(List) setq(Matrix) setq(NumVector) setq(Number)
setq(ObjVector) setq(ObjectRepository) setq(PcodeVector) setq(ShortVector)
setq(String) setq(Structure) setq(Symbol) setq(Vector)
setq(Void) sizeof(BitVector) sizeof(Boolean) sizeof(Brick)
sizeof(ByteVector) sizeof(Character) sizeof(Complex) sizeof(Date)
sizeof(Dictionary) sizeof(Directory) sizeof(FltVector) sizeof(Function)
sizeof(IntVector) sizeof(List) sizeof(Matrix) sizeof(NumMatrix)
sizeof(NumVector) sizeof(Number) sizeof(ObjVector) sizeof(ObjectRepository)
sizeof(Pair) sizeof(PcodeVector) sizeof(ShortVector) sizeof(String)
sizeof(Structure) sizeof(Symbol) sizeof(Vector) sizeof(Void)
sort(BitVector) sort(Dictionary) sort(Directory) sort(FltVector)
sort(IntVector) sort(List) sort(Matrix) sort(NumMatrix)
sort(NumVector) sort(ObjVector) sort(ShortVector) sort(Structure)
sort(Vector) stringCiEQ(String) stringCiGE(String) stringCiGT(String)
stringCiLE(String) stringCiLT(String) stringCiNE(String) stringFill(String)
stringToBVector(String) stringToVector(String) string(Complex) string(String)
submit(Context) substitute(String) substringCiEQ(String) substringCiGE(String)
substringCiGT(String) substringCiLE(String) substringCiLT(String) substringCiNE(String)
substringEQ(String) substringFill(String) substringGE(String) substringGT(String)
substringLE(String) substringLT(String) substringNE(String) substring(String)
symbol(Symbol) system(ByteVector) system(Text) testFunction(Structure)
text(String) time(Date) trim(String) type(BitVector)
type(Boolean) type(Brick) type(ByteVector) type(Character)
type(Complex) type(Date) type(Dictionary) type(Directory)
type(FltVector) type(Function) type(IntVector) type(Lambda)
type(Matrix) type(NumMatrix) type(NumVector) type(Number)
type(ObjVector) type(ObjectRepository) type(Pair) type(PcodeVector)
type(ShortVector) type(String) type(Structure) type(Symbol)
type(Vector) type(Void) uniqueInsert(FltVector) uniqueInsert(IntVector)
uniqueInsert(Matrix) uniqueInsert(NumMatrix) uniqueInsert(NumVector) uniqueInsert(ObjVector)
uniqueInsert(ShortVector) uniqueInsert(Structure) uniqueInsert(Vector) upcase(String)
upcase(Symbol) vectorFill(BitVector) vectorFill(FltVector) vectorFill(IntVector)
vectorFill(Matrix) vectorFill(NumMatrix) vectorFill(NumVector) vectorFill(ObjVector)
vectorFill(ShortVector) vectorFill(Vector) writeln(ByteVector) writeln(String)
writeln(Text) year(Date)

How do I contact the AIS team?

You can always talk with the AIS at aiserver.sourceforge.net.