DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T t

⟦074a01710⟧ TextFile

    Length: 2328 (0x918)
    Types: TextFile
    Names: »tree_struct.c«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« 
        └─⟦de7628f85⟧ 
            └─⟦this⟧ »isode-6.0/dsap/common/tree_struct.c« 

TextFile

/* tree_struct.c - Tree Structure utility routines */

#ifndef lint
static char *rcsid = "$Header: /f/osi/dsap/common/RCS/tree_struct.c,v 7.0 89/11/23 21:44:39 mrose Rel $";
#endif

/*
 * $Header: /f/osi/dsap/common/RCS/tree_struct.c,v 7.0 89/11/23 21:44:39 mrose Rel $
 *
 *
 * $Log:	tree_struct.c,v $
 * Revision 7.0  89/11/23  21:44:39  mrose
 * Release 6.0
 * 
 */

/*
 *                                NOTICE
 *
 *    Acquisition, use, and distribution of this module and related
 *    materials are subject to the restrictions of a license agreement.
 *    Consult the Preface in the User's Manual for the full terms of
 *    this agreement.
 *
 */


/* LINTLIBRARY */

#include "quipu/util.h"
#include "quipu/entry.h"

extern int oidformat;

/* ARGSUSED */
static tree_struct_free (ptr)
struct tree_struct * ptr;
{
	/* don't free objectclass - in static table */
	;
}


static struct tree_struct * tree_struct_cpy (a)
struct tree_struct * a;
{
struct tree_struct * result;

	result = tree_struct_alloc ();
	result->tree_object = a->tree_object;
	return (result);
}

static tree_struct_cmp (a,b)
struct tree_struct * a, *b;
{
	if (a == NULLTREE)
		return (b==NULLTREE ? 0 : -1 );

	if (b == NULLTREE)
		return (1);

	return (  objclass_cmp(a->tree_object,b->tree_object));
}


/* ARGSUSED */
static tree_struct_print (ps,tree,format)
register PS ps;
struct   tree_struct * tree;
int format;
{
	ps_printf (ps,"%s",oc2name(tree->tree_object,oidformat));
}


static struct tree_struct * str2schema (str)
char * str;
{
struct tree_struct * ts;

	ts = tree_struct_alloc ();
	if ((ts->tree_object = name2oc(str)) == NULLOBJECTCLASS) {
		parse_error ("invalid oid in schema '%s'",str);
		free ((char *) ts);
		return (NULLTREE);
	}
	return (ts);
}

static PE ts_enc (ts)
struct tree_struct * ts;
{
PE ret_pe;

        (void) encode_Quipu_TreeStructureSyntax(&ret_pe,0,0,NULLCP,ts);

	return (ret_pe);
}

static struct tree_struct * ts_dec (pe)
PE pe;
{
struct tree_struct * ts;

	if (decode_Quipu_TreeStructureSyntax(pe,1,NULLIP,NULLVP,&ts) == NOTOK) 
		return (struct tree_struct *)NULL;

	return (ts);
}

schema_syntax ()
{
	(void) add_attribute_syntax ("schema",
		(IFP) ts_enc,		(IFP) ts_dec,
		(IFP) str2schema,	tree_struct_print,
		(IFP) tree_struct_cpy,	tree_struct_cmp,
		tree_struct_free,	NULLCP,
		NULLIFP,		FALSE );
}