HOPS
HOPS class reference
MHO_VexDefinitions.hh
Go to the documentation of this file.
1 #ifndef MHO_VexDefinitions_HH__
2 #define MHO_VexDefinitions_HH__
3 
12 #include "MHO_Message.hh"
13 #include <string>
14 #include <vector>
15 #include <regex>
16 
17 namespace hops
18 {
19 
28 inline std::string string_pattern_replace(const std::string& value, const std::string& pattern, const std::string& replacement)
29 {
30  //original implementation is via std::regex, however, std::regex is not implemented for <GCC 4.9
31  //return std::regex_replace(value, std::regex(pattern), replacement);
32  if(pattern == replacement){return value;}
33  std::string tmp = value;
34  std::size_t loc = std::string::npos;
35  do
36  {
37  loc = tmp.find(pattern);
38  if(loc != std::string::npos)
39  {
40  tmp.replace(loc, pattern.length(), replacement);
41  }
42  }
43  while(loc != std::string::npos);
44  return tmp;
45 }
46 
48 {
63 };
64 
69 {
70  public:
72  virtual ~MHO_VexDefinitions();
73 
79  void SetVexVersion(std::string version);
80 
86  std::string GetFormatDirectory() const;
87 
93  std::vector< std::string > GetBlockNames() const { return fBlockNames; }
94 
102  static std::string DetermineFileVersion(std::string filename);
103 
110  static std::string BlockStartFlag() { return std::string("$"); };
111 
118  static std::string RefTag() { return std::string("ref"); }
119 
127  static std::string WhitespaceDelim() { return std::string(" \t\r\n"); };
128 
135  static std::string AssignmentOp() { return std::string("="); };
136 
143  static std::string AssignmentDelim() { return std::string("=;"); };
144 
151  static std::string StartTagDelim() { return std::string(" \t\r\n;"); };
152 
159  static std::string ElementDelim() { return ":"; };
160 
167  static std::string VexRevisionFlag() { return std::string("VEX_rev"); };
168 
175  static std::string OVexRevisionFlag() { return std::string("$OVEX_REV"); };
176 
183  static std::string StartLiteralFlag() { return std::string("start_literal"); };
184 
191  static std::string EndLiteralFlag() { return std::string("end_literal"); };
192 
199  static std::string CommentFlag() { return std::string("*"); };
200 
207  static std::string StatementEndFlag() { return std::string(";"); };
208 
216  static std::string StatementLineEnd() { return std::string(";\n"); };
217 
218  static std::string OptionalFlag() { return std::string("!"); };
219 
220  static vex_element_type DetermineType(std::string etype);
221 
222  static bool IsOptionalField(std::string& field_name);
223 
224  private:
225  std::string fFormatDirectory;
226  std::string fVexVersion;
227  std::vector< std::string > fBlockNames;
228 };
229 
230 } // namespace hops
231 
232 #endif
Class MHO_VexDefinitions.
Definition: MHO_VexDefinitions.hh:69
static std::string StartTagDelim()
Returns a string containing whitespace characters.
Definition: MHO_VexDefinitions.hh:151
static std::string BlockStartFlag()
Returns a static string representing the start block flag.
Definition: MHO_VexDefinitions.hh:110
static bool IsOptionalField(std::string &field_name)
Definition: MHO_VexDefinitions.cc:199
static std::string StartLiteralFlag()
Returns a static string 'start_literal'.
Definition: MHO_VexDefinitions.hh:183
static std::string RefTag()
Returns a static string 'ref'.
Definition: MHO_VexDefinitions.hh:118
static std::string DetermineFileVersion(std::string filename)
Determines and returns the version of a VEX file given its filename.
Definition: MHO_VexDefinitions.cc:85
static std::string OptionalFlag()
Definition: MHO_VexDefinitions.hh:218
void SetVexVersion(std::string version)
Setter for vex version.
Definition: MHO_VexDefinitions.cc:19
static std::string WhitespaceDelim()
Definition: MHO_VexDefinitions.hh:127
static std::string StatementEndFlag()
Returns a string representing the statement end flag.
Definition: MHO_VexDefinitions.hh:207
static std::string OVexRevisionFlag()
Returns a string containing the OVEX revision flag.
Definition: MHO_VexDefinitions.hh:175
static vex_element_type DetermineType(std::string etype)
Definition: MHO_VexDefinitions.cc:138
static std::string AssignmentDelim()
Returns a string '=;' as the assignment delimiter.
Definition: MHO_VexDefinitions.hh:143
std::string GetFormatDirectory() const
Getter for format directory.
Definition: MHO_VexDefinitions.cc:69
static std::string ElementDelim()
Returns a static string ':' as an element delimiter.
Definition: MHO_VexDefinitions.hh:159
static std::string EndLiteralFlag()
Returns a static string 'end_literal'.
Definition: MHO_VexDefinitions.hh:191
static std::string AssignmentOp()
Returns a string literal '='.
Definition: MHO_VexDefinitions.hh:135
MHO_VexDefinitions()
Definition: MHO_VexDefinitions.cc:10
static std::string StatementLineEnd()
Definition: MHO_VexDefinitions.hh:216
static std::string VexRevisionFlag()
Returns a static string 'VEX_rev' for revision flag.
Definition: MHO_VexDefinitions.hh:167
virtual ~MHO_VexDefinitions()
Definition: MHO_VexDefinitions.cc:16
static std::string CommentFlag()
Returns a string containing an asterisk (*). This is a static function.
Definition: MHO_VexDefinitions.hh:199
std::vector< std::string > GetBlockNames() const
Getter for block names.
Definition: MHO_VexDefinitions.hh:93
const char version[]
Definition: difx2mark4.c:37
Definition: MHO_ChannelLabeler.hh:17
std::string string_pattern_replace(const std::string &value, const std::string &pattern, const std::string &replacement)
Replaces occurrences of pattern in value with replacement.
Definition: MHO_VexDefinitions.hh:28
vex_element_type
Definition: MHO_VexDefinitions.hh:48
@ vex_real_type
Definition: MHO_VexDefinitions.hh:51
@ vex_reference_type
Definition: MHO_VexDefinitions.hh:61
@ vex_list_string_type
Definition: MHO_VexDefinitions.hh:53
@ vex_radec_type
Definition: MHO_VexDefinitions.hh:55
@ vex_unknown_type
Definition: MHO_VexDefinitions.hh:62
@ vex_list_real_type
Definition: MHO_VexDefinitions.hh:56
@ vex_compound_type
Definition: MHO_VexDefinitions.hh:57
@ vex_keyword_type
Definition: MHO_VexDefinitions.hh:60
@ vex_link_type
Definition: MHO_VexDefinitions.hh:59
@ vex_list_compound_type
Definition: MHO_VexDefinitions.hh:58
@ vex_string_type
Definition: MHO_VexDefinitions.hh:52
@ vex_list_int_type
Definition: MHO_VexDefinitions.hh:50
@ vex_int_type
Definition: MHO_VexDefinitions.hh:49
@ vex_epoch_type
Definition: MHO_VexDefinitions.hh:54
Definition: vex.h:175