text: /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
   *
   * THE BSD LICENSE
   *
   * Redistribution and use in source and binary forms, with or without 
   * modification, are permitted provided that the following conditions are met:
   *
   * Redistributions of source code must retain the above copyright notice, this
   * list of conditions and the following disclaimer. 
   * Redistributions in binary form must reproduce the above copyright notice, 
   * this list of conditions and the following disclaimer in the documentation
   * and/or other materials provided with the distribution. 
   *
   * Neither the name of the  nor the names of its contributors may be
   * used to endorse or promote products derived from this software without 
   * specific prior written permission. 
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 
   * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
   * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
   * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
  /*
   * Copyright (c) 1991, 1993
   *	The Regents of the University of California.  All rights reserved.
   *
   * This code is derived from software contributed to Berkeley by
   * Berkeley Software Design, Inc.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   * 3. All advertising materials mentioning features or use of this software
   *    must display the following acknowledgement:
   *	This product includes software developed by the University of
   *	California, Berkeley and its contributors.
   * 4. Neither the name of the University nor the names of its contributors
   *    may be used to endorse or promote products derived from this software
   *    without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
   *	@(#)cdefs.h	8.7 (Berkeley) 1/21/94
   */
  
  #ifndef	_CDEFS_H_
  #define	_CDEFS_H_
  
  #if defined(__cplusplus)
  #define	__BEGIN_DECLS	extern "C" {
  #define	__END_DECLS	};
  #else
  #define	__BEGIN_DECLS
  #define	__END_DECLS
  #endif
  
  /*
   * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
   * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
   * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
   * in between its arguments.  __CONCAT can also concatenate double-quoted
   * strings produced by the __STRING macro, but this only works with ANSI C.
   */
  #if defined(__STDC__) || defined(__cplusplus)
  #define	__P(protos)	protos		/* full-blown ANSI C */
  #define	__CONCAT(x,y)	x ## y
  #define	__STRING(x)	#x
  
  #define	__const		const		/* define reserved names to standard */
  #define	__signed	signed
  #define	__volatile	volatile
  #if defined(__cplusplus)
  #define	__inline	inline		/* convert to C++ keyword */
  #else
  #ifndef __GNUC__
  #define	__inline			/* delete GCC keyword */
  #endif /* !__GNUC__ */
  #endif /* !__cplusplus */
  
  #else	/* !(__STDC__ || __cplusplus) */
  #define	__P(protos)	()		/* traditional C preprocessor */
  #define	__CONCAT(x,y)	x/**/y
  #define	__STRING(x)	"x"
  
  #ifndef __GNUC__
  #define	__const				/* delete pseudo-ANSI C keywords */
  #define	__inline
  #define	__signed
  #define	__volatile
  /*
   * In non-ANSI C environments, new programs will want ANSI-only C keywords
   * deleted from the program and old programs will want them left alone.
   * When using a compiler other than gcc, programs using the ANSI C keywords
   * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
   * When using "gcc -traditional", we assume that this is the intent; if
   * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
   */
  #ifndef	NO_ANSI_KEYWORDS
  #define	const				/* delete ANSI C keywords */
  #define	inline
  #define	signed
  #define	volatile
  #endif
  #endif	/* !__GNUC__ */
  #endif	/* !(__STDC__ || __cplusplus) */
  
  /*
   * GCC1 and some versions of GCC2 declare dead (non-returning) and
   * pure (no side effects) functions using "volatile" and "const";
   * unfortunately, these then cause warnings under "-ansi -pedantic".
   * GCC2 uses a new, peculiar __attribute__((attrs)) style.  All of
   * these work for GNU C++ (modulo a slight glitch in the C++ grammar
   * in the distribution version of 2.5.5).
   */
  #if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5
  #define	__attribute__(x)	/* delete __attribute__ if non-gcc or gcc1 */
  #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
  #define	__dead		__volatile
  #define	__pure		__const
  #endif
  #endif
  
  /* Delete pseudo-keywords wherever they are not available or needed. */
  #ifndef __dead
  #define	__dead
  #define	__pure
  #endif
  
  #endif /* !_CDEFS_H_ */
  