JayBeams  0.1
Another project to have fun coding.
stock_directory_message.cpp
Go to the documentation of this file.
2 
3 #include <iostream>
4 #include <mutex>
5 #include <string>
6 #include <unordered_map>
7 
8 namespace {
9 typedef std::unordered_map<std::string, std::string> valid_subtype_t;
10 
11 valid_subtype_t valid_subtypes;
12 std::once_flag valid_subtypes_initialized;
13 
14 void initialize_valid_subtypes();
15 } // anonymous namespace
16 
18 
19 bool jb::itch5::validate_issue_subtype::operator()(char const* value) const {
20  std::call_once(valid_subtypes_initialized, initialize_valid_subtypes);
21 
22  return valid_subtypes.find(value) != valid_subtypes.end();
23 }
24 
25 std::ostream& jb::itch5::
26 operator<<(std::ostream& os, stock_directory_message const& x) {
27  return os << x.header << ",stock=" << x.stock
28  << ",market_category=" << x.market_category
29  << ",financial_status_indicator=" << x.financial_status_indicator
30  << ",round_lot_size=" << x.round_lot_size
31  << ",roundlots_only=" << x.roundlots_only
32  << ",issue_classification=" << x.issue_classification
33  << ",issue_subtype=" << x.issue_subtype
34  << ",authenticity=" << x.authenticity
35  << ",short_sale_threshold_indicator="
36  << x.short_sale_threshold_indicator << ",ipo_flag=" << x.ipo_flag
37  << ",luld_reference_price_tier=" << x.luld_reference_price_tier
38  << ",etp_flag=" << x.etp_flag
39  << ",etp_leverage_factor=" << x.etp_leverage_factor
40  << ",inverse_indicator=" << x.inverse_indicator;
41 }
42 
43 namespace {
44 void initialize_valid_subtypes() {
45  valid_subtypes.emplace("A", "Preferred Trust Securities");
46  valid_subtypes.emplace("AI", "Alpha Index ETNs");
47  valid_subtypes.emplace("B", "Index Based Derivative");
48  valid_subtypes.emplace("C", "Common Shares");
49  valid_subtypes.emplace("CB", "Commodity Based Trust Shares");
50  valid_subtypes.emplace("CF", "Commodity Futures Trust Shares");
51  valid_subtypes.emplace("CL", "Commodity-Linked Securities");
52  valid_subtypes.emplace("CM", "Commodity Index Trust Shares");
53  valid_subtypes.emplace("CO", "Collateralized Mortgage Obligation");
54  valid_subtypes.emplace("CT", "Currency Trust Shares");
55  valid_subtypes.emplace("CU", "Commodity-Currency-Linked Securities");
56  valid_subtypes.emplace("CW", "Currency Warrants");
57  valid_subtypes.emplace("D", "Global Depositary Shares");
58  valid_subtypes.emplace("E", "ETF-Portfolio Depositary Receipt");
59  valid_subtypes.emplace("EG", "Equity Gold Shares");
60  valid_subtypes.emplace("EI", "ETN-Equity Index-Linked Securities");
61  valid_subtypes.emplace("EM", "Exchange Traded Managed Funds*");
62  valid_subtypes.emplace("EN", "Exchange Traded Notes");
63  valid_subtypes.emplace("EU", "Equity Units");
64  valid_subtypes.emplace("F", "HOLDRS");
65  valid_subtypes.emplace("FI", "ETN-Fixed Income-Linked Securities");
66  valid_subtypes.emplace("FL", "ETN-Futures-Linked Securities");
67  valid_subtypes.emplace("G", "Global Shares");
68  valid_subtypes.emplace("I", "ETF-Index Fund Shares");
69  valid_subtypes.emplace("IR", "Interest Rate");
70  valid_subtypes.emplace("IW", "Index Warrant");
71  valid_subtypes.emplace("IX", "Index-Linked Exchangeable Notes");
72  valid_subtypes.emplace("J", "Corporate Backed Trust Security");
73  valid_subtypes.emplace("L", "Contingent Litigation Right");
74  valid_subtypes.emplace(
75  "LL", "Identifies securities of companies that are set up "
76  "as a Limited Liability Company (LLC)");
77  valid_subtypes.emplace("M", "Equity-Based Derivative");
78  valid_subtypes.emplace("MF", "Managed Fund Shares");
79  valid_subtypes.emplace("ML", "ETN-Multi-Factor Index-Linked Securities");
80  valid_subtypes.emplace("MT", "Managed Trust Securities");
81  valid_subtypes.emplace("N", "NY Registry Shares");
82  valid_subtypes.emplace("O", "Open Ended Mutual Fund");
83  valid_subtypes.emplace("P", "Privately Held Security");
84  valid_subtypes.emplace("PP", "Poison Pill");
85  valid_subtypes.emplace("PU", "Partnership Units");
86  valid_subtypes.emplace("Q", "Closed-End Funds");
87  valid_subtypes.emplace("R", "Reg-S");
88  valid_subtypes.emplace(
89  "RC", "Commodity-Redeemable Commodity-Linked Securities");
90  valid_subtypes.emplace("RF", "ETN-Redeemable Futures-Linked Securities");
91  valid_subtypes.emplace("RT", "REIT");
92  valid_subtypes.emplace(
93  "RU", "Commodity-Redeemable Currency-Linked Securities");
94  valid_subtypes.emplace("S", "SEED");
95  valid_subtypes.emplace("SC", "Spot Rate Closing");
96  valid_subtypes.emplace("SI", "Spot Rate Intraday");
97  valid_subtypes.emplace("T", "Tracking Stock");
98  valid_subtypes.emplace("TC", "Trust Certificates");
99  valid_subtypes.emplace("TU", "Trust Units");
100  valid_subtypes.emplace("U", "Portal");
101  valid_subtypes.emplace("V", "Contingent Value Right");
102  valid_subtypes.emplace("W", "Trust Issued Receipts");
103  valid_subtypes.emplace("WC", "World Currency Option");
104  valid_subtypes.emplace("X", "Trust");
105  valid_subtypes.emplace("Y", "Other");
106  valid_subtypes.emplace("Z", "Not Applicable");
107 }
108 
109 } // anonymous namespace
financial_status_indicator_t financial_status_indicator
short_sale_threshold_indicator_t short_sale_threshold_indicator
luld_reference_price_tier_t luld_reference_price_tier
bool operator()(char const *value) const
functor operator
std::ostream & operator<<(std::ostream &os, add_order_message const &x)
Streaming operator for jb::itch5::add_order_message.
Represent a &#39;Stock Directory&#39; message in the ITCH-5.0 protocol.