cmPrefs.h/c: Added cmPrefsGetUInt().
This commit is contained in:
parent
bf278aaa99
commit
aec942c05a
98
cmPrefs.c
98
cmPrefs.c
@ -472,7 +472,7 @@ void _cmPrefsFormPath( cmPr_t* p, const cmPrNode_t* np )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cmPrRC_t _cmPrefsValue( cmPr_t* p, const cmPrNode_t* np, const cmJsonNode_t* jnp, bool* bvp, int* ivp, double* rvp, const cmChar_t** svp, unsigned retEleCnt )
|
cmPrRC_t _cmPrefsValue( cmPr_t* p, const cmPrNode_t* np, const cmJsonNode_t* jnp, bool* bvp, unsigned* uvp, int* ivp, double* rvp, const cmChar_t** svp, unsigned retEleCnt )
|
||||||
{
|
{
|
||||||
cmJsRC_t jsRC = kOkJsRC;
|
cmJsRC_t jsRC = kOkJsRC;
|
||||||
const char* typeLabel = NULL;
|
const char* typeLabel = NULL;
|
||||||
@ -490,27 +490,33 @@ cmPrRC_t _cmPrefsValue( cmPr_t* p, const cmPrNode_t* np, const cmJsonNode_t* jnp
|
|||||||
typeLabel = "bool";
|
typeLabel = "bool";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( ivp != NULL )
|
if( uvp != NULL )
|
||||||
{
|
{
|
||||||
jsRC = cmJsonIntValue(jnp,ivp);
|
jsRC = cmJsonUIntValue(jnp,uvp);
|
||||||
typeLabel = "int";
|
typeLabel = "uint";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( rvp != NULL )
|
if( ivp != NULL )
|
||||||
{
|
{
|
||||||
jsRC = cmJsonRealValue(jnp,rvp);
|
jsRC = cmJsonIntValue(jnp,ivp);
|
||||||
typeLabel = "real";
|
typeLabel = "int";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( svp != NULL )
|
if( rvp != NULL )
|
||||||
{
|
{
|
||||||
jsRC = cmJsonStringValue(jnp,svp);
|
jsRC = cmJsonRealValue(jnp,rvp);
|
||||||
typeLabel = "string";
|
typeLabel = "real";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
if( svp != NULL )
|
||||||
assert(0);
|
{
|
||||||
}
|
jsRC = cmJsonStringValue(jnp,svp);
|
||||||
|
typeLabel = "string";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assert(0);
|
||||||
|
}
|
||||||
|
|
||||||
if( jsRC != kOkJsRC )
|
if( jsRC != kOkJsRC )
|
||||||
{
|
{
|
||||||
@ -522,14 +528,19 @@ cmPrRC_t _cmPrefsValue( cmPr_t* p, const cmPrNode_t* np, const cmJsonNode_t* jnp
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmPrRC_t _cmPrefsGetValue( cmPrH_t h, unsigned id, bool* bvp, int* ivp, double* rvp, const cmChar_t** svp, unsigned* eleCntPtr, unsigned eleIdx )
|
// if eleCntPtr is null then assume the value is a scalar
|
||||||
|
cmPrRC_t _cmPrefsGetValue( cmPrH_t h, unsigned id, bool* bvp, unsigned* uvp, int* ivp, double* rvp, const cmChar_t** svp, unsigned* eleCntPtr, unsigned eleIdx )
|
||||||
{
|
{
|
||||||
cmPrRC_t rc = kOkPrRC;
|
cmPrRC_t rc = kOkPrRC;
|
||||||
cmPr_t* p = _cmPrefsHandleToPtr(h);
|
cmPr_t* p = _cmPrefsHandleToPtr(h);
|
||||||
cmPrNode_t* np = NULL;
|
cmPrNode_t* np = NULL;
|
||||||
|
unsigned eleCnt = 1;
|
||||||
|
|
||||||
|
if( eleCntPtr != NULL )
|
||||||
|
eleCnt = *eleCntPtr;
|
||||||
|
|
||||||
// if no return buffer was given - do nothing
|
// if no return buffer was given - do nothing
|
||||||
if( *eleCntPtr == 0 )
|
if( eleCnt == 0 )
|
||||||
return kOkPrRC;
|
return kOkPrRC;
|
||||||
|
|
||||||
// locate the pref node from 'id'
|
// locate the pref node from 'id'
|
||||||
@ -542,8 +553,11 @@ cmPrRC_t _cmPrefsGetValue( cmPrH_t h, unsigned id, bool* bvp, int* ivp, double*
|
|||||||
// if the requested pref. var is a scalar
|
// if the requested pref. var is a scalar
|
||||||
if( cmJsonIsArray(np->nodePtr) == false )
|
if( cmJsonIsArray(np->nodePtr) == false )
|
||||||
{
|
{
|
||||||
if((rc = _cmPrefsValue(p,np,np->nodePtr,bvp,ivp,rvp,svp,*eleCntPtr)) == kOkPrRC )
|
if((rc = _cmPrefsValue(p,np,np->nodePtr,bvp,uvp,ivp,rvp,svp,eleCnt)) == kOkPrRC )
|
||||||
*eleCntPtr = 1;
|
{
|
||||||
|
if( eleCntPtr != NULL )
|
||||||
|
*eleCntPtr = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else // the request pref. var. is an array
|
else // the request pref. var. is an array
|
||||||
{
|
{
|
||||||
@ -554,9 +568,10 @@ cmPrRC_t _cmPrefsGetValue( cmPrH_t h, unsigned id, bool* bvp, int* ivp, double*
|
|||||||
if( eleIdx == cmInvalidIdx )
|
if( eleIdx == cmInvalidIdx )
|
||||||
{
|
{
|
||||||
// if the return buffer is too small to hold all of the values.
|
// if the return buffer is too small to hold all of the values.
|
||||||
if( *eleCntPtr < n )
|
if( eleCnt < n )
|
||||||
{
|
{
|
||||||
*eleCntPtr = 0;
|
if( eleCntPtr != NULL )
|
||||||
|
*eleCntPtr = 0;
|
||||||
_cmPrefsFormPath(p,np);
|
_cmPrefsFormPath(p,np);
|
||||||
rc = cmErrMsg(&p->err,kBufTooSmallPrRC,"The return array for the preference variable '%s' (id:%i) is too small to hold '%i elements",p->pathBuf,np->id,n);
|
rc = cmErrMsg(&p->err,kBufTooSmallPrRC,"The return array for the preference variable '%s' (id:%i) is too small to hold '%i elements",p->pathBuf,np->id,n);
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
@ -567,11 +582,12 @@ cmPrRC_t _cmPrefsGetValue( cmPrH_t h, unsigned id, bool* bvp, int* ivp, double*
|
|||||||
{
|
{
|
||||||
const cmJsonNode_t* cnp = cmJsonArrayElement(np->nodePtr,i);
|
const cmJsonNode_t* cnp = cmJsonArrayElement(np->nodePtr,i);
|
||||||
|
|
||||||
if((rc= _cmPrefsValue(p,np,cnp,bvp==NULL?NULL:bvp+i,ivp==NULL?NULL:ivp+i,rvp==NULL?NULL:rvp+i,svp==NULL?NULL:svp+i,1)) != kOkPrRC )
|
if((rc= _cmPrefsValue(p,np,cnp,bvp==NULL?NULL:bvp+i,uvp==NULL?NULL:uvp+i,ivp==NULL?NULL:ivp+i,rvp==NULL?NULL:rvp+i,svp==NULL?NULL:svp+i,1)) != kOkPrRC )
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
*eleCntPtr = n;
|
if( eleCntPtr != NULL )
|
||||||
|
*eleCntPtr = n;
|
||||||
}
|
}
|
||||||
else // a single ele of the array was requested
|
else // a single ele of the array was requested
|
||||||
{
|
{
|
||||||
@ -589,30 +605,38 @@ cmPrRC_t _cmPrefsGetValue( cmPrH_t h, unsigned id, bool* bvp, int* ivp, double*
|
|||||||
assert(cnp != NULL );
|
assert(cnp != NULL );
|
||||||
|
|
||||||
// read the element from the array
|
// read the element from the array
|
||||||
if((rc = _cmPrefsValue(p,np,cnp,bvp,ivp,rvp,svp,*eleCntPtr)) == kOkPrRC )
|
if((rc = _cmPrefsValue(p,np,cnp,bvp,uvp,ivp,rvp,svp,eleCnt)) == kOkPrRC )
|
||||||
*eleCntPtr = 1;
|
{
|
||||||
|
if( eleCntPtr != NULL)
|
||||||
|
*eleCntPtr = 1;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
errLabel:
|
errLabel:
|
||||||
if( rc != kOkPrRC )
|
if( rc != kOkPrRC )
|
||||||
*eleCntPtr = 0;
|
{
|
||||||
|
if( eleCntPtr != NULL )
|
||||||
|
*eleCntPtr = 0;
|
||||||
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmPrRC_t cmPrefsGetBool( cmPrH_t h, unsigned id, bool* vp, unsigned* eleCntPtr )
|
cmPrRC_t cmPrefsGetBool( cmPrH_t h, unsigned id, bool* vp, unsigned* eleCntPtr )
|
||||||
{ return _cmPrefsGetValue(h, id, vp, NULL, NULL, NULL, eleCntPtr, cmInvalidIdx ); }
|
{ return _cmPrefsGetValue(h, id, vp, NULL, NULL, NULL, NULL, eleCntPtr, cmInvalidIdx ); }
|
||||||
|
|
||||||
|
cmPrRC_t cmPrefsGetUInt( cmPrH_t h, unsigned id, unsigned* vp, unsigned* eleCntPtr )
|
||||||
|
{ return _cmPrefsGetValue(h, id, NULL, vp, NULL, NULL, NULL, eleCntPtr, cmInvalidIdx ); }
|
||||||
|
|
||||||
cmPrRC_t cmPrefsGetInt( cmPrH_t h, unsigned id, int* vp, unsigned* eleCntPtr )
|
cmPrRC_t cmPrefsGetInt( cmPrH_t h, unsigned id, int* vp, unsigned* eleCntPtr )
|
||||||
{ return _cmPrefsGetValue(h, id, NULL, vp, NULL, NULL, eleCntPtr, cmInvalidIdx ); }
|
{ return _cmPrefsGetValue(h, id, NULL, NULL, vp, NULL, NULL, eleCntPtr, cmInvalidIdx ); }
|
||||||
|
|
||||||
cmPrRC_t cmPrefsGetReal( cmPrH_t h, unsigned id, double* vp, unsigned* eleCntPtr )
|
cmPrRC_t cmPrefsGetReal( cmPrH_t h, unsigned id, double* vp, unsigned* eleCntPtr )
|
||||||
{ return _cmPrefsGetValue(h, id, NULL, NULL, vp, NULL, eleCntPtr, cmInvalidIdx ); }
|
{ return _cmPrefsGetValue(h, id, NULL, NULL, NULL, vp, NULL, eleCntPtr, cmInvalidIdx ); }
|
||||||
|
|
||||||
cmPrRC_t cmPrefsGetString( cmPrH_t h, unsigned id, const cmChar_t** vp, unsigned* eleCntPtr )
|
cmPrRC_t cmPrefsGetString( cmPrH_t h, unsigned id, const cmChar_t** vp, unsigned* eleCntPtr )
|
||||||
{ return _cmPrefsGetValue(h, id, NULL, NULL, NULL, vp, eleCntPtr, cmInvalidIdx ); }
|
{ return _cmPrefsGetValue(h, id, NULL, NULL, NULL, NULL, vp, eleCntPtr, cmInvalidIdx ); }
|
||||||
|
|
||||||
bool cmPrefsBool( cmPrH_t h, unsigned id )
|
bool cmPrefsBool( cmPrH_t h, unsigned id )
|
||||||
{
|
{
|
||||||
@ -812,23 +836,23 @@ bool cmPrefsBoolEle( cmPrH_t h, unsigned id, unsigned idx )
|
|||||||
{
|
{
|
||||||
bool v = false;;
|
bool v = false;;
|
||||||
unsigned n = 1;
|
unsigned n = 1;
|
||||||
_cmPrefsGetValue(h,id, &v, NULL, NULL, NULL, &n, idx );
|
_cmPrefsGetValue(h,id, &v, NULL, NULL, NULL, NULL, &n, idx );
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned cmPrefsUIntEle( cmPrH_t h, unsigned id, unsigned idx )
|
unsigned cmPrefsUIntEle( cmPrH_t h, unsigned id, unsigned idx )
|
||||||
{
|
{
|
||||||
int v = 0;
|
unsigned v = 0;
|
||||||
unsigned n = 1;
|
unsigned n = 1;
|
||||||
_cmPrefsGetValue(h,id, NULL, &v, NULL, NULL, &n, idx );
|
_cmPrefsGetValue(h,id, NULL, &v, NULL, NULL, NULL, &n, idx );
|
||||||
return (unsigned)v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmPrefsIntEle( cmPrH_t h, unsigned id, unsigned idx )
|
int cmPrefsIntEle( cmPrH_t h, unsigned id, unsigned idx )
|
||||||
{
|
{
|
||||||
int v = 0;
|
int v = 0;
|
||||||
unsigned n = 1;
|
unsigned n = 1;
|
||||||
_cmPrefsGetValue(h,id, NULL, &v, NULL, NULL, &n, idx );
|
_cmPrefsGetValue(h,id, NULL, NULL, &v, NULL, NULL, &n, idx );
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -836,7 +860,7 @@ float cmPrefsFloatEle( cmPrH_t h, unsigned id, unsigned idx )
|
|||||||
{
|
{
|
||||||
double v = 0;
|
double v = 0;
|
||||||
unsigned n = 1;
|
unsigned n = 1;
|
||||||
_cmPrefsGetValue(h,id, NULL, NULL, &v, NULL, &n, idx );
|
_cmPrefsGetValue(h,id, NULL, NULL, NULL, &v, NULL, &n, idx );
|
||||||
return (float)v;
|
return (float)v;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -844,7 +868,7 @@ double cmPrefsRealEle( cmPrH_t h, unsigned id, unsigned idx )
|
|||||||
{
|
{
|
||||||
double v = 0;
|
double v = 0;
|
||||||
unsigned n = 1;
|
unsigned n = 1;
|
||||||
_cmPrefsGetValue(h,id, NULL, NULL, &v, NULL, &n, idx );
|
_cmPrefsGetValue(h,id, NULL, NULL, NULL, &v, NULL, &n, idx );
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -852,7 +876,7 @@ const cmChar_t* cmPrefsStringEle( cmPrH_t h, unsigned id, unsigned idx )
|
|||||||
{
|
{
|
||||||
const cmChar_t* v = "";
|
const cmChar_t* v = "";
|
||||||
unsigned n = 1;
|
unsigned n = 1;
|
||||||
if( _cmPrefsGetValue(h,id, NULL, NULL, NULL, &v, &n, idx ) == kOkPrRC )
|
if( _cmPrefsGetValue(h,id, NULL, NULL, NULL, NULL, &v, &n, idx ) == kOkPrRC )
|
||||||
return v;
|
return v;
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -65,10 +65,13 @@ extern "C" {
|
|||||||
// is associated with id. Returns 1 if the variable is a scalar.
|
// is associated with id. Returns 1 if the variable is a scalar.
|
||||||
unsigned cmPrefsEleCount( cmPrH_t h, unsigned id );
|
unsigned cmPrefsEleCount( cmPrH_t h, unsigned id );
|
||||||
|
|
||||||
// On input *'eleCntPtr' must contain the number of elements in the buffer pointed to by 'vp'.
|
// On input *'eleCntPtr' must contain the number of elements in the buffer
|
||||||
// On return *'eleCntPtr' contains the actuall number of elements returned by the function.
|
// pointed to by 'vp' or NULL if '*vp' is a scalar.
|
||||||
// Set *eleCntPtr to 1 for scalar a values.
|
// On return *'eleCntPtr' contains the actual number of elements
|
||||||
|
// returned by the function.
|
||||||
|
// Set eleCntPtr to NULL for scalar a values.
|
||||||
cmPrRC_t cmPrefsGetBool( cmPrH_t h, unsigned id, bool* vp, unsigned* eleCntPtr );
|
cmPrRC_t cmPrefsGetBool( cmPrH_t h, unsigned id, bool* vp, unsigned* eleCntPtr );
|
||||||
|
cmPrRC_t cmPrefsGetUInt( cmPrH_t h, unsigned id, unsigned* vp, unsigned* eleCntPtr );
|
||||||
cmPrRC_t cmPrefsGetInt( cmPrH_t h, unsigned id, int* vp, unsigned* eleCntPtr );
|
cmPrRC_t cmPrefsGetInt( cmPrH_t h, unsigned id, int* vp, unsigned* eleCntPtr );
|
||||||
cmPrRC_t cmPrefsGetReal( cmPrH_t h, unsigned id, double* vp, unsigned* eleCntPtr );
|
cmPrRC_t cmPrefsGetReal( cmPrH_t h, unsigned id, double* vp, unsigned* eleCntPtr );
|
||||||
cmPrRC_t cmPrefsGetString( cmPrH_t h, unsigned id, const cmChar_t** vp, unsigned* eleCntPtr );
|
cmPrRC_t cmPrefsGetString( cmPrH_t h, unsigned id, const cmChar_t** vp, unsigned* eleCntPtr );
|
||||||
|
Loading…
Reference in New Issue
Block a user