TmListGetMethod Function
Returns the procedure name associated with the specified list method name.
Usage
procedure_name = TmListGetMethod(tool_name, list_name, method_name)
Input Parameters
tool_name—A string specifying the unique name of a VDA Tool.
list_name—A string specifying the unique name of a list.
method_name—A string specifying the name of a method.
Returned Value
procedure_name—A string containing the name of the list method procedure if set, otherwise a NULL string is returned.
Keywords
None.
Discussion
The default list method names and their procedures are listed in Default List Methods and Procedures.
Description | Method Name | Method Procedure |
---|---|---|
Extend a list | TM_LIST_EXTEND | TmListExtend |
Append to a list | TM_LIST_APPEND | TmListAppend |
Insert in a list | TM_LIST_INSERT | TmListInsert |
Retrieve from a list | TM_LIST_RETRIEVE | TmListRetrieve |
Replace a list element | TM_LIST_REPLACE | TmListReplace |
Delete (Undo) previous change to a list | TM_LIST_DELETE | TmListDelete |
Clear list elements | TM_LIST_CLEAR | TmListClear |
Destroy list elements | TM_LIST_DESTROY | TmListDestroy |
Code for the default list method procedures are contained in the file, where
WAVE_DIR
is the the main PV‑WAVE directory. WAVE_DIR/lib/vdatools/tmlist.pro
WAVE_DIR\lib\vdatools\tmlist.pro
Use TmListSetMethod to override the default method procedures.
Example
In this example, a user-defined TM_LIST_APPEND method is called. The method adds all items except the string 'Dont_Add
'.
; Create the method procedure.
PRO MyListAppend, tool_name, list_name, item
DECLARE FUNC, TmGetAttribute
DECLARE FUNC, TmSetAttribute
items = TmGetAttribute(tool_name, list_name, 'ITEMS')
free = TmGetAttribute(tool_name, list_name, 'FREE')
IF free GE N_ELEMENTS(items) THEN BEGIN
TmListExtend, tool_name, list_name
items = TmGetAttribute(tool_name, list_name, 'ITEMS')
ENDIF
IF item NE 'Dont_Add' THEN BEGIN
items(free) = item
s = TmSetAttribute(tool_name, list_name, 'ITEMS', items)
s = TmSetAttribute(tool_name, list_name, 'FREE', free+1)
ENDIF
END
; Create a list and append to it.
list_name = TmList(tool_name)
TmListSetMethod, tool_name, list_name, 'TM_LIST_APPEND', $
'MyListAppend'
TmListAppend, tool_name, list_name, 'First Item'
INFO, TmListRetrieve(tool_name, list_name), /Full
; PV-WAVE prints the following:
; <Expression> LIST = List(1)
; STRING = 'First Item'
; TmListAppend, tool_name, list_name, 'Dont_Add'
INFO, TmListRetrieve(tool_name, list_name), /Full
; PV-WAVE prints the following:
; <Expression> LIST = List(1)
; STRING = 'First Item'
; Use TmListGetMethod to access the name of the method and
; execute it explicitly.
new_var = 'Second Item'
var_name = 'new_var'
method = TmListGetMethod(tool_name, list_name, 'TM_LIST_APPEND')
INFO, method
; PV-WAVE prints: METHOD STRING = 'MyListAppend'
s = EXECUTE(method + ', tool_name, list_name, ' + var_name)
INFO, TmListRetrieve(tool_name, list_name), /Full
; PV-WAVE prints the following:
; <Expression> LIST = List(2)
; STRING = 'First Item'
; STRING = 'Second Item'