void u0025_vhash__create(SG_context * pCtx, SG_vhash** pph) { SG_vhash* ph = NULL; SG_varray* pa = NULL; SG_vhash* pvhSub = NULL; SG_varray* pvaSub = NULL; SG_ERR_CHECK( SG_VHASH__ALLOC(pCtx, &ph) ); SG_ERR_CHECK( SG_vhash__add__string__sz(pCtx, ph, "hello", "world") ); SG_ERR_CHECK( SG_VARRAY__ALLOC(pCtx, &pa) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pa, 31) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pa, 51) ); SG_ERR_CHECK( SG_VHASH__ALLOC(pCtx, &pvhSub) ); SG_ERR_CHECK( SG_vhash__add__string__sz(pCtx, pvhSub, "not", "now") ); SG_ERR_CHECK( SG_varray__append__vhash(pCtx, pa, &pvhSub) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pa, 71) ); SG_ERR_CHECK( SG_VARRAY__ALLOC(pCtx, &pvaSub) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pvaSub, 81) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pvaSub, 82) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pvaSub, 83) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pvaSub, 84) ); SG_ERR_CHECK( SG_varray__append__varray(pCtx, pa, &pvaSub) ); SG_ERR_CHECK( SG_varray__append__int64(pCtx, pa, 91) ); SG_ERR_CHECK( SG_vhash__add__varray(pCtx, ph, "a", &pa) ); SG_ERR_CHECK( SG_vhash__add__string__sz(pCtx, ph, "b", "fiddle") ); *pph = ph; return; fail: // TODO free return; }
static void _serialize_data_cb(SG_context * pCtx, const char * szHid, void * pAssocData, void * pVoidSerializeData) { struct _serialize_data * pSerializeData = (struct _serialize_data *)pVoidSerializeData; _my_data * pMyData = (_my_data *)pAssocData; SG_vhash * pvhMyData = NULL; SG_vhash * pvhDagnode = NULL; SG_ERR_CHECK( SG_VHASH__ALLOC__SHARED(pCtx,&pvhMyData,5,pSerializeData->pvhFrag) ); SG_ERR_CHECK( SG_vhash__add__int64(pCtx,pvhMyData,KEY_DFS_STATE,(SG_int64)pMyData->m_state) ); if (SG_DFS_END_FRINGE == pMyData->m_state) { SG_ERR_CHECK( SG_vhash__add__string__sz(pCtx,pvhMyData,KEY_DAGNODE_ID,szHid) ); } else { SG_ERR_CHECK( SG_dagnode__to_vhash__shared(pCtx,pMyData->m_pDagnode,pvhMyData,&pvhDagnode) ); SG_ERR_CHECK( SG_vhash__add__vhash(pCtx,pvhMyData,KEY_ACTUAL_DAGNODE,&pvhDagnode) ); } #if DEBUG && TRACE_DAGFRAG && 0 SG_ERR_CHECK( SG_vhash_debug__dump_to_console(pCtx, pvhMyData) ); #endif SG_ERR_CHECK( SG_varray__append__vhash(pCtx,pSerializeData->pvaMyData,&pvhMyData) ); return; fail: SG_VHASH_NULLFREE(pCtx, pvhMyData); SG_VHASH_NULLFREE(pCtx, pvhDagnode); }