File: pdbFile.h


/*************************************************************************/
/* DUCTAPE Version 2.0                                                   */
/* Copyright (C) 2001                                                    */
/* Forschungszentrum Juelich, Zentralinstitut fuer Angewandte Mathematik */
/*************************************************************************/

#ifndef __PDB_FILE_H__
#define __PDB_FILE_H__

#include "pdbSimpleItem.h"

class pdbComment {
public:
  pdbComment(int id);

  int id() const;
  PDB::lang_t kind() const;
  const pdbLoc& cmtBegin() const;
  const pdbLoc& cmtEnd() const;
  const string& text() const;

  void kind(PDB::lang_t kind);
  void cmtBegin(const pdbLoc& loc);
  void cmtEnd(const pdbLoc& loc);
  void text(const string& text);

  friend class pdbFile;

private:
  int         i;
  PDB::lang_t knd;
  pdbLoc      bg;
  pdbLoc      ed;
  string      txt;
};

ostream& operator<<(ostream& ostr, const pdbComment& c);

class pdbFile : public pdbSimpleItem {
public:
  pdbFile(int id);
  pdbFile(const string& name, int id);
  virtual ~pdbFile();

  typedef vector<pdbFile *> incvec;
  typedef vector<pdbComment *> cmtvec;

  virtual const char *desc() const;
  virtual ostream& print(ostream& ostr) const;
  virtual void adjustPtrs(PDB* p);
  virtual void process(PDB* p);

  incvec& includes();
  const incvec& includes() const;
  int numCalled() const;
  bool isSystemFile() const;
  const cmtvec& comments() const;

  void addInclude(pdbFile *inc);
  void isSystemFile(bool s);
  pdbComment* addComment(int id);

private:
  incvec incls;
  cmtvec cmts;
  int    ncall;
  bool   sys;
};

#ifndef NO_INLINE
#  include "pdbFile.inl"
#endif
#endif

Back to Index
Key to Colors and Styles