File: Synopsis/TypeAnalysis/Visitor.hh
 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