cwObject.h/cpp : Added putv() and put_numeric_list(). Changed newDictObject() and newListObject()
from: { return _objAllocate( kDictTId, parent); } to: { return _objAppendRightMostNode(parent, _objAllocate( kDictTId, parent) ); }
This commit is contained in:
parent
6938e5a278
commit
c305b4b4da
@ -746,10 +746,10 @@ cw::object_t* cw::newObject( const char* v, object_t* parent)
|
|||||||
{ return _objCreateValueNode<const char*>( parent, v ); }
|
{ return _objCreateValueNode<const char*>( parent, v ); }
|
||||||
|
|
||||||
cw::object_t* cw::newDictObject( object_t* parent )
|
cw::object_t* cw::newDictObject( object_t* parent )
|
||||||
{ return _objAllocate( kDictTId, parent); }
|
{ return _objAppendRightMostNode(parent, _objAllocate( kDictTId, parent) ); }
|
||||||
|
|
||||||
cw::object_t* cw::newListObject( object_t* parent )
|
cw::object_t* cw::newListObject( object_t* parent )
|
||||||
{ return _objAllocate( kListTId, parent ); }
|
{ return _objAppendRightMostNode(parent, _objAllocate( kListTId, parent) ); }
|
||||||
|
|
||||||
cw::object_t* cw::newPairObject( const char* label, object_t* value, object_t* parent)
|
cw::object_t* cw::newPairObject( const char* label, object_t* value, object_t* parent)
|
||||||
{
|
{
|
||||||
|
37
cwObject.h
37
cwObject.h
@ -88,6 +88,9 @@ namespace cw
|
|||||||
} objType_t;
|
} objType_t;
|
||||||
|
|
||||||
|
|
||||||
|
struct object_str* newPairObject( const char* label, struct object_str* v, struct object_str* parent );
|
||||||
|
struct object_str* newListObject( struct object_str* parent );
|
||||||
|
|
||||||
typedef struct object_str
|
typedef struct object_str
|
||||||
{
|
{
|
||||||
objType_t* type = nullptr;
|
objType_t* type = nullptr;
|
||||||
@ -246,6 +249,40 @@ namespace cw
|
|||||||
{ return newPairObject(label, v, this); }
|
{ return newPairObject(label, v, this); }
|
||||||
|
|
||||||
|
|
||||||
|
rc_t _putv() { return kOkRC; }
|
||||||
|
|
||||||
|
// getv("label0",v0,"label1",v1, ... )
|
||||||
|
template< typename T0, typename T1, typename... ARGS >
|
||||||
|
rc_t _putv( T0 label, const T1& val, ARGS&&... args )
|
||||||
|
{
|
||||||
|
|
||||||
|
insert_pair(label,val);
|
||||||
|
|
||||||
|
_putv(std::forward<ARGS>(args)...); // ... recurse to find next label/value pair
|
||||||
|
|
||||||
|
return kOkRC;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// getv("label0",v0,"label1",v1, ... )
|
||||||
|
template< typename T0, typename T1, typename... ARGS >
|
||||||
|
rc_t putv( T0 label, const T1& val, ARGS&&... args )
|
||||||
|
{ return _putv(label,val,args...); }
|
||||||
|
|
||||||
|
|
||||||
|
template< typename T >
|
||||||
|
struct object_str* put_numeric_list( const char* label, const T* v, unsigned vN )
|
||||||
|
{
|
||||||
|
struct object_str* pair = newPairObject(label,newListObject(nullptr),this)->parent;
|
||||||
|
struct object_str* list = pair->pair_value();
|
||||||
|
for(unsigned i=0; i<vN; ++i)
|
||||||
|
newObject(v[i],list);
|
||||||
|
|
||||||
|
return pair;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template< typename T>
|
template< typename T>
|
||||||
rc_t set( const char* label, const T& value )
|
rc_t set( const char* label, const T& value )
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user