1/* 2 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6/* 7 * Copyright 1994 James Clark 8 * See the file COPYING for copying permission. 9 */ 10 11#pragma ident "%Z%%M% %I% %E% SMI" 12 13#ifndef _MODEINFO_H 14#define _MODEINFO_H 15 16#ifndef ModeInfo_INCLUDED 17#define ModeInfo_INCLUDED 1 18#ifdef __GNUG__ 19#pragma interface 20#endif 21 22#include <stdlib.h> 23#include "Boolean.h" 24#include "Syntax.h" 25#include "Mode.h" 26#include "Priority.h" 27 28#ifdef SP_NAMESPACE 29namespace SP_NAMESPACE { 30#endif 31 32struct TokenInfo { 33 enum Type { 34 delimType, 35 setType, 36 functionType, 37 delimDelimType, 38 delimSetType 39 }; 40 Type type; 41 Priority::Type priority; 42 Token token; 43 Syntax::DelimGeneral delim1; 44 union { 45 Syntax::DelimGeneral delim2; 46 Syntax::Set set; 47 Syntax::StandardFunction function; 48 }; 49}; 50 51class Sd; 52struct PackedTokenInfo; 53 54class ModeInfo { 55public: 56 ModeInfo(Mode mode, const Sd &sd); 57 Boolean nextToken(TokenInfo *); 58 Boolean includesShortref() const; 59private: 60 Mode mode_; 61 const PackedTokenInfo *p_; // points to next 62 size_t count_; 63 unsigned missingRequirements_; 64}; 65 66inline Boolean ModeInfo::includesShortref() const 67{ 68 return (mode_ >= (enum Mode) minShortrefMode); 69} 70 71#ifdef SP_NAMESPACE 72} 73#endif 74 75#endif /* not ModeInfo_INCLUDED */ 76 77#endif /* _MODEINFO_H */ 78