|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 7416 (0x1cf8)
Types: TextFile
Names: »tree.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z«
└─⟦2109abc41⟧
└─⟦this⟧ »./X.V10R4/Toolkit/Xr/src/Xrlib/Intrinsic/tree.c«
/*
* $Source: /u1/Xr/src/Xrlib/Intrinsic/RCS/tree.c,v $
* $Header: tree.c,v 1.1 86/12/17 09:09:33 swick Exp $
*/
#ifndef lint
static char *rcsid_tree_c = "$Header: tree.c,v 1.1 86/12/17 09:09:33 swick Exp $";
#endif lint
#include <Xr/xr-copyright.h>
/* $Header: tree.c,v 1.1 86/12/17 09:09:33 swick Exp $ */
/* Copyright 1986, Hewlett-Packard Company */
/* Copyright 1986, Massachussetts Institute of Technology */
static char rcsid[] = "$Header: tree.c,v 1.1 86/12/17 09:09:33 swick Exp $";
/*************************************<+>*************************************
*****************************************************************************
**
** File: tree.c
**
** Project: X-ray Toolbox
**
** Description: The resource manager tree handling routines.
**
**
** ------------------------ MODIFICATION RECORD ------------------------
*
* $Log: tree.c,v $
* Revision 1.1 86/12/17 09:09:33 swick
* Initial revision
*
* Revision 7.0 86/11/13 08:21:59 08:21:59 rick ()
* Final QA release
*
* Revision 6.0 86/11/10 15:22:58 15:22:58 rick ()
* QA #2 release
*
* Revision 5.1 86/11/07 14:02:42 14:02:42 rick ()
* Added the copyright message.
*
* Revision 5.0 86/10/28 08:23:39 08:23:39 rick ()
* QA #1.1 release
*
* Revision 4.0 86/10/20 12:09:38 12:09:38 rick ()
* QA 1 release
*
* Revision 3.2 86/10/17 12:24:12 12:24:12 rick ()
* Linted
*
* Revision 3.1 86/10/16 11:21:19 11:21:19 rick ()
* Added register variables.
*
* Revision 3.0 86/10/02 15:59:26 15:59:26 rick ()
* Alpha release set to 3.0
*
* Revision 2.0 86/09/16 08:03:58 08:03:58 rick ()
* *** empty log message ***
*
* Revision 1.1 86/09/03 13:35:20 13:35:20 rick ()
* Initial revision
*
*
*****************************************************************************
*************************************<+>*************************************/
#include <X/Xlib.h>
#include <Xr/defs.h>
#include <Xr/types.h>
\f
/*************************************<->*************************************
*
* _XrTreeSearch (resourceId, parentLink, node)
* INT32 resourceId;
* xrResource ** parentLink;
* xrResource ** node;
*
*
* Description:
* -----------
* _XrTreeSearch() provides for the retrieval of a specific resource
* from the resource tree pointed at by the parameter parent.
*
*
* Inputs:
* ------
* resourceId = The identifier for the resource to be found.
*
* parent = The pointer to the variable which contains the
* pointer to the head of the tree. It will be set
* to point to the member of the parent node which
* points at the located resource.
*
* node = Used for return information, node will be set to
* point to the resource that is found.
*
*
* Outputs:
* -------
* TRUE = Returned as the value of the function if the
* resource is found.
*
* FALSE = Returned as the value of the function if the
* resource is not found.
*
* parentLink = set to point at the member of the parent node
* which contains the pointer to the located resource
* It will be invalid if the resource is not found.
*
*
* Procedures Called
* -----------------
* None
*
*************************************<->***********************************/
xrResource *
_XrTreeSearch (resourceId, parentLink)
INT32 resourceId;
register xrResource *** parentLink;
{
register xrResource * node;
node = **parentLink;
while (node != NULL)
{
if (resourceId < node -> resourceId)
{
*parentLink = &(node -> left);
node = node -> left;
}
else if (resourceId > node -> resourceId)
{
*parentLink = &(node -> right);
node = node -> right;
}
else
return (node);
}
return (NULL);
}
\f
/*************************************<->*************************************
*
* _XrTreeInsert (parentLink, node)
* xrResource ** parentLink;
* xrResource * node;
*
*
* Description:
* -----------
* _XrTreeInsert() adds resource into the tree as a child of parent.
*
*
* Inputs:
* ------
* parentLink = The pointer to the variable which contains the
* pointer to the location in the tree where the
* resource is to be added.
*
* node = A pointer to the resoruce structure to be added.
*
*
* Outputs:
* -------
* None
*
*
* Procedures Called
* -----------------
* None
*
*************************************<->***********************************/
_XrTreeInsert (parentLink, node)
xrResource ** parentLink;
xrResource * node;
{
*parentLink = node;
}
\f
/*************************************<->*************************************
*
* _XrTreeDelete (parentLink, node)
* xrResource ** parentLink;
* xrResource * node;
*
*
* Description:
* -----------
* _XrTreeDelete() removes a resource pointed at by node
* from the resource tree.
*
*
* Inputs:
* ------
* parentLink = The pointer to the member of the parent of the
* resource to be removed which contains the pointer
* to the resourse.
*
* node = Pointer to the resource to be removed.
*
*
* Outputs:
* -------
* None
*
*
* Procedures Called
* -----------------
* None
*
*************************************<->***********************************/
_XrTreeDelete (parentLink, node)
register xrResource ** parentLink;
register xrResource * node;
{
register xrResource * rPtr;
register xrResource * sPtr;
if (node -> right == NULL)
*parentLink = node -> left;
else if (node -> left == NULL)
*parentLink = node -> right;
else
{
rPtr = node -> right;
if (rPtr -> left == NULL)
{
rPtr -> left = node -> left;
*parentLink = rPtr;
}
else
{
sPtr = rPtr -> left;
while (sPtr -> left != NULL)
{
rPtr = sPtr;
sPtr = rPtr -> left;
}
sPtr -> left = node -> left;
rPtr -> left = sPtr -> right;
sPtr -> right = node -> right;
*parentLink = sPtr;
}
}
}
\f
/*************************************<->*************************************
*
* _XrTreeDump (ptr)
* xrResource * node;
*
*
* Description:
* -----------
* _XrTreeDump() is a temporary routine used to print out the
* contents of a tree starting as the resource pointed at by node.
*
*
* Inputs:
* ------
* node = pointer to the resource which is the starting point for
* the dump.
*
*
* Outputs:
* -------
* All of the resources starting at node will be printed.
*
*
* Procedures Called
* -----------------
* None
*
*************************************<->***********************************/
_XrDumpTree (ptr)
xrResource * ptr;
{
if (ptr == NULL)
return;
if (ptr -> left != NULL)
_XrDumpTree (ptr -> left);
printf ("resourceId = %d, ptr = %d\n", ptr -> resourceId, ptr);
if (ptr -> right != NULL)
_XrDumpTree (ptr -> right);
return;
}