persistent class %Library.RoutineIndex
extends %Persistent
Index for all the routines in this namespace. Using this index avoids the overhead of loading
all the information from ^ROUTINE, ^rMAC, ^rINC which makes the routine editing tool substantially
faster. In case you have tools that enter routines directly into the global and you wish to add
this routine to the index then after you have edited the global you should call:
Do RebuildItemIndex^%R(Name,Type)
The global structure is:
^rINDEX(Name,Type)=$ListBuild(Modified,Length)
Where:
- Type - is one of "MAC","INT","BAS","MVB","INC","OBJ"
- Name - is the name of this item, eg routine '%qserver' for classes this is the upper case version.
- Modified - is the last date/time the routine was modified in $zdt($h,3) format
- Length - is the size in bytes
property Length
as %Integer;
The size in bytes of this routine.
property Modified
as %TimeStamp;
The date/time that this routine was last saved.
property Name
as %String(MAXLEN=128) [ Required ];
The name of the routine.
property Type
as %String [ Required ];
The type of routine, this will be one of:
- MAC - Macro routine, content is stored in ^rMAC global
- INT - Cache Object Script routine, content is stored in ^ROUTINE global
- INC - Include file, these may be included from a MAC routine, content
is stored in ^rINC
- BAS - Cache Basic routine, content is stored in the ^ROUTINE global
- MVB - MultiValue Basic routine, content is stored in the ^ROUTINE global
- OBJ - Object code, content is stored in ^rOBJ global
classmethod RebuildIndex(namespace As %String, ByRef num As %Integer)
as %Status
In case this index gets out of sync with the routines in the current namespace
you can call this method to rebuild the index from the various ^ROUTINE, ^rINC,
^rMAC globals. This only rebuilds the index for entries that really live in
this namespace, if you have routine mappings so that some routines are in a
separate namespace you will need to rebuilt these seperately.
classmethod RebuildItemIndex(rtn As %String, ext As %String, namespace As %String)
as %Status
Rebuild the index information for this single item. You pass this the
rtn name, its ext (one of "INT", "INC", "MAC", "BAS", "MVB", "OBJ")
and optionally the namespace as namespace.
You can call this after modifying the routine global directly to update the
index correct with the new information.
index (Index on Name,Type) [IdKey];