From 31f3f5ff6333217316c5da442a0194085211dfe1 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Thu, 31 Jan 2013 09:42:20 +0000 Subject: Use twoPtrValue.ptr1 in stead of otherValuePtr everywhere. This is exactly the same field, but it allows twoPtrValue.ptr2 to be used for other purposes. --- generic/tclBinary.c | 4 ++-- generic/tclCompExpr.c | 2 +- generic/tclCompile.c | 12 +++++------- generic/tclDictObj.c | 42 ++++++++++++++++++++---------------------- generic/tclEncoding.c | 8 ++++---- generic/tclExecute.c | 11 +++++------ generic/tclIO.c | 4 ++-- generic/tclIndexObj.c | 26 +++++++++++++------------- generic/tclInt.h | 6 +++--- generic/tclListObj.c | 2 -- generic/tclNamesp.c | 14 +++++++------- generic/tclObj.c | 6 +++--- generic/tclPathObj.c | 4 ++-- generic/tclProc.c | 29 ++++++++++++++--------------- generic/tclRegexp.c | 10 +++++----- generic/tclStringObj.c | 4 ++-- generic/tclTestObj.c | 8 ++++---- generic/tclThreadAlloc.c | 12 ++++++------ 18 files changed, 98 insertions(+), 106 deletions(-) diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 9ba06ee..19b95c1 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -124,9 +124,9 @@ typedef struct ByteArray { #define BYTEARRAY_SIZE(len) \ ((unsigned) (sizeof(ByteArray) - 4 + (len))) #define GET_BYTEARRAY(objPtr) \ - ((ByteArray *) (objPtr)->internalRep.otherValuePtr) + ((ByteArray *) (objPtr)->internalRep.twoPtrValue.ptr1) #define SET_BYTEARRAY(objPtr, baPtr) \ - (objPtr)->internalRep.otherValuePtr = (VOID *) (baPtr) + (objPtr)->internalRep.twoPtrValue.ptr1 = (VOID *) (baPtr) /* diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 999fe0a..9142e2b 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -2111,7 +2111,7 @@ ExecConstantExprTree( TclInitByteCodeObj(byteCodeObj, envPtr); TclFreeCompileEnv(envPtr); TclStackFree(interp, envPtr); - byteCodePtr = (ByteCode *) byteCodeObj->internalRep.otherValuePtr; + byteCodePtr = (ByteCode *) byteCodeObj->internalRep.twoPtrValue.ptr1; code = TclExecuteByteCode(interp, byteCodePtr); Tcl_DecrRefCount(byteCodeObj); return code; diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 3c65be8..3bedf39 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -676,14 +676,13 @@ FreeByteCodeInternalRep( register Tcl_Obj *objPtr) /* Object whose internal rep to free. */ { register ByteCode *codePtr = (ByteCode *) - objPtr->internalRep.otherValuePtr; + objPtr->internalRep.twoPtrValue.ptr1; codePtr->refCount--; if (codePtr->refCount <= 0) { TclCleanupByteCode(codePtr); } objPtr->typePtr = NULL; - objPtr->internalRep.otherValuePtr = NULL; } /* @@ -699,9 +698,8 @@ FreeByteCodeInternalRep( * None. * * Side effects: - * Frees objPtr's bytecode internal representation and sets its type and - * objPtr->internalRep.otherValuePtr NULL. Also releases its literals and - * frees its auxiliary data items. + * Frees objPtr's bytecode internal representation and sets its type NULL + * Also releases its literals and frees its auxiliary data items. * *---------------------------------------------------------------------- */ @@ -2223,7 +2221,7 @@ TclInitByteCodeObj( */ TclFreeIntRep(objPtr); - objPtr->internalRep.otherValuePtr = (void *) codePtr; + objPtr->internalRep.twoPtrValue.ptr1 = (void *) codePtr; objPtr->typePtr = &tclByteCodeType; /* @@ -3609,7 +3607,7 @@ Tcl_Obj * TclDisassembleByteCodeObj( Tcl_Obj *objPtr) /* The bytecode object to disassemble. */ { - ByteCode *codePtr = objPtr->internalRep.otherValuePtr; + ByteCode *codePtr = objPtr->internalRep.twoPtrValue.ptr1; unsigned char *codeStart, *codeLimit, *pc; unsigned char *codeDeltaNext, *codeLengthNext; unsigned char *srcDeltaNext, *srcLengthNext; diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index b066d46..15e9ace 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -333,7 +333,7 @@ DupDictInternalRep( Tcl_Obj *srcPtr, Tcl_Obj *copyPtr) { - Dict *oldDict = srcPtr->internalRep.otherValuePtr; + Dict *oldDict = srcPtr->internalRep.twoPtrValue.ptr1; Dict *newDict = (Dict *) ckalloc(sizeof(Dict)); ChainEntry *cPtr; @@ -368,7 +368,7 @@ DupDictInternalRep( * Store in the object. */ - copyPtr->internalRep.otherValuePtr = newDict; + copyPtr->internalRep.twoPtrValue.ptr1 = newDict; copyPtr->typePtr = &tclDictType; } @@ -394,14 +394,12 @@ static void FreeDictInternalRep( Tcl_Obj *dictPtr) { - Dict *dict = dictPtr->internalRep.otherValuePtr; + Dict *dict = dictPtr->internalRep.twoPtrValue.ptr1; --dict->refcount; if (dict->refcount <= 0) { DeleteDict(dict); } - - dictPtr->internalRep.otherValuePtr = NULL; /* Belt and braces! */ dictPtr->typePtr = NULL; } @@ -461,7 +459,7 @@ UpdateStringOfDict( { #define LOCAL_SIZE 20 int localFlags[LOCAL_SIZE], *flagPtr = NULL; - Dict *dict = dictPtr->internalRep.otherValuePtr; + Dict *dict = dictPtr->internalRep.twoPtrValue.ptr1; ChainEntry *cPtr; Tcl_Obj *keyPtr, *valuePtr; int i, length, bytesNeeded = 0; @@ -686,7 +684,7 @@ SetDictFromAny( dict->epoch = 0; dict->chain = NULL; dict->refcount = 1; - objPtr->internalRep.otherValuePtr = dict; + objPtr->internalRep.twoPtrValue.ptr1 = dict; objPtr->typePtr = &tclDictType; return TCL_OK; @@ -750,7 +748,7 @@ TclTraceDictPath( return NULL; } } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; if (flags & DICT_PATH_UPDATE) { dict->chain = NULL; } @@ -793,7 +791,7 @@ TclTraceDictPath( } } - newDict = tmpObj->internalRep.otherValuePtr; + newDict = tmpObj->internalRep.twoPtrValue.ptr1; if (flags & DICT_PATH_UPDATE) { if (Tcl_IsShared(tmpObj)) { TclDecrRefCount(tmpObj); @@ -801,7 +799,7 @@ TclTraceDictPath( Tcl_IncrRefCount(tmpObj); Tcl_SetHashValue(hPtr, (ClientData) tmpObj); dict->epoch++; - newDict = tmpObj->internalRep.otherValuePtr; + newDict = tmpObj->internalRep.twoPtrValue.ptr1; } newDict->chain = dictPtr; @@ -836,7 +834,7 @@ static void InvalidateDictChain( Tcl_Obj *dictObj) { - Dict *dict = dictObj->internalRep.otherValuePtr; + Dict *dict = dictObj->internalRep.twoPtrValue.ptr1; do { Tcl_InvalidateStringRep(dictObj); @@ -846,7 +844,7 @@ InvalidateDictChain( break; } dict->chain = NULL; - dict = dictObj->internalRep.otherValuePtr; + dict = dictObj->internalRep.twoPtrValue.ptr1; } while (dict != NULL); } @@ -895,7 +893,7 @@ Tcl_DictObjPut( if (dictPtr->bytes != NULL) { Tcl_InvalidateStringRep(dictPtr); } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; hPtr = CreateChainEntry(dict, keyPtr, &isNew); Tcl_IncrRefCount(valuePtr); if (!isNew) { @@ -946,7 +944,7 @@ Tcl_DictObjGet( } } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; hPtr = Tcl_FindHashEntry(&dict->table, (char *) keyPtr); if (hPtr == NULL) { *valuePtrPtr = NULL; @@ -997,7 +995,7 @@ Tcl_DictObjRemove( if (dictPtr->bytes != NULL) { Tcl_InvalidateStringRep(dictPtr); } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; if (DeleteChainEntry(dict, keyPtr)) { dict->epoch++; } @@ -1037,7 +1035,7 @@ Tcl_DictObjSize( } } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; *sizePtr = dict->table.numEntries; return TCL_OK; } @@ -1092,7 +1090,7 @@ Tcl_DictObjFirst( } } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; cPtr = dict->entryChainHead; if (cPtr == NULL) { searchPtr->epoch = -1; @@ -1268,7 +1266,7 @@ Tcl_DictObjPutKeyList( return TCL_ERROR; } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; hPtr = CreateChainEntry(dict, keyv[keyc-1], &isNew); Tcl_IncrRefCount(valuePtr); if (!isNew) { @@ -1324,7 +1322,7 @@ Tcl_DictObjRemoveKeyList( return TCL_ERROR; } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; DeleteChainEntry(dict, keyv[keyc-1]); InvalidateDictChain(dictPtr); return TCL_OK; @@ -1370,7 +1368,7 @@ Tcl_NewDictObj(void) dict->epoch = 0; dict->chain = NULL; dict->refcount = 1; - dictPtr->internalRep.otherValuePtr = dict; + dictPtr->internalRep.twoPtrValue.ptr1 = dict; dictPtr->typePtr = &tclDictType; return dictPtr; #endif @@ -1419,7 +1417,7 @@ Tcl_DbNewDictObj( dict->epoch = 0; dict->chain = NULL; dict->refcount = 1; - dictPtr->internalRep.otherValuePtr = dict; + dictPtr->internalRep.twoPtrValue.ptr1 = dict; dictPtr->typePtr = &tclDictType; return dictPtr; #else /* !TCL_MEM_DEBUG */ @@ -2028,7 +2026,7 @@ DictInfoCmd( return result; } } - dict = dictPtr->internalRep.otherValuePtr; + dict = dictPtr->internalRep.twoPtrValue.ptr1; /* * This next cast is actually OK. diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index eb4950a..4a2c5f0 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -271,7 +271,7 @@ static int Iso88591ToUtfProc(ClientData clientData, int *dstCharsPtr); /* - * A Tcl_ObjType for holding a cached Tcl_Encoding in the otherValuePtr field + * A Tcl_ObjType for holding a cached Tcl_Encoding in the twoPtrValue.ptr1 field * of the intrep. This should help the lifetime of encodings be more useful. * See concerns raised in [Bug 1077262]. */ @@ -313,7 +313,7 @@ Tcl_GetEncodingFromObj( return TCL_ERROR; } TclFreeIntRep(objPtr); - objPtr->internalRep.otherValuePtr = (VOID *) encoding; + objPtr->internalRep.twoPtrValue.ptr1 = (VOID *) encoding; objPtr->typePtr = &encodingType; } *encodingPtr = Tcl_GetEncoding(NULL, name); @@ -334,7 +334,7 @@ static void FreeEncodingIntRep( Tcl_Obj *objPtr) { - Tcl_FreeEncoding((Tcl_Encoding) objPtr->internalRep.otherValuePtr); + Tcl_FreeEncoding((Tcl_Encoding) objPtr->internalRep.twoPtrValue.ptr1); objPtr->typePtr = NULL; } @@ -353,7 +353,7 @@ DupEncodingIntRep( Tcl_Obj *srcPtr, Tcl_Obj *dupPtr) { - dupPtr->internalRep.otherValuePtr = (VOID *) + dupPtr->internalRep.twoPtrValue.ptr1 = (VOID *) Tcl_GetEncoding(NULL, srcPtr->bytes); } diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 229d7c6..2db98da 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -1200,7 +1200,7 @@ Tcl_ExprObj( if (objPtr->typePtr == &exprCodeType) { Namespace *namespacePtr = iPtr->varFramePtr->nsPtr; - codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; + codePtr = (ByteCode *) objPtr->internalRep.twoPtrValue.ptr1; if (((Interp *) *codePtr->interpHandle != iPtr) || (codePtr->compileEpoch != iPtr->compileEpoch) || (codePtr->nsPtr != namespacePtr) @@ -1240,7 +1240,7 @@ Tcl_ExprObj( TclInitByteCodeObj(objPtr, &compEnv); objPtr->typePtr = &exprCodeType; TclFreeCompileEnv(&compEnv); - codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; + codePtr = (ByteCode *) objPtr->internalRep.twoPtrValue.ptr1; #ifdef TCL_COMPILE_DEBUG if (tclTraceCompile == 2) { TclPrintByteCodeObj(interp, objPtr); @@ -1338,14 +1338,13 @@ static void FreeExprCodeInternalRep( Tcl_Obj *objPtr) { - ByteCode *codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; + ByteCode *codePtr = (ByteCode *) objPtr->internalRep.twoPtrValue.ptr1; codePtr->refCount--; if (codePtr->refCount <= 0) { TclCleanupByteCode(codePtr); } objPtr->typePtr = NULL; - objPtr->internalRep.otherValuePtr = NULL; } /* @@ -1418,7 +1417,7 @@ TclCompEvalObj( * here. */ - codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; + codePtr = (ByteCode *) objPtr->internalRep.twoPtrValue.ptr1; if (((Interp *) *codePtr->interpHandle != iPtr) || (codePtr->compileEpoch != iPtr->compileEpoch) || (codePtr->nsPtr != namespacePtr) @@ -1557,7 +1556,7 @@ TclCompEvalObj( iPtr->invokeWord = word; tclByteCodeType.setFromAnyProc(interp, objPtr); iPtr->invokeCmdFramePtr = NULL; - codePtr = (ByteCode *) objPtr->internalRep.otherValuePtr; + codePtr = (ByteCode *) objPtr->internalRep.twoPtrValue.ptr1; goto runCompiledObj; done: diff --git a/generic/tclIO.c b/generic/tclIO.c index e2415d8..de7f228 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -215,9 +215,9 @@ static Tcl_ObjType tclChannelType = { }; #define GET_CHANNELSTATE(objPtr) \ - ((ChannelState *) (objPtr)->internalRep.otherValuePtr) + ((ChannelState *) (objPtr)->internalRep.twoPtrValue.ptr1) #define SET_CHANNELSTATE(objPtr, storePtr) \ - ((objPtr)->internalRep.otherValuePtr = (void *) (storePtr)) + ((objPtr)->internalRep.twoPtrValue.ptr1 = (void *) (storePtr)) #define GET_CHANNELINTERP(objPtr) \ ((Interp *) (objPtr)->internalRep.twoPtrValue.ptr2) #define SET_CHANNELINTERP(objPtr, storePtr) \ diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 8ec1b68..6a818f2 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -37,7 +37,7 @@ static Tcl_ObjType indexType = { /* * The definition of the internal representation of the "index" object; The - * internalRep.otherValuePtr field of an object of "index" type will be a + * internalRep.twoPtrValue.ptr1 field of an object of "index" type will be a * pointer to one of these structures. * * Keep this structure declaration in sync with tclTestObj.c @@ -105,7 +105,7 @@ Tcl_GetIndexFromObj( */ if (objPtr->typePtr == &indexType) { - IndexRep *indexRep = objPtr->internalRep.otherValuePtr; + IndexRep *indexRep = objPtr->internalRep.twoPtrValue.ptr1; /* * Here's hoping we don't get hit by unfortunate packing constraints @@ -179,7 +179,7 @@ Tcl_GetIndexFromObjStruct( */ if (objPtr->typePtr == &indexType) { - indexRep = objPtr->internalRep.otherValuePtr; + indexRep = objPtr->internalRep.twoPtrValue.ptr1; if (indexRep->tablePtr==tablePtr && indexRep->offset==offset) { *indexPtr = indexRep->index; return TCL_OK; @@ -240,11 +240,11 @@ Tcl_GetIndexFromObjStruct( */ if (objPtr->typePtr == &indexType) { - indexRep = objPtr->internalRep.otherValuePtr; + indexRep = objPtr->internalRep.twoPtrValue.ptr1; } else { TclFreeIntRep(objPtr); indexRep = (IndexRep *) ckalloc(sizeof(IndexRep)); - objPtr->internalRep.otherValuePtr = indexRep; + objPtr->internalRep.twoPtrValue.ptr1 = indexRep; objPtr->typePtr = &indexType; } indexRep->tablePtr = (void *) tablePtr; @@ -341,7 +341,7 @@ static void UpdateStringOfIndex( Tcl_Obj *objPtr) { - IndexRep *indexRep = objPtr->internalRep.otherValuePtr; + IndexRep *indexRep = objPtr->internalRep.twoPtrValue.ptr1; register char *buf; register unsigned len; register const char *indexStr = EXPAND_OF(indexRep); @@ -376,11 +376,11 @@ DupIndex( Tcl_Obj *srcPtr, Tcl_Obj *dupPtr) { - IndexRep *srcIndexRep = srcPtr->internalRep.otherValuePtr; + IndexRep *srcIndexRep = srcPtr->internalRep.twoPtrValue.ptr1; IndexRep *dupIndexRep = (IndexRep *) ckalloc(sizeof(IndexRep)); memcpy(dupIndexRep, srcIndexRep, sizeof(IndexRep)); - dupPtr->internalRep.otherValuePtr = dupIndexRep; + dupPtr->internalRep.twoPtrValue.ptr1 = dupIndexRep; dupPtr->typePtr = &indexType; } @@ -405,7 +405,7 @@ static void FreeIndex( Tcl_Obj *objPtr) { - ckfree((char *) objPtr->internalRep.otherValuePtr); + ckfree((char *) objPtr->internalRep.twoPtrValue.ptr1); objPtr->typePtr = NULL; } @@ -533,13 +533,13 @@ Tcl_WrongNumArgs( if (origObjv[i]->typePtr == &indexType) { register IndexRep *indexRep = - origObjv[i]->internalRep.otherValuePtr; + origObjv[i]->internalRep.twoPtrValue.ptr1; elementStr = EXPAND_OF(indexRep); elemLen = strlen(elementStr); } else if (origObjv[i]->typePtr == &tclEnsembleCmdType) { register EnsembleCmdRep *ecrPtr = - origObjv[i]->internalRep.otherValuePtr; + origObjv[i]->internalRep.twoPtrValue.ptr1; elementStr = ecrPtr->fullSubcmdName; elemLen = strlen(elementStr); @@ -588,12 +588,12 @@ Tcl_WrongNumArgs( */ if (objv[i]->typePtr == &indexType) { - register IndexRep *indexRep = objv[i]->internalRep.otherValuePtr; + register IndexRep *indexRep = objv[i]->internalRep.twoPtrValue.ptr1; Tcl_AppendStringsToObj(objPtr, EXPAND_OF(indexRep), NULL); } else if (objv[i]->typePtr == &tclEnsembleCmdType) { register EnsembleCmdRep *ecrPtr = - objv[i]->internalRep.otherValuePtr; + objv[i]->internalRep.twoPtrValue.ptr1; Tcl_AppendStringsToObj(objPtr, ecrPtr->fullSubcmdName, NULL); } else { diff --git a/generic/tclInt.h b/generic/tclInt.h index 3037ddb..d5a479b 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -369,7 +369,7 @@ struct NamespacePathEntry { /* * The data cached in an ensemble subcommand's Tcl_Obj rep (reference in - * otherValuePtr field). This structure is not shared between Tcl_Objs + * twoPtrValue.ptr1 field). This structure is not shared between Tcl_Objs * referring to the same subcommand, even where one is a duplicate of another. */ @@ -3539,12 +3539,12 @@ MODULE_SCOPE Tcl_Mutex tclObjMutex; } \ (objPtr) = tclFreeObjList; \ tclFreeObjList = (Tcl_Obj *) \ - tclFreeObjList->internalRep.otherValuePtr; \ + tclFreeObjList->internalRep.twoPtrValue.ptr1; \ Tcl_MutexUnlock(&tclObjMutex) # define TclFreeObjStorage(objPtr) \ Tcl_MutexLock(&tclObjMutex); \ - (objPtr)->internalRep.otherValuePtr = (void *) tclFreeObjList; \ + (objPtr)->internalRep.twoPtrValue.ptr1 = (void *) tclFreeObjList; \ tclFreeObjList = (objPtr); \ Tcl_MutexUnlock(&tclObjMutex) #endif diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 20b6ec1..c092bcf 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -1627,8 +1627,6 @@ FreeListInternalRep( ckfree((char *) listRepPtr); } - listPtr->internalRep.twoPtrValue.ptr1 = NULL; - listPtr->internalRep.twoPtrValue.ptr2 = NULL; listPtr->typePtr = NULL; } diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 5dbffc6..44634d4 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -6066,7 +6066,7 @@ NsEnsembleImplementationCmd( */ if (objv[1]->typePtr == &tclEnsembleCmdType) { - EnsembleCmdRep *ensembleCmd = objv[1]->internalRep.otherValuePtr; + EnsembleCmdRep *ensembleCmd = objv[1]->internalRep.twoPtrValue.ptr1; if (ensembleCmd->nsPtr == ensemblePtr->nsPtr && ensembleCmd->epoch == ensemblePtr->epoch && @@ -6412,7 +6412,7 @@ MakeCachedEnsembleCommand( int length; if (objPtr->typePtr == &tclEnsembleCmdType) { - ensembleCmd = objPtr->internalRep.otherValuePtr; + ensembleCmd = objPtr->internalRep.twoPtrValue.ptr1; Tcl_DecrRefCount(ensembleCmd->realPrefixObj); ensembleCmd->nsPtr->refCount--; if ((ensembleCmd->nsPtr->refCount == 0) @@ -6428,7 +6428,7 @@ MakeCachedEnsembleCommand( TclFreeIntRep(objPtr); ensembleCmd = (EnsembleCmdRep *) ckalloc(sizeof(EnsembleCmdRep)); - objPtr->internalRep.otherValuePtr = ensembleCmd; + objPtr->internalRep.twoPtrValue.ptr1 = ensembleCmd; objPtr->typePtr = &tclEnsembleCmdType; } @@ -6820,7 +6820,7 @@ static void FreeEnsembleCmdRep( Tcl_Obj *objPtr) { - EnsembleCmdRep *ensembleCmd = objPtr->internalRep.otherValuePtr; + EnsembleCmdRep *ensembleCmd = objPtr->internalRep.twoPtrValue.ptr1; Tcl_DecrRefCount(ensembleCmd->realPrefixObj); ckfree(ensembleCmd->fullSubcmdName); @@ -6855,13 +6855,13 @@ DupEnsembleCmdRep( Tcl_Obj *objPtr, Tcl_Obj *copyPtr) { - EnsembleCmdRep *ensembleCmd = objPtr->internalRep.otherValuePtr; + EnsembleCmdRep *ensembleCmd = objPtr->internalRep.twoPtrValue.ptr1; EnsembleCmdRep *ensembleCopy = (EnsembleCmdRep *) ckalloc(sizeof(EnsembleCmdRep)); int length = strlen(ensembleCmd->fullSubcmdName); copyPtr->typePtr = &tclEnsembleCmdType; - copyPtr->internalRep.otherValuePtr = ensembleCopy; + copyPtr->internalRep.twoPtrValue.ptr1 = ensembleCopy; ensembleCopy->nsPtr = ensembleCmd->nsPtr; ensembleCopy->epoch = ensembleCmd->epoch; ensembleCopy->token = ensembleCmd->token; @@ -6894,7 +6894,7 @@ static void StringOfEnsembleCmdRep( Tcl_Obj *objPtr) { - EnsembleCmdRep *ensembleCmd = objPtr->internalRep.otherValuePtr; + EnsembleCmdRep *ensembleCmd = objPtr->internalRep.twoPtrValue.ptr1; int length = strlen(ensembleCmd->fullSubcmdName); objPtr->length = length; diff --git a/generic/tclObj.c b/generic/tclObj.c index 5c17df2..e14c740 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -1243,7 +1243,7 @@ Tcl_DbNewObj( * Side effects: * tclFreeObjList, the head of the list of free Tcl_Objs, is set to the * first of a number of free Tcl_Obj's linked together by their - * internalRep.otherValuePtrs. + * internalRep.twoPtrValue.ptr1's. * *---------------------------------------------------------------------- */ @@ -1272,7 +1272,7 @@ TclAllocateFreeObjects(void) prevPtr = NULL; objPtr = (Tcl_Obj *) basePtr; for (i = 0; i < OBJS_TO_ALLOC_EACH_TIME; i++) { - objPtr->internalRep.otherValuePtr = (void *) prevPtr; + objPtr->internalRep.twoPtrValue.ptr1 = (void *) prevPtr; prevPtr = objPtr; objPtr++; } @@ -4288,7 +4288,7 @@ SetCmdNameFromAny( if (cmdPtr) { cmdPtr->refCount++; - resPtr = (ResolvedCmdName *) objPtr->internalRep.otherValuePtr; + resPtr = (ResolvedCmdName *) objPtr->internalRep.twoPtrValue.ptr1; if ((objPtr->typePtr == &tclCmdNameType) && resPtr && (resPtr->refCount == 1)) { /* diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index c9b3b8e..95c57bf 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -109,9 +109,9 @@ typedef struct FsPath { * fields. */ -#define PATHOBJ(pathPtr) ((FsPath *) (pathPtr)->internalRep.otherValuePtr) +#define PATHOBJ(pathPtr) ((FsPath *) (pathPtr)->internalRep.twoPtrValue.ptr1) #define SETPATHOBJ(pathPtr,fsPathPtr) \ - ((pathPtr)->internalRep.otherValuePtr = (void *) (fsPathPtr)) + ((pathPtr)->internalRep.twoPtrValue.ptr1 = (void *) (fsPathPtr)) #define PATHFLAGS(pathPtr) (PATHOBJ(pathPtr)->flags) /* diff --git a/generic/tclProc.c b/generic/tclProc.c index 2c6d300..d58e8da 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -406,7 +406,7 @@ TclCreateProc( * will be holding a reference to it. */ - procPtr = bodyPtr->internalRep.otherValuePtr; + procPtr = bodyPtr->internalRep.twoPtrValue.ptr1; procPtr->iPtr = iPtr; procPtr->refCount++; precompiled = 1; @@ -1166,7 +1166,7 @@ TclInitCompiledLocals( if (bodyPtr->typePtr != &tclByteCodeType) { Tcl_Panic("body object for proc attached to frame is not a byte code type"); } - codePtr = bodyPtr->internalRep.otherValuePtr; + codePtr = bodyPtr->internalRep.twoPtrValue.ptr1; if (framePtr->numCompiledLocals) { if (!codePtr->localCachePtr) { @@ -1334,7 +1334,7 @@ static void InitLocalCache(Proc *procPtr) { Interp *iPtr = procPtr->iPtr; - ByteCode *codePtr = procPtr->bodyPtr->internalRep.otherValuePtr; + ByteCode *codePtr = procPtr->bodyPtr->internalRep.twoPtrValue.ptr1; int localCt = procPtr->numCompiledLocals; int numArgs = procPtr->numArgs, i = 0; @@ -1391,7 +1391,7 @@ InitArgsAndLocals( { CallFrame *framePtr = ((Interp *)interp)->varFramePtr; register Proc *procPtr = framePtr->procPtr; - ByteCode *codePtr = procPtr->bodyPtr->internalRep.otherValuePtr; + ByteCode *codePtr = procPtr->bodyPtr->internalRep.twoPtrValue.ptr1; register Var *varPtr, *defPtr; int localCt = procPtr->numCompiledLocals, numArgs, argCt, i, imax; Tcl_Obj *const *argObjs; @@ -1579,7 +1579,7 @@ PushProcCallFrame( * commands and/or resolver changes are considered). */ - codePtr = procPtr->bodyPtr->internalRep.otherValuePtr; + codePtr = procPtr->bodyPtr->internalRep.twoPtrValue.ptr1; if (((Interp *) *codePtr->interpHandle != iPtr) || (codePtr->compileEpoch != iPtr->compileEpoch) || (codePtr->nsPtr != nsPtr) @@ -1747,7 +1747,7 @@ TclObjInterpProcCore( result = TCL_ERROR; } else { register ByteCode *codePtr = - procPtr->bodyPtr->internalRep.otherValuePtr; + procPtr->bodyPtr->internalRep.twoPtrValue.ptr1; codePtr->refCount++; #ifdef USE_DTRACE @@ -1908,7 +1908,7 @@ ProcCompileProc( Interp *iPtr = (Interp *) interp; int i; Tcl_CallFrame *framePtr; - ByteCode *codePtr = bodyPtr->internalRep.otherValuePtr; + ByteCode *codePtr = bodyPtr->internalRep.twoPtrValue.ptr1; CompiledLocal *localPtr; /* @@ -2327,7 +2327,7 @@ TclNewProcBodyObj( TclNewObj(objPtr); if (objPtr) { objPtr->typePtr = &tclProcBodyType; - objPtr->internalRep.otherValuePtr = procPtr; + objPtr->internalRep.twoPtrValue.ptr1 = procPtr; procPtr->refCount++; } @@ -2357,10 +2357,10 @@ ProcBodyDup( Tcl_Obj *srcPtr, /* Object to copy. */ Tcl_Obj *dupPtr) /* Target object for the duplication. */ { - Proc *procPtr = srcPtr->internalRep.otherValuePtr; + Proc *procPtr = srcPtr->internalRep.twoPtrValue.ptr1; dupPtr->typePtr = &tclProcBodyType; - dupPtr->internalRep.otherValuePtr = procPtr; + dupPtr->internalRep.twoPtrValue.ptr1 = procPtr; procPtr->refCount++; } @@ -2387,10 +2387,9 @@ static void ProcBodyFree( Tcl_Obj *objPtr) /* The object to clean up. */ { - Proc *procPtr = objPtr->internalRep.otherValuePtr; + Proc *procPtr = objPtr->internalRep.twoPtrValue.ptr1; - procPtr->refCount--; - if (procPtr->refCount <= 0) { + if (procPtr->refCount-- < 2) { TclProcCleanupProc(procPtr); } } @@ -2854,7 +2853,7 @@ Tcl_DisassembleObjCmd( return result; } TclPopStackFrame(interp); - if (((ByteCode *) procPtr->bodyPtr->internalRep.otherValuePtr)->flags + if (((ByteCode *) procPtr->bodyPtr->internalRep.twoPtrValue.ptr1)->flags & TCL_BYTECODE_PRECOMPILED) { Tcl_AppendResult(interp, "may not disassemble prebuilt bytecode", NULL); @@ -2881,7 +2880,7 @@ Tcl_DisassembleObjCmd( return result; } TclPopStackFrame(interp); - if (((ByteCode *) procPtr->bodyPtr->internalRep.otherValuePtr)->flags + if (((ByteCode *) procPtr->bodyPtr->internalRep.twoPtrValue.ptr1)->flags & TCL_BYTECODE_PRECOMPILED) { Tcl_AppendResult(interp, "may not disassemble prebuilt bytecode", NULL); diff --git a/generic/tclRegexp.c b/generic/tclRegexp.c index d340f4c..dac6aba 100644 --- a/generic/tclRegexp.c +++ b/generic/tclRegexp.c @@ -578,7 +578,7 @@ Tcl_GetRegExpFromObj( * TclRegexp* when the type is tclRegexpType. */ - regexpPtr = (TclRegexp *) objPtr->internalRep.otherValuePtr; + regexpPtr = (TclRegexp *) objPtr->internalRep.twoPtrValue.ptr1; if ((objPtr->typePtr != &tclRegexpType) || (regexpPtr->flags != flags)) { pattern = TclGetStringFromObj(objPtr, &length); @@ -601,7 +601,7 @@ Tcl_GetRegExpFromObj( */ TclFreeIntRep(objPtr); - objPtr->internalRep.otherValuePtr = (void *) regexpPtr; + objPtr->internalRep.twoPtrValue.ptr1 = (void *) regexpPtr; objPtr->typePtr = &tclRegexpType; } return (Tcl_RegExp) regexpPtr; @@ -747,7 +747,7 @@ static void FreeRegexpInternalRep( Tcl_Obj *objPtr) /* Regexp object with internal rep to free. */ { - TclRegexp *regexpRepPtr = (TclRegexp *) objPtr->internalRep.otherValuePtr; + TclRegexp *regexpRepPtr = (TclRegexp *) objPtr->internalRep.twoPtrValue.ptr1; /* * If this is the last reference to the regexp, free it. @@ -781,10 +781,10 @@ DupRegexpInternalRep( Tcl_Obj *srcPtr, /* Object with internal rep to copy. */ Tcl_Obj *copyPtr) /* Object with internal rep to set. */ { - TclRegexp *regexpPtr = (TclRegexp *) srcPtr->internalRep.otherValuePtr; + TclRegexp *regexpPtr = (TclRegexp *) srcPtr->internalRep.twoPtrValue.ptr1; regexpPtr->refCount++; - copyPtr->internalRep.otherValuePtr = srcPtr->internalRep.otherValuePtr; + copyPtr->internalRep.twoPtrValue.ptr1 = srcPtr->internalRep.twoPtrValue.ptr1; copyPtr->typePtr = &tclRegexpType; } diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 3f243a6..ee434c3 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -128,9 +128,9 @@ typedef struct String { (String *) attemptckrealloc((char *) ptr, \ (unsigned) STRING_SIZE(STRING_UALLOC(numChars)) ) #define GET_STRING(objPtr) \ - ((String *) (objPtr)->internalRep.otherValuePtr) + ((String *) (objPtr)->internalRep.twoPtrValue.ptr1) #define SET_STRING(objPtr, stringPtr) \ - ((objPtr)->internalRep.otherValuePtr = (void *) (stringPtr)) + ((objPtr)->internalRep.twoPtrValue.ptr1 = (void *) (stringPtr)) /* * TCL STRING GROWTH ALGORITHM diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index 8597bbc..f113cfe 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -522,7 +522,7 @@ TestindexobjCmd( } Tcl_GetIndexFromObj(NULL, objv[1], tablePtr, "token", 0, &index); - indexRep = (struct IndexRep *) objv[1]->internalRep.otherValuePtr; + indexRep = (struct IndexRep *) objv[1]->internalRep.twoPtrValue.ptr1; indexRep->index = index2; result = Tcl_GetIndexFromObj(NULL, objv[1], tablePtr, "token", 0, &index); @@ -559,7 +559,7 @@ TestindexobjCmd( if ( objv[3]->typePtr != NULL && !strcmp( "index", objv[3]->typePtr->name ) ) { - indexRep = (struct IndexRep *) objv[3]->internalRep.otherValuePtr; + indexRep = (struct IndexRep *) objv[3]->internalRep.twoPtrValue.ptr1; if (indexRep->tablePtr == (VOID *) argv) { objv[3]->typePtr->freeIntRepProc(objv[3]); objv[3]->typePtr = NULL; @@ -1211,7 +1211,7 @@ TeststringobjCmd( } if (varPtr[varIndex] != NULL) { strPtr = (TestString *) - (varPtr[varIndex])->internalRep.otherValuePtr; + (varPtr[varIndex])->internalRep.twoPtrValue.ptr1; length = (int) strPtr->allocated; } else { length = -1; @@ -1264,7 +1264,7 @@ TeststringobjCmd( } if (varPtr[varIndex] != NULL) { strPtr = (TestString *) - (varPtr[varIndex])->internalRep.otherValuePtr; + (varPtr[varIndex])->internalRep.twoPtrValue.ptr1; length = (int) strPtr->uallocated; } else { length = -1; diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index 9008d52..2e74fa7 100644 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -556,7 +556,7 @@ TclThreadAllocObj(void) } while (--numMove >= 0) { objPtr = &newObjsPtr[numMove]; - objPtr->internalRep.otherValuePtr = cachePtr->firstObjPtr; + objPtr->internalRep.twoPtrValue.ptr1 = cachePtr->firstObjPtr; cachePtr->firstObjPtr = objPtr; } } @@ -567,7 +567,7 @@ TclThreadAllocObj(void) */ objPtr = cachePtr->firstObjPtr; - cachePtr->firstObjPtr = objPtr->internalRep.otherValuePtr; + cachePtr->firstObjPtr = objPtr->internalRep.twoPtrValue.ptr1; --cachePtr->numObjects; return objPtr; } @@ -602,7 +602,7 @@ TclThreadFreeObj( * Get this thread's list and push on the free Tcl_Obj. */ - objPtr->internalRep.otherValuePtr = cachePtr->firstObjPtr; + objPtr->internalRep.twoPtrValue.ptr1 = cachePtr->firstObjPtr; cachePtr->firstObjPtr = objPtr; ++cachePtr->numObjects; @@ -703,16 +703,16 @@ MoveObjs( */ while (--numMove) { - objPtr = objPtr->internalRep.otherValuePtr; + objPtr = objPtr->internalRep.twoPtrValue.ptr1; } - fromPtr->firstObjPtr = objPtr->internalRep.otherValuePtr; + fromPtr->firstObjPtr = objPtr->internalRep.twoPtrValue.ptr1; /* * Move all objects as a block - they are already linked to each other, we * just have to update the first and last. */ - objPtr->internalRep.otherValuePtr = toPtr->firstObjPtr; + objPtr->internalRep.twoPtrValue.ptr1 = toPtr->firstObjPtr; toPtr->firstObjPtr = fromFirstObjPtr; } -- cgit v0.12 href='#n719'>719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>HDF5: Extensions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="hdf5doxy.css" rel="stylesheet" type="text/css">
<!-- <link href="hdf5doxy.css" rel="stylesheet" type="text/css"/>
 -->
<script type="text/javascript" src="hdf5_navtree_hacks.js"></script>
</head>
<body>
<div style="background:#FFDDDD;font-size:120%;text-align:center;margin:0;padding:5px">Please, help us to better serve our user community by answering the following short survey:  <a href="https://www.hdfgroup.org/website-survey/">https://www.hdfgroup.org/website-survey/</a></div>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="HDFG-logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname"><a href="https://www.hdfgroup.org">HDF5</a>
   &#160;<span id="projectnumber">1.15.0.a6e610e</span>
   </div>
   <div id="projectbrief">API Reference</div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.svg"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group___h5_l_r.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Extensions</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p><em>Working with region references, hyperslab selections, and bit-fields (H5LR, H5LT)</em></p>
<p>The following reference manual entries describe high-level HDF5 C and Fortran APIs for working with region references, hyperslab selections, and bit-fields. These functions were created as part of a project supporting NPP/NPOESS Data Production and Exploitation ( <a href="https://support.hdfgroup.org/projects/jpss/documentation">project</a>, <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">software </a>). While they were written to facilitate access to NPP, NPOESS, and JPSS data in the HDF5 format, these functions may be useful to anyone working with region references, hyperslab selections, or bit-fields.</p>
<p>Note that these functions are not part of the standard HDF5 distribution; the <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">software </a> must be separately downloaded and installed.</p>
<p>A comprehensive guide to this library, <a href="https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf"><em>User Guide to the HDF5 High-level Library for Handling Region References and Hyperslab Selections</em></a> is available at <a href="https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf">https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf</a>.</p>
<ul>
<li><a class="el" href="group___h5_l_r.html#ga889b19b609e4e44565467cb84c6eeb0d">H5LRcopy_reference</a> <br  />
 Copies data from the specified dataset to a new location and creates a reference to it.</li>
<li><a class="el" href="group___h5_l_r.html#ga3056840a05520e3a5e1b77f8cdd373c4">H5LRcopy_region</a> <br  />
 Copies data from a referenced region to a region in a destination dataset.</li>
<li><a class="el" href="group___h5_l_r.html#ga75787f84657d69421c6a8be57a9f070c">H5LRcreate_ref_to_all</a> <br  />
 Creates a dataset with the region references to the data in all datasets located under a specified group in a file or creates a dataset with object references to all objects (groups or datasets) located under a specified group in a file.</li>
<li><a class="el" href="group___h5_l_r.html#gacef1564aa36bdfceac13b7b2bdd8e2d8">H5LRcreate_region_references</a> <br  />
 Creates an array of region references using an array of paths to datasets and an array of corresponding hyperslab descriptions.</li>
<li><a class="el" href="group___h5_l_r.html#gabb053f246fd0cfcb588bafe98278b9b8">H5LRget_region_info</a> <br  />
 Retrieves information about the data a region reference points to.</li>
<li><a class="el" href="group___h5_l_r.html#gabbf9f8ea4d13d44d45efae5e143a157a">H5LRmake_dataset</a> <br  />
 Creates and writes a dataset containing a list of region references.</li>
<li><a class="el" href="group___h5_l_r.html#ga0cab2622e4ffba04c363d37b98b0a83b">H5LRread_region</a> <br  />
 Retrieves raw data pointed to by a region reference to an application buffer.</li>
<li><a class="el" href="group___h5_l_r.html#ga73fb3ab3e9b756a818e711cd335c819d">H5LTcopy_region</a> <br  />
 Copies data from a specified region in a source dataset to a specified region in a destination dataset.</li>
<li><a class="el" href="group___h5_l_r.html#ga1eec1ca149e662c4937e4ab10c30e0f6">H5LTread_bitfield_value</a> <br  />
 Retrieves the values of quality flags for each element to the application provided buffer.</li>
<li><a class="el" href="group___h5_l_r.html#ga291c97f18425bb1136f1eab304fb0722">H5LTread_region</a> <br  />
 Reads selected data to an application buffer. </li>
</ul>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gabbf9f8ea4d13d44d45efae5e143a157a"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#gabbf9f8ea4d13d44d45efae5e143a157a">H5LRmake_dataset</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, const char *path, <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> type_id, const size_t buf_size, const <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> *loc_id_ref, const <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *buf)</td></tr>
<tr class="memdesc:gabbf9f8ea4d13d44d45efae5e143a157a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates and writes a dataset containing a list of region references.  <a href="group___h5_l_r.html#gabbf9f8ea4d13d44d45efae5e143a157a">More...</a><br /></td></tr>
<tr class="separator:gabbf9f8ea4d13d44d45efae5e143a157a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacef1564aa36bdfceac13b7b2bdd8e2d8"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#gacef1564aa36bdfceac13b7b2bdd8e2d8">H5LRcreate_region_references</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj_id, size_t num_elem, const char **path, const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *block_coord, <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *buf)</td></tr>
<tr class="memdesc:gacef1564aa36bdfceac13b7b2bdd8e2d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an array of region references using an array of paths to datasets and an array of corresponding hyperslab descriptions.  <a href="group___h5_l_r.html#gacef1564aa36bdfceac13b7b2bdd8e2d8">More...</a><br /></td></tr>
<tr class="separator:gacef1564aa36bdfceac13b7b2bdd8e2d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga889b19b609e4e44565467cb84c6eeb0d"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#ga889b19b609e4e44565467cb84c6eeb0d">H5LRcopy_reference</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj_id, <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *ref, const char *file, const char *path, const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *block_coord, <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *ref_new)</td></tr>
<tr class="memdesc:ga889b19b609e4e44565467cb84c6eeb0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies data from the specified dataset to a new location and creates a reference to it.  <a href="group___h5_l_r.html#ga889b19b609e4e44565467cb84c6eeb0d">More...</a><br /></td></tr>
<tr class="separator:ga889b19b609e4e44565467cb84c6eeb0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3056840a05520e3a5e1b77f8cdd373c4"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#ga3056840a05520e3a5e1b77f8cdd373c4">H5LRcopy_region</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj_id, <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *ref, const char *file, const char *path, const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *block_coord)</td></tr>
<tr class="memdesc:ga3056840a05520e3a5e1b77f8cdd373c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies data from a referenced region to a region in a destination dataset.  <a href="group___h5_l_r.html#ga3056840a05520e3a5e1b77f8cdd373c4">More...</a><br /></td></tr>
<tr class="separator:ga3056840a05520e3a5e1b77f8cdd373c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga75787f84657d69421c6a8be57a9f070c"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#ga75787f84657d69421c6a8be57a9f070c">H5LRcreate_ref_to_all</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, const char *group_path, const char *ds_path, <a class="el" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> index_type, <a class="el" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="el" href="_h5_rpublic_8h.html#a7d148ddc165e65b01efabfd738ac056e">H5R_type_t</a> ref_type)</td></tr>
<tr class="memdesc:ga75787f84657d69421c6a8be57a9f070c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a dataset with the region references to the data in all datasets located under a specified group in a file or creates a dataset with object references to all objects (groups or datasets) located under a specified group in a file.  <a href="group___h5_l_r.html#ga75787f84657d69421c6a8be57a9f070c">More...</a><br /></td></tr>
<tr class="separator:ga75787f84657d69421c6a8be57a9f070c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0cab2622e4ffba04c363d37b98b0a83b"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#ga0cab2622e4ffba04c363d37b98b0a83b">H5LRread_region</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj_id, const <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *ref, <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> mem_type, size_t *numelem, void *buf)</td></tr>
<tr class="memdesc:ga0cab2622e4ffba04c363d37b98b0a83b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves raw data pointed to by a region reference to an application buffer.  <a href="group___h5_l_r.html#ga0cab2622e4ffba04c363d37b98b0a83b">More...</a><br /></td></tr>
<tr class="separator:ga0cab2622e4ffba04c363d37b98b0a83b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb053f246fd0cfcb588bafe98278b9b8"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#gabb053f246fd0cfcb588bafe98278b9b8">H5LRget_region_info</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj_id, const <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *ref, size_t *len, char *path, int *rank, <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> *dtype, <a class="el" href="_h5_spublic_8h.html#a1e9590539381e3922a1582067d496304">H5S_sel_type</a> *sel_type, size_t *numelem, <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *buf)</td></tr>
<tr class="memdesc:gabb053f246fd0cfcb588bafe98278b9b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves information about the data a region reference points to.  <a href="group___h5_l_r.html#gabb053f246fd0cfcb588bafe98278b9b8">More...</a><br /></td></tr>
<tr class="separator:gabb053f246fd0cfcb588bafe98278b9b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73fb3ab3e9b756a818e711cd335c819d"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#ga73fb3ab3e9b756a818e711cd335c819d">H5LTcopy_region</a> (const char *file_src, const char *path_src, const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *block_coord_src, const char *file_dest, const char *path_dest, const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *block_coord_dset)</td></tr>
<tr class="memdesc:ga73fb3ab3e9b756a818e711cd335c819d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies data from a specified region in a source dataset to a specified region in a destination dataset.  <a href="group___h5_l_r.html#ga73fb3ab3e9b756a818e711cd335c819d">More...</a><br /></td></tr>
<tr class="separator:ga73fb3ab3e9b756a818e711cd335c819d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga291c97f18425bb1136f1eab304fb0722"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#ga291c97f18425bb1136f1eab304fb0722">H5LTread_region</a> (const char *file, const char *path, const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *block_coord, <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> mem_type, void *buf)</td></tr>
<tr class="memdesc:ga291c97f18425bb1136f1eab304fb0722"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads selected data to an application buffer.  <a href="group___h5_l_r.html#ga291c97f18425bb1136f1eab304fb0722">More...</a><br /></td></tr>
<tr class="separator:ga291c97f18425bb1136f1eab304fb0722"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1eec1ca149e662c4937e4ab10c30e0f6"><td class="memItemLeft" align="right" valign="top">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___h5_l_r.html#ga1eec1ca149e662c4937e4ab10c30e0f6">H5LTread_bitfield_value</a> (<a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> dset_id, int num_values, const unsigned *offset, const unsigned *lengths, <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> space, int *buf)</td></tr>
<tr class="memdesc:ga1eec1ca149e662c4937e4ab10c30e0f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the values of quality flags for each element to the application provided buffer.  <a href="group___h5_l_r.html#ga1eec1ca149e662c4937e4ab10c30e0f6">More...</a><br /></td></tr>
<tr class="separator:ga1eec1ca149e662c4937e4ab10c30e0f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga889b19b609e4e44565467cb84c6eeb0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga889b19b609e4e44565467cb84c6eeb0d">&#9670;&nbsp;</a></span>H5LRcopy_reference()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LRcopy_reference </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>obj_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *&#160;</td>
          <td class="paramname"><em>ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *&#160;</td>
          <td class="paramname"><em>block_coord</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *&#160;</td>
          <td class="paramname"><em>ref_new</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copies data from the specified dataset to a new location and creates a reference to it. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj_id</td><td>Identifier of any object in a file an HDF5 reference belongs to </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ref</td><td>Reference to the datasets region </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the destination file </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>Full path to the destination dataset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_coord</td><td>Hyperslab coordinates in the destination dataset </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ref_new</td><td>Region reference to the new location of data</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p>Given a data set pointed to by a region reference, the function <a class="el" href="group___h5_l_r.html#ga889b19b609e4e44565467cb84c6eeb0d" title="Copies data from the specified dataset to a new location and creates a reference to it.">H5LRcopy_reference()</a> will copy the hyperslab data referenced by a datasets region reference into existing dataset specified by its path <code>path</code> in the file with the name <code>file</code>, and to location specified by the hyperslab coordinates <code>block_coord</code>. It will create the region reference <code>ref_new</code> to point to the new location. The number of elements in the old and newly specified regions has to be the same.</p>
<p>Buffer <code>block_coord</code> has size 2*rank and is the coordinates of the starting point following by the coordinates of the ending point of the hyperslab. For example, to extract a rectangular hyperslab region starting at element (2,2) to element (5,4) then <code>block_coord</code> would be {2, 2, 5, 4}.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="ga3056840a05520e3a5e1b77f8cdd373c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3056840a05520e3a5e1b77f8cdd373c4">&#9670;&nbsp;</a></span>H5LRcopy_region()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LRcopy_region </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>obj_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *&#160;</td>
          <td class="paramname"><em>ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *&#160;</td>
          <td class="paramname"><em>block_coord</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copies data from a referenced region to a region in a destination dataset. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj_id</td><td>Identifier of any object in a file dataset region reference belongs to </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ref</td><td>Dataset region reference </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of the destination file </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>Full path to the destination dataset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_coord</td><td>Hyperslab coordinates in the destination dataset</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p>Given a dataset region reference <code>ref</code> in a source file specified by an identifier of any object in that file <code>obj_id</code>, the function will write data to the existing dataset <code>path</code> in file <code>file</code> to the simple hyperslab specified by <code>block_coord</code>.</p>
<p>Buffer <code>block_coord</code> has size 2*rank and is the coordinates of the starting point following by the coordinates of the ending point of the hyperslab. For example, to specify a rectangular hyperslab destination region starting at element (2,2) to element (5,4) then <code>block_coord</code> would be {2, 2, 5, 4}.</p>
<p>If <code>path</code> does not exist in the destination file (as may be the case when writing to a new file) then the dataset will be copied directly to the <code>path</code> and <code>block_coord</code> will be disregarded.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="ga75787f84657d69421c6a8be57a9f070c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga75787f84657d69421c6a8be57a9f070c">&#9670;&nbsp;</a></span>H5LRcreate_ref_to_all()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LRcreate_ref_to_all </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>loc_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>group_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>ds_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a>&#160;</td>
          <td class="paramname"><em>index_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a>&#160;</td>
          <td class="paramname"><em>order</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5_rpublic_8h.html#a7d148ddc165e65b01efabfd738ac056e">H5R_type_t</a>&#160;</td>
          <td class="paramname"><em>ref_type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates a dataset with the region references to the data in all datasets located under a specified group in a file or creates a dataset with object references to all objects (groups or datasets) located under a specified group in a file. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">loc_id</td><td>Location identifier. The identifier may be that of a file or group. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">group_path</td><td>Absolute or relative path to the group at which traversal starts </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ds_path</td><td>Absolute or relative path to the dataset with region references to be created </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index_type</td><td>Index_type; see valid values below in description </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">order</td><td>Order in which index is traversed; see valid values below in description </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ref_type</td><td>Reference type; see valid values below in description</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p><a class="el" href="group___h5_l_r.html#ga75787f84657d69421c6a8be57a9f070c" title="Creates a dataset with the region references to the data in all datasets located under a specified gr...">H5LRcreate_ref_to_all()</a> creates a dataset with the region references to the data in all datasets located under a specified group in a file or creates a dataset with object references to all objects (groups or datasets) located under a specified group in a file.</p>
<p>Given a dataset path <code>ds_path</code> in a file specified by the <code>loc_id</code> identifier, the function <a class="el" href="group___h5_l_r.html#ga75787f84657d69421c6a8be57a9f070c" title="Creates a dataset with the region references to the data in all datasets located under a specified gr...">H5LRcreate_ref_to_all()</a> will create a contiguous one-dimensional dataset with the region references or object references depending on the value of the <code>ref_type</code> parameter. When <code>ref_type</code> is <a class="el" href="_h5_rpublic_8h.html#a2a28c48c03a4616a02f9157fca4b2df0">H5R_DATASET_REGION</a>, each region reference points to all data in a dataset encountered by an internally called <a class="el" href="group___t_r_a_v.html#gac0558936502924d9e898d8b6e041ed69">H5Lvisit()</a> routine, which starts at the group specified by the <code>loc_id</code> and <code>group_path</code> parameters. In a like manner, when <code>ref_type</code> is <a class="el" href="_h5_rpublic_8h.html#ae1ffa09875ca6778df3a577592dacbd2">H5R_OBJECT</a>, each object reference points to an object (a group or a dataset) encountered by <a class="el" href="group___t_r_a_v.html#gac0558936502924d9e898d8b6e041ed69">H5Lvisit()</a>.</p>
<p>If <code>ds_path</code> does not exist in <code>loc_id</code> then the function will create the path specified by <code>ds_path</code> automatically.</p>
<p><code>index_type</code> specifies the index to be used. Valid values include the following:</p><ul>
<li><a class="el" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3a644e6701706be4d37660864336c7bd3e">H5_INDEX_NAME</a> Alphanumeric index on name</li>
<li><a class="el" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3a315475479b34056043b4b6583bafb280">H5_INDEX_CRT_ORDER</a> Index on creation order</li>
</ul>
<p><code>order</code> specifies the order in which objects are to be inspected along the index specified in <code>index_type</code>. Valid values include the following:</p><ul>
<li><a class="el" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9a80c3e083c0a77063b1a66553decfcb08">H5_ITER_INC</a> Increasing order</li>
<li><a class="el" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9a2f123d7a4d68054e8aa2d0f1d0a3fcd2">H5_ITER_DEC</a> Decreasing order</li>
<li><a class="el" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9a15eebaf7d85d5e37e918858634e29d01">H5_ITER_NATIVE</a> Fastest available order</li>
</ul>
<p>For more detailed information on these two parameters, </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group___t_r_a_v.html#gac0558936502924d9e898d8b6e041ed69">H5Lvisit()</a>.</dd></dl>
<p><code>ref_type</code> specifies the type of the reference to be used. Valid values include the following:</p><ul>
<li><a class="el" href="_h5_rpublic_8h.html#a2a28c48c03a4616a02f9157fca4b2df0">H5R_DATASET_REGION</a> Dataset region reference</li>
<li><a class="el" href="_h5_rpublic_8h.html#ae1ffa09875ca6778df3a577592dacbd2">H5R_OBJECT</a> Object reference</li>
</ul>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="gacef1564aa36bdfceac13b7b2bdd8e2d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacef1564aa36bdfceac13b7b2bdd8e2d8">&#9670;&nbsp;</a></span>H5LRcreate_region_references()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LRcreate_region_references </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>obj_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>num_elem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *&#160;</td>
          <td class="paramname"><em>block_coord</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates an array of region references using an array of paths to datasets and an array of corresponding hyperslab descriptions. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj_id</td><td>File identifier for the HDF5 file containing the referenced regions or an object identifier for any object in that file </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num_elem</td><td>Number of elements in the <code>path</code> and <code>buf</code> arrays </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>Array of pointers to strings, which contain the paths to the target datasets for the region references </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_coord</td><td>Array of hyperslab coordinate </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>Buffer for returning an array of region references</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<dl class="section note"><dt>Note</dt><dd><b>Motivation:</b> </dd>
<dd>
<a class="el" href="group___h5_l_r.html#gacef1564aa36bdfceac13b7b2bdd8e2d8" title="Creates an array of region references using an array of paths to datasets and an array of correspondi...">H5LRcreate_region_references()</a> is useful when creating large numbers of similar region references.</dd></dl>
<p><a class="el" href="group___h5_l_r.html#gacef1564aa36bdfceac13b7b2bdd8e2d8" title="Creates an array of region references using an array of paths to datasets and an array of correspondi...">H5LRcreate_region_references()</a> creates a list of region references given an array of paths to datasets and another array listing the corner coordinates of the corresponding hyperslabs.</p>
<p><code>path</code> parameter is an array of pointers to strings.</p>
<p><code>num_elem</code> specifies the number of region references to be created, thus specifying the size of the <code>path</code> and <code>_buf</code> arrays.</p>
<p>Buffer <code>block_coord</code> has size 2*rank and is the coordinates of the starting point following by the coordinates of the ending point of the hyperslab, repeated <code>num_elem</code> times for each hyperslab. For example, creating two region references to two hyperslabs, one with a rectangular hyperslab region starting at element (2,2) to element (5,4) and the second rectangular region starting at element (7,7) to element (9,10), results in <code>block_coord</code> being {2,2,5,4, 7,7,9,10}.</p>
<p>The rank of the hyperslab will be the same as the rank of the target dataset. <a class="el" href="group___h5_l_r.html#gacef1564aa36bdfceac13b7b2bdd8e2d8" title="Creates an array of region references using an array of paths to datasets and an array of correspondi...">H5LRcreate_region_references()</a> will retrieve the rank for each dataset and will use those values to interpret the values in the buffer. Please note that rank may vary from one dataset to another.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="gabb053f246fd0cfcb588bafe98278b9b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabb053f246fd0cfcb588bafe98278b9b8">&#9670;&nbsp;</a></span>H5LRget_region_info()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LRget_region_info </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>obj_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *&#160;</td>
          <td class="paramname"><em>ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>rank</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> *&#160;</td>
          <td class="paramname"><em>dtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5_spublic_8h.html#a1e9590539381e3922a1582067d496304">H5S_sel_type</a> *&#160;</td>
          <td class="paramname"><em>sel_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>numelem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves information about the data a region reference points to. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj_id</td><td>Identifier of any object in an HDF5 file the region reference belongs to. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ref</td><td>Region reference to query </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">len</td><td>Size of the buffer to store <code>path</code> in. NOTE: if <code>*path</code> is not NULL then <code>*len</code> must be the appropriate length </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">path</td><td>Full path that a region reference points to </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">rank</td><td>The number of dimensions of the dataset dimensions of the dataset pointed by region reference. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dtype</td><td>Datatype of the dataset pointed by the region reference. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sel_type</td><td>Type of the selection (point or hyperslab) </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">numelem</td><td>Number of coordinate blocks or selected elements. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>Buffer containing description of the region pointed by region reference</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p><a class="el" href="group___h5_l_r.html#gabb053f246fd0cfcb588bafe98278b9b8" title="Retrieves information about the data a region reference points to.">H5LRget_region_info()</a> queries information about the data pointed by a region reference <code>ref</code>. It returns one of the absolute paths to a dataset, length of the path, dataset's rank and datatype, description of the referenced region and type of the referenced region. Any output argument can be NULL if that argument does not need to be returned.</p>
<p>The parameter <code>obj_id</code> is an identifier for any object in the HDF5 file containing the referenced object. For example, it can be an identifier of a dataset the region reference belongs to or an identifier of an HDF5 file the dataset with region references is stored in.</p>
<p>The parameter <code>ref</code> is a region reference to query.</p>
<p>The parameter <code>path</code> is a pointer to application allocated buffer of size <code>len+1</code> to return an absolute path to a dataset the region reference points to.</p>
<p>The parameter <code>len</code> is a length of absolute path string plus the \0 string terminator. If path parameter is NULL, actual length of the path (+1 for \0 string terminator) is returned to application and can be used to allocate buffer path of an appropriate length <code>len</code>.</p>
<p>The parameter <code>sel_type</code> describes the type of the selected region. Possible values can be <a class="el" href="_h5_spublic_8h.html#a1e9590539381e3922a1582067d496304a858daf05b19591a8f5d6ffbee281f81c">H5S_SEL_POINTS</a> for point selection and <a class="el" href="_h5_spublic_8h.html#a1e9590539381e3922a1582067d496304aeb9dc925cd7c6a6702fc9c766e20b01a">H5S_SEL_HYPERSLABS</a> for hyperslab selection.</p>
<p>The parameter <code>numelem</code> describes how many elements will be placed in the buffer <code>buf</code>. The number should be interpreted using the value of <code>sel_type</code>.</p>
<p>If value of <code>sel_type</code> is <a class="el" href="_h5_spublic_8h.html#a1e9590539381e3922a1582067d496304aeb9dc925cd7c6a6702fc9c766e20b01a">H5S_SEL_HYPERSLABS</a>, the parameter <code>buf</code> contains <code>numelem</code> blocks of the coordinates for each simple hyperslab of the referenced region. Each block has length <code>2*<code>rank</code> and</code> is organized as follows: &lt;"start" coordinate&gt;, immediately followed by &lt;"opposite" corner coordinate&gt;. The total size of the buffer to hold the description of the region will be <code>2*<code>rank*<code>numelem</code>.</code> If</code> region reference points to a contiguous sub-array, then the value of <code>numelem</code> is 1 and the block contains coordinates of the upper left and lower right corners of the sub-array (or simple hyperslab).</p>
<p>If value of <code>sel_type</code> is <a class="el" href="_h5_spublic_8h.html#a1e9590539381e3922a1582067d496304a858daf05b19591a8f5d6ffbee281f81c">H5S_SEL_POINTS</a>, the parameter <code>buf</code> contains <code>numelem</code> blocks of the coordinates for each selected point of the referenced region. Each block has length <code>rank</code> and contains coordinates of the element. The total size of the buffer to hold the description of the region will be <code>rank*</code> <code>numelem</code>.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="gabbf9f8ea4d13d44d45efae5e143a157a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabbf9f8ea4d13d44d45efae5e143a157a">&#9670;&nbsp;</a></span>H5LRmake_dataset()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LRmake_dataset </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>loc_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>type_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>buf_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> *&#160;</td>
          <td class="paramname"><em>loc_id_ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates and writes a dataset containing a list of region references. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">loc_id</td><td>Location identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>Path to the dataset being created </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type_id</td><td>Datatype of the dataset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buf_size</td><td>Size of the <code>loc_id_ref</code> and <code>buf</code> arrays </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">loc_id_ref</td><td>Array of object identifiers; each identifier describes to which HDF5 file the corresponding region reference belongs to </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>Array of region references</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p>Given an array of size <code>buf_size</code> of region references <code>buf</code>, the function will create a dataset with path <code>path</code>, at location specified by <code>loc_id</code> and of a datatype specified by <code>type_id</code>, and will write data associated with each region reference in the order corresponding to the order of the region references in the buffer. It is assumed that all referenced hyperslabs have the same dimensionality, and only the size of the slowest changing dimension may differ. Each reference in the <code>buf</code> array belongs to the file identified by the corresponding object identifiers in the array <code>loc_id_ref</code>.</p>
<p>If <code>path</code> does not exist in <code>loc_id</code> then the function will create the path specified by <code>path</code> automatically.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="ga0cab2622e4ffba04c363d37b98b0a83b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0cab2622e4ffba04c363d37b98b0a83b">&#9670;&nbsp;</a></span>H5LRread_region()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LRread_region </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>obj_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structhdset__reg__ref__t.html">hdset_reg_ref_t</a> *&#160;</td>
          <td class="paramname"><em>ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>mem_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>numelem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves raw data pointed to by a region reference to an application buffer. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj_id</td><td>File identifier for the HDF5 file containing the dataset with the referenced region or an object identifier for any object in that file </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ref</td><td>Region reference specifying data to be read in </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mem_type</td><td>Memory datatype of data read from referenced region into the application buffer </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">numelem</td><td>Number of elements to be read into buffer <code>buf</code> </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>Buffer in which data is returned to the application</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p><a class="el" href="group___h5_l_r.html#ga0cab2622e4ffba04c363d37b98b0a83b" title="Retrieves raw data pointed to by a region reference to an application buffer.">H5LRread_region()</a> reads data pointed to by the region reference <code>ref</code> into the buffer <code>buf</code>.</p>
<p><code>numelem</code> specifies the number of elements to be read into <code>buf</code>. When the size of the reference region is unknown, <a class="el" href="group___h5_l_r.html#ga0cab2622e4ffba04c363d37b98b0a83b" title="Retrieves raw data pointed to by a region reference to an application buffer.">H5LRread_region()</a> can be called with <code>buf</code> set to NULL; the number of elements in the referenced region will be returned in <code>numelem</code>.</p>
<p>The buffer buf must be big enough to hold <code>numelem</code> elements of type <code>mem_type</code>. For example, if data is read from the referenced region into an integer buffer, <code>mem_type</code> should be <a class="el" href="group___p_d_t_n_a_t.html#ga3cf93ffc6782be68070ef8e00f219ec2">H5T_NATIVE_INT</a> and the buffer must be at least <code>sizeof(int)</code> * <code>numelem</code> bytes in size. This buffer must be allocated by the application.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="ga73fb3ab3e9b756a818e711cd335c819d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga73fb3ab3e9b756a818e711cd335c819d">&#9670;&nbsp;</a></span>H5LTcopy_region()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LTcopy_region </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file_src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path_src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *&#160;</td>
          <td class="paramname"><em>block_coord_src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file_dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path_dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *&#160;</td>
          <td class="paramname"><em>block_coord_dset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copies data from a specified region in a source dataset to a specified region in a destination dataset. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">file_src</td><td>Name of the source file </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path_src</td><td>Full path to the source dataset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_coord_src</td><td>Hyperslab coordinates in the source dataset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">file_dest</td><td>Name of the destination file </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path_dest</td><td>Full path to the destination dataset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_coord_dset</td><td>Hyperslab coordinates in the destination dataset</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p>Given a path to a dataset <code>path_src</code> in a file with the name <code>file_src</code>, and description of a simple hyperslab of the source <code>block_coord_src</code>, the function will write data to the dataset <code>path_dest</code> in file <code>file_dest</code> to the simple hyperslab specified by <code>block_coord_dset</code>. The arrays <code>block_coord_src</code> and <code>block_coord_dset</code> have a length of 2*rank and are the coordinates of the starting point following by the coordinates of the ending point of the hyperslab. For example, to specify a rectangular hyperslab destination region starting at element (2,2) to element (5,4) then <code>block_coord_dset</code> would be {2, 2, 5, 4}.</p>
<p>If <code>path_dest</code> does not exist in the destination file (as may be the case when writing to a new file) then the dataset will be copied directly to the <code>path_dest</code> and <code>block_coord_dset</code> will be disregarded.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="ga1eec1ca149e662c4937e4ab10c30e0f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1eec1ca149e662c4937e4ab10c30e0f6">&#9670;&nbsp;</a></span>H5LTread_bitfield_value()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LTread_bitfield_value </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>dset_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_values</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned *&#160;</td>
          <td class="paramname"><em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned *&#160;</td>
          <td class="paramname"><em>lengths</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>space</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves the values of quality flags for each element to the application provided buffer. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dset_id</td><td>Identifier of the dataset with bit-field values </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num_values</td><td>Number of the values to be extracted </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Array of staring bits to be extracted from the element; valid values: 0 (zero) through 7 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">lengths</td><td>Array of the number of bits to be extracted for each value </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">space</td><td>Dataspace identifier, describing the elements to be read from the dataset with bit-field values </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>Buffer to read the values in</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p><a class="el" href="group___h5_l_r.html#ga1eec1ca149e662c4937e4ab10c30e0f6" title="Retrieves the values of quality flags for each element to the application provided buffer.">H5LTread_bitfield_value()</a> reads selected elements from a dataset specified by its identifier <code>dset_id</code>, and unpacks the bit-field values to a buffer <code>buf</code>.</p>
<p>The parameter <code>space</code> is a space identifier that indicates which elements of the dataset should be read.</p>
<p>The parameter <code>offset</code> is an array of length <code>num_values</code>; the i<sup>th</sup> element of the array holds the value of the starting bit of the i<sup>th</sup> bit-field value. Valid values are: 0 (zero) through 7.</p>
<p>The parameter <code>lengths</code> is an array of length <code>num_values</code>; the i<sup>th</sup> element of the array holds the number of bits to be extracted for the i<sup>th</sup> bit-field value. Extracted bits will be interpreted as a base-2 integer value. Each value will be converted to the base-10 integer value and stored in the application buffer.</p>
<p>Buffer <code>buf</code> is allocated by the application and should be big enough to hold <code>num_sel_elem</code> * <code>num_values</code> elements of the specified type, where <code>num_sel_elem</code> is a number of the elements to be read from the dataset. Data in the buffer is organized as <code>num_values</code> values for the first element, followed by the <code>num_values</code> values for the second element, ... , followed by the <code>num_values</code> values for the <code>num_selected_elem<sup>th</sup></code> element.</p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
<a id="ga291c97f18425bb1136f1eab304fb0722"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga291c97f18425bb1136f1eab304fb0722">&#9670;&nbsp;</a></span>H5LTread_region()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">H5_HLRDLL <a class="el" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> H5LTread_region </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *&#160;</td>
          <td class="paramname"><em>block_coord</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a>&#160;</td>
          <td class="paramname"><em>mem_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads selected data to an application buffer. </p>
<hr  />
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>Name of file </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td>Full path to a dataset </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_coord</td><td>Hyperslab coordinates </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mem_type</td><td>Memory datatype, describing the buffer the referenced data will be read into </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>Buffer containing data from the referenced region</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a non-negative value if successful; otherwise, returns a negative value.</dd></dl>
<p><a class="el" href="group___h5_l_r.html#ga291c97f18425bb1136f1eab304fb0722" title="Reads selected data to an application buffer.">H5LTread_region()</a> reads data from a region described by the hyperslab coordinates in <code>block_coord</code>, located in the dataset specified by its absolute path <code>path</code> in a file specified by its name <code>file</code>. Data is read into a buffer <code>buf</code> of the datatype that corresponds to the HDF5 datatype specified by <code>mem_type</code>.</p>
<p>Buffer <code>block_coord</code> has size 2*rank and is the coordinates of the starting point following by the coordinates of the ending point of the hyperslab. For example, to extract a rectangular hyperslab region starting at element (2,2) to element (5,4) then <code>block_coord</code> would be {2, 2, 5, 4}.</p>
<p>Buffer <code>buf</code> should be big enough to hold selected elements of the type that corresponds to the <code>mem_type</code> </p>
<dl class="section version"><dt>Version</dt><dd>1.1 Fortran wrapper introduced in this release.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>1.0 </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>