da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1985-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* http://www.opensource.org/licenses/cpl1.0.txt *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Phong Vo <kpv@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _DTHDR_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _DTHDR_H 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _BLD_cdt
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _BLD_cdt 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* Internal definitions for libcdt.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin** Written by Kiem-Phong Vo (5/25/96)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _PACKAGE_ast
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <cdt.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* short-hand notations */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NIL(t) ((t)0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define reg register
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define uint unsigned int
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define left hl._left
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define hash hl._hash
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define htab hh._htab
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define head hh._head
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* this must be disjoint from DT_METHODS */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define DT_FLATTEN 010000 /* dictionary already flattened */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define DT_WALK 020000 /* hash table being walked */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* how the Dt_t handle was allocated */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define DT_MALLOC 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define DT_MEMORYF 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* max search length before splaying */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define DT_MINP (sizeof(size_t)*8 - 2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* hash start size and load factor */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define HSLOT (256)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define HRESIZE(n) ((n) << 1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define HLOAD(s) ((s) << 1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define HINDEX(n,h) ((h)&((n)-1))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define UNFLATTEN(dt) \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ((dt->data->type&DT_FLATTEN) ? dtrestore(dt,NIL(Dtlink_t*)) : 0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* tree rotation/linking functions */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define rrotate(x,y) ((x)->left = (y)->right, (y)->right = (x))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define lrotate(x,y) ((x)->right = (y)->left, (y)->left = (x))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define rlink(r,x) ((r) = (r)->left = (x) )
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define llink(l,x) ((l) = (l)->right = (x) )
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define RROTATE(x,y) (rrotate(x,y), (x) = (y))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LROTATE(x,y) (lrotate(x,y), (x) = (y))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !_PACKAGE_ast
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin_BEGIN_EXTERNS_
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern Void_t* malloc _ARG_((size_t));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern Void_t* realloc _ARG_((Void_t*, size_t));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern void free _ARG_((Void_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin_END_EXTERNS_
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif /* _DTHDR_H */