OpenSolaris_b135/tools/lintdump/lnstuff.h

Compare this file to the similar file:
Show the results in this format:

/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*	Copyright (c) 1989 AT&T					*/
/*	  All Rights Reserved  					*/

/*
 *	Based on @(#)lnstuff.h 1.5 02/06/05 from lint
 */

#pragma ident	"%Z%%M%	%I%	%E% SMI"

#ifndef	LNSTUFF_H
#define	LNSTUFF_H

#include <sys/types.h>

#define	LDI 01		/* defined and initialized: storage set aside	*/
#define	LIB 02		/* defined on a library				*/
#define	LDC 04		/* defined as a common region on UNIX		*/
#define	LDX 010		/* defined by an extern: if ! pflag, same as LDI */
#define	LRV 020		/* function returns a value			*/
#define	LUV 040		/* function used in a value context		*/
#define	LUE 0100	/* function used in effects context		*/
#define	LUM 0200	/* mentioned somewhere other than at the declaration */
#define	LDS 0400	/* defined static object (like LDI)		*/
#define	LFN 01000	/* filename record				*/
#define	LSU 02000	/* struct/union def				*/
#define	LPR 04000	/* prototype declaration			*/
#define	LND 010000	/* end module marker				*/
#define	LPF 020000	/* printf like					*/
#define	LSF 040000	/* scanf like					*/

#define	LNQUAL		00037		/* type w/o qualifiers		*/
#define	LNUNQUAL	0174000		/* remove type, keep other info */
#define	LCON		(1<<15)		/* type qualified by const	*/
#define	LVOL		(1<<14)		/* type qualified by volatile	*/
#define	LNOAL		(1<<13)		/* not used */
#define	LCONV		(1<<12)		/* type is an integer constant	*/
#define	LPTR		(1<<11)		/* last modifier is a pointer	*/
#define	LINTVER		4

typedef unsigned long T1WORD;
typedef long FILEPOS;
typedef short TY;

typedef struct flens {
	long		f1, f2, f3, f4;
	unsigned short	ver, mno;
} FLENS;

typedef struct {
	TY		aty;		/* base type			*/
	unsigned long	dcl_mod;	/* ptr/ftn/ary modifiers	*/
	unsigned short	dcl_con;	/* const qualifiers		*/
	unsigned short	dcl_vol;	/* volatile qualifiers		*/
	union {
		T1WORD	ty;
		FILEPOS	pos;
	} extra;
} ATYPE;

typedef struct {
	short		decflag;	/* what type of record is this	*/
	short		nargs;		/* # of args (or members)	*/
	int		fline;		/* line defined/used in		*/
	ATYPE		type;		/* type information		*/
} LINE;

union rec {
	LINE l;
	struct {
		short decflag;
		char *fn;
	} f;
};

/* type modifiers */
#define	LN_TMASK 3
#define	LN_ISPTR(x)	(((x)&LN_TMASK) == 1)  /* is x a pointer type */
#define	LN_ISFTN(x)	(((x)&LN_TMASK) == 2)  /* is x a function type */
#define	LN_ISARY(x)	(((x)&LN_TMASK) == 3)  /* is x an array type */

/* type numbers for pass2 */
#define	LN_STRUCT	21	/* generic struct */
#define	LN_UNION	22	/* generic union */

#endif	/* LNSTUFF_H */