File: pdbTemplate.h
/*************************************************************************/
/* DUCTAPE Version 2.0 */
/* Copyright (C) 2001 */
/* Forschungszentrum Juelich, Zentralinstitut fuer Angewandte Mathematik */
/*************************************************************************/
#ifndef __PDB_TEMPLATE_H__
#define __PDB_TEMPLATE_H__
#include "pdbFatItem.h"
#include "pdbTemplateArg.h"
class pdbTemplate : public pdbFatItem {
public:
pdbTemplate(int id);
pdbTemplate(const string& name, int id);
virtual const char *desc() const;
virtual ostream& print(ostream& ostr) const;
virtual void process(PDB *p);
virtual void adjustPtrs(PDB *p);
virtual dupl_t findDuplicate(pdbSimpleItem* r);
typedef vector<pdbTemplateArg> targvec;
templ_t kind() const;
const string& text() const;
const targvec& arguments() const;
const pdbCRoutine* funcProtoInst() const;
const pdbClass* classProtoInst() const;
const pdbType* statMemType() const;
const pdbTemplate* declaration() const;
const pdbTemplate* definition() const;
const targvec& speclArguments() const;
void kind(templ_t kind);
void text(const string& text);
void addArgument(const pdbTemplateArg& targ);
void funcProtoInst(const pdbCRoutine* ro);
void classProtoInst(const pdbClass* cl);
void statMemType(const pdbType* ty);
void declaration(const pdbTemplate* t);
void definition(const pdbTemplate* t);
void addSpeclArgument(const pdbTemplateArg& targ);
private:
templ_t knd;
string txt;
targvec args;
targvec sargs;
union {
const pdbCRoutine* rproto;
const pdbClass* cproto;
const pdbType* stype;
};
const pdbTemplate* def;
const pdbTemplate* decl;
};
#ifndef NO_INLINE
# include "pdbTemplate.inl"
#endif
#endif
Back to Index
Key to Colors and Styles