1
// This file is part of the AspectC++ compiler 'ac++'.
2
// Copyright (C) 1999-2003 The 'ac++' developers (see aspectc.org)
4
// This program is free software; you can redistribute it and/or
5
// modify it under the terms of the GNU General Public License as
6
// published by the Free Software Foundation; either version 2 of
7
// the License, or (at your option) any later version.
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
14
// You should have received a copy of the GNU General Public
15
// License along with this program; if not, write to the Free
16
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
19
#ifndef __ModelElementFactory_h__
20
#define __ModelElementFactory_h__
32
class JPL_Construction;
33
class JPL_Destruction;
35
/* interface for classes that can act as factories for join-point model
39
class ModelElementFactory {
41
virtual ~ModelElementFactory () {}
42
virtual JPL_Type *make_type (const string &s) = 0;
43
virtual JPL_Namespace *make_namespace (const string &s) = 0;
44
virtual JPL_Class *make_class (const string &s) = 0;
45
virtual JPL_Aspect *make_aspect (const string &s) = 0;
46
virtual JPL_Function *make_function (const string &n, const string &s) = 0;
47
virtual JPL_AdviceCode *make_advice_code (const string &n, const string &s) = 0;
48
virtual JPL_ClassSlice *make_class_slice (const string &s) = 0;
49
virtual JPL_Method *make_execution () = 0;
50
virtual JPL_MethodCall *make_call () = 0;
51
virtual JPL_Construction *make_construction () = 0;
52
virtual JPL_Destruction *make_destruction () = 0;
55
#endif // __ModelElementFactory_h__