void FreeTree(Node *p){
	if(p == NULL) return;
	FreeTree(p->left);
	FreeTree(p->right);
	printf("Free '%s/%s'\n", p->path, p->name);
	free(p->name);
	free(p->path);
	free(p);
}
Example #2
0
static void
FreeTree(DBexprnode *tree)
{
    if (!tree)
        return;
    FreeTree(tree->left);
    FreeTree(tree->right);
    free(tree);
}
Example #3
0
//-------------------------------------------------------------------------
static void LoadLocals(WATCHDATA *ptr)
{
    NAMELIST *names = FindEnclosedAutos(activeScope);
    WATCHINFO *p = ptr->watchinfo_list;
    int i;
    for (i=0; i < ptr->watchinfo_count; i++)
        if (!strcmp(ptr->watchinfo_list[i].info->membername, "this"))
        {
            WATCHINFO *x = &ptr->watchinfo_list[i];
            int j;
            FreeTree(x->info, ptr);
            FreeVarInfo(x->info);
            for (j = i; j < ptr->watchinfo_count - 1; j++)

            {
                ptr->watchinfo_list[j] = ptr->watchinfo_list[j + 1];
                RenumberDeleteItems(ptr->watchinfo_list[j].info);
            }
            ptr->watchinfo_count--;
            i--;
        }
        else
        {
            p[i].marked = TRUE;
        }
    while (names)
    {
        NAMELIST *next = names->next;
        DEBUG_INFO *dbg;
        VARINFO *var = EvalExpr(&dbg, activeScope, (char*) names->data+1, FALSE);
        if (var)
        {
            AddItem(dbg, var, activeScope->address, ptr);
        }
        free(names->data);
        free(names);
        names = next;
    }
    p = ptr->watchinfo_list;
    for (i=0; i < ptr->watchinfo_count; i++)
        if (p[i].marked)
        {
            WATCHINFO *x = &ptr->watchinfo_list[i];
            int j;
            FreeTree(x->info, ptr);
            FreeVarInfo(x->info);
            for (j = i; j < ptr->watchinfo_count - 1; j++)

            {
                ptr->watchinfo_list[j] = ptr->watchinfo_list[j + 1];
                RenumberDeleteItems(ptr->watchinfo_list[j].info);
            }
            ptr->watchinfo_count--;
            i--;
        }
}
Example #4
0
void
PairHeap<Etype>::FreeTree( PairNode<Etype> * T )
{
    if( T != NULL )
    {
        FreeTree( T->NextSibling );
        FreeTree( T->LeftChild );
        delete T;
    }
}
void
AATree<Etype>::FreeTree( BinaryNode<Etype> * T )
{
    if( T != NullNode )
    {
        FreeTree( T->Left );
        FreeTree( T->Right );
        delete T;
    }
}
static void FreeTree( ExprTree& node )
{
	if(!node)
		return;

	FreeTree(node->left);
	FreeTree(node->right);
	FreeNode(node);
	node = 0;
}
Example #7
0
void FreeTree(TreeNode *node) {
  if (node->child != NULL) {
    FreeTree(node->child);
  }
  if (node->peer != NULL) {
    FreeTree(node->peer);
  }
  if (node->page != NULL) {
    free(node->page);
  }
  free(node);
}
Example #8
0
static void
FreeTree(struct export_tree *tree)
{
	if (tree) {
		if (tree->node) {
			FreeExportNode(tree->node);
		}
		FreeTree(tree->left);
		FreeTree(tree->right);
		free(tree);
	}
}
void FreeTree(HuffmanTreeNode **pTreeHead)
{
    if(*pTreeHead != NULL)
    {
        if((*pTreeHead)->leftChild != NULL)
            FreeTree(&((*pTreeHead)->leftChild));
        if((*pTreeHead)->rightChild != NULL)
            FreeTree(&((*pTreeHead)->rightChild));
        free(*pTreeHead);
        *pTreeHead = NULL;
    }
}
Example #10
0
void FreeTree( pNode * proot )
{
#define root (*proot)
	if( proot == NULL || root == NULL ) {
		return;
	}

	FreeTree( &(root->Left) );
	FreeTree( &(root->Right) );
	delete root;
	root = NULL;
#undef root
}
void FreeTree(NODE *pNode)
{
   if (pNode != NULL)                            
   /* if child exists */
   {
      FreeTree(pNode->left);                     
      /* traverse left */
      FreeTree(pNode->right);                    
      /* traverse right */
      free(pNode->strng);                        
      /* free the string */
      free(pNode);                               
      /* free the node */
   }
}
Example #12
0
static void DeleteItem(POINT *pt, WATCHDATA *ptr)
{
    int i;
    WATCHINFO *x;
    TV_HITTESTINFO t;
    HTREEITEM titem;
    TV_ITEM item;
    VARINFO *v;

    ScreenToClient(ptr->hwndWatchTree, pt);
    t.pt =  *pt;
    titem = TreeView_HitTest(ptr->hwndWatchTree, &t);
    if (titem)
    {
        int c;
        item.mask = TVIF_PARAM;
        item.hItem = titem;
        TreeView_GetItem(ptr->hwndWatchTree, &item);
        v = (VARINFO*)item.lParam;
        x = &ptr->watchinfo_list[c = v->watchindex];
        FreeTree(x->info, ptr);
        FreeVarInfo(x->info);
        for (i = c; i < ptr->watchinfo_count - 1; i++)
        {
            ptr->watchinfo_list[i] = ptr->watchinfo_list[i + 1];
            RenumberDeleteItems(ptr->watchinfo_list[i].info);
        }
        ptr->watchinfo_count--;
    }
}
Example #13
0
File: tree2.c Project: HanaHosoe/c
int main(void) {
    Menu menu;
    BinNode *root;

    root = NULL;
    do {
        BinNode x;
        switch (menu = SelectMenu()) {
            case Insert :x = Read("Insert");
                         root = ApndNode(root,&x);break;
            case Search: x = Read("Search");
                         SrchNode(root,&x); break;
            case Print: puts("----------------");
                        PrintTree(root); break;
            case PrintSub: 
                        x = Read("Insert"); 
                        puts("----------------");
                        PrintSubTree(root, &x); break;

        }
    } while (menu != Term);
    FreeTree(root);

    return(0);
}
Example #14
0
void ExpandPointer(VARINFO *v, int code, int page)
{
    if (v->pointer)
    {
        if (code == TVE_EXPAND)
        {
            int val;
            int outofscope = (val = v->derefaddress) == -1 && !ReadValue(v->address, &val, 4, v) || !val;
            if (!v->subtype && watchinfo_list[page][v->watchindex].dbg_info)
            {
                TreeView_DeleteItem(hwndTree[page], v->hTreeHolder);
                ExpandPointerInfo(watchinfo_list[page][v->watchindex].dbg_info, v);
                if (v->subtype->structure)
                {
                    InsertSubTree(v->hTreeItem, 0, v->subtype->subtype, v->watchindex, page);
                }
                else
                    InsertSubTree(v->hTreeItem, 0, v->subtype, v->watchindex, page);
            }
            RefreshAddresses(v->subtype, val, NULL, outofscope);
            RefreshData(watchinfo_list[page][v->watchindex].dbg_info, v);
        }
        else if (code == TVE_COLLAPSE)
        {
            if (v->subtype)
            {
                FreeTree(v->subtype, page);
                FreeVarInfo(v->subtype);
                v->subtype = 0;
                v->hTreeHolder = InsertItem(v->hTreeItem, TVI_LAST, v, page);
            }
        }
    }
}
int main(int argc, char **argv){
	DIR *d;
	tree = malloc(sizeof(Node));
	tree->left = NULL;
	tree->right = NULL;
	tree->path = NULL;
	tree->name = NULL;
	duplicates = malloc(sizeof(Duplicate));
	duplicates->df = NULL;
	duplicates->next = NULL;

	d = opendir(".");
	if(d != NULL){
		FindFilePath(d, ".", 0);
	}
	else {
		perror("Kluda direktorijas atversana: ");
		return -1;
	}
	d = NULL;

	PrintTreePreOrder(tree);
	FreeTree(tree);
	PrintDuplicates();
	tree = NULL;

	return 0;
}
Example #16
0
/*
 * ProcessSubModel
 */
static void ProcessSubModel(void){
	entity_t *e;
	int start, end;
	tree_t *tree;
	bsp_brush_t *list;
	vec3_t mins, maxs;

	e = &entities[entity_num];

	start = e->first_brush;
	end = start + e->num_brushes;

	mins[0] = mins[1] = mins[2] = -MAX_WORLD_WIDTH;
	maxs[0] = maxs[1] = maxs[2] = MAX_WORLD_WIDTH;
	list = MakeBspBrushList(start, end, mins, maxs);
	if(!nocsg)
		list = ChopBrushes(list);
	tree = BrushBSP(list, mins, maxs);
	MakeTreePortals(tree);
	MarkVisibleSides(tree, start, end);
	MakeFaces(tree->head_node);
	FixTjuncs(tree->head_node);
	WriteBSP(tree->head_node);
	FreeTree(tree);
}
Example #17
0
KeyTextList* LoadKeyTextList(gchar* filename)
{
	KeyTextList* list;
	gchar* pathname = NULL;

	if( !g_keytext_dir || !filename )
		return NULL;

	if( (pathname = CheckFileExists(g_keytext_dir, filename)) == NULL )
		if( (pathname = CheckFileExists("keytext", filename)) == NULL )
			return NULL;

	list = (KeyTextList*)g_malloc(sizeof(KeyTextList));

	if( list != NULL )
	{
		if( (list->tree = CreateTree()) != NULL )
		{
			if( ReadXMLFile(pathname, list->tree) )
			{
				return list;
			}
			FreeTree(list->tree);
		}
		g_free(list);
	}
	return NULL;
}
void FreeTree(UINode* node)
{
	if (node == NULL)
	{
		free(node);
		return;
	}

	if (node->children != NULL){
		for (int i = 0; i < node->childrenCount; i++)
		{
			FreeTree(node->children[i]);
		}
	}
	FreeControl(node->control);
	node->control = NULL;

	free(node->children);
	node->children = NULL;

	node->childrenCount = 0;
	node->childrenSize = 0;
	node->father = NULL;
	node->root = NULL;
	
	free(node);
}
Example #19
0
void DeleteItem(POINT *pt, int page)
{
    int i;
    WATCHINFO *x;
    TV_HITTESTINFO t;
    HTREEITEM titem;
    TV_ITEM item;
    VARINFO *v;

    ScreenToClient(hwndTree[page], pt);
    t.pt =  *pt;
    titem = TreeView_HitTest(hwndTree[page], &t);
    if (titem)
    {
        int c;
        item.mask = TVIF_PARAM;
        item.hItem = titem;
        TreeView_GetItem(hwndTree[page], &item);
        v = (VARINFO*)item.lParam;
        x = &watchinfo_list[page][c = v->watchindex];
        FreeTree(x->info, page);
        FreeVarInfo(x->info);
        for (i = c; i < watchinfo_count[page] - 1; i++)
        {
            watchinfo_list[page][i] = watchinfo_list[page][i + 1];
            RenumberDeleteItems(watchinfo_list[page][i].info);
        }
        watchinfo_count[page]--;
    }
}
Example #20
0
/*
================
FreeDMapFile
================
*/
void FreeDMapFile( void )
{
    int		i, j;

    FreeBrush( buildBrush );
    buildBrush = NULL;

    // free the entities and brushes
    for( i = 0; i < dmapGlobals.num_entities; i++ )
    {
        uEntity_t	*ent;
        primitive_t	*prim, *nextPrim;

        ent = &dmapGlobals.uEntities[i];

        FreeTree( ent->tree );

        // free primitives
        for( prim = ent->primitives; prim; prim = nextPrim )
        {
            nextPrim = prim->next;

            if( prim->brush )
            {
                FreeBrush( prim->brush );
            }

            if( prim->tris )
            {
                FreeTriList( prim->tris );
            }
            Mem_Free( prim );
        }

        // free area surfaces
        if( ent->areas )
        {
            for( j = 0; j < ent->numAreas; j++ )
            {
                uArea_t	*area;

                area = &ent->areas[j];
                FreeOptimizeGroupList( area->groups );

            }
            Mem_Free( ent->areas );
        }
    }
    Mem_Free( dmapGlobals.uEntities );

    dmapGlobals.num_entities = 0;

    // free the map lights
    for( i = 0; i < dmapGlobals.mapLights.Num(); i++ )
    {
        R_FreeLightDefDerivedData( &dmapGlobals.mapLights[i]->def );
    }
    dmapGlobals.mapLights.DeleteContents( true );
}
Example #21
0
void FreeTree(Tree *t) {
 Tree *b;

 while(t->branches) {b=t->branches; t->branches=b->next; FreeTree(b);}

 free(t);

}
Example #22
0
void destroyTree(int *result) {

 error=OK;

 if(current) {FreeTree(current); current=NULL;}

 *result=error;

}
Example #23
0
// Free entire parse tree, using this node as the root
void FreeTree(struct tree_node* pNode)
{
    // Recursively free any non-NULL operands
	if (pNode != NULL)
	{
		int i;
		FreeTree(pNode->pNextStatement);

		for (i = 0; i < pNode->numOperands; i++)
			FreeTree(pNode->operands[i]);
		free(pNode->operands);

		if (pNode->sval != NULL)
			free(pNode->sval);

		free(pNode);
	}
}
Example #24
0
void FreeTree(VARINFO *info, int page)
{
    while (info)
    {
        FreeTree(info->subtype, page);
        if (info->hTreeItem)
            TreeView_DeleteItem(hwndTree[page], info->hTreeItem);
        info = info->link;
    }
}
Example #25
0
static void FreeTree(VARINFO *info, WATCHDATA *ptr)
{
    while (info)
    {
        FreeTree(info->subtype, ptr);
        if (info->hTreeItem)
            TreeView_DeleteItem(ptr->hwndWatchTree, info->hTreeItem);
        info = info->link;
    }
}
Example #26
0
/*
============
ProcessSubModel

============
*/
void ProcessSubModel( void ) {
	entity_t	*e;
	tree_t		*tree;
	bspbrush_t	*b, *bc;
	node_t		*node;

	BeginModel ();

	e = &entities[entity_num];
	e->firstDrawSurf = numMapDrawSurfs;

	PatchMapDrawSurfs( e );

	// just put all the brushes in an empty leaf
	// FIXME: patches?
	node = AllocNode();
	node->planenum = PLANENUM_LEAF;
	for ( b = e->brushes ; b ; b = b->next ) {
		bc = CopyBrush( b );
		bc->next = node->brushlist;
		node->brushlist = bc;
	}

	tree = AllocTree();
	tree->headnode = node;

	ClipSidesIntoTree( e, tree );

	// subdivide each drawsurf as required by shader tesselation or fog
	if ( !nosubdivide ) {
		SubdivideDrawSurfs( e, tree );
	}

	// merge together all common shaders on the same plane and remove 
	// all colinear points, so extra tjunctions won't be generated
	if ( !nomerge ) {
		MergeSides( e, tree );		// !@# testing
	}

	// add in any vertexes required to fix tjunctions
	if ( !notjunc ) {
		FixTJunctions( e );
	}

	// allocate lightmaps for faces and patches
	AllocateLightmaps( e );

	// add references to the final drawsurfs in the apropriate clusters
	FilterDrawsurfsIntoTree( e, tree );

	EndModel ( node );

	FreeTree( tree );
}
Example #27
0
void FreeTree(WORD *W)
{
  if(NULL != W)
  {
    if(NULL != W->Word)
    { 
      free(W->Word);
      W->Word = NULL;
    }
    if(NULL != W->Left)
    {
      FreeTree(W->Left);
      W->Left = NULL;
    }
    if(NULL != W->Right)
    {
      FreeTree(W->Right);
      W->Right = NULL;
    }
  }
}
Example #28
0
/*
============
ProcessSubModel

============
*/
void ProcessSubModel( )
{
	entity_t	*e;
	int			start, end;
	tree_t		*tree;
	bspbrush_t	*list;
	Vector		mins, maxs;

	e = &entities[entity_num];

	start = e->firstbrush;
	end = start + e->numbrushes;

	mins[0] = mins[1] = mins[2] = MIN_COORD_INTEGER;
	maxs[0] = maxs[1] = maxs[2] = MAX_COORD_INTEGER;
	list = MakeBspBrushList (start, end, mins, maxs, FULL_DETAIL);

	if (!nocsg)
		list = ChopBrushes (list);
	tree = BrushBSP (list, mins, maxs);
	
	// This would wind up crashing the engine because we'd have a negative leaf index in dmodel_t::headnode.
	if ( tree->headnode->planenum == PLANENUM_LEAF )
	{
		const char *pClassName = ValueForKey( e, "classname" );
		const char *pTargetName = ValueForKey( e, "targetname" );
		Error( "bmodel %d has no head node (class '%s', targetname '%s')", entity_num, pClassName, pTargetName );
	}

	MakeTreePortals (tree);
	
#if DEBUG_BRUSHMODEL
	if ( entity_num == DEBUG_BRUSHMODEL )
		WriteGLView( tree, "tree_all" );
#endif

	MarkVisibleSides (tree, start, end, FULL_DETAIL);
	MakeFaces (tree->headnode);

	FixTjuncs( tree->headnode, NULL );
	WriteBSP( tree->headnode, NULL );
	
#if DEBUG_BRUSHMODEL
	if ( entity_num == DEBUG_BRUSHMODEL )
	{
		WriteGLView( tree, "tree_vis" );
		WriteGLViewFaces( tree, "tree_faces" );
	}
#endif

	FreeTree (tree);
}
void GetFileHuffmanCode(FILE *fp, DataCode dataCodeArr[CODE_SIZE])
{
    HuffmanTreeNode *pTreeHead = NULL;
    UINT freqArr[CODE_SIZE];
    UCHAR code[CODE_SIZE];

    GetDataFreq(fp, freqArr);
    BuildHuffmanTree(&pTreeHead, freqArr);
    memset(dataCodeArr, 0, sizeof(DataCode) * CODE_SIZE);
    memset(code, 0, UCHAR_SIZE * CODE_SIZE);
    GetHuffmanCode(pTreeHead, code, 0, dataCodeArr);
    FreeTree(&pTreeHead);
}
Example #30
0
void buildTreeFromPhylo(
 int *lowerNodes,
 int *upperNodes,
 double *edgeLengths,
 int *nedges,
 char **tipLabels,
 int *ntips,
 int *result
) {

 error=OK;

 if(current) {FreeTree(current); current=NULL;}

 if(*nedges<2||*ntips<2) {error=ERROR; *result=error; return;}

 current=buildTreeFromPhylo_(-1,lowerNodes,upperNodes,edgeLengths,*nedges,tipLabels,*ntips);

 if(error&&current) {FreeTree(current); current=NULL;}

 *result=error;

}