| /* |
| * ======== StateReader.xdc ======== |
| */ |
| |
| package xdc.rov; |
| |
| import xdc.rov.Program; |
| |
| /*! |
| * ======== StateReader ======== |
| * These APIs are all designed so that they will not re-read data that has already been read in. |
| * |
| * The StateReader has three similar APIs for reading instance state: |
| * fetchInstState |
| * fetchHandleState |
| * getInstDesc |
| * |
| * fetchInstState takes an instance address and its index into the array of |
| * static instances (or -1 if dynamic). This is called by fetchAllInstStates, |
| * knows the index because it's iterating over the list. |
| * |
| * fetchHandleState just takes an instance address. It looks through the list |
| * of instances to determine the index, then calls down to fetchInstState. |
| * This API is called by Program.scanHandle. |
| * |
| * getInstDesc takes a decoded instance state structure and the index. Both |
| * fetch functions ultimately call down to this API. It is also called |
| * directly by Program.scanObject for scanning embedded objects. |
| */ |
| metaonly module StateReader |
| { |
| |
| instance: |
| |
| /*! |
| * ======== create ======== |
| */ |
| create(ISymbolTable.Instance symTable, StructureDecoder.Instance strDec); |
| |
| /*! |
| * ======== fetchModuleState ======== |
| * Scans the given module's module state structure. If the structure has |
| * already been scanned, this function returns immediately. |
| */ |
| Void fetchModuleState(Program.ROVModuleDesc *mod); |
| |
| /*! |
| * ======== fetchAllInstStates ======== |
| * This function makes sure that all of the instance state structures for |
| * this module have been scanned in. It does not call any view$init |
| * functions. |
| */ |
| Void fetchAllInstStates(Program.ROVModuleDesc *mod); |
| |
| /*! |
| * ======== fetchInstState ======== |
| * This function scans in a single instance's state, and associates |
| * various metadata (used by the view$init functions) with the instance |
| * object. |
| * Returns the inst object for Program.scanHandle. |
| */ |
| Program.ROVInstanceDesc *fetchInstState(Program.ROVModuleDesc *mod, |
| Long instAddr, Int staticIndex); |
| |
| /*! |
| * ======== fetchHandleState ======== |
| * The fetchInstState API needs to know whether the given instance |
| * is static or dynamic. If we just have a handle to an instance, we first |
| * need to determine whether it is static or dynamic. |
| */ |
| Program.ROVInstanceDesc *fetchHandleState(Program.ROVModuleDesc *mod, |
| Long instAddr); |
| |
| /*! |
| * ======== getInstDesc ======== |
| * Takes a decoded state structure and creates an Program.ROVInstanceDesc |
| * for it. Also retrieves the label for the instance. |
| */ |
| Program.ROVInstanceDesc *getInstDesc(Program.ROVModuleDesc *mod, Any obj, |
| Int staticIndex); |
| |
| } |