Package org.metricshub.jawk.ext
Class CoreExtension
java.lang.Object
org.metricshub.jawk.ext.AbstractExtension
org.metricshub.jawk.ext.CoreExtension
- All Implemented Interfaces:
JawkExtension
Extensions which make developing in Jawk and
interfacing other extensions with Jawk
much easier.
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 for completeness/normalization. - Double -
dbl = Double(3)
Converts its argument to a Double 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) ...assocarrayis 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 theassocarray. - 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) ...assocarrayis the associative array referred to by handle in the reference cache. - DumpRefs -
DumpRefs()
Dumps the reference cache to stdout.
- Author:
- Danny Daglas
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintarrayFunction(AssocArray target, Object... values) dateFunction(Object... args) dereferenceFunction(Object... args) deRefFunction(Object... args) doubleFunction(Object value) voidintfileExistsFunction(Object path) getExtensionName.haltFunction(Object... args) hashMapFunction(Object... args) inRefFunction(Object handle) intisInRefFunction(Object handle, Object key) linkedMapFunction(Object... args) intmapCopyFunction(AssocArray target, AssocArray source) mapFunction(Object... args) mapUnionFunction(Object... args) newReferenceFunction(Object... args) newRefFunction(Object... args) stringFunction(Object value) throwFunction(Object... args) timeoutFunction(Object millis) treeMapFunction(Object... args) typeOfFunction(Object value) intunreferenceFunction(Object handle) intunRefFunction(Object handle) versionFunction(Object value) Methods inherited from class org.metricshub.jawk.ext.AbstractExtension
getExtensionFunctions, initMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.metricshub.jawk.ext.JawkExtension
getExtensionFunctions, init
-
Field Details
-
INSTANCE
-
-
Constructor Details
-
CoreExtension
public CoreExtension()Constructor for CoreExtension.
-
-
Method Details
-
getExtensionName
Description copied from class:AbstractExtensiongetExtensionName.
- Specified by:
getExtensionNamein interfaceJawkExtension- Overrides:
getExtensionNamein classAbstractExtension- Returns:
- name of the extension package.
-
mapFunction
-
hashMapFunction
-
linkedMapFunction
-
treeMapFunction
-
mapUnionFunction
-
mapCopyFunction
-
arrayFunction
-
typeOfFunction
-
stringFunction
-
doubleFunction
-
haltFunction
-
newReferenceFunction
-
newRefFunction
-
dereferenceFunction
-
deRefFunction
-
unreferenceFunction
-
unRefFunction
-
inRefFunction
-
isInRefFunction
-
dumpRefsFunction
public void dumpRefsFunction() -
timeoutFunction
-
throwFunction
-
versionFunction
-
dateFunction
-
fileExistsFunction
-