OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
SequenceParser.h
Go to the documentation of this file.
1#ifndef OPAL_SequenceParser_HH
2#define OPAL_SequenceParser_HH
3
4// ------------------------------------------------------------------------
5// $RCSfile: SequenceParser.h,v $
6// ------------------------------------------------------------------------
7// $Revision: 1.1.1.1 $
8// ------------------------------------------------------------------------
9// Copyright: see Copyright.readme
10// ------------------------------------------------------------------------
11//
12// Class: SequenceParser
13//
14// ------------------------------------------------------------------------
15//
16// $Date: 2000/03/27 09:33:43 $
17// $Author: Andreas Adelmann $
18//
19// ------------------------------------------------------------------------
20
22#include "Lines/Sequence.h"
23#include <list>
24
25class Element;
26class Sequence;
27class SequenceMember;
28class Statement;
29
30
31// Class SequenceParser
32// ------------------------------------------------------------------------
34// Recognises the format for all possible SEQUENCE members.
35// The SequenceParser is instantiated when a SEQUENCE header is seen.
36// It takes over parsing for the members of the sequence and returns
37// when it sees ENDSEQUENCE. Before returning it makes sure that all
38// sequence members are placed correctly.
39
41
42public:
43
45 // Assign the current sequence being parsed.
47
48 virtual ~SequenceParser();
49
51 virtual void parse(Statement &) const;
52
53private:
54
55 // The data structure for relative position definitions.
56 struct Reference {
58 { fromPosition = 0; }
59
60 Reference(std::string name, SequenceMember *member): fromName(name)
61 { fromPosition = 0; itsList.push_back(member); }
62
64 { }
65
66 std::string fromName;
68 std::list<SequenceMember *> itsList;
69 };
70
71 typedef std::list<Reference> RefList;
72
73 // The type of CLASSIC beamline embedded in a Sequence.
75
76 // Not implemented.
80
81 // Fill in relative positions and convert to absolute.
82 void fillPositions() const;
83
84 // Find positions of elements named in "FROM" clauses.
85 void findFromPositions() const;
86
87 // Find positions of neighbour elements in sequence line.
88 void findNeighbourPositions() const;
89
90 // Parse single member.
91 void parseMember(Statement &) const;
92
93 // Parse element position.
94 void parsePosition(Statement &, Object &, bool defined) const;
95
96 // The sequence being parsed.
98
99 // Flag for success.
100 mutable bool okFlag;
101
102 // The relative positions to be filled in.
104
105 // The sequence being parsed.
106 mutable TLine itsLine;
107};
108
109#endif // OPAL_SequenceParser_HH
const std::string name
The base class for all OPAL objects.
Definition: Object.h:48
Interface for statements.
Definition: Statement.h:38
A member of a SEQUENCE.
The parser for SEQUENCE members.
void findFromPositions() const
void fillPositions() const
std::list< Reference > RefList
void operator=(const SequenceParser &)
Sequence * itsSequence
void parseMember(Statement &) const
SequenceParser(const SequenceParser &)
virtual ~SequenceParser()
Sequence::TLine TLine
void findNeighbourPositions() const
virtual void parse(Statement &) const
Parse sequence member.
void parsePosition(Statement &, Object &, bool defined) const
SequenceMember * fromPosition
Reference(std::string name, SequenceMember *member)
std::list< SequenceMember * > itsList
The default parser for OPAL-9.
Definition: OpalParser.h:44