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 <regex>
14 #include <string>
15 #include <vector>
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)
33  {
34  return value;
35  }
36  std::string tmp = value;
37  std::size_t loc = std::string::npos;
38  do
39  {
40  loc = tmp.find(pattern);
41  if(loc != std::string::npos)
42  {
43  tmp.replace(loc, pattern.length(), replacement);
44  }
45  }
46  while(loc != std::string::npos);
47  return tmp;
48 }
49 
51 {
66 };
67 
72 {
73  public:
75  virtual ~MHO_VexDefinitions();
76 
82  void SetVexVersion(std::string version);
83 
89  std::string GetFormatDirectory() const;
90 
96  std::vector< std::string > GetBlockNames() const { return fBlockNames; }
97 
105  static std::string DetermineFileVersion(std::string filename);
106 
113  static std::string BlockStartFlag() { return std::string("$"); };
114 
121  static std::string RefTag() { return std::string("ref"); }
122 
130  static std::string WhitespaceDelim() { return std::string(" \t\r\n"); };
131 
138  static std::string AssignmentOp() { return std::string("="); };
139 
146  static std::string AssignmentDelim() { return std::string("=;"); };
147 
154  static std::string StartTagDelim() { return std::string(" \t\r\n;"); };
155 
162  static std::string ElementDelim() { return ":"; };
163 
170  static std::string VexRevisionFlag() { return std::string("VEX_rev"); };
171 
178  static std::string OVexRevisionFlag() { return std::string("$OVEX_REV"); };
179 
186  static std::string StartLiteralFlag() { return std::string("start_literal"); };
187 
194  static std::string EndLiteralFlag() { return std::string("end_literal"); };
195 
202  static std::string CommentFlag() { return std::string("*"); };
203 
210  static std::string StatementEndFlag() { return std::string(";"); };
211 
219  static std::string StatementLineEnd() { return std::string(";\n"); };
220 
221  static std::string OptionalFlag() { return std::string("!"); };
222 
223  static vex_element_type DetermineType(std::string etype);
224 
225  static bool IsOptionalField(std::string& field_name);
226 
227  private:
228  std::string fFormatDirectory;
229  std::string fVexVersion;
230  std::vector< std::string > fBlockNames;
231 };
232 
233 } // namespace hops
234 
235 #endif
Class MHO_VexDefinitions.
Definition: MHO_VexDefinitions.hh:72
static std::string StartTagDelim()
Returns a string containing whitespace characters.
Definition: MHO_VexDefinitions.hh:154
static std::string BlockStartFlag()
Returns a static string representing the start block flag.
Definition: MHO_VexDefinitions.hh:113
static bool IsOptionalField(std::string &field_name)
Definition: MHO_VexDefinitions.cc:208
static std::string StartLiteralFlag()
Returns a static string 'start_literal'.
Definition: MHO_VexDefinitions.hh:186
static std::string RefTag()
Returns a static string 'ref'.
Definition: MHO_VexDefinitions.hh:121
static std::string DetermineFileVersion(std::string filename)
Determines and returns the version of a VEX file given its filename.
Definition: MHO_VexDefinitions.cc:94
static std::string OptionalFlag()
Definition: MHO_VexDefinitions.hh:221
void SetVexVersion(std::string version)
Setter for vex version.
Definition: MHO_VexDefinitions.cc:20
static std::string WhitespaceDelim()
Definition: MHO_VexDefinitions.hh:130
static std::string StatementEndFlag()
Returns a string representing the statement end flag.
Definition: MHO_VexDefinitions.hh:210
static std::string OVexRevisionFlag()
Returns a string containing the OVEX revision flag.
Definition: MHO_VexDefinitions.hh:178
static vex_element_type DetermineType(std::string etype)
Definition: MHO_VexDefinitions.cc:147
static std::string AssignmentDelim()
Returns a string '=;' as the assignment delimiter.
Definition: MHO_VexDefinitions.hh:146
std::string GetFormatDirectory() const
Getter for format directory.
Definition: MHO_VexDefinitions.cc:70
static std::string ElementDelim()
Returns a static string ':' as an element delimiter.
Definition: MHO_VexDefinitions.hh:162
static std::string EndLiteralFlag()
Returns a static string 'end_literal'.
Definition: MHO_VexDefinitions.hh:194
static std::string AssignmentOp()
Returns a string literal '='.
Definition: MHO_VexDefinitions.hh:138
MHO_VexDefinitions()
Definition: MHO_VexDefinitions.cc:11
static std::string StatementLineEnd()
Definition: MHO_VexDefinitions.hh:219
static std::string VexRevisionFlag()
Returns a static string 'VEX_rev' for revision flag.
Definition: MHO_VexDefinitions.hh:170
virtual ~MHO_VexDefinitions()
Definition: MHO_VexDefinitions.cc:17
static std::string CommentFlag()
Returns a string containing an asterisk (*). This is a static function.
Definition: MHO_VexDefinitions.hh:202
std::vector< std::string > GetBlockNames() const
Getter for block names.
Definition: MHO_VexDefinitions.hh:96
const char version[]
Definition: difx2mark4.c:37
Definition: MHO_AdhocFlagging.hh:18
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:51
@ vex_real_type
Definition: MHO_VexDefinitions.hh:54
@ vex_reference_type
Definition: MHO_VexDefinitions.hh:64
@ vex_list_string_type
Definition: MHO_VexDefinitions.hh:56
@ vex_radec_type
Definition: MHO_VexDefinitions.hh:58
@ vex_unknown_type
Definition: MHO_VexDefinitions.hh:65
@ vex_list_real_type
Definition: MHO_VexDefinitions.hh:59
@ vex_compound_type
Definition: MHO_VexDefinitions.hh:60
@ vex_keyword_type
Definition: MHO_VexDefinitions.hh:63
@ vex_link_type
Definition: MHO_VexDefinitions.hh:62
@ vex_list_compound_type
Definition: MHO_VexDefinitions.hh:61
@ vex_string_type
Definition: MHO_VexDefinitions.hh:55
@ vex_list_int_type
Definition: MHO_VexDefinitions.hh:53
@ vex_int_type
Definition: MHO_VexDefinitions.hh:52
@ vex_epoch_type
Definition: MHO_VexDefinitions.hh:57
Definition: vex.h:175