158               CpreprocessorUnknownDeclaration,
 
  162               CplusplusStyleComment,
 
  173               CpreprocessorBlankLine,
 
  176               CpreprocessorIncludeDeclaration,
 
  177               CpreprocessorIncludeNextDeclaration,
 
  178               CpreprocessorDefineDeclaration,
 
  179               CpreprocessorUndefDeclaration,
 
  180               CpreprocessorIfdefDeclaration,
 
  181               CpreprocessorIfndefDeclaration,
 
  182               CpreprocessorIfDeclaration,
 
  183               CpreprocessorDeadIfDeclaration,
 
  184               CpreprocessorElseDeclaration,
 
  185               CpreprocessorElifDeclaration,
 
  186               CpreprocessorEndifDeclaration,
 
  187               CpreprocessorElsifDeclaration,  
 
  188               CpreprocessorEnd_ifDeclaration, 
 
  189               CpreprocessorLineDeclaration,
 
  190               CpreprocessorErrorDeclaration,
 
  193               CpreprocessorWarningDeclaration,
 
  194               CpreprocessorEmptyDeclaration,
 
  213               ClinkageSpecificationStart,
 
  214               ClinkageSpecificationEnd,
 
  217               CpreprocessorIdentDeclaration,
 
  229               CpreprocessorCompilerGeneratedLinemarker,
 
  253          std::string internalString;
 
  258          DirectiveType whatSortOfDirective;
 
  264          int lineNumberForCompilerGeneratedLinemarker;
 
  265          std::string filenameForCompilerGeneratedLinemarker;
 
  266          std::string optionalflagsForCompilerGeneratedLinemarker;
 
  273          bool p_isTransformation;
 
  289#ifndef ROSE_SKIP_COMPILATION_OF_WAVE 
  293          token_container* tokenStream;
 
  300               token_type directive;
 
 
  309               bool is_functionlike;
 
  311               token_type macro_name;
 
  312               token_container paramaters;
 
  313               token_list_container definition;
 
  314               r_macro_def() : macro_name(), paramaters(),definition() {}
 
 
  321          typedef struct r_macro_call
 
  323               bool is_functionlike;
 
  325               token_type macro_call;
 
  326               token_container_container arguments;
 
  327               token_container expanded_macro;
 
  330               std::string get_expanded_string()
 
  332                    std::ostringstream os;
 
  333                    token_container::const_iterator iter;
 
  334                    for (iter=expanded_macro.begin(); iter!=expanded_macro.end(); iter++)
 
  335                         os << (*iter).get_value();
 
  339               r_macro_call() : macro_call(), arguments(),expanded_macro() {}
 
  345               bool is_functionlike;
 
  347               token_type macro_call;
 
  348               token_container_container arguments;
 
  349               token_container expanded_macro;
 
  353               std::string get_expanded_string();
 
 
  376#ifndef ROSE_SKIP_COMPILATION_OF_WAVE 
  402               const std::string & filenameString, 
int line_no , 
int col_no,
 
  408          void display(
const std::string & label) 
const;
 
  411          int getLineNumber() 
const;
 
  412          int getColumnNumber() 
const;
 
  413          std::string getString() 
const;
 
  414          void setString ( 
const std::string & s );
 
  415          int getStringLength() 
const;
 
  416          DirectiveType getTypeOfDirective() 
const;
 
  417          void setTypeOfDirective(DirectiveType);
 
  422          std::string getFilename() 
const;
 
  423          int getFileId() 
const;
 
  426          int getNumberOfLines() 
const;
 
  427          int getColumnNumberOfEndOfString() 
const; 
 
  434          static std::string directiveTypeName (
const DirectiveType & directive);
 
  439          unsigned int packed_size () 
const;
 
  442          char* packed()  
const;
 
  443          void unpacked( 
char* storePointer );
 
  451          std::string get_filename_from_include_directive();
 
  454          int get_lineNumberForCompilerGeneratedLinemarker();
 
  455          std::string get_filenameForCompilerGeneratedLinemarker();
 
  456          std::string get_optionalflagsForCompilerGeneratedLinemarker();
 
  459          void set_lineNumberForCompilerGeneratedLinemarker( 
int x );
 
  460          void set_filenameForCompilerGeneratedLinemarker( std::string x );
 
  461          void set_optionalflagsForCompilerGeneratedLinemarker( std::string x );
 
  464#ifndef ROSE_SKIP_COMPILATION_OF_WAVE 
  474          const token_container* get_token_stream();
 
  475          void push_front_token_stream(token_type tok);
 
  476          void push_back_token_stream(token_type tok);
 
  485         bool isSelfReferential();
 
  486         std::string getMacroName();
 
  489          bool isTransformation() 
const;
 
  490          void setAsTransformation();
 
  491          void unsetAsTransformation();
 
 
  504          std::vector<PreprocessingInfo*> attributeList;
 
  510          LexTokenStreamTypePointer rawTokenStream;
 
  514          std::string fileName;
 
  526          std::set<int> filenameIdSet;
 
  537          enum languageTypeEnum
 
  539               e_unknown_language   = 0,
 
  542               e_Fortran77_language = 3,
 
  543               e_Fortran9x_language = 4,
 
  552          void addElement(PreprocessingInfo::DirectiveType, 
const std::string & pLine, 
const std::string & filename, 
int lineNumber, 
int columnNumber, 
int numberOfLines);
 
  568          void setFileName(
const std::string & fName);
 
  569          std::string getFileName();
 
  572          void setIndex(
int i);
 
  578          void deepClean(
void);
 
  585          std::vector<PreprocessingInfo*> & getList() { 
return attributeList; };
 
  587          void display ( 
const std::string & label );          
 
  590          void set_rawTokenStream( LexTokenStreamTypePointer s );
 
  591          LexTokenStreamTypePointer get_rawTokenStream();
 
  595          void generatePreprocessorDirectivesAndCommentsForAST( 
const std::string & filename );
 
  602          void collectPreprocessorDirectivesAndCommentsForAST( 
const std::string & filename, languageTypeEnum languageType );
 
  605          bool isFortran77Comment( 
const std::string & line );
 
  606          bool isFortran90Comment( 
const std::string & line );
 
  607          bool isCppDirective( 
const std::string & line, PreprocessingInfo::DirectiveType & cppDeclarationKind, std::string & restOfTheLine );
 
  612          void generateFileIdListFromLineDirectives();
 
  615          std::set<int> & get_filenameIdSet();