libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
fixml-datatypes-5-0-SP2.hpp
Go to the documentation of this file.
1 #ifndef ISIMUD_EXCHANGES_FIX_V5_0_SP2_FIXML_DATATYPES_HPP
2 #define ISIMUD_EXCHANGES_FIX_V5_0_SP2_FIXML_DATATYPES_HPP
3 
4 /******************************************************************************
5 ** Copyright © 2019 by J.M.McGuiness, isimud@hussar.me.uk
6 **
7 ** This library is free software; you can redistribute it and/or
8 ** modify it under the terms of the GNU Lesser General Public
9 ** License as published by the Free Software Foundation; either
10 ** version 2.1 of the License, or (at your option) any later version.
11 **
12 ** This library is distributed in the hope that it will be useful,
13 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 ** Lesser General Public License for more details.
16 **
17 ** You should have received a copy of the GNU Lesser General Public
18 ** License along with this library; if not, write to the Free Software
19 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21 
22 // Auto-generated header file.
23 // DO NOT EDIT. IT WILL BE OVERWRITTEN.
24 // Generated: 2020-03-11T03:21:26.04Z
25 
26 #include "../../common/iso_3166_country_codes.hpp"
27 #include "../../common/iso_4217_currency_codes.hpp"
28 #include "../../common/iso_10383_mic_codes.hpp"
29 
30 #include <array>
31 #include <string>
32 
33 #define ISIMUD_FIXML_DATATYPES_HDR_GENERATED_DATE "2020-03-11T03:21:26.04Z"
34 
35 namespace isimud { namespace ISIMUD_VER_NAMESPACE { namespace exchanges { namespace FIX { namespace v5_0sp2 {
36 
37 namespace private_ {
38 
39  enum boolean_type : char {
41  boolean_false='N'
42  };
43 
44 }
45 
46 
47 /// int field representing the length in bytes. Value must be positive.
48 /**
49  int field representing the length in bytes. Value must be positive.
50 */
51 using Length=unsigned long;
52 
53 /// int field representing a field's tag number when using FIX "Tag=Value" syntax. Value must be positive and may not contain leading zeros.
54 /**
55  int field representing a field's tag number when using FIX "Tag=Value" syntax. Value must be positive and may not contain leading zeros.
56 */
57 using TagNum=unsigned long;
58 
59 /// int field representing a message sequence number. Value must be positive.
60 /**
61  int field representing a message sequence number. Value must be positive.
62 */
63 using SeqNum=unsigned long;
64 
65 /// float field capable of storing either a whole number (no decimal places) of "shares" (securities denominated in whole units) or a decimal value containing decimal places for non-share quantity asset classes (securities denominated in fractional units).
66 /**
67  float field capable of storing either a whole number (no decimal places) of "shares" (securities denominated in whole units) or a decimal value containing decimal places for non-share quantity asset classes (securities denominated in fractional units).
68 */
69 using Qty=double;
70 
71 /// float field representing a price. Note the number of decimal places may vary. For certain asset classes prices may be negative values. For example, prices for options strategies can be negative under certain market conditions. Refer to Volume 7: FIX Usage by Product for asset classes that support negative price values.
72 /**
73  float field representing a price. Note the number of decimal places may vary. For certain asset classes prices may be negative values. For example, prices for options strategies can be negative under certain market conditions. Refer to Volume 7: FIX Usage by Product for asset classes that support negative price values.
74 */
75 using Price=double;
76 
77 /// float field representing a price offset, which can be mathematically added to a "Price". Note the number of decimal places may vary and some fields such as LastForwardPoints may be negative.
78 /**
79  float field representing a price offset, which can be mathematically added to a "Price". Note the number of decimal places may vary and some fields such as LastForwardPoints may be negative.
80 */
81 using PriceOffset=double;
82 
83 /// float field typically representing a Price times a Qty
84 /**
85  float field typically representing a Price times a Qty
86 */
87 using Amt=double;
88 
89 /// float field representing a percentage (e.g. 0.05 represents 5% and 0.9525 represents 95.25%). Note the number of decimal places may vary.
90 /**
91  float field representing a percentage (e.g. 0.05 represents 5% and 0.9525 represents 95.25%). Note the number of decimal places may vary.
92 */
93 using Percentage=double;
94 
95 /// char field containing one of two values:
96 /**
97  char field containing one of two values:
98 'Y' = True/Yes
99 'N' = False/No
100 */
101 using Boolean=private_::boolean_type;
102 
103 /// string field containing one or more space delimited single character values (e.g. |18=2 A F| ).
104 /**
105  string field containing one or more space delimited single character values (e.g. |18=2 A F| ).
106 */
107 using MultipleCharValue=std::string;
108 
109 /// string field containing one or more space delimited multiple character values (e.g. |277=AV AN A| ).
110 /**
111  string field containing one or more space delimited multiple character values (e.g. |277=AV AN A| ).
112 */
113 using MultipleStringValue=std::string;
114 
115 /// string field representing a country using ISO 3166 Country code (2 character) values (see Appendix 6-B).
116 /**
117  string field representing a country using ISO 3166 Country code (2 character) values (see Appendix 6-B).
118 */
119 using Country=common::ctry_codes::alpha_2::ISO_3166_Country_Codes;
120 
121 /// string field representing a currency type using ISO 4217 Currency code (3 character) values (see Appendix 6-A).
122 /**
123  string field representing a currency type using ISO 4217 Currency code (3 character) values (see Appendix 6-A).
124 */
125 using Currency=common::ccy_codes::ISO_4217_Currency_Codes;
126 
127 /// string field representing a market or exchange using ISO 10383 Market Identifier Code (MIC) values (see"Appendix 6-C).
128 /**
129  string field representing a market or exchange using ISO 10383 Market Identifier Code (MIC) values (see"Appendix 6-C).
130 */
131 using Exchange=common::mic_codes::ISO_10383_MIC_Codes;
132 
133 /// string field representing month of a year. An optional day of the month can be appended or an optional week code.
134 /**
135  string field representing month of a year. An optional day of the month can be appended or an optional week code.
136 Valid formats:
137 YYYYMM
138 YYYYMMDD
139 YYYYMMWW
140 Valid values:
141 YYYY = 0000-9999; MM = 01-12; DD = 01-31; WW = w1, w2, w3, w4, w5.
142 */
143 using MonthYear=std::string;
144 
145 /// string field representing time/date combination represented in UTC (Universal Time Coordinated, also known as "GMT") in either YYYYMMDD-HH:MM:SS (whole seconds) or YYYYMMDD-HH:MM:SS.sss* format, colons, dash, and period required.
146 /**
147  string field representing time/date combination represented in UTC (Universal Time Coordinated, also known as "GMT") in either YYYYMMDD-HH:MM:SS (whole seconds) or YYYYMMDD-HH:MM:SS.sss* format, colons, dash, and period required.
148 
149 Valid values:
150 YYYY = 0000-9999, MM = 01-12, DD = 01-31, HH = 00-23, MM = 00-59, SS = 00-60 (60 only if UTC leap second), sss* fractions of seconds.
151 The fractions of seconds may be empty when no fractions of seconds are conveyed (in such a case the period is not conveyed), it may include 3 digits to convey milliseconds, 6 digits to convey microseconds, 9 digits to convey nanoseconds, 12 digits to convey picoseconds; Other number of digits may be used with bilateral agreement.
152 
153 Leap Seconds: Note that UTC includes corrections for leap seconds, which are inserted to account for slowing of the rotation of the earth. Leap second insertion is declared by the International Earth Rotation Service (IERS) and has, since 1972, only occurred on the night of Dec. 31 or Jun 30. The IERS considers March 31 and September 30 as secondary dates for leap second insertion, but has never utilized these dates. During a leap second insertion, a UTCTimestamp field may read "19981231-23:59:59", "19981231-23:59:60", "19990101-00:00:00". (see http://tycho.usno.navy.mil/leapsec.html)
154 */
155 using UTCTimestamp=std::string;
156 
157 /// string field representing time-only represented in UTC (Universal Time Coordinated, also known as "GMT") in either HH:MM:SS (whole seconds) or HH:MM:SS.sss* (milliseconds) format, colons, and period required. This special-purpose field is paired with UTCDateOnly to form a proper UTCTimestamp for bandwidth-sensitive messages.
158 /**
159  string field representing time-only represented in UTC (Universal Time Coordinated, also known as "GMT") in either HH:MM:SS (whole seconds) or HH:MM:SS.sss* (milliseconds) format, colons, and period required. This special-purpose field is paired with UTCDateOnly to form a proper UTCTimestamp for bandwidth-sensitive messages.
160 Valid values:
161 HH = 00-23, MM = 00-59, SS = 00-60 (60 only if UTC leap second), sss* fractions of seconds. The fractions of seconds may be empty when no fractions of seconds are conveyed (in such a case the period is not conveyed), it may include 3 digits to convey milliseconds, 6 digits to convey microseconds, 9 digits to convey nanoseconds, 12 digits to convey picoseconds; Other number of digits may be used with bilateral agreement.
162 */
163 using UTCTimeOnly=std::string;
164 
165 /// string field representing Date represented in UTC (Universal Time Coordinated, also known as "GMT") in YYYYMMDD format. This special-purpose field is paired with UTCTimeOnly to form a proper UTCTimestamp for bandwidth-sensitive messages.
166 /**
167  string field representing Date represented in UTC (Universal Time Coordinated, also known as "GMT") in YYYYMMDD format. This special-purpose field is paired with UTCTimeOnly to form a proper UTCTimestamp for bandwidth-sensitive messages.
168 Valid values:
169 YYYY = 0000-9999, MM = 01-12, DD = 01-31.
170 */
171 using UTCDateOnly=std::array<char, 8>;
172 
173 /// string field representing a Date of Local Market (as opposed to UTC) in YYYYMMDD format. This is the "normal" date field used by the FIX Protocol.
174 /**
175  string field representing a Date of Local Market (as opposed to UTC) in YYYYMMDD format. This is the "normal" date field used by the FIX Protocol.
176 
177 Valid values:
178 YYYY = 0000-9999, MM = 01-12, DD = 01-31
179 
180 */
181 using LocalMktDate=std::array<char, 8>;
182 
183 /// used to allow the expression of FX standard tenors in addition to the base valid enumerations defined for the field that uses this pattern data type. This pattern data type is defined as follows:
184 /**
185  used to allow the expression of FX standard tenors in addition to the base valid enumerations defined for the field that uses this pattern data type. This pattern data type is defined as follows:
186 Dx = tenor expression for "days", e.g. "D5", where "x" is any integer &gt; 0
187 Mx = tenor expression for "months", e.g. "M3", where "x" is any integer &gt; 0
188 Wx = tenor expression for "weeks", e.g. "W13", where "x" is any integer &gt; 0
189 Yx = tenor expression for "years", e.g. "Y1", where "x" is any integer &gt; 0
190 */
191 using Tenor=std::string;
192 
193 /// Values "100" and above are reserved for bilaterally agreed upon user defined enumerations.
194 /**
195  Values "100" and above are reserved for bilaterally agreed upon user defined enumerations.
196 */
197 using Reserved100Plus=long;
198 
199 /// Values "1000" and above are reserved for bilaterally agreed upon user defined enumerations.
200 /**
201  Values "1000" and above are reserved for bilaterally agreed upon user defined enumerations.
202 */
203 using Reserved1000Plus=long;
204 
205 /// Values "4000" and above are reserved for bilaterally agreed upon user defined enumerations.
206 /**
207  Values "4000" and above are reserved for bilaterally agreed upon user defined enumerations.
208 */
209 using Reserved4000Plus=long;
210 
211 /// Contains an XML document raw data with no format or content restrictions. XMLData fields are always immediately preceded by a length field. The length field should specify the number of bytes of the value of the data field (up to but not including the terminating SOH).
212 /**
213  Contains an XML document raw data with no format or content restrictions. XMLData fields are always immediately preceded by a length field. The length field should specify the number of bytes of the value of the data field (up to but not including the terminating SOH).
214 */
215 using XMLData=std::string;
216 
217 
218 namespace FIXML_DATATYPES {
219 
220 inline std::string
221 to_string() noexcept(false) {
222  return std::string("Built with FIX data-types generated on: '" ISIMUD_FIXML_DATATYPES_HDR_GENERATED_DATE "'.");
223 }
224 
225 }
226 
227 } } } } }
228 
229 #endif