Interface l3 ------------ Enumerate Open Modes ~~~~~~~~~~~~~~~~~~~~ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_OPEN_NEW`` | ``0`` | create a new file that should not already exist | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_OPEN_OLD`` | ``1`` | read or write an existing file | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_OPEN_RDO`` | ``2`` | open an existing file as read only | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ Enumerate Data Types ~~~~~~~~~~~~~~~~~~~~ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_NULL`` | ``0`` | no data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_C1`` | ``1`` | char | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_C1ptr`` | ``2`` | pointer to char | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_I4`` | ``3`` | simple integer | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_I8`` | ``4`` | double integer | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_R4`` | ``5`` | simple float | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_R8`` | ``6`` | double float | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_I4ptr`` | ``7`` | pointer to simple integer | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_I8ptr`` | ``8`` | pointer to double integer | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_R4ptr`` | ``9`` | pointer to simple float | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_R8ptr`` | ``10`` | pointer to double integer | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3E_VOID`` | ``11`` | pointer to unknown | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ Enumerate L3 Flags ~~~~~~~~~~~~~~~~~~ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_NONE`` | ``0x0000`` | empty flag, all values set to false | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_NULL`` | ``0xFFFF`` | unsignificant flags value | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_WITHDATA`` | ``0x0001`` | get/set data into the node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_WITHCHILDREN`` | ``0x0002`` | parse the children of the node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_FAILSONLINK`` | ``0x0004`` | raises an error if link unreachable | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_FOLLOWLINKS`` | ``0x0008`` | follow links | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_MERGELINKS`` | ``0x0010`` | unused | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_COMPRESS`` | ``0x0020`` | unused | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_SKIPONERROR`` | ``0x0040`` | errors reported, process continues | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_NOALLOCATE`` | ``0x0080`` | no data allocation in L3 | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_NOCHILDMERGE`` | ``0x0100`` | unused | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_LINKOVERWRITE`` | ``0x0200`` | link create/update overwrite existing | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_WITHMUTEX`` | ``0x0400`` | use mutexes | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_FILLNANDATA`` | ``0x0800`` | fill new data with NaN | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_XXX2`` | ``0x1000`` | unused | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_HASEXTFLAGS`` | ``0x2000`` | another set of flags is present | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_DEBUG`` | ``0x4000`` | set debug traces | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_TRACE`` | ``0x8000`` | set end-user trace | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ Enumerate L3 node release Flags ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_R_NONE`` | ``0x0000`` | empty flag, all values set to false | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_R_ALL`` | ``0xFFFF`` | unsignificant flags value | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_R_HID_NODE`` | ``0x0001`` | release node hid_t s | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_R_MEM_CHILDREN`` | ``0x0002`` | free children list | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_R_HID_CHILDREN`` | ``0x0004`` | release children hid_t s | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_R_MEM_NODE`` | ``0x0008`` | release node itself | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``L3F_R_MEM_DATA`` | ``0x0010`` | actual data memory of node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ Interface L3/Macro ~~~~~~~~~~~~~~~~~~ .. raw:: html
L3M_HASFLAG ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``cursor`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flag`` | ``flag enum`` | Flag to test | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** An integer, 1 if the flag is set, 0 if unset .. raw:: html
L3M_SETFLAG ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``cursor`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flag`` | ``flag enum`` | Flag to set | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** The flags as integer .. raw:: html
L3M_UNSETFLAG ~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``cursor`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flag`` | ``flag enum`` | Flag to unset | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** The flags as integer Interface L3/raw ~~~~~~~~~~~~~~~~ .. raw:: html
L3_nodeCreate ~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``pid`` | ``hid_t`` | Parent node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t*`` | Node attributes to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** A successful creation returns the new node hid_t, -1 if failure **Remarks** All node arguments are immediatly used and copied, it is then possibleto release L3_Node_t as the function returns **API C** ``hid_t L3_nodeCreate(L3_Cursor_t *ctxt, hid_t pid, L3_Node_t *node);`` .. raw:: html
L3_nodeUpdate ~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t*`` | Node attributes to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** The parameter context is returned **Remarks** The target node hid_t is in the L3_Node_t* If a value is NULL, or L3F_NULL for flags or L3E_NULL for data type,then previous node value is unchanged for this attribute **API C** ``hid_t L3_nodeUpdate(L3_Cursor_t *ctxt,L3_Node_t *node);`` .. raw:: html
L3_nodeRelease ~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t**`` | Pointer to L3 Node to release | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Status **Remarks** The target L3_Node_t is released depending on flags see 'L3 node release Flags' at the top of this fileThe node pointer is set to NULL **API C** ``int L3_nodeRelease(L3_Node_t **nodeptr,int flags);`` .. raw:: html
L3_nodeChildrenFree ~~~~~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t**`` | Pointer to L3 Node to release | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Status **Remarks** Release the children list of the L3 node and close the children hid_tsame as with flags: L3F_R_MEM_CHILDREN|L3F_R_HID_CHILDREN **API C** ``int L3_nodeChildrenFree(L3_Node_t **nodeptr);`` .. raw:: html
L3_nodeFree ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t**`` | Pointer to node attributes to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** status -1 if failure **Remarks** The target node should be passed as L3_Node_t** and is set to NULLafter the memory is released. Node data is kept untouched.The embedded hid_t of the node is released, it is no more valid **API C** ``int L3_nodeFree(L3_Node_t **node);`` .. raw:: html
L3_nodeFreeNoDecRef ~~~~~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t**`` | Pointer to node attributes to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** status -1 if failure **Remarks** The target node should be passed as L3_Node_t** and is set to NULLafter the memory is released. Node data is kept untouched.The embedded hid_t of the node is NOT released, it is still valid **API C** ``int L3_nodeFreeNoDecRef(L3_Node_t **node);`` .. raw:: html
L3_nodeFree ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t**`` | Pointer to node attributes to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** status -1 if failure **Remarks** The target node should be passed as L3_Node_t** and is set to NULLafter the memory is released. Node data is released too.The embedded hid_t of the node is released, it is no more valid **API C** ``int L3_nodeAndDataFree(L3_Node_t **node);`` .. raw:: html
L3_nodeLink ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``hid_t`` | Parent node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``srcname`` | ``char*`` | Name of the child node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``destfile`` | ``char*`` | File name of the actual target node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``destname`` | ``char*`` | Node name of the actual target node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** The new node id is returned **Remarks** There is no check on the target file nor on the target node name **API C** ``hid_t L3_nodeLink(L3_Cursor_t *ctxt,hid_t node,char *srcname,char *destfile,char *destname);`` .. raw:: html
L3_nodeMove ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``parent`` | ``hid_t`` | Parent node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``newparent`` | ``hid_t`` | New parent node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``name`` | ``char*`` | Name of the node to move | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``newname`` | ``char*`` | New node name | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** The new node id is returned **Remarks** The move is performed by HDF5, check HDF5 docs for details. **API C** ``hid_t L3_nodeMove(L3_Cursor_t *ctxt,hid_t parent,hid_t newparent,char *name,char *newname);`` .. raw:: html
L3_nodeDelete ~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``parent`` | ``hid_t`` | Parent node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``name`` | ``char*`` | Name of the node to delete | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** The parameter context is returned **Remarks** The delete is performed by HDF5, check HDF5 docs for details. **API C** ``L3_Cursor_t *L3_nodeDelete(L3_Cursor_t *ctxt,hid_t parent,char *name);`` .. raw:: html
L3_nodeFind ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``parent`` | ``hid_t`` | Parent node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``path`` | ``char*`` | Path of the node to find | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** The hid_t of the node, -1 if failure **Remarks** The nodeFind retrieves the hid_t of a node from its path.Forces the link traversal, even if FOLLOWLINKS is set to false **API C** ``hid_t L3_nodeFind(L3_Cursor_t *ctxt,hid_t parent,char *path);`` .. raw:: html
L3_nodeRetrieve ~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id`` | ``hid_t`` | Node target id | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t*`` | Pointer to allocated node to fill in | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** A L3_Node_t with target node attributes copies **Remarks** The return value is allocated by the user and data should have correctdimensions. If node id is not found or if the context is bad a NULL value is returned. **API C** ``L3_Node_t *L3_nodeRetrieve(L3_Cursor_t *ctxt,hid_t id,L3_Node_t *node);`` .. raw:: html
L3_nodePrint ~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t`` | Node attributes buffer | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Remarks** Prints node attributes on standard output for debug/trace purpose **API C** ``void L3_nodePrint(L3_Node_t *node);`` .. raw:: html
L3_openFile ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``filename`` | ``char*`` | File name to handle | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``mode`` | ``int`` | Open mode | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flags`` | ``long`` | Set of flags | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** A new L3_Cursor_t **Remarks** The first function to call with L3 interface. All subsequent L3 callswould us the returned L3_Cursor_t as argument.Mode enumerate should be in Open Modes listFlags are a OR-ed list of values from L3 Flags **API C** ``L3_Cursor_t *L3_openFile(char *filename,int mode,long flags);`` .. raw:: html
L3_openHID ~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flags`` | ``long`` | Set of flags | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** A new L3_Cursor_t **Remarks** The first function to call with L3 interface. All subsequent L3 callswould us the returned L3_Cursor_t as argument.The root id should be a valid HDF5 device. **API C** ``L3_Cursor_t *L3_openHID(hid_t root,long flags);`` .. raw:: html
L3_close ~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to close | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Status int (1 is ok) **Remarks** All cursor contents are released, cursor itself is released, pointer is set to NULL **API C** ``int L3_close(L3_Cursor_t **ctxt_ptr);`` .. raw:: html
L3_setFlags ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to update | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flags`` | ``long`` | Set of flags | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Modified context **Remarks** Sets the current context with the flags, all previous flagsare removed **API C** ``L3_Cursor_t *L3_setFlags(L3_Cursor_t *ctxt,long flags);`` .. raw:: html
L3_getFlags ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flags`` | ``long*`` | Pointer to the set of flags | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Context itself **Remarks** Gets the current context flags **API C** ``L3_Cursor_t *L3_getFlags(L3_Cursor_t *ctxt,long *flags);`` .. raw:: html
L3_nodeSet ~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t*`` | Old node tu update or NULL | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``name`` | ``char*`` | Name string | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``label`` | ``char*`` | Label string | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dims`` | ``int*`` | Dimensions array of data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dtype`` | ``int`` | Type of data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``data`` | ``void*`` | Pointer to data array | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flags`` | ``int`` | Set of flags | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** New node or updated node **Remarks** A NULL value for node arg forces the creation of a new (returned) node.Dims array of int ends with a -1Data type should be an L3E_ enumerate **API C** ``L3_Node_t *L3_nodeSet(L3_Cursor_t *ctxt,L3_Node_t *node,char *name,char *label,int *dims,int dtype,void *data,int flags);`` .. raw:: html
L3_nodeGet ~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``node`` | ``L3_Node_t*`` | Old node tu update or NULL | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``name`` | ``char*`` | Name string | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``label`` | ``char*`` | Label string | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dims`` | ``int*`` | Dimensions array of data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dtype`` | ``int*`` | Type of data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``data`` | ``void*`` | Pointer to data array | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``flags`` | ``int*`` | Set of flags | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** New node or updated node **Remarks** Reads the node structure and fills the arguments with the values. **API C** ``L3_Node_t *L3_nodeGet(L3_Cursor_t *ctxt,L3_Node_t *node,char *name,char *label,int *dims,int *dtype,void *data,int *flags);`` .. raw:: html
L3_isSameNode ~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id1`` | ``hid_t`` | First HDF5 id | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id2`` | ``hid_t`` | Second HDF5 id | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Status int (1 is ok) **Remarks** Checks if different ids refer to the same HDF5 object. **API C** ``int L3_isSameNode(L3_Cursor_t *ctxt,hid_t id1,hid_t id2);`` .. raw:: html
L3_isLocalNode ~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id`` | ``hid_t`` | HDF5 id | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Status int (1 is ok, node is local) **Remarks** CHecks if id is in the same file than root node, so that it is not a link **API C** ``int L3_isLocalNode(L3_Cursor_t *ctxt,hid_t id);`` .. raw:: html
L3_incRef ~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id`` | ``hid_t`` | HDF5 id to keep | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** arg id **Remarks** Increments the hid_t so that you can call l3_freeNode and still use id **API C** ``int L3_incRef(L3_Cursor_t *ctxt,hid_t id);`` .. raw:: html
L3_decRef ~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id`` | ``hid_t`` | HDF5 id to release | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** void **Remarks** Decrements the hid_t once you are finished with it **API C** ``void L3_decRef(L3_Cursor_t *ctxt,hid_t id);`` .. raw:: html
L3_isLinkNode ~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id1`` | ``hid_t`` | HDF5 id to check | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``file`` | ``char*`` | File name | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``name`` | ``char*`` | Node name | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Status int (1 is ok) **Remarks** Checks if a node is a link. If yes, the file name and the node nameof the target of the link are copied into the user-allocated strings. **API C** ``int L3_isLinkNode(L3_Cursor_t *ctxt,hid_t id,char *file,char *name);`` .. raw:: html
L3_node2Path ~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``id`` | ``hid_t`` | HDF5 target node | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``path`` | ``char*`` | Char buff to fill with resulting path | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Path char* **Remarks** Finds a path from the file root to the target node.If path is NULL then the function allocates a char buffer, it is to theuser application to release the memory of this buffer. If the path is notNULL, the user has to provide enough memory for the function. **API C** ``char *L3_node2Path(L3_Cursor_t *ctxt,hid_t id,char *path);`` .. raw:: html
L3_path2Node ~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``path`` | ``char*`` | Path to search for | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** hid_t found node **Remarks** Finds a node id in the file from a path. **API C** ``hid_t L3_path2Node(L3_Cursor_t *ctxt,char *path);`` .. raw:: html
L3_initDims ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dims`` | ``int*`` | Array of dimensions | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``d1`` | ``int`` | Dimensions one... | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dn`` | ``int`` | ... up to last dimension | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Arrays of dimensions **Remarks** Fills the array with the dimensions and fills the rest with -1.If the arg dims is NULL, the returned array is allocated and has to bereleased by the userIf it is not NULL, the user has to insure that the array size isat least number-of-dimensions + 1 (last value should be -1) **API C** ``int *L3_initDims(int *dims,int d1,...);`` .. raw:: html
L3_initData ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dims`` | ``int*`` | Array of dimensions | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``data`` | ``void*`` | Pointer to data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dtype`` | ``int`` | Type of data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``arglist`` | ``data type`` | variable arguments | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Pointer to data **Remarks** Fills the array with variable arguments **API C** ``void *L3_initData(int *dims,void *data,int dtype,...);`` .. raw:: html
L3_fillData ~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dims`` | ``int*`` | Array of dimensions | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``data`` | ``void*`` | Pointer to data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dtype`` | ``int`` | Type of data | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``arglist`` | ``data type`` | variable arguments | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Pointer to data **Remarks** Fills the array with variable arguments **API C** ``void *L3_fillData(int *dims,void *data,int dtype,...);`` .. raw:: html
L3_typeAsStr ~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dtype`` | ``int`` | Data type | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** String type **Remarks** Returns the string type corresponding to the int enumerateReturns NULL if the integer is not found. **API C** ``char *L3_typeAsStr(int dtype);`` .. raw:: html
L3_typeAsEnum ~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``dtype`` | ``char*`` | Data type | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Integer enumerate data type **Remarks** Returns the integer enumerate type corresponding to string type.Returns -1 if the string type is not found. **API C** ``int L3_typeAsEnum(char *dtype);`` .. raw:: html
L3_config ~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``p`` | ``int`` | Parameter | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Parameter **Remarks** Unused **API C** ``int L3_config(int p);`` Interface CHL/raw ~~~~~~~~~~~~~~~~~ .. raw:: html
CHL_printError ~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** None **Remarks** Prints the message for the last error recorded in the context. **API C** ``void CHL_printError(L3_Cursor_t *ctxt);`` .. raw:: html
CHL_setError ~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``err`` | ``int`` | Error code | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``arglist`` | ``...`` | Variable argument list | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** None **Remarks** Sets the last context error to error given as argument.The variable argument list should fit with the corresponding error messagearguments are used to fill % formated stringSee the error tables headers: each entry has an integer as key, then anenumerate to set the level of severity and then the string for the message itself. **API C** ``void CHL_setError(L3_Cursor_t *ctxt,int err,...);`` .. raw:: html
CHL_getError ~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Error code int **Remarks** Gets the last context error **API C** ``int CHL_getError(L3_Cursor_t *ctxt);`` .. raw:: html
CHL_setMessage ~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``msg`` | ``char*`` | Message to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Error code int **Remarks** Sets the error message **API C** ``int CHL_setMessage(L3_Cursor_t* ctxt,char *msg);`` .. raw:: html
CHL_getMessage ~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Error message string **Remarks** Gets the error message **API C** ``char *CHL_getMessage(L3_Cursor_t* ctxt);`` .. raw:: html
CHL_addLinkSearchPath ~~~~~~~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``path`` | ``char*`` | Path string to add | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Index of path in the list int **Remarks** Adds the given path in the link search path **API C** ``int CHL_addLinkSearchPath(L3_Cursor_t* ctxt,char *path);`` .. raw:: html
CHL_getFileInSearchPath ~~~~~~~~~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``file`` | ``char*`` | Target file | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Index of path in the list int **Remarks** Searches the file in the link path link list, return the index of firstpath where the file was found.Returns -1 if the file was not found. **API C** ``int CHL_getFileInSearchPath(L3_Cursor_t *ctxt,char *file);`` .. raw:: html
CHL_freeLinkSearchPath ~~~~~~~~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** int status **Remarks** Removes all path entries **API C** ``int CHL_freeLinkSearchPath(L3_Cursor_t* ctxt);`` .. raw:: html
CHL_delLinkSearchPath ~~~~~~~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``path`` | ``char*`` | Path to remove | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Index of path in the list int **Remarks** Removes the path from path list if found.The index entry is released but may be re-used by next add.Returns -1 if the path was not found. **API C** ``int CHL_delLinkSearchPath(L3_Cursor_t* ctxt,char *path);`` .. raw:: html
CHL_getLinkSearchPath ~~~~~~~~~~~~~~~~~~~~~ .. raw:: html
+--------------------------------------+--------------------------------------+------------------------------------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``ctxt`` | ``L3_Cursor_t*`` | Context to use | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ | ``index`` | ``int`` | Position in the list | +--------------------------------------+--------------------------------------+------------------------------------------------------------------+ **Return** Path string **Remarks** Returns the path in the index entry of link path search listReturns NULL if the index entry is empty **API C** ``char *CHL_getLinkSearchPath(L3_Cursor_t* ctxt,int index);`` .. raw:: html
**Error Codes** ``3000`` - File '' not found (read only mode) ``3001`` - File '' not found (modify mode) ``3002`` - Create file '' fails ``3003`` - Update file '' fails ``3004`` - Open file '' as read only fails ``3010`` - Unknown file mode (integer=) ``3011`` - Property list fails for 'file' ``3012`` - Property list fails for 'link' ``3013`` - Property list fails for 'group' ``3017`` - L3 HDF_Add_DataArray DataType not found in this node ``3018`` - L3 HDF_Set_DataArray DataType not found in [] ``3019`` - L3 HDF_Get_DataArray DataType not found in this node ``3020`` - No data to get in this node ``3021`` - No data to set in this node ``3022`` - Create root fails while trying H5Gopen2 ``3023`` - Create root fails while trying to add HDF5 MotherNode ``3024`` - Create root fails while trying to add Root Node ``3025`` - Create root fails while trying to set MT ``3026`` - Create root fails while trying to set format ``3027`` - Create root fails while trying to set version ``3030`` - Bad nodeCreate cannot create node [] ``3031`` - Bad nodeCreate cannot add name attribute [] ``3032`` - Bad nodeCreate cannot add 'label' attribute ``3033`` - Bad nodeCreate cannot add 'datatype' attribute ``3034`` - Bad nodeCreate cannot add data ``3035`` - Bad nodeCreate empty data in non-MT node ``3036`` - Bad nodeCreate cannot add flags ``3040`` - Bad nodeMove source/destination is a link ``3041`` - Bad nodeMove cannot change name attribute ``3050`` - Bad nodeUpdate cannot update a link ``3051`` - Bad nodeUpdate bad node id ``3052`` - Bad nodeUpdate cannot change name on [] ``3053`` - Bad nodeUpdate cannot update label on [] ``3054`` - Bad nodeUpdate cannot update dtype on [] ``3055`` - L3 nodeUpdate cannot update data on [] ``3056`` - Bad nodeUpdate cannot update flags on [] ``3060`` - Bad nodeLink parent already is a link ``3061`` - Bad nodeLink cannot create node [] ``3062`` - Bad nodeLink cannot add name attribute [] ``3063`` - Bad nodeLink cannot set LK type ``3064`` - Bad nodeLink cannot set empty label ``3070`` - Bad nodeDelete bad parent node id ``3080`` - Bad nodeFind path too long ( chars) ``3081`` - Bad nodeFind bad parent node id ``3090`` - Bad nodeRetrieve bad node id ``3091`` - Bad nodeRetrieve link not found ``3092`` - Bad nodeRetrieve node to return not allocated ``3093`` - Bad node2Path invalid node id [] ``3100`` - L3 context is NULL