OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
SequenceTemplate.h
Go to the documentation of this file.
1 #ifndef OPAL_SequenceTemplate_HH
2 #define OPAL_SequenceTemplate_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: SequenceTemplate.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.2 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: SequenceTemplate
13 //
14 // ------------------------------------------------------------------------
15 //
16 // $Date: 2000/03/29 10:41:42 $
17 // $Author: opal $
18 //
19 // ------------------------------------------------------------------------
20 
21 #include "OpalParser/Macro.h"
22 #include "Parser/SimpleStatement.h"
23 #include "OpalParser/MacroStream.h"
24 #include <list>
25 
26 class Sequence;
27 class Statement;
28 class TokenStream;
29 
30 
31 // Class SequenceTemplate
32 // ------------------------------------------------------------------------
34 // The model is stored in form of a MacroStream. A call to the macro
35 // sequence is expanded by first replacing the arguments, and then parsing
36 // the resulting stream as a SEQUENCE definition.
37 
38 class SequenceTemplate: public Macro {
39 
40  friend class Sequence;
41 
42 public:
43 
45  virtual ~SequenceTemplate();
46 
48  // Throw OpalException, since the template cannot be cloned.
49  virtual SequenceTemplate *clone(const std::string &name);
50 
52  // The instance gets the name [b]name[/b], and its actual arguments
53  // are read from [b]stat[/b]. The parser is ignored.
54  virtual Object *makeInstance
55  (const std::string &name, Statement &, const Parser *);
56 
58  // Return NULL, since one cannot make a template from a template.
59  virtual Object *makeTemplate(const std::string &name, TokenStream &, Statement &);
60 
63 
64 private:
65 
66  // Not implemented.
68  void operator=(const SequenceTemplate &);
69 
70  // Clone constructor.
71  SequenceTemplate(const std::string &name, Object *parent);
72 
73  // The contained beam sequence element list.
75 };
76 
77 #endif // OPAL_SequenceTemplate_HH
virtual ~SequenceTemplate()
void parseTemplate(TokenStream &, Statement &)
Parse the sequence template.
Abstract interface for a stream of input tokens.
Definition: TokenStream.h:33
An ``archetype&#39;&#39; for a SEQUENCE with arguments.
void operator=(const SequenceTemplate &)
Interface for abstract language parser.
Definition: Parser.h:31
Interface for statements.
Definition: Statement.h:38
virtual Object * makeTemplate(const std::string &name, TokenStream &, Statement &)
Make a sequence template.
The SEQUENCE definition.
Definition: Sequence.h:38
An input buffer for macro commands.
Definition: MacroStream.h:31
Abstract base class for macros.
Definition: Macro.h:34
The base class for all OPAL objects.
Definition: Object.h:48
virtual SequenceTemplate * clone(const std::string &name)
Make clone.
virtual Object * makeInstance(const std::string &name, Statement &, const Parser *)
Make line instance.
const std::string name