a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/*
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * CDDL HEADER START
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms of the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Common Development and Distribution License, Version 1.0 only
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the "License"). You may not use this file except in compliance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * or http://www.opensolaris.org/os/licensing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing permissions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL HEADER in each
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below this CDDL HEADER, with the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * fields enclosed by brackets "[]" replaced with your own identifying
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * information: Portions Copyright [yyyy] [name of copyright owner]
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * CDDL HEADER END
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/*
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * db_query_c.x
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Use is subject to license terms.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#pragma ident "%Z%%M% %I% %E% SMI"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#if RPC_HDR
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#ifndef _DB_QUERY_H
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#define _DB_QUERY_H
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* db_query is the structure that contains the components of a query.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% It contains the values for searching the indices. */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#ifdef USINGC
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#include "db_item_c.h"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#include "db_entry_c.h"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#include "db_scheme_c.h"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#else
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#include "db_item.h"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#include "db_entry.h"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#include "db_scheme.h"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#endif /* USINGC */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#endif /* RPC_HDR */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* A component of a query */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterstruct db_qcomp {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int which_index; /* identifies which index is being used */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster item* index_value; /* value to be used in search */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#if RPC_HDR || RPC_XDR
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#ifdef USINGC
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterstruct db_query {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster db_qcomp components<>;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#endif /* USINGC */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#endif /* RPC_HDR */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#ifndef USINGC
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#ifdef RPC_HDR
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%class db_query {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%protected:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% int num_components;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% db_qcomp* components;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% public:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* Accessor: returns number of components */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% int size() { return num_components; }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* Accessor: returns location of start of query */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% db_qcomp* queryloc() { return components; }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* Null constructor: returns empty empty query. */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% db_query() { num_components = 0; components = NULL; }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* Returns a db_query containing the index values as obtained from
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% 'attrlist.' */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% db_query( db_scheme*, int, nis_attr* );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* Returns a newly db_query containing the index values as
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% obtained from the given object. The object itself,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% along with information on the scheme given, will determine
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% which values are extracted from the object and placed into the query.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% Returns an empty query if 'obj' is not a valid entry.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% Note that space is allocated for the query and the index values
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% (i.e. do not share pointers with strings in 'obj'.)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%*/
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% db_query( db_scheme*, entry_object_p );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% /* destructor (frees all components) */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% ~db_query();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% /* clear component structure */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% void clear_components( int );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%/* Print all components of this query to stdout. */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster% void print();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%typedef class db_query * db_query_p;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#endif /* RPC_HDR */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#endif /* USINGC */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#if RPC_HDR
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%#endif /* _DB_QUERY_H */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster#endif /* RPC_HDR */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster