Class CoreExtension
- All Implemented Interfaces:
JawkExtension
The extension functions which are available are as follows:
- Array -
Array(array,1,3,5,7,9)
Inserts elements into an associative array whose keys are ordered non-negative integers, and the values are the arguments themselves. The first argument is the associative array itself. - Map/HashMap/TreeMap/LinkedMap -
Map(map,k1,v1,k2,v2,...,kN,vN)
, orMap(k1,v1,k2,v2,...,kN,vN)
.
Build an associative array with its keys/values as parameters. The odd parameter count version takes the map name as the first parameter, while the even parameter count version returns an anonymous associative array for the purposes of providing a map by function call parameter.
Map/HashMap configures the associative array as a hash map, TreeMap as an ordered map, and LinkedMap as a map which traverses the key set in order of insertion. - MapUnion -
MapUnion(map,k1,v1,k2,v2,...,kN,vN)
Similar to Map, except that map is not cleared prior to populating it with key/value pairs from the parameter list. - MapCopy -
cnt = MapCopy(aaTarget, aaSource)
Clears the target associative array and copies the contents of the source associative array to the target associative array. - TypeOf -
typestring = TypeOf(item)
Returns one of the following depending on the argument:- "String"
- "Integer"
- "AssocArray"
- "Reference" (see below)
- String -
str = String(3)
Converts its argument to a String. Similar to the _STRING extension, but provided for completeness/normalization. - Double -
dbl = Double(3)
Converts its argument to a Double. Similar to the _DOUBLE extension, but provided for completeness/normalization. - Halt -
Halt()
Similar to exit(), except that END blocks are not executed if Halt() called before END block processing. - Timeout -
r = Timeout(300)
A blocking function which waits N milliseconds before unblocking (continuing). This is useful in scripts which employ blocking, but occasionally needs to break out of the block to perform some calculation, polling, etc. - Throw -
Throw("this is an awkruntimeexception")
Throws an AwkRuntimeException from within the script. - Version -
print Version(aa)
Prints the version of the Java class which represents the parameter. - Date -
str = Date()
Similar to the Java equivalent : str = new Date().toString(); - FileExists -
b = FileExists("/a/b/c")
Returns 0 if the file doesn't exist, 1 otherwise. - NewRef[erence]/Dereference/DeRef/Unreference/UnRef/etc. - Reference Management Functions. These are described in detail below.
Reference Management
AWK's memory model provides only 4 types of variables for use within AWK scripts:- Integer
- Double
- String
- Associative Array
- Associative array assignments (i.e., assocarray1 = associarray2) are prohibited.
- Functions cannot return associative arrays.
We attempt to alleviate these difficulties by adding references to Jawk via the CoreExtension module. References convert associative arrays into unique strings called reference handles. Since reference handles are strings, they can be assigned and returned via AWK functions without restriction. And, reference handles are then used by other reference extension functions to perform common associative array operations, such as associative array cell lookup and assignment, key existence check, and key iteration.
The reference model functions are explained below:
- NewRef / NewReference -
handle = NewRef(assocarray)
Store map into reference cache. Return the unique string handle for this associative array. - DeRef / Dereference -
val = DeRef(handle, key)
Return the cell value of the associative array referenced by the key. In other words:return assocarray[key]
- UnRef / Unreference -
UnRef(handle)
Eliminate the reference occupied by the reference cache. - InRef -
while(key = InRef(handle)) ...
Iterate through the key-set of the associative array referred to by handle in the reference cache. This is similar to:
wherefor (key in assocarray) ...
assocarray
is the associative array referred to by handle in the reference cache.
Warning: unlike the IN keyword, InRef will maintain state regardless of scope. That is, if one were to break; out of the while loop above, the next call to InRef() will be the next anticipated element of theassoc
array. - IsInRef -
b = IsInRef(handle, key)
Checks whether the associative array in the reference cache contains the key. This is similar to:
whereif (key in assocarray) ...
assocarray
is the associative array referred to by handle in the reference cache. - DumpRefs -
DumpRefs()
Dumps the reference cache to stdout.
- Author:
- Danny Daglas
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionString[]
All the extended keywords supported by this extension.int[]
getAssocArrayParameterPositions
(String extensionKeyword, int numArgs) Define the parameters which are expected to be associative arrays.getExtensionName.Invoke extension as a method.Methods inherited from class org.sentrysoftware.jawk.ext.AbstractExtension
init
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.sentrysoftware.jawk.ext.JawkExtension
init
-
Constructor Details
-
CoreExtension
public CoreExtension()Constructor for CoreExtension.
-
-
Method Details
-
getExtensionName
getExtensionName.
- Specified by:
getExtensionName
in interfaceJawkExtension
- Returns:
- name of the extension package.
-
extensionKeywords
All the extended keywords supported by this extension.Note: Jawk will throw a runtime exception if the keyword collides with any other keyword in the system, extension or otherwise.
- Specified by:
extensionKeywords
in interfaceJawkExtension
- Returns:
- the list of keywords the extension provides support for
-
getAssocArrayParameterPositions
Define the parameters which are expected to be associative arrays. This is used by the semantic analyzer to enforce type checking and correct Jawk variable allocation (which is done at the beginning of script execution). Assume no guarantee of any extension parameter being an associative array.- Specified by:
getAssocArrayParameterPositions
in interfaceJawkExtension
- Overrides:
getAssocArrayParameterPositions
in classAbstractExtension
- Parameters:
extensionKeyword
- The extension keyword to check.numArgs
- How many actual parameters are used in the call.- Returns:
- An array of parameter indexes containing associative arrays. Note: non-inclusion of a parameter index into this array makes no implication as to whether the parameter is a scalar or an associative array. It means that its type is not guaranteed to be an associative array.
-
invoke
Invoke extension as a method.- Specified by:
invoke
in interfaceJawkExtension
- Parameters:
keyword
- The extension keyword.args
- Arguments to the extension.- Returns:
- The return value (result) of the extension.
-