/* Copyright 1989-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
/*****************************************************************************\
*                                                                             *
* KLKO                                                                        *
* BODY                                                                        *
*                                                                             *
\*****************************************************************************/
/* Klone Klonable Objects
 */
#include "EXTERN.h"
#include "klone.h"
#include "kl_number.h"
#include "kl_atom.h"
#include "kl_list.h"
#include "kl_coll.h"
#include "kl_string.h"
#include "kl_stream.h"
#include "INTERN.h"
#include "klko.h"

/*****************************************************************************\
* 				    Fields                                    *
\*****************************************************************************/
/* returns index of fields, allocating it if necessary
 */
Int
KlKoNumOfField(field)
    KlAtom field;
{
#ifdef KLKO_IMPLEMENTED
    register KlAtom *p;
    for (p = KlKoFields; p < KlKoFieldsLast; p++) {
	if (*p == field)
	    return (p - KlKoFields);
    }
    /* not found, we must append it */
    if (KlKoFields) {
	KlKoFields = (KlAtom *) Realloc(
	    KlKoFields, ((KlKoFieldsLast - KlKoFields) + 1)  * KLSO);
    } else {
	KlKoFields = (KlAtom *) Malloc(KLSO);
	KlKoFieldsLast = KlKoFields;
    }
    KlIncRef(*KlKoFieldsLast++ = field);
    return (KlKoFieldsLast - KlKoFields) - 1;
#else /* !KLKO_IMPLEMENTED */
    return 0;
#endif /* !KLKO_IMPLEMENTED */
}

/*****************************************************************************\
* 				     INIT                                     *
\*****************************************************************************/

KlKoInit()
{
    
}


syntax highlighted by Code2HTML, v. 0.9.1