void IterationProcessNode(TreePtr tree,TreeNodePtr node,NodeCallBack fnNode) { unsigned long i; TreeNodePtr left = NULL; TreeNodePtr right = NULL; ArrayPtr nodeList = CreateArray(tree->size,sizeof(void*)); InsertArray(nodeList,&node); for (i=0; i<nodeList->size; i++) { node = *(TreeNodePtr*)GetDataArray(nodeList,i); left = node->left; right = node->right; if (NULL != fnNode) { fnNode(tree,node); } if (NULL != left) { InsertArray(nodeList,&left); } if (NULL != right) { InsertArray(nodeList,&right); } } DestroyArray(nodeList); }
tTJSVariant* tTJSBinarySerializer::ReadArray( const tjs_uint8* buff, const tjs_uint size, const tjs_uint count, tjs_uint& index ) { if( index > size ) return NULL; tTJSArrayObject* array = CreateArray( count ); for( tjs_uint i = 0; i < count; i++ ) { tTJSVariant* value = ReadBasicType( buff, size, index ); InsertArray( array, i, value ); delete value; } tTJSVariant* ret = new tTJSVariant( array, array ); array->Release(); return ret; }