Description
- Object query support has been added. Extensions can use ISXDK 30a (or later) for direct access to this functionality. An object query is a math formula where all variables are relative to a specific object, and results in a boolean value -- the query is either true, or it is false.
- Query math can compare and manipulate text, decimals, or integers (note that bool counts as an integer for this purpose) with standard math operators. Text comparisons are not case sensitive.
- One intended use for object queries is a uniform search mechanism, to find an object or set of objects from a larger set of objects (compare to a SQL SELECT statement, where a LavishScript object query is the WHERE clause).
Members
- uint LavishScript.CreateQuery[expression]: Creates a query with the given expression -- e.g. ${LavishScript.CreateQuery[Name=="Bonkers"]}
- string LavishScript.RetrieveQueryExpression[#]: Retrieves the query expression for a previously created query, by ID
- bool LavishScript.QueryEvaluate[#, object]: Determines if the given object matches the given query
Methods
- LavishScript:FreeQuery[#]: Frees a previously created query, by ID
Expression/Operator Notes
- Math operators identical to LS
- &&, ||, and () are supported
- Special Operators:
- =- Substring Name =- "Boobies" is true if Name.Find[Boobies]
- = Weak compare, value only
- == Strong compare, value + type
- =~ Strong compare, value + type (same as ==)
- !~ Strong compare, NOT value or type
Example
function main()
{
variable int ID
variable int ID1
; Example: Compare System.OS
ID:Set[${LavishScript.CreateQuery[OS = "Windows 7 Ultimate"]}]
ID1:Set[${LavishScript.CreateQuery[OS = "Windows 7 Ultimate && MemFree < 500 && MemTotal > 1000"]}]
echo ID ${ID}
echo LavishScript.RetrieveQueryExpression[${ID}] "${LavishScript.RetrieveQueryExpression[${ID}]}"
echo LavishScript.RetrieveQueryExpression[${ID1}] "${LavishScript.RetrieveQueryExpression[${ID1}]}"
echo System.OS ${System.OS}
echo LavishScript.QueryEvaluate[${ID}, System] ${LavishScript.QueryEvaluate[${ID}, System]}
echo LavishScript.QueryEvaluate[${ID1}, System] ${LavishScript.QueryEvaluate[${ID}, System]}
LavishScript.FreeQuery[${ID}]
LavishScript.FreeQuery[${ID1}]
}
ID 7
LavishScript.RetrieveQueryExpression[7] "OS = "Windows 7 Ultimate""
LavishScript.RetrieveQueryExpression[8] "OS = "Windows 7 Ultimate && MemFree < 500 && MemTotal > 1000""
System.OS Windows 7 Ultimate
LavishScript.QueryEvaluate[7, System] TRUE
LavishScript.QueryEvaluate[8, System] FALSE