1// 2// Copyright (C) 2005 Stefan Seefeld 3// All rights reserved. 4// Licensed to the public under the terms of the GNU LGPL (>= 2), 5// see the file COPYING for details. 6// 7#ifndef Synopsis_TypeAnalysis_Visitor_hh_ 8#define Synopsis_TypeAnalysis_Visitor_hh_ 9 10namespace Synopsis 11{ 12namespace TypeAnalysis 13{ 14 15class Type; 16class BuiltinType; 17class Enum; 18class Class; 19class Union; 20class CVType; 21class Pointer; 22class Reference; 23class Array; 24class Function; 25class PointerToMember; 26 27class Visitor 28{ 29public: 30 virtual ~Visitor() {} 31 // FIXME: may these use const arguments ? 32 virtual void visit(Type *) = 0; 33 virtual void visit(BuiltinType *) = 0; 34 virtual void visit(Enum *) = 0; 35 virtual void visit(Class *) = 0; 36 virtual void visit(Union *) = 0; 37 38 virtual void visit(CVType *) = 0; 39 virtual void visit(Pointer *) = 0; 40 virtual void visit(Reference *) = 0; 41 virtual void visit(Array *) = 0; 42 virtual void visit(Function *) = 0; 43 virtual void visit(PointerToMember *) = 0; 44}; 45 46} 47} 48 49#endif