/* $Id: d1_attset.h,v 1.2 2002/10/22 13:19:50 adam Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
Index Data Aps
This file is part of the Zebra server.
Zebra is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with Zebra; see the file LICENSE.zebra. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
#ifndef D1_ATTSET_H
#define D1_ATTSET_H
#include <yaz/oid.h>
YAZ_BEGIN_CDECL
/*
* This structure describes a attset, perhaps made up by inclusion
* (supersetting) of other attribute sets. When indexing and searching,
* we perform a normalisation, where we associate a given tag with
* the set that originally defined it, rather than the superset. This
* allows the most flexible access. Eg, the tags common to GILS and BIB-1
* should be searchable by both names.
*/
struct data1_attset;
typedef struct data1_local_attribute
{
int local;
struct data1_local_attribute *next;
} data1_local_attribute;
typedef struct data1_attset data1_attset;
typedef struct data1_att data1_att;
typedef struct data1_attset_child data1_attset_child;
struct data1_att
{
data1_attset *parent; /* attribute set */
char *name; /* symbolic name of this attribute */
int value; /* attribute value */
data1_local_attribute *locals; /* local index values */
data1_att *next;
};
struct data1_attset_child {
data1_attset *child;
data1_attset_child *next;
};
struct data1_attset
{
char *name; /* symbolic name */
oid_value reference; /* external ID of attset */
data1_att *atts; /* attributes */
data1_attset_child *children; /* included attset */
data1_attset *next; /* next in cache */
};
typedef struct data1_handle_info *data1_handle;
YAZ_EXPORT data1_att *data1_getattbyname(data1_handle dh, data1_attset *s,
char *name);
YAZ_EXPORT data1_attset *data1_read_attset(data1_handle dh, const char *file);
YAZ_EXPORT data1_attset *data1_empty_attset(data1_handle dh);
YAZ_END_CDECL
#endif
syntax highlighted by Code2HTML, v. 0.9.1