File: pdbClass.h
/*************************************************************************/
/* DUCTAPE Version 2.0 */
/* Copyright (C) 2001 */
/* Forschungszentrum Juelich, Zentralinstitut fuer Angewandte Mathematik */
/*************************************************************************/
#ifndef __PDB_CLASS_H__
#define __PDB_CLASS_H__
#include "pdbGroup.h"
#include "pdbCRoutine.h"
class pdbBase : public pdbLoc {
public:
pdbBase();
pdbBase(pdbItem::virt_t v, pdbItem::access_t a, const pdbClass *base,
pdbFile *file, int line, int col);
pdbItem::virt_t virtuality() const;
pdbItem::access_t access() const;
const pdbClass *base() const;
bool isVirtual() const;
void virtuality(pdbItem::virt_t v);
void access(pdbItem::access_t a);
void base(const pdbClass* base);
private:
pdbItem::virt_t virt;
pdbItem::access_t acs;
const pdbClass *bptr;
};
class pdbFriendFunc : public pdbLoc {
public:
pdbFriendFunc();
pdbFriendFunc(const pdbCRoutine *f, pdbFile *file, int line, int col);
const pdbCRoutine *friendFunc() const;
void friendFunc(const pdbCRoutine* f);
private:
const pdbCRoutine *fuptr;
};
class pdbFriendClass : public pdbLoc {
public:
pdbFriendClass();
pdbFriendClass(const pdbClass *c, pdbFile *file, int line, int col);
const pdbClass *friendClass() const;
void friendClass(const pdbClass* c);
private:
const pdbClass *cptr;
};
class pdbMethod : public pdbLoc {
public:
pdbMethod();
pdbMethod(const pdbCRoutine *f, pdbFile *file, int line, int col);
const pdbCRoutine *func() const;
void func(const pdbCRoutine* f);
private:
const pdbCRoutine *fptr;
};
ostream& operator<<(ostream& ostr, const pdbBase& b);
ostream& operator<<(ostream& ostr, const pdbFriendFunc& f);
ostream& operator<<(ostream& ostr, const pdbFriendClass& c);
ostream& operator<<(ostream& ostr, const pdbMethod& f);
class pdbClass : public pdbGroup {
public:
pdbClass(int id);
pdbClass(const string& name, int id);
virtual ~pdbClass();
virtual ostream& print(ostream& ostr) const;
virtual void adjustPtrs(PDB* p);
virtual void process(PDB* p);
virtual dupl_t findDuplicate(pdbSimpleItem* r);
typedef vector<pdbBase *> basevec;
typedef vector<pdbClass *> classvec;
typedef vector<pdbMethod *> methodvec;
typedef vector<pdbFriendClass *> friendclassvec;
typedef vector<pdbFriendFunc *> friendfuncvec;
const basevec& baseClasses() const;
classvec& derivedClasses();
const classvec& derivedClasses() const;
const methodvec& methods() const;
bool isABC() const;
const friendclassvec& friendClasses() const;
const friendfuncvec& friendRoutines() const;
void addBaseClass(pdbItem::virt_t virt, pdbItem::access_t acs,
const pdbClass *bclass, pdbFile *file, int line, int col);
void addDerivedClass(pdbClass *dclass);
void addMethod(pdbCRoutine *func, pdbFile *file, int line, int col);
void addFriendClass(pdbClass *f, pdbFile *file, int line, int col);
void addFriendRoutine(pdbCRoutine *f, pdbFile *file, int line, int col);
private:
basevec base;
classvec drvd;
methodvec fmem;
bool abc;
friendclassvec fcl;
friendfuncvec fro;
};
#ifndef NO_INLINE
# include "pdbClass.inl"
#endif
#endif
Back to Index
Key to Colors and Styles