OnixS CME Drop Copy Handler C++ library  5.7.1
API documentation
Messaging.h
Go to the documentation of this file.
1 // Copyright Onix Solutions Limited [OnixS]. All rights reserved.
2 //
3 // This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
4 // and international copyright treaties.
5 //
6 // Access to and use of the software is governed by the terms of the applicable OnixS Software
7 // Services Agreement (the Agreement) and Customer end user license agreements granting
8 // a non-assignable, non-transferable and non-exclusive license to use the software
9 // for it's own data processing purposes under the terms defined in the Agreement.
10 //
11 // Except as otherwise granted within the terms of the Agreement, copying or reproduction of any
12 // part of this source code or associated reference material to any other location for further
13 // reproduction or redistribution, and any amendments to this copyright notice, are expressly
14 // prohibited.
15 //
16 // Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17 // the terms of the Agreement is a violation of copyright law.
18 //
19 
20 #pragma once
21 
22 #include "OnixS/CME/DropCopy/Export.h"
27 
28 namespace OnixS { namespace CME { namespace DropCopy {
29 
30 class Message;
31 class Group;
32 class MessageOperator;
33 
34 /// Reference to a read-only FIX field value.
35 ///
36 /// Reference may refers to a valid field value or
37 /// to nothing. 'operator bool()' is exposed to check
38 /// whether instance refers to existent field value.
39 class ONIXS_CME_DROP_COPY_EXPORT FieldValueRef
40 {
41 public:
42  /// Uninitialized value.
43  FieldValueRef();
44 
45  /// Shallow copy from another one.
47 
48  /// Indicated whether the instance
49  /// refers to a valid value.
50  operator bool() const;
51 
52  /// Return string presentation
53  /// of the value being referenced.
54  operator std::string() const;
55 
56  /// Compares with another instance for equality.
57  bool operator==(const FieldValueRef&) const;
58 
59  /// Compares with another instance for inequality.
60  bool operator!=(const FieldValueRef&) const;
61 
62  /// Compares string presentation for
63  /// equality with given text reference.
64  bool operator==(const StringRef&) const;
65 
66  /// Compares string presentation for
67  /// equality with given text reference.
68  bool operator!=(const StringRef&) const;
69 
70  /// Converts field value into a whole number.
71  ///
72  /// \returns false if value referenced by instance
73  /// can't be converted into value of target type.
74  ///
75  /// \note conversion of instance referencing
76  /// to nothing always fails.
77  bool toNumber(Int32&) const;
78 
79  /// Converts field value into a whole number.
80  ///
81  /// \returns false if value referenced by instance
82  /// can't be converted into value of target type.
83  ///
84  /// \note conversion of instance referencing
85  /// to nothing always fails.
86  bool toNumber(UInt32&) const;
87 
88  /// Converts field value into a whole number.
89  ///
90  /// \returns false if value referenced by instance
91  /// can't be converted into value of target type.
92  ///
93  /// \note conversion of instance referencing
94  /// to nothing always fails.
95  bool toNumber(Int64&) const;
96 
97  /// Converts field value into a whole number.
98  ///
99  /// \returns false if value referenced by instance
100  /// can't be converted into value of target type.
101  ///
102  /// \note conversion of instance referencing
103  /// to nothing always fails.
104  bool toNumber(UInt64&) const;
105 
106  /// Converts field value into a whole number.
107  ///
108  /// \returns false if value referenced by instance
109  /// can't be converted into value of target type.
110  ///
111  /// \note conversion of instance referencing
112  /// to nothing always fails.
113  bool toNumber(Decimal&) const;
114 
115  /// Converts field value into Timestamp.
116  ///
117  /// \returns false if value referenced by instance
118  /// can't be converted into value of target type.
119  ///
120  /// \note conversion of instance referencing
121  /// to nothing always fails.
122  bool toTimestamp(Timestamp&, SinceEpochUnit) const;
123 
124  /// If value represents text, returns reference to it.
125  ///
126  /// \returns false if value referenced by instance
127  /// can't be converted into value of target type.
128  /// If value being referenced is not of string type
129  /// (like number or datetime), conversion fails.
130  ///
131  /// \note conversion of instance referencing
132  /// to nothing always fails.
133  bool toStringRef(StringRef&) const;
134 
135  /// If value represent one-char text,
136  /// copies it into given variable.
137  ///
138  /// \returns false if value referenced by instance
139  /// can't be converted into value of target type.
140  ///
141  /// \note conversion of instance referencing
142  /// to nothing always fails.
143  bool toChar(char&) const;
144 
145  /// If repeating group is associated with
146  /// field, allows to get instance of it.
147  ///
148  /// \returns false if no group is associated with field.
149  bool toGroup(Group&) const;
150 
151  /// Appends copy of referenced value text
152  /// presentation to the std::string.
153  void toString(std::string&) const;
154 
155  /// Return string presentation of field value.
156  std::string toString() const;
157 
158  /// Updates instance to refer to another field value.
159  /// \warning Does NOT perform deep copy of field values.
160  /// Just updates reference to point to value of other field.
161  FieldValueRef& operator=(const FieldValueRef&);
162 
163 private:
164  friend class MessageOperator;
165 
166  const void* impl_;
167  const Message* container_;
168 
169  FieldValueRef(const Message*, const void*);
170 };
171 
172 inline FieldValueRef::operator std::string() const
173 {
174  std::string str;
175  toString(str);
176  return str;
177 }
178 
179 inline std::string FieldValueRef::toString() const
180 {
181  std::string str;
182  toString(str);
183  return str;
184 }
185 
186 // More comparison operators.
187 
188 inline bool operator==(const FieldValueRef& ref, const std::string& str)
189 {
190  return ref == StringRef(str);
191 }
192 
193 inline bool operator!=(const FieldValueRef& ref, const std::string& str)
194 {
195  return ref != StringRef(str);
196 }
197 
198 inline bool operator==(const std::string& str, const FieldValueRef& ref)
199 {
200  return ref == StringRef(str);
201 }
202 
203 inline bool operator!=(const std::string& str, const FieldValueRef& ref)
204 {
205  return ref != StringRef(str);
206 }
207 
208 // More comparison operators.
209 
210 inline bool operator==(const FieldValueRef& ref, const char* str)
211 {
212  return ref == StringRef(str);
213 }
214 
215 inline bool operator!=(const FieldValueRef& ref, const char* str)
216 {
217  return ref != StringRef(str);
218 }
219 
220 inline bool operator==(const char* str, const FieldValueRef& ref)
221 {
222  return ref == StringRef(str);
223 }
224 
225 inline bool operator!=(const char* str, const FieldValueRef& ref)
226 {
227  return ref != StringRef(str);
228 }
229 
230 /// Encapsulates primary operations over collection of FIX
231 /// fields like FIX message and repeating group instance are.
232 class ONIXS_CME_DROP_COPY_EXPORT FieldSet
233 {
234 public:
235  /// Indicates whether instance refers to a valid set of fields.
236  ///
237  /// If given instance doesn't refer to a valid fields set,
238  /// none of other members must be used.
239  operator bool() const;
240 
241  /// Provides access to field value using field tag.
242  ///
243  /// \returns Reference to a value associated with field
244  /// identified by tag. If there's no value associated with
245  /// a field, returned reference refers to nothing.
246  ///
247  /// \warning Due to performance considerations, doesn't
248  /// check whether instance refers to a valid set of fields.
249  /// Use casting to bool operator to check whether instance
250  /// refers to a valid set of fields.
251  FieldValueRef get(Tag tag) const;
252 
253  /// Returns field value as a char value.
254  ///
255  /// \throw std::exception if field is absent or associated
256  /// value can't be converted to target type.
257  ///
258  /// \warning Due to performance considerations, doesn't
259  /// check whether instance refers to a valid set of fields.
260  /// Use casting to bool operator to check whether instance
261  /// refers to a valid set of fields.
262  char getChar(Tag tag) const;
263 
264  /// Returns field value as an Int32 value.
265  ///
266  /// \throw std::exception if field is absent or associated
267  /// value can't be converted to target type.
268  ///
269  /// \warning Due to performance considerations, doesn't
270  /// check whether instance refers to a valid set of fields.
271  /// Use casting to bool operator to check whether instance
272  /// refers to a valid set of fields.
273  Int32 getInt32(Tag tag) const;
274 
275  /// Returns field value as an UInt32 value.
276  ///
277  /// \throw std::exception if field is absent or associated
278  /// value can't be converted to target type.
279  ///
280  /// \warning Due to performance considerations, doesn't
281  /// check whether instance refers to a valid set of fields.
282  /// Use casting to bool operator to check whether instance
283  /// refers to a valid set of fields.
284  UInt32 getUInt32(Tag tag) const;
285 
286  /// Returns field value as an Int64 value.
287  ///
288  /// \throw std::exception if field is absent or associated
289  /// value can't be converted to target type.
290  ///
291  /// \warning Due to performance considerations, doesn't
292  /// check whether instance refers to a valid set of fields.
293  /// Use casting to bool operator to check whether instance
294  /// refers to a valid set of fields.
295  Int64 getInt64(Tag tag) const;
296 
297  /// Returns field value as an UInt64 value.
298  ///
299  /// \throw std::exception if field is absent or associated
300  /// value can't be converted to target type.
301  ///
302  /// \warning Due to performance considerations, doesn't
303  /// check whether instance refers to a valid set of fields.
304  /// Use casting to bool operator to check whether instance
305  /// refers to a valid set of fields.
306  UInt64 getUInt64(Tag tag) const;
307 
308  /// Returns the field value as a decimal number.
309  ///
310  /// \throw std::exception if field is absent or associated
311  /// value can't be converted to target type.
312  ///
313  /// \warning Due to performance considerations, doesn't
314  /// check whether instance refers to a valid set of fields.
315  /// Use casting to bool operator to check whether instance
316  /// refers to a valid set of fields.
317  Decimal getDecimal(Tag tag) const;
318 
319  /// Returns reference to a read-only text chain.
320  ///
321  /// \throw std::exception if field is absent or associated
322  /// value can't be converted to target type.
323  ///
324  /// \warning Due to performance considerations, doesn't
325  /// check whether instance refers to a valid set of fields.
326  /// Use casting to bool operator to check whether instance
327  /// refers to a valid set of fields.
328  StringRef getStringRef(Tag tag) const;
329 
330  /// Returns the field value as timestamp of requested format.
331  ///
332  /// \throw std::exception if field is absent or associated
333  /// value can't be converted to target type.
334  ///
335  /// \warning Due to performance considerations, doesn't
336  /// check whether instance refers to a valid set of fields.
337  /// Use casting to bool operator to check whether instance
338  /// refers to a valid set of fields.
339  Timestamp getTimestamp(Tag tag, SinceEpochUnit unit) const;
340 
341  /// Returns reference to a repeating group if underlying
342  /// field defines length of repeating group.
343  ///
344  /// \param tag represent tag number of the field that defines
345  /// number of instances in this repeating group (the NoXXX field).
346  ///
347  /// \throw std::exception if no repeating group is
348  /// associated with given field including field absence.
349  Group getGroup(Tag tag) const;
350 
351  /// Returns reference to a repeating group if underlying
352  /// field defines length of repeating group. If field is absent
353  /// returns instance referencing to nothing. If field is undefined
354  /// for this message throws exception (if strict parameter is true)
355  /// or returns instance referencing to nothing (if strict parameter is false).
356  ///
357  /// \param tag represent tag number of the field that defines
358  /// number of instances in this repeating group (the NoXXX field).
359  /// \param strict set to true (default) if field undefined for this message
360  /// shall throw exception or to false if shall return empty group instance.
361  ///
362  /// \throw std::exception if given field is undefined (and strict parameter
363  /// is true) or doesn't suppose to represent repeating group.
364  Group getOptionalGroup(Tag tag, bool strict = true) const;
365 
366  /// Returns true if the given flag is present
367  /// and it equals to "Y", otherwise false.
368  ///
369  /// \warning Due to performance considerations, doesn't
370  /// check whether instance refers to a valid set of fields.
371  /// Use operator bool() to check whether
372  /// instance is in valid state.
373  bool hasFlag(Tag tag) const;
374 
375  /// Checks the presence of a field
376  /// This method should be used if the actual field value is NOT of interest -
377  /// otherwise field lookup operation will be done twice.
378  bool contain(Tag tag) const;
379 
380 protected:
381  // Underlying implementation.
382  const void* impl_;
383 
384  // Message to which given set belongs to.
386 
387  // Full details initialization.
388  FieldSet(const Message*, const void*);
389 
390  // Clone construction.
391  FieldSet(const FieldSet&);
392 
393  // Destruction available via descendants.
394  ~FieldSet();
395 
396  FieldSet& operator=(const FieldSet&);
397 
398 private:
399  friend class Message;
400  friend class GroupInstance;
401  friend class MessageOperator;
402 };
403 
404 template <typename Enumeration>
405 inline typename Enumeration::Enum getIntEnumFieldValue(const FieldSet& fieldSet, Tag tag)
406 {
407  UInt32 value = 0;
408  FieldValueRef valueRef = fieldSet.get(tag);
409 
410  return (valueRef && valueRef.toNumber(value)) ? static_cast<typename Enumeration::Enum>(value)
411  : Enumeration::Undefined;
412 }
413 
414 template <typename Enumeration>
415 inline typename Enumeration::Enum getCharEnumFieldValue(const FieldSet& fieldSet, Tag tag)
416 {
417  char value = 0;
418  FieldValueRef valueRef = fieldSet.get(tag);
419 
420  return (valueRef && valueRef.toChar(value)) ? static_cast<typename Enumeration::Enum>(value)
421  : Enumeration::Undefined;
422 }
423 
424 inline bool getDate(const FieldSet& fieldSet, Tag tag, Timestamp& date)
425 {
426  UInt64 value;
427 
428  if (fieldSet.get(tag).toNumber(value))
429  {
431  return true;
432  }
433 
434  return false;
435 }
436 
437 /// Single instance of FIX Repeating Group. Provides access
438 /// to the fields of a particular repeating group instance.
439 ///
440 /// Class behaves like a pointer/reference to a set of FIX
441 /// fields. Coping and assignment operations just update reference
442 /// to the field-set being pointed, no deep copying is performed.
443 class ONIXS_CME_DROP_COPY_EXPORT GroupInstance : public FieldSet
444 {
445 public:
446  /// Initializes instance referencing to nothing.
447  GroupInstance();
448 
449  /// Initializes instance as reference to the other one.
450  GroupInstance(const GroupInstance& other);
451 
452  /// Reinitializes instance as reference of other one.
453  GroupInstance& operator=(const GroupInstance&);
454 
455  /// Instance of Message holding
456  /// given repeating group instance.
457  ///
458  /// \warning Due to performance considerations, doesn't
459  /// check whether instance refers to a valid set of fields.
460  /// Use operator bool() to check whether
461  /// instance is in valid state.
462  const Message& message() const;
463 
464 private:
465  friend class MessageOperator;
466 
467  GroupInstance(const Message*, const void*);
468 };
469 
470 inline const Message& GroupInstance::message() const
471 {
472  return *container_;
473 }
474 
475 /// Encapsulates operations over FIX Repeating Group.
476 ///
477 /// Repeating group represents array of repeating group instances,
478 /// So, class exposes corresponding services to manipulate array
479 /// of repeating group instances. Similar to the GroupInstance
480 /// it behaves like a pointer/reference to the underlying data. It's
481 /// a light-weight object which just wraps internal data.
482 ///
483 /// Group remains valid until corresponding field (which defines
484 /// size/length of repeating group) from field-set (message or outer
485 /// repeating group instance) is updated.
486 class ONIXS_CME_DROP_COPY_EXPORT Group
487 {
488 public:
489  /// Initializes instance as referred to nothing.
490  Group();
491 
492  /// Initializes instance as reference to given repeating group.
493  Group(const Group& other);
494 
495  /// Indicated whether group refers to a valid instance.
496  operator bool() const;
497 
498  /// Return number of instances in repeating group.
499  ///
500  /// \warning Due to performance considerations,
501  /// instance is not checked for validness. Member
502  /// must be used only when instance is in valid state.
503  size_t size() const;
504 
505  /// Accesses to repeating group instance.
506  ///
507  /// \throw std::exception if If index exceeds allowed bounds.
508  ///
509  /// \warning Due to performance considerations,
510  /// instance is not checked for validness. Member
511  /// must be used only when instance is in valid state.
512  const GroupInstance at(size_t index) const;
513 
514  /// Accesses to repeating group instance.
515  ///
516  /// Does NOT check index validness.
517  ///
518  /// \warning Due to performance considerations,
519  /// instance is not checked for validness. Member
520  /// must be used only when instance is in valid state.
521  const GroupInstance operator[](size_t index) const;
522 
523  /// Reinitializes instance as reference to other one.
524  Group& operator=(const Group& other);
525 
526  /// Instance of Message holding
527  /// given repeating group instance.
528  ///
529  /// \warning Due to performance considerations, doesn't
530  /// check whether instance refers to a valid set of fields.
531  /// Use operator bool() to check whether
532  /// instance is in valid state.
533  const Message& message() const;
534 
535 private:
536  friend class MessageOperator;
537 
538  const void* impl_;
539 
540  const Message* container_;
541 
542  Group(const Message*, const void*);
543 };
544 
545 inline const Message& Group::message() const
546 {
547  return *container_;
548 }
549 
550 template <typename Entry>
552 {
553 public:
554  /// Initializes set with no entries.
556  : underlyingGroup_()
557  {
558  }
559 
560  /// Return number of instances in repeating group.
561  size_t size() const
562  {
563  return underlyingGroup_ ? underlyingGroup_.size() : 0;
564  }
565 
566  /// Indicates whether set has an entries.
567  bool empty() const
568  {
569  return 0 == size();
570  }
571 
572  /// Accesses to repeating group instance.
573  ///
574  /// Does NOT check index validness.
575  Entry operator[](size_t index) const
576  {
577  return Entry(underlyingGroup_[index]);
578  }
579 
580  /// Accesses to repeating group instance.
581  ///
582  /// check index validness.
583  Entry at(size_t index) const
584  {
585  if (index < size())
586  {
587  return Entry(underlyingGroup_[index]);
588  }
589 
590  throw std::out_of_range("Index");
591  }
592 
593 protected:
594  TypedGroup(const Group& group)
595  : underlyingGroup_(group)
596  {
597  }
598 
600 };
601 
602 /// Contains flags which affect FIX message textual presentation.
603 struct ONIXS_CME_DROP_COPY_EXPORT MessageStringingFlag
604 {
605  /// Flags which affect FIX message textual presentation.
606  enum Enum
607  {
608  /// Only field values are serialized.
609  NoFieldInfo = 0x0,
610 
611  /// Field tag numbers are included during serialization.
612  IncludeFieldTagNumber = 0x1,
613 
614  /// Field names are included during serialization.
615  IncludeFieldName = 0x2
616  };
617 };
618 
619 /// Collection of message stringing flags.
620 typedef unsigned MessageStringingFlags;
621 
622 /// Encapsulates operations over a FIX Message.
623 ///
624 /// Message supports 'unconstructed' state which can be
625 /// treated as pointer in null state. However, in contrast to
626 /// Group and GroupInstance classes it
627 /// does NOT represent light-weight wrapper over internal structures.
628 /// In fact, it holds all the data which is fully copied on assignment
629 /// or copy construction and disposed at instance destruction.
630 ///
631 /// FIX field related operations now available via FieldSet
632 /// class from which Message class is now derived.
633 class ONIXS_CME_DROP_COPY_EXPORT Message : public FieldSet
634 {
635 public:
636  /// Initializes message in 'unconstructed' state.
637  Message();
638 
639  /// Initializes instance as deep copy of other one.
640  ///
641  /// \param other Message to be copied from.
642  Message(const Message& other);
643 
644  /// Disposes all internal data structures.
645  ///
646  /// \warning Once instance is destructed, all instances of
647  /// Group and GroupInstance classes
648  /// obtained from this instance must not be used any more.
649  ~Message();
650 
651  /// Returns the message type (MsgType(35) field value).
652  FieldValueRef type() const;
653 
654  /// Returns the MsgSeqNum field from CME binary packet header.
655  /// Please note: this field is attributed to packet, not message.
656  /// Packet can contain several messages, so they will share same sequence number.
657  SequenceNumber sequenceNumber() const;
658 
659  /// Returns the Sending Time field from CME binary packet header.
660  /// Please note: this field is attributed to packet, not message.
661  /// Packet can contain several messages, so they will share same sending time.
662  Timestamp sendingTime() const;
663 
664  /// Indicates time when packet
665  /// holding given message was received.
666  const Timestamp& receiveTime() const;
667 
668  /// Returns the string representation of the message using
669  /// the given delimiter and additional control flags.
670  ///
671  /// \param delimiter Defines field delimiter to be used.
672  std::string toString(char delimiter = 0x1) const;
673 
674  /// Appends string representation of the message using
675  /// the given delimiter and additional control flags.
676  ///
677  /// \param str String to which presentation is appended.
678  /// \param delimiter Defines field delimiter to be used.
679  void toString(std::string& str, char delimiter = 0x1) const;
680 
681  // Reassigns message as copy of other one.
682  Message& operator=(const Message&);
683 
684 private:
685  friend class MessageOperator;
686 
687  Message(const void* core, const Timestamp& receiveTime);
688 
689 private:
690  const void* core_;
691  Timestamp receiveTime_;
692 };
693 
694 inline std::string Message::toString(char delimiter) const
695 {
696  std::string str;
697  toString(str, delimiter);
698  return str;
699 }
700 
701 /// Simple wrapper for bitmap field
702 class ONIXS_CME_DROP_COPY_EXPORT BitmapField
703 {
704 public:
705  typedef UInt32 BaseType;
706 
707  /// Initializes bitmap field instance with explicit value.
708  explicit BitmapField(BaseType bits = 0)
709  : bits_(bits)
710  {
711  }
712 
713  /// Initializes bitmap field instance from FIX field set.
714  BitmapField(const FieldSet& msg, Tag tag)
715  : bits_(0)
716  {
717  msg.get(tag).toNumber(bits_);
718  }
719 
720 protected:
721  bool state(BaseType bit) const
722  {
723  return (bits_ >> bit) & 1;
724  }
725 
726  bool any() const
727  {
728  return bits_ != 0;
729  }
730 
731  BaseType bits() const
732  {
733  return bits_;
734  }
735 
736 private:
737  BaseType bits_;
738 };
739 
740 }}}
741 
742 namespace std {
743 
744 // Outputs message into standard stream.
745 ONIXS_CME_DROP_COPY_EXPORT std::ostream&
746 operator<<(std::ostream&, const OnixS::CME::DropCopy::Message&);
747 
748 }
TypedGroup()
Initializes set with no entries.
Definition: Messaging.h:555
Provides efficient way of accessing text-based FIX field values.
Definition: String.h:323
BitmapField(const FieldSet &msg, Tag tag)
Initializes bitmap field instance from FIX field set.
Definition: Messaging.h:714
size_t size() const
Return number of instances in repeating group.
Definition: Messaging.h:561
Entry at(size_t index) const
Definition: Messaging.h:583
const Message & message() const
Definition: Messaging.h:470
unsigned int SequenceNumber
Alias for message/packet sequence number.
Definition: Types.h:28
std::string toString() const
Return string presentation of field value.
Definition: Messaging.h:179
const Message & message() const
Definition: Messaging.h:545
long long Int64
Definition: Numeric.h:35
bool operator==(const FieldValueRef &ref, const std::string &str)
Definition: Messaging.h:188
STL namespace.
bool operator!=(const FieldValueRef &ref, const std::string &str)
Definition: Messaging.h:193
Contains flags which affect FIX message textual presentation.
Definition: Messaging.h:603
unsigned long long UInt64
Definition: Numeric.h:36
static Timestamp fromUnixTimestamp(UInt64 sinceEpoch, SinceEpochUnit unit)
bool empty() const
Indicates whether set has an entries.
Definition: Messaging.h:567
Simple wrapper for bitmap field.
Definition: Messaging.h:702
FieldValueRef get(Tag tag) const
Enumeration::Enum getCharEnumFieldValue(const FieldSet &fieldSet, Tag tag)
Definition: Messaging.h:415
Enum
Flags which affect FIX message textual presentation.
Definition: Messaging.h:606
std::string toString(char delimiter=0x1) const
Definition: Messaging.h:694
TypedGroup(const Group &group)
Definition: Messaging.h:594
unsigned int Tag
FIX message field identifying/indexing type.
Definition: Types.h:31
unsigned int UInt32
Definition: Numeric.h:33
bool getDate(const FieldSet &fieldSet, Tag tag, Timestamp &date)
Definition: Messaging.h:424
bool state(BaseType bit) const
Definition: Messaging.h:721
Entry operator[](size_t index) const
Definition: Messaging.h:575
const Message * container_
Definition: Messaging.h:385
unsigned MessageStringingFlags
Collection of message stringing flags.
Definition: Messaging.h:620
BitmapField(BaseType bits=0)
Initializes bitmap field instance with explicit value.
Definition: Messaging.h:708
Represents timestamp without time-zone information.
Definition: Time.h:437
Decimal type for better precision.
Definition: Numeric.h:44
Enumeration::Enum getIntEnumFieldValue(const FieldSet &fieldSet, Tag tag)
Definition: Messaging.h:405