From 70d364b51b4a51a4c324c1dbb9a05de3c6a6461b Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Fri, 14 Aug 2015 19:02:20 -0400 Subject: [PATCH 01/27] Fixes for unit test failures 1. avlTree::empty() method was doing the opposite 2. avlTree::clone_from() did not make a copy of the allocator 3. Data field location fix --- src/C++/Container.h | 3 ++- src/C++/Message.cpp | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/C++/Container.h b/src/C++/Container.h index cd174ecc1..fb89dea6b 100644 --- a/src/C++/Container.h +++ b/src/C++/Container.h @@ -1178,7 +1178,7 @@ class avlTree { { return m_comp; } bool empty() const - { return node::get_parent(this->header_ptr()) != 0; } + { return node::get_parent(this->header_ptr()) == 0; } size_type size() const { @@ -1377,6 +1377,7 @@ class avlTree { void clone_from(const tree_type& src, Cloner cloner, Disposer disposer) { this->clear_and_dispose(disposer); + this->m_comp = src.value_comp(); std::copy(src.begin(), src.end(), CloneInserter(*this, cloner).inserter()); } }; diff --git a/src/C++/Message.cpp b/src/C++/Message.cpp index eafc2992d..3ab66fe51 100644 --- a/src/C++/Message.cpp +++ b/src/C++/Message.cpp @@ -206,7 +206,10 @@ inline bool Message::extractFieldDataLength( Message::FieldReader& reader, const // length field is 1 less except for Signature int lenField = (field != FIELD::Signature) ? (field - 1) : FIELD::SignatureLength; const FieldBase* fieldPtr = (pGroup) ? pGroup->getFieldPtrIfSet( lenField ) : NULL; - if ( fieldPtr || NULL != (fieldPtr = getFieldPtrIfSet( lenField ) ) ) + if ( fieldPtr || + NULL != (fieldPtr = isHeaderField(field)? m_header.getFieldPtrIfSet( lenField ) + : (!isTrailerField(field) ? getFieldPtrIfSet( lenField) + : m_trailer.getFieldPtrIfSet( lenField )) ) ) { const FieldBase::string_type& fieldLength = fieldPtr->getRawString(); if ( IntConvertor::parse( fieldLength, lenField ) ) From bbb55ceecb0d4439d08baeb0cda611639bd650b6 Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Wed, 30 Sep 2015 21:16:00 -0400 Subject: [PATCH 02/27] More robust field map node allocator. Improves deserializaton performance for longer messages. --- README | 68 +++++------ src/C++/FieldMap.h | 23 ++-- src/C++/ItemAllocator.h | 246 ++++++++++++++++++++++++---------------- src/C++/Message.h | 2 +- src/C++/Session.cpp | 2 +- src/C++/Utility.h | 6 +- 6 files changed, 196 insertions(+), 151 deletions(-) diff --git a/README b/README index 48a0ae050..d4efd90bd 100644 --- a/README +++ b/README @@ -124,10 +124,10 @@ CODEC: Measures encoding and decoding performance for a NewOrderSingle message. Results (usec per message, lower is better): FIX8 Quickfix Quickfix quickerfix - 1.3.2 1.13.3 1.14.3 20150530 + 1.3.2 1.13.3 1.14.3 20150930 -to string 2.25516 8.17674 4.38878 0.943966 -from string 7.6158 25.7686 9.422 3.0016 +to string 2.25516 8.17674 4.38878 0.956546 +from string 7.6158 25.7686 9.422 2.90573 @@ -140,86 +140,86 @@ PT: Measures performance of various QuickFix subsystems Results (operations per second, higher is better): Quickfix Quickfix quickerfix - 1.13.3 1.14.3 20150530 + 1.13.3 1.14.3 20150930 -Converting integers to strings: 2.17391e+07 2.5e+07 2.44421e+07 +Converting integers to strings: 2.17391e+07 2.5e+07 2.51373e+07 -Converting strings to integers: 1.66667e+08 2.5e+08 3.10329e+08 +Converting strings to integers: 1.66667e+08 2.5e+08 3.08711e+08 -Converting doubles to strings: 1.10375e+06 1.04712e+06 9.07414e+06 +Converting doubles to strings: 1.10375e+06 1.04712e+06 9.18364e+06 -Converting strings to doubles: 4.6729e+06 5.26316e+07 8.9659e+07 +Converting strings to doubles: 4.6729e+06 5.26316e+07 8.96324e+07 -Creating Heartbeat messages: 1.00604e+06 1.54083e+06 4.39625e+06 +Creating Heartbeat messages: 1.00604e+06 1.54083e+06 4.76452e+06 -Identifying message types: 6.99301e+06 6.99301e+06 1.19528e+07 +Identifying message types: 6.99301e+06 6.99301e+06 1.19202e+07 Serializing Heartbeat messages -to strings: 847458 1.20627e+06 3.18288e+06 +to strings: 847458 1.20627e+06 3.22701e+06 Serializing Heartbeat messages -from strings: 392003 625391 2.26854e+06 +from strings: 392003 625391 2.32253e+06 Serializing Heartbeat messages -from strings and validation: - 541419 2.11829e+06 +from strings and validation: - 541419 2.23699e+06 -Creating NewOrderSingle messages: 331785 406669 1.23483e+06 - (packed): - - 1.47393e+06 +Creating NewOrderSingle messages: 331785 406669 1.16075e+06 + (packed): - - 1.3868e+06 Serializing NewOrderSingle messages -to strings: 652316 925069 2.40181e+06 +to strings: 652316 925069 2.42413e+06 Serializing NewOrderSingle messages -from strings: 152346 290698 975234 +from strings: 152346 290698 1.01755e+06 Serializing NewOrderSingle messages -from strings and validation: - 261438 848133 +from strings and validation: - 261438 883252 -Creating QuoteRequest messages: 13621.9 20406.5 52587.2 - (packed): - - 78288.3 - (packed, in place): - - 124293 +Creating QuoteRequest messages: 13621.9 20406.5 55109.5 + (packed): - - 78222.7 + (packed, in place): - - 134653 Serializing QuoteRequest messages -to strings: 174490 239292 510976 +to strings: 174490 239292 515361 Serializing QuoteRequest messages -from strings: 16942.8 32526.7 91896.2 +from strings: 16942.8 32526.7 111887 Serializing QuoteRequest messages -from strings and validation: - 30869 73258.6 +from strings and validation: - 30869 74140.3 Reading fields from QuoteRequest -message: 28681.2 72695.6 123567 +message: 28681.2 72695.6 127297 -Storing NewOrderSingle messages: 299670 281057 333269 +Storing NewOrderSingle messages: 299670 281057 329373 Validating NewOrderSingle messages -with no data dictionary: 5.64972e+06 5.74713e+06 1.2769e+07 +with no data dictionary: 5.64972e+06 5.74713e+06 1.24328e+07 Validating NewOrderSingle messages -with data dictionary: 345901 457247 1.03472e+06 +with data dictionary: 345901 457247 1.01284e+06 Validating QuoteRequest messages -with no data dictionary: 9.80392e+06 9.34579e+06 1.9968e+07 +with no data dictionary: 9.80392e+06 9.34579e+06 1.88876e+07 Validating QuoteRequest messages -with data dictionary: 478240 548847 830909 +with data dictionary: 478240 548847 832804 Sending/Receiving NewOrderSingle/ExecutionReports -on Socket 59883.8 92489.8 242988 +on Socket 59883.8 92489.8 245168 Sending/Receiving NewOrderSingle/ExecutionReport -on ThreadedSocket 59862.3 92850.5 244599 +on ThreadedSocket 59862.3 92850.5 247119 Sending/Receiving NewOrderSingle/ExecutionReports -dictionary - 70681.4 183523 +on Socket with data dictionary - 70681.4 183792 Sending/Receiving NewOrderSingle/ExecutionReports -on ThreadedSocket with data dictionary - 73367.6 185659 +on ThreadedSocket with data dictionary - 73367.6 188160 diff --git a/src/C++/FieldMap.h b/src/C++/FieldMap.h index 58c855ade..3e50dd3ff 100644 --- a/src/C++/FieldMap.h +++ b/src/C++/FieldMap.h @@ -103,7 +103,7 @@ class FieldMap disposer_type(A& a) : m_allocator(a) {} void operator()(stored_type* p) { p->~stored_type(); - m_allocator.deallocate(p, 1); + m_allocator.deallocate(p); } }; @@ -111,7 +111,7 @@ class FieldMap A& m_allocator; cloner_type(A& a) : m_allocator(a) {} stored_type* operator()(const stored_type& r) { - return new (m_allocator.allocate(1)) stored_type(r); + return new (m_allocator.allocate()) stored_type(r); } }; @@ -144,7 +144,6 @@ class FieldMap #endif - static const std::size_t AllocationUnit = sizeof(stored_type); ItemAllocator< stored_type > m_allocator; public: @@ -250,7 +249,7 @@ class FieldMap const store_type& src = from.m_fields; store_type::const_iterator e = src.end(); for ( store_type::const_iterator it = src.begin(); it != e; ++it ) { - n = new ( m_allocator.allocate(1) ) stored_type(*it); + n = new ( m_allocator.allocate() ) stored_type(*it); m_fields.push_back( *n ); c.next( n ); } @@ -323,7 +322,7 @@ class FieldMap } template stored_type& HEAVYUSE push_back(const Arg& arg) { - stored_type* p = new (m_allocator.allocate(1)) stored_type( arg ); + stored_type* p = new (m_allocator.allocate()) stored_type( arg ); m_list.push_back(p); m_fields.push_back(*p); return *p; @@ -341,7 +340,7 @@ class FieldMap const store_type& src = from.m_fields; store_type::const_iterator e = src.end(); for (store_type::const_iterator it = src.begin(); it != e; ++it) - m_fields.push_back( *new (m_allocator.allocate(1)) stored_type(*it) ); + m_fields.push_back( *new (m_allocator.allocate()) stored_type(*it) ); } inline void f_clone(const FieldMap& from) { @@ -365,7 +364,7 @@ class FieldMap } template stored_type& HEAVYUSE push_back(const Arg& arg) { - stored_type* p = new (m_allocator.allocate(1)) stored_type( arg ); + stored_type* p = new (m_allocator.allocate()) stored_type( arg ); m_fields.push_back(*p); return *p; } @@ -379,16 +378,16 @@ class FieldMap } template field_iterator HEAVYUSE add(const Arg& arg) { - return link_next(m_fields.insert_equal(*new (m_allocator.allocate(1)) stored_type( arg ))); + return link_next(m_fields.insert_equal(*new (m_allocator.allocate()) stored_type( arg ))); } template field_iterator HEAVYUSE add(field_iterator hint, const Arg& arg) { - return link_next(m_fields.insert_equal(to_store_iterator(hint), *new (m_allocator.allocate(1)) stored_type( arg ))); + return link_next(m_fields.insert_equal(to_store_iterator(hint), *new (m_allocator.allocate()) stored_type( arg ))); } template store_type::iterator HEAVYUSE assign(int tag, const Arg& arg) { store_type::insert_commit_data data; std::pair r = m_fields.insert_unique_check( tag, m_fields.value_comp(), data); - if (r.second) link_next(r.first = m_fields.insert_unique_commit( *new (m_allocator.allocate(1)) stored_type( tag, arg ), data )); + if (r.second) link_next(r.first = m_fields.insert_unique_commit( *new (m_allocator.allocate()) stored_type( tag, arg ), data )); else assign_value(r.first, arg ); return r.first; } @@ -650,9 +649,9 @@ class FieldMap } static inline - allocator_type create_allocator(std::size_t n = ItemStore::MaxCapacity) + allocator_type create_allocator(std::size_t n = allocator_type::DefaultCapacity) { - return allocator_type( ItemStore::buffer(n * AllocationUnit) ); + return allocator_type( allocator_type::buffer_type::create(n) ); } protected: diff --git a/src/C++/ItemAllocator.h b/src/C++/ItemAllocator.h index 70e66e711..1c3faced6 100644 --- a/src/C++/ItemAllocator.h +++ b/src/C++/ItemAllocator.h @@ -26,57 +26,137 @@ namespace FIX { + // Caching allocator for node-based containers + template class ItemStore { + template + struct Options + { + static const std::size_t Padding = A2 - sizeof(U) % A2; + union Entry { + char m_v[sizeof(U) + Padding % A2]; + U* m_p; + }; + static const std::size_t Allow = sizeof(Entry) == sizeof(typename Options::Entry); + int type_compatibility_for_item_store : Allow; + }; public: - static const int MaxCapacity = 64; + class Buffer + { + class Segment { + typedef typename Options::Entry Entry; + unsigned m_count, m_num; + Segment* m_next; + public: + Segment(unsigned num, Segment* next) : m_count(0), m_num(num), m_next(next) {} + + void reset(Segment* next = NULL) { m_count = 0; m_next = next; } + + T* PURE_DECL start() const { return (T*)(this + 1); } + T* PURE_DECL end() const { return (T*)((Entry*)(this + 1) + m_num); } + + Segment* PURE_DECL next() const { return m_next; } + Segment* next(Segment* p) { return m_next = p; } + + bool PURE_DECL space() const { return m_count < m_num; } + T* reserve() { return start() + m_count++; } + Segment* extend() + { + unsigned num = m_num << 1; // double the size for the next segment + Segment* h = (Segment*)(ALLOCATOR().allocate(num * sizeof(Entry) + sizeof(Segment))); + return new (h) Segment(num, this); + } + }; + + T* m_pfree; + unsigned m_shared; + Segment m_seg; // must be the last member! - static const int SharedCapacity = MaxCapacity; - static const int DefaultCapacity = MaxCapacity / 2; + Segment* PURE_DECL top() const { return m_seg.next(); } + Segment* top(Segment* p) { return m_seg.next(p); } + + void free_segments() + { + for (Buffer::Segment* n,* s = top(); s != &m_seg; s = n) + { + n = s->next(); + ALLOCATOR().deallocate((unsigned char*)s, 0); + } + } + + public: + + Buffer(unsigned num, unsigned referenced) + : m_pfree(NULL), m_shared(referenced + 1), m_seg(num, &m_seg) {} + + unsigned addRef() { return ++m_shared; } + unsigned decRef() { return --m_shared; } + + static inline Buffer* create(unsigned num, unsigned referenced = 0) + { + Buffer* h = (Buffer*) (ALLOCATOR().allocate(num * sizeof(T) + sizeof(Buffer))); + return new (h) Buffer(num, referenced); + } - struct Buffer { - typedef Util::BitSet Bitmap; + bool verify(T* p) + { + Buffer::Segment* s = top(); + do { if (p >= s->start() && p < s->end()) return true; s = s->next(); } while (s != top()); + return false; + } + + T* acquire() + { + if ( LIKELY(!m_pfree) ) + return ( LIKELY(top()->space()) ? top() : top(top()->extend()) )->reserve(); + T* p = m_pfree; + m_pfree = *(T**)p; + return p; + } + + void release(T* p) + { + *(T**)p = m_pfree; + m_pfree = p; + } - unsigned m_shared; - unsigned m_item_size; - std::size_t m_size; - Bitmap m_bitmap; + void clear() + { + free_segments(); + m_seg.reset(&m_seg); + m_pfree = NULL; + } + + static void destroy(Buffer* p) + { + p->free_segments(); + ALLOCATOR().deallocate((unsigned char*)p, 0); + } }; - ItemStore(Buffer* b = NULL) : m_buffer(b) {} - ItemStore(ItemStore const& a) - : m_buffer( a.m_buffer ) - { - if ( m_buffer ) m_buffer->m_shared++; - } - void clear() - { - if ( m_buffer ) - m_buffer->m_item_size = 0; - } + inline ItemStore(Buffer* b = NULL) : m_buffer( b ) {} + inline ItemStore(ItemStore const& s) : m_buffer( s.m_buffer ) + { if ( m_buffer ) m_buffer->addRef(); } - std::size_t item_size() const - { - return (m_buffer) ? m_buffer->m_item_size : 0; - } + template + inline ItemStore(ItemStore const& s, int = sizeof(Options)) + : m_buffer( (Buffer*)s.m_buffer ) + { if ( m_buffer ) m_buffer->addRef(); } - static Buffer* buffer(std::size_t size, unsigned short referenced = 0) - { - Buffer* h = (Buffer*) - (ALLOCATOR().allocate(size + sizeof(Buffer))); - h->m_shared = referenced + 1; - h->m_item_size = 0; - h->m_size = size; - return h; - } + template + bool operator==(ItemStore const& s) const + { return (void*)m_buffer == (void*)s.m_buffer; } + + template friend class ItemStore; - protected: - Buffer* m_buffer; + protected: + Buffer* m_buffer; }; template - class ItemAllocator : public ItemStore + class ItemAllocator : public ItemStore { public : @@ -89,6 +169,11 @@ namespace FIX typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; + typedef ItemStore item_store; + typedef typename item_store::Buffer buffer_type; + + static const unsigned DefaultCapacity = 32; + public : // convert an allocator to allocator template @@ -98,89 +183,50 @@ namespace FIX public : inline ItemAllocator() {} - inline ItemAllocator(Buffer* b) : ItemStore(b) {} + inline ItemAllocator(buffer_type* b) : item_store(b) {} inline explicit ItemAllocator(ItemAllocator const& a) - : ItemStore(a) {} + : item_store(a) {} template inline ItemAllocator(ItemAllocator const& u) - : ItemStore(u) {} + : item_store(u) {} inline ~ItemAllocator() // clean up here, not a virtual dtor { - if ( m_buffer && --m_buffer->m_shared == 0 ) - ALLOCATOR().deallocate((unsigned char*)m_buffer, 0); + buffer_type* buf = this->m_buffer; + if ( buf && buf->decRef() == 0 ) buffer_type::destroy(buf); } + + template + inline bool operator==(ItemAllocator const& u) const + { return this->m_buffer ? static_cast&>(*this) == + static_cast&>(u) : false; } + void clear() + { if ( this->m_buffer ) this->m_buffer->clear(); } // address inline pointer address(reference r) { return &r; } inline const_pointer address(const_reference r) { return &r; } // memory allocation - inline pointer HEAVYUSE allocate(size_type cnt, - typename std::allocator::const_pointer = 0) + inline pointer HEAVYUSE allocate() // shortcut for one element { - if ( LIKELY(cnt == 1) ) - { -restart: - if ( LIKELY(NULL != m_buffer) ) - { - unsigned char (*arena)[sizeof(value_type)] = - (unsigned char(*)[sizeof(value_type)])(m_buffer + 1); - if ( LIKELY(0 != m_buffer->m_item_size) ) - { -mapped: - if ( LIKELY(m_buffer->m_item_size == sizeof(value_type)) ) - { - Buffer::Bitmap& bitmap = m_buffer->m_bitmap; - unsigned char slot = bitmap._Find_first(); - if ( LIKELY(slot != bitmap.size()) ) - { - bitmap.reset(slot); - return (value_type*)(arena[slot]); - } - } - } - else - { - unsigned elements = m_buffer->m_size / sizeof(value_type); - if ( elements ) - { - Buffer::Bitmap& bitmap = m_buffer->m_bitmap; - elements = (std::min)(elements, (unsigned)bitmap.size()); - bitmap.set(); - bitmap >>= (bitmap.size() - elements); - m_buffer->m_item_size = sizeof(value_type); - goto mapped; - } - else - { - m_buffer->m_bitmap.reset(); - } - } - } - else - { - m_buffer = buffer(MaxCapacity * sizeof(value_type)); - goto restart; - } - } - return m_allocator.allocate(cnt); + buffer_type* buf = this->m_buffer; + if ( LIKELY(NULL != buf) ) return buf->acquire(); + this->m_buffer = buffer_type::create(DefaultCapacity); + return this->m_buffer->acquire(); } + inline pointer HEAVYUSE allocate(size_type cnt, + typename std::allocator::const_pointer = 0) + { return ( LIKELY(cnt == 1) ) ? allocate() : m_allocator.allocate(cnt); } + + inline void deallocate(pointer p) // shortcut for one element + { this->m_buffer->release(p); } + inline void deallocate(pointer p, size_type t) - { - if (m_buffer && (unsigned char*)p > ((unsigned char*)m_buffer) && - (unsigned char*)p < ((unsigned char*)m_buffer + - sizeof(Buffer) + m_buffer->m_size)) - { - unsigned char slot = p - (value_type*)(m_buffer + 1); - m_buffer->m_bitmap.set(slot); - return; - } - m_allocator.deallocate(p, t); - } + { (this->m_buffer && this->m_buffer->verify(p)) ? this->m_buffer->release(p) : m_allocator.deallocate(p, t); } // size inline size_type max_size() const diff --git a/src/C++/Message.h b/src/C++/Message.h index 556dba5b9..56214652e 100644 --- a/src/C++/Message.h +++ b/src/C++/Message.h @@ -374,7 +374,7 @@ class Message : public FieldMap Message(); /// Construct a message with hints - Message( SerializationHint, int hintFieldCount = ItemStore::DefaultCapacity ); + Message( SerializationHint, int hintFieldCount = allocator_type::DefaultCapacity ); /// Construct a message from a string Message( const std::string& string, bool validate = true ) diff --git a/src/C++/Session.cpp b/src/C++/Session.cpp index 59cda6b73..93a44c3a4 100644 --- a/src/C++/Session.cpp +++ b/src/C++/Session.cpp @@ -68,7 +68,7 @@ Session::Session( Application& application, m_messageStoreFactory( messageStoreFactory ), m_pLogFactory( pLogFactory ), m_pResponder( 0 ), - m_rcvAllocator( Message::create_allocator(ItemStore::MaxCapacity) ) + m_rcvAllocator( Message::create_allocator( FieldMap::allocator_type::DefaultCapacity << 3 ) ) { m_state.heartBtInt( heartBtInt ); m_state.initiate( heartBtInt != 0 ); diff --git a/src/C++/Utility.h b/src/C++/Utility.h index 87ef1f21a..7e6091940 100644 --- a/src/C++/Utility.h +++ b/src/C++/Utility.h @@ -415,7 +415,7 @@ namespace FIX template static inline std::size_t PURE_DECL HEAVYUSE bit_scan(W w, std::size_t from = 0) { - return bitop::bsf( w & (~(W)0 << from) ); + return bitop::bsf( w & ((from < (sizeof(W) << 3)) ? (~(W)0 << from): (W)0) ); } } // namespace detail @@ -1422,7 +1422,7 @@ namespace FIX int _Find_next( int b ) { std::size_t i = b >> word_shift; - std::size_t v = detail::bit_scan(m_bits[i], b & (word_size - 1)); + std::size_t v = detail::bit_scan(m_bits[i], ++b); return (word_size != v) ? ((i << word_shift) + v) : _Find_from(++i); } @@ -1521,7 +1521,7 @@ namespace FIX int _Find_next( int b ) { - return detail::bit_scan(m_bits, b); + return detail::bit_scan(m_bits, ++b); } inline BitSet NOTHROW_PRE & NOTHROW_POST operator <<=(int n) { m_bits <<= n; return *this; } From bfc9d23eb7fb0c4a5d91bfe4ccf51a6c9b7df765 Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Wed, 30 Sep 2015 22:29:27 -0400 Subject: [PATCH 03/27] Small fix for previous commit. --- src/C++/ItemAllocator.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/C++/ItemAllocator.h b/src/C++/ItemAllocator.h index 1c3faced6..9db7b209f 100644 --- a/src/C++/ItemAllocator.h +++ b/src/C++/ItemAllocator.h @@ -45,8 +45,8 @@ namespace FIX public: class Buffer { + typedef typename Options::Entry Entry; class Segment { - typedef typename Options::Entry Entry; unsigned m_count, m_num; Segment* m_next; public: @@ -70,9 +70,9 @@ namespace FIX } }; - T* m_pfree; + T* m_pfree; unsigned m_shared; - Segment m_seg; // must be the last member! + Segment m_seg; // must be the last member! Segment* PURE_DECL top() const { return m_seg.next(); } Segment* top(Segment* p) { return m_seg.next(p); } @@ -96,7 +96,7 @@ namespace FIX static inline Buffer* create(unsigned num, unsigned referenced = 0) { - Buffer* h = (Buffer*) (ALLOCATOR().allocate(num * sizeof(T) + sizeof(Buffer))); + Buffer* h = (Buffer*) (ALLOCATOR().allocate(num * sizeof(Entry) + sizeof(Buffer))); return new (h) Buffer(num, referenced); } From a77eeb131dd5a165372fdc09b587ad9296a494d0 Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Thu, 7 Jan 2016 22:19:38 -0500 Subject: [PATCH 04/27] Performance improvements More flexible field container implementation, option to use a flat container, allocator and timestamp cleanups for 20% higher thoughput. --- README | 121 ++-- configure.ac | 2 + m4/ax_fieldmap.m4 | 22 + m4/ax_lib_boost.m4 | 47 -- m4/ax_ordering.m4 | 25 + src/C++/Container.h | 1213 +++++++++++++++++++++++++++---------- src/C++/FieldConvertors.h | 2 +- src/C++/FieldMap.cpp | 8 +- src/C++/FieldMap.h | 697 ++++++++++++++------- src/C++/FieldTypes.cpp | 24 +- src/C++/FieldTypes.h | 9 + src/C++/ItemAllocator.h | 94 +-- src/C++/Makefile.am | 4 +- src/C++/Message.cpp | 49 +- src/C++/Message.h | 48 +- src/C++/MessageStore.h | 4 +- src/C++/Session.cpp | 30 +- src/C++/Session.h | 4 +- src/C++/Utility.h | 280 ++++++++- 19 files changed, 1900 insertions(+), 783 deletions(-) create mode 100644 m4/ax_fieldmap.m4 create mode 100644 m4/ax_ordering.m4 diff --git a/README b/README index d4efd90bd..1830e7585 100644 --- a/README +++ b/README @@ -50,16 +50,16 @@ OPTIONAL DEPENDENCIES FOR EXTRA PERFORMANCE --with-tbb=/opt/intel/tbb --with-tbb-arch=intel64/gcc4.4 - There are several additional field map configuration options available - with Boost, + There are two field map configuration options available - --with-fieldmap={ boost::intrusive::avltree, - boost::intrusive::rbtree, - boost::intrusive::sgtree } - --with-slist-traversal + --with-fieldmap={ avl, flat } - Default configuration without Boost falls back to the internal - implementation of intrusive AVL tree with embedded singly linked list. + Default configuration uses a custom implementation of intrusive AVL tree + with embedded singly linked list. AVL map can be used with an additional + option which permits a certain number of unordered fields in the outgoing + message body. + + --with-relaxed-ordering={ 8, 16 } WINDOWS @@ -83,8 +83,9 @@ OPTIONAL DEPENDENCIES FOR EXTRA PERFORMANCE PLATFORM-SPECIFIC NOTES Use --with-sso configure option to enable short string optimization on platforms - which use GLIBC for extra 10-15% improvement. This does not apply to Visual Studio - builds as string implementation shipped with it already employs this optimization. + which use GLIBC for extra 10-15% improvement. This does not apply to g++ versions + 5.2 and above or Visual Studio builds as string implementations shipped with them + already employ this optimization. Recommended environment for G++ on Nehalem and above: CXXFLAGS="-O3 -march=core2 -msse4.2 -falign-functions=16 -falign-jumps=16" or @@ -124,10 +125,10 @@ CODEC: Measures encoding and decoding performance for a NewOrderSingle message. Results (usec per message, lower is better): FIX8 Quickfix Quickfix quickerfix - 1.3.2 1.13.3 1.14.3 20150930 + 1.3.2 1.13.3 1.14.3 20160106 -to string 2.25516 8.17674 4.38878 0.956546 -from string 7.6158 25.7686 9.422 2.90573 +to string 2.25516 8.17674 4.38878 0.940918 +from string 7.6158 25.7686 9.422 2.91121 @@ -139,87 +140,95 @@ PT: Measures performance of various QuickFix subsystems Results (operations per second, higher is better): - Quickfix Quickfix quickerfix - 1.13.3 1.14.3 20150930 + Quickfix Quickfix quickerfix + 1.13.3 1.14.3 20160106 -Converting integers to strings: 2.17391e+07 2.5e+07 2.51373e+07 +Converting integers to strings: 2.17391e+07 2.5e+07 2.58512e+07 -Converting strings to integers: 1.66667e+08 2.5e+08 3.08711e+08 +Converting strings to integers: 1.66667e+08 2.5e+08 3.0858e+08 -Converting doubles to strings: 1.10375e+06 1.04712e+06 9.18364e+06 +Converting doubles to strings: 1.10375e+06 1.04712e+06 8.69092e+06 -Converting strings to doubles: 4.6729e+06 5.26316e+07 8.96324e+07 +Converting strings to doubles: 4.6729e+06 5.26316e+07 1.05441e+08 -Creating Heartbeat messages: 1.00604e+06 1.54083e+06 4.76452e+06 +Creating Heartbeat messages: 1.00604e+06 1.54083e+06 4.82279e+06 -Identifying message types: 6.99301e+06 6.99301e+06 1.19202e+07 +Identifying message types: 6.99301e+06 6.99301e+06 1.17918e+07 Serializing Heartbeat messages -to strings: 847458 1.20627e+06 3.22701e+06 +to strings: 847458 1.20627e+06 3.11025e+06 Serializing Heartbeat messages -from strings: 392003 625391 2.32253e+06 +from strings: 392003 625391 2.40679e+06 Serializing Heartbeat messages -from strings and validation: - 541419 2.23699e+06 +from strings and validation: - 541419 2.25198e+06 -Creating NewOrderSingle messages: 331785 406669 1.16075e+06 - (packed): - - 1.3868e+06 +Creating NewOrderSingle +messages: 331785 406669 1.45719e+06 + (packed): - - 1.70535e+06 -Serializing NewOrderSingle messages -to strings: 652316 925069 2.42413e+06 +Serializing NewOrderSingle +messages to strings: 652316 925069 2.2555e+06 -Serializing NewOrderSingle messages -from strings: 152346 290698 1.01755e+06 +Serializing NewOrderSingle +messages from strings: 152346 290698 1.10019e+06 -Serializing NewOrderSingle messages -from strings and validation: - 261438 883252 +Serializing NewOrderSingle +messages from strings +and validation: - 261438 927520 -Creating QuoteRequest messages: 13621.9 20406.5 55109.5 - (packed): - - 78222.7 - (packed, in place): - - 134653 +Creating QuoteRequest +messages: 13621.9 20406.5 57489.8 + (packed): - - 84028.4 + (packed, in place): - - 136460 -Serializing QuoteRequest messages -to strings: 174490 239292 515361 +Serializing QuoteRequest +messages to strings: 174490 239292 507281 -Serializing QuoteRequest messages -from strings: 16942.8 32526.7 111887 +Serializing QuoteRequest +messages from strings: 16942.8 32526.7 119041 -Serializing QuoteRequest messages -from strings and validation: - 30869 74140.3 +Serializing QuoteRequest +messages from strings +and validation: - 30869 76585.5 -Reading fields from QuoteRequest -message: 28681.2 72695.6 127297 +Reading fields +from QuoteRequest message: 28681.2 72695.6 131851 -Storing NewOrderSingle messages: 299670 281057 329373 +Storing NewOrderSingle +messages: 299670 281057 346428 -Validating NewOrderSingle messages -with no data dictionary: 5.64972e+06 5.74713e+06 1.24328e+07 +Validating NewOrderSingle +messages without +data dictionary: 5.64972e+06 5.74713e+06 1.26488e+07 -Validating NewOrderSingle messages -with data dictionary: 345901 457247 1.01284e+06 +Validating NewOrderSingle +messages with data dictionary: 345901 457247 1.02659e+06 -Validating QuoteRequest messages -with no data dictionary: 9.80392e+06 9.34579e+06 1.88876e+07 +Validating QuoteRequest +messages without +data dictionary: 9.80392e+06 9.34579e+06 1.95497e+07 -Validating QuoteRequest messages -with data dictionary: 478240 548847 832804 +Validating QuoteRequest +messages with data dictionary: 478240 548847 836525 Sending/Receiving NewOrderSingle/ExecutionReports -on Socket 59883.8 92489.8 245168 +on Socket 59883.8 92489.8 289035 Sending/Receiving NewOrderSingle/ExecutionReport -on ThreadedSocket 59862.3 92850.5 247119 +on ThreadedSocket 59862.3 92850.5 297311 Sending/Receiving NewOrderSingle/ExecutionReports -on Socket with data dictionary - 70681.4 183792 +on Socket with data dictionary - 70681.4 207909 Sending/Receiving NewOrderSingle/ExecutionReports -on ThreadedSocket with data dictionary - 73367.6 188160 +on ThreadedSocket +with data dictionary - 73367.6 214496 diff --git a/configure.ac b/configure.ac index d7c2961b4..5126cb34a 100644 --- a/configure.ac +++ b/configure.ac @@ -29,6 +29,8 @@ AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL AM_PROG_LEX +AX_ORDERING() +AX_FIELDMAP() AX_SSO() AX_LIB_MYSQL() AX_LIB_POSTGRESQL() diff --git a/m4/ax_fieldmap.m4 b/m4/ax_fieldmap.m4 new file mode 100644 index 000000000..2f08b3368 --- /dev/null +++ b/m4/ax_fieldmap.m4 @@ -0,0 +1,22 @@ +AC_DEFUN([AX_FIELDMAP], +[ +has_fieldmap=false +AC_ARG_WITH(fieldmap, + [ --with-fieldmap= Selects container for field storage], + [if test $withval == "no" + then + has_fieldmap=false + else + has_fieldmap=true + fi], + has_fieldmap=false +) + +if test "x$with_fieldmap" = "xflat" +then + AC_DEFINE_UNQUOTED(ENABLE_FLAT_FIELDMAP, 1, Define to use flat set container for the message body) +elif test "x$with_fieldmap" != "xavl" && test "x$with_fieldmap" != "x" +then + AC_MSG_ERROR([invalid value: $with_fieldmap]) +fi +]) diff --git a/m4/ax_lib_boost.m4 b/m4/ax_lib_boost.m4 index 7e194b2ac..afb835892 100644 --- a/m4/ax_lib_boost.m4 +++ b/m4/ax_lib_boost.m4 @@ -14,20 +14,6 @@ AC_ARG_WITH(boost, BOOST_PREFIX=$with_boost AC_SUBST(BOOST_PREFIX) -has_fieldmap= -AC_ARG_WITH(fieldmap, - [ --with-fieldmap= select non-default field map implementation - - "boost::intrusive::sgtree", "boost::intrusive::rbtree", - or "boost::intrusive::avltree"], - [has_fieldmap=$withval], - has_fieldmap="default" -) -has_slist=false -AC_ARG_WITH(slist-traversal, - [ --with-slist-traversal maintain a single linked list for faster tree traversal], - [has_slist=$withval; test "$withval" = no || has_slist=true], - has_slist=false -) if test $has_boost = true then BOOST_LIBS="-L${BOOST_PREFIX}/lib -lboost_system -lboost_thread" @@ -47,37 +33,4 @@ then AC_MSG_RESULT(yes), AC_MSG_ERROR(no)) fi -AC_MSG_CHECKING(for FieldMap container type) -case $has_fieldmap in - boost::intrusive::sgtree) - AC_DEFINE(ENABLE_BOOST_SGTREE, 1, Define for boost::intrusive::sgtree) - if test $has_slist = true - then - AC_DEFINE(ENABLE_SLIST_TREE_TRAVERSAL, 1, Define for tree with list) - AC_MSG_RESULT(boost::intrusive::sgtree with list) - else - AC_MSG_RESULT(boost::intrusive::sgtree) - fi;; - boost::intrusive::rbtree) - AC_DEFINE(ENABLE_BOOST_RBTREE, 1, Define for boost::intrusive::rbtree) - if test $has_slist = true - then - AC_DEFINE(ENABLE_SLIST_TREE_TRAVERSAL, 1, Define for tree with list) - AC_MSG_RESULT(boost::intrusive::rbtree with list) - else - AC_MSG_RESULT(boost::intrusive::rbtree) - fi;; - boost::intrusive::avltree) - AC_DEFINE(ENABLE_BOOST_AVLTREE, 1, Define for boost::intrusive::avltree) - if test $has_slist = true - then - AC_DEFINE(ENABLE_SLIST_TREE_TRAVERSAL, 1, Define for tree with list) - AC_MSG_RESULT(boost::intrusive::avltree with list) - else - AC_MSG_RESULT(boost::intrusive::avltree) - fi;; - *) - AC_MSG_RESULT(defaulting to the Container::avlTree) - ;; -esac ]) diff --git a/m4/ax_ordering.m4 b/m4/ax_ordering.m4 new file mode 100644 index 000000000..805352659 --- /dev/null +++ b/m4/ax_ordering.m4 @@ -0,0 +1,25 @@ +AC_DEFUN([AX_ORDERING], +[ +has_relaxed_ordering=false +AC_ARG_WITH(relaxed_ordering, + [ --with-relaxed-ordering=<8, 16> Allows for up to the given number of out of order fields in the message body], + [if test $withval == "no" + then + has_relaxed_ordering=false + else + has_relaxed_ordering=true + fi], + has_relaxed_ordering=false +) + +if test "x$with_relaxed_ordering" = "x8" +then + AC_DEFINE_UNQUOTED(ENABLE_RELAXED_ORDERING, 8, Allow up to 8 out of order fields in the message body) +elif test "x$with_relaxed_ordering" = "x16" || test "x$with_relaxed_ordering" == "xyes" +then + AC_DEFINE_UNQUOTED(ENABLE_RELAXED_ORDERING, 16, Allow up to 16 out of order fields in the message body) +elif test "x$with_relaxed_ordering" != "xno" && test "x$with_relaxed_ordering" != "x" +then + AC_MSG_ERROR([invalid value: $with_relaxed_ordering]) +fi +]) diff --git a/src/C++/Container.h b/src/C++/Container.h index fb89dea6b..b7020cb51 100644 --- a/src/C++/Container.h +++ b/src/C++/Container.h @@ -498,97 +498,223 @@ class DictionarySet stored_allocator_type m_alloc; }; +// Threaded AVL tree +struct avlNodeTraitTypes { + + enum side { left = 0, right = 1, parent = 2 }; // exactly this way + enum balance + { + unbalanced_neg_t = -2, // exactly this way + neg_t, + zero_t, + pos_t, + unbalanced_pos_t + }; + + template struct is_accessible_and_unique_base_of + { + typedef char yes_type[1]; typedef char no_type[2]; + static yes_type& test(B*); static no_type& test(...); + static const bool value = (sizeof(test((D*)0)) == sizeof(yes_type)); + }; +}; + struct avlNode { - typedef avlNode node_type; + avlNode* m_link[3]; + avlNode* m_next; + union { + avlNodeTraitTypes::balance m_balance; + unsigned m_uint; + }; - enum side { left = 0, right = 1, parent = 2 }; // exactly this way - node_type* m_link[3]; - node_type* m_next; - enum balance - { - unbalanced_neg_t = -2, // exactly this way - neg_t, - zero_t, - pos_t, - unbalanced_pos_t - }; - union { - balance m_balance; - int m_balance_value; - }; +} +#if defined(__GNUC__) + __attribute__((packed)) +#endif +; - static inline node_type* uncast(const node_type* p) - { return const_cast(p); } +// node traits +template struct avlNodeTraits : public avlNodeTraitTypes { - static inline node_type* get_parent(const node_type* n) - { return n->m_link[parent]; } + typedef Node node_type; - static inline void set_parent(node_type* n, node_type* p = NULL) - { n->m_link[parent] = p; } + static inline node_type* uncast(const node_type* p) + { return const_cast(p); } - static inline node_type* get_next(const node_type* n) - { return n->m_next; } + static inline node_type* get_parent(const node_type* n) + { return n->m_link[parent]; } - static inline void set_next(node_type* n, node_type* p = NULL) - { n->m_next = p; } + static inline void set_parent(node_type* n, node_type* p = NULL) + { n->m_link[parent] = p; } - static inline node_type* get_side(const node_type* n, bool right_side) - { return n->m_link[right_side]; } + static inline node_type* get_next(const node_type* n) + { return n->m_next; } - static inline node_type* get_link(const node_type* n, side dir) - { return n->m_link[dir]; } + static inline void set_next(node_type* n, node_type* p = NULL) + { n->m_next = p; } - static inline node_type* get_left(const node_type* n) - { return n->m_link[left]; } + static inline node_type* get_side(const node_type* n, bool right_side) + { return n->m_link[right_side]; } - static inline node_type* get_right(const node_type* n) - { return n->m_link[right]; } + static inline node_type* get_link(const node_type* n, side dir) + { return n->m_link[dir]; } - static inline void set_side(node_type* n, bool right_side, node_type* p = NULL) - { n->m_link[right_side] = p; } - - static inline void set_side(node_type* n, side dir, node_type* p = NULL) - { n->m_link[dir] = p; } + static inline node_type* get_left(const node_type* n) + { return n->m_link[left]; } - static inline void set_link(node_type* n, side dir, node_type* p = NULL) - { n->m_link[dir] = p; } + static inline node_type* get_right(const node_type* n) + { return n->m_link[right]; } - static inline void set_left(node_type* n, node_type* l = NULL) - { n->m_link[left] = l; } + static inline void set_side(node_type* n, bool right_side, node_type* p = NULL) + { n->m_link[right_side] = p; } + + static inline void set_side(node_type* n, side dir, node_type* p = NULL) + { n->m_link[dir] = p; } - static inline void set_right(node_type* n, node_type* r = NULL) - { n->m_link[right] = r; } + static inline void set_link(node_type* n, side dir, node_type* p = NULL) + { n->m_link[dir] = p; } - static inline balance get_balance(const node_type* n) - { return n->m_balance; } + static inline void set_left(node_type* n, node_type* l = NULL) + { n->m_link[left] = l; } - static inline balance add_balance(node_type* n, int v) - { return (balance)(n->m_balance_value += v); } + static inline void set_right(node_type* n, node_type* r = NULL) + { n->m_link[right] = r; } - static inline void set_balance(node_type* n, balance b) - { n->m_balance = b; } + static inline balance get_balance(const node_type* n) + { return n->m_balance; } - static inline balance invert_balance(balance b) - { return (balance)-b; } + static inline balance add_balance(node_type* n, int v) + { return (balance)(n->m_uint += v); } -} -#if defined(__GNUC__) - __attribute__((packed)) -#endif -; + static inline void set_balance(node_type* n, balance b) + { n->m_balance = b; } + + static inline balance invert_balance(balance b) + { return (balance)-b; } + + static inline unsigned get_attribute(const node_type* n) + { return n->m_uint; } + + static inline void set_attribute(node_type* n, unsigned a) + { n->m_uint = a; } +}; + +// tree traits with the base class template +template struct avlTreeTraits { + + typedef Node node_type; + + template class Base + { + node_type m_header; // sides are left- and right-most nodes, parent is root + protected: + + node_type* header_ptr() + { return &this->m_header; } + + const node_type* header_ptr() const + { return &this->m_header; } + }; + + template struct Algorithms + { + typedef Node node_type; + typedef NodeTraits node_traits; + + static bool is_header(const node_type* n) + { return node_traits::get_next(n) == n; } + + static void init_header(node_type* n) + { + node_traits::set_parent(n); + node_traits::set_left(n, n); node_traits::set_right(n, n); + node_traits::set_next(n, n); // header->m_next always points to itself + node_traits::set_balance(n, node_traits::zero_t); + } + + static void init_node(node_type* n, node_type* parent, node_type* next) + { + node_traits::set_left(n); + node_traits::set_right(n); + node_traits::set_parent(n, parent); + node_traits::set_next(n, next); + node_traits::set_balance(n, node_traits::zero_t); + } + + static node_type* get_header(const node_type* n) + { + node_type* p = node_traits::get_parent(n); + if (p) + { + while(!is_header(p)) + p = node_traits::get_parent(p); + return p; + } + return node_traits::uncast(n); + } + + static node_type* begin_node(const node_type* header) + { return node_traits::get_left(header); } + + static node_type* end_node(const node_type* header) + { return node_traits::uncast(header); } + + static inline node_type* maximum(node_type* n) + { + node_type* p; + do { n = node_traits::get_right(p = n); } while (n); + return p; + } + + static node_type* next_node(const node_type* n) + { return node_traits::get_next(n); } + + static node_type* prev_node_inner(const node_type* n) + { + node_type* p,* x = node_traits::get_left(n); + if (x) + p = maximum(x); + else + { + p = node_traits::get_parent(n); + if (n == node_traits::get_left(p)) + do { p = node_traits::get_parent(x = p); } while (x == node_traits::get_left(p)); + } + return p; // header if leftmost + } + static node_type* prev_node(const node_type* n) + { + return is_header(n) ? node_traits::get_right(n) : prev_node_inner(n); + } + }; +}; +// specialization to fail when the value type is not derived from the node type +template struct avlTreeTraits { + template class Base {}; +}; +// implementation class template , - typename BaseHook = avlNode> -class avlTree { + typename BaseHook = avlNode, + typename NodeTraits = avlNodeTraits, + typename TreeTraits = avlTreeTraits::value> > +class avlTree +: public TreeTraits::template Base< avlTree< Node, Compare, BaseHook, NodeTraits, TreeTraits > > { - typedef avlTree tree_type; - typedef BaseHook node; + typedef BaseHook node; typedef BaseHook* node_ptr; typedef const BaseHook* const_node_ptr; + template friend class TreeTraits::Base; public: + typedef typename TreeTraits::template Algorithms algorithms; + typedef typename TreeTraits::template Base base_type; + + typedef avlTree tree_type; + typedef TreeTraits tree_traits; + typedef NodeTraits node_traits; typedef std::size_t size_type; typedef Node value_type; @@ -598,12 +724,11 @@ class avlTree { struct insert_commit_data { node_ptr prev, anchor; - typename node::side direction; + typename node_traits::side direction; }; private: - node m_header; // sides are left- and right-most nodes, parent is root value_compare m_comp; template @@ -635,8 +760,8 @@ class avlTree { Cloner m_cloner; public: typedef typename tree_type::value_type& reference; - typedef const typename tree_type::value_type& const_reference; - typedef typename tree_type::value_type value_type; + typedef const typename tree_type::value_type& const_reference; + typedef typename tree_type::value_type value_type; CloneInserter(tree_type& t, Cloner c) : m_tree(t), m_cloner(c) {} @@ -647,99 +772,33 @@ class avlTree { { return std::back_inserter(*this); } }; - static bool is_header(const const_node_ptr & n) - { return n->m_next == n; } - - static void init_header(node_ptr n) - { - node::set_parent(n); - node::set_left(n, n); node::set_right(n, n); - node::set_next(n, n); // header->m_next always points to itself - node::set_balance(n, node::zero_t); - } - - static void init_inserted(node_ptr n, node_ptr parent, node_ptr next) - { - node::set_left(n); - node::set_right(n); - node::set_parent(n, parent); - node::set_next(n, next); - node::set_balance(n, node::zero_t); - } - - static node_ptr get_header(const const_node_ptr & n) + static node_ptr rotate_single(const node_ptr & r, typename node_traits::side dir) { - node_ptr p = node::get_parent(n); - if (p) - { - while(!is_header(p)) - p = node::get_parent(p); - return p; - } - return node::uncast(n); - } - - static node_ptr begin_node(const const_node_ptr & header) - { return node::get_left(header); } - - static node_ptr end_node(const const_node_ptr & header) - { return node::uncast(header); } - - static inline node_ptr maximum(node_ptr n) - { - node_ptr p; - do { n = node::get_right(p = n); } while (n); - return p; - } - - static node_ptr next_node(const const_node_ptr & n) - { return node::get_next(n); } - - // n must not be leftmost - static node_ptr prev_node(const const_node_ptr & n) - { - if (is_header(n)) - return node::get_right(n); - - node_ptr p, x = node::get_left(n); - if (x) - p = maximum(x); - else - { - p = node::get_parent(n); - if (n == node::get_left(p)) - do { p = node::get_parent(x = p); } while (x == node::get_left(p)); - } - return p; - } - - static node_ptr rotate_single(const node_ptr & r, typename node::side dir) - { - node_ptr n = node::get_side(r, !dir); - node_ptr nsa = node::get_link(n, dir); - node::set_side(r, !dir, nsa); - if (nsa) node::set_parent(nsa, r); - node::set_side(n, dir, r); - node::set_parent(n, node::get_parent(r)); - node::set_parent(r, n); + node_ptr n = node_traits::get_side(r, !dir); + node_ptr nsa = node_traits::get_link(n, dir); + node_traits::set_side(r, !dir, nsa); + if (nsa) node_traits::set_parent(nsa, r); + node_traits::set_side(n, dir, r); + node_traits::set_parent(n, node_traits::get_parent(r)); + node_traits::set_parent(r, n); return n; } - static node_ptr rotate_double(const node_ptr & r, typename node::side dir) + static node_ptr rotate_double(const node_ptr & r, typename node_traits::side dir) { - node_ptr n = node::get_side(r, !dir); - node_ptr b = node::get_link(n, dir); - node_ptr bsa = node::get_side(b, !dir); - node::set_side(n, dir, bsa); - if (bsa) node::set_parent(bsa, n); - node_ptr bsb = node::get_link(b, dir); - node::set_side(r, !dir, bsb); - if (bsb) node::set_parent(bsb, r); - node::set_side(b, !dir, n); - node::set_side(b, dir, r); - node::set_parent(b, node::get_parent(r)); - node::set_parent(r, b); - node::set_parent(n, b); + node_ptr n = node_traits::get_side(r, !dir); + node_ptr b = node_traits::get_link(n, dir); + node_ptr bsa = node_traits::get_side(b, !dir); + node_traits::set_side(n, dir, bsa); + if (bsa) node_traits::set_parent(bsa, n); + node_ptr bsb = node_traits::get_link(b, dir); + node_traits::set_side(r, !dir, bsb); + if (bsb) node_traits::set_parent(bsb, r); + node_traits::set_side(b, !dir, n); + node_traits::set_side(b, dir, r); + node_traits::set_parent(b, node_traits::get_parent(r)); + node_traits::set_parent(r, b); + node_traits::set_parent(n, b); return b; } @@ -749,7 +808,7 @@ class avlTree { while (x) { bool l = comp(x, key); y = l ? y : x; - x = node::get_side(x, l); + x = node_traits::get_side(x, l); } return y; } @@ -760,7 +819,7 @@ class avlTree { while (x) { bool leq = !comp(key, x); y = leq ? y : x; - x = node::get_side(x, leq); + x = node_traits::get_side(x, leq); } return y; } @@ -768,75 +827,70 @@ class avlTree { template static node_ptr find( const const_node_ptr& header, const KeyType& key, KeyNodePtrCompare comp) { - node_ptr end = node::uncast(header); - node_ptr y = lower_bound(node::get_parent(header), end, key, comp); + node_ptr end = node_traits::uncast(header); + node_ptr y = lower_bound(node_traits::get_parent(header), end, key, comp); return (y == end || comp(key, y)) ? end : y; } - node_ptr header_ptr() - { return &this->m_header; } - - const_node_ptr header_ptr() const - { return &this->m_header; } - static inline node_ptr - relink_parent(const const_node_ptr& header, node_ptr n, typename node::side dir) + relink_parent(const const_node_ptr& header, node_ptr n, typename node_traits::side dir) { - node_ptr u = node::get_parent(n); - node::set_link(u, u != header ? dir : node::parent, n); + node_ptr u = node_traits::get_parent(n); + node_traits::set_link(u, u != header ? dir : node_traits::parent, n); return u; } static inline node_ptr relink_parent(const const_node_ptr& header, node_ptr n, const const_node_ptr& prev) { - node_ptr u = node::get_parent(n); + node_ptr u = node_traits::get_parent(n); if (u != header) - node::set_side(u, prev != node::get_left(u), n); + node_traits::set_side(u, prev != node_traits::get_left(u), n); else - node::set_parent(u, n); + node_traits::set_parent(u, n); return u; } - template + template struct direction_traits { static const int balance_change = - (dir == node::right) ? node::pos_t : node::neg_t; - static const typename node::side opposite_dir = - (dir == node::right) ? node::left : node::right; - - static const typename node::balance off_by_one = - (dir == node::right) ? node::pos_t : node::neg_t; - static const typename node::balance unbalanced = - (dir == node::right) ? node::unbalanced_pos_t : node::unbalanced_neg_t; + (dir == node_traits::right) ? node_traits::pos_t : node_traits::neg_t; + static const typename node_traits::side opposite_dir = + (dir == node_traits::right) ? node_traits::left : node_traits::right; + + static const typename node_traits::balance off_by_one = + (dir == node_traits::right) ? node_traits::pos_t : node_traits::neg_t; + static const typename node_traits::balance unbalanced = + (dir == node_traits::right) ? node_traits::unbalanced_pos_t : node_traits::unbalanced_neg_t; }; - template + template static void do_push(node_ptr header, node_ptr n) { - node_ptr p = node::get_side(header, dir); - node::set_side(header, dir, n); - init_inserted(n, p, header); - node_ptr u = node::get_parent(p); + node_ptr p = node_traits::get_side(header, dir); + node_traits::set_side(header, dir, n); + algorithms::init_node(n, p, dir == node_traits::right ? header : p); + node_ptr u = node_traits::get_parent(p); if (u) { - node::set_next(p, n); - node::set_side(p, dir, n); + if (dir == node_traits::right) + node_traits::set_next(p, n); + node_traits::set_side(p, dir, n); - typename node::balance b = node::add_balance(p, direction_traits::balance_change); - if (b != node::zero_t) + typename node_traits::balance b = node_traits::add_balance(p, direction_traits::balance_change); + if (b != node_traits::zero_t) { - for (; u != header; u = node::get_parent(u)) + for (; u != header; u = node_traits::get_parent(u)) { - b = node::add_balance(u, direction_traits::balance_change); + b = node_traits::add_balance(u, direction_traits::balance_change); if (b == direction_traits::off_by_one) continue; if (b == direction_traits::unbalanced) { p = rotate_single(u, direction_traits::opposite_dir); - node::set_balance(p, node::zero_t); - node::set_balance(u, node::zero_t); + node_traits::set_balance(p, node_traits::zero_t); + node_traits::set_balance(u, node_traits::zero_t); relink_parent(header, p, dir); } break; @@ -846,8 +900,8 @@ class avlTree { else { // parent pointer not set, empty tree - node::set_parent(header, n); - node::set_side(header, direction_traits::opposite_dir, n); + node_traits::set_parent(header, n); + node_traits::set_side(header, direction_traits::opposite_dir, n); } } @@ -857,8 +911,8 @@ class avlTree { static inline std::pair init_commit_data(node_ptr prev, const const_node_ptr& hint, insert_commit_data& data) { - data.direction = (prev && node::get_left(hint)) ? node::right : node::left; - data.anchor = data.direction == node::right ? prev : node::uncast(hint); + data.direction = (prev && node_traits::get_left(hint)) ? node_traits::right : node_traits::left; + data.anchor = data.direction == node_traits::right ? prev : node_traits::uncast(hint); data.prev = prev; return std::pair((node_ptr)0, true); } @@ -867,15 +921,15 @@ class avlTree { static std::pair insert_unique_check(const const_node_ptr& header, const const_node_ptr& hint, const KeyType& key, KeyNodePtrCompare comp, insert_commit_data& data) { - node_ptr anchor = node::uncast(header), prev = NULL; + node_ptr anchor = node_traits::uncast(header), prev = NULL; // check if the insertion point comes immediatelly before the hint if (hint && (hint == header || comp(key, hint)) - && (hint == begin_node(header) || comp(prev = prev_node(hint), key))) + && (hint == algorithms::begin_node(header) || comp(prev = algorithms::prev_node(hint), key))) return init_commit_data(prev, hint, data); - typename node::side side = node::parent; - for (node_ptr x = node::get_parent(anchor); x; x = node::get_link(x, side)) - side = comp(key, anchor = x) ? node::left : (prev = x, node::right); + typename node_traits::side side = node_traits::parent; + for (node_ptr x = node_traits::get_parent(anchor); x; x = node_traits::get_link(x, side)) + side = comp(key, anchor = x) ? node_traits::left : (prev = x, node_traits::right); bool not_found = !prev || comp(prev, key); if (not_found) @@ -891,71 +945,71 @@ class avlTree { static void insert_equal_check(const const_node_ptr& header, const const_node_ptr& hint, node_ptr n, NodePtrCompare comp, insert_commit_data& data) { - typename node::side side = node::parent; - node_ptr anchor = node::uncast(header), prev = NULL; + typename node_traits::side side = node_traits::parent; + node_ptr anchor = node_traits::uncast(header), prev = NULL; if (hint && (hint == header || !comp(hint, n))) { - if (hint == begin_node(header) || !comp(n, (prev = prev_node(hint)))) + if (hint == algorithms::begin_node(header) || !comp(n, (prev = algorithms::prev_node(hint)))) { init_commit_data(prev, hint, data); return; } else - for (node_ptr x = node::get_parent(anchor); x; x = node::get_link(x, side)) - side = comp(n, anchor = x) ? node::left : (prev = x, node::right); + for (node_ptr x = node_traits::get_parent(anchor); x; x = node_traits::get_link(x, side)) + side = comp(n, anchor = x) ? node_traits::left : (prev = x, node_traits::right); } else - for (node_ptr x = node::get_parent(anchor); x; x = node::get_link(x, side)) - side = !comp(anchor = x, n) ? node::left : (prev = x, node::right); + for (node_ptr x = node_traits::get_parent(anchor); x; x = node_traits::get_link(x, side)) + side = !comp(anchor = x, n) ? node_traits::left : (prev = x, node_traits::right); data.direction = side; data.anchor = anchor; data.prev = prev; } - static inline void insert_commit(node_ptr header, node_ptr n, node_ptr anchor, node_ptr prev, typename node::side side) + static inline void insert_commit(node_ptr header, node_ptr n, node_ptr anchor, node_ptr prev, typename node_traits::side side) { if (anchor != header) { if (prev) { - init_inserted(n, anchor, node::get_next(prev)); - node::set_next(prev, n); + algorithms::init_node(n, anchor, node_traits::get_next(prev)); + node_traits::set_next(prev, n); } else - init_inserted(n, anchor, node::get_left(header)); + algorithms::init_node(n, anchor, node_traits::get_left(header)); - node::set_link(anchor, side, n); - if (node::get_link(header, side) == anchor) - node::set_link(header, side, n); + node_traits::set_link(anchor, side, n); + if (node_traits::get_link(header, side) == anchor) + node_traits::set_link(header, side, n); - typename node::balance b = node::add_balance(anchor, side == node::right ? node::pos_t : node::neg_t); - if (b != node::zero_t) + typename node_traits::balance b = node_traits::add_balance(anchor, side == node_traits::right ? node_traits::pos_t : node_traits::neg_t); + if (b != node_traits::zero_t) { prev = anchor; - for (n = node::get_parent(prev); n != header; n = node::get_parent(prev = n)) + for (n = node_traits::get_parent(prev); n != header; n = node_traits::get_parent(prev = n)) { - typename node::balance disbalance = prev != node::get_left(n) ? node::pos_t : node::neg_t; - b = node::add_balance(n, disbalance); + typename node_traits::balance disbalance = prev != node_traits::get_left(n) ? node_traits::pos_t : node_traits::neg_t; + b = node_traits::add_balance(n, disbalance); if (b == disbalance) continue; if (b ==(disbalance + disbalance)) // unbalanced { - side = disbalance == node::pos_t ? node::left : node::right; - if (node::get_balance(prev) == disbalance) + side = disbalance == node_traits::pos_t ? node_traits::left : node_traits::right; + if (node_traits::get_balance(prev) == disbalance) { - node::set_balance(n, node::zero_t); - node::set_balance(prev, node::zero_t); + node_traits::set_balance(n, node_traits::zero_t); + node_traits::set_balance(prev, node_traits::zero_t); prev = rotate_single(n, side); } else { - typename node::balance negbalance = node::invert_balance(disbalance); - node_ptr pprev = node::get_link(prev, side); - b = node::get_balance(pprev); - node::set_balance(n, b == disbalance ? negbalance : node::zero_t); - node::set_balance(pprev, node::zero_t); - node::set_balance(prev, b == negbalance ? disbalance : node::zero_t); + typename node_traits::balance negbalance = node_traits::invert_balance(disbalance); + node_ptr pprev = node_traits::get_link(prev, side); + b = node_traits::get_balance(pprev); + node_traits::set_balance(n, b == disbalance ? negbalance : node_traits::zero_t); + node_traits::set_balance(pprev, node_traits::zero_t); + node_traits::set_balance(prev, b == negbalance ? disbalance : node_traits::zero_t); prev = rotate_double(n, side); } relink_parent(header, prev, n); @@ -966,134 +1020,134 @@ class avlTree { } else { - init_inserted(n, anchor, header); - node::set_parent(header, n); - node::set_right(header, n); - node::set_left(header, n); + algorithms::init_node(n, anchor, header); + node_traits::set_parent(header, n); + node_traits::set_right(header, n); + node_traits::set_left(header, n); } } template static node_ptr insert_equal_upper_bound(const const_node_ptr& header, node_ptr n, NodePtrCompare comp) { - typename node::side side = node::parent; - node_ptr anchor = node::uncast(header), prev = NULL; - for (node_ptr x = node::get_parent(anchor); x; x = node::get_link(x, side)) - side = comp(n, anchor = x) ? node::left : (prev = x, node::right); - insert_commit(node::uncast(header), n, anchor, prev, side); + typename node_traits::side side = node_traits::parent; + node_ptr anchor = node_traits::uncast(header), prev = NULL; + for (node_ptr x = node_traits::get_parent(anchor); x; x = node_traits::get_link(x, side)) + side = comp(n, anchor = x) ? node_traits::left : (prev = x, node_traits::right); + insert_commit(node_traits::uncast(header), n, anchor, prev, side); return n; } static node_ptr do_erase(const const_node_ptr& header, const const_node_ptr& n) { - node_ptr x, y, parent = node::get_parent(n); - typename node::side dir, side = node::get_left(parent) == n ? node::left : node::right; - node_ptr l = node::get_left(n); - node_ptr r = node::get_right(n); + node_ptr x, y, parent = node_traits::get_parent(n); + typename node_traits::side dir, side = node_traits::get_left(parent) == n ? node_traits::left : node_traits::right; + node_ptr l = node_traits::get_left(n); + node_ptr r = node_traits::get_right(n); if (!l || !r) { x = l ? l : r; if (parent != header) { - if (node::get_link(header, side) == n) + if (node_traits::get_link(header, side) == n) { - y = node::get_next(n); - if (side == node::left) // n is leftmost - node::set_left(node::uncast(header), y); + y = node_traits::get_next(n); + if (side == node_traits::left) // n is leftmost + node_traits::set_left(node_traits::uncast(header), y); else // n is rightmost { - r = x ? maximum(x) : parent; - node::set_next(r, y); - node::set_right(node::uncast(header), r); + r = x ? algorithms::maximum(x) : parent; + node_traits::set_next(r, y); + node_traits::set_right(node_traits::uncast(header), r); } } else - node::set_next(prev_node(n), node::get_next(n)); + node_traits::set_next(algorithms::prev_node_inner(n), node_traits::get_next(n)); - node::set_link(parent, side, x); - if (x) node::set_parent(x, parent); + node_traits::set_link(parent, side, x); + if (x) node_traits::set_parent(x, parent); dir = side; } else // empty or only x left { - node::set_parent(parent, x); + node_traits::set_parent(parent, x); if (x) { - node::set_parent(x, parent); - node::set_next(x, parent); - node::set_side(parent, x == r ? node::left : node::right, x); + node_traits::set_parent(x, parent); + node_traits::set_next(x, parent); + node_traits::set_side(parent, x == r ? node_traits::left : node_traits::right, x); } else { - node::set_left(parent, parent); - node::set_right(parent, parent); + node_traits::set_left(parent, parent); + node_traits::set_right(parent, parent); } - return node::uncast(n); + return node_traits::uncast(n); } } else // two sides { node_ptr n_parent = parent; - y = node::get_next(n); // y has an empty left side - x = node::get_right(y); + y = node_traits::get_next(n); // y has an empty left side + x = node_traits::get_right(y); - node::set_next(maximum(l), y); - node::set_parent(l, y); - node::set_left(y, l); + node_traits::set_next(algorithms::maximum(l), y); + node_traits::set_parent(l, y); + node_traits::set_left(y, l); if (y != r) { - dir = node::left; - node::set_right(y, r); - node::set_parent(r, y); - parent = node::get_parent(y); - if (x) node::set_parent(x, parent); - node::set_left(parent, x); + dir = node_traits::left; + node_traits::set_right(y, r); + node_traits::set_parent(r, y); + parent = node_traits::get_parent(y); + if (x) node_traits::set_parent(x, parent); + node_traits::set_left(parent, x); } else { - dir = node::right; + dir = node_traits::right; parent = y; } // link y in place of n - node::set_parent(y, n_parent); - node::set_link(n_parent, header != n_parent ? side : node::parent, y); - node::set_balance(y, node::get_balance(n)); + node_traits::set_parent(y, n_parent); + node_traits::set_link(n_parent, header != n_parent ? side : node_traits::parent, y); + node_traits::set_balance(y, node_traits::get_balance(n)); } // root == parent, dir = side which held erased node - typename node::balance disbalance, negbalance, b; + typename node_traits::balance disbalance, negbalance, b; while(parent != header) { - disbalance = dir == node::right ? node::neg_t : node::pos_t; - b = node::add_balance(parent, disbalance); + disbalance = dir == node_traits::right ? node_traits::neg_t : node_traits::pos_t; + b = node_traits::add_balance(parent, disbalance); if (b == disbalance) break; if (b ==(disbalance + disbalance)) { - y = node::get_side(parent, dir == node::left ? node::right : node::left); - disbalance = dir == node::left ? node::neg_t : node::pos_t; - if (node::get_balance(y) == -disbalance) + y = node_traits::get_side(parent, dir == node_traits::left ? node_traits::right : node_traits::left); + disbalance = dir == node_traits::left ? node_traits::neg_t : node_traits::pos_t; + if (node_traits::get_balance(y) == -disbalance) { - node::set_balance(parent, node::zero_t); - node::set_balance(y, node::zero_t); + node_traits::set_balance(parent, node_traits::zero_t); + node_traits::set_balance(y, node_traits::zero_t); x = rotate_single(parent, dir); } - else if (node::get_balance(y) == disbalance) + else if (node_traits::get_balance(y) == disbalance) { - negbalance = node::invert_balance(disbalance); - x = node::get_link(y, dir); - b = node::get_balance(x); - node::set_balance(parent, b == negbalance ? disbalance : node::zero_t); - node::set_balance(y, b == disbalance ? negbalance : node::zero_t); - node::set_balance(x, node::zero_t); + negbalance = node_traits::invert_balance(disbalance); + x = node_traits::get_link(y, dir); + b = node_traits::get_balance(x); + node_traits::set_balance(parent, b == negbalance ? disbalance : node_traits::zero_t); + node_traits::set_balance(y, b == disbalance ? negbalance : node_traits::zero_t); + node_traits::set_balance(x, node_traits::zero_t); x = rotate_double(parent, dir); } else { - node::set_balance(parent, node::invert_balance(disbalance)); - node::set_balance(y, disbalance); + node_traits::set_balance(parent, node_traits::invert_balance(disbalance)); + node_traits::set_balance(y, disbalance); x = rotate_single(parent, dir); relink_parent(header, x, parent); break; @@ -1101,10 +1155,10 @@ class avlTree { parent = relink_parent(header, x, parent); } else - parent = node::get_parent(x = parent); - dir = node::get_left(parent) == x ? node::left : node::right; + parent = node_traits::get_parent(x = parent); + dir = node_traits::get_left(parent) == x ? node_traits::left : node_traits::right; } - return node::uncast(n); + return node_traits::uncast(n); } public: @@ -1112,6 +1166,8 @@ class avlTree { template class tree_iterator { + protected: + NodePtr m_node; public: @@ -1137,16 +1193,16 @@ class avlTree { { m_node = node_ptr; return *this; } tree_iterator& operator++() - { m_node = next_node(m_node); return *this; } + { m_node = algorithms::next_node(m_node); return *this; } tree_iterator operator++(int) - { tree_iterator copy(*this); m_node = next_node(m_node); return copy; } + { tree_iterator copy(*this); m_node = algorithms::next_node(m_node); return copy; } tree_iterator& operator--() - { m_node = prev_node(m_node); return *this; } + { m_node = algorithms::prev_node(m_node); return *this; } tree_iterator operator--(int) - { tree_iterator copy(*this); m_node = prev_node(m_node); return copy; } + { tree_iterator copy(*this); m_node = algorithms::prev_node(m_node); return copy; } friend bool operator==(const tree_iterator& l, const tree_iterator& r) { return l.pointed_node() == r.pointed_node(); } @@ -1169,7 +1225,7 @@ class avlTree { avlTree( const value_compare& comp = value_compare() ) : m_comp(comp) - { init_header(this->header_ptr()); } + { algorithms::init_header(this->header_ptr()); } key_compare key_comp() const { return m_comp; } @@ -1178,33 +1234,33 @@ class avlTree { { return m_comp; } bool empty() const - { return node::get_parent(this->header_ptr()) == 0; } + { return node_traits::get_parent(this->header_ptr()) == 0; } size_type size() const { size_type n = 0; - for (node_ptr p = begin_node(this->header_ptr()); - p != end_node(this->header_ptr()); p = next_node(p)) n++; + for (node_ptr p = algorithms::begin_node(this->header_ptr()); + p != algorithms::end_node(this->header_ptr()); p = algorithms::next_node(p)) n++; return n; } iterator begin() - { return iterator(begin_node(this->header_ptr())); } + { return iterator(algorithms::begin_node(this->header_ptr())); } const_iterator begin() const - { return const_iterator(begin_node(this->header_ptr())); } + { return const_iterator(algorithms::begin_node(this->header_ptr())); } const_iterator cbegin() const - { return const_iterator(begin_node(this->header_ptr())); } + { return const_iterator(algorithms::begin_node(this->header_ptr())); } iterator end() - { return iterator(end_node(this->header_ptr())); } + { return iterator(algorithms::end_node(this->header_ptr())); } const_iterator end() const - { return const_iterator(end_node(this->header_ptr())); } + { return const_iterator(algorithms::end_node(this->header_ptr())); } const_iterator cend() const - { return const_iterator(end_node(this->header_ptr())); } + { return const_iterator(algorithms::end_node(this->header_ptr())); } iterator find(const_reference value) { return this->find(value, this->m_comp); } @@ -1229,15 +1285,15 @@ class avlTree { template iterator lower_bound(const KeyType& key, KeyValueCompare comp) { - return iterator(lower_bound(node::get_parent(this->header_ptr()), - node::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); + return iterator(lower_bound(node_traits::get_parent(this->header_ptr()), + node_traits::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); } template const_iterator lower_bound(const KeyType& key, KeyValueCompare comp) const { - return const_iterator(lower_bound(node::get_parent(this->header_ptr()), - node::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); + return const_iterator(lower_bound(node_traits::get_parent(this->header_ptr()), + node_traits::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); } iterator upper_bound(const_reference value) @@ -1249,22 +1305,22 @@ class avlTree { template iterator upper_bound(const KeyType& key, KeyValueCompare comp) { - return iterator(upper_bound(node::get_parent(this->header_ptr()), - node::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); + return iterator(upper_bound(node_traits::get_parent(this->header_ptr()), + node_traits::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); } template const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const { - return const_iterator(upper_bound(node::get_parent(this->header_ptr()), - node::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); + return const_iterator(upper_bound(node_traits::get_parent(this->header_ptr()), + node_traits::uncast(this->header_ptr()), key, KeyNodeCompare(comp))); } void push_front(reference value) - { do_push(this->header_ptr(), &value); } + { do_push(this->header_ptr(), &value); } void push_back(reference value) - { do_push(this->header_ptr(), &value); } + { do_push(this->header_ptr(), &value); } template std::pair @@ -1315,7 +1371,7 @@ class avlTree { iterator erase(const_iterator i) { - iterator ret(node::get_next(i.pointed_node())); + iterator ret(node_traits::get_next(i.pointed_node())); do_erase(this->header_ptr(), i.pointed_node()); return ret; } @@ -1323,7 +1379,7 @@ class avlTree { template iterator erase_and_dispose(const_iterator i, Disposer disposer) { - iterator ret(node::get_next(i.pointed_node())); + iterator ret(node_traits::get_next(i.pointed_node())); disposer(static_cast(do_erase(this->header_ptr(), i.pointed_node()))); return ret; } @@ -1358,19 +1414,19 @@ class avlTree { } void clear() - { init_header(this->header_ptr()); } + { algorithms::init_header(this->header_ptr()); } template void clear_and_dispose(Disposer disposer) { - node_ptr n = node::get_left(this->header_ptr()); + node_ptr n = node_traits::get_left(this->header_ptr()); while (n != this->header_ptr()) { node_ptr d = n; - n = node::get_next(d); + n = node_traits::get_next(d); disposer(static_cast(d)); } - init_header(this->header_ptr()); + algorithms::init_header(this->header_ptr()); } template @@ -1382,6 +1438,513 @@ class avlTree { } }; +// Flat set implementation of an ordered container with the same "intrusive" semantics as above except the lack of iterator stability +template , + typename Allocator = std::allocator, + std::size_t DefaultCapacity = 16> +class flatSet { + typedef T* node_ptr; + typedef const T* const_node_ptr; + typedef flatSet set_type; + + typedef typename Allocator::template rebind::other store_allocator_type; + class store_type { + + node_ptr* m_start; + node_ptr* m_allocated; + std::size_t m_size, m_capacity; + + node_ptr* do_erase(const node_ptr* p, std::size_t n) + { + std::size_t extent = m_size-- - (p + n - m_start); + if (extent) + ::memmove(const_cast(p), p + n, extent * sizeof(node_ptr)); + return const_cast(p); + } + + void do_allocated(node_ptr* p, std::size_t capacity) + { + if (m_allocated) store_allocator_type().deallocate(m_allocated, m_capacity); + m_allocated = m_start = p; + m_capacity = capacity; + } + + public: + + typedef std::ptrdiff_t difference_type; + typedef node_ptr* iterator; + typedef const node_ptr* const_iterator; + + store_type(node_ptr* buffer, std::size_t capacity) + : m_start(buffer), m_allocated(NULL), m_size(0), m_capacity(capacity) + { + if (m_start != NULL) return; + m_allocated = m_start = store_allocator_type().allocate(capacity); + } + + store_type(std::size_t capacity) + : m_allocated(store_allocator_type().allocate(capacity)), m_size(0), m_capacity(capacity) + { m_start = m_allocated; } + + store_type() + : m_allocated(store_allocator_type().allocate(DefaultCapacity)), m_size(0), m_capacity(DefaultCapacity) + { m_start = m_allocated; } + + ~store_type() + { if (m_allocated) store_allocator_type().deallocate(m_start, m_capacity); } + + bool empty() const + { return m_size == 0; } + + std::size_t size() const + { return m_size; } + + void clear() + { m_size = 0; } + + void reserve(std::size_t sz) + { + if (sz > m_capacity) + { + node_ptr* d = store_allocator_type().allocate(sz); + ::memcpy(d, m_start, m_size * sizeof(node_ptr)); + do_allocated(d, sz); + } + } + + void push_back(node_ptr p) + { + if (m_size < m_capacity) + { + m_start[m_size++] = p; + return; + } + std::size_t sz = m_capacity << 1; + node_ptr* d = store_allocator_type().allocate(sz); + ::memcpy(d, m_start, m_size * sizeof(node_ptr)); + d[m_size++] = p; + do_allocated(d, sz); + } + + iterator insert(iterator it, node_ptr p) + { + if (it == m_start + m_size) + { + push_back(p); + return m_start + m_size - 1; + } + if (m_size < m_capacity) + Util::Memory::shift_up_from(it, m_size - (it - m_start)); + //::memmove(it + 1, it, (m_size - (it - m_start)) * sizeof(node_ptr)); + else + { + std::size_t sz = m_capacity << 1; + std::size_t off = it - m_start; + node_ptr* d = store_allocator_type().allocate(sz); + ::memcpy(d, m_start, off * sizeof(node_ptr)); + it = d + off; + ::memcpy(it + 1, m_start + off, (m_size - off) * sizeof(node_ptr)); + do_allocated(d, sz); + } + *it = p; + m_size++; + return it; + } + + iterator erase(const_iterator i) + { return do_erase(i, 1); } + + iterator erase(const_iterator b, const_iterator e) + { return do_erase(b, e - b); } + + iterator begin() + { return m_start; } + + const_iterator begin() const + { return m_start; } + + const_iterator cbegin() const + { return m_start; } + + iterator end() + { return m_start + m_size; } + + const_iterator end() const + { return m_start + m_size; } + + const_iterator cend() const + { return m_start + m_size; } + }; + + // typedef std::vector store_type; + store_type m_data; + + public: + + typedef std::size_t size_type; + typedef T value_type; + typedef Compare value_compare; + typedef Compare key_compare; + typedef value_type& reference; + typedef const value_type& const_reference; + + struct insert_commit_data { typename store_type::iterator next; }; + + private: + + value_compare m_comp; + + template + struct KeyPtrCompare { + KeyValueCompare m_comp; + public: + KeyPtrCompare(KeyValueCompare comp) : m_comp(comp) {} + + template + const value_type& extract_key(const V& node, node_ptr) const + { return *node; } + + template + const value_type& extract_key(const V& node, const_node_ptr) const + { return *node; } + + template + const V& extract_key(const V& key, const U&) const + { return key; } + + template + bool operator()(const KeyA& a, const KeyB& b) const + { return this->m_comp(this->extract_key(a, a), this->extract_key(b, b)); } + }; + + template + struct CloneInserter { + set_type& m_set; + Cloner m_cloner; + public: + typedef typename set_type::value_type& reference; + typedef const typename set_type::value_type& const_reference; + typedef typename set_type::value_type value_type; + + CloneInserter(set_type& t, Cloner c) : m_set(t), m_cloner(c) {} + + void push_back(const value_type& v) + { m_set.push_back(*m_cloner(v)); } + + std::back_insert_iterator inserter() + { return std::back_inserter(*this); } + }; + + template + static typename store_type::iterator find( store_type& data, const KeyType& key, KeyCompare comp) + { + typename store_type::iterator e = data.end(), it = std::lower_bound( data.begin(), e, key, comp ); + return (it != e && !comp(key, *it)) ? it : e; + } + + template + static typename store_type::const_iterator find( const store_type& data, const KeyType& key, KeyCompare comp) + { + const typename store_type::const_iterator e = data.end(), it = std::lower_bound( data.begin(), e, key, comp ); + return (it != e && !comp(key, *it)) ? it : e; + } + + template + static std::pair as_iterator_pair(std::pair p) + { return std::pair(iterator_type(p.first), p.second); } + + static inline std::pair + init_commit_data(store_type& data, typename store_type::difference_type distance, insert_commit_data& cdata) + { + cdata.next = data.begin() + distance; + return std::pair(data.end(), true); + } + + template + static std::pair + insert_unique_check(store_type& data, const KeyType& key, KeyNodePtrCompare comp, insert_commit_data& cdata) + { + typename store_type::iterator prev = data.begin(); + typename store_type::iterator next = std::upper_bound(prev, data.end(), key, comp); + bool not_found = next == prev || comp(*(prev = (next - 1)), key); + if (not_found) cdata.next = next; + return std::pair(prev, not_found); + } + + template + static std::pair + insert_unique_check(store_type& data, typename store_type::const_iterator hint, + const KeyType& key, KeyNodePtrCompare comp, insert_commit_data& cdata) + { + // check if the insertion point comes immediatelly before the hint + if ( (hint == data.end() || comp(key, *hint)) && (hint == data.begin() || comp(*(hint - 1), key))) + return init_commit_data(data, hint - data.cbegin(), cdata); + return insert_unique_check(data, key, comp, cdata); + } + + template + static void insert_equal_check(store_type& data, typename store_type::const_iterator hint, + reference value, NodePtrCompare comp, insert_commit_data& cdata) + { + if ((hint == data.end() || !comp(*hint, value)) && (hint == data.begin() || !comp(value, *(hint - 1)))) + init_commit_data(data, hint - data.begin(), cdata); + else + cdata.next = std::upper_bound(data.begin(), data.end(), value, comp); + } + + public: + + template + class set_iterator + { + protected: + + iterator_type m_it; + + public: + typedef std::bidirectional_iterator_tag iterator_category; + typedef std::ptrdiff_t difference_type; + typedef V value_type; + typedef V& reference; + typedef V* pointer; + + set_iterator() {} + + explicit set_iterator(iterator_type it) + : m_it(it) {} + + set_iterator(const set_iterator& other) + : m_it(static_cast(other)) {} + + operator iterator_type() const + { return m_it; } + + set_iterator& operator=(const iterator_type& it) + { m_it = it; return *this; } + + set_iterator& operator++() + { ++m_it; return *this; } + + set_iterator operator++(int) + { set_iterator copy(*this); ++m_it; return copy; } + + set_iterator& operator--() + { --m_it; return *this; } + + set_iterator operator--(int) + { set_iterator copy(*this); --m_it; return copy; } + + friend bool operator==(const set_iterator& l, const set_iterator& r) + { return l.m_it == r.m_it; } + + friend bool operator!=(const set_iterator& l, const set_iterator& r) + { return l.m_it != r.m_it; } + + reference operator*() const + { return *operator->(); } + + pointer operator->() const + { return *m_it; } + + }; + + typedef set_iterator iterator; + typedef set_iterator const_iterator; + + flatSet( const value_compare& comp = value_compare() ) + : m_comp(comp) + {} + + flatSet(std::size_t capacity, const value_compare& comp ) + : m_data(capacity), m_comp(comp) + {} + + flatSet(node_ptr* buffer, std::size_t capacity, const value_compare& comp ) + : m_data(buffer, capacity), m_comp(comp) + {} + + key_compare key_comp() const + { return m_comp; } + + value_compare value_comp() const + { return m_comp; } + + bool empty() const + { return m_data.empty(); } + + size_type size() const + { return m_data.size(); } + + iterator begin() + { return iterator(m_data.begin()); } + + const_iterator begin() const + { return const_iterator(m_data.begin()); } + + const_iterator cbegin() const + { return const_iterator(m_data.cbegin()); } + + iterator end() + { return iterator(m_data.end()); } + + const_iterator end() const + { return const_iterator(m_data.end()); } + + const_iterator cend() const + { return const_iterator(m_data.cend()); } + + iterator find(const_reference value) + { return iterator(this->find( m_data, value, KeyPtrCompare(m_comp))); } + + const_iterator find(const_reference value) const + { return const_iterator(this->find( m_data, value, KeyPtrCompare(m_comp))); } + + template + iterator find(const KeyType& key, KeyValueCompare comp) + { return iterator(this->find(this->m_data, key, KeyPtrCompare(comp))); } + + template + const_iterator find(const KeyType& key, KeyValueCompare comp) const + { return const_iterator(this->find(this->m_data, key, KeyPtrCompare(comp))); } + + iterator lower_bound(const_reference value) + { return iterator(std::lower_bound(this->m_data.begin(), this->m_data.end(), value, KeyPtrCompare(this->m_comp))); } + + const_iterator lower_bound(const_reference value) const + { return const_iterator(std::lower_bound(this->m_data.begin(), this->m_data.end(), value, KeyPtrCompare(this->m_comp))); } + + template + iterator lower_bound(const KeyType& key, KeyValueCompare comp) + { return iterator(std::lower_bound(this->m_data.begin(), this->m_data.end(), key, KeyPtrCompare(comp))); } + + template + const_iterator lower_bound(const KeyType& key, KeyValueCompare comp) const + { return const_iterator(std::lower_bound(this->m_data.begin(), this->m_data.end(), key, KeyPtrCompare(comp))); } + + iterator upper_bound(const_reference value) + { return iterator(std::upper_bound(this->m_data.begin(), this->m_data.end(), value, KeyPtrCompare(this->m_comp))); } + + const_iterator upper_bound(const_reference value) const + { return const_iterator(std::upper_bound(this->m_data.begin(), this->m_data.end(), value, KeyPtrCompare(this->m_comp))); } + + template + iterator upper_bound(const KeyType& key, KeyValueCompare comp) + { return iterator(std::upper_bound(this->m_data.begin(), this->m_data.end(), key, KeyPtrCompare(comp))); } + + template + const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const + { return const_iterator(std::upper_bound(this->m_data.begin(), this->m_data.end(), key, KeyPtrCompare(comp))); } + + void push_front(reference value) + { this->m_data.insert(this->m_data.begin(), &value); } + + void push_back(reference value) + { this->m_data.push_back(&value); } + + template + std::pair + insert_unique_check(const KeyType& key, KeyValueCompare comp, insert_commit_data& data) + { return as_iterator_pair(insert_unique_check(this->m_data, key, KeyPtrCompare(comp), data)); } + + template + std::pair + insert_unique_check(const_iterator hint, const KeyType& key, KeyValueCompare comp, insert_commit_data& data) + { + return as_iterator_pair(insert_unique_check(this->m_data, static_cast(hint), + key, KeyPtrCompare(comp), data)); + } + + iterator insert_unique_commit(reference value, const insert_commit_data& cdata) + { return iterator(this->m_data.insert(cdata.next, &value)); } + + std::pair insert_unique(reference value) + { + insert_commit_data data; + std::pair ret = this->insert_unique_check(value, this->m_comp, data); + return ret.second ? std::pair(this->insert_unique_commit(value, data), true) : ret; + } + + std::pair insert_unique(const_iterator hint, reference value) + { + insert_commit_data data; + std::pair ret = this->insert_unique_check(value, hint, this->m_comp, data); + return ret.second ? std::pair(this->insert_unique_commit(value, data), true) : ret; + } + + iterator insert_equal(reference value) + { return iterator(this->m_data.insert(std::upper_bound(this->m_data.begin(), this->m_data.end(), value, KeyPtrCompare(this->m_comp)), &value)); } + + + iterator insert_equal(const_iterator hint, reference value) + { + insert_commit_data cdata; + insert_equal_check(this->m_data, static_cast(hint), value, KeyPtrCompare(this->m_comp), cdata); + return iterator(this->m_data.insert(cdata.next, &value)); + } + + iterator erase(const_iterator i) + { return iterator(this->m_data.erase(i)); } + + template + iterator erase_and_dispose(const_iterator i, Disposer disposer) + { + disposer(const_cast(*static_cast(i))); + return iterator(this->m_data.erase(i)); + } + + size_type erase(const_reference value) + { return this->erase(value, this->m_comp); } + + template + size_type erase(const KeyType& key, KeyValueCompare comp) + { + iterator i = this->find(key, comp); + if (i != this->end()) + { + iterator e = this->upper_bound(key, comp); + size_type erased = e - i; + this->erase(i, e); + return erased; + } + return 0; + } + + template + size_type erase_and_dispose(const KeyType& key, KeyValueCompare comp, Disposer disposer) + { + iterator i = this->find(key, comp); + if (i != this->end()) + { + iterator e = this->upper_bound(key, comp); + size_type erased = e - i; + for (iterator it = i; it != e; ++it) disposer(*it); + this->erase(i, e); + return erased; + } + return 0; + } + + void clear() + { this->m_data.clear(); } + + template + void clear_and_dispose(Disposer disposer) + { + std::for_each(this->m_data.begin(), this->m_data.end(), disposer); + this->clear(); + } + + template + void clone_from(const set_type& src, Cloner cloner, Disposer disposer) + { + this->clear_and_dispose(disposer); + this->m_comp = src.value_comp(); + this->m_data.reserve(src.size()); + std::copy(src.begin(), src.end(), CloneInserter(*this, cloner).inserter()); + } +}; + } // Container } diff --git a/src/C++/FieldConvertors.h b/src/C++/FieldConvertors.h index 130d4cd5e..764b985d3 100644 --- a/src/C++/FieldConvertors.h +++ b/src/C++/FieldConvertors.h @@ -906,7 +906,7 @@ struct UtcTimeStampConvertor : public UtcConvertorBase bool calculateDays = false ) throw( FieldConvertError ) { - UtcTimeStamp utc; + UtcTimeStamp utc( DateTime(0, 0) ); if (parse(value, utc)) return utc; throw FieldConvertError(); diff --git a/src/C++/FieldMap.cpp b/src/C++/FieldMap.cpp index e8ed75793..c4a0906e3 100644 --- a/src/C++/FieldMap.cpp +++ b/src/C++/FieldMap.cpp @@ -144,8 +144,8 @@ int FieldMap::calculateLength( int beginStringField, int checkSumField ) const { int result = 0; - Fields::const_iterator i, fe = m_fields.end(); - for ( i = m_fields.begin(); i != fe; ++i ) + Fields::const_iterator i, fe = f_end(); + for ( i = f_begin(); i != fe; ++i ) { int tag = i->first; if ( tag != beginStringField @@ -167,8 +167,8 @@ int FieldMap::calculateLength( int beginStringField, int HEAVYUSE FieldMap::calculateTotal( int checkSumField ) const { int result = 0; - Fields::const_iterator i, fe = m_fields.end(); - for ( i = m_fields.begin(); i != fe; ++i ) + Fields::const_iterator i, fe = f_end(); + for ( i = f_begin(); i != fe; ++i ) { if ( i->first != checkSumField ) result += i->second.getTotal(); diff --git a/src/C++/FieldMap.h b/src/C++/FieldMap.h index 3e50dd3ff..d66f501e2 100644 --- a/src/C++/FieldMap.h +++ b/src/C++/FieldMap.h @@ -35,15 +35,7 @@ #include #include -#if defined(ENABLE_BOOST_RBTREE) -#include -#elif defined(ENABLE_BOOST_SGTREE) -#include -#elif defined(ENABLE_BOOST_AVLTREE) -#include -#else #include "Container.h" -#endif namespace FIX { @@ -56,33 +48,11 @@ namespace FIX class FieldMap { -#if defined(ENABLE_BOOST_RBTREE) || defined(ENABLE_BOOST_SGTREE) || defined(ENABLE_BOOST_AVLTREE) - - #if defined(ENABLE_BOOST_RBTREE) - typedef boost::intrusive::set_member_hook< - #elif defined(ENABLE_BOOST_SGTREE) - typedef boost::intrusive::bs_set_member_hook< - #elif defined(ENABLE_BOOST_AVLTREE) - typedef boost::intrusive::avl_set_member_hook< - #endif - boost::intrusive::link_mode, - boost::intrusive::void_pointer, - boost::intrusive::optimize_size - > store_hook; - - struct stored_type { - - store_hook m_link; - - #ifdef ENABLE_SLIST_TREE_TRAVERSAL - mutable const stored_type* m_next; - #endif - -#else // Container::avlTree - - struct stored_type : public Container::avlNode { - + struct stored_type +#ifndef ENABLE_FLAT_FIELDMAP + : public Container::avlNode #endif + { int first; FieldBase second; @@ -101,7 +71,7 @@ class FieldMap template struct disposer_type { A& m_allocator; disposer_type(A& a) : m_allocator(a) {} - void operator()(stored_type* p) { + void operator()(stored_type* p) const { p->~stored_type(); m_allocator.deallocate(p); } @@ -120,35 +90,258 @@ class FieldMap stored_type( int tag, const std::string& value ) : first(tag), second( tag, value ) {} }; -#if defined(ENABLE_BOOST_RBTREE) || defined(ENABLE_BOOST_SGTREE) || defined(ENABLE_BOOST_AVLTREE) +#if defined(ENABLE_FLAT_FIELDMAP) + + class RefBuffers { + stored_type* m_buf[ItemAllocatorTraits::DefaultCapacity]; + std::size_t m_size; + public: + void clear() { m_size = 0; } + stored_type** buffer(std::size_t count) + { return (m_size + count <= ItemAllocatorTraits::DefaultCapacity) ? m_size += count, m_buf + m_size - count : NULL; } + }; + + typedef ItemAllocator< stored_type, RefBuffers > field_allocator_type; + typedef Container::flatSet + > store_type; + + typedef store_type::const_iterator field_iterator; + + inline field_iterator f_begin() const { return m_fields.begin(); } + inline field_iterator f_end() const { return m_fields.end(); } - typedef boost::intrusive::member_hook< stored_type, store_hook, &stored_type::m_link > hook_type; - typedef boost::intrusive::compare compare_type; + static inline store_type::const_iterator to_store_iterator(const field_iterator it) { return it; } + static inline field_iterator link_next(const store_type::const_iterator it) { return it; } - #if defined(ENABLE_BOOST_RBTREE) - typedef boost::intrusive::rbtree< - #elif defined(ENABLE_BOOST_SGTREE) - typedef boost::intrusive::sgtree< - #elif defined(ENABLE_BOOST_AVLTREE) - typedef boost::intrusive::avltree< - #endif - stored_type, - compare_type, - hook_type, - boost::intrusive::constant_time_size - > store_type; +#elif not defined(ENABLE_RELAXED_ORDERING) -#else // Container::avlTree + typedef ItemAllocator< stored_type > field_allocator_type; + typedef Container::avlTree + store_type; - typedef Container::avlTree store_type; + typedef store_type::const_iterator field_iterator; -#endif + inline field_iterator f_begin() const { return m_fields.begin(); } + inline field_iterator f_end() const { return m_fields.end(); } + + static inline store_type::const_iterator to_store_iterator(const field_iterator it) { return it; } + static inline field_iterator link_next(const store_type::const_iterator it) { return it; } + +#else - ItemAllocator< stored_type > m_allocator; + typedef Container::avlNodeTraits NodeTraits; + template static inline Parent* parent_from_member(MemberType* const pm) + { return (Parent*)((uintptr_t)pm + 1 - (uintptr_t)MemberTraits::ptr_to_member((Parent*)1)); } + + class NodeList { + + typedef Container::avlNode node_type; + typedef Util::PtrCache cache_type; + + cache_type m_cache; + node_type* m_head, ** m_pnext; + + public: + + struct Traits { + static inline node_type** ptr_to_member(node_type* p) { return &p->m_next; } + static inline node_type* node_from_next(node_type** const ppn) { return parent_from_member(ppn); } + + static inline node_type** get_next_ptr(node_type* p) { return &p->m_next; } + + static inline void set_next(node_type* p, node_type* pn) { NodeTraits::set_next(p, pn); } + static inline node_type* get_next(const node_type* p) { return NodeTraits::get_next(p); } + + static inline void set_prev(node_type* p, node_type* pp) { NodeTraits::set_right(p, pp); } + static inline node_type* get_prev(const node_type* p) { return NodeTraits::get_right(p); } + + static inline void set_rank(node_type* p, std::size_t r) { NodeTraits::set_attribute(p, r); } + static inline std::size_t get_rank(const node_type* p) { return NodeTraits::get_attribute(p); } + + static inline void set_parent(node_type* p) { NodeTraits::set_parent(p); } + }; + typedef Traits traits_type; + + NodeList(node_type* header = NULL) + : m_head(header), m_pnext(&m_head) + {} + + NodeList* extend(node_type* next) + { *m_pnext = next; return this; } + + bool empty() const + { return &m_head == m_pnext; } + + template + void clear_and_dispose(Disposer disposer) + { + node_type *next = m_head; + for(node_type *p = next, **pn = &m_head; pn != m_pnext; p = next) + { + next = traits_type::get_next(p); + pn = traits_type::get_next_ptr(p); + disposer(static_cast(p)); + } + m_head = next; + m_pnext = &m_head; + m_cache.clear(); + } + + stored_type* push_back(stored_type* p) + { + std::size_t i = m_cache.insert(p->first, p); + if (i < m_cache.capacity()) + { + node_type** pp = m_pnext; + node_type* pn = *pp; + *pp = p; + m_pnext = traits_type::get_next_ptr(p); + traits_type::set_parent(p); + traits_type::set_next(p, pn); + traits_type::set_prev(p, &m_head != pp ? traits_type::node_from_next(pp) : NULL); + traits_type::set_rank(p, i); + return p; + } + return NULL; + } + node_type* erase(const stored_type* n) + { + node_type* p = m_cache.evict(traits_type::get_rank(n)); + if (p) unlink(p); + return p; + } + node_type* erase(int key) + { + node_type* p = m_cache.erase(key); + if (p) unlink(p); + return p; + } + node_type* find(int key) + { + return m_cache.lookup(key); + } + node_type* begin() { return m_head; } + node_type* end() { return *m_pnext; } + node_type* rbegin() { return traits_type::node_from_next(m_pnext); } + + private: + + void unlink(node_type* p) + { + node_type* pp = traits_type::get_prev(p); + node_type* pn = traits_type::get_next(p); + node_type** pnext = pp ? (traits_type::set_next(pp, pn), traits_type::get_next_ptr(pp)) : (m_head = pn, &m_head); + if (m_pnext == traits_type::get_next_ptr(p)) + m_pnext = pnext; + } + }; + + struct TreeTraits { + + typedef NodeList::Traits list_traits; + typedef Container::avlNode node_type; + + // custom header holder + template class Base { + + NodeList* m_plist; + node_type m_header; // sides are left- and right-most nodes, parent is root + + protected: + Base() : m_plist(NULL) {} + + node_type* header_ptr() + { return &this->m_header; } + + const node_type* header_ptr() const + { return &this->m_header; } + + public: + + struct HeaderTraits + { + static inline node_type* ptr_to_member(Base* p) + { return &p->m_header; } + }; + + static inline NodeList* list_for_header(node_type* header) + { return parent_from_member(header)->m_plist; } + + NodeList* list() const + { return this->m_plist; } + + void attach(NodeList* p) + { this->m_plist = new (p) NodeList(&m_header); } // reset the header + }; + + // custom algorithms + template struct Algorithms : public Container::avlTreeTraits::template Algorithms + { + typedef Container::avlTreeTraits::template Algorithms algorithms_base; + static bool is_enlisted(const node_type* p) + { return !algorithms_base::node_traits::get_parent(p) && !algorithms_base::is_header(p); } + }; + + }; + + typedef Container::avlTree store_type; + typedef ItemAllocator< stored_type, NodeList > field_allocator_type; + + class field_iterator : public store_type::const_iterator + { + static store_type::tree_traits::node_type* dec(const store_type::tree_traits::node_type* n) + { + store_type::tree_traits::node_type* p = store_type::node_traits::get_parent(n); + if (!p) + { + if ((p = store_type::tree_traits::list_traits::get_prev(n)) || !store_type::algorithms::is_header(n)) return p; + } + else + { + if ((p = store_type::algorithms::prev_node_inner(n)) && !store_type::algorithms::is_header(p)) return p; + } + + NodeList* l = store_type::base_type::list_for_header(p); + if (l && !l->empty()) return l->rbegin(); + return p; + } + public: + field_iterator() {} + field_iterator(store_type::const_iterator i) : store_type::const_iterator(i) {} + explicit field_iterator(const TreeTraits::node_type* p) : store_type::const_iterator(p) {} + field_iterator& operator--() + { + m_node = dec(m_node); + return *this; + } + field_iterator operator--(int) + { + field_iterator copy(*this); + m_node = dec(m_node); + return copy; + } + }; + + inline field_iterator f_begin() const + { NodeList* p = m_fields.list(); return p ? field_iterator(p->begin()) : m_fields.begin(); } + inline field_iterator f_end() const { return m_fields.end(); } + + inline store_type::const_iterator to_store_iterator(const field_iterator it) { return it; } + inline field_iterator link_next(const store_type::const_iterator it) + { NodeList* p = m_fields.list(); if (p && m_fields.begin() == it) p->extend(const_cast(&*it)); return it; } + +#endif // ENABLE_RELAXED_ORDERING + + field_allocator_type m_allocator; public: - typedef ItemAllocator< stored_type > allocator_type; + typedef field_allocator_type allocator_type; allocator_type get_allocator() { return m_allocator; } private: @@ -185,223 +378,213 @@ class FieldMap template static inline void assign_value(store_type::iterator& it, const Arg& arg) { it->second.setPacked(arg); } - void assign_value(FieldMap::store_type::iterator& it, const FieldBase& field) + void assign_value(store_type::iterator& it, const FieldBase& field) { it->second = field; } - void assign_value(FieldMap::store_type::iterator& it, const std::string& value) + void assign_value(store_type::iterator& it, const std::string& value) { it->second.setString( value ); } -#if defined(ENABLE_SLIST_TREE_TRAVERSAL) && \ - (defined(ENABLE_BOOST_RBTREE) || defined(ENABLE_BOOST_SGTREE) || defined(ENABLE_BOOST_AVLTREE)) - - class field_iterator { - - public: - typedef const stored_type* const_pointer; - typedef stored_type* pointer; - typedef const stored_type& const_reference; - typedef stored_type& reference; - field_iterator(const stored_type* p = NULL) : m_p(p) {} - field_iterator& operator ++() { m_p = m_p->m_next; return *this; } - field_iterator operator ++(int) { const stored_type* p = m_p; m_p = p->m_next; return p; } - bool operator == (const field_iterator& other) const { return m_p == other.m_p; } - bool operator != (const field_iterator& other) const { return m_p != other.m_p; } - const_reference operator*() { return *m_p; } - const_pointer operator->() { return m_p; } - - private: - const stored_type* m_p; - }; - - struct stored_type_slist { - const stored_type* m_root; - const stored_type* m_last; - - stored_type_slist() : m_root(NULL), m_last(NULL) {} - void clear() { m_root = m_last = NULL; } - bool empty() const { return m_root == NULL; } - void push_back(const stored_type* p) { - if (LIKELY(NULL != m_last)) { - m_last->m_next = p; - m_last = p; - } else - m_root = m_last = p; - p->m_next = NULL; - } - - struct cloner { - stored_type_slist& m_s; - const stored_type** m_p; - - cloner(stored_type_slist& s) : m_s(s), m_p(&s.m_root) {} - void next(const stored_type* p) { *m_p = p; m_p = &p->m_next; } - void final(const stored_type* p) { *m_p = NULL; m_s.m_last = p; } - }; - } m_list; - - inline void HEAVYUSE f_clear() { + inline void HEAVYUSE f_clear() + { m_fields.clear_and_dispose(stored_type::disposer_type(m_allocator)); - m_list.clear(); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(); + if (p) + { + p->extend(&*m_fields.begin()); + p->clear_and_dispose(stored_type::disposer_type(m_allocator)); + } +#endif } - inline void f_copy(const FieldMap& from) { - stored_type *n = NULL; - stored_type_slist::cloner c( m_list ); + inline void f_copy(const FieldMap& from) + { const store_type& src = from.m_fields; - store_type::const_iterator e = src.end(); - for ( store_type::const_iterator it = src.begin(); it != e; ++it ) { - n = new ( m_allocator.allocate() ) stored_type(*it); - m_fields.push_back( *n ); - c.next( n ); + for (store_type::const_iterator it = src.begin(), e = src.end(); it != e; ++it) + m_fields.push_back( *new (m_allocator.allocate()) stored_type(*it) ); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(), *po = from.m_fields.list(); + if (p) + { + if (po) + for (field_iterator it(po->begin()), e(po->end()); it != e; ++it) + p->push_back( new (m_allocator.allocate()) stored_type(*it) ); + p->extend(&*m_fields.begin()); } - c.final( n ); + else if (po) + for (field_iterator it(po->begin()), e(po->end()); it != e; ++it) + m_fields.insert_equal(*new (m_allocator.allocate()) stored_type(*it)); +#endif } inline void f_clone(const FieldMap& from) { m_fields.clone_from( from.m_fields, stored_type::cloner_type(m_allocator), stored_type::disposer_type(m_allocator)); m_order = from.m_order; - - stored_type *n = NULL; - stored_type_slist::cloner c( m_list ); - store_type::iterator e = m_fields.end(); - for ( store_type::iterator it = m_fields.begin(); it != e; ++it ) { - n = &*it; - c.next( n ); - } - c.final( n ); - } - - inline field_iterator f_begin() const { return field_iterator(m_list.m_root); } - static inline field_iterator f_end() { return field_iterator(); } - - void unlink_next(const stored_type* removed, store_type::const_iterator next) { - if ( !m_fields.empty() ) { - if ( m_list.m_last != removed ) { - if ( m_list.m_root != removed ) - { removed = &*next; (--next)->m_next = removed; } - else - { m_list.m_root = &*next; } - } else { (m_list.m_last = &*--next)->m_next = NULL; } - } else - m_list.clear(); - } - - inline store_type::const_iterator to_store_iterator(field_iterator it) { - return it == field_iterator() ? m_fields.end() : m_fields.iterator_to(*it); - } - - inline field_iterator HEAVYUSE link_next(store_type::const_iterator inserted) { - const stored_type* p = &*inserted; - store_type::const_iterator it = inserted; - if ( ++it == m_fields.end() ) - m_list.push_back(p); - else { - p->m_next = &*it; - if ( inserted == m_fields.begin() ) - m_list.m_root = p; - else { - (--inserted)->m_next = p; +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(), *po = from.m_fields.list(); + if (p) + { + p->extend(&*m_fields.begin()); + if (po) + { + p->clear_and_dispose(stored_type::disposer_type(m_allocator)); + for (field_iterator it(po->begin()), e(po->end()); it != e; ++it) + p->push_back( new (m_allocator.allocate()) stored_type(*it) ); } } - return p; + else if (po) + for (field_iterator it(po->begin()), e(po->end()); it != e; ++it) + m_fields.insert_equal(*new (m_allocator.allocate()) stored_type(*it)); +#endif } inline void erase(int tag) { - store_type::iterator it = m_fields.find( tag, m_fields.value_comp() ); - if ( it != m_fields.end() ) { - const stored_type* p = &*it; - it = m_fields.erase_and_dispose(it, stored_type::disposer_type(m_allocator)); - unlink_next(p, it); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + stored_type* f; + NodeList* p = m_fields.list(); + if (p && (f = static_cast(p->erase(tag)))) + { + (stored_type::disposer_type(m_allocator))(f); + return; } - } - inline store_type::iterator erase(store_type::iterator& it) { - const stored_type* p = &*it; - it = m_fields.erase_and_dispose( it, stored_type::disposer_type(m_allocator)); - unlink_next(p, it); - return it; - } - - template stored_type& HEAVYUSE push_back(const Arg& arg) { - stored_type* p = new (m_allocator.allocate()) stored_type( arg ); - m_list.push_back(p); - m_fields.push_back(*p); - return *p; - } - -#else //!ENABLE_SLIST_TREE_TRAVERSAL - - typedef store_type::const_iterator field_iterator; - - inline void HEAVYUSE f_clear() { - m_fields.clear_and_dispose(stored_type::disposer_type(m_allocator)); - } - - inline void f_copy(const FieldMap& from) { - const store_type& src = from.m_fields; - store_type::const_iterator e = src.end(); - for (store_type::const_iterator it = src.begin(); it != e; ++it) - m_fields.push_back( *new (m_allocator.allocate()) stored_type(*it) ); - } - - inline void f_clone(const FieldMap& from) { - m_fields.clone_from( from.m_fields, stored_type::cloner_type(m_allocator), - stored_type::disposer_type(m_allocator)); - m_order = from.m_order; - } - - inline field_iterator f_begin() const { return m_fields.begin(); } - inline field_iterator f_end() const { return m_fields.end(); } - - static inline store_type::const_iterator to_store_iterator(const field_iterator it) { return it; } - static inline field_iterator link_next(const store_type::const_iterator it) { return it; } - - inline void erase(int tag) { +#endif store_type::iterator it = m_fields.find( tag, m_fields.value_comp() ); if ( it != m_fields.end() ) m_fields.erase_and_dispose(it, stored_type::disposer_type(m_allocator)); } inline store_type::iterator erase(store_type::iterator& it) { +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + stored_type* f,* n; + NodeList* p = m_fields.list(); + if (p && store_type::algorithms::is_enlisted((f = &*it)) && (f = static_cast(p->erase(f)))) + { + n = static_cast(store_type::tree_traits::list_traits::get_next(f)); + (stored_type::disposer_type(m_allocator))(f); + return store_type::iterator(n); + } +#endif return m_fields.erase_and_dispose( it, stored_type::disposer_type(m_allocator)); } + template stored_type& HEAVYUSE push_front_ordered(const Arg& arg) { + stored_type* f = new (m_allocator.allocate()) stored_type( arg ); + m_fields.push_front(*f); + return *f; + } + template stored_type& HEAVYUSE push_back_ordered(const Arg& arg) { + stored_type* f = new (m_allocator.allocate()) stored_type( arg ); + m_fields.push_back(*f); + return *f; + } template stored_type& HEAVYUSE push_back(const Arg& arg) { - stored_type* p = new (m_allocator.allocate()) stored_type( arg ); - m_fields.push_back(*p); - return *p; + stored_type* f = new (m_allocator.allocate()) stored_type( arg ); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(); + if (p && p->push_back(f)) return *f; +#endif + m_fields.push_back(*f); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + if (p && f == &*m_fields.begin()) p->extend(f); +#endif + return *f; } -#endif //!ENABLE_SLIST_TREE_TRAVERSAL - inline store_type::iterator HEAVYUSE lower_bound(int tag) { - return m_fields.lower_bound( tag, m_fields.value_comp() ); - } - inline store_type::const_iterator HEAVYUSE find(int tag) const { + inline field_iterator HEAVYUSE find(int tag) const { +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + store_type::tree_traits::node_type* f; + NodeList* p = m_fields.list(); + if (p && (f = p->find(tag))) return field_iterator(f); +#endif return m_fields.find( tag, m_fields.value_comp() ); } - template field_iterator HEAVYUSE add(const Arg& arg) { + template field_iterator HEAVYUSE add_ordered(const Arg& arg) { return link_next(m_fields.insert_equal(*new (m_allocator.allocate()) stored_type( arg ))); } + template field_iterator HEAVYUSE add(const Arg& arg) { + stored_type* f = new (m_allocator.allocate()) stored_type( arg ); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(); + if (p && p->push_back(f)) return field_iterator(f); +#endif + return link_next(m_fields.insert_equal(*f)); + } template field_iterator HEAVYUSE add(field_iterator hint, const Arg& arg) { - return link_next(m_fields.insert_equal(to_store_iterator(hint), *new (m_allocator.allocate()) stored_type( arg ))); + stored_type* f = new (m_allocator.allocate()) stored_type( arg ); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(); + if (p && p->push_back(f)) return field_iterator(f); +#endif + return link_next(m_fields.insert_equal(to_store_iterator(hint), *f)); } + template store_type::iterator HEAVYUSE assign_ordered(int tag, const Arg& arg) { + store_type::insert_commit_data data; + std::pair r = m_fields.insert_unique_check( tag, m_fields.value_comp(), data); + if (r.second) link_next(r.first = m_fields.insert_unique_commit( *new (m_allocator.allocate()) stored_type( tag, arg ), data)); + else assign_value(r.first, arg ); + return r.first; + } template store_type::iterator HEAVYUSE assign(int tag, const Arg& arg) { store_type::insert_commit_data data; +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + store_type::tree_traits::node_type* f; + NodeList* p = m_fields.list(); + if (p && (f = p->find(tag))) + { + store_type::iterator it(f); + assign_value(it, arg); + return it; + } +#endif std::pair r = m_fields.insert_unique_check( tag, m_fields.value_comp(), data); - if (r.second) link_next(r.first = m_fields.insert_unique_commit( *new (m_allocator.allocate()) stored_type( tag, arg ), data )); + if (r.second) + { + stored_type* f = new (m_allocator.allocate()) stored_type( tag, arg ); +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + if (p && p->push_back(f)) return store_type::iterator(f); +#endif + link_next(r.first = m_fields.insert_unique_commit( *f, data )); + } else assign_value(r.first, arg ); return r.first; } protected: + struct Options { + const std::size_t expected_field_count; + const bool strictly_ordered; + Options(std::size_t fc, bool ordering = true) : expected_field_count(fc), strictly_ordered(ordering) {} + }; + struct Sequence { - /// Adds a field without type checking to the end of the map without order checking template - static inline const store_type::value_type* push_back_to( FieldMap& map, const Packed& packed ) // in sequence - { return &map.push_back( packed ); } + static inline field_iterator push_front_to_ordered( FieldMap& map, const Packed& packed ) // in sequence, ordered container + { return field_iterator(&map.push_front_ordered( packed )); } + template + static inline field_iterator push_back_to_ordered( FieldMap& map, const Packed& packed ) // in sequence, ordered container + { return field_iterator(&map.push_back_ordered( packed )); } + template + static inline field_iterator push_back_to( FieldMap& map, const Packed& packed ) // in sequence + { return field_iterator(&map.push_back( packed )); } + + template + static inline const store_type::value_type* insert_into_ordered( FieldMap& map, const Packed& packed ) // out of sequence, ordered container + { return &*map.add_ordered( packed ); } template static inline const store_type::value_type* insert_into( FieldMap& map, const Packed& packed ) // out of sequence { return &*map.add( packed ); } + + template + static inline store_type::value_type* set_in_ordered( FieldMap& map, const Packed& packed, + typename Packed::result_type* = NULL ) // out of sequence, ordered container + { return &*map.assign_ordered( packed.getField(), packed ); } + static inline store_type::value_type* set_in_ordered( FieldMap& map, const FieldBase& field) + { return &*map.assign_ordered( field.getField(), field ); } + template + static inline const store_type::value_type* set_in( FieldMap& map, const Packed& packed ) // out of sequence + { return &*map.assign( packed.getField(), packed ); } + static inline bool header_compare( const FieldMap&, int x, int y ) { return message_order::header_compare( x, y ); } static inline bool trailer_compare( const FieldMap&, int x, int y ) @@ -431,7 +614,12 @@ class FieldMap FieldMap( const FieldMap& src ) : m_order( src.m_order ), m_fields( src.m_fields.value_comp() ) - { f_copy(src); g_copy(src); } + { +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + if (src.m_fields.list()) m_fields.attach(m_allocator.header()); +#endif + f_copy(src); g_copy(src); + } FieldMap( const allocator_type& a, const message_order& order = message_order( message_order::normal ) ) @@ -439,7 +627,27 @@ class FieldMap FieldMap( const allocator_type& a, const FieldMap& src ) : m_allocator( a ), m_order( src.m_order ), m_fields( src.m_fields.value_comp() ) - { f_copy(src); g_copy(src); } + { +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + if (src.m_fields.list()) m_fields.attach(m_allocator.header()); +#endif + f_copy(src); g_copy(src); + } + +#ifdef ENABLE_FLAT_FIELDMAP + FieldMap( const allocator_type& a, const message_order& order, const Options& opt ) + : m_allocator( a ), m_order( order ), + m_fields( m_allocator.header()->buffer(opt.expected_field_count), opt.expected_field_count, order ) + {} +#else + FieldMap( const allocator_type& a, const message_order& order, const Options& opt ) + : m_allocator( a ), m_order( order ), m_fields( order ) + { +#ifdef ENABLE_RELAXED_ORDERING + if (!opt.strictly_ordered) m_fields.attach(m_allocator.header()); +#endif + } +#endif virtual ~FieldMap(); @@ -542,16 +750,25 @@ class FieldMap void removeField( int tag ) { erase( tag ); } - /// Remove a range of fields + /// Remove a range of ordered fields template void removeFields(TagIterator tb, TagIterator te) { if( tb < te ) { int tag, last = *(tb + ((te - tb) - 1)); - store_type::iterator end = m_fields.end(); - store_type::iterator it = lower_bound( *tb); - while( it != end && (tag = it->first) <= last ) +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(); + if (p) + { + stored_type* f; + for( TagIterator t = tb; t < te; ++t ) + while( (f = static_cast(p->erase(tag = *t))) ) + (stored_type::disposer_type(m_allocator))(f); + } +#endif + store_type::iterator it = m_fields.lower_bound( *tb, m_fields.value_comp() ); + while( it != m_fields.end() && (tag = it->first) <= last ) { for( ; *tb < tag; ++tb ) ; @@ -614,7 +831,14 @@ class FieldMap /// Check if map contains any fields bool isEmpty() - { return m_fields.empty(); } + { +#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + NodeList* p = m_fields.list(); + return (!p || p->empty()) && m_fields.empty(); +#else + return m_fields.empty(); +#endif + } int totalFields() const; @@ -648,13 +872,26 @@ class FieldMap return sink; } +protected: static inline - allocator_type create_allocator(std::size_t n = allocator_type::DefaultCapacity) + allocator_type create_allocator(std::size_t n = ItemAllocatorTraits::DefaultCapacity) { - return allocator_type( allocator_type::buffer_type::create(n) ); + allocator_type a( allocator_type::buffer_type::create(n) ); +#ifdef ENABLE_FLAT_FIELDMAP + a.header()->clear(); +#endif + return a; } -protected: + static inline + void reset_allocator( allocator_type& a ) + { +#ifdef ENABLE_FLAT_FIELDMAP + a.header()->clear(); +#endif + a.clear(); + } + message_order m_order; // must precede field container private: store_type m_fields; diff --git a/src/C++/FieldTypes.cpp b/src/C++/FieldTypes.cpp index 37b07703e..24243656e 100644 --- a/src/C++/FieldTypes.cpp +++ b/src/C++/FieldTypes.cpp @@ -33,14 +33,14 @@ namespace FIX { DateTime DateTime::nowUtc() { -#if defined( HAVE_FTIME ) - timeb tb; - ftime (&tb); - return fromUtcTimeT (tb.time, tb.millitm); -#elif defined( _POSIX_SOURCE ) +#if defined( _POSIX_SOURCE ) struct timeval tv; - gettimeofday (&tv, 0); + ::gettimeofday (&tv, 0); return fromUtcTimeT( tv.tv_sec, tv.tv_usec / 1000 ); +#elif defined( HAVE_FTIME ) + timeb tb; + ::ftime (&tb); + return fromUtcTimeT (tb.time, tb.millitm); #else return fromUtcTimeT( ::time (0), 0 ); #endif @@ -48,14 +48,14 @@ DateTime DateTime::nowUtc() DateTime DateTime::nowLocal() { -#if defined( HAVE_FTIME ) - timeb tb; - ftime (&tb); - return fromLocalTimeT( tb.time, tb.millitm ); -#elif defined( _POSIX_SOURCE ) +#if defined( _POSIX_SOURCE ) struct timeval tv; - gettimeofday (&tv, 0); + ::gettimeofday (&tv, 0); return fromLocalTimeT( tv.tv_sec, tv.tv_usec / 1000 ); +#elif defined( HAVE_FTIME ) + timeb tb; + ::ftime (&tb); + return fromLocalTimeT( tb.time, tb.millitm ); #else return fromLocalTimeT( ::time (0), 0 ); #endif diff --git a/src/C++/FieldTypes.h b/src/C++/FieldTypes.h index 4c419b51e..747e8ee43 100644 --- a/src/C++/FieldTypes.h +++ b/src/C++/FieldTypes.h @@ -77,6 +77,9 @@ struct DateTime /// Default constructor - initializes to zero DateTime () : m_date (0), m_time (0) {} + DateTime( const DateTime& src ) + : m_value(src.m_value) {} + /// Construct from a Julian day number and time in millis DateTime (int date, int time) : m_date (date), m_time (time) {} @@ -406,6 +409,12 @@ class UtcTimeStamp : public DateTime UtcTimeStamp() : DateTime( DateTime::nowUtc() ) {} + UtcTimeStamp( const UtcTimeStamp& src ) + : DateTime( src ) {} + + UtcTimeStamp( const DateTime& src ) + : DateTime( src ) {} + /// Defaults to the current date UtcTimeStamp( int hour, int minute, int second, int millisecond = 0 ) : DateTime( DateTime::nowUtc() ) diff --git a/src/C++/ItemAllocator.h b/src/C++/ItemAllocator.h index 9db7b209f..480f6bf12 100644 --- a/src/C++/ItemAllocator.h +++ b/src/C++/ItemAllocator.h @@ -26,26 +26,38 @@ namespace FIX { + struct ItemAllocatorTraits + { + static const unsigned DefaultCapacity = 32; + }; - // Caching allocator for node-based containers - template + // Cache-friendly allocator for node-based containers with optional aligned header area + template class ItemStore { - template + template struct SizeOf { // 0 for void + static char f(void*); + template static char (&f(U*))[sizeof(U&) + 1]; + static const std::size_t value = sizeof(f((O*)0)) - 1; + }; + static const std::size_t HeaderBytes = SizeOf
::value; + template struct Options { - static const std::size_t Padding = A2 - sizeof(U) % A2; union Entry { - char m_v[sizeof(U) + Padding % A2]; + char m_v[sizeof(U) + (IA - sizeof(U) % IA) % IA]; U* m_p; }; - static const std::size_t Allow = sizeof(Entry) == sizeof(typename Options::Entry); - int type_compatibility_for_item_store : Allow; + static const std::size_t AllowType = (HA != 0) && !(HA & (HA - 1)) && (IA != 0) && !(IA & (IA - 1)); + int improper_alignment : AllowType; // power-of-two alignment only + static const std::size_t AllowCopy = HeaderBytes == HB && HeaderAlignment == HA && + sizeof(Entry) == sizeof(typename Options::Entry); + int type_compatibility_for_item_store : AllowCopy; }; public: class Buffer { - typedef typename Options::Entry Entry; + typedef typename Options::Entry Entry; class Segment { unsigned m_count, m_num; Segment* m_next; @@ -71,7 +83,7 @@ namespace FIX }; T* m_pfree; - unsigned m_shared; + unsigned m_shared, m_pad; Segment m_seg; // must be the last member! Segment* PURE_DECL top() const { return m_seg.next(); } @@ -86,18 +98,26 @@ namespace FIX } } + Buffer(unsigned num, unsigned referenced, unsigned pad) + : m_pfree(NULL), m_shared(referenced + 1), m_pad(pad), m_seg(num, &m_seg) {} + ~Buffer() {} + + template struct Eval { + static const std::size_t Bytes = HeaderBytes + sizeof(B) + + ((HeaderBytes > 0 && HeaderAlignment < ItemAlignment) ? (ItemAlignment - HeaderAlignment) : 0); + static const std::size_t Padding = Bytes + (ItemAlignment - Bytes % ItemAlignment) % ItemAlignment + + ((HeaderBytes > 0 && HeaderAlignment >= ItemAlignment) ? HeaderAlignment : 0); + }; public: - Buffer(unsigned num, unsigned referenced) - : m_pfree(NULL), m_shared(referenced + 1), m_seg(num, &m_seg) {} - unsigned addRef() { return ++m_shared; } unsigned decRef() { return --m_shared; } static inline Buffer* create(unsigned num, unsigned referenced = 0) { - Buffer* h = (Buffer*) (ALLOCATOR().allocate(num * sizeof(Entry) + sizeof(Buffer))); - return new (h) Buffer(num, referenced); + unsigned char* p = ALLOCATOR().allocate(Eval::Padding + num * sizeof(Entry)); + Buffer* h = (Buffer*) ((((uintptr_t)p + Eval::Padding) & ~(uintptr_t)(ItemAlignment - 1)) - sizeof(Buffer)); + return new (h) Buffer(num, referenced, (uintptr_t)h - (uintptr_t)p); } bool verify(T* p) @@ -106,7 +126,7 @@ namespace FIX do { if (p >= s->start() && p < s->end()) return true; s = s->next(); } while (s != top()); return false; } - + T* acquire() { if ( LIKELY(!m_pfree) ) @@ -128,11 +148,16 @@ namespace FIX m_seg.reset(&m_seg); m_pfree = NULL; } + + Header* header() // returns header space address + { return HeaderBytes > 0 ? (Header*)(((uintptr_t)this - HeaderBytes) & ~(uintptr_t)(HeaderAlignment - 1)) : (Header*)NULL; } + + static std::size_t header_size() { return HeaderBytes; } static void destroy(Buffer* p) { p->free_segments(); - ALLOCATOR().deallocate((unsigned char*)p, 0); + ALLOCATOR().deallocate((unsigned char*)p - p->m_pad, 0); } }; @@ -140,23 +165,23 @@ namespace FIX inline ItemStore(ItemStore const& s) : m_buffer( s.m_buffer ) { if ( m_buffer ) m_buffer->addRef(); } - template - inline ItemStore(ItemStore const& s, int = sizeof(Options)) + template + inline ItemStore(ItemStore const& s, int = sizeof(Options::value, HA, IA>)) : m_buffer( (Buffer*)s.m_buffer ) { if ( m_buffer ) m_buffer->addRef(); } - template - bool operator==(ItemStore const& s) const + template + bool operator==(ItemStore const& s) const { return (void*)m_buffer == (void*)s.m_buffer; } - template friend class ItemStore; + template friend class ItemStore; protected: Buffer* m_buffer; }; - template - class ItemAllocator : public ItemStore + template + class ItemAllocator : public ItemStore { public : @@ -169,11 +194,9 @@ namespace FIX typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; - typedef ItemStore item_store; + typedef ItemStore item_store; typedef typename item_store::Buffer buffer_type; - static const unsigned DefaultCapacity = 32; - public : // convert an allocator to allocator template @@ -188,8 +211,8 @@ namespace FIX inline explicit ItemAllocator(ItemAllocator const& a) : item_store(a) {} - template - inline ItemAllocator(ItemAllocator const& u) + template + inline ItemAllocator(ItemAllocator const& u) : item_store(u) {} inline ~ItemAllocator() // clean up here, not a virtual dtor @@ -198,13 +221,13 @@ namespace FIX if ( buf && buf->decRef() == 0 ) buffer_type::destroy(buf); } - template - inline bool operator==(ItemAllocator const& u) const - { return this->m_buffer ? static_cast&>(*this) == - static_cast&>(u) : false; } + template + inline bool operator==(ItemAllocator const& u) const + { return this->m_buffer ? static_cast(*this) == + static_cast::item_store&>(u) : false; } void clear() { if ( this->m_buffer ) this->m_buffer->clear(); } - + // address inline pointer address(reference r) { return &r; } inline const_pointer address(const_reference r) { return &r; } @@ -214,7 +237,7 @@ namespace FIX { buffer_type* buf = this->m_buffer; if ( LIKELY(NULL != buf) ) return buf->acquire(); - this->m_buffer = buffer_type::create(DefaultCapacity); + this->m_buffer = buffer_type::create(ItemAllocatorTraits::DefaultCapacity); return this->m_buffer->acquire(); } @@ -243,6 +266,9 @@ namespace FIX inline bool operator!=(ItemAllocator const& a) { return !operator==(a); } + Header* header() + { return this->m_buffer ? this->m_buffer->header() : (Header*)NULL; } + private: typedef ALLOCATOR Allocator; Allocator m_allocator; diff --git a/src/C++/Makefile.am b/src/C++/Makefile.am index e7d671915..099bc09ea 100644 --- a/src/C++/Makefile.am +++ b/src/C++/Makefile.am @@ -123,8 +123,8 @@ Config.h: Makefile $(top_builddir)/config.h grep "HAVE_BOOST" $(top_builddir)/config.h >>$@ grep "HAVE_TBB" $(top_builddir)/config.h >>$@ grep "ENABLE_SSO" $(top_builddir)/config.h >>$@ - grep "ENABLE_BOOST.*TREE" $(top_builddir)/config.h >>$@ - grep "ENABLE_SLIST" $(top_builddir)/config.h >>$@ + grep "ENABLE_FLAT_FIELDMAP" $(top_builddir)/config.h >>$@ + grep "ENABLE_RELAXED_ORDERING" $(top_builddir)/config.h >>$@ all-local: rm -rf $(top_builddir)/lib/libquickfix.a diff --git a/src/C++/Message.cpp b/src/C++/Message.cpp index 3ab66fe51..96201f932 100644 --- a/src/C++/Message.cpp +++ b/src/C++/Message.cpp @@ -50,22 +50,22 @@ int Message::FieldCounter::countGroups(FieldMap::g_const_iterator git, } Message::Message() -: FieldMap( FieldMap::create_allocator() ), - m_header( get_allocator(), message_order( message_order::header ) ), - m_trailer( get_allocator(), message_order( message_order::trailer ) ), +: FieldMap( FieldMap::create_allocator(), message_order( message_order::normal ), Options( bodyFieldCountEstimate(), false ) ), + m_header( get_allocator(), message_order( message_order::header ), Options( HeaderFieldCountEstimate ) ), + m_trailer( get_allocator(), message_order( message_order::trailer ), Options( TrailerFieldCountEstimate ) ), m_status( 0 ) {} -Message::Message( SerializationHint hint, int fieldCountEstimate ) -: FieldMap( FieldMap::create_allocator( fieldCountEstimate ) ), - m_header( get_allocator(), message_order( message_order::header ) ), - m_trailer( get_allocator(), message_order( message_order::trailer ) ), +Message::Message( SerializationHint hint, int fieldCount ) +: FieldMap( FieldMap::create_allocator( fieldCount ), message_order( message_order::normal ), Options( bodyFieldCountEstimate( fieldCount ), false) ), + m_header( get_allocator(), message_order( message_order::header ), Options( HeaderFieldCountEstimate ) ), + m_trailer( get_allocator(), message_order( message_order::trailer ), Options( TrailerFieldCountEstimate ) ), m_status( createStatus(serialized_once, hint == SerializedOnce) ) {} Message::Message( const std::string& string, bool validate ) throw( InvalidMessage ) -: FieldMap( FieldMap::create_allocator() ), - m_header( get_allocator(), message_order( message_order::header ) ), - m_trailer( get_allocator(), message_order( message_order::trailer ) ), +: FieldMap( FieldMap::create_allocator(), message_order( message_order::normal ), Options( bodyFieldCountEstimate(), false ) ), + m_header( get_allocator(), message_order( message_order::header ), Options( HeaderFieldCountEstimate ) ), + m_trailer( get_allocator(), message_order( message_order::trailer ), Options( TrailerFieldCountEstimate ) ), m_status( 0 ) { setString( string, validate ); @@ -75,9 +75,9 @@ Message::Message( const std::string& string, const DataDictionary& dataDictionary, bool validate ) throw( InvalidMessage ) -: FieldMap( FieldMap::create_allocator() ), - m_header( get_allocator(), message_order( message_order::header ) ), - m_trailer( get_allocator(), message_order( message_order::trailer ) ), +: FieldMap( FieldMap::create_allocator(), message_order( message_order::normal ), Options( bodyFieldCountEstimate(), false) ), + m_header( get_allocator(), message_order( message_order::header ), Options( HeaderFieldCountEstimate ) ), + m_trailer( get_allocator(), message_order( message_order::trailer ), Options( TrailerFieldCountEstimate ) ), m_status( 0 ) { setString( string, validate, &dataDictionary, &dataDictionary ); @@ -88,9 +88,9 @@ HEAVYUSE Message::Message( const std::string& string, const DataDictionary& applicationDataDictionary, bool validate ) throw( InvalidMessage ) -: FieldMap( FieldMap::create_allocator() ), - m_header( get_allocator(), message_order( message_order::header ) ), - m_trailer( get_allocator(), message_order( message_order::trailer ) ), +: FieldMap( FieldMap::create_allocator(), message_order( message_order::normal ), Options( bodyFieldCountEstimate(), false ) ), + m_header( get_allocator(), message_order( message_order::header ), Options( HeaderFieldCountEstimate ) ), + m_trailer( get_allocator(), message_order( message_order::trailer ), Options( TrailerFieldCountEstimate ) ), m_status( 0 ) { if( isAdminMsg( string ) ) @@ -104,9 +104,9 @@ HEAVYUSE Message::Message( const std::string& string, const FIX::DataDictionary& applicationDataDictionary, FieldMap::allocator_type& allocator, bool validate ) throw( InvalidMessage ) -: FieldMap( allocator ), - m_header( allocator, message_order( message_order::header ) ), - m_trailer( allocator, message_order( message_order::trailer ) ), +: FieldMap( allocator, message_order( message_order::normal ), Options( bodyFieldCountEstimate(), false) ), + m_header( allocator, message_order( message_order::header ), Options( HeaderFieldCountEstimate ) ), + m_trailer( allocator, message_order( message_order::trailer ), Options( TrailerFieldCountEstimate ) ), m_status( 0 ) { if( isAdminMsg( string ) ) @@ -160,7 +160,7 @@ Message::toString( const FieldCounter& c, std::string& str ) const const int csumTagLength = Util::PositiveInt::numDigits(checkSumField) + 1; int l = c.getBodyLength(); - l += m_header.setField(IntField::Pack(bodyLengthField, l)).getLength() + l += Sequence::set_in_ordered(m_header, IntField::Pack(bodyLengthField, l))->second.getLength() + csumTagLength + csumPayloadLength + c.getBeginStringLength(); str.clear(); @@ -176,7 +176,7 @@ Message::toString( const FieldCounter& c, std::string& str ) const // as the string is constructed locally if( getStatusBit( serialized_once ) && checkSumField == FIELD::CheckSum ) { - FieldBase& f = m_trailer.setField(CheckSumField::Pack(checkSumField, 0)); + FieldBase& f = Sequence::set_in_ordered(m_trailer, CheckSumField::Pack(checkSumField, 0))->second; m_trailer.serializeTo( FieldMap::serializeTo( @@ -192,7 +192,7 @@ Message::toString( const FieldCounter& c, std::string& str ) const } else { - m_trailer.setField(CheckSumField::Pack(checkSumField, + Sequence::set_in_ordered(m_trailer, CheckSumField::Pack(checkSumField, checkSum(checkSumField))); m_trailer.serializeTo( FieldMap::serializeTo( @@ -206,10 +206,7 @@ inline bool Message::extractFieldDataLength( Message::FieldReader& reader, const // length field is 1 less except for Signature int lenField = (field != FIELD::Signature) ? (field - 1) : FIELD::SignatureLength; const FieldBase* fieldPtr = (pGroup) ? pGroup->getFieldPtrIfSet( lenField ) : NULL; - if ( fieldPtr || - NULL != (fieldPtr = isHeaderField(field)? m_header.getFieldPtrIfSet( lenField ) - : (!isTrailerField(field) ? getFieldPtrIfSet( lenField) - : m_trailer.getFieldPtrIfSet( lenField )) ) ) + if ( fieldPtr || NULL != (fieldPtr = (!isHeaderField(field)? this : &m_header)->getFieldPtrIfSet( lenField )) ) { const FieldBase::string_type& fieldLength = fieldPtr->getRawString(); if ( IntConvertor::parse( fieldLength, lenField ) ) diff --git a/src/C++/Message.h b/src/C++/Message.h index 56214652e..e8a5834ee 100644 --- a/src/C++/Message.h +++ b/src/C++/Message.h @@ -96,11 +96,7 @@ class Message : public FieldMap } }; - static -#ifndef SWIG - ALIGN_DECL_DEFAULT -#endif - HeaderFieldSet headerFieldSet; + static ALIGN_DECL_DEFAULT HeaderFieldSet headerFieldSet; class FieldReader : public Sequence { @@ -172,7 +168,7 @@ class Message : public FieldMap /// Store ordered header fields const FieldBase* flushSpecHeaderField(FieldMap& map) { - const FieldBase& r = Sequence::push_back_to( map, *this )->second; + const FieldBase& r = Sequence::push_back_to_ordered( map, *this )->second; step(); return &r; } @@ -180,8 +176,8 @@ class Message : public FieldMap const FieldBase* flushHeaderField(FieldMap& map) { const FieldBase& r = ( LIKELY(Sequence::header_compare(map, m_hdr, m_field)) ) - ? m_hdr = m_field, Sequence::push_back_to( map, *this )->second - : Sequence::insert_into( map, *this )->second; + ? m_hdr = m_field, Sequence::push_back_to_ordered( map, *this )->second + : Sequence::insert_into_ordered( map, *this )->second; step(); return &r; } @@ -190,11 +186,11 @@ class Message : public FieldMap { if ( LIKELY(m_body < m_field) ) { - Sequence::push_back_to( map, *this )->second; + Sequence::push_back_to( map, *this ); m_body = m_field; } else - Sequence::insert_into( map, *this )->second; + Sequence::insert_into( map, *this ); step(); } @@ -202,11 +198,11 @@ class Message : public FieldMap { if ( LIKELY(Sequence::trailer_compare(map, m_trl, m_field)) ) { - Sequence::push_back_to( map, *this )->second; + Sequence::push_back_to_ordered( map, *this ); m_trl = m_field; } else - Sequence::insert_into( map, *this )->second; + Sequence::insert_into_ordered( map, *this ); step(); } @@ -214,11 +210,11 @@ class Message : public FieldMap { if ( LIKELY(Sequence::group_compare(map, m_grp, m_field) || m_grp == 0) ) { - Sequence::push_back_to( map, *this )->second; + Sequence::push_back_to( map, *this ); m_grp = m_field; } else - Sequence::insert_into( map, *this )->second; + Sequence::insert_into( map, *this ); step(); return m_grp; } @@ -305,6 +301,14 @@ class Message : public FieldMap const FIX::DataDictionary* pApplicationDataDictionary ) throw( InvalidMessage ); + static const std::size_t HeaderFieldCountEstimate = 8; + static const std::size_t TrailerFieldCountEstimate= 4; + static inline std::size_t bodyFieldCountEstimate(std::size_t available = ItemAllocatorTraits::DefaultCapacity) + { + return (available > (HeaderFieldCountEstimate + TrailerFieldCountEstimate)) + ? (available - HeaderFieldCountEstimate - TrailerFieldCountEstimate) : HeaderFieldCountEstimate; + } + Message( const char* p, std::size_t n, const DataDictionary& dataDictionary, FieldMap::allocator_type& a, @@ -341,12 +345,12 @@ class Message : public FieldMap { FieldCounter c( *this ); int bodyLength = c.getBodyLength() + c.getBeginStringLength() + - m_header.setField(BodyLength::Pack(c.getBodyLength())).getLength(); + Sequence::set_in_ordered(m_header, BodyLength::Pack(c.getBodyLength()))->second.getLength(); return m_trailer.serializeTo( FieldMap::serializeTo( m_header.serializeTo( s.buffer(bodyLength + - m_trailer.setField(CheckSum::Pack(checkSum())).getLength() + Sequence::set_in_ordered(m_trailer, CheckSum::Pack(checkSum()))->second.getLength() ) ) ) ); } @@ -359,8 +363,8 @@ class Message : public FieldMap m_trailer( get_allocator(), message_order( message_order::trailer ) ), m_status( 0 ) { - Sequence::push_back_to(m_header, beginString ); - Sequence::push_back_to(m_header, msgType ); + Sequence::push_back_to_ordered(m_header, beginString ); + Sequence::push_back_to_ordered(m_header, msgType ); } public: @@ -374,7 +378,7 @@ class Message : public FieldMap Message(); /// Construct a message with hints - Message( SerializationHint, int hintFieldCount = allocator_type::DefaultCapacity ); + Message( SerializationHint, int hintFieldCount = ItemAllocatorTraits::DefaultCapacity ); /// Construct a message from a string Message( const std::string& string, bool validate = true ) @@ -891,9 +895,9 @@ throw( FieldNotFound ) inline void Message::setSessionID( const SessionID& sessionID ) { - getHeader().setField( sessionID.getBeginString() ); - getHeader().setField( sessionID.getSenderCompID() ); - getHeader().setField( sessionID.getTargetCompID() ); + Sequence::set_in_ordered( getHeader(), sessionID.getBeginString() ); + Sequence::set_in_ordered( getHeader(), sessionID.getSenderCompID() ); + Sequence::set_in_ordered( getHeader(), sessionID.getTargetCompID() ); } /// Parse the type of a message from a string. diff --git a/src/C++/MessageStore.h b/src/C++/MessageStore.h index 53905ced0..efb16689d 100644 --- a/src/C++/MessageStore.h +++ b/src/C++/MessageStore.h @@ -85,9 +85,9 @@ class MessageStore virtual void incrNextTargetMsgSeqNum() throw ( IOException ) = 0; inline UtcTimeStamp NOTHROW getCreationTime() const - { UtcTimeStamp u; u.m_value = m_creationTime.m_value; return u; } // XXX: atomic + { return m_creationTime; } inline UtcTimeStamp NOTHROW setCreationTime( const UtcTimeStamp& creationTime ) - { m_creationTime.m_value = creationTime.m_value; return m_creationTime; } // XXX: atomic + { m_creationTime.m_value = creationTime.m_value; return m_creationTime; } virtual void reset() throw ( IOException ) = 0; virtual void refresh() throw ( IOException ) = 0; diff --git a/src/C++/Session.cpp b/src/C++/Session.cpp index 93a44c3a4..0bab5873f 100644 --- a/src/C++/Session.cpp +++ b/src/C++/Session.cpp @@ -68,7 +68,7 @@ Session::Session( Application& application, m_messageStoreFactory( messageStoreFactory ), m_pLogFactory( pLogFactory ), m_pResponder( 0 ), - m_rcvAllocator( Message::create_allocator( FieldMap::allocator_type::DefaultCapacity << 3 ) ) + m_rcvAllocator( Message::create_allocator( ItemAllocatorTraits::DefaultCapacity << 3 ) ) { m_state.heartBtInt( heartBtInt ); m_state.initiate( heartBtInt != 0 ); @@ -95,10 +95,10 @@ Session::~Session() void Session::fill( Header& header, UtcTimeStamp now ) { m_state.lastSentTime( now ); - header.setField( m_sessionID.getBeginString() ); - header.setField( m_sessionID.getSenderCompID() ); - header.setField( m_sessionID.getTargetCompID() ); - header.setField( MsgSeqNum::Pack( getExpectedSenderNum() ) ); + FieldMap::Sequence::set_in_ordered(header, m_sessionID.getBeginString() ); + FieldMap::Sequence::set_in_ordered(header, m_sessionID.getSenderCompID() ); + FieldMap::Sequence::set_in_ordered(header, m_sessionID.getTargetCompID() ); + FieldMap::Sequence::set_in_ordered(header, MsgSeqNum::Pack( getExpectedSenderNum() ) ); insertSendingTime( header, now ); } @@ -109,12 +109,10 @@ Message::admin_trait Session::fill( Header& header, int num, UtcTimeStamp now ) m_state.lastSentTime( now ); if( it->first == FIX::FIELD::BeginString ) - { (FieldBase&)it->second = m_sessionID.getBeginString(); - ++it; - } else - header.addField( it, m_sessionID.getBeginString() ); + it = FieldMap::Sequence::push_front_to_ordered( header, m_sessionID.getBeginString() ); + ++it; if ( it->first == FIX::FIELD::BodyLength ) ++it; @@ -125,9 +123,9 @@ Message::admin_trait Session::fill( Header& header, int num, UtcTimeStamp now ) if( msgType && p[1] == '\0' ) trait = Message::getAdminTrait( msgType ); } - header.setField( m_sessionID.getSenderCompID() ); - header.setField( m_sessionID.getTargetCompID() ); - header.setField( MsgSeqNum::Pack( num ? num : getExpectedSenderNum() ) ); + FieldMap::Sequence::set_in_ordered(header, m_sessionID.getSenderCompID() ); + FieldMap::Sequence::set_in_ordered(header, m_sessionID.getTargetCompID() ); + FieldMap::Sequence::set_in_ordered(header, MsgSeqNum::Pack( num ? num : getExpectedSenderNum() ) ); insertSendingTime( header, now ); return trait; @@ -1237,7 +1235,7 @@ void HEAVYUSE Session::next( Sg::sg_buf_t buf, const UtcTimeStamp& timeStamp, bo m_dataDictionaryProvider.getSessionDataDictionary(m_sessionID.getBeginString()); m_state.onIncoming( &buf, 1 ); - m_rcvAllocator.clear(); + Message::reset_allocator( m_rcvAllocator ); if( LIKELY(!m_sessionID.isFIXT()) ) { @@ -1440,7 +1438,7 @@ void HEAVYUSE Session::next( const Message& message, const DataDictionary& sessi nextQueued( timeStamp ); if( isLoggedOn() ) - next(); + next( timeStamp ); } bool Session::sendToTarget( Message& message, const std::string& qualifier ) @@ -1471,8 +1469,8 @@ bool Session::sendToTarget const std::string& qualifier ) throw( SessionNotFound ) { - message.getHeader().setField( senderCompID ); - message.getHeader().setField( targetCompID ); + FieldMap::Sequence::set_in_ordered( message.getHeader(), senderCompID ); + FieldMap::Sequence::set_in_ordered( message.getHeader(), targetCompID ); return sendToTarget( message, qualifier ); } diff --git a/src/C++/Session.h b/src/C++/Session.h index b1a3f21ec..892795011 100644 --- a/src/C++/Session.h +++ b/src/C++/Session.h @@ -260,14 +260,14 @@ class Session void insertSendingTime( Header& header, const UtcTimeStamp& now = UtcTimeStamp () ) { - header.setField( SendingTime::Pack(now, + FieldMap::Sequence::set_in_ordered(header, SendingTime::Pack(now, m_millisecondsAllowed && m_millisecondsInTimeStamp) ); } void insertOrigSendingTime( Header& header, const UtcTimeStamp& when = UtcTimeStamp () ) { - header.setField( OrigSendingTime::Pack(when, + FieldMap::Sequence::set_in_ordered(header, OrigSendingTime::Pack(when, m_millisecondsAllowed && m_millisecondsInTimeStamp) ); } diff --git a/src/C++/Utility.h b/src/C++/Utility.h index 7e6091940..80f813151 100644 --- a/src/C++/Utility.h +++ b/src/C++/Utility.h @@ -108,6 +108,12 @@ typedef int socklen_t; #include #include #include +#if defined(__GNUC__) && defined(__x86_64__) +#include +#ifdef __AVX__ +#include +#endif +#endif #if defined(__MACH__) #include #endif @@ -157,6 +163,7 @@ typedef int socklen_t; #define LIKELY(x) (x) #define MAY_ALIAS #define PURE_DECL +#define FORCE_INLINE #elif defined(__GNUC__) #define ALIGN_DECL(x) __attribute__ ((aligned(x))) #define NOTHROW __attribute__ ((nothrow)) @@ -167,6 +174,11 @@ typedef int socklen_t; #define LIKELY(x) __builtin_expect((x),1) #define MAY_ALIAS __attribute__ ((may_alias)) #define PURE_DECL __attribute__ ((pure)) +#if defined(__INTEL_COMPILER) +#define FORCE_INLINE __forceinline +#else +#define FORCE_INLINE +#endif #else #define ALIGN_DECL(x) #define NOTHROW @@ -177,6 +189,7 @@ typedef int socklen_t; #define LIKELY(x) (x) #define MAY_ALIAS #define PURE_DECL +#define FORCE_INLINE #endif #define ALIGN_DECL_DEFAULT ALIGN_DECL(16) @@ -798,6 +811,20 @@ namespace FIX } }; + struct Memory + { + template static inline void shift_up_from(T* src, std::size_t count) + { + if (LIKELY(count < 8) ) while (count) { std::size_t c = count--; src[c] = src[count]; } + else ::memmove(src + 1, src, count * sizeof(T)); + } + template static inline void shift_down_to(T* src, std::size_t count) + { + if (LIKELY(count < 8) ) while (count--) { T* dst = src++; *dst = *src; } + else ::memmove(src, src + 1, count * sizeof(T)); + } + }; + struct Char { static inline bool isspace( char x ) { return x == ' '; } @@ -829,15 +856,15 @@ namespace FIX #if defined(__GNUC__) return (const char*)::memmem(buf, bsz, str, ssz); #else - if( bsz >= ssz ) + if (bsz >= ssz) { const char* end = buf + bsz - ssz + 1; char c = str[0]; - while( LIKELY(NULL != (buf = (const char*)::memchr (buf, c, end - buf))) ) + while (LIKELY(NULL != (buf = (const char*)::memchr (buf, c, end - buf)))) { - if( 0 == ::memcmp (buf, str, ssz) ) + if (0 == ::memcmp (buf, str, ssz)) return buf; - if( ++buf >= end ) + if (++buf >= end) break; } } @@ -1531,6 +1558,251 @@ namespace FIX std::size_t size() const { return sizeof(word_type) << 3; } }; + template class PtrCache { + BitSet m_mask; + Key m_key[N]; + T* m_p[N]; + + public: + + static const std::size_t Alignment = 1; + + PtrCache() : m_mask(true) {} + + static inline std::size_t capacity() + { return N; } + + void clear() + { m_mask.set(); } + + T* lookup(const Key& key) + { + for(std::size_t i = 0; i < N; i++) + if (key == m_key[i] && !m_mask[i]) + return m_p[i]; + return NULL; + } + std::size_t insert(const Key& key, T* p) + { + std::size_t i = m_mask._Find_first(); + if (i != N) + { + m_key[i] = key; + m_p[i] = p; + m_mask.reset(i); + } + return i; + } + T* erase(const Key& key) + { + for (std::size_t i = 0; i < N; i++) + { + if (key == m_key[i] && !m_mask[i]) + { + m_mask.set(i); + return m_p[i]; + } + } + return false; + } + + T* evict(std::size_t pos) + { return (pos < N) ? m_mask.set(pos), m_p[pos] : NULL; } + }; + +#if defined(__GNUC__) && defined(__x86_64__) + + namespace detail + { + template struct int32_key_holder + { + union + { + __m128 m_simd[Size >> 2]; + struct + { + int32_t m_key[Size + 1]; + uint32_t m_mask; + }; + } __attribute__((packed)); + int32_key_holder() : m_mask(((uint32_t)1 << Size) - 1) {} + + template F* lookup_pos(uint32_t mask, F* m_p[Size + 1]) + { + F* p = NULL; + __asm__ __volatile__ ( + " bsf %1, %1; \n\t" + " cmovnz (%2,%q1,8), %0; \n\t" + : "+a"(p), "+r" (mask) + : "r" (m_p) + : "cc" + ); + return p; + } + template std::size_t insert_key(int32_t key, F* p, F* m_p[Size + 1]) { + uint32_t i = Size; + __asm__ __volatile__ ( + " bsf %1, %%edx; \n\t" + " cmovnz %%edx, %0; \n\t" + " btr %0, %1; \n\t" + : "+r"(i), "+m"(m_mask) + : + : "edx", "cc" + ); + m_key[i] = key; + m_p[i] = p; + return i; + } + template F* erase_pos(uint32_t mask, F* m_p[Size + 1]) { + int32_t tmp; + F* p = NULL; + __asm__ __volatile__ ( + " bsf %0, %0; \n\t" + " cmovnz (%4,%q0,8), %3; \n\t" + " setnz %b1; \n\t" + " movzbl %b1, %1; \n\t" + " shl %b0, %1; \n\t" + " or %1, %2; \n\t" + : "+c"(mask), "=r" (tmp), "+m"(m_mask), "+r" (p) + : "r" (m_p) + : "cc" + ); + return p; + } + template F* evict_pos(std::size_t pos, F* m_p[Size + 1]) { + std::size_t tmp = Size; + F* p = NULL; + __asm__ __volatile__ ( + " bts %2, %0 \n\t" + " cmovc %4, %2 \n\t" + " cmp %2, %4 \n\t" + " cmovg (%3,%2,8), %1 \n\t" + : "+m"(m_mask), "+r"(p) + : "r"(pos), "r"(m_p), "r"(tmp) + : "cc" + ); + return p; + } + }; + + template struct int32_keys; + + template <> struct int32_keys<8> : public int32_key_holder<8> + { + inline uint32_t keymask(int32_t key) + { + uint32_t mask; + __asm__ __volatile__ ( +#ifdef __AVX__ + " vmovd %1, %%xmm2; \n\t" + " vshufps $0, %%xmm2, %%xmm2, %%xmm2 \n\t" + " vpcmpeqd %2, %%xmm2, %%xmm1; \n\t" + " mov %4, %0; \n\t" + " vpcmpeqd %3, %%xmm2, %%xmm2; \n\t" + " not %0; \n\t" + " and $255, %0; \n\t" + " vpackssdw %%xmm2, %%xmm1, %%xmm1; \n\t" + " vpacksswb %%xmm1, %%xmm1, %%xmm1; \n\t" + " vpmovmskb %%xmm1, %1; \n\t" +#else + " movdqa %2, %%xmm1; \n\t" + " movd %1, %%xmm2; \n\t" + " shufps $0, %%xmm2, %%xmm2 \n\t" + " pcmpeqd %%xmm2, %%xmm1; \n\t" + " pcmpeqd %3, %%xmm2; \n\t" + " mov %4, %0; \n\t" + " not %0; \n\t" + " and $255, %0; \n\t" + " packssdw %%xmm2, %%xmm1; \n\t" + " packsswb %%xmm1, %%xmm1; \n\t" + " pmovmskb %%xmm1, %1; \n\t" +#endif + " and %1, %0; \n\t" + : "=r" (mask), "+r" (key) + : "m" (m_simd[0]), "m" (m_simd[1]), "m" (m_mask) + : "xmm1", "xmm2", "cc" + ); + return mask; + } + }; + + template <> struct int32_keys<16> : public int32_key_holder<16> + { + inline uint32_t keymask(int32_t key) + { + uint32_t mask; + __asm__ __volatile__ ( +#ifdef __AVX__ + " vmovd %1, %%xmm4; \n\t" + " vshufps $0, %%xmm4, %%xmm4, %%xmm4 \n\t" + " vpcmpeqd %2, %%xmm4, %%xmm1; \n\t" + " vpcmpeqd %3, %%xmm4, %%xmm2; \n\t" + " vpcmpeqd %4, %%xmm4, %%xmm3; \n\t" + " mov %6, %0; \n\t" + " vpackssdw %%xmm2, %%xmm1, %%xmm1; \n\t" + " vpcmpeqd %5, %%xmm4, %%xmm4; \n\t" + " not %0; \n\t" + " vpackssdw %%xmm4, %%xmm3, %%xmm3; \n\t" + " vpacksswb %%xmm3, %%xmm1, %%xmm1; \n\t" + " vpmovmskb %%xmm1, %1; \n\t" +#else + " movdqa %2, %%xmm1; \n\t" + " movdqa %3, %%xmm2; \n\t" + " movd %1, %%xmm4; \n\t" + " shufps $0, %%xmm4, %%xmm4 \n\t" + " pcmpeqd %%xmm4, %%xmm1; \n\t" + " movdqa %%xmm4, %%xmm3; \n\t" + " pcmpeqd %%xmm4, %%xmm2; \n\t" + " pcmpeqd %4, %%xmm3; \n\t" + " mov %6, %0; \n\t" + " packssdw %%xmm2, %%xmm1; \n\t" + " pcmpeqd %5, %%xmm4; \n\t" + " not %0; \n\t" + " packssdw %%xmm4, %%xmm3; \n\t" + " packsswb %%xmm3, %%xmm1; \n\t" + " pmovmskb %%xmm1, %1; \n\t" +#endif + " and %1, %0; \n\t" + : "=r" (mask), "+r" (key) + : "m" (m_simd[0]), "m" (m_simd[1]), "m" (m_simd[2]), "m" (m_simd[3]), "m" (m_mask) + : "xmm1", "xmm2", "xmm3", "xmm4", "cc" + ); + return mask; + } + }; + + template class IntPtrCache : private int32_keys + { + typedef int32_keys Base; + F* m_p[N + 1]; + + public: + + static inline std::size_t capacity() + { return N; } + + void clear() + { this->m_mask = ((uint32_t)1 << N) - 1; } + + F* lookup(int32_t key) + { return this->lookup_pos(Base::keymask(key), m_p); } + + std::size_t insert(int32_t key, F* p) + { return this->insert_key(key, p, m_p); } + + F* erase(int32_t key) + { return this->erase_pos(Base::keymask(key), m_p); } + + F* evict(std::size_t pos) + { return this->evict_pos((uint32_t)pos, m_p); } + }; + } + + template class PtrCache : public detail::IntPtrCache {}; + template class PtrCache : public detail::IntPtrCache {}; + +#endif + } // namespace FIX::Util struct Sg From 344bb5fa39a7fd7c40fe104d07ca443c69f27501 Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Thu, 7 Jan 2016 22:27:10 -0500 Subject: [PATCH 05/27] Misc updates for examples, tests and bindings --- OptionalSettings_vs11.props | 4 +- UnitTest++/Makefile | 2 +- examples/executor/C++/Application.cpp | 8 + examples/executor/C++/executor.cpp | 6 +- examples/tradeclient/Application.cpp | 173 +- examples/tradeclient/tradeclient.cpp | 6 +- src/C++/test/MessagesTestCase.cpp | 96 +- src/python/QuickfixPython.cpp | 3774 ++++++++++++------------- src/python/quickfix.py | 42 +- src/python/swig.sh | 2 +- src/quickfix.i | 2 +- src/ruby/QuickfixRuby.cpp | 3756 ++++++++++++------------ src/ruby/swig.sh | 2 +- 13 files changed, 3779 insertions(+), 4094 deletions(-) diff --git a/OptionalSettings_vs11.props b/OptionalSettings_vs11.props index e3b84d048..337c0b8f8 100644 --- a/OptionalSettings_vs11.props +++ b/OptionalSettings_vs11.props @@ -23,7 +23,7 @@ $(TBB_LIB);$(BOOST_LIB) - $(BOOST_LIB);$(TBB_LIB);C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\lib + $(BOOST_LIB);$(TBB_LIB) @@ -49,4 +49,4 @@ $(WITH_TBB) - \ No newline at end of file + diff --git a/UnitTest++/Makefile b/UnitTest++/Makefile index 8c74eb6da..b2a27f42e 100644 --- a/UnitTest++/Makefile +++ b/UnitTest++/Makefile @@ -1,5 +1,5 @@ CXX = g++ -CXXFLAGS ?= -g -Wall -W -Winline -ansi +CXXFLAGS ?= -g -O0 -Wall -W -Winline -ansi LDFLAGS ?= SED = sed MV = mv diff --git a/examples/executor/C++/Application.cpp b/examples/executor/C++/Application.cpp index 225981029..cdacb5c9d 100644 --- a/examples/executor/C++/Application.cpp +++ b/examples/executor/C++/Application.cpp @@ -147,6 +147,13 @@ void Application::onMessage( const FIX41::NewOrderSingle& message, catch ( FIX::SessionNotFound& ) {} } +static double get_timestamp() { + struct timespec ts; + ::clock_gettime( CLOCK_REALTIME, &ts ); + double v = (ts.tv_sec * 1000000 + ts.tv_nsec / 1000) % 1000000000; + return v; +} + void Application::onMessage( const FIX42::NewOrderSingle& message, const FIX::SessionID& sessionID ) { @@ -189,6 +196,7 @@ void Application::onMessage( const FIX42::NewOrderSingle& message, if( message.isSet(account) ) executionReport.setField( message.get(account) ); + executionReport.addField( FIX::DoubleField::Pack( 76767, get_timestamp() ) ); try { FIX::Session::sendToTarget( executionReport, sessionID ); diff --git a/examples/executor/C++/executor.cpp b/examples/executor/C++/executor.cpp index d7a0091db..f6b731eda 100644 --- a/examples/executor/C++/executor.cpp +++ b/examples/executor/C++/executor.cpp @@ -24,6 +24,7 @@ #endif #include "quickfix/FileStore.h" +#include "quickfix/NullStore.h" #include "quickfix/ThreadedSocketAcceptor.h" #include "quickfix/Log.h" #include "quickfix/SessionSettings.h" @@ -56,9 +57,10 @@ int main( int argc, char** argv ) FIX::SessionSettings settings( file ); Application application; - FIX::FileStoreFactory storeFactory( settings ); + // FIX::FileStoreFactory storeFactory( settings ); + FIX::NullStoreFactory storeFactory; FIX::ScreenLogFactory logFactory( settings ); - FIX::ThreadedSocketAcceptor acceptor( application, storeFactory, settings, logFactory ); + FIX::ThreadedSocketAcceptor acceptor( application, storeFactory, settings ); // , logFactory ); acceptor.start(); wait(); diff --git a/examples/tradeclient/Application.cpp b/examples/tradeclient/Application.cpp index e4fc92fbe..648949cbd 100644 --- a/examples/tradeclient/Application.cpp +++ b/examples/tradeclient/Application.cpp @@ -26,6 +26,7 @@ #endif #include +#include #include "Application.h" #include "quickfix/Mutex.h" @@ -76,15 +77,16 @@ int gettimeofday(struct timeval *tv/*in*/, struct timezone *tz/*in*/) } #endif -#define NUM_SAMPLES 1000000 +#define NUM_SAMPLES 100000 timeval last_out, last_in; -static unsigned long latency; -static unsigned long long min_latency = 100000000000UL; -static unsigned long long max_latency; +static unsigned long rt_latency, ow_latency; +static unsigned long long min_rt_latency = 100000000000UL, min_ow_latency = 100000000000UL; +static unsigned long long max_rt_latency, max_ow_latency; static const unsigned long bucket_step = 2; -static const int max_bucket = 200; -static unsigned long latency_buckets[max_bucket + 1]; +static const int max_bucket = 100; +static unsigned long rt_latency_buckets[max_bucket + 1]; +static unsigned long ow_latency_buckets[max_bucket + 1]; FIX::AtomicCount rq_sent(0); FIX::AtomicCount rp_matched(0); @@ -97,31 +99,71 @@ FIX::Side last_Side(FIX::Side_BUY); std::auto_ptr last_order; std::queue q_out; -FIX::Spinlock q_lock; +boost::mutex q_lock; +boost::condition_variable q_cond; -void q_on_send() { +long q_on_send() { gettimeofday(&last_out, NULL); - FIX::SpinLocker l(q_lock); + boost::unique_lock l(q_lock); q_out.push(last_out); - ++rq_sent; + return ++rq_sent; } -void q_on_receive() { - gettimeofday(&last_in, NULL); - FIX::SpinLocker l(q_lock); - if (!q_out.empty()) { +void q_on_receive( const FIX::Message& message ) +{ + ::gettimeofday(&last_in, NULL); + + boost::unique_lock l(q_lock); + if (!q_out.empty()) + { timeval first_out = q_out.front(); unsigned long l = (last_in.tv_sec - first_out.tv_sec) * 1000000 + last_in.tv_usec - first_out.tv_usec; - if ( l < min_latency ) min_latency = l; - if ( l > max_latency ) max_latency = l; + if ( l < min_rt_latency ) min_rt_latency = l; + if ( l > max_rt_latency ) max_rt_latency = l; int b = l / bucket_step; - latency_buckets[b > max_bucket ? max_bucket : b ]++; - latency += l; + rt_latency_buckets[b > max_bucket ? max_bucket : b ]++; + rt_latency += l; + + const FIX::FieldBase* p = message.getFieldPtrIfSet( 76767 ); + if ( p ) + { + double d; + FIX::DoubleConvertor::parse(p->getString(), d); + l = (last_in.tv_sec * 1000000 + last_in.tv_usec) % 1000000000; + l = l >= d ? (l - d) : (l + (1000000000 - d)); + if ( l < min_ow_latency ) min_ow_latency = l; + if ( l > max_ow_latency ) max_ow_latency = l; + b = l / bucket_step; + ow_latency_buckets[b > max_bucket ? max_bucket : b ]++; + ow_latency += l; + } + q_out.pop(); ++rp_matched; + q_cond.notify_one(); } }; +void show_buckets(unsigned long* buckets, std::size_t step, std::size_t sz) +{ + for (int i = 0; i <= sz; i++) + { + std::cout << " [" << i * step << " - "; + if (i < sz) + std::cout << (i + 1) * step; + else + std::cout << "inf"; + std::cout << "] = " << buckets[i] << std::endl; + } +} + +void wait_receive(long rq) +{ + boost::unique_lock l(q_lock); + while (rq > rp_matched) + q_cond.wait(l); +} + void Application::onLogon( const FIX::SessionID& sessionID ) { std::cout << std::endl << "Logon - " << sessionID << std::endl; @@ -136,7 +178,7 @@ void Application::fromApp( const FIX::Message& message, const FIX::SessionID& se throw( FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::UnsupportedMessageType ) { crack( message, sessionID ); - q_on_receive(); + q_on_receive( message ); } void Application::toApp( FIX::Message& message, const FIX::SessionID& sessionID ) @@ -179,64 +221,55 @@ void Application::onMessage void Application::run() { FIX::TimeInForce::Pack tIF(FIX::TimeInForce_IMMEDIATE_OR_CANCEL); - FIX::SenderCompID::Pack sender("CLIENT1"); - FIX::TargetCompID::Pack target("EXECUTOR"); + FIX::SessionID sid( "FIX.4.2", "CLIENT1", "EXECUTOR"); + FIX::Session* ps = FIX::Session::lookupSession(sid); while ( true ) { try { char action = queryAction(); - if ( action == '0' ) { - FIX::AtomicCount::value_type rp_prev = rp_matched; - timeval st, en; - latency = 0; - max_latency = 0; - min_latency = 10000000000UL; - memset(latency_buckets, 0, sizeof(latency_buckets)); - gettimeofday(&st, NULL); - for (int i = 0; i < NUM_SAMPLES; i++) { - q_on_send(); - FIX42::NewOrderSingle order(last_ClOrdID, - FIX::HandlInst( '1' ), - last_Symbol, - last_Side, - FIX::TransactTime(), - FIX::OrdType(FIX::OrdType_LIMIT)); - order.set( last_Qty ); - order.set( tIF ); - order.set( last_Price ); - - order.getHeader().setField( sender ); - order.getHeader().setField( target ); - - FIX::Session::sendToTarget( order ); - for (volatile int i = 0; i < 250; i++) - { -#ifndef _MSC_VER - sched_yield(); -#else - SwitchToThread(); -#endif - } - } - std::cout << "Done sending" << std::endl; + if ( action == '0' ) + { + FIX::AtomicCount::value_type rp_prev = rp_matched; + timeval st, en; - while ( rp_matched < (NUM_SAMPLES + rp_prev) ) - { -#ifndef _MSC_VER - sleep(1); -#else - SleepEx(1000, false); -#endif - } - gettimeofday(&en, NULL); - std::cout << "Duration : " << ((en.tv_sec - st.tv_sec) * 1000000 + en.tv_usec - st.tv_usec) << " usec " << std::endl; - std::cout << "Avg Latency : " << latency / NUM_SAMPLES << " usec " << std::endl; - std::cout << "Max Latency : " << max_latency << " usec " << std::endl; - std::cout << "Min Latency : " << min_latency << " usec " << std::endl; - for (int i = 0; i <= max_bucket; i++) - std::cout << " [" << i * bucket_step << " - " << (i + 1) * bucket_step << "] = " << latency_buckets[i] << std::endl; + rt_latency = ow_latency = 0; + max_rt_latency = max_ow_latency = 0; + min_rt_latency = min_ow_latency = 10000000000UL; + ::memset(rt_latency_buckets, 0, sizeof(rt_latency_buckets)); + ::memset(ow_latency_buckets, 0, sizeof(ow_latency_buckets)); + + gettimeofday(&st, NULL); + for (int i = 0; i < NUM_SAMPLES; i++) + { + q_on_send(); + FIX42::NewOrderSingle order(last_ClOrdID, + FIX::HandlInst( '1' ), + last_Symbol, + last_Side, + FIX::TransactTime(), + FIX::OrdType(FIX::OrdType_LIMIT)); + order.set( last_Qty ); + order.set( tIF ); + order.set( last_Price ); + + ps->send( order ); + wait_receive(rp_prev + rq_sent); + } + + ::gettimeofday(&en, NULL); + std::cout << "Duration : " << (double)((en.tv_sec - st.tv_sec) * 1000000 + en.tv_usec - st.tv_usec)/1000000.0 << " sec " << std::endl; + + std::cout << "Avg RTT : " << rt_latency / NUM_SAMPLES << " usec " << std::endl; + std::cout << "Max RTT : " << max_rt_latency << " usec " << std::endl; + std::cout << "Min RTT : " << min_rt_latency << " usec " << std::endl; + show_buckets( rt_latency_buckets, bucket_step, max_bucket ); + + std::cout << "Avg ExecutionReport latency : " << ow_latency / NUM_SAMPLES << " usec " << std::endl; + std::cout << "Max ExecutionReport latency : " << max_ow_latency << " usec " << std::endl; + std::cout << "Min ExecutionReport latency : " << min_ow_latency << " usec " << std::endl; + show_buckets( ow_latency_buckets, bucket_step, max_bucket ); } else if ( action == '1' ) queryEnterOrder(); diff --git a/examples/tradeclient/tradeclient.cpp b/examples/tradeclient/tradeclient.cpp index c3eef9aaf..a43dda1c1 100644 --- a/examples/tradeclient/tradeclient.cpp +++ b/examples/tradeclient/tradeclient.cpp @@ -24,6 +24,7 @@ #endif #include "quickfix/FileStore.h" +#include "quickfix/NullStore.h" #include "quickfix/SocketInitiator.h" #include "quickfix/SessionSettings.h" #include "quickfix/Log.h" @@ -49,9 +50,10 @@ int main( int argc, char** argv ) FIX::SessionSettings settings( file ); Application application; - FIX::FileStoreFactory storeFactory( settings ); + // FIX::FileStoreFactory storeFactory( settings ); + FIX::NullStoreFactory storeFactory; FIX::ScreenLogFactory logFactory( settings ); - FIX::SocketInitiator initiator( application, storeFactory, settings, logFactory ); + FIX::SocketInitiator initiator( application, storeFactory, settings ); // logFactory ); initiator.start(); application.run(); diff --git a/src/C++/test/MessagesTestCase.cpp b/src/C++/test/MessagesTestCase.cpp index 655b0ba8c..972e56b17 100644 --- a/src/C++/test/MessagesTestCase.cpp +++ b/src/C++/test/MessagesTestCase.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** @@ -112,6 +112,19 @@ TEST(isEmpty) CHECK( message.isEmpty() ); } +TEST(getFieldIfPresent) +{ + FIX::Message message; + FIX::MsgType initial("A"); + CHECK( !message.getFieldIfSet( initial ) ); + CHECK( initial == FIX::MsgType("A") ); + + message.setField( initial ); + FIX::MsgType stored; + CHECK( message.getFieldIfSet( stored ) ); + CHECK( stored == initial ); +} + TEST(setString) { static const char* strGood = @@ -367,27 +380,27 @@ TEST(getXML) << "
" << std::endl << " " << std::endl << " " << std::endl - << " " << std::endl - << " " << std::endl - << "
" << std::endl + << " " << std::endl + << " " << std::endl + << "
" << std::endl << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << " " << std::endl - << ""; + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << " " << std::endl + << ""; CHECK_EQUAL( stream.str(), message.toXML() ); } @@ -488,7 +501,7 @@ TEST(addRemoveGroup) CHECK( object.hasGroup(1, group) ); CHECK( object.hasGroup(2, group) ); CHECK( object.hasGroup(3, group) ); - CHECK_EQUAL( 3, object.groupCount(FIX::FIELD::NoOrders) ); + CHECK_EQUAL( 3lu, object.groupCount(FIX::FIELD::NoOrders) ); object.getField( noOrders ); CHECK_EQUAL( 3, noOrders ); @@ -496,7 +509,7 @@ TEST(addRemoveGroup) CHECK( object.hasGroup(1, group) ); CHECK( object.hasGroup(2, group) ); CHECK( !object.hasGroup(3, group) ); - CHECK_EQUAL( 2, object.groupCount(FIX::FIELD::NoOrders) ); + CHECK_EQUAL( 2lu, object.groupCount(FIX::FIELD::NoOrders) ); object.getField( noOrders ); CHECK_EQUAL( 2, noOrders ); @@ -512,7 +525,7 @@ TEST(addRemoveGroup) CHECK( !object.hasGroup(1, group) ); CHECK( !object.hasGroup(2, group) ); CHECK( !object.hasGroup(3, group) ); - CHECK_EQUAL( 0, object.groupCount(FIX::FIELD::NoOrders) ); + CHECK_EQUAL( 0lu, object.groupCount(FIX::FIELD::NoOrders) ); CHECK( !object.isSetField( noOrders ) ); } @@ -553,7 +566,7 @@ TEST(replaceGroup) CHECK( object.hasGroup(1, group) ); CHECK( object.hasGroup(2, group) ); CHECK( object.hasGroup(3, group) ); - CHECK_EQUAL( 3, object.groupCount(FIX::FIELD::NoOrders) ); + CHECK_EQUAL( 3lu, object.groupCount(FIX::FIELD::NoOrders) ); object.getField( noOrders ); CHECK_EQUAL( 3, noOrders ); @@ -597,7 +610,7 @@ TEST(testRequestGetString) object.set( TestReqID( "23" ) ); CHECK_EQUAL( "8=FIX.4.2\0019=12\00135=1\001112=23\00110=007\001", - object.toString() ); + object.toString() ); } TEST(testRequestSetString) @@ -907,6 +920,37 @@ TEST(orderCancelRequestSetString) CHECK_EQUAL( '1', object.get( side ) ); } +TEST(XMLNonFIXSetString) +{ + // XMLnonFIX message + FIX::Message object; + + DataDictionary dataDictionary( "../spec/FIX42.xml" ); + + std::string encodedFIXmessage = "8=FIX.4.2\0019=390\001" + "35=8\00134=136\001369=131\00152=20150220-14:40:24.991\00149=CME\00150=G\001" + "56=GGGGGGN\00157=GGG\001143=IL\0011=TEST\0016=0\00111=00000000000000000003\001" + "14=1\00117=64485:M:412850TN0031303\00120=0\00131=208700\00132=1\00137=64227619161\001" + "38=1\00139=2\00140=2\00141=0\00144=208700\00148=147403\00154=1\00155=ES\00159=0\001" + "60=20150220-14:40:24.970\00175=20150220\001107=ESH5\001150=2\001151=0\001167=FUT\001" + "337=TRADE\001375=CME000A\001432=20150220\001442=1\001527=642276191612015022031303\001" + "1028=N\0011057=N\00110=000\001"; + + std::string xmlNonFIXMessage = std::string("8=FIX.4.2\0019=501\00135=n\00134=158\001369=130\00152=20150220-14:40:24.991\001" + "49=CME\00150=G\00156=QQQQQQN\00157=QQQ\001212=413\001213=") + encodedFIXmessage + std::string("\00110=129\001"); + + object.setString( xmlNonFIXMessage, true, &dataDictionary ); + + XmlDataLen dataLen; + XmlData xmlData; + + object.getHeader().getField( dataLen ); + object.getHeader().getField( xmlData ); + + CHECK_EQUAL( 413, dataLen.getValue() ); + CHECK_EQUAL( encodedFIXmessage, xmlData.getValue() ); +} + TEST(orderCancelRejectGetString) { OrderCancelReject object; diff --git a/src/python/QuickfixPython.cpp b/src/python/QuickfixPython.cpp index 53a880469..d0fc86b73 100644 --- a/src/python/QuickfixPython.cpp +++ b/src/python/QuickfixPython.cpp @@ -3782,1451 +3782,1454 @@ namespace Swig { #define SWIGTYPE_p_FIX__DAYOFMONTH swig_types[258] #define SWIGTYPE_p_FIX__DKReason swig_types[259] #define SWIGTYPE_p_FIX__DataDictionary swig_types[260] -#define SWIGTYPE_p_FIX__DataDictionaryNotFound swig_types[261] -#define SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type swig_types[262] -#define SWIGTYPE_p_FIX__DateOfBirth swig_types[263] -#define SWIGTYPE_p_FIX__DatedDate swig_types[264] -#define SWIGTYPE_p_FIX__DayAvgPx swig_types[265] -#define SWIGTYPE_p_FIX__DayBookingInst swig_types[266] -#define SWIGTYPE_p_FIX__DayCumQty swig_types[267] -#define SWIGTYPE_p_FIX__DayOrderQty swig_types[268] -#define SWIGTYPE_p_FIX__DealingCapacity swig_types[269] -#define SWIGTYPE_p_FIX__DefBidSize swig_types[270] -#define SWIGTYPE_p_FIX__DefOfferSize swig_types[271] -#define SWIGTYPE_p_FIX__DefaultApplExtID swig_types[272] -#define SWIGTYPE_p_FIX__DefaultApplVerID swig_types[273] -#define SWIGTYPE_p_FIX__DefaultCstmApplVerID swig_types[274] -#define SWIGTYPE_p_FIX__DefaultVerIndicator swig_types[275] -#define SWIGTYPE_p_FIX__DeleteReason swig_types[276] -#define SWIGTYPE_p_FIX__DeliverToCompID swig_types[277] -#define SWIGTYPE_p_FIX__DeliverToLocationID swig_types[278] -#define SWIGTYPE_p_FIX__DeliverToSubID swig_types[279] -#define SWIGTYPE_p_FIX__DeliveryDate swig_types[280] -#define SWIGTYPE_p_FIX__DeliveryForm swig_types[281] -#define SWIGTYPE_p_FIX__DeliveryType swig_types[282] -#define SWIGTYPE_p_FIX__DerivFlexProductEligibilityIndicator swig_types[283] -#define SWIGTYPE_p_FIX__DerivativeCFICode swig_types[284] -#define SWIGTYPE_p_FIX__DerivativeCapPrice swig_types[285] -#define SWIGTYPE_p_FIX__DerivativeContractMultiplier swig_types[286] -#define SWIGTYPE_p_FIX__DerivativeContractMultiplierUnit swig_types[287] -#define SWIGTYPE_p_FIX__DerivativeContractSettlMonth swig_types[288] -#define SWIGTYPE_p_FIX__DerivativeCountryOfIssue swig_types[289] -#define SWIGTYPE_p_FIX__DerivativeEncodedIssuer swig_types[290] -#define SWIGTYPE_p_FIX__DerivativeEncodedIssuerLen swig_types[291] -#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDesc swig_types[292] -#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDescLen swig_types[293] -#define SWIGTYPE_p_FIX__DerivativeEventDate swig_types[294] -#define SWIGTYPE_p_FIX__DerivativeEventPx swig_types[295] -#define SWIGTYPE_p_FIX__DerivativeEventText swig_types[296] -#define SWIGTYPE_p_FIX__DerivativeEventTime swig_types[297] -#define SWIGTYPE_p_FIX__DerivativeEventType swig_types[298] -#define SWIGTYPE_p_FIX__DerivativeExerciseStyle swig_types[299] -#define SWIGTYPE_p_FIX__DerivativeFloorPrice swig_types[300] -#define SWIGTYPE_p_FIX__DerivativeFlowScheduleType swig_types[301] -#define SWIGTYPE_p_FIX__DerivativeFuturesValuationMethod swig_types[302] -#define SWIGTYPE_p_FIX__DerivativeInstrAttribType swig_types[303] -#define SWIGTYPE_p_FIX__DerivativeInstrAttribValue swig_types[304] -#define SWIGTYPE_p_FIX__DerivativeInstrRegistry swig_types[305] -#define SWIGTYPE_p_FIX__DerivativeInstrmtAssignmentMethod swig_types[306] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyID swig_types[307] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyIDSource swig_types[308] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyRole swig_types[309] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubID swig_types[310] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubIDType swig_types[311] -#define SWIGTYPE_p_FIX__DerivativeIssueDate swig_types[312] -#define SWIGTYPE_p_FIX__DerivativeIssuer swig_types[313] -#define SWIGTYPE_p_FIX__DerivativeListMethod swig_types[314] -#define SWIGTYPE_p_FIX__DerivativeLocaleOfIssue swig_types[315] -#define SWIGTYPE_p_FIX__DerivativeMaturityDate swig_types[316] -#define SWIGTYPE_p_FIX__DerivativeMaturityMonthYear swig_types[317] -#define SWIGTYPE_p_FIX__DerivativeMaturityTime swig_types[318] -#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrement swig_types[319] -#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrementAmount swig_types[320] -#define SWIGTYPE_p_FIX__DerivativeNTPositionLimit swig_types[321] -#define SWIGTYPE_p_FIX__DerivativeOptAttribute swig_types[322] -#define SWIGTYPE_p_FIX__DerivativeOptPayAmount swig_types[323] -#define SWIGTYPE_p_FIX__DerivativePositionLimit swig_types[324] -#define SWIGTYPE_p_FIX__DerivativePriceQuoteMethod swig_types[325] -#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasure swig_types[326] -#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasureQty swig_types[327] -#define SWIGTYPE_p_FIX__DerivativeProduct swig_types[328] -#define SWIGTYPE_p_FIX__DerivativeProductComplex swig_types[329] -#define SWIGTYPE_p_FIX__DerivativePutOrCall swig_types[330] -#define SWIGTYPE_p_FIX__DerivativeSecurityAltID swig_types[331] -#define SWIGTYPE_p_FIX__DerivativeSecurityAltIDSource swig_types[332] -#define SWIGTYPE_p_FIX__DerivativeSecurityDesc swig_types[333] -#define SWIGTYPE_p_FIX__DerivativeSecurityExchange swig_types[334] -#define SWIGTYPE_p_FIX__DerivativeSecurityGroup swig_types[335] -#define SWIGTYPE_p_FIX__DerivativeSecurityID swig_types[336] -#define SWIGTYPE_p_FIX__DerivativeSecurityIDSource swig_types[337] -#define SWIGTYPE_p_FIX__DerivativeSecurityStatus swig_types[338] -#define SWIGTYPE_p_FIX__DerivativeSecuritySubType swig_types[339] -#define SWIGTYPE_p_FIX__DerivativeSecurityType swig_types[340] -#define SWIGTYPE_p_FIX__DerivativeSecurityXML swig_types[341] -#define SWIGTYPE_p_FIX__DerivativeSecurityXMLLen swig_types[342] -#define SWIGTYPE_p_FIX__DerivativeSecurityXMLSchema swig_types[343] -#define SWIGTYPE_p_FIX__DerivativeSettlMethod swig_types[344] -#define SWIGTYPE_p_FIX__DerivativeSettleOnOpenFlag swig_types[345] -#define SWIGTYPE_p_FIX__DerivativeStateOrProvinceOfIssue swig_types[346] -#define SWIGTYPE_p_FIX__DerivativeStrikeCurrency swig_types[347] -#define SWIGTYPE_p_FIX__DerivativeStrikeMultiplier swig_types[348] -#define SWIGTYPE_p_FIX__DerivativeStrikePrice swig_types[349] -#define SWIGTYPE_p_FIX__DerivativeStrikeValue swig_types[350] -#define SWIGTYPE_p_FIX__DerivativeSymbol swig_types[351] -#define SWIGTYPE_p_FIX__DerivativeSymbolSfx swig_types[352] -#define SWIGTYPE_p_FIX__DerivativeTimeUnit swig_types[353] -#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasure swig_types[354] -#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasureQty swig_types[355] -#define SWIGTYPE_p_FIX__DerivativeValuationMethod swig_types[356] -#define SWIGTYPE_p_FIX__Designation swig_types[357] -#define SWIGTYPE_p_FIX__DeskID swig_types[358] -#define SWIGTYPE_p_FIX__DeskOrderHandlingInst swig_types[359] -#define SWIGTYPE_p_FIX__DeskType swig_types[360] -#define SWIGTYPE_p_FIX__DeskTypeSource swig_types[361] -#define SWIGTYPE_p_FIX__DetachmentPoint swig_types[362] -#define SWIGTYPE_p_FIX__Dictionary swig_types[363] -#define SWIGTYPE_p_FIX__Dictionary__Data__const_iterator swig_types[364] -#define SWIGTYPE_p_FIX__DiscretionInst swig_types[365] -#define SWIGTYPE_p_FIX__DiscretionLimitType swig_types[366] -#define SWIGTYPE_p_FIX__DiscretionMoveType swig_types[367] -#define SWIGTYPE_p_FIX__DiscretionOffset swig_types[368] -#define SWIGTYPE_p_FIX__DiscretionOffsetType swig_types[369] -#define SWIGTYPE_p_FIX__DiscretionOffsetValue swig_types[370] -#define SWIGTYPE_p_FIX__DiscretionPrice swig_types[371] -#define SWIGTYPE_p_FIX__DiscretionRoundDirection swig_types[372] -#define SWIGTYPE_p_FIX__DiscretionScope swig_types[373] -#define SWIGTYPE_p_FIX__DisplayHighQty swig_types[374] -#define SWIGTYPE_p_FIX__DisplayLowQty swig_types[375] -#define SWIGTYPE_p_FIX__DisplayMethod swig_types[376] -#define SWIGTYPE_p_FIX__DisplayMinIncr swig_types[377] -#define SWIGTYPE_p_FIX__DisplayQty swig_types[378] -#define SWIGTYPE_p_FIX__DisplayWhen swig_types[379] -#define SWIGTYPE_p_FIX__DistribPaymentMethod swig_types[380] -#define SWIGTYPE_p_FIX__DistribPercentage swig_types[381] -#define SWIGTYPE_p_FIX__DividendYield swig_types[382] -#define SWIGTYPE_p_FIX__DlvyInst swig_types[383] -#define SWIGTYPE_p_FIX__DlvyInstType swig_types[384] -#define SWIGTYPE_p_FIX__DoNotSend swig_types[385] -#define SWIGTYPE_p_FIX__DoubleField swig_types[386] -#define SWIGTYPE_p_FIX__DueToRelated swig_types[387] -#define SWIGTYPE_p_FIX__DuplicateFieldNumber swig_types[388] -#define SWIGTYPE_p_FIX__EFPTrackingError swig_types[389] -#define SWIGTYPE_p_FIX__EXCHANGE swig_types[390] -#define SWIGTYPE_p_FIX__EffectiveTime swig_types[391] -#define SWIGTYPE_p_FIX__EmailThreadID swig_types[392] -#define SWIGTYPE_p_FIX__EmailType swig_types[393] -#define SWIGTYPE_p_FIX__EncodedAllocText swig_types[394] -#define SWIGTYPE_p_FIX__EncodedAllocTextLen swig_types[395] -#define SWIGTYPE_p_FIX__EncodedHeadline swig_types[396] -#define SWIGTYPE_p_FIX__EncodedHeadlineLen swig_types[397] -#define SWIGTYPE_p_FIX__EncodedIssuer swig_types[398] -#define SWIGTYPE_p_FIX__EncodedIssuerLen swig_types[399] -#define SWIGTYPE_p_FIX__EncodedLegIssuer swig_types[400] -#define SWIGTYPE_p_FIX__EncodedLegIssuerLen swig_types[401] -#define SWIGTYPE_p_FIX__EncodedLegSecurityDesc swig_types[402] -#define SWIGTYPE_p_FIX__EncodedLegSecurityDescLen swig_types[403] -#define SWIGTYPE_p_FIX__EncodedListExecInst swig_types[404] -#define SWIGTYPE_p_FIX__EncodedListExecInstLen swig_types[405] -#define SWIGTYPE_p_FIX__EncodedListStatusText swig_types[406] -#define SWIGTYPE_p_FIX__EncodedListStatusTextLen swig_types[407] -#define SWIGTYPE_p_FIX__EncodedMktSegmDesc swig_types[408] -#define SWIGTYPE_p_FIX__EncodedMktSegmDescLen swig_types[409] -#define SWIGTYPE_p_FIX__EncodedSecurityDesc swig_types[410] -#define SWIGTYPE_p_FIX__EncodedSecurityDescLen swig_types[411] -#define SWIGTYPE_p_FIX__EncodedSecurityListDesc swig_types[412] -#define SWIGTYPE_p_FIX__EncodedSecurityListDescLen swig_types[413] -#define SWIGTYPE_p_FIX__EncodedSubject swig_types[414] -#define SWIGTYPE_p_FIX__EncodedSubjectLen swig_types[415] -#define SWIGTYPE_p_FIX__EncodedText swig_types[416] -#define SWIGTYPE_p_FIX__EncodedTextLen swig_types[417] -#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuer swig_types[418] -#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuerLen swig_types[419] -#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDesc swig_types[420] -#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDescLen swig_types[421] -#define SWIGTYPE_p_FIX__EncryptMethod swig_types[422] -#define SWIGTYPE_p_FIX__EncryptedNewPassword swig_types[423] -#define SWIGTYPE_p_FIX__EncryptedNewPasswordLen swig_types[424] -#define SWIGTYPE_p_FIX__EncryptedPassword swig_types[425] -#define SWIGTYPE_p_FIX__EncryptedPasswordLen swig_types[426] -#define SWIGTYPE_p_FIX__EncryptedPasswordMethod swig_types[427] -#define SWIGTYPE_p_FIX__EndAccruedInterestAmt swig_types[428] -#define SWIGTYPE_p_FIX__EndCash swig_types[429] -#define SWIGTYPE_p_FIX__EndDate swig_types[430] -#define SWIGTYPE_p_FIX__EndMaturityMonthYear swig_types[431] -#define SWIGTYPE_p_FIX__EndSeqNo swig_types[432] -#define SWIGTYPE_p_FIX__EndStrikePxRange swig_types[433] -#define SWIGTYPE_p_FIX__EndTickPriceRange swig_types[434] -#define SWIGTYPE_p_FIX__EventDate swig_types[435] -#define SWIGTYPE_p_FIX__EventPx swig_types[436] -#define SWIGTYPE_p_FIX__EventText swig_types[437] -#define SWIGTYPE_p_FIX__EventTime swig_types[438] -#define SWIGTYPE_p_FIX__EventType swig_types[439] -#define SWIGTYPE_p_FIX__ExDate swig_types[440] -#define SWIGTYPE_p_FIX__ExDestination swig_types[441] -#define SWIGTYPE_p_FIX__ExDestinationIDSource swig_types[442] -#define SWIGTYPE_p_FIX__Exception swig_types[443] -#define SWIGTYPE_p_FIX__ExchangeForPhysical swig_types[444] -#define SWIGTYPE_p_FIX__ExchangeRule swig_types[445] -#define SWIGTYPE_p_FIX__ExchangeSpecialInstructions swig_types[446] -#define SWIGTYPE_p_FIX__ExecAckStatus swig_types[447] -#define SWIGTYPE_p_FIX__ExecBroker swig_types[448] -#define SWIGTYPE_p_FIX__ExecID swig_types[449] -#define SWIGTYPE_p_FIX__ExecInst swig_types[450] -#define SWIGTYPE_p_FIX__ExecInstValue swig_types[451] -#define SWIGTYPE_p_FIX__ExecPriceAdjustment swig_types[452] -#define SWIGTYPE_p_FIX__ExecPriceType swig_types[453] -#define SWIGTYPE_p_FIX__ExecRefID swig_types[454] -#define SWIGTYPE_p_FIX__ExecRestatementReason swig_types[455] -#define SWIGTYPE_p_FIX__ExecTransType swig_types[456] -#define SWIGTYPE_p_FIX__ExecType swig_types[457] -#define SWIGTYPE_p_FIX__ExecValuationPoint swig_types[458] -#define SWIGTYPE_p_FIX__ExerciseMethod swig_types[459] -#define SWIGTYPE_p_FIX__ExerciseStyle swig_types[460] -#define SWIGTYPE_p_FIX__ExpQty swig_types[461] -#define SWIGTYPE_p_FIX__ExpType swig_types[462] -#define SWIGTYPE_p_FIX__ExpirationCycle swig_types[463] -#define SWIGTYPE_p_FIX__ExpirationQtyType swig_types[464] -#define SWIGTYPE_p_FIX__ExpireDate swig_types[465] -#define SWIGTYPE_p_FIX__ExpireTime swig_types[466] -#define SWIGTYPE_p_FIX__FLOAT swig_types[467] -#define SWIGTYPE_p_FIX__Factor swig_types[468] -#define SWIGTYPE_p_FIX__FairValue swig_types[469] -#define SWIGTYPE_p_FIX__FeeMultiplier swig_types[470] -#define SWIGTYPE_p_FIX__FieldBase swig_types[471] -#define SWIGTYPE_p_FIX__FieldConvertError swig_types[472] -#define SWIGTYPE_p_FIX__FieldMap swig_types[473] -#define SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type swig_types[474] -#define SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator swig_types[475] -#define SWIGTYPE_p_FIX__FieldMap__Groups__const_iterator swig_types[476] -#define SWIGTYPE_p_FIX__FieldNotFound swig_types[477] -#define SWIGTYPE_p_FIX__FieldTag swig_types[478] -#define SWIGTYPE_p_FIX__FileLog swig_types[479] -#define SWIGTYPE_p_FIX__FileLogFactory swig_types[480] -#define SWIGTYPE_p_FIX__FileStore swig_types[481] -#define SWIGTYPE_p_FIX__FileStoreFactory swig_types[482] -#define SWIGTYPE_p_FIX__FillExecID swig_types[483] -#define SWIGTYPE_p_FIX__FillLiquidityInd swig_types[484] -#define SWIGTYPE_p_FIX__FillPx swig_types[485] -#define SWIGTYPE_p_FIX__FillQty swig_types[486] -#define SWIGTYPE_p_FIX__FinancialStatus swig_types[487] -#define SWIGTYPE_p_FIX__FirmTradeID swig_types[488] -#define SWIGTYPE_p_FIX__FirstPx swig_types[489] -#define SWIGTYPE_p_FIX__FlexProductEligibilityIndicator swig_types[490] -#define SWIGTYPE_p_FIX__FlexibleIndicator swig_types[491] -#define SWIGTYPE_p_FIX__FloorPrice swig_types[492] -#define SWIGTYPE_p_FIX__FlowScheduleType swig_types[493] -#define SWIGTYPE_p_FIX__ForexReq swig_types[494] -#define SWIGTYPE_p_FIX__FundRenewWaiv swig_types[495] -#define SWIGTYPE_p_FIX__FutSettDate swig_types[496] -#define SWIGTYPE_p_FIX__FutSettDate2 swig_types[497] -#define SWIGTYPE_p_FIX__FuturesValuationMethod swig_types[498] -#define SWIGTYPE_p_FIX__GTBookingInst swig_types[499] -#define SWIGTYPE_p_FIX__GapFillFlag swig_types[500] -#define SWIGTYPE_p_FIX__GrossTradeAmt swig_types[501] -#define SWIGTYPE_p_FIX__Group swig_types[502] -#define SWIGTYPE_p_FIX__HaltReasonChar swig_types[503] -#define SWIGTYPE_p_FIX__HaltReasonInt swig_types[504] -#define SWIGTYPE_p_FIX__HandlInst swig_types[505] -#define SWIGTYPE_p_FIX__Headline swig_types[506] -#define SWIGTYPE_p_FIX__HeartBtInt swig_types[507] -#define SWIGTYPE_p_FIX__HighLimitPrice swig_types[508] -#define SWIGTYPE_p_FIX__HighPx swig_types[509] -#define SWIGTYPE_p_FIX__HopCompID swig_types[510] -#define SWIGTYPE_p_FIX__HopRefID swig_types[511] -#define SWIGTYPE_p_FIX__HopSendingTime swig_types[512] -#define SWIGTYPE_p_FIX__HostCrossID swig_types[513] -#define SWIGTYPE_p_FIX__IDSource swig_types[514] -#define SWIGTYPE_p_FIX__INT swig_types[515] -#define SWIGTYPE_p_FIX__IOException swig_types[516] -#define SWIGTYPE_p_FIX__IOIID swig_types[517] -#define SWIGTYPE_p_FIX__IOINaturalFlag swig_types[518] -#define SWIGTYPE_p_FIX__IOIOthSvc swig_types[519] -#define SWIGTYPE_p_FIX__IOIQltyInd swig_types[520] -#define SWIGTYPE_p_FIX__IOIQty swig_types[521] -#define SWIGTYPE_p_FIX__IOIQualifier swig_types[522] -#define SWIGTYPE_p_FIX__IOIRefID swig_types[523] -#define SWIGTYPE_p_FIX__IOIShares swig_types[524] -#define SWIGTYPE_p_FIX__IOITransType swig_types[525] -#define SWIGTYPE_p_FIX__IOIid swig_types[526] -#define SWIGTYPE_p_FIX__ImpliedMarketIndicator swig_types[527] -#define SWIGTYPE_p_FIX__InViewOfCommon swig_types[528] -#define SWIGTYPE_p_FIX__IncTaxInd swig_types[529] -#define SWIGTYPE_p_FIX__IncorrectDataFormat swig_types[530] -#define SWIGTYPE_p_FIX__IncorrectMessageStructure swig_types[531] -#define SWIGTYPE_p_FIX__IncorrectTagValue swig_types[532] -#define SWIGTYPE_p_FIX__IndividualAllocID swig_types[533] -#define SWIGTYPE_p_FIX__IndividualAllocRejCode swig_types[534] -#define SWIGTYPE_p_FIX__IndividualAllocType swig_types[535] -#define SWIGTYPE_p_FIX__Initiator swig_types[536] -#define SWIGTYPE_p_FIX__InputSource swig_types[537] -#define SWIGTYPE_p_FIX__InstrAttribType swig_types[538] -#define SWIGTYPE_p_FIX__InstrAttribValue swig_types[539] -#define SWIGTYPE_p_FIX__InstrRegistry swig_types[540] -#define SWIGTYPE_p_FIX__InstrmtAssignmentMethod swig_types[541] -#define SWIGTYPE_p_FIX__InstrumentPartyID swig_types[542] -#define SWIGTYPE_p_FIX__InstrumentPartyIDSource swig_types[543] -#define SWIGTYPE_p_FIX__InstrumentPartyRole swig_types[544] -#define SWIGTYPE_p_FIX__InstrumentPartySubID swig_types[545] -#define SWIGTYPE_p_FIX__InstrumentPartySubIDType swig_types[546] -#define SWIGTYPE_p_FIX__IntField swig_types[547] -#define SWIGTYPE_p_FIX__InterestAccrualDate swig_types[548] -#define SWIGTYPE_p_FIX__InterestAtMaturity swig_types[549] -#define SWIGTYPE_p_FIX__InvalidMessage swig_types[550] -#define SWIGTYPE_p_FIX__InvalidMessageType swig_types[551] -#define SWIGTYPE_p_FIX__InvalidTagNumber swig_types[552] -#define SWIGTYPE_p_FIX__InvestorCountryOfResidence swig_types[553] -#define SWIGTYPE_p_FIX__IssueDate swig_types[554] -#define SWIGTYPE_p_FIX__Issuer swig_types[555] -#define SWIGTYPE_p_FIX__LANGUAGE swig_types[556] -#define SWIGTYPE_p_FIX__LENGTH swig_types[557] -#define SWIGTYPE_p_FIX__LOCALMKTDATE swig_types[558] -#define SWIGTYPE_p_FIX__LanguageCode swig_types[559] -#define SWIGTYPE_p_FIX__LastCapacity swig_types[560] -#define SWIGTYPE_p_FIX__LastForwardPoints swig_types[561] -#define SWIGTYPE_p_FIX__LastForwardPoints2 swig_types[562] -#define SWIGTYPE_p_FIX__LastFragment swig_types[563] -#define SWIGTYPE_p_FIX__LastLiquidityInd swig_types[564] -#define SWIGTYPE_p_FIX__LastMkt swig_types[565] -#define SWIGTYPE_p_FIX__LastMsgSeqNumProcessed swig_types[566] -#define SWIGTYPE_p_FIX__LastNetworkResponseID swig_types[567] -#define SWIGTYPE_p_FIX__LastParPx swig_types[568] -#define SWIGTYPE_p_FIX__LastPx swig_types[569] -#define SWIGTYPE_p_FIX__LastQty swig_types[570] -#define SWIGTYPE_p_FIX__LastRptRequested swig_types[571] -#define SWIGTYPE_p_FIX__LastShares swig_types[572] -#define SWIGTYPE_p_FIX__LastSpotRate swig_types[573] -#define SWIGTYPE_p_FIX__LastSwapPoints swig_types[574] -#define SWIGTYPE_p_FIX__LastUpdateTime swig_types[575] -#define SWIGTYPE_p_FIX__LateIndicator swig_types[576] -#define SWIGTYPE_p_FIX__LeavesQty swig_types[577] -#define SWIGTYPE_p_FIX__LegAllocAccount swig_types[578] -#define SWIGTYPE_p_FIX__LegAllocAcctIDSource swig_types[579] -#define SWIGTYPE_p_FIX__LegAllocID swig_types[580] -#define SWIGTYPE_p_FIX__LegAllocQty swig_types[581] -#define SWIGTYPE_p_FIX__LegAllocSettlCurrency swig_types[582] -#define SWIGTYPE_p_FIX__LegBenchmarkCurveCurrency swig_types[583] -#define SWIGTYPE_p_FIX__LegBenchmarkCurveName swig_types[584] -#define SWIGTYPE_p_FIX__LegBenchmarkCurvePoint swig_types[585] -#define SWIGTYPE_p_FIX__LegBenchmarkPrice swig_types[586] -#define SWIGTYPE_p_FIX__LegBenchmarkPriceType swig_types[587] -#define SWIGTYPE_p_FIX__LegBidForwardPoints swig_types[588] -#define SWIGTYPE_p_FIX__LegBidPx swig_types[589] -#define SWIGTYPE_p_FIX__LegCFICode swig_types[590] -#define SWIGTYPE_p_FIX__LegCalculatedCcyLastQty swig_types[591] -#define SWIGTYPE_p_FIX__LegContractMultiplier swig_types[592] -#define SWIGTYPE_p_FIX__LegContractMultiplierUnit swig_types[593] -#define SWIGTYPE_p_FIX__LegContractSettlMonth swig_types[594] -#define SWIGTYPE_p_FIX__LegCountryOfIssue swig_types[595] -#define SWIGTYPE_p_FIX__LegCouponPaymentDate swig_types[596] -#define SWIGTYPE_p_FIX__LegCouponRate swig_types[597] -#define SWIGTYPE_p_FIX__LegCoveredOrUncovered swig_types[598] -#define SWIGTYPE_p_FIX__LegCreditRating swig_types[599] -#define SWIGTYPE_p_FIX__LegCurrency swig_types[600] -#define SWIGTYPE_p_FIX__LegCurrencyRatio swig_types[601] -#define SWIGTYPE_p_FIX__LegDatedDate swig_types[602] -#define SWIGTYPE_p_FIX__LegDividendYield swig_types[603] -#define SWIGTYPE_p_FIX__LegExecInst swig_types[604] -#define SWIGTYPE_p_FIX__LegExerciseStyle swig_types[605] -#define SWIGTYPE_p_FIX__LegFactor swig_types[606] -#define SWIGTYPE_p_FIX__LegFlowScheduleType swig_types[607] -#define SWIGTYPE_p_FIX__LegFutSettDate swig_types[608] -#define SWIGTYPE_p_FIX__LegGrossTradeAmt swig_types[609] -#define SWIGTYPE_p_FIX__LegIOIQty swig_types[610] -#define SWIGTYPE_p_FIX__LegIndividualAllocID swig_types[611] -#define SWIGTYPE_p_FIX__LegInstrRegistry swig_types[612] -#define SWIGTYPE_p_FIX__LegInterestAccrualDate swig_types[613] -#define SWIGTYPE_p_FIX__LegIssueDate swig_types[614] -#define SWIGTYPE_p_FIX__LegIssuer swig_types[615] -#define SWIGTYPE_p_FIX__LegLastForwardPoints swig_types[616] -#define SWIGTYPE_p_FIX__LegLastPx swig_types[617] -#define SWIGTYPE_p_FIX__LegLastQty swig_types[618] -#define SWIGTYPE_p_FIX__LegLocaleOfIssue swig_types[619] -#define SWIGTYPE_p_FIX__LegMaturityDate swig_types[620] -#define SWIGTYPE_p_FIX__LegMaturityMonthYear swig_types[621] -#define SWIGTYPE_p_FIX__LegMaturityTime swig_types[622] -#define SWIGTYPE_p_FIX__LegNumber swig_types[623] -#define SWIGTYPE_p_FIX__LegOfferForwardPoints swig_types[624] -#define SWIGTYPE_p_FIX__LegOfferPx swig_types[625] -#define SWIGTYPE_p_FIX__LegOptAttribute swig_types[626] -#define SWIGTYPE_p_FIX__LegOptionRatio swig_types[627] -#define SWIGTYPE_p_FIX__LegOrderQty swig_types[628] -#define SWIGTYPE_p_FIX__LegPool swig_types[629] -#define SWIGTYPE_p_FIX__LegPositionEffect swig_types[630] -#define SWIGTYPE_p_FIX__LegPrice swig_types[631] -#define SWIGTYPE_p_FIX__LegPriceType swig_types[632] -#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasure swig_types[633] -#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasureQty swig_types[634] -#define SWIGTYPE_p_FIX__LegProduct swig_types[635] -#define SWIGTYPE_p_FIX__LegPutOrCall swig_types[636] -#define SWIGTYPE_p_FIX__LegQty swig_types[637] -#define SWIGTYPE_p_FIX__LegRatioQty swig_types[638] -#define SWIGTYPE_p_FIX__LegRedemptionDate swig_types[639] -#define SWIGTYPE_p_FIX__LegRefID swig_types[640] -#define SWIGTYPE_p_FIX__LegRepoCollateralSecurityType swig_types[641] -#define SWIGTYPE_p_FIX__LegReportID swig_types[642] -#define SWIGTYPE_p_FIX__LegRepurchaseRate swig_types[643] -#define SWIGTYPE_p_FIX__LegRepurchaseTerm swig_types[644] -#define SWIGTYPE_p_FIX__LegSecurityAltID swig_types[645] -#define SWIGTYPE_p_FIX__LegSecurityAltIDSource swig_types[646] -#define SWIGTYPE_p_FIX__LegSecurityDesc swig_types[647] -#define SWIGTYPE_p_FIX__LegSecurityExchange swig_types[648] -#define SWIGTYPE_p_FIX__LegSecurityID swig_types[649] -#define SWIGTYPE_p_FIX__LegSecurityIDSource swig_types[650] -#define SWIGTYPE_p_FIX__LegSecuritySubType swig_types[651] -#define SWIGTYPE_p_FIX__LegSecurityType swig_types[652] -#define SWIGTYPE_p_FIX__LegSettlCurrency swig_types[653] -#define SWIGTYPE_p_FIX__LegSettlDate swig_types[654] -#define SWIGTYPE_p_FIX__LegSettlType swig_types[655] -#define SWIGTYPE_p_FIX__LegSettlmntTyp swig_types[656] -#define SWIGTYPE_p_FIX__LegSide swig_types[657] -#define SWIGTYPE_p_FIX__LegStateOrProvinceOfIssue swig_types[658] -#define SWIGTYPE_p_FIX__LegStipulationType swig_types[659] -#define SWIGTYPE_p_FIX__LegStipulationValue swig_types[660] -#define SWIGTYPE_p_FIX__LegStrikeCurrency swig_types[661] -#define SWIGTYPE_p_FIX__LegStrikePrice swig_types[662] -#define SWIGTYPE_p_FIX__LegSwapType swig_types[663] -#define SWIGTYPE_p_FIX__LegSymbol swig_types[664] -#define SWIGTYPE_p_FIX__LegSymbolSfx swig_types[665] -#define SWIGTYPE_p_FIX__LegTimeUnit swig_types[666] -#define SWIGTYPE_p_FIX__LegUnitOfMeasure swig_types[667] -#define SWIGTYPE_p_FIX__LegUnitOfMeasureQty swig_types[668] -#define SWIGTYPE_p_FIX__LegVolatility swig_types[669] -#define SWIGTYPE_p_FIX__LegalConfirm swig_types[670] -#define SWIGTYPE_p_FIX__LinesOfText swig_types[671] -#define SWIGTYPE_p_FIX__LiquidityIndType swig_types[672] -#define SWIGTYPE_p_FIX__LiquidityNumSecurities swig_types[673] -#define SWIGTYPE_p_FIX__LiquidityPctHigh swig_types[674] -#define SWIGTYPE_p_FIX__LiquidityPctLow swig_types[675] -#define SWIGTYPE_p_FIX__LiquidityValue swig_types[676] -#define SWIGTYPE_p_FIX__ListExecInst swig_types[677] -#define SWIGTYPE_p_FIX__ListExecInstType swig_types[678] -#define SWIGTYPE_p_FIX__ListID swig_types[679] -#define SWIGTYPE_p_FIX__ListMethod swig_types[680] -#define SWIGTYPE_p_FIX__ListName swig_types[681] -#define SWIGTYPE_p_FIX__ListNoOrds swig_types[682] -#define SWIGTYPE_p_FIX__ListOrderStatus swig_types[683] -#define SWIGTYPE_p_FIX__ListRejectReason swig_types[684] -#define SWIGTYPE_p_FIX__ListSeqNo swig_types[685] -#define SWIGTYPE_p_FIX__ListStatusText swig_types[686] -#define SWIGTYPE_p_FIX__ListStatusType swig_types[687] -#define SWIGTYPE_p_FIX__ListUpdateAction swig_types[688] -#define SWIGTYPE_p_FIX__LocaleOfIssue swig_types[689] -#define SWIGTYPE_p_FIX__LocateReqd swig_types[690] -#define SWIGTYPE_p_FIX__LocationID swig_types[691] -#define SWIGTYPE_p_FIX__Log swig_types[692] -#define SWIGTYPE_p_FIX__LogFactory swig_types[693] -#define SWIGTYPE_p_FIX__LongQty swig_types[694] -#define SWIGTYPE_p_FIX__LotType swig_types[695] -#define SWIGTYPE_p_FIX__LowLimitPrice swig_types[696] -#define SWIGTYPE_p_FIX__LowPx swig_types[697] -#define SWIGTYPE_p_FIX__MDBookType swig_types[698] -#define SWIGTYPE_p_FIX__MDEntryBuyer swig_types[699] -#define SWIGTYPE_p_FIX__MDEntryDate swig_types[700] -#define SWIGTYPE_p_FIX__MDEntryForwardPoints swig_types[701] -#define SWIGTYPE_p_FIX__MDEntryID swig_types[702] -#define SWIGTYPE_p_FIX__MDEntryOriginator swig_types[703] -#define SWIGTYPE_p_FIX__MDEntryPositionNo swig_types[704] -#define SWIGTYPE_p_FIX__MDEntryPx swig_types[705] -#define SWIGTYPE_p_FIX__MDEntryRefID swig_types[706] -#define SWIGTYPE_p_FIX__MDEntrySeller swig_types[707] -#define SWIGTYPE_p_FIX__MDEntrySize swig_types[708] -#define SWIGTYPE_p_FIX__MDEntrySpotRate swig_types[709] -#define SWIGTYPE_p_FIX__MDEntryTime swig_types[710] -#define SWIGTYPE_p_FIX__MDEntryType swig_types[711] -#define SWIGTYPE_p_FIX__MDFeedType swig_types[712] -#define SWIGTYPE_p_FIX__MDImplicitDelete swig_types[713] -#define SWIGTYPE_p_FIX__MDMkt swig_types[714] -#define SWIGTYPE_p_FIX__MDOriginType swig_types[715] -#define SWIGTYPE_p_FIX__MDPriceLevel swig_types[716] -#define SWIGTYPE_p_FIX__MDQuoteType swig_types[717] -#define SWIGTYPE_p_FIX__MDReportID swig_types[718] -#define SWIGTYPE_p_FIX__MDReqID swig_types[719] -#define SWIGTYPE_p_FIX__MDReqRejReason swig_types[720] -#define SWIGTYPE_p_FIX__MDSecSize swig_types[721] -#define SWIGTYPE_p_FIX__MDSecSizeType swig_types[722] -#define SWIGTYPE_p_FIX__MDStreamID swig_types[723] -#define SWIGTYPE_p_FIX__MDSubBookType swig_types[724] -#define SWIGTYPE_p_FIX__MDUpdateAction swig_types[725] -#define SWIGTYPE_p_FIX__MDUpdateType swig_types[726] -#define SWIGTYPE_p_FIX__MONTHYEAR swig_types[727] -#define SWIGTYPE_p_FIX__MULTIPLECHARVALUE swig_types[728] -#define SWIGTYPE_p_FIX__MULTIPLESTRINGVALUE swig_types[729] -#define SWIGTYPE_p_FIX__MULTIPLEVALUESTRING swig_types[730] -#define SWIGTYPE_p_FIX__MailingDtls swig_types[731] -#define SWIGTYPE_p_FIX__MailingInst swig_types[732] -#define SWIGTYPE_p_FIX__ManualOrderIndicator swig_types[733] -#define SWIGTYPE_p_FIX__MarginExcess swig_types[734] -#define SWIGTYPE_p_FIX__MarginRatio swig_types[735] -#define SWIGTYPE_p_FIX__MarketDepth swig_types[736] -#define SWIGTYPE_p_FIX__MarketID swig_types[737] -#define SWIGTYPE_p_FIX__MarketReportID swig_types[738] -#define SWIGTYPE_p_FIX__MarketReqID swig_types[739] -#define SWIGTYPE_p_FIX__MarketSegmentDesc swig_types[740] -#define SWIGTYPE_p_FIX__MarketSegmentID swig_types[741] -#define SWIGTYPE_p_FIX__MarketUpdateAction swig_types[742] -#define SWIGTYPE_p_FIX__MassActionRejectReason swig_types[743] -#define SWIGTYPE_p_FIX__MassActionReportID swig_types[744] -#define SWIGTYPE_p_FIX__MassActionResponse swig_types[745] -#define SWIGTYPE_p_FIX__MassActionScope swig_types[746] -#define SWIGTYPE_p_FIX__MassActionType swig_types[747] -#define SWIGTYPE_p_FIX__MassCancelRejectReason swig_types[748] -#define SWIGTYPE_p_FIX__MassCancelRequestType swig_types[749] -#define SWIGTYPE_p_FIX__MassCancelResponse swig_types[750] -#define SWIGTYPE_p_FIX__MassStatusReqID swig_types[751] -#define SWIGTYPE_p_FIX__MassStatusReqType swig_types[752] -#define SWIGTYPE_p_FIX__MatchAlgorithm swig_types[753] -#define SWIGTYPE_p_FIX__MatchIncrement swig_types[754] -#define SWIGTYPE_p_FIX__MatchStatus swig_types[755] -#define SWIGTYPE_p_FIX__MatchType swig_types[756] -#define SWIGTYPE_p_FIX__MaturityDate swig_types[757] -#define SWIGTYPE_p_FIX__MaturityDay swig_types[758] -#define SWIGTYPE_p_FIX__MaturityMonthYear swig_types[759] -#define SWIGTYPE_p_FIX__MaturityMonthYearFormat swig_types[760] -#define SWIGTYPE_p_FIX__MaturityMonthYearIncrement swig_types[761] -#define SWIGTYPE_p_FIX__MaturityMonthYearIncrementUnits swig_types[762] -#define SWIGTYPE_p_FIX__MaturityNetMoney swig_types[763] -#define SWIGTYPE_p_FIX__MaturityRuleID swig_types[764] -#define SWIGTYPE_p_FIX__MaturityTime swig_types[765] -#define SWIGTYPE_p_FIX__MaxFloor swig_types[766] -#define SWIGTYPE_p_FIX__MaxMessageSize swig_types[767] -#define SWIGTYPE_p_FIX__MaxPriceLevels swig_types[768] -#define SWIGTYPE_p_FIX__MaxPriceVariation swig_types[769] -#define SWIGTYPE_p_FIX__MaxShow swig_types[770] -#define SWIGTYPE_p_FIX__MaxTradeVol swig_types[771] -#define SWIGTYPE_p_FIX__MemoryStore swig_types[772] -#define SWIGTYPE_p_FIX__MemoryStoreFactory swig_types[773] -#define SWIGTYPE_p_FIX__Message swig_types[774] -#define SWIGTYPE_p_FIX__MessageEncoding swig_types[775] -#define SWIGTYPE_p_FIX__MessageEventSource swig_types[776] -#define SWIGTYPE_p_FIX__MessageParseError swig_types[777] -#define SWIGTYPE_p_FIX__MessageStore swig_types[778] -#define SWIGTYPE_p_FIX__MessageStoreExceptionWrapper swig_types[779] -#define SWIGTYPE_p_FIX__MessageStoreFactory swig_types[780] -#define SWIGTYPE_p_FIX__MessageStoreFactoryExceptionWrapper swig_types[781] -#define SWIGTYPE_p_FIX__MidPx swig_types[782] -#define SWIGTYPE_p_FIX__MidYield swig_types[783] -#define SWIGTYPE_p_FIX__MinBidSize swig_types[784] -#define SWIGTYPE_p_FIX__MinLotSize swig_types[785] -#define SWIGTYPE_p_FIX__MinOfferSize swig_types[786] -#define SWIGTYPE_p_FIX__MinPriceIncrement swig_types[787] -#define SWIGTYPE_p_FIX__MinPriceIncrementAmount swig_types[788] -#define SWIGTYPE_p_FIX__MinQty swig_types[789] -#define SWIGTYPE_p_FIX__MinTradeVol swig_types[790] -#define SWIGTYPE_p_FIX__MiscFeeAmt swig_types[791] -#define SWIGTYPE_p_FIX__MiscFeeBasis swig_types[792] -#define SWIGTYPE_p_FIX__MiscFeeCurr swig_types[793] -#define SWIGTYPE_p_FIX__MiscFeeType swig_types[794] -#define SWIGTYPE_p_FIX__MktBidPx swig_types[795] -#define SWIGTYPE_p_FIX__MktOfferPx swig_types[796] -#define SWIGTYPE_p_FIX__ModelType swig_types[797] -#define SWIGTYPE_p_FIX__MoneyLaunderingStatus swig_types[798] -#define SWIGTYPE_p_FIX__MsgDirection swig_types[799] -#define SWIGTYPE_p_FIX__MsgSeqNum swig_types[800] -#define SWIGTYPE_p_FIX__MsgType swig_types[801] -#define SWIGTYPE_p_FIX__MultiLegReportingType swig_types[802] -#define SWIGTYPE_p_FIX__MultiLegRptTypeReq swig_types[803] -#define SWIGTYPE_p_FIX__MultilegModel swig_types[804] -#define SWIGTYPE_p_FIX__MultilegPriceMethod swig_types[805] -#define SWIGTYPE_p_FIX__NTPositionLimit swig_types[806] -#define SWIGTYPE_p_FIX__NUMINGROUP swig_types[807] -#define SWIGTYPE_p_FIX__Nested2PartyID swig_types[808] -#define SWIGTYPE_p_FIX__Nested2PartyIDSource swig_types[809] -#define SWIGTYPE_p_FIX__Nested2PartyRole swig_types[810] -#define SWIGTYPE_p_FIX__Nested2PartySubID swig_types[811] -#define SWIGTYPE_p_FIX__Nested2PartySubIDType swig_types[812] -#define SWIGTYPE_p_FIX__Nested3PartyID swig_types[813] -#define SWIGTYPE_p_FIX__Nested3PartyIDSource swig_types[814] -#define SWIGTYPE_p_FIX__Nested3PartyRole swig_types[815] -#define SWIGTYPE_p_FIX__Nested3PartySubID swig_types[816] -#define SWIGTYPE_p_FIX__Nested3PartySubIDType swig_types[817] -#define SWIGTYPE_p_FIX__Nested4PartyID swig_types[818] -#define SWIGTYPE_p_FIX__Nested4PartyIDSource swig_types[819] -#define SWIGTYPE_p_FIX__Nested4PartyRole swig_types[820] -#define SWIGTYPE_p_FIX__Nested4PartySubID swig_types[821] -#define SWIGTYPE_p_FIX__Nested4PartySubIDType swig_types[822] -#define SWIGTYPE_p_FIX__NestedInstrAttribType swig_types[823] -#define SWIGTYPE_p_FIX__NestedInstrAttribValue swig_types[824] -#define SWIGTYPE_p_FIX__NestedPartyID swig_types[825] -#define SWIGTYPE_p_FIX__NestedPartyIDSource swig_types[826] -#define SWIGTYPE_p_FIX__NestedPartyRole swig_types[827] -#define SWIGTYPE_p_FIX__NestedPartySubID swig_types[828] -#define SWIGTYPE_p_FIX__NestedPartySubIDType swig_types[829] -#define SWIGTYPE_p_FIX__NetChgPrevDay swig_types[830] -#define SWIGTYPE_p_FIX__NetGrossInd swig_types[831] -#define SWIGTYPE_p_FIX__NetMoney swig_types[832] -#define SWIGTYPE_p_FIX__NetworkRequestID swig_types[833] -#define SWIGTYPE_p_FIX__NetworkRequestType swig_types[834] -#define SWIGTYPE_p_FIX__NetworkResponseID swig_types[835] -#define SWIGTYPE_p_FIX__NetworkStatusResponseType swig_types[836] -#define SWIGTYPE_p_FIX__NewPassword swig_types[837] -#define SWIGTYPE_p_FIX__NewSeqNo swig_types[838] -#define SWIGTYPE_p_FIX__NewsCategory swig_types[839] -#define SWIGTYPE_p_FIX__NewsID swig_types[840] -#define SWIGTYPE_p_FIX__NewsRefID swig_types[841] -#define SWIGTYPE_p_FIX__NewsRefType swig_types[842] -#define SWIGTYPE_p_FIX__NextExpectedMsgSeqNum swig_types[843] -#define SWIGTYPE_p_FIX__NoAffectedOrders swig_types[844] -#define SWIGTYPE_p_FIX__NoAllocs swig_types[845] -#define SWIGTYPE_p_FIX__NoAltMDSource swig_types[846] -#define SWIGTYPE_p_FIX__NoApplIDs swig_types[847] -#define SWIGTYPE_p_FIX__NoAsgnReqs swig_types[848] -#define SWIGTYPE_p_FIX__NoBidComponents swig_types[849] -#define SWIGTYPE_p_FIX__NoBidDescriptors swig_types[850] -#define SWIGTYPE_p_FIX__NoCapacities swig_types[851] -#define SWIGTYPE_p_FIX__NoClearingInstructions swig_types[852] -#define SWIGTYPE_p_FIX__NoCollInquiryQualifier swig_types[853] -#define SWIGTYPE_p_FIX__NoCompIDs swig_types[854] -#define SWIGTYPE_p_FIX__NoComplexEventDates swig_types[855] -#define SWIGTYPE_p_FIX__NoComplexEventTimes swig_types[856] -#define SWIGTYPE_p_FIX__NoComplexEvents swig_types[857] -#define SWIGTYPE_p_FIX__NoContAmts swig_types[858] -#define SWIGTYPE_p_FIX__NoContraBrokers swig_types[859] -#define SWIGTYPE_p_FIX__NoDates swig_types[860] -#define SWIGTYPE_p_FIX__NoDerivativeEvents swig_types[861] -#define SWIGTYPE_p_FIX__NoDerivativeInstrAttrib swig_types[862] -#define SWIGTYPE_p_FIX__NoDerivativeInstrumentParties swig_types[863] -#define SWIGTYPE_p_FIX__NoDerivativeInstrumentPartySubIDs swig_types[864] -#define SWIGTYPE_p_FIX__NoDerivativeSecurityAltID swig_types[865] -#define SWIGTYPE_p_FIX__NoDistribInsts swig_types[866] -#define SWIGTYPE_p_FIX__NoDlvyInst swig_types[867] -#define SWIGTYPE_p_FIX__NoEvents swig_types[868] -#define SWIGTYPE_p_FIX__NoExecInstRules swig_types[869] -#define SWIGTYPE_p_FIX__NoExecs swig_types[870] -#define SWIGTYPE_p_FIX__NoExpiration swig_types[871] -#define SWIGTYPE_p_FIX__NoFills swig_types[872] -#define SWIGTYPE_p_FIX__NoHops swig_types[873] -#define SWIGTYPE_p_FIX__NoIOIQualifiers swig_types[874] -#define SWIGTYPE_p_FIX__NoInstrAttrib swig_types[875] -#define SWIGTYPE_p_FIX__NoInstrumentParties swig_types[876] -#define SWIGTYPE_p_FIX__NoInstrumentPartySubIDs swig_types[877] -#define SWIGTYPE_p_FIX__NoLegAllocs swig_types[878] -#define SWIGTYPE_p_FIX__NoLegSecurityAltID swig_types[879] -#define SWIGTYPE_p_FIX__NoLegStipulations swig_types[880] -#define SWIGTYPE_p_FIX__NoLegs swig_types[881] -#define SWIGTYPE_p_FIX__NoLinesOfText swig_types[882] -#define SWIGTYPE_p_FIX__NoLotTypeRules swig_types[883] -#define SWIGTYPE_p_FIX__NoMDEntries swig_types[884] -#define SWIGTYPE_p_FIX__NoMDEntryTypes swig_types[885] -#define SWIGTYPE_p_FIX__NoMDFeedTypes swig_types[886] -#define SWIGTYPE_p_FIX__NoMarketSegments swig_types[887] -#define SWIGTYPE_p_FIX__NoMatchRules swig_types[888] -#define SWIGTYPE_p_FIX__NoMaturityRules swig_types[889] -#define SWIGTYPE_p_FIX__NoMiscFees swig_types[890] -#define SWIGTYPE_p_FIX__NoMsgTypes swig_types[891] -#define SWIGTYPE_p_FIX__NoNested2PartyIDs swig_types[892] -#define SWIGTYPE_p_FIX__NoNested2PartySubIDs swig_types[893] -#define SWIGTYPE_p_FIX__NoNested3PartyIDs swig_types[894] -#define SWIGTYPE_p_FIX__NoNested3PartySubIDs swig_types[895] -#define SWIGTYPE_p_FIX__NoNested4PartyIDs swig_types[896] -#define SWIGTYPE_p_FIX__NoNested4PartySubIDs swig_types[897] -#define SWIGTYPE_p_FIX__NoNestedInstrAttrib swig_types[898] -#define SWIGTYPE_p_FIX__NoNestedPartyIDs swig_types[899] -#define SWIGTYPE_p_FIX__NoNestedPartySubIDs swig_types[900] -#define SWIGTYPE_p_FIX__NoNewsRefIDs swig_types[901] -#define SWIGTYPE_p_FIX__NoNotAffectedOrders swig_types[902] -#define SWIGTYPE_p_FIX__NoOfLegUnderlyings swig_types[903] -#define SWIGTYPE_p_FIX__NoOfSecSizes swig_types[904] -#define SWIGTYPE_p_FIX__NoOrdTypeRules swig_types[905] -#define SWIGTYPE_p_FIX__NoOrders swig_types[906] -#define SWIGTYPE_p_FIX__NoPartyIDs swig_types[907] -#define SWIGTYPE_p_FIX__NoPartySubIDs swig_types[908] -#define SWIGTYPE_p_FIX__NoPosAmt swig_types[909] -#define SWIGTYPE_p_FIX__NoPositions swig_types[910] -#define SWIGTYPE_p_FIX__NoQuoteEntries swig_types[911] -#define SWIGTYPE_p_FIX__NoQuoteQualifiers swig_types[912] -#define SWIGTYPE_p_FIX__NoQuoteSets swig_types[913] -#define SWIGTYPE_p_FIX__NoRateSources swig_types[914] -#define SWIGTYPE_p_FIX__NoRegistDtls swig_types[915] -#define SWIGTYPE_p_FIX__NoRelatedSym swig_types[916] -#define SWIGTYPE_p_FIX__NoRootPartyIDs swig_types[917] -#define SWIGTYPE_p_FIX__NoRootPartySubIDs swig_types[918] -#define SWIGTYPE_p_FIX__NoRoutingIDs swig_types[919] -#define SWIGTYPE_p_FIX__NoRpts swig_types[920] -#define SWIGTYPE_p_FIX__NoSecurityAltID swig_types[921] -#define SWIGTYPE_p_FIX__NoSecurityTypes swig_types[922] -#define SWIGTYPE_p_FIX__NoSettlDetails swig_types[923] -#define SWIGTYPE_p_FIX__NoSettlInst swig_types[924] -#define SWIGTYPE_p_FIX__NoSettlOblig swig_types[925] -#define SWIGTYPE_p_FIX__NoSettlPartyIDs swig_types[926] -#define SWIGTYPE_p_FIX__NoSettlPartySubIDs swig_types[927] -#define SWIGTYPE_p_FIX__NoSideTrdRegTS swig_types[928] -#define SWIGTYPE_p_FIX__NoSides swig_types[929] -#define SWIGTYPE_p_FIX__NoStatsIndicators swig_types[930] -#define SWIGTYPE_p_FIX__NoStipulations swig_types[931] -#define SWIGTYPE_p_FIX__NoStrategyParameters swig_types[932] -#define SWIGTYPE_p_FIX__NoStrikeRules swig_types[933] -#define SWIGTYPE_p_FIX__NoStrikes swig_types[934] -#define SWIGTYPE_p_FIX__NoTagValue swig_types[935] -#define SWIGTYPE_p_FIX__NoTargetPartyIDs swig_types[936] -#define SWIGTYPE_p_FIX__NoTickRules swig_types[937] -#define SWIGTYPE_p_FIX__NoTimeInForceRules swig_types[938] -#define SWIGTYPE_p_FIX__NoTrades swig_types[939] -#define SWIGTYPE_p_FIX__NoTradingSessionRules swig_types[940] -#define SWIGTYPE_p_FIX__NoTradingSessions swig_types[941] -#define SWIGTYPE_p_FIX__NoTrdRegTimestamps swig_types[942] -#define SWIGTYPE_p_FIX__NoTrdRepIndicators swig_types[943] -#define SWIGTYPE_p_FIX__NoUnderlyingAmounts swig_types[944] -#define SWIGTYPE_p_FIX__NoUnderlyingLegSecurityAltID swig_types[945] -#define SWIGTYPE_p_FIX__NoUnderlyingSecurityAltID swig_types[946] -#define SWIGTYPE_p_FIX__NoUnderlyingStips swig_types[947] -#define SWIGTYPE_p_FIX__NoUnderlyings swig_types[948] -#define SWIGTYPE_p_FIX__NoUndlyInstrumentParties swig_types[949] -#define SWIGTYPE_p_FIX__NoUndlyInstrumentPartySubIDs swig_types[950] -#define SWIGTYPE_p_FIX__NotAffOrigClOrdID swig_types[951] -#define SWIGTYPE_p_FIX__NotAffectedOrderID swig_types[952] -#define SWIGTYPE_p_FIX__NotifyBrokerOfCredit swig_types[953] -#define SWIGTYPE_p_FIX__NotionalPercentageOutstanding swig_types[954] -#define SWIGTYPE_p_FIX__NullApplication swig_types[955] -#define SWIGTYPE_p_FIX__NullLog swig_types[956] -#define SWIGTYPE_p_FIX__NumBidders swig_types[957] -#define SWIGTYPE_p_FIX__NumDaysInterest swig_types[958] -#define SWIGTYPE_p_FIX__NumTickets swig_types[959] -#define SWIGTYPE_p_FIX__NumberOfOrders swig_types[960] -#define SWIGTYPE_p_FIX__OddLot swig_types[961] -#define SWIGTYPE_p_FIX__OfferForwardPoints swig_types[962] -#define SWIGTYPE_p_FIX__OfferForwardPoints2 swig_types[963] -#define SWIGTYPE_p_FIX__OfferPx swig_types[964] -#define SWIGTYPE_p_FIX__OfferSize swig_types[965] -#define SWIGTYPE_p_FIX__OfferSpotRate swig_types[966] -#define SWIGTYPE_p_FIX__OfferSwapPoints swig_types[967] -#define SWIGTYPE_p_FIX__OfferYield swig_types[968] -#define SWIGTYPE_p_FIX__OnBehalfOfCompID swig_types[969] -#define SWIGTYPE_p_FIX__OnBehalfOfLocationID swig_types[970] -#define SWIGTYPE_p_FIX__OnBehalfOfSendingTime swig_types[971] -#define SWIGTYPE_p_FIX__OnBehalfOfSubID swig_types[972] -#define SWIGTYPE_p_FIX__OpenClose swig_types[973] -#define SWIGTYPE_p_FIX__OpenCloseSettlFlag swig_types[974] -#define SWIGTYPE_p_FIX__OpenCloseSettleFlag swig_types[975] -#define SWIGTYPE_p_FIX__OpenInterest swig_types[976] -#define SWIGTYPE_p_FIX__OptAttribute swig_types[977] -#define SWIGTYPE_p_FIX__OptPayAmount swig_types[978] -#define SWIGTYPE_p_FIX__OptPayoutAmount swig_types[979] -#define SWIGTYPE_p_FIX__OptPayoutType swig_types[980] -#define SWIGTYPE_p_FIX__OrdRejReason swig_types[981] -#define SWIGTYPE_p_FIX__OrdStatus swig_types[982] -#define SWIGTYPE_p_FIX__OrdStatusReqID swig_types[983] -#define SWIGTYPE_p_FIX__OrdType swig_types[984] -#define SWIGTYPE_p_FIX__OrderAvgPx swig_types[985] -#define SWIGTYPE_p_FIX__OrderBookingQty swig_types[986] -#define SWIGTYPE_p_FIX__OrderCapacity swig_types[987] -#define SWIGTYPE_p_FIX__OrderCapacityQty swig_types[988] -#define SWIGTYPE_p_FIX__OrderCategory swig_types[989] -#define SWIGTYPE_p_FIX__OrderDelay swig_types[990] -#define SWIGTYPE_p_FIX__OrderDelayUnit swig_types[991] -#define SWIGTYPE_p_FIX__OrderHandlingInstSource swig_types[992] -#define SWIGTYPE_p_FIX__OrderID swig_types[993] -#define SWIGTYPE_p_FIX__OrderInputDevice swig_types[994] -#define SWIGTYPE_p_FIX__OrderPercent swig_types[995] -#define SWIGTYPE_p_FIX__OrderQty swig_types[996] -#define SWIGTYPE_p_FIX__OrderQty2 swig_types[997] -#define SWIGTYPE_p_FIX__OrderRestrictions swig_types[998] -#define SWIGTYPE_p_FIX__OrigClOrdID swig_types[999] -#define SWIGTYPE_p_FIX__OrigCrossID swig_types[1000] -#define SWIGTYPE_p_FIX__OrigCustOrderCapacity swig_types[1001] -#define SWIGTYPE_p_FIX__OrigOrdModTime swig_types[1002] -#define SWIGTYPE_p_FIX__OrigPosReqRefID swig_types[1003] -#define SWIGTYPE_p_FIX__OrigSecondaryTradeID swig_types[1004] -#define SWIGTYPE_p_FIX__OrigSendingTime swig_types[1005] -#define SWIGTYPE_p_FIX__OrigTime swig_types[1006] -#define SWIGTYPE_p_FIX__OrigTradeDate swig_types[1007] -#define SWIGTYPE_p_FIX__OrigTradeHandlingInstr swig_types[1008] -#define SWIGTYPE_p_FIX__OrigTradeID swig_types[1009] -#define SWIGTYPE_p_FIX__OriginalNotionalPercentageOutstanding swig_types[1010] -#define SWIGTYPE_p_FIX__OutMainCntryUIndex swig_types[1011] -#define SWIGTYPE_p_FIX__OutsideIndexPct swig_types[1012] -#define SWIGTYPE_p_FIX__OwnerType swig_types[1013] -#define SWIGTYPE_p_FIX__OwnershipType swig_types[1014] -#define SWIGTYPE_p_FIX__PERCENTAGE swig_types[1015] -#define SWIGTYPE_p_FIX__PRICE swig_types[1016] -#define SWIGTYPE_p_FIX__PRICEOFFSET swig_types[1017] -#define SWIGTYPE_p_FIX__ParentMktSegmID swig_types[1018] -#define SWIGTYPE_p_FIX__ParticipationRate swig_types[1019] -#define SWIGTYPE_p_FIX__PartyID swig_types[1020] -#define SWIGTYPE_p_FIX__PartyIDSource swig_types[1021] -#define SWIGTYPE_p_FIX__PartyRole swig_types[1022] -#define SWIGTYPE_p_FIX__PartySubID swig_types[1023] -#define SWIGTYPE_p_FIX__PartySubIDType swig_types[1024] -#define SWIGTYPE_p_FIX__Password swig_types[1025] -#define SWIGTYPE_p_FIX__PaymentDate swig_types[1026] -#define SWIGTYPE_p_FIX__PaymentMethod swig_types[1027] -#define SWIGTYPE_p_FIX__PaymentRef swig_types[1028] -#define SWIGTYPE_p_FIX__PaymentRemitterID swig_types[1029] -#define SWIGTYPE_p_FIX__PctAtRisk swig_types[1030] -#define SWIGTYPE_p_FIX__PegDifference swig_types[1031] -#define SWIGTYPE_p_FIX__PegLimitType swig_types[1032] -#define SWIGTYPE_p_FIX__PegMoveType swig_types[1033] -#define SWIGTYPE_p_FIX__PegOffsetType swig_types[1034] -#define SWIGTYPE_p_FIX__PegOffsetValue swig_types[1035] -#define SWIGTYPE_p_FIX__PegPriceType swig_types[1036] -#define SWIGTYPE_p_FIX__PegRoundDirection swig_types[1037] -#define SWIGTYPE_p_FIX__PegScope swig_types[1038] -#define SWIGTYPE_p_FIX__PegSecurityDesc swig_types[1039] -#define SWIGTYPE_p_FIX__PegSecurityID swig_types[1040] -#define SWIGTYPE_p_FIX__PegSecurityIDSource swig_types[1041] -#define SWIGTYPE_p_FIX__PegSymbol swig_types[1042] -#define SWIGTYPE_p_FIX__PeggedPrice swig_types[1043] -#define SWIGTYPE_p_FIX__PeggedRefPrice swig_types[1044] -#define SWIGTYPE_p_FIX__Pool swig_types[1045] -#define SWIGTYPE_p_FIX__PosAmt swig_types[1046] -#define SWIGTYPE_p_FIX__PosAmtType swig_types[1047] -#define SWIGTYPE_p_FIX__PosMaintAction swig_types[1048] -#define SWIGTYPE_p_FIX__PosMaintResult swig_types[1049] -#define SWIGTYPE_p_FIX__PosMaintRptID swig_types[1050] -#define SWIGTYPE_p_FIX__PosMaintRptRefID swig_types[1051] -#define SWIGTYPE_p_FIX__PosMaintStatus swig_types[1052] -#define SWIGTYPE_p_FIX__PosQtyStatus swig_types[1053] -#define SWIGTYPE_p_FIX__PosReqID swig_types[1054] -#define SWIGTYPE_p_FIX__PosReqResult swig_types[1055] -#define SWIGTYPE_p_FIX__PosReqStatus swig_types[1056] -#define SWIGTYPE_p_FIX__PosReqType swig_types[1057] -#define SWIGTYPE_p_FIX__PosTransType swig_types[1058] -#define SWIGTYPE_p_FIX__PosType swig_types[1059] -#define SWIGTYPE_p_FIX__PositionCurrency swig_types[1060] -#define SWIGTYPE_p_FIX__PositionEffect swig_types[1061] -#define SWIGTYPE_p_FIX__PositionLimit swig_types[1062] -#define SWIGTYPE_p_FIX__PossDupFlag swig_types[1063] -#define SWIGTYPE_p_FIX__PossResend swig_types[1064] -#define SWIGTYPE_p_FIX__PreTradeAnonymity swig_types[1065] -#define SWIGTYPE_p_FIX__PreallocMethod swig_types[1066] -#define SWIGTYPE_p_FIX__PrevClosePx swig_types[1067] -#define SWIGTYPE_p_FIX__PreviouslyReported swig_types[1068] -#define SWIGTYPE_p_FIX__Price swig_types[1069] -#define SWIGTYPE_p_FIX__Price2 swig_types[1070] -#define SWIGTYPE_p_FIX__PriceDelta swig_types[1071] -#define SWIGTYPE_p_FIX__PriceImprovement swig_types[1072] -#define SWIGTYPE_p_FIX__PriceLimitType swig_types[1073] -#define SWIGTYPE_p_FIX__PriceProtectionScope swig_types[1074] -#define SWIGTYPE_p_FIX__PriceQuoteMethod swig_types[1075] -#define SWIGTYPE_p_FIX__PriceType swig_types[1076] -#define SWIGTYPE_p_FIX__PriceUnitOfMeasure swig_types[1077] -#define SWIGTYPE_p_FIX__PriceUnitOfMeasureQty swig_types[1078] -#define SWIGTYPE_p_FIX__PriorSettlPrice swig_types[1079] -#define SWIGTYPE_p_FIX__PriorSpreadIndicator swig_types[1080] -#define SWIGTYPE_p_FIX__PriorityIndicator swig_types[1081] -#define SWIGTYPE_p_FIX__PrivateQuote swig_types[1082] -#define SWIGTYPE_p_FIX__ProcessCode swig_types[1083] -#define SWIGTYPE_p_FIX__Product swig_types[1084] -#define SWIGTYPE_p_FIX__ProductComplex swig_types[1085] -#define SWIGTYPE_p_FIX__ProgPeriodInterval swig_types[1086] -#define SWIGTYPE_p_FIX__ProgRptReqs swig_types[1087] -#define SWIGTYPE_p_FIX__PublishTrdIndicator swig_types[1088] -#define SWIGTYPE_p_FIX__PutOrCall swig_types[1089] -#define SWIGTYPE_p_FIX__QTY swig_types[1090] -#define SWIGTYPE_p_FIX__QtyType swig_types[1091] -#define SWIGTYPE_p_FIX__Quantity swig_types[1092] -#define SWIGTYPE_p_FIX__QuantityDate swig_types[1093] -#define SWIGTYPE_p_FIX__QuantityType swig_types[1094] -#define SWIGTYPE_p_FIX__QuoteAckStatus swig_types[1095] -#define SWIGTYPE_p_FIX__QuoteCancelType swig_types[1096] -#define SWIGTYPE_p_FIX__QuoteCondition swig_types[1097] -#define SWIGTYPE_p_FIX__QuoteEntryID swig_types[1098] -#define SWIGTYPE_p_FIX__QuoteEntryRejectReason swig_types[1099] -#define SWIGTYPE_p_FIX__QuoteEntryStatus swig_types[1100] -#define SWIGTYPE_p_FIX__QuoteID swig_types[1101] -#define SWIGTYPE_p_FIX__QuoteMsgID swig_types[1102] -#define SWIGTYPE_p_FIX__QuotePriceType swig_types[1103] -#define SWIGTYPE_p_FIX__QuoteQualifier swig_types[1104] -#define SWIGTYPE_p_FIX__QuoteRejectReason swig_types[1105] -#define SWIGTYPE_p_FIX__QuoteReqID swig_types[1106] -#define SWIGTYPE_p_FIX__QuoteRequestRejectReason swig_types[1107] -#define SWIGTYPE_p_FIX__QuoteRequestType swig_types[1108] -#define SWIGTYPE_p_FIX__QuoteRespID swig_types[1109] -#define SWIGTYPE_p_FIX__QuoteRespType swig_types[1110] -#define SWIGTYPE_p_FIX__QuoteResponseLevel swig_types[1111] -#define SWIGTYPE_p_FIX__QuoteSetID swig_types[1112] -#define SWIGTYPE_p_FIX__QuoteSetValidUntilTime swig_types[1113] -#define SWIGTYPE_p_FIX__QuoteStatus swig_types[1114] -#define SWIGTYPE_p_FIX__QuoteStatusReqID swig_types[1115] -#define SWIGTYPE_p_FIX__QuoteType swig_types[1116] -#define SWIGTYPE_p_FIX__RFQReqID swig_types[1117] -#define SWIGTYPE_p_FIX__RateSource swig_types[1118] -#define SWIGTYPE_p_FIX__RateSourceType swig_types[1119] -#define SWIGTYPE_p_FIX__RatioQty swig_types[1120] -#define SWIGTYPE_p_FIX__RawData swig_types[1121] -#define SWIGTYPE_p_FIX__RawDataLength swig_types[1122] -#define SWIGTYPE_p_FIX__ReceivedDeptID swig_types[1123] -#define SWIGTYPE_p_FIX__RedemptionDate swig_types[1124] -#define SWIGTYPE_p_FIX__RefAllocID swig_types[1125] -#define SWIGTYPE_p_FIX__RefApplExtID swig_types[1126] -#define SWIGTYPE_p_FIX__RefApplID swig_types[1127] -#define SWIGTYPE_p_FIX__RefApplLastSeqNum swig_types[1128] -#define SWIGTYPE_p_FIX__RefApplReqID swig_types[1129] -#define SWIGTYPE_p_FIX__RefApplVerID swig_types[1130] -#define SWIGTYPE_p_FIX__RefCompID swig_types[1131] -#define SWIGTYPE_p_FIX__RefCstmApplVerID swig_types[1132] -#define SWIGTYPE_p_FIX__RefMsgType swig_types[1133] -#define SWIGTYPE_p_FIX__RefOrdIDReason swig_types[1134] -#define SWIGTYPE_p_FIX__RefOrderID swig_types[1135] -#define SWIGTYPE_p_FIX__RefOrderIDSource swig_types[1136] -#define SWIGTYPE_p_FIX__RefSeqNum swig_types[1137] -#define SWIGTYPE_p_FIX__RefSubID swig_types[1138] -#define SWIGTYPE_p_FIX__RefTagID swig_types[1139] -#define SWIGTYPE_p_FIX__ReferencePage swig_types[1140] -#define SWIGTYPE_p_FIX__RefreshIndicator swig_types[1141] -#define SWIGTYPE_p_FIX__RefreshQty swig_types[1142] -#define SWIGTYPE_p_FIX__RegistAcctType swig_types[1143] -#define SWIGTYPE_p_FIX__RegistDetls swig_types[1144] -#define SWIGTYPE_p_FIX__RegistDtls swig_types[1145] -#define SWIGTYPE_p_FIX__RegistEmail swig_types[1146] -#define SWIGTYPE_p_FIX__RegistID swig_types[1147] -#define SWIGTYPE_p_FIX__RegistRefID swig_types[1148] -#define SWIGTYPE_p_FIX__RegistRejReasonCode swig_types[1149] -#define SWIGTYPE_p_FIX__RegistRejReasonText swig_types[1150] -#define SWIGTYPE_p_FIX__RegistStatus swig_types[1151] -#define SWIGTYPE_p_FIX__RegistTransType swig_types[1152] -#define SWIGTYPE_p_FIX__RejectLogon swig_types[1153] -#define SWIGTYPE_p_FIX__RejectText swig_types[1154] -#define SWIGTYPE_p_FIX__RelSymTransactTime swig_types[1155] -#define SWIGTYPE_p_FIX__RelatdSym swig_types[1156] -#define SWIGTYPE_p_FIX__RepeatedTag swig_types[1157] -#define SWIGTYPE_p_FIX__RepeatingGroupCountMismatch swig_types[1158] -#define SWIGTYPE_p_FIX__RepoCollateralSecurityType swig_types[1159] -#define SWIGTYPE_p_FIX__ReportToExch swig_types[1160] -#define SWIGTYPE_p_FIX__ReportedPx swig_types[1161] -#define SWIGTYPE_p_FIX__ReportedPxDiff swig_types[1162] -#define SWIGTYPE_p_FIX__RepurchaseRate swig_types[1163] -#define SWIGTYPE_p_FIX__RepurchaseTerm swig_types[1164] -#define SWIGTYPE_p_FIX__RequiredTagMissing swig_types[1165] -#define SWIGTYPE_p_FIX__ResetSeqNumFlag swig_types[1166] -#define SWIGTYPE_p_FIX__RespondentType swig_types[1167] -#define SWIGTYPE_p_FIX__ResponseDestination swig_types[1168] -#define SWIGTYPE_p_FIX__ResponseTransportType swig_types[1169] -#define SWIGTYPE_p_FIX__RestructuringType swig_types[1170] -#define SWIGTYPE_p_FIX__ReversalIndicator swig_types[1171] -#define SWIGTYPE_p_FIX__RiskFreeRate swig_types[1172] -#define SWIGTYPE_p_FIX__RndPx swig_types[1173] -#define SWIGTYPE_p_FIX__RootPartyID swig_types[1174] -#define SWIGTYPE_p_FIX__RootPartyIDSource swig_types[1175] -#define SWIGTYPE_p_FIX__RootPartyRole swig_types[1176] -#define SWIGTYPE_p_FIX__RootPartySubID swig_types[1177] -#define SWIGTYPE_p_FIX__RootPartySubIDType swig_types[1178] -#define SWIGTYPE_p_FIX__RoundLot swig_types[1179] -#define SWIGTYPE_p_FIX__RoundingDirection swig_types[1180] -#define SWIGTYPE_p_FIX__RoundingModulus swig_types[1181] -#define SWIGTYPE_p_FIX__RoutingID swig_types[1182] -#define SWIGTYPE_p_FIX__RoutingType swig_types[1183] -#define SWIGTYPE_p_FIX__RptSeq swig_types[1184] -#define SWIGTYPE_p_FIX__RptSys swig_types[1185] -#define SWIGTYPE_p_FIX__Rule80A swig_types[1186] -#define SWIGTYPE_p_FIX__RuntimeError swig_types[1187] -#define SWIGTYPE_p_FIX__SEQNUM swig_types[1188] -#define SWIGTYPE_p_FIX__STRING swig_types[1189] -#define SWIGTYPE_p_FIX__Scope swig_types[1190] -#define SWIGTYPE_p_FIX__ScreenLog swig_types[1191] -#define SWIGTYPE_p_FIX__ScreenLogFactory swig_types[1192] -#define SWIGTYPE_p_FIX__SecondaryAllocID swig_types[1193] -#define SWIGTYPE_p_FIX__SecondaryClOrdID swig_types[1194] -#define SWIGTYPE_p_FIX__SecondaryDisplayQty swig_types[1195] -#define SWIGTYPE_p_FIX__SecondaryExecID swig_types[1196] -#define SWIGTYPE_p_FIX__SecondaryFirmTradeID swig_types[1197] -#define SWIGTYPE_p_FIX__SecondaryHighLimitPrice swig_types[1198] -#define SWIGTYPE_p_FIX__SecondaryIndividualAllocID swig_types[1199] -#define SWIGTYPE_p_FIX__SecondaryLowLimitPrice swig_types[1200] -#define SWIGTYPE_p_FIX__SecondaryOrderID swig_types[1201] -#define SWIGTYPE_p_FIX__SecondaryPriceLimitType swig_types[1202] -#define SWIGTYPE_p_FIX__SecondaryTradeID swig_types[1203] -#define SWIGTYPE_p_FIX__SecondaryTradeReportID swig_types[1204] -#define SWIGTYPE_p_FIX__SecondaryTradeReportRefID swig_types[1205] -#define SWIGTYPE_p_FIX__SecondaryTradingReferencePrice swig_types[1206] -#define SWIGTYPE_p_FIX__SecondaryTrdType swig_types[1207] -#define SWIGTYPE_p_FIX__SecureData swig_types[1208] -#define SWIGTYPE_p_FIX__SecureDataLen swig_types[1209] -#define SWIGTYPE_p_FIX__SecurityAltID swig_types[1210] -#define SWIGTYPE_p_FIX__SecurityAltIDSource swig_types[1211] -#define SWIGTYPE_p_FIX__SecurityDesc swig_types[1212] -#define SWIGTYPE_p_FIX__SecurityExchange swig_types[1213] -#define SWIGTYPE_p_FIX__SecurityGroup swig_types[1214] -#define SWIGTYPE_p_FIX__SecurityID swig_types[1215] -#define SWIGTYPE_p_FIX__SecurityIDSource swig_types[1216] -#define SWIGTYPE_p_FIX__SecurityListDesc swig_types[1217] -#define SWIGTYPE_p_FIX__SecurityListID swig_types[1218] -#define SWIGTYPE_p_FIX__SecurityListRefID swig_types[1219] -#define SWIGTYPE_p_FIX__SecurityListRequestType swig_types[1220] -#define SWIGTYPE_p_FIX__SecurityListType swig_types[1221] -#define SWIGTYPE_p_FIX__SecurityListTypeSource swig_types[1222] -#define SWIGTYPE_p_FIX__SecurityReportID swig_types[1223] -#define SWIGTYPE_p_FIX__SecurityReqID swig_types[1224] -#define SWIGTYPE_p_FIX__SecurityRequestResult swig_types[1225] -#define SWIGTYPE_p_FIX__SecurityRequestType swig_types[1226] -#define SWIGTYPE_p_FIX__SecurityResponseID swig_types[1227] -#define SWIGTYPE_p_FIX__SecurityResponseType swig_types[1228] -#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctName swig_types[1229] -#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctNum swig_types[1230] -#define SWIGTYPE_p_FIX__SecuritySettlAgentCode swig_types[1231] -#define SWIGTYPE_p_FIX__SecuritySettlAgentContactName swig_types[1232] -#define SWIGTYPE_p_FIX__SecuritySettlAgentContactPhone swig_types[1233] -#define SWIGTYPE_p_FIX__SecuritySettlAgentName swig_types[1234] -#define SWIGTYPE_p_FIX__SecurityStatus swig_types[1235] -#define SWIGTYPE_p_FIX__SecurityStatusReqID swig_types[1236] -#define SWIGTYPE_p_FIX__SecuritySubType swig_types[1237] -#define SWIGTYPE_p_FIX__SecurityTradingEvent swig_types[1238] -#define SWIGTYPE_p_FIX__SecurityTradingStatus swig_types[1239] -#define SWIGTYPE_p_FIX__SecurityType swig_types[1240] -#define SWIGTYPE_p_FIX__SecurityUpdateAction swig_types[1241] -#define SWIGTYPE_p_FIX__SecurityXML swig_types[1242] -#define SWIGTYPE_p_FIX__SecurityXMLLen swig_types[1243] -#define SWIGTYPE_p_FIX__SecurityXMLSchema swig_types[1244] -#define SWIGTYPE_p_FIX__SellVolume swig_types[1245] -#define SWIGTYPE_p_FIX__SellerDays swig_types[1246] -#define SWIGTYPE_p_FIX__SenderCompID swig_types[1247] -#define SWIGTYPE_p_FIX__SenderLocationID swig_types[1248] -#define SWIGTYPE_p_FIX__SenderSubID swig_types[1249] -#define SWIGTYPE_p_FIX__SendingDate swig_types[1250] -#define SWIGTYPE_p_FIX__SendingTime swig_types[1251] -#define SWIGTYPE_p_FIX__Seniority swig_types[1252] -#define SWIGTYPE_p_FIX__Session swig_types[1253] -#define SWIGTYPE_p_FIX__SessionID swig_types[1254] -#define SWIGTYPE_p_FIX__SessionNotFound swig_types[1255] -#define SWIGTYPE_p_FIX__SessionRejectReason swig_types[1256] -#define SWIGTYPE_p_FIX__SessionSettings swig_types[1257] -#define SWIGTYPE_p_FIX__SessionStatus swig_types[1258] -#define SWIGTYPE_p_FIX__SettlBrkrCode swig_types[1259] -#define SWIGTYPE_p_FIX__SettlCurrAmt swig_types[1260] -#define SWIGTYPE_p_FIX__SettlCurrBidFxRate swig_types[1261] -#define SWIGTYPE_p_FIX__SettlCurrFxRate swig_types[1262] -#define SWIGTYPE_p_FIX__SettlCurrFxRateCalc swig_types[1263] -#define SWIGTYPE_p_FIX__SettlCurrOfferFxRate swig_types[1264] -#define SWIGTYPE_p_FIX__SettlCurrency swig_types[1265] -#define SWIGTYPE_p_FIX__SettlDate swig_types[1266] -#define SWIGTYPE_p_FIX__SettlDate2 swig_types[1267] -#define SWIGTYPE_p_FIX__SettlDeliveryType swig_types[1268] -#define SWIGTYPE_p_FIX__SettlDepositoryCode swig_types[1269] -#define SWIGTYPE_p_FIX__SettlInstCode swig_types[1270] -#define SWIGTYPE_p_FIX__SettlInstID swig_types[1271] -#define SWIGTYPE_p_FIX__SettlInstMode swig_types[1272] -#define SWIGTYPE_p_FIX__SettlInstMsgID swig_types[1273] -#define SWIGTYPE_p_FIX__SettlInstRefID swig_types[1274] -#define SWIGTYPE_p_FIX__SettlInstReqID swig_types[1275] -#define SWIGTYPE_p_FIX__SettlInstReqRejCode swig_types[1276] -#define SWIGTYPE_p_FIX__SettlInstSource swig_types[1277] -#define SWIGTYPE_p_FIX__SettlInstTransType swig_types[1278] -#define SWIGTYPE_p_FIX__SettlLocation swig_types[1279] -#define SWIGTYPE_p_FIX__SettlMethod swig_types[1280] -#define SWIGTYPE_p_FIX__SettlObligID swig_types[1281] -#define SWIGTYPE_p_FIX__SettlObligMode swig_types[1282] -#define SWIGTYPE_p_FIX__SettlObligMsgID swig_types[1283] -#define SWIGTYPE_p_FIX__SettlObligRefID swig_types[1284] -#define SWIGTYPE_p_FIX__SettlObligSource swig_types[1285] -#define SWIGTYPE_p_FIX__SettlObligTransType swig_types[1286] -#define SWIGTYPE_p_FIX__SettlPartyID swig_types[1287] -#define SWIGTYPE_p_FIX__SettlPartyIDSource swig_types[1288] -#define SWIGTYPE_p_FIX__SettlPartyRole swig_types[1289] -#define SWIGTYPE_p_FIX__SettlPartySubID swig_types[1290] -#define SWIGTYPE_p_FIX__SettlPartySubIDType swig_types[1291] -#define SWIGTYPE_p_FIX__SettlPrice swig_types[1292] -#define SWIGTYPE_p_FIX__SettlPriceType swig_types[1293] -#define SWIGTYPE_p_FIX__SettlSessID swig_types[1294] -#define SWIGTYPE_p_FIX__SettlSessSubID swig_types[1295] -#define SWIGTYPE_p_FIX__SettlType swig_types[1296] -#define SWIGTYPE_p_FIX__SettleOnOpenFlag swig_types[1297] -#define SWIGTYPE_p_FIX__SettlementCycleNo swig_types[1298] -#define SWIGTYPE_p_FIX__SettlmntTyp swig_types[1299] -#define SWIGTYPE_p_FIX__SharedCommission swig_types[1300] -#define SWIGTYPE_p_FIX__Shares swig_types[1301] -#define SWIGTYPE_p_FIX__ShortQty swig_types[1302] -#define SWIGTYPE_p_FIX__ShortSaleReason swig_types[1303] -#define SWIGTYPE_p_FIX__Side swig_types[1304] -#define SWIGTYPE_p_FIX__SideComplianceID swig_types[1305] -#define SWIGTYPE_p_FIX__SideCurrency swig_types[1306] -#define SWIGTYPE_p_FIX__SideExecID swig_types[1307] -#define SWIGTYPE_p_FIX__SideFillStationCd swig_types[1308] -#define SWIGTYPE_p_FIX__SideGrossTradeAmt swig_types[1309] -#define SWIGTYPE_p_FIX__SideLastQty swig_types[1310] -#define SWIGTYPE_p_FIX__SideLiquidityInd swig_types[1311] -#define SWIGTYPE_p_FIX__SideMultiLegReportingType swig_types[1312] -#define SWIGTYPE_p_FIX__SideQty swig_types[1313] -#define SWIGTYPE_p_FIX__SideReasonCd swig_types[1314] -#define SWIGTYPE_p_FIX__SideSettlCurrency swig_types[1315] -#define SWIGTYPE_p_FIX__SideTimeInForce swig_types[1316] -#define SWIGTYPE_p_FIX__SideTradeReportID swig_types[1317] -#define SWIGTYPE_p_FIX__SideTrdRegTimestamp swig_types[1318] -#define SWIGTYPE_p_FIX__SideTrdRegTimestampSrc swig_types[1319] -#define SWIGTYPE_p_FIX__SideTrdRegTimestampType swig_types[1320] -#define SWIGTYPE_p_FIX__SideTrdSubTyp swig_types[1321] -#define SWIGTYPE_p_FIX__SideValue1 swig_types[1322] -#define SWIGTYPE_p_FIX__SideValue2 swig_types[1323] -#define SWIGTYPE_p_FIX__SideValueInd swig_types[1324] -#define SWIGTYPE_p_FIX__Signature swig_types[1325] -#define SWIGTYPE_p_FIX__SignatureLength swig_types[1326] -#define SWIGTYPE_p_FIX__SocketAcceptor swig_types[1327] -#define SWIGTYPE_p_FIX__SocketCloseFailed swig_types[1328] -#define SWIGTYPE_p_FIX__SocketException swig_types[1329] -#define SWIGTYPE_p_FIX__SocketInitiator swig_types[1330] -#define SWIGTYPE_p_FIX__SocketRecvFailed swig_types[1331] -#define SWIGTYPE_p_FIX__SocketSendFailed swig_types[1332] -#define SWIGTYPE_p_FIX__SolicitedFlag swig_types[1333] -#define SWIGTYPE_p_FIX__Spread swig_types[1334] -#define SWIGTYPE_p_FIX__SpreadToBenchmark swig_types[1335] -#define SWIGTYPE_p_FIX__StandInstDbID swig_types[1336] -#define SWIGTYPE_p_FIX__StandInstDbName swig_types[1337] -#define SWIGTYPE_p_FIX__StandInstDbType swig_types[1338] -#define SWIGTYPE_p_FIX__StartCash swig_types[1339] -#define SWIGTYPE_p_FIX__StartDate swig_types[1340] -#define SWIGTYPE_p_FIX__StartMaturityMonthYear swig_types[1341] -#define SWIGTYPE_p_FIX__StartStrikePxRange swig_types[1342] -#define SWIGTYPE_p_FIX__StartTickPriceRange swig_types[1343] -#define SWIGTYPE_p_FIX__StateOrProvinceOfIssue swig_types[1344] -#define SWIGTYPE_p_FIX__StatsType swig_types[1345] -#define SWIGTYPE_p_FIX__StatusText swig_types[1346] -#define SWIGTYPE_p_FIX__StatusValue swig_types[1347] -#define SWIGTYPE_p_FIX__StipulationType swig_types[1348] -#define SWIGTYPE_p_FIX__StipulationValue swig_types[1349] -#define SWIGTYPE_p_FIX__StopPx swig_types[1350] -#define SWIGTYPE_p_FIX__StrategyParameterName swig_types[1351] -#define SWIGTYPE_p_FIX__StrategyParameterType swig_types[1352] -#define SWIGTYPE_p_FIX__StrategyParameterValue swig_types[1353] -#define SWIGTYPE_p_FIX__StreamAsgnAckType swig_types[1354] -#define SWIGTYPE_p_FIX__StreamAsgnRejReason swig_types[1355] -#define SWIGTYPE_p_FIX__StreamAsgnReqID swig_types[1356] -#define SWIGTYPE_p_FIX__StreamAsgnReqType swig_types[1357] -#define SWIGTYPE_p_FIX__StreamAsgnRptID swig_types[1358] -#define SWIGTYPE_p_FIX__StreamAsgnType swig_types[1359] -#define SWIGTYPE_p_FIX__StrikeCurrency swig_types[1360] -#define SWIGTYPE_p_FIX__StrikeExerciseStyle swig_types[1361] -#define SWIGTYPE_p_FIX__StrikeIncrement swig_types[1362] -#define SWIGTYPE_p_FIX__StrikeMultiplier swig_types[1363] -#define SWIGTYPE_p_FIX__StrikePrice swig_types[1364] -#define SWIGTYPE_p_FIX__StrikePriceBoundaryMethod swig_types[1365] -#define SWIGTYPE_p_FIX__StrikePriceBoundaryPrecision swig_types[1366] -#define SWIGTYPE_p_FIX__StrikePriceDeterminationMethod swig_types[1367] -#define SWIGTYPE_p_FIX__StrikeRuleID swig_types[1368] -#define SWIGTYPE_p_FIX__StrikeTime swig_types[1369] -#define SWIGTYPE_p_FIX__StrikeValue swig_types[1370] -#define SWIGTYPE_p_FIX__StringField swig_types[1371] -#define SWIGTYPE_p_FIX__Subject swig_types[1372] -#define SWIGTYPE_p_FIX__SubscriptionRequestType swig_types[1373] -#define SWIGTYPE_p_FIX__SwapPoints swig_types[1374] -#define SWIGTYPE_p_FIX__Symbol swig_types[1375] -#define SWIGTYPE_p_FIX__SymbolSfx swig_types[1376] -#define SWIGTYPE_p_FIX__SynchronizedApplication swig_types[1377] -#define SWIGTYPE_p_FIX__TYPE__Type swig_types[1378] -#define SWIGTYPE_p_FIX__TZTIMEONLY swig_types[1379] -#define SWIGTYPE_p_FIX__TZTIMESTAMP swig_types[1380] -#define SWIGTYPE_p_FIX__TZTransactTime swig_types[1381] -#define SWIGTYPE_p_FIX__TagNotDefinedForMessage swig_types[1382] -#define SWIGTYPE_p_FIX__TagOutOfOrder swig_types[1383] -#define SWIGTYPE_p_FIX__TargetCompID swig_types[1384] -#define SWIGTYPE_p_FIX__TargetLocationID swig_types[1385] -#define SWIGTYPE_p_FIX__TargetPartyID swig_types[1386] -#define SWIGTYPE_p_FIX__TargetPartyIDSource swig_types[1387] -#define SWIGTYPE_p_FIX__TargetPartyRole swig_types[1388] -#define SWIGTYPE_p_FIX__TargetStrategy swig_types[1389] -#define SWIGTYPE_p_FIX__TargetStrategyParameters swig_types[1390] -#define SWIGTYPE_p_FIX__TargetStrategyPerformance swig_types[1391] -#define SWIGTYPE_p_FIX__TargetSubID swig_types[1392] -#define SWIGTYPE_p_FIX__TaxAdvantageType swig_types[1393] -#define SWIGTYPE_p_FIX__TerminationType swig_types[1394] -#define SWIGTYPE_p_FIX__TestMessageIndicator swig_types[1395] -#define SWIGTYPE_p_FIX__TestReqID swig_types[1396] -#define SWIGTYPE_p_FIX__Text swig_types[1397] -#define SWIGTYPE_p_FIX__ThresholdAmount swig_types[1398] -#define SWIGTYPE_p_FIX__TickDirection swig_types[1399] -#define SWIGTYPE_p_FIX__TickIncrement swig_types[1400] -#define SWIGTYPE_p_FIX__TickRuleType swig_types[1401] -#define SWIGTYPE_p_FIX__TierCode swig_types[1402] -#define SWIGTYPE_p_FIX__TimeBracket swig_types[1403] -#define SWIGTYPE_p_FIX__TimeInForce swig_types[1404] -#define SWIGTYPE_p_FIX__TimeToExpiration swig_types[1405] -#define SWIGTYPE_p_FIX__TimeUnit swig_types[1406] -#define SWIGTYPE_p_FIX__TotNoAccQuotes swig_types[1407] -#define SWIGTYPE_p_FIX__TotNoAllocs swig_types[1408] -#define SWIGTYPE_p_FIX__TotNoCxldQuotes swig_types[1409] -#define SWIGTYPE_p_FIX__TotNoFills swig_types[1410] -#define SWIGTYPE_p_FIX__TotNoOrders swig_types[1411] -#define SWIGTYPE_p_FIX__TotNoQuoteEntries swig_types[1412] -#define SWIGTYPE_p_FIX__TotNoRejQuotes swig_types[1413] -#define SWIGTYPE_p_FIX__TotNoRelatedSym swig_types[1414] -#define SWIGTYPE_p_FIX__TotNoSecurityTypes swig_types[1415] -#define SWIGTYPE_p_FIX__TotNoStrikes swig_types[1416] -#define SWIGTYPE_p_FIX__TotNumAssignmentReports swig_types[1417] -#define SWIGTYPE_p_FIX__TotNumReports swig_types[1418] -#define SWIGTYPE_p_FIX__TotNumTradeReports swig_types[1419] -#define SWIGTYPE_p_FIX__TotQuoteEntries swig_types[1420] -#define SWIGTYPE_p_FIX__TotalAccruedInterestAmt swig_types[1421] -#define SWIGTYPE_p_FIX__TotalAffectedOrders swig_types[1422] -#define SWIGTYPE_p_FIX__TotalNetValue swig_types[1423] -#define SWIGTYPE_p_FIX__TotalNumPosReports swig_types[1424] -#define SWIGTYPE_p_FIX__TotalNumSecurities swig_types[1425] -#define SWIGTYPE_p_FIX__TotalNumSecurityTypes swig_types[1426] -#define SWIGTYPE_p_FIX__TotalTakedown swig_types[1427] -#define SWIGTYPE_p_FIX__TotalVolumeTraded swig_types[1428] -#define SWIGTYPE_p_FIX__TotalVolumeTradedDate swig_types[1429] -#define SWIGTYPE_p_FIX__TotalVolumeTradedTime swig_types[1430] -#define SWIGTYPE_p_FIX__TradSesCloseTime swig_types[1431] -#define SWIGTYPE_p_FIX__TradSesEndTime swig_types[1432] -#define SWIGTYPE_p_FIX__TradSesEvent swig_types[1433] -#define SWIGTYPE_p_FIX__TradSesMethod swig_types[1434] -#define SWIGTYPE_p_FIX__TradSesMode swig_types[1435] -#define SWIGTYPE_p_FIX__TradSesOpenTime swig_types[1436] -#define SWIGTYPE_p_FIX__TradSesPreCloseTime swig_types[1437] -#define SWIGTYPE_p_FIX__TradSesReqID swig_types[1438] -#define SWIGTYPE_p_FIX__TradSesStartTime swig_types[1439] -#define SWIGTYPE_p_FIX__TradSesStatus swig_types[1440] -#define SWIGTYPE_p_FIX__TradSesStatusRejReason swig_types[1441] -#define SWIGTYPE_p_FIX__TradSesUpdateAction swig_types[1442] -#define SWIGTYPE_p_FIX__TradeAllocIndicator swig_types[1443] -#define SWIGTYPE_p_FIX__TradeCondition swig_types[1444] -#define SWIGTYPE_p_FIX__TradeDate swig_types[1445] -#define SWIGTYPE_p_FIX__TradeHandlingInstr swig_types[1446] -#define SWIGTYPE_p_FIX__TradeID swig_types[1447] -#define SWIGTYPE_p_FIX__TradeInputDevice swig_types[1448] -#define SWIGTYPE_p_FIX__TradeInputSource swig_types[1449] -#define SWIGTYPE_p_FIX__TradeLegRefID swig_types[1450] -#define SWIGTYPE_p_FIX__TradeLinkID swig_types[1451] -#define SWIGTYPE_p_FIX__TradeOriginationDate swig_types[1452] -#define SWIGTYPE_p_FIX__TradePublishIndicator swig_types[1453] -#define SWIGTYPE_p_FIX__TradeReportID swig_types[1454] -#define SWIGTYPE_p_FIX__TradeReportRefID swig_types[1455] -#define SWIGTYPE_p_FIX__TradeReportRejectReason swig_types[1456] -#define SWIGTYPE_p_FIX__TradeReportTransType swig_types[1457] -#define SWIGTYPE_p_FIX__TradeReportType swig_types[1458] -#define SWIGTYPE_p_FIX__TradeRequestID swig_types[1459] -#define SWIGTYPE_p_FIX__TradeRequestResult swig_types[1460] -#define SWIGTYPE_p_FIX__TradeRequestStatus swig_types[1461] -#define SWIGTYPE_p_FIX__TradeRequestType swig_types[1462] -#define SWIGTYPE_p_FIX__TradeType swig_types[1463] -#define SWIGTYPE_p_FIX__TradeVolume swig_types[1464] -#define SWIGTYPE_p_FIX__TradedFlatSwitch swig_types[1465] -#define SWIGTYPE_p_FIX__TradingCurrency swig_types[1466] -#define SWIGTYPE_p_FIX__TradingReferencePrice swig_types[1467] -#define SWIGTYPE_p_FIX__TradingSessionDesc swig_types[1468] -#define SWIGTYPE_p_FIX__TradingSessionID swig_types[1469] -#define SWIGTYPE_p_FIX__TradingSessionSubID swig_types[1470] -#define SWIGTYPE_p_FIX__TransBkdTime swig_types[1471] -#define SWIGTYPE_p_FIX__TransactTime swig_types[1472] -#define SWIGTYPE_p_FIX__TransferReason swig_types[1473] -#define SWIGTYPE_p_FIX__TrdMatchID swig_types[1474] -#define SWIGTYPE_p_FIX__TrdRegTimestamp swig_types[1475] -#define SWIGTYPE_p_FIX__TrdRegTimestampOrigin swig_types[1476] -#define SWIGTYPE_p_FIX__TrdRegTimestampType swig_types[1477] -#define SWIGTYPE_p_FIX__TrdRepIndicator swig_types[1478] -#define SWIGTYPE_p_FIX__TrdRepPartyRole swig_types[1479] -#define SWIGTYPE_p_FIX__TrdRptStatus swig_types[1480] -#define SWIGTYPE_p_FIX__TrdSubType swig_types[1481] -#define SWIGTYPE_p_FIX__TrdType swig_types[1482] -#define SWIGTYPE_p_FIX__TriggerAction swig_types[1483] -#define SWIGTYPE_p_FIX__TriggerNewPrice swig_types[1484] -#define SWIGTYPE_p_FIX__TriggerNewQty swig_types[1485] -#define SWIGTYPE_p_FIX__TriggerOrderType swig_types[1486] -#define SWIGTYPE_p_FIX__TriggerPrice swig_types[1487] -#define SWIGTYPE_p_FIX__TriggerPriceDirection swig_types[1488] -#define SWIGTYPE_p_FIX__TriggerPriceType swig_types[1489] -#define SWIGTYPE_p_FIX__TriggerPriceTypeScope swig_types[1490] -#define SWIGTYPE_p_FIX__TriggerSecurityDesc swig_types[1491] -#define SWIGTYPE_p_FIX__TriggerSecurityID swig_types[1492] -#define SWIGTYPE_p_FIX__TriggerSecurityIDSource swig_types[1493] -#define SWIGTYPE_p_FIX__TriggerSymbol swig_types[1494] -#define SWIGTYPE_p_FIX__TriggerTradingSessionID swig_types[1495] -#define SWIGTYPE_p_FIX__TriggerTradingSessionSubID swig_types[1496] -#define SWIGTYPE_p_FIX__TriggerType swig_types[1497] -#define SWIGTYPE_p_FIX__URLLink swig_types[1498] -#define SWIGTYPE_p_FIX__UTCDATE swig_types[1499] -#define SWIGTYPE_p_FIX__UTCDATEONLY swig_types[1500] -#define SWIGTYPE_p_FIX__UTCTIMEONLY swig_types[1501] -#define SWIGTYPE_p_FIX__UTCTIMESTAMP swig_types[1502] -#define SWIGTYPE_p_FIX__UnderlyingAdjustedQuantity swig_types[1503] -#define SWIGTYPE_p_FIX__UnderlyingAllocationPercent swig_types[1504] -#define SWIGTYPE_p_FIX__UnderlyingAttachmentPoint swig_types[1505] -#define SWIGTYPE_p_FIX__UnderlyingCFICode swig_types[1506] -#define SWIGTYPE_p_FIX__UnderlyingCPProgram swig_types[1507] -#define SWIGTYPE_p_FIX__UnderlyingCPRegType swig_types[1508] -#define SWIGTYPE_p_FIX__UnderlyingCapValue swig_types[1509] -#define SWIGTYPE_p_FIX__UnderlyingCashAmount swig_types[1510] -#define SWIGTYPE_p_FIX__UnderlyingCashType swig_types[1511] -#define SWIGTYPE_p_FIX__UnderlyingCollectAmount swig_types[1512] -#define SWIGTYPE_p_FIX__UnderlyingContractMultiplier swig_types[1513] -#define SWIGTYPE_p_FIX__UnderlyingContractMultiplierUnit swig_types[1514] -#define SWIGTYPE_p_FIX__UnderlyingCountryOfIssue swig_types[1515] -#define SWIGTYPE_p_FIX__UnderlyingCouponPaymentDate swig_types[1516] -#define SWIGTYPE_p_FIX__UnderlyingCouponRate swig_types[1517] -#define SWIGTYPE_p_FIX__UnderlyingCreditRating swig_types[1518] -#define SWIGTYPE_p_FIX__UnderlyingCurrency swig_types[1519] -#define SWIGTYPE_p_FIX__UnderlyingCurrentValue swig_types[1520] -#define SWIGTYPE_p_FIX__UnderlyingDeliveryAmount swig_types[1521] -#define SWIGTYPE_p_FIX__UnderlyingDetachmentPoint swig_types[1522] -#define SWIGTYPE_p_FIX__UnderlyingDirtyPrice swig_types[1523] -#define SWIGTYPE_p_FIX__UnderlyingEndPrice swig_types[1524] -#define SWIGTYPE_p_FIX__UnderlyingEndValue swig_types[1525] -#define SWIGTYPE_p_FIX__UnderlyingExerciseStyle swig_types[1526] -#define SWIGTYPE_p_FIX__UnderlyingFXRate swig_types[1527] -#define SWIGTYPE_p_FIX__UnderlyingFXRateCalc swig_types[1528] -#define SWIGTYPE_p_FIX__UnderlyingFactor swig_types[1529] -#define SWIGTYPE_p_FIX__UnderlyingFlowScheduleType swig_types[1530] -#define SWIGTYPE_p_FIX__UnderlyingIDSource swig_types[1531] -#define SWIGTYPE_p_FIX__UnderlyingInstrRegistry swig_types[1532] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyID swig_types[1533] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyIDSource swig_types[1534] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyRole swig_types[1535] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubID swig_types[1536] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubIDType swig_types[1537] -#define SWIGTYPE_p_FIX__UnderlyingIssueDate swig_types[1538] -#define SWIGTYPE_p_FIX__UnderlyingIssuer swig_types[1539] -#define SWIGTYPE_p_FIX__UnderlyingLastPx swig_types[1540] -#define SWIGTYPE_p_FIX__UnderlyingLastQty swig_types[1541] -#define SWIGTYPE_p_FIX__UnderlyingLegCFICode swig_types[1542] -#define SWIGTYPE_p_FIX__UnderlyingLegMaturityDate swig_types[1543] -#define SWIGTYPE_p_FIX__UnderlyingLegMaturityMonthYear swig_types[1544] -#define SWIGTYPE_p_FIX__UnderlyingLegMaturityTime swig_types[1545] -#define SWIGTYPE_p_FIX__UnderlyingLegOptAttribute swig_types[1546] -#define SWIGTYPE_p_FIX__UnderlyingLegPutOrCall swig_types[1547] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltID swig_types[1548] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltIDSource swig_types[1549] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityDesc swig_types[1550] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityExchange swig_types[1551] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityID swig_types[1552] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityIDSource swig_types[1553] -#define SWIGTYPE_p_FIX__UnderlyingLegSecuritySubType swig_types[1554] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityType swig_types[1555] -#define SWIGTYPE_p_FIX__UnderlyingLegStrikePrice swig_types[1556] -#define SWIGTYPE_p_FIX__UnderlyingLegSymbol swig_types[1557] -#define SWIGTYPE_p_FIX__UnderlyingLegSymbolSfx swig_types[1558] -#define SWIGTYPE_p_FIX__UnderlyingLocaleOfIssue swig_types[1559] -#define SWIGTYPE_p_FIX__UnderlyingMaturityDate swig_types[1560] -#define SWIGTYPE_p_FIX__UnderlyingMaturityDay swig_types[1561] -#define SWIGTYPE_p_FIX__UnderlyingMaturityMonthYear swig_types[1562] -#define SWIGTYPE_p_FIX__UnderlyingMaturityTime swig_types[1563] -#define SWIGTYPE_p_FIX__UnderlyingNotionalPercentageOutstanding swig_types[1564] -#define SWIGTYPE_p_FIX__UnderlyingOptAttribute swig_types[1565] -#define SWIGTYPE_p_FIX__UnderlyingOriginalNotionalPercentageOutstanding swig_types[1566] -#define SWIGTYPE_p_FIX__UnderlyingPayAmount swig_types[1567] -#define SWIGTYPE_p_FIX__UnderlyingPriceDeterminationMethod swig_types[1568] -#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasure swig_types[1569] -#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasureQty swig_types[1570] -#define SWIGTYPE_p_FIX__UnderlyingProduct swig_types[1571] -#define SWIGTYPE_p_FIX__UnderlyingPutOrCall swig_types[1572] -#define SWIGTYPE_p_FIX__UnderlyingPx swig_types[1573] -#define SWIGTYPE_p_FIX__UnderlyingQty swig_types[1574] -#define SWIGTYPE_p_FIX__UnderlyingRedemptionDate swig_types[1575] -#define SWIGTYPE_p_FIX__UnderlyingRepoCollateralSecurityType swig_types[1576] -#define SWIGTYPE_p_FIX__UnderlyingRepurchaseRate swig_types[1577] -#define SWIGTYPE_p_FIX__UnderlyingRepurchaseTerm swig_types[1578] -#define SWIGTYPE_p_FIX__UnderlyingRestructuringType swig_types[1579] -#define SWIGTYPE_p_FIX__UnderlyingSecurityAltID swig_types[1580] -#define SWIGTYPE_p_FIX__UnderlyingSecurityAltIDSource swig_types[1581] -#define SWIGTYPE_p_FIX__UnderlyingSecurityDesc swig_types[1582] -#define SWIGTYPE_p_FIX__UnderlyingSecurityExchange swig_types[1583] -#define SWIGTYPE_p_FIX__UnderlyingSecurityID swig_types[1584] -#define SWIGTYPE_p_FIX__UnderlyingSecurityIDSource swig_types[1585] -#define SWIGTYPE_p_FIX__UnderlyingSecuritySubType swig_types[1586] -#define SWIGTYPE_p_FIX__UnderlyingSecurityType swig_types[1587] -#define SWIGTYPE_p_FIX__UnderlyingSeniority swig_types[1588] -#define SWIGTYPE_p_FIX__UnderlyingSettlMethod swig_types[1589] -#define SWIGTYPE_p_FIX__UnderlyingSettlPrice swig_types[1590] -#define SWIGTYPE_p_FIX__UnderlyingSettlPriceType swig_types[1591] -#define SWIGTYPE_p_FIX__UnderlyingSettlementDate swig_types[1592] -#define SWIGTYPE_p_FIX__UnderlyingSettlementStatus swig_types[1593] -#define SWIGTYPE_p_FIX__UnderlyingSettlementType swig_types[1594] -#define SWIGTYPE_p_FIX__UnderlyingStartValue swig_types[1595] -#define SWIGTYPE_p_FIX__UnderlyingStateOrProvinceOfIssue swig_types[1596] -#define SWIGTYPE_p_FIX__UnderlyingStipType swig_types[1597] -#define SWIGTYPE_p_FIX__UnderlyingStipValue swig_types[1598] -#define SWIGTYPE_p_FIX__UnderlyingStrikeCurrency swig_types[1599] -#define SWIGTYPE_p_FIX__UnderlyingStrikePrice swig_types[1600] -#define SWIGTYPE_p_FIX__UnderlyingSymbol swig_types[1601] -#define SWIGTYPE_p_FIX__UnderlyingSymbolSfx swig_types[1602] -#define SWIGTYPE_p_FIX__UnderlyingTimeUnit swig_types[1603] -#define SWIGTYPE_p_FIX__UnderlyingTradingSessionID swig_types[1604] -#define SWIGTYPE_p_FIX__UnderlyingTradingSessionSubID swig_types[1605] -#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasure swig_types[1606] -#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasureQty swig_types[1607] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartyID swig_types[1608] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartyIDSource swig_types[1609] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartyRole swig_types[1610] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubID swig_types[1611] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubIDType swig_types[1612] -#define SWIGTYPE_p_FIX__UnitOfMeasure swig_types[1613] -#define SWIGTYPE_p_FIX__UnitOfMeasureQty swig_types[1614] -#define SWIGTYPE_p_FIX__UnsolicitedIndicator swig_types[1615] -#define SWIGTYPE_p_FIX__UnsupportedMessageType swig_types[1616] -#define SWIGTYPE_p_FIX__UnsupportedVersion swig_types[1617] -#define SWIGTYPE_p_FIX__Urgency swig_types[1618] -#define SWIGTYPE_p_FIX__UserRequestID swig_types[1619] -#define SWIGTYPE_p_FIX__UserRequestType swig_types[1620] -#define SWIGTYPE_p_FIX__UserStatus swig_types[1621] -#define SWIGTYPE_p_FIX__UserStatusText swig_types[1622] -#define SWIGTYPE_p_FIX__Username swig_types[1623] -#define SWIGTYPE_p_FIX__UtcDateField swig_types[1624] -#define SWIGTYPE_p_FIX__UtcTimeOnlyField swig_types[1625] -#define SWIGTYPE_p_FIX__UtcTimeStampField swig_types[1626] -#define SWIGTYPE_p_FIX__ValidUntilTime swig_types[1627] -#define SWIGTYPE_p_FIX__ValuationMethod swig_types[1628] -#define SWIGTYPE_p_FIX__ValueOfFutures swig_types[1629] -#define SWIGTYPE_p_FIX__VenueType swig_types[1630] -#define SWIGTYPE_p_FIX__Volatility swig_types[1631] -#define SWIGTYPE_p_FIX__WaveNo swig_types[1632] -#define SWIGTYPE_p_FIX__WorkingIndicator swig_types[1633] -#define SWIGTYPE_p_FIX__WtAverageLiquidity swig_types[1634] -#define SWIGTYPE_p_FIX__XMLDATA swig_types[1635] -#define SWIGTYPE_p_FIX__XmlData swig_types[1636] -#define SWIGTYPE_p_FIX__XmlDataLen swig_types[1637] -#define SWIGTYPE_p_FIX__Yield swig_types[1638] -#define SWIGTYPE_p_FIX__YieldCalcDate swig_types[1639] -#define SWIGTYPE_p_FIX__YieldRedemptionDate swig_types[1640] -#define SWIGTYPE_p_FIX__YieldRedemptionPrice swig_types[1641] -#define SWIGTYPE_p_FIX__YieldRedemptionPriceType swig_types[1642] -#define SWIGTYPE_p_FIX__YieldType swig_types[1643] +#define SWIGTYPE_p_FIX__DataDictionaryBase swig_types[261] +#define SWIGTYPE_p_FIX__DataDictionaryNotFound swig_types[262] +#define SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type swig_types[263] +#define SWIGTYPE_p_FIX__DateOfBirth swig_types[264] +#define SWIGTYPE_p_FIX__DatedDate swig_types[265] +#define SWIGTYPE_p_FIX__DayAvgPx swig_types[266] +#define SWIGTYPE_p_FIX__DayBookingInst swig_types[267] +#define SWIGTYPE_p_FIX__DayCumQty swig_types[268] +#define SWIGTYPE_p_FIX__DayOrderQty swig_types[269] +#define SWIGTYPE_p_FIX__DealingCapacity swig_types[270] +#define SWIGTYPE_p_FIX__DefBidSize swig_types[271] +#define SWIGTYPE_p_FIX__DefOfferSize swig_types[272] +#define SWIGTYPE_p_FIX__DefaultApplExtID swig_types[273] +#define SWIGTYPE_p_FIX__DefaultApplVerID swig_types[274] +#define SWIGTYPE_p_FIX__DefaultCstmApplVerID swig_types[275] +#define SWIGTYPE_p_FIX__DefaultVerIndicator swig_types[276] +#define SWIGTYPE_p_FIX__DeleteReason swig_types[277] +#define SWIGTYPE_p_FIX__DeliverToCompID swig_types[278] +#define SWIGTYPE_p_FIX__DeliverToLocationID swig_types[279] +#define SWIGTYPE_p_FIX__DeliverToSubID swig_types[280] +#define SWIGTYPE_p_FIX__DeliveryDate swig_types[281] +#define SWIGTYPE_p_FIX__DeliveryForm swig_types[282] +#define SWIGTYPE_p_FIX__DeliveryType swig_types[283] +#define SWIGTYPE_p_FIX__DerivFlexProductEligibilityIndicator swig_types[284] +#define SWIGTYPE_p_FIX__DerivativeCFICode swig_types[285] +#define SWIGTYPE_p_FIX__DerivativeCapPrice swig_types[286] +#define SWIGTYPE_p_FIX__DerivativeContractMultiplier swig_types[287] +#define SWIGTYPE_p_FIX__DerivativeContractMultiplierUnit swig_types[288] +#define SWIGTYPE_p_FIX__DerivativeContractSettlMonth swig_types[289] +#define SWIGTYPE_p_FIX__DerivativeCountryOfIssue swig_types[290] +#define SWIGTYPE_p_FIX__DerivativeEncodedIssuer swig_types[291] +#define SWIGTYPE_p_FIX__DerivativeEncodedIssuerLen swig_types[292] +#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDesc swig_types[293] +#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDescLen swig_types[294] +#define SWIGTYPE_p_FIX__DerivativeEventDate swig_types[295] +#define SWIGTYPE_p_FIX__DerivativeEventPx swig_types[296] +#define SWIGTYPE_p_FIX__DerivativeEventText swig_types[297] +#define SWIGTYPE_p_FIX__DerivativeEventTime swig_types[298] +#define SWIGTYPE_p_FIX__DerivativeEventType swig_types[299] +#define SWIGTYPE_p_FIX__DerivativeExerciseStyle swig_types[300] +#define SWIGTYPE_p_FIX__DerivativeFloorPrice swig_types[301] +#define SWIGTYPE_p_FIX__DerivativeFlowScheduleType swig_types[302] +#define SWIGTYPE_p_FIX__DerivativeFuturesValuationMethod swig_types[303] +#define SWIGTYPE_p_FIX__DerivativeInstrAttribType swig_types[304] +#define SWIGTYPE_p_FIX__DerivativeInstrAttribValue swig_types[305] +#define SWIGTYPE_p_FIX__DerivativeInstrRegistry swig_types[306] +#define SWIGTYPE_p_FIX__DerivativeInstrmtAssignmentMethod swig_types[307] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyID swig_types[308] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyIDSource swig_types[309] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyRole swig_types[310] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubID swig_types[311] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubIDType swig_types[312] +#define SWIGTYPE_p_FIX__DerivativeIssueDate swig_types[313] +#define SWIGTYPE_p_FIX__DerivativeIssuer swig_types[314] +#define SWIGTYPE_p_FIX__DerivativeListMethod swig_types[315] +#define SWIGTYPE_p_FIX__DerivativeLocaleOfIssue swig_types[316] +#define SWIGTYPE_p_FIX__DerivativeMaturityDate swig_types[317] +#define SWIGTYPE_p_FIX__DerivativeMaturityMonthYear swig_types[318] +#define SWIGTYPE_p_FIX__DerivativeMaturityTime swig_types[319] +#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrement swig_types[320] +#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrementAmount swig_types[321] +#define SWIGTYPE_p_FIX__DerivativeNTPositionLimit swig_types[322] +#define SWIGTYPE_p_FIX__DerivativeOptAttribute swig_types[323] +#define SWIGTYPE_p_FIX__DerivativeOptPayAmount swig_types[324] +#define SWIGTYPE_p_FIX__DerivativePositionLimit swig_types[325] +#define SWIGTYPE_p_FIX__DerivativePriceQuoteMethod swig_types[326] +#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasure swig_types[327] +#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasureQty swig_types[328] +#define SWIGTYPE_p_FIX__DerivativeProduct swig_types[329] +#define SWIGTYPE_p_FIX__DerivativeProductComplex swig_types[330] +#define SWIGTYPE_p_FIX__DerivativePutOrCall swig_types[331] +#define SWIGTYPE_p_FIX__DerivativeSecurityAltID swig_types[332] +#define SWIGTYPE_p_FIX__DerivativeSecurityAltIDSource swig_types[333] +#define SWIGTYPE_p_FIX__DerivativeSecurityDesc swig_types[334] +#define SWIGTYPE_p_FIX__DerivativeSecurityExchange swig_types[335] +#define SWIGTYPE_p_FIX__DerivativeSecurityGroup swig_types[336] +#define SWIGTYPE_p_FIX__DerivativeSecurityID swig_types[337] +#define SWIGTYPE_p_FIX__DerivativeSecurityIDSource swig_types[338] +#define SWIGTYPE_p_FIX__DerivativeSecurityStatus swig_types[339] +#define SWIGTYPE_p_FIX__DerivativeSecuritySubType swig_types[340] +#define SWIGTYPE_p_FIX__DerivativeSecurityType swig_types[341] +#define SWIGTYPE_p_FIX__DerivativeSecurityXML swig_types[342] +#define SWIGTYPE_p_FIX__DerivativeSecurityXMLLen swig_types[343] +#define SWIGTYPE_p_FIX__DerivativeSecurityXMLSchema swig_types[344] +#define SWIGTYPE_p_FIX__DerivativeSettlMethod swig_types[345] +#define SWIGTYPE_p_FIX__DerivativeSettleOnOpenFlag swig_types[346] +#define SWIGTYPE_p_FIX__DerivativeStateOrProvinceOfIssue swig_types[347] +#define SWIGTYPE_p_FIX__DerivativeStrikeCurrency swig_types[348] +#define SWIGTYPE_p_FIX__DerivativeStrikeMultiplier swig_types[349] +#define SWIGTYPE_p_FIX__DerivativeStrikePrice swig_types[350] +#define SWIGTYPE_p_FIX__DerivativeStrikeValue swig_types[351] +#define SWIGTYPE_p_FIX__DerivativeSymbol swig_types[352] +#define SWIGTYPE_p_FIX__DerivativeSymbolSfx swig_types[353] +#define SWIGTYPE_p_FIX__DerivativeTimeUnit swig_types[354] +#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasure swig_types[355] +#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasureQty swig_types[356] +#define SWIGTYPE_p_FIX__DerivativeValuationMethod swig_types[357] +#define SWIGTYPE_p_FIX__Designation swig_types[358] +#define SWIGTYPE_p_FIX__DeskID swig_types[359] +#define SWIGTYPE_p_FIX__DeskOrderHandlingInst swig_types[360] +#define SWIGTYPE_p_FIX__DeskType swig_types[361] +#define SWIGTYPE_p_FIX__DeskTypeSource swig_types[362] +#define SWIGTYPE_p_FIX__DetachmentPoint swig_types[363] +#define SWIGTYPE_p_FIX__Dictionary swig_types[364] +#define SWIGTYPE_p_FIX__Dictionary__Data__const_iterator swig_types[365] +#define SWIGTYPE_p_FIX__DiscretionInst swig_types[366] +#define SWIGTYPE_p_FIX__DiscretionLimitType swig_types[367] +#define SWIGTYPE_p_FIX__DiscretionMoveType swig_types[368] +#define SWIGTYPE_p_FIX__DiscretionOffset swig_types[369] +#define SWIGTYPE_p_FIX__DiscretionOffsetType swig_types[370] +#define SWIGTYPE_p_FIX__DiscretionOffsetValue swig_types[371] +#define SWIGTYPE_p_FIX__DiscretionPrice swig_types[372] +#define SWIGTYPE_p_FIX__DiscretionRoundDirection swig_types[373] +#define SWIGTYPE_p_FIX__DiscretionScope swig_types[374] +#define SWIGTYPE_p_FIX__DisplayHighQty swig_types[375] +#define SWIGTYPE_p_FIX__DisplayLowQty swig_types[376] +#define SWIGTYPE_p_FIX__DisplayMethod swig_types[377] +#define SWIGTYPE_p_FIX__DisplayMinIncr swig_types[378] +#define SWIGTYPE_p_FIX__DisplayQty swig_types[379] +#define SWIGTYPE_p_FIX__DisplayWhen swig_types[380] +#define SWIGTYPE_p_FIX__DistribPaymentMethod swig_types[381] +#define SWIGTYPE_p_FIX__DistribPercentage swig_types[382] +#define SWIGTYPE_p_FIX__DividendYield swig_types[383] +#define SWIGTYPE_p_FIX__DlvyInst swig_types[384] +#define SWIGTYPE_p_FIX__DlvyInstType swig_types[385] +#define SWIGTYPE_p_FIX__DoNotSend swig_types[386] +#define SWIGTYPE_p_FIX__DoubleField swig_types[387] +#define SWIGTYPE_p_FIX__DueToRelated swig_types[388] +#define SWIGTYPE_p_FIX__DuplicateFieldNumber swig_types[389] +#define SWIGTYPE_p_FIX__EFPTrackingError swig_types[390] +#define SWIGTYPE_p_FIX__EXCHANGE swig_types[391] +#define SWIGTYPE_p_FIX__EffectiveTime swig_types[392] +#define SWIGTYPE_p_FIX__EmailThreadID swig_types[393] +#define SWIGTYPE_p_FIX__EmailType swig_types[394] +#define SWIGTYPE_p_FIX__EncodedAllocText swig_types[395] +#define SWIGTYPE_p_FIX__EncodedAllocTextLen swig_types[396] +#define SWIGTYPE_p_FIX__EncodedHeadline swig_types[397] +#define SWIGTYPE_p_FIX__EncodedHeadlineLen swig_types[398] +#define SWIGTYPE_p_FIX__EncodedIssuer swig_types[399] +#define SWIGTYPE_p_FIX__EncodedIssuerLen swig_types[400] +#define SWIGTYPE_p_FIX__EncodedLegIssuer swig_types[401] +#define SWIGTYPE_p_FIX__EncodedLegIssuerLen swig_types[402] +#define SWIGTYPE_p_FIX__EncodedLegSecurityDesc swig_types[403] +#define SWIGTYPE_p_FIX__EncodedLegSecurityDescLen swig_types[404] +#define SWIGTYPE_p_FIX__EncodedListExecInst swig_types[405] +#define SWIGTYPE_p_FIX__EncodedListExecInstLen swig_types[406] +#define SWIGTYPE_p_FIX__EncodedListStatusText swig_types[407] +#define SWIGTYPE_p_FIX__EncodedListStatusTextLen swig_types[408] +#define SWIGTYPE_p_FIX__EncodedMktSegmDesc swig_types[409] +#define SWIGTYPE_p_FIX__EncodedMktSegmDescLen swig_types[410] +#define SWIGTYPE_p_FIX__EncodedSecurityDesc swig_types[411] +#define SWIGTYPE_p_FIX__EncodedSecurityDescLen swig_types[412] +#define SWIGTYPE_p_FIX__EncodedSecurityListDesc swig_types[413] +#define SWIGTYPE_p_FIX__EncodedSecurityListDescLen swig_types[414] +#define SWIGTYPE_p_FIX__EncodedSubject swig_types[415] +#define SWIGTYPE_p_FIX__EncodedSubjectLen swig_types[416] +#define SWIGTYPE_p_FIX__EncodedText swig_types[417] +#define SWIGTYPE_p_FIX__EncodedTextLen swig_types[418] +#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuer swig_types[419] +#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuerLen swig_types[420] +#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDesc swig_types[421] +#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDescLen swig_types[422] +#define SWIGTYPE_p_FIX__EncryptMethod swig_types[423] +#define SWIGTYPE_p_FIX__EncryptedNewPassword swig_types[424] +#define SWIGTYPE_p_FIX__EncryptedNewPasswordLen swig_types[425] +#define SWIGTYPE_p_FIX__EncryptedPassword swig_types[426] +#define SWIGTYPE_p_FIX__EncryptedPasswordLen swig_types[427] +#define SWIGTYPE_p_FIX__EncryptedPasswordMethod swig_types[428] +#define SWIGTYPE_p_FIX__EndAccruedInterestAmt swig_types[429] +#define SWIGTYPE_p_FIX__EndCash swig_types[430] +#define SWIGTYPE_p_FIX__EndDate swig_types[431] +#define SWIGTYPE_p_FIX__EndMaturityMonthYear swig_types[432] +#define SWIGTYPE_p_FIX__EndSeqNo swig_types[433] +#define SWIGTYPE_p_FIX__EndStrikePxRange swig_types[434] +#define SWIGTYPE_p_FIX__EndTickPriceRange swig_types[435] +#define SWIGTYPE_p_FIX__EventDate swig_types[436] +#define SWIGTYPE_p_FIX__EventPx swig_types[437] +#define SWIGTYPE_p_FIX__EventText swig_types[438] +#define SWIGTYPE_p_FIX__EventTime swig_types[439] +#define SWIGTYPE_p_FIX__EventType swig_types[440] +#define SWIGTYPE_p_FIX__ExDate swig_types[441] +#define SWIGTYPE_p_FIX__ExDestination swig_types[442] +#define SWIGTYPE_p_FIX__ExDestinationIDSource swig_types[443] +#define SWIGTYPE_p_FIX__Exception swig_types[444] +#define SWIGTYPE_p_FIX__ExchangeForPhysical swig_types[445] +#define SWIGTYPE_p_FIX__ExchangeRule swig_types[446] +#define SWIGTYPE_p_FIX__ExchangeSpecialInstructions swig_types[447] +#define SWIGTYPE_p_FIX__ExecAckStatus swig_types[448] +#define SWIGTYPE_p_FIX__ExecBroker swig_types[449] +#define SWIGTYPE_p_FIX__ExecID swig_types[450] +#define SWIGTYPE_p_FIX__ExecInst swig_types[451] +#define SWIGTYPE_p_FIX__ExecInstValue swig_types[452] +#define SWIGTYPE_p_FIX__ExecPriceAdjustment swig_types[453] +#define SWIGTYPE_p_FIX__ExecPriceType swig_types[454] +#define SWIGTYPE_p_FIX__ExecRefID swig_types[455] +#define SWIGTYPE_p_FIX__ExecRestatementReason swig_types[456] +#define SWIGTYPE_p_FIX__ExecTransType swig_types[457] +#define SWIGTYPE_p_FIX__ExecType swig_types[458] +#define SWIGTYPE_p_FIX__ExecValuationPoint swig_types[459] +#define SWIGTYPE_p_FIX__ExerciseMethod swig_types[460] +#define SWIGTYPE_p_FIX__ExerciseStyle swig_types[461] +#define SWIGTYPE_p_FIX__ExpQty swig_types[462] +#define SWIGTYPE_p_FIX__ExpType swig_types[463] +#define SWIGTYPE_p_FIX__ExpirationCycle swig_types[464] +#define SWIGTYPE_p_FIX__ExpirationQtyType swig_types[465] +#define SWIGTYPE_p_FIX__ExpireDate swig_types[466] +#define SWIGTYPE_p_FIX__ExpireTime swig_types[467] +#define SWIGTYPE_p_FIX__FLOAT swig_types[468] +#define SWIGTYPE_p_FIX__Factor swig_types[469] +#define SWIGTYPE_p_FIX__FairValue swig_types[470] +#define SWIGTYPE_p_FIX__FeeMultiplier swig_types[471] +#define SWIGTYPE_p_FIX__FieldBase swig_types[472] +#define SWIGTYPE_p_FIX__FieldConvertError swig_types[473] +#define SWIGTYPE_p_FIX__FieldMap swig_types[474] +#define SWIGTYPE_p_FIX__FieldMap__Groups__const_iterator swig_types[475] +#define SWIGTYPE_p_FIX__FieldNotFound swig_types[476] +#define SWIGTYPE_p_FIX__FieldTag swig_types[477] +#define SWIGTYPE_p_FIX__FileLog swig_types[478] +#define SWIGTYPE_p_FIX__FileLogFactory swig_types[479] +#define SWIGTYPE_p_FIX__FileStore swig_types[480] +#define SWIGTYPE_p_FIX__FileStoreFactory swig_types[481] +#define SWIGTYPE_p_FIX__FillExecID swig_types[482] +#define SWIGTYPE_p_FIX__FillLiquidityInd swig_types[483] +#define SWIGTYPE_p_FIX__FillPx swig_types[484] +#define SWIGTYPE_p_FIX__FillQty swig_types[485] +#define SWIGTYPE_p_FIX__FinancialStatus swig_types[486] +#define SWIGTYPE_p_FIX__FirmTradeID swig_types[487] +#define SWIGTYPE_p_FIX__FirstPx swig_types[488] +#define SWIGTYPE_p_FIX__FlexProductEligibilityIndicator swig_types[489] +#define SWIGTYPE_p_FIX__FlexibleIndicator swig_types[490] +#define SWIGTYPE_p_FIX__FloorPrice swig_types[491] +#define SWIGTYPE_p_FIX__FlowScheduleType swig_types[492] +#define SWIGTYPE_p_FIX__ForexReq swig_types[493] +#define SWIGTYPE_p_FIX__FundRenewWaiv swig_types[494] +#define SWIGTYPE_p_FIX__FutSettDate swig_types[495] +#define SWIGTYPE_p_FIX__FutSettDate2 swig_types[496] +#define SWIGTYPE_p_FIX__FuturesValuationMethod swig_types[497] +#define SWIGTYPE_p_FIX__GTBookingInst swig_types[498] +#define SWIGTYPE_p_FIX__GapFillFlag swig_types[499] +#define SWIGTYPE_p_FIX__GrossTradeAmt swig_types[500] +#define SWIGTYPE_p_FIX__Group swig_types[501] +#define SWIGTYPE_p_FIX__HaltReasonChar swig_types[502] +#define SWIGTYPE_p_FIX__HaltReasonInt swig_types[503] +#define SWIGTYPE_p_FIX__HandlInst swig_types[504] +#define SWIGTYPE_p_FIX__Headline swig_types[505] +#define SWIGTYPE_p_FIX__HeartBtInt swig_types[506] +#define SWIGTYPE_p_FIX__HighLimitPrice swig_types[507] +#define SWIGTYPE_p_FIX__HighPx swig_types[508] +#define SWIGTYPE_p_FIX__HopCompID swig_types[509] +#define SWIGTYPE_p_FIX__HopRefID swig_types[510] +#define SWIGTYPE_p_FIX__HopSendingTime swig_types[511] +#define SWIGTYPE_p_FIX__HostCrossID swig_types[512] +#define SWIGTYPE_p_FIX__IDSource swig_types[513] +#define SWIGTYPE_p_FIX__INT swig_types[514] +#define SWIGTYPE_p_FIX__IOException swig_types[515] +#define SWIGTYPE_p_FIX__IOIID swig_types[516] +#define SWIGTYPE_p_FIX__IOINaturalFlag swig_types[517] +#define SWIGTYPE_p_FIX__IOIOthSvc swig_types[518] +#define SWIGTYPE_p_FIX__IOIQltyInd swig_types[519] +#define SWIGTYPE_p_FIX__IOIQty swig_types[520] +#define SWIGTYPE_p_FIX__IOIQualifier swig_types[521] +#define SWIGTYPE_p_FIX__IOIRefID swig_types[522] +#define SWIGTYPE_p_FIX__IOIShares swig_types[523] +#define SWIGTYPE_p_FIX__IOITransType swig_types[524] +#define SWIGTYPE_p_FIX__IOIid swig_types[525] +#define SWIGTYPE_p_FIX__ImpliedMarketIndicator swig_types[526] +#define SWIGTYPE_p_FIX__InViewOfCommon swig_types[527] +#define SWIGTYPE_p_FIX__IncTaxInd swig_types[528] +#define SWIGTYPE_p_FIX__IncorrectDataFormat swig_types[529] +#define SWIGTYPE_p_FIX__IncorrectMessageStructure swig_types[530] +#define SWIGTYPE_p_FIX__IncorrectTagValue swig_types[531] +#define SWIGTYPE_p_FIX__IndividualAllocID swig_types[532] +#define SWIGTYPE_p_FIX__IndividualAllocRejCode swig_types[533] +#define SWIGTYPE_p_FIX__IndividualAllocType swig_types[534] +#define SWIGTYPE_p_FIX__Initiator swig_types[535] +#define SWIGTYPE_p_FIX__InputSource swig_types[536] +#define SWIGTYPE_p_FIX__InstrAttribType swig_types[537] +#define SWIGTYPE_p_FIX__InstrAttribValue swig_types[538] +#define SWIGTYPE_p_FIX__InstrRegistry swig_types[539] +#define SWIGTYPE_p_FIX__InstrmtAssignmentMethod swig_types[540] +#define SWIGTYPE_p_FIX__InstrumentPartyID swig_types[541] +#define SWIGTYPE_p_FIX__InstrumentPartyIDSource swig_types[542] +#define SWIGTYPE_p_FIX__InstrumentPartyRole swig_types[543] +#define SWIGTYPE_p_FIX__InstrumentPartySubID swig_types[544] +#define SWIGTYPE_p_FIX__InstrumentPartySubIDType swig_types[545] +#define SWIGTYPE_p_FIX__IntField swig_types[546] +#define SWIGTYPE_p_FIX__InterestAccrualDate swig_types[547] +#define SWIGTYPE_p_FIX__InterestAtMaturity swig_types[548] +#define SWIGTYPE_p_FIX__InvalidMessage swig_types[549] +#define SWIGTYPE_p_FIX__InvalidMessageType swig_types[550] +#define SWIGTYPE_p_FIX__InvalidTagNumber swig_types[551] +#define SWIGTYPE_p_FIX__InvestorCountryOfResidence swig_types[552] +#define SWIGTYPE_p_FIX__IssueDate swig_types[553] +#define SWIGTYPE_p_FIX__Issuer swig_types[554] +#define SWIGTYPE_p_FIX__LANGUAGE swig_types[555] +#define SWIGTYPE_p_FIX__LENGTH swig_types[556] +#define SWIGTYPE_p_FIX__LOCALMKTDATE swig_types[557] +#define SWIGTYPE_p_FIX__LanguageCode swig_types[558] +#define SWIGTYPE_p_FIX__LastCapacity swig_types[559] +#define SWIGTYPE_p_FIX__LastForwardPoints swig_types[560] +#define SWIGTYPE_p_FIX__LastForwardPoints2 swig_types[561] +#define SWIGTYPE_p_FIX__LastFragment swig_types[562] +#define SWIGTYPE_p_FIX__LastLiquidityInd swig_types[563] +#define SWIGTYPE_p_FIX__LastMkt swig_types[564] +#define SWIGTYPE_p_FIX__LastMsgSeqNumProcessed swig_types[565] +#define SWIGTYPE_p_FIX__LastNetworkResponseID swig_types[566] +#define SWIGTYPE_p_FIX__LastParPx swig_types[567] +#define SWIGTYPE_p_FIX__LastPx swig_types[568] +#define SWIGTYPE_p_FIX__LastQty swig_types[569] +#define SWIGTYPE_p_FIX__LastRptRequested swig_types[570] +#define SWIGTYPE_p_FIX__LastShares swig_types[571] +#define SWIGTYPE_p_FIX__LastSpotRate swig_types[572] +#define SWIGTYPE_p_FIX__LastSwapPoints swig_types[573] +#define SWIGTYPE_p_FIX__LastUpdateTime swig_types[574] +#define SWIGTYPE_p_FIX__LateIndicator swig_types[575] +#define SWIGTYPE_p_FIX__LeavesQty swig_types[576] +#define SWIGTYPE_p_FIX__LegAllocAccount swig_types[577] +#define SWIGTYPE_p_FIX__LegAllocAcctIDSource swig_types[578] +#define SWIGTYPE_p_FIX__LegAllocID swig_types[579] +#define SWIGTYPE_p_FIX__LegAllocQty swig_types[580] +#define SWIGTYPE_p_FIX__LegAllocSettlCurrency swig_types[581] +#define SWIGTYPE_p_FIX__LegBenchmarkCurveCurrency swig_types[582] +#define SWIGTYPE_p_FIX__LegBenchmarkCurveName swig_types[583] +#define SWIGTYPE_p_FIX__LegBenchmarkCurvePoint swig_types[584] +#define SWIGTYPE_p_FIX__LegBenchmarkPrice swig_types[585] +#define SWIGTYPE_p_FIX__LegBenchmarkPriceType swig_types[586] +#define SWIGTYPE_p_FIX__LegBidForwardPoints swig_types[587] +#define SWIGTYPE_p_FIX__LegBidPx swig_types[588] +#define SWIGTYPE_p_FIX__LegCFICode swig_types[589] +#define SWIGTYPE_p_FIX__LegCalculatedCcyLastQty swig_types[590] +#define SWIGTYPE_p_FIX__LegContractMultiplier swig_types[591] +#define SWIGTYPE_p_FIX__LegContractMultiplierUnit swig_types[592] +#define SWIGTYPE_p_FIX__LegContractSettlMonth swig_types[593] +#define SWIGTYPE_p_FIX__LegCountryOfIssue swig_types[594] +#define SWIGTYPE_p_FIX__LegCouponPaymentDate swig_types[595] +#define SWIGTYPE_p_FIX__LegCouponRate swig_types[596] +#define SWIGTYPE_p_FIX__LegCoveredOrUncovered swig_types[597] +#define SWIGTYPE_p_FIX__LegCreditRating swig_types[598] +#define SWIGTYPE_p_FIX__LegCurrency swig_types[599] +#define SWIGTYPE_p_FIX__LegCurrencyRatio swig_types[600] +#define SWIGTYPE_p_FIX__LegDatedDate swig_types[601] +#define SWIGTYPE_p_FIX__LegDividendYield swig_types[602] +#define SWIGTYPE_p_FIX__LegExecInst swig_types[603] +#define SWIGTYPE_p_FIX__LegExerciseStyle swig_types[604] +#define SWIGTYPE_p_FIX__LegFactor swig_types[605] +#define SWIGTYPE_p_FIX__LegFlowScheduleType swig_types[606] +#define SWIGTYPE_p_FIX__LegFutSettDate swig_types[607] +#define SWIGTYPE_p_FIX__LegGrossTradeAmt swig_types[608] +#define SWIGTYPE_p_FIX__LegIOIQty swig_types[609] +#define SWIGTYPE_p_FIX__LegIndividualAllocID swig_types[610] +#define SWIGTYPE_p_FIX__LegInstrRegistry swig_types[611] +#define SWIGTYPE_p_FIX__LegInterestAccrualDate swig_types[612] +#define SWIGTYPE_p_FIX__LegIssueDate swig_types[613] +#define SWIGTYPE_p_FIX__LegIssuer swig_types[614] +#define SWIGTYPE_p_FIX__LegLastForwardPoints swig_types[615] +#define SWIGTYPE_p_FIX__LegLastPx swig_types[616] +#define SWIGTYPE_p_FIX__LegLastQty swig_types[617] +#define SWIGTYPE_p_FIX__LegLocaleOfIssue swig_types[618] +#define SWIGTYPE_p_FIX__LegMaturityDate swig_types[619] +#define SWIGTYPE_p_FIX__LegMaturityMonthYear swig_types[620] +#define SWIGTYPE_p_FIX__LegMaturityTime swig_types[621] +#define SWIGTYPE_p_FIX__LegNumber swig_types[622] +#define SWIGTYPE_p_FIX__LegOfferForwardPoints swig_types[623] +#define SWIGTYPE_p_FIX__LegOfferPx swig_types[624] +#define SWIGTYPE_p_FIX__LegOptAttribute swig_types[625] +#define SWIGTYPE_p_FIX__LegOptionRatio swig_types[626] +#define SWIGTYPE_p_FIX__LegOrderQty swig_types[627] +#define SWIGTYPE_p_FIX__LegPool swig_types[628] +#define SWIGTYPE_p_FIX__LegPositionEffect swig_types[629] +#define SWIGTYPE_p_FIX__LegPrice swig_types[630] +#define SWIGTYPE_p_FIX__LegPriceType swig_types[631] +#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasure swig_types[632] +#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasureQty swig_types[633] +#define SWIGTYPE_p_FIX__LegProduct swig_types[634] +#define SWIGTYPE_p_FIX__LegPutOrCall swig_types[635] +#define SWIGTYPE_p_FIX__LegQty swig_types[636] +#define SWIGTYPE_p_FIX__LegRatioQty swig_types[637] +#define SWIGTYPE_p_FIX__LegRedemptionDate swig_types[638] +#define SWIGTYPE_p_FIX__LegRefID swig_types[639] +#define SWIGTYPE_p_FIX__LegRepoCollateralSecurityType swig_types[640] +#define SWIGTYPE_p_FIX__LegReportID swig_types[641] +#define SWIGTYPE_p_FIX__LegRepurchaseRate swig_types[642] +#define SWIGTYPE_p_FIX__LegRepurchaseTerm swig_types[643] +#define SWIGTYPE_p_FIX__LegSecurityAltID swig_types[644] +#define SWIGTYPE_p_FIX__LegSecurityAltIDSource swig_types[645] +#define SWIGTYPE_p_FIX__LegSecurityDesc swig_types[646] +#define SWIGTYPE_p_FIX__LegSecurityExchange swig_types[647] +#define SWIGTYPE_p_FIX__LegSecurityID swig_types[648] +#define SWIGTYPE_p_FIX__LegSecurityIDSource swig_types[649] +#define SWIGTYPE_p_FIX__LegSecuritySubType swig_types[650] +#define SWIGTYPE_p_FIX__LegSecurityType swig_types[651] +#define SWIGTYPE_p_FIX__LegSettlCurrency swig_types[652] +#define SWIGTYPE_p_FIX__LegSettlDate swig_types[653] +#define SWIGTYPE_p_FIX__LegSettlType swig_types[654] +#define SWIGTYPE_p_FIX__LegSettlmntTyp swig_types[655] +#define SWIGTYPE_p_FIX__LegSide swig_types[656] +#define SWIGTYPE_p_FIX__LegStateOrProvinceOfIssue swig_types[657] +#define SWIGTYPE_p_FIX__LegStipulationType swig_types[658] +#define SWIGTYPE_p_FIX__LegStipulationValue swig_types[659] +#define SWIGTYPE_p_FIX__LegStrikeCurrency swig_types[660] +#define SWIGTYPE_p_FIX__LegStrikePrice swig_types[661] +#define SWIGTYPE_p_FIX__LegSwapType swig_types[662] +#define SWIGTYPE_p_FIX__LegSymbol swig_types[663] +#define SWIGTYPE_p_FIX__LegSymbolSfx swig_types[664] +#define SWIGTYPE_p_FIX__LegTimeUnit swig_types[665] +#define SWIGTYPE_p_FIX__LegUnitOfMeasure swig_types[666] +#define SWIGTYPE_p_FIX__LegUnitOfMeasureQty swig_types[667] +#define SWIGTYPE_p_FIX__LegVolatility swig_types[668] +#define SWIGTYPE_p_FIX__LegalConfirm swig_types[669] +#define SWIGTYPE_p_FIX__LinesOfText swig_types[670] +#define SWIGTYPE_p_FIX__LiquidityIndType swig_types[671] +#define SWIGTYPE_p_FIX__LiquidityNumSecurities swig_types[672] +#define SWIGTYPE_p_FIX__LiquidityPctHigh swig_types[673] +#define SWIGTYPE_p_FIX__LiquidityPctLow swig_types[674] +#define SWIGTYPE_p_FIX__LiquidityValue swig_types[675] +#define SWIGTYPE_p_FIX__ListExecInst swig_types[676] +#define SWIGTYPE_p_FIX__ListExecInstType swig_types[677] +#define SWIGTYPE_p_FIX__ListID swig_types[678] +#define SWIGTYPE_p_FIX__ListMethod swig_types[679] +#define SWIGTYPE_p_FIX__ListName swig_types[680] +#define SWIGTYPE_p_FIX__ListNoOrds swig_types[681] +#define SWIGTYPE_p_FIX__ListOrderStatus swig_types[682] +#define SWIGTYPE_p_FIX__ListRejectReason swig_types[683] +#define SWIGTYPE_p_FIX__ListSeqNo swig_types[684] +#define SWIGTYPE_p_FIX__ListStatusText swig_types[685] +#define SWIGTYPE_p_FIX__ListStatusType swig_types[686] +#define SWIGTYPE_p_FIX__ListUpdateAction swig_types[687] +#define SWIGTYPE_p_FIX__LocaleOfIssue swig_types[688] +#define SWIGTYPE_p_FIX__LocateReqd swig_types[689] +#define SWIGTYPE_p_FIX__LocationID swig_types[690] +#define SWIGTYPE_p_FIX__Log swig_types[691] +#define SWIGTYPE_p_FIX__LogFactory swig_types[692] +#define SWIGTYPE_p_FIX__LongQty swig_types[693] +#define SWIGTYPE_p_FIX__LotType swig_types[694] +#define SWIGTYPE_p_FIX__LowLimitPrice swig_types[695] +#define SWIGTYPE_p_FIX__LowPx swig_types[696] +#define SWIGTYPE_p_FIX__MDBookType swig_types[697] +#define SWIGTYPE_p_FIX__MDEntryBuyer swig_types[698] +#define SWIGTYPE_p_FIX__MDEntryDate swig_types[699] +#define SWIGTYPE_p_FIX__MDEntryForwardPoints swig_types[700] +#define SWIGTYPE_p_FIX__MDEntryID swig_types[701] +#define SWIGTYPE_p_FIX__MDEntryOriginator swig_types[702] +#define SWIGTYPE_p_FIX__MDEntryPositionNo swig_types[703] +#define SWIGTYPE_p_FIX__MDEntryPx swig_types[704] +#define SWIGTYPE_p_FIX__MDEntryRefID swig_types[705] +#define SWIGTYPE_p_FIX__MDEntrySeller swig_types[706] +#define SWIGTYPE_p_FIX__MDEntrySize swig_types[707] +#define SWIGTYPE_p_FIX__MDEntrySpotRate swig_types[708] +#define SWIGTYPE_p_FIX__MDEntryTime swig_types[709] +#define SWIGTYPE_p_FIX__MDEntryType swig_types[710] +#define SWIGTYPE_p_FIX__MDFeedType swig_types[711] +#define SWIGTYPE_p_FIX__MDImplicitDelete swig_types[712] +#define SWIGTYPE_p_FIX__MDMkt swig_types[713] +#define SWIGTYPE_p_FIX__MDOriginType swig_types[714] +#define SWIGTYPE_p_FIX__MDPriceLevel swig_types[715] +#define SWIGTYPE_p_FIX__MDQuoteType swig_types[716] +#define SWIGTYPE_p_FIX__MDReportID swig_types[717] +#define SWIGTYPE_p_FIX__MDReqID swig_types[718] +#define SWIGTYPE_p_FIX__MDReqRejReason swig_types[719] +#define SWIGTYPE_p_FIX__MDSecSize swig_types[720] +#define SWIGTYPE_p_FIX__MDSecSizeType swig_types[721] +#define SWIGTYPE_p_FIX__MDStreamID swig_types[722] +#define SWIGTYPE_p_FIX__MDSubBookType swig_types[723] +#define SWIGTYPE_p_FIX__MDUpdateAction swig_types[724] +#define SWIGTYPE_p_FIX__MDUpdateType swig_types[725] +#define SWIGTYPE_p_FIX__MONTHYEAR swig_types[726] +#define SWIGTYPE_p_FIX__MULTIPLECHARVALUE swig_types[727] +#define SWIGTYPE_p_FIX__MULTIPLESTRINGVALUE swig_types[728] +#define SWIGTYPE_p_FIX__MULTIPLEVALUESTRING swig_types[729] +#define SWIGTYPE_p_FIX__MailingDtls swig_types[730] +#define SWIGTYPE_p_FIX__MailingInst swig_types[731] +#define SWIGTYPE_p_FIX__ManualOrderIndicator swig_types[732] +#define SWIGTYPE_p_FIX__MarginExcess swig_types[733] +#define SWIGTYPE_p_FIX__MarginRatio swig_types[734] +#define SWIGTYPE_p_FIX__MarketDepth swig_types[735] +#define SWIGTYPE_p_FIX__MarketID swig_types[736] +#define SWIGTYPE_p_FIX__MarketReportID swig_types[737] +#define SWIGTYPE_p_FIX__MarketReqID swig_types[738] +#define SWIGTYPE_p_FIX__MarketSegmentDesc swig_types[739] +#define SWIGTYPE_p_FIX__MarketSegmentID swig_types[740] +#define SWIGTYPE_p_FIX__MarketUpdateAction swig_types[741] +#define SWIGTYPE_p_FIX__MassActionRejectReason swig_types[742] +#define SWIGTYPE_p_FIX__MassActionReportID swig_types[743] +#define SWIGTYPE_p_FIX__MassActionResponse swig_types[744] +#define SWIGTYPE_p_FIX__MassActionScope swig_types[745] +#define SWIGTYPE_p_FIX__MassActionType swig_types[746] +#define SWIGTYPE_p_FIX__MassCancelRejectReason swig_types[747] +#define SWIGTYPE_p_FIX__MassCancelRequestType swig_types[748] +#define SWIGTYPE_p_FIX__MassCancelResponse swig_types[749] +#define SWIGTYPE_p_FIX__MassStatusReqID swig_types[750] +#define SWIGTYPE_p_FIX__MassStatusReqType swig_types[751] +#define SWIGTYPE_p_FIX__MatchAlgorithm swig_types[752] +#define SWIGTYPE_p_FIX__MatchIncrement swig_types[753] +#define SWIGTYPE_p_FIX__MatchStatus swig_types[754] +#define SWIGTYPE_p_FIX__MatchType swig_types[755] +#define SWIGTYPE_p_FIX__MaturityDate swig_types[756] +#define SWIGTYPE_p_FIX__MaturityDay swig_types[757] +#define SWIGTYPE_p_FIX__MaturityMonthYear swig_types[758] +#define SWIGTYPE_p_FIX__MaturityMonthYearFormat swig_types[759] +#define SWIGTYPE_p_FIX__MaturityMonthYearIncrement swig_types[760] +#define SWIGTYPE_p_FIX__MaturityMonthYearIncrementUnits swig_types[761] +#define SWIGTYPE_p_FIX__MaturityNetMoney swig_types[762] +#define SWIGTYPE_p_FIX__MaturityRuleID swig_types[763] +#define SWIGTYPE_p_FIX__MaturityTime swig_types[764] +#define SWIGTYPE_p_FIX__MaxFloor swig_types[765] +#define SWIGTYPE_p_FIX__MaxMessageSize swig_types[766] +#define SWIGTYPE_p_FIX__MaxPriceLevels swig_types[767] +#define SWIGTYPE_p_FIX__MaxPriceVariation swig_types[768] +#define SWIGTYPE_p_FIX__MaxShow swig_types[769] +#define SWIGTYPE_p_FIX__MaxTradeVol swig_types[770] +#define SWIGTYPE_p_FIX__MemoryStore swig_types[771] +#define SWIGTYPE_p_FIX__MemoryStoreFactory swig_types[772] +#define SWIGTYPE_p_FIX__Message swig_types[773] +#define SWIGTYPE_p_FIX__MessageEncoding swig_types[774] +#define SWIGTYPE_p_FIX__MessageEventSource swig_types[775] +#define SWIGTYPE_p_FIX__MessageParseError swig_types[776] +#define SWIGTYPE_p_FIX__MessageStore swig_types[777] +#define SWIGTYPE_p_FIX__MessageStoreExceptionWrapper swig_types[778] +#define SWIGTYPE_p_FIX__MessageStoreFactory swig_types[779] +#define SWIGTYPE_p_FIX__MessageStoreFactoryExceptionWrapper swig_types[780] +#define SWIGTYPE_p_FIX__MidPx swig_types[781] +#define SWIGTYPE_p_FIX__MidYield swig_types[782] +#define SWIGTYPE_p_FIX__MinBidSize swig_types[783] +#define SWIGTYPE_p_FIX__MinLotSize swig_types[784] +#define SWIGTYPE_p_FIX__MinOfferSize swig_types[785] +#define SWIGTYPE_p_FIX__MinPriceIncrement swig_types[786] +#define SWIGTYPE_p_FIX__MinPriceIncrementAmount swig_types[787] +#define SWIGTYPE_p_FIX__MinQty swig_types[788] +#define SWIGTYPE_p_FIX__MinTradeVol swig_types[789] +#define SWIGTYPE_p_FIX__MiscFeeAmt swig_types[790] +#define SWIGTYPE_p_FIX__MiscFeeBasis swig_types[791] +#define SWIGTYPE_p_FIX__MiscFeeCurr swig_types[792] +#define SWIGTYPE_p_FIX__MiscFeeType swig_types[793] +#define SWIGTYPE_p_FIX__MktBidPx swig_types[794] +#define SWIGTYPE_p_FIX__MktOfferPx swig_types[795] +#define SWIGTYPE_p_FIX__ModelType swig_types[796] +#define SWIGTYPE_p_FIX__MoneyLaunderingStatus swig_types[797] +#define SWIGTYPE_p_FIX__MsgDirection swig_types[798] +#define SWIGTYPE_p_FIX__MsgSeqNum swig_types[799] +#define SWIGTYPE_p_FIX__MsgType swig_types[800] +#define SWIGTYPE_p_FIX__MultiLegReportingType swig_types[801] +#define SWIGTYPE_p_FIX__MultiLegRptTypeReq swig_types[802] +#define SWIGTYPE_p_FIX__MultilegModel swig_types[803] +#define SWIGTYPE_p_FIX__MultilegPriceMethod swig_types[804] +#define SWIGTYPE_p_FIX__NTPositionLimit swig_types[805] +#define SWIGTYPE_p_FIX__NUMINGROUP swig_types[806] +#define SWIGTYPE_p_FIX__Nested2PartyID swig_types[807] +#define SWIGTYPE_p_FIX__Nested2PartyIDSource swig_types[808] +#define SWIGTYPE_p_FIX__Nested2PartyRole swig_types[809] +#define SWIGTYPE_p_FIX__Nested2PartySubID swig_types[810] +#define SWIGTYPE_p_FIX__Nested2PartySubIDType swig_types[811] +#define SWIGTYPE_p_FIX__Nested3PartyID swig_types[812] +#define SWIGTYPE_p_FIX__Nested3PartyIDSource swig_types[813] +#define SWIGTYPE_p_FIX__Nested3PartyRole swig_types[814] +#define SWIGTYPE_p_FIX__Nested3PartySubID swig_types[815] +#define SWIGTYPE_p_FIX__Nested3PartySubIDType swig_types[816] +#define SWIGTYPE_p_FIX__Nested4PartyID swig_types[817] +#define SWIGTYPE_p_FIX__Nested4PartyIDSource swig_types[818] +#define SWIGTYPE_p_FIX__Nested4PartyRole swig_types[819] +#define SWIGTYPE_p_FIX__Nested4PartySubID swig_types[820] +#define SWIGTYPE_p_FIX__Nested4PartySubIDType swig_types[821] +#define SWIGTYPE_p_FIX__NestedInstrAttribType swig_types[822] +#define SWIGTYPE_p_FIX__NestedInstrAttribValue swig_types[823] +#define SWIGTYPE_p_FIX__NestedPartyID swig_types[824] +#define SWIGTYPE_p_FIX__NestedPartyIDSource swig_types[825] +#define SWIGTYPE_p_FIX__NestedPartyRole swig_types[826] +#define SWIGTYPE_p_FIX__NestedPartySubID swig_types[827] +#define SWIGTYPE_p_FIX__NestedPartySubIDType swig_types[828] +#define SWIGTYPE_p_FIX__NetChgPrevDay swig_types[829] +#define SWIGTYPE_p_FIX__NetGrossInd swig_types[830] +#define SWIGTYPE_p_FIX__NetMoney swig_types[831] +#define SWIGTYPE_p_FIX__NetworkRequestID swig_types[832] +#define SWIGTYPE_p_FIX__NetworkRequestType swig_types[833] +#define SWIGTYPE_p_FIX__NetworkResponseID swig_types[834] +#define SWIGTYPE_p_FIX__NetworkStatusResponseType swig_types[835] +#define SWIGTYPE_p_FIX__NewPassword swig_types[836] +#define SWIGTYPE_p_FIX__NewSeqNo swig_types[837] +#define SWIGTYPE_p_FIX__NewsCategory swig_types[838] +#define SWIGTYPE_p_FIX__NewsID swig_types[839] +#define SWIGTYPE_p_FIX__NewsRefID swig_types[840] +#define SWIGTYPE_p_FIX__NewsRefType swig_types[841] +#define SWIGTYPE_p_FIX__NextExpectedMsgSeqNum swig_types[842] +#define SWIGTYPE_p_FIX__NoAffectedOrders swig_types[843] +#define SWIGTYPE_p_FIX__NoAllocs swig_types[844] +#define SWIGTYPE_p_FIX__NoAltMDSource swig_types[845] +#define SWIGTYPE_p_FIX__NoApplIDs swig_types[846] +#define SWIGTYPE_p_FIX__NoAsgnReqs swig_types[847] +#define SWIGTYPE_p_FIX__NoBidComponents swig_types[848] +#define SWIGTYPE_p_FIX__NoBidDescriptors swig_types[849] +#define SWIGTYPE_p_FIX__NoCapacities swig_types[850] +#define SWIGTYPE_p_FIX__NoClearingInstructions swig_types[851] +#define SWIGTYPE_p_FIX__NoCollInquiryQualifier swig_types[852] +#define SWIGTYPE_p_FIX__NoCompIDs swig_types[853] +#define SWIGTYPE_p_FIX__NoComplexEventDates swig_types[854] +#define SWIGTYPE_p_FIX__NoComplexEventTimes swig_types[855] +#define SWIGTYPE_p_FIX__NoComplexEvents swig_types[856] +#define SWIGTYPE_p_FIX__NoContAmts swig_types[857] +#define SWIGTYPE_p_FIX__NoContraBrokers swig_types[858] +#define SWIGTYPE_p_FIX__NoDates swig_types[859] +#define SWIGTYPE_p_FIX__NoDerivativeEvents swig_types[860] +#define SWIGTYPE_p_FIX__NoDerivativeInstrAttrib swig_types[861] +#define SWIGTYPE_p_FIX__NoDerivativeInstrumentParties swig_types[862] +#define SWIGTYPE_p_FIX__NoDerivativeInstrumentPartySubIDs swig_types[863] +#define SWIGTYPE_p_FIX__NoDerivativeSecurityAltID swig_types[864] +#define SWIGTYPE_p_FIX__NoDistribInsts swig_types[865] +#define SWIGTYPE_p_FIX__NoDlvyInst swig_types[866] +#define SWIGTYPE_p_FIX__NoEvents swig_types[867] +#define SWIGTYPE_p_FIX__NoExecInstRules swig_types[868] +#define SWIGTYPE_p_FIX__NoExecs swig_types[869] +#define SWIGTYPE_p_FIX__NoExpiration swig_types[870] +#define SWIGTYPE_p_FIX__NoFills swig_types[871] +#define SWIGTYPE_p_FIX__NoHops swig_types[872] +#define SWIGTYPE_p_FIX__NoIOIQualifiers swig_types[873] +#define SWIGTYPE_p_FIX__NoInstrAttrib swig_types[874] +#define SWIGTYPE_p_FIX__NoInstrumentParties swig_types[875] +#define SWIGTYPE_p_FIX__NoInstrumentPartySubIDs swig_types[876] +#define SWIGTYPE_p_FIX__NoLegAllocs swig_types[877] +#define SWIGTYPE_p_FIX__NoLegSecurityAltID swig_types[878] +#define SWIGTYPE_p_FIX__NoLegStipulations swig_types[879] +#define SWIGTYPE_p_FIX__NoLegs swig_types[880] +#define SWIGTYPE_p_FIX__NoLinesOfText swig_types[881] +#define SWIGTYPE_p_FIX__NoLotTypeRules swig_types[882] +#define SWIGTYPE_p_FIX__NoMDEntries swig_types[883] +#define SWIGTYPE_p_FIX__NoMDEntryTypes swig_types[884] +#define SWIGTYPE_p_FIX__NoMDFeedTypes swig_types[885] +#define SWIGTYPE_p_FIX__NoMarketSegments swig_types[886] +#define SWIGTYPE_p_FIX__NoMatchRules swig_types[887] +#define SWIGTYPE_p_FIX__NoMaturityRules swig_types[888] +#define SWIGTYPE_p_FIX__NoMiscFees swig_types[889] +#define SWIGTYPE_p_FIX__NoMsgTypes swig_types[890] +#define SWIGTYPE_p_FIX__NoNested2PartyIDs swig_types[891] +#define SWIGTYPE_p_FIX__NoNested2PartySubIDs swig_types[892] +#define SWIGTYPE_p_FIX__NoNested3PartyIDs swig_types[893] +#define SWIGTYPE_p_FIX__NoNested3PartySubIDs swig_types[894] +#define SWIGTYPE_p_FIX__NoNested4PartyIDs swig_types[895] +#define SWIGTYPE_p_FIX__NoNested4PartySubIDs swig_types[896] +#define SWIGTYPE_p_FIX__NoNestedInstrAttrib swig_types[897] +#define SWIGTYPE_p_FIX__NoNestedPartyIDs swig_types[898] +#define SWIGTYPE_p_FIX__NoNestedPartySubIDs swig_types[899] +#define SWIGTYPE_p_FIX__NoNewsRefIDs swig_types[900] +#define SWIGTYPE_p_FIX__NoNotAffectedOrders swig_types[901] +#define SWIGTYPE_p_FIX__NoOfLegUnderlyings swig_types[902] +#define SWIGTYPE_p_FIX__NoOfSecSizes swig_types[903] +#define SWIGTYPE_p_FIX__NoOrdTypeRules swig_types[904] +#define SWIGTYPE_p_FIX__NoOrders swig_types[905] +#define SWIGTYPE_p_FIX__NoPartyIDs swig_types[906] +#define SWIGTYPE_p_FIX__NoPartySubIDs swig_types[907] +#define SWIGTYPE_p_FIX__NoPosAmt swig_types[908] +#define SWIGTYPE_p_FIX__NoPositions swig_types[909] +#define SWIGTYPE_p_FIX__NoQuoteEntries swig_types[910] +#define SWIGTYPE_p_FIX__NoQuoteQualifiers swig_types[911] +#define SWIGTYPE_p_FIX__NoQuoteSets swig_types[912] +#define SWIGTYPE_p_FIX__NoRateSources swig_types[913] +#define SWIGTYPE_p_FIX__NoRegistDtls swig_types[914] +#define SWIGTYPE_p_FIX__NoRelatedSym swig_types[915] +#define SWIGTYPE_p_FIX__NoRootPartyIDs swig_types[916] +#define SWIGTYPE_p_FIX__NoRootPartySubIDs swig_types[917] +#define SWIGTYPE_p_FIX__NoRoutingIDs swig_types[918] +#define SWIGTYPE_p_FIX__NoRpts swig_types[919] +#define SWIGTYPE_p_FIX__NoSecurityAltID swig_types[920] +#define SWIGTYPE_p_FIX__NoSecurityTypes swig_types[921] +#define SWIGTYPE_p_FIX__NoSettlDetails swig_types[922] +#define SWIGTYPE_p_FIX__NoSettlInst swig_types[923] +#define SWIGTYPE_p_FIX__NoSettlOblig swig_types[924] +#define SWIGTYPE_p_FIX__NoSettlPartyIDs swig_types[925] +#define SWIGTYPE_p_FIX__NoSettlPartySubIDs swig_types[926] +#define SWIGTYPE_p_FIX__NoSideTrdRegTS swig_types[927] +#define SWIGTYPE_p_FIX__NoSides swig_types[928] +#define SWIGTYPE_p_FIX__NoStatsIndicators swig_types[929] +#define SWIGTYPE_p_FIX__NoStipulations swig_types[930] +#define SWIGTYPE_p_FIX__NoStrategyParameters swig_types[931] +#define SWIGTYPE_p_FIX__NoStrikeRules swig_types[932] +#define SWIGTYPE_p_FIX__NoStrikes swig_types[933] +#define SWIGTYPE_p_FIX__NoTagValue swig_types[934] +#define SWIGTYPE_p_FIX__NoTargetPartyIDs swig_types[935] +#define SWIGTYPE_p_FIX__NoTickRules swig_types[936] +#define SWIGTYPE_p_FIX__NoTimeInForceRules swig_types[937] +#define SWIGTYPE_p_FIX__NoTrades swig_types[938] +#define SWIGTYPE_p_FIX__NoTradingSessionRules swig_types[939] +#define SWIGTYPE_p_FIX__NoTradingSessions swig_types[940] +#define SWIGTYPE_p_FIX__NoTrdRegTimestamps swig_types[941] +#define SWIGTYPE_p_FIX__NoTrdRepIndicators swig_types[942] +#define SWIGTYPE_p_FIX__NoUnderlyingAmounts swig_types[943] +#define SWIGTYPE_p_FIX__NoUnderlyingLegSecurityAltID swig_types[944] +#define SWIGTYPE_p_FIX__NoUnderlyingSecurityAltID swig_types[945] +#define SWIGTYPE_p_FIX__NoUnderlyingStips swig_types[946] +#define SWIGTYPE_p_FIX__NoUnderlyings swig_types[947] +#define SWIGTYPE_p_FIX__NoUndlyInstrumentParties swig_types[948] +#define SWIGTYPE_p_FIX__NoUndlyInstrumentPartySubIDs swig_types[949] +#define SWIGTYPE_p_FIX__NotAffOrigClOrdID swig_types[950] +#define SWIGTYPE_p_FIX__NotAffectedOrderID swig_types[951] +#define SWIGTYPE_p_FIX__NotifyBrokerOfCredit swig_types[952] +#define SWIGTYPE_p_FIX__NotionalPercentageOutstanding swig_types[953] +#define SWIGTYPE_p_FIX__NullApplication swig_types[954] +#define SWIGTYPE_p_FIX__NullLog swig_types[955] +#define SWIGTYPE_p_FIX__NumBidders swig_types[956] +#define SWIGTYPE_p_FIX__NumDaysInterest swig_types[957] +#define SWIGTYPE_p_FIX__NumTickets swig_types[958] +#define SWIGTYPE_p_FIX__NumberOfOrders swig_types[959] +#define SWIGTYPE_p_FIX__OddLot swig_types[960] +#define SWIGTYPE_p_FIX__OfferForwardPoints swig_types[961] +#define SWIGTYPE_p_FIX__OfferForwardPoints2 swig_types[962] +#define SWIGTYPE_p_FIX__OfferPx swig_types[963] +#define SWIGTYPE_p_FIX__OfferSize swig_types[964] +#define SWIGTYPE_p_FIX__OfferSpotRate swig_types[965] +#define SWIGTYPE_p_FIX__OfferSwapPoints swig_types[966] +#define SWIGTYPE_p_FIX__OfferYield swig_types[967] +#define SWIGTYPE_p_FIX__OnBehalfOfCompID swig_types[968] +#define SWIGTYPE_p_FIX__OnBehalfOfLocationID swig_types[969] +#define SWIGTYPE_p_FIX__OnBehalfOfSendingTime swig_types[970] +#define SWIGTYPE_p_FIX__OnBehalfOfSubID swig_types[971] +#define SWIGTYPE_p_FIX__OpenClose swig_types[972] +#define SWIGTYPE_p_FIX__OpenCloseSettlFlag swig_types[973] +#define SWIGTYPE_p_FIX__OpenCloseSettleFlag swig_types[974] +#define SWIGTYPE_p_FIX__OpenInterest swig_types[975] +#define SWIGTYPE_p_FIX__OptAttribute swig_types[976] +#define SWIGTYPE_p_FIX__OptPayAmount swig_types[977] +#define SWIGTYPE_p_FIX__OptPayoutAmount swig_types[978] +#define SWIGTYPE_p_FIX__OptPayoutType swig_types[979] +#define SWIGTYPE_p_FIX__OrdRejReason swig_types[980] +#define SWIGTYPE_p_FIX__OrdStatus swig_types[981] +#define SWIGTYPE_p_FIX__OrdStatusReqID swig_types[982] +#define SWIGTYPE_p_FIX__OrdType swig_types[983] +#define SWIGTYPE_p_FIX__OrderAvgPx swig_types[984] +#define SWIGTYPE_p_FIX__OrderBookingQty swig_types[985] +#define SWIGTYPE_p_FIX__OrderCapacity swig_types[986] +#define SWIGTYPE_p_FIX__OrderCapacityQty swig_types[987] +#define SWIGTYPE_p_FIX__OrderCategory swig_types[988] +#define SWIGTYPE_p_FIX__OrderDelay swig_types[989] +#define SWIGTYPE_p_FIX__OrderDelayUnit swig_types[990] +#define SWIGTYPE_p_FIX__OrderHandlingInstSource swig_types[991] +#define SWIGTYPE_p_FIX__OrderID swig_types[992] +#define SWIGTYPE_p_FIX__OrderInputDevice swig_types[993] +#define SWIGTYPE_p_FIX__OrderPercent swig_types[994] +#define SWIGTYPE_p_FIX__OrderQty swig_types[995] +#define SWIGTYPE_p_FIX__OrderQty2 swig_types[996] +#define SWIGTYPE_p_FIX__OrderRestrictions swig_types[997] +#define SWIGTYPE_p_FIX__OrigClOrdID swig_types[998] +#define SWIGTYPE_p_FIX__OrigCrossID swig_types[999] +#define SWIGTYPE_p_FIX__OrigCustOrderCapacity swig_types[1000] +#define SWIGTYPE_p_FIX__OrigOrdModTime swig_types[1001] +#define SWIGTYPE_p_FIX__OrigPosReqRefID swig_types[1002] +#define SWIGTYPE_p_FIX__OrigSecondaryTradeID swig_types[1003] +#define SWIGTYPE_p_FIX__OrigSendingTime swig_types[1004] +#define SWIGTYPE_p_FIX__OrigTime swig_types[1005] +#define SWIGTYPE_p_FIX__OrigTradeDate swig_types[1006] +#define SWIGTYPE_p_FIX__OrigTradeHandlingInstr swig_types[1007] +#define SWIGTYPE_p_FIX__OrigTradeID swig_types[1008] +#define SWIGTYPE_p_FIX__OriginalNotionalPercentageOutstanding swig_types[1009] +#define SWIGTYPE_p_FIX__OutMainCntryUIndex swig_types[1010] +#define SWIGTYPE_p_FIX__OutsideIndexPct swig_types[1011] +#define SWIGTYPE_p_FIX__OwnerType swig_types[1012] +#define SWIGTYPE_p_FIX__OwnershipType swig_types[1013] +#define SWIGTYPE_p_FIX__PERCENTAGE swig_types[1014] +#define SWIGTYPE_p_FIX__PRICE swig_types[1015] +#define SWIGTYPE_p_FIX__PRICEOFFSET swig_types[1016] +#define SWIGTYPE_p_FIX__ParentMktSegmID swig_types[1017] +#define SWIGTYPE_p_FIX__ParticipationRate swig_types[1018] +#define SWIGTYPE_p_FIX__PartyID swig_types[1019] +#define SWIGTYPE_p_FIX__PartyIDSource swig_types[1020] +#define SWIGTYPE_p_FIX__PartyRole swig_types[1021] +#define SWIGTYPE_p_FIX__PartySubID swig_types[1022] +#define SWIGTYPE_p_FIX__PartySubIDType swig_types[1023] +#define SWIGTYPE_p_FIX__Password swig_types[1024] +#define SWIGTYPE_p_FIX__PaymentDate swig_types[1025] +#define SWIGTYPE_p_FIX__PaymentMethod swig_types[1026] +#define SWIGTYPE_p_FIX__PaymentRef swig_types[1027] +#define SWIGTYPE_p_FIX__PaymentRemitterID swig_types[1028] +#define SWIGTYPE_p_FIX__PctAtRisk swig_types[1029] +#define SWIGTYPE_p_FIX__PegDifference swig_types[1030] +#define SWIGTYPE_p_FIX__PegLimitType swig_types[1031] +#define SWIGTYPE_p_FIX__PegMoveType swig_types[1032] +#define SWIGTYPE_p_FIX__PegOffsetType swig_types[1033] +#define SWIGTYPE_p_FIX__PegOffsetValue swig_types[1034] +#define SWIGTYPE_p_FIX__PegPriceType swig_types[1035] +#define SWIGTYPE_p_FIX__PegRoundDirection swig_types[1036] +#define SWIGTYPE_p_FIX__PegScope swig_types[1037] +#define SWIGTYPE_p_FIX__PegSecurityDesc swig_types[1038] +#define SWIGTYPE_p_FIX__PegSecurityID swig_types[1039] +#define SWIGTYPE_p_FIX__PegSecurityIDSource swig_types[1040] +#define SWIGTYPE_p_FIX__PegSymbol swig_types[1041] +#define SWIGTYPE_p_FIX__PeggedPrice swig_types[1042] +#define SWIGTYPE_p_FIX__PeggedRefPrice swig_types[1043] +#define SWIGTYPE_p_FIX__Pool swig_types[1044] +#define SWIGTYPE_p_FIX__PosAmt swig_types[1045] +#define SWIGTYPE_p_FIX__PosAmtType swig_types[1046] +#define SWIGTYPE_p_FIX__PosMaintAction swig_types[1047] +#define SWIGTYPE_p_FIX__PosMaintResult swig_types[1048] +#define SWIGTYPE_p_FIX__PosMaintRptID swig_types[1049] +#define SWIGTYPE_p_FIX__PosMaintRptRefID swig_types[1050] +#define SWIGTYPE_p_FIX__PosMaintStatus swig_types[1051] +#define SWIGTYPE_p_FIX__PosQtyStatus swig_types[1052] +#define SWIGTYPE_p_FIX__PosReqID swig_types[1053] +#define SWIGTYPE_p_FIX__PosReqResult swig_types[1054] +#define SWIGTYPE_p_FIX__PosReqStatus swig_types[1055] +#define SWIGTYPE_p_FIX__PosReqType swig_types[1056] +#define SWIGTYPE_p_FIX__PosTransType swig_types[1057] +#define SWIGTYPE_p_FIX__PosType swig_types[1058] +#define SWIGTYPE_p_FIX__PositionCurrency swig_types[1059] +#define SWIGTYPE_p_FIX__PositionEffect swig_types[1060] +#define SWIGTYPE_p_FIX__PositionLimit swig_types[1061] +#define SWIGTYPE_p_FIX__PossDupFlag swig_types[1062] +#define SWIGTYPE_p_FIX__PossResend swig_types[1063] +#define SWIGTYPE_p_FIX__PreTradeAnonymity swig_types[1064] +#define SWIGTYPE_p_FIX__PreallocMethod swig_types[1065] +#define SWIGTYPE_p_FIX__PrevClosePx swig_types[1066] +#define SWIGTYPE_p_FIX__PreviouslyReported swig_types[1067] +#define SWIGTYPE_p_FIX__Price swig_types[1068] +#define SWIGTYPE_p_FIX__Price2 swig_types[1069] +#define SWIGTYPE_p_FIX__PriceDelta swig_types[1070] +#define SWIGTYPE_p_FIX__PriceImprovement swig_types[1071] +#define SWIGTYPE_p_FIX__PriceLimitType swig_types[1072] +#define SWIGTYPE_p_FIX__PriceProtectionScope swig_types[1073] +#define SWIGTYPE_p_FIX__PriceQuoteMethod swig_types[1074] +#define SWIGTYPE_p_FIX__PriceType swig_types[1075] +#define SWIGTYPE_p_FIX__PriceUnitOfMeasure swig_types[1076] +#define SWIGTYPE_p_FIX__PriceUnitOfMeasureQty swig_types[1077] +#define SWIGTYPE_p_FIX__PriorSettlPrice swig_types[1078] +#define SWIGTYPE_p_FIX__PriorSpreadIndicator swig_types[1079] +#define SWIGTYPE_p_FIX__PriorityIndicator swig_types[1080] +#define SWIGTYPE_p_FIX__PrivateQuote swig_types[1081] +#define SWIGTYPE_p_FIX__ProcessCode swig_types[1082] +#define SWIGTYPE_p_FIX__Product swig_types[1083] +#define SWIGTYPE_p_FIX__ProductComplex swig_types[1084] +#define SWIGTYPE_p_FIX__ProgPeriodInterval swig_types[1085] +#define SWIGTYPE_p_FIX__ProgRptReqs swig_types[1086] +#define SWIGTYPE_p_FIX__PublishTrdIndicator swig_types[1087] +#define SWIGTYPE_p_FIX__PutOrCall swig_types[1088] +#define SWIGTYPE_p_FIX__QTY swig_types[1089] +#define SWIGTYPE_p_FIX__QtyType swig_types[1090] +#define SWIGTYPE_p_FIX__Quantity swig_types[1091] +#define SWIGTYPE_p_FIX__QuantityDate swig_types[1092] +#define SWIGTYPE_p_FIX__QuantityType swig_types[1093] +#define SWIGTYPE_p_FIX__QuoteAckStatus swig_types[1094] +#define SWIGTYPE_p_FIX__QuoteCancelType swig_types[1095] +#define SWIGTYPE_p_FIX__QuoteCondition swig_types[1096] +#define SWIGTYPE_p_FIX__QuoteEntryID swig_types[1097] +#define SWIGTYPE_p_FIX__QuoteEntryRejectReason swig_types[1098] +#define SWIGTYPE_p_FIX__QuoteEntryStatus swig_types[1099] +#define SWIGTYPE_p_FIX__QuoteID swig_types[1100] +#define SWIGTYPE_p_FIX__QuoteMsgID swig_types[1101] +#define SWIGTYPE_p_FIX__QuotePriceType swig_types[1102] +#define SWIGTYPE_p_FIX__QuoteQualifier swig_types[1103] +#define SWIGTYPE_p_FIX__QuoteRejectReason swig_types[1104] +#define SWIGTYPE_p_FIX__QuoteReqID swig_types[1105] +#define SWIGTYPE_p_FIX__QuoteRequestRejectReason swig_types[1106] +#define SWIGTYPE_p_FIX__QuoteRequestType swig_types[1107] +#define SWIGTYPE_p_FIX__QuoteRespID swig_types[1108] +#define SWIGTYPE_p_FIX__QuoteRespType swig_types[1109] +#define SWIGTYPE_p_FIX__QuoteResponseLevel swig_types[1110] +#define SWIGTYPE_p_FIX__QuoteSetID swig_types[1111] +#define SWIGTYPE_p_FIX__QuoteSetValidUntilTime swig_types[1112] +#define SWIGTYPE_p_FIX__QuoteStatus swig_types[1113] +#define SWIGTYPE_p_FIX__QuoteStatusReqID swig_types[1114] +#define SWIGTYPE_p_FIX__QuoteType swig_types[1115] +#define SWIGTYPE_p_FIX__RFQReqID swig_types[1116] +#define SWIGTYPE_p_FIX__RateSource swig_types[1117] +#define SWIGTYPE_p_FIX__RateSourceType swig_types[1118] +#define SWIGTYPE_p_FIX__RatioQty swig_types[1119] +#define SWIGTYPE_p_FIX__RawData swig_types[1120] +#define SWIGTYPE_p_FIX__RawDataLength swig_types[1121] +#define SWIGTYPE_p_FIX__ReceivedDeptID swig_types[1122] +#define SWIGTYPE_p_FIX__RedemptionDate swig_types[1123] +#define SWIGTYPE_p_FIX__RefAllocID swig_types[1124] +#define SWIGTYPE_p_FIX__RefApplExtID swig_types[1125] +#define SWIGTYPE_p_FIX__RefApplID swig_types[1126] +#define SWIGTYPE_p_FIX__RefApplLastSeqNum swig_types[1127] +#define SWIGTYPE_p_FIX__RefApplReqID swig_types[1128] +#define SWIGTYPE_p_FIX__RefApplVerID swig_types[1129] +#define SWIGTYPE_p_FIX__RefCompID swig_types[1130] +#define SWIGTYPE_p_FIX__RefCstmApplVerID swig_types[1131] +#define SWIGTYPE_p_FIX__RefMsgType swig_types[1132] +#define SWIGTYPE_p_FIX__RefOrdIDReason swig_types[1133] +#define SWIGTYPE_p_FIX__RefOrderID swig_types[1134] +#define SWIGTYPE_p_FIX__RefOrderIDSource swig_types[1135] +#define SWIGTYPE_p_FIX__RefSeqNum swig_types[1136] +#define SWIGTYPE_p_FIX__RefSubID swig_types[1137] +#define SWIGTYPE_p_FIX__RefTagID swig_types[1138] +#define SWIGTYPE_p_FIX__ReferencePage swig_types[1139] +#define SWIGTYPE_p_FIX__RefreshIndicator swig_types[1140] +#define SWIGTYPE_p_FIX__RefreshQty swig_types[1141] +#define SWIGTYPE_p_FIX__RegistAcctType swig_types[1142] +#define SWIGTYPE_p_FIX__RegistDetls swig_types[1143] +#define SWIGTYPE_p_FIX__RegistDtls swig_types[1144] +#define SWIGTYPE_p_FIX__RegistEmail swig_types[1145] +#define SWIGTYPE_p_FIX__RegistID swig_types[1146] +#define SWIGTYPE_p_FIX__RegistRefID swig_types[1147] +#define SWIGTYPE_p_FIX__RegistRejReasonCode swig_types[1148] +#define SWIGTYPE_p_FIX__RegistRejReasonText swig_types[1149] +#define SWIGTYPE_p_FIX__RegistStatus swig_types[1150] +#define SWIGTYPE_p_FIX__RegistTransType swig_types[1151] +#define SWIGTYPE_p_FIX__RejectLogon swig_types[1152] +#define SWIGTYPE_p_FIX__RejectText swig_types[1153] +#define SWIGTYPE_p_FIX__RelSymTransactTime swig_types[1154] +#define SWIGTYPE_p_FIX__RelatdSym swig_types[1155] +#define SWIGTYPE_p_FIX__RepeatedTag swig_types[1156] +#define SWIGTYPE_p_FIX__RepeatingGroupCountMismatch swig_types[1157] +#define SWIGTYPE_p_FIX__RepoCollateralSecurityType swig_types[1158] +#define SWIGTYPE_p_FIX__ReportToExch swig_types[1159] +#define SWIGTYPE_p_FIX__ReportedPx swig_types[1160] +#define SWIGTYPE_p_FIX__ReportedPxDiff swig_types[1161] +#define SWIGTYPE_p_FIX__RepurchaseRate swig_types[1162] +#define SWIGTYPE_p_FIX__RepurchaseTerm swig_types[1163] +#define SWIGTYPE_p_FIX__RequiredTagMissing swig_types[1164] +#define SWIGTYPE_p_FIX__ResetSeqNumFlag swig_types[1165] +#define SWIGTYPE_p_FIX__RespondentType swig_types[1166] +#define SWIGTYPE_p_FIX__ResponseDestination swig_types[1167] +#define SWIGTYPE_p_FIX__ResponseTransportType swig_types[1168] +#define SWIGTYPE_p_FIX__RestructuringType swig_types[1169] +#define SWIGTYPE_p_FIX__ReversalIndicator swig_types[1170] +#define SWIGTYPE_p_FIX__RiskFreeRate swig_types[1171] +#define SWIGTYPE_p_FIX__RndPx swig_types[1172] +#define SWIGTYPE_p_FIX__RootPartyID swig_types[1173] +#define SWIGTYPE_p_FIX__RootPartyIDSource swig_types[1174] +#define SWIGTYPE_p_FIX__RootPartyRole swig_types[1175] +#define SWIGTYPE_p_FIX__RootPartySubID swig_types[1176] +#define SWIGTYPE_p_FIX__RootPartySubIDType swig_types[1177] +#define SWIGTYPE_p_FIX__RoundLot swig_types[1178] +#define SWIGTYPE_p_FIX__RoundingDirection swig_types[1179] +#define SWIGTYPE_p_FIX__RoundingModulus swig_types[1180] +#define SWIGTYPE_p_FIX__RoutingID swig_types[1181] +#define SWIGTYPE_p_FIX__RoutingType swig_types[1182] +#define SWIGTYPE_p_FIX__RptSeq swig_types[1183] +#define SWIGTYPE_p_FIX__RptSys swig_types[1184] +#define SWIGTYPE_p_FIX__Rule80A swig_types[1185] +#define SWIGTYPE_p_FIX__RuntimeError swig_types[1186] +#define SWIGTYPE_p_FIX__SEQNUM swig_types[1187] +#define SWIGTYPE_p_FIX__STRING swig_types[1188] +#define SWIGTYPE_p_FIX__Scope swig_types[1189] +#define SWIGTYPE_p_FIX__ScreenLog swig_types[1190] +#define SWIGTYPE_p_FIX__ScreenLogFactory swig_types[1191] +#define SWIGTYPE_p_FIX__SecondaryAllocID swig_types[1192] +#define SWIGTYPE_p_FIX__SecondaryClOrdID swig_types[1193] +#define SWIGTYPE_p_FIX__SecondaryDisplayQty swig_types[1194] +#define SWIGTYPE_p_FIX__SecondaryExecID swig_types[1195] +#define SWIGTYPE_p_FIX__SecondaryFirmTradeID swig_types[1196] +#define SWIGTYPE_p_FIX__SecondaryHighLimitPrice swig_types[1197] +#define SWIGTYPE_p_FIX__SecondaryIndividualAllocID swig_types[1198] +#define SWIGTYPE_p_FIX__SecondaryLowLimitPrice swig_types[1199] +#define SWIGTYPE_p_FIX__SecondaryOrderID swig_types[1200] +#define SWIGTYPE_p_FIX__SecondaryPriceLimitType swig_types[1201] +#define SWIGTYPE_p_FIX__SecondaryTradeID swig_types[1202] +#define SWIGTYPE_p_FIX__SecondaryTradeReportID swig_types[1203] +#define SWIGTYPE_p_FIX__SecondaryTradeReportRefID swig_types[1204] +#define SWIGTYPE_p_FIX__SecondaryTradingReferencePrice swig_types[1205] +#define SWIGTYPE_p_FIX__SecondaryTrdType swig_types[1206] +#define SWIGTYPE_p_FIX__SecureData swig_types[1207] +#define SWIGTYPE_p_FIX__SecureDataLen swig_types[1208] +#define SWIGTYPE_p_FIX__SecurityAltID swig_types[1209] +#define SWIGTYPE_p_FIX__SecurityAltIDSource swig_types[1210] +#define SWIGTYPE_p_FIX__SecurityDesc swig_types[1211] +#define SWIGTYPE_p_FIX__SecurityExchange swig_types[1212] +#define SWIGTYPE_p_FIX__SecurityGroup swig_types[1213] +#define SWIGTYPE_p_FIX__SecurityID swig_types[1214] +#define SWIGTYPE_p_FIX__SecurityIDSource swig_types[1215] +#define SWIGTYPE_p_FIX__SecurityListDesc swig_types[1216] +#define SWIGTYPE_p_FIX__SecurityListID swig_types[1217] +#define SWIGTYPE_p_FIX__SecurityListRefID swig_types[1218] +#define SWIGTYPE_p_FIX__SecurityListRequestType swig_types[1219] +#define SWIGTYPE_p_FIX__SecurityListType swig_types[1220] +#define SWIGTYPE_p_FIX__SecurityListTypeSource swig_types[1221] +#define SWIGTYPE_p_FIX__SecurityReportID swig_types[1222] +#define SWIGTYPE_p_FIX__SecurityReqID swig_types[1223] +#define SWIGTYPE_p_FIX__SecurityRequestResult swig_types[1224] +#define SWIGTYPE_p_FIX__SecurityRequestType swig_types[1225] +#define SWIGTYPE_p_FIX__SecurityResponseID swig_types[1226] +#define SWIGTYPE_p_FIX__SecurityResponseType swig_types[1227] +#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctName swig_types[1228] +#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctNum swig_types[1229] +#define SWIGTYPE_p_FIX__SecuritySettlAgentCode swig_types[1230] +#define SWIGTYPE_p_FIX__SecuritySettlAgentContactName swig_types[1231] +#define SWIGTYPE_p_FIX__SecuritySettlAgentContactPhone swig_types[1232] +#define SWIGTYPE_p_FIX__SecuritySettlAgentName swig_types[1233] +#define SWIGTYPE_p_FIX__SecurityStatus swig_types[1234] +#define SWIGTYPE_p_FIX__SecurityStatusReqID swig_types[1235] +#define SWIGTYPE_p_FIX__SecuritySubType swig_types[1236] +#define SWIGTYPE_p_FIX__SecurityTradingEvent swig_types[1237] +#define SWIGTYPE_p_FIX__SecurityTradingStatus swig_types[1238] +#define SWIGTYPE_p_FIX__SecurityType swig_types[1239] +#define SWIGTYPE_p_FIX__SecurityUpdateAction swig_types[1240] +#define SWIGTYPE_p_FIX__SecurityXML swig_types[1241] +#define SWIGTYPE_p_FIX__SecurityXMLLen swig_types[1242] +#define SWIGTYPE_p_FIX__SecurityXMLSchema swig_types[1243] +#define SWIGTYPE_p_FIX__SellVolume swig_types[1244] +#define SWIGTYPE_p_FIX__SellerDays swig_types[1245] +#define SWIGTYPE_p_FIX__SenderCompID swig_types[1246] +#define SWIGTYPE_p_FIX__SenderLocationID swig_types[1247] +#define SWIGTYPE_p_FIX__SenderSubID swig_types[1248] +#define SWIGTYPE_p_FIX__SendingDate swig_types[1249] +#define SWIGTYPE_p_FIX__SendingTime swig_types[1250] +#define SWIGTYPE_p_FIX__Seniority swig_types[1251] +#define SWIGTYPE_p_FIX__Session swig_types[1252] +#define SWIGTYPE_p_FIX__SessionID swig_types[1253] +#define SWIGTYPE_p_FIX__SessionNotFound swig_types[1254] +#define SWIGTYPE_p_FIX__SessionRejectReason swig_types[1255] +#define SWIGTYPE_p_FIX__SessionSettings swig_types[1256] +#define SWIGTYPE_p_FIX__SessionStatus swig_types[1257] +#define SWIGTYPE_p_FIX__SettlBrkrCode swig_types[1258] +#define SWIGTYPE_p_FIX__SettlCurrAmt swig_types[1259] +#define SWIGTYPE_p_FIX__SettlCurrBidFxRate swig_types[1260] +#define SWIGTYPE_p_FIX__SettlCurrFxRate swig_types[1261] +#define SWIGTYPE_p_FIX__SettlCurrFxRateCalc swig_types[1262] +#define SWIGTYPE_p_FIX__SettlCurrOfferFxRate swig_types[1263] +#define SWIGTYPE_p_FIX__SettlCurrency swig_types[1264] +#define SWIGTYPE_p_FIX__SettlDate swig_types[1265] +#define SWIGTYPE_p_FIX__SettlDate2 swig_types[1266] +#define SWIGTYPE_p_FIX__SettlDeliveryType swig_types[1267] +#define SWIGTYPE_p_FIX__SettlDepositoryCode swig_types[1268] +#define SWIGTYPE_p_FIX__SettlInstCode swig_types[1269] +#define SWIGTYPE_p_FIX__SettlInstID swig_types[1270] +#define SWIGTYPE_p_FIX__SettlInstMode swig_types[1271] +#define SWIGTYPE_p_FIX__SettlInstMsgID swig_types[1272] +#define SWIGTYPE_p_FIX__SettlInstRefID swig_types[1273] +#define SWIGTYPE_p_FIX__SettlInstReqID swig_types[1274] +#define SWIGTYPE_p_FIX__SettlInstReqRejCode swig_types[1275] +#define SWIGTYPE_p_FIX__SettlInstSource swig_types[1276] +#define SWIGTYPE_p_FIX__SettlInstTransType swig_types[1277] +#define SWIGTYPE_p_FIX__SettlLocation swig_types[1278] +#define SWIGTYPE_p_FIX__SettlMethod swig_types[1279] +#define SWIGTYPE_p_FIX__SettlObligID swig_types[1280] +#define SWIGTYPE_p_FIX__SettlObligMode swig_types[1281] +#define SWIGTYPE_p_FIX__SettlObligMsgID swig_types[1282] +#define SWIGTYPE_p_FIX__SettlObligRefID swig_types[1283] +#define SWIGTYPE_p_FIX__SettlObligSource swig_types[1284] +#define SWIGTYPE_p_FIX__SettlObligTransType swig_types[1285] +#define SWIGTYPE_p_FIX__SettlPartyID swig_types[1286] +#define SWIGTYPE_p_FIX__SettlPartyIDSource swig_types[1287] +#define SWIGTYPE_p_FIX__SettlPartyRole swig_types[1288] +#define SWIGTYPE_p_FIX__SettlPartySubID swig_types[1289] +#define SWIGTYPE_p_FIX__SettlPartySubIDType swig_types[1290] +#define SWIGTYPE_p_FIX__SettlPrice swig_types[1291] +#define SWIGTYPE_p_FIX__SettlPriceType swig_types[1292] +#define SWIGTYPE_p_FIX__SettlSessID swig_types[1293] +#define SWIGTYPE_p_FIX__SettlSessSubID swig_types[1294] +#define SWIGTYPE_p_FIX__SettlType swig_types[1295] +#define SWIGTYPE_p_FIX__SettleOnOpenFlag swig_types[1296] +#define SWIGTYPE_p_FIX__SettlementCycleNo swig_types[1297] +#define SWIGTYPE_p_FIX__SettlmntTyp swig_types[1298] +#define SWIGTYPE_p_FIX__SharedCommission swig_types[1299] +#define SWIGTYPE_p_FIX__Shares swig_types[1300] +#define SWIGTYPE_p_FIX__ShortQty swig_types[1301] +#define SWIGTYPE_p_FIX__ShortSaleReason swig_types[1302] +#define SWIGTYPE_p_FIX__Side swig_types[1303] +#define SWIGTYPE_p_FIX__SideComplianceID swig_types[1304] +#define SWIGTYPE_p_FIX__SideCurrency swig_types[1305] +#define SWIGTYPE_p_FIX__SideExecID swig_types[1306] +#define SWIGTYPE_p_FIX__SideFillStationCd swig_types[1307] +#define SWIGTYPE_p_FIX__SideGrossTradeAmt swig_types[1308] +#define SWIGTYPE_p_FIX__SideLastQty swig_types[1309] +#define SWIGTYPE_p_FIX__SideLiquidityInd swig_types[1310] +#define SWIGTYPE_p_FIX__SideMultiLegReportingType swig_types[1311] +#define SWIGTYPE_p_FIX__SideQty swig_types[1312] +#define SWIGTYPE_p_FIX__SideReasonCd swig_types[1313] +#define SWIGTYPE_p_FIX__SideSettlCurrency swig_types[1314] +#define SWIGTYPE_p_FIX__SideTimeInForce swig_types[1315] +#define SWIGTYPE_p_FIX__SideTradeReportID swig_types[1316] +#define SWIGTYPE_p_FIX__SideTrdRegTimestamp swig_types[1317] +#define SWIGTYPE_p_FIX__SideTrdRegTimestampSrc swig_types[1318] +#define SWIGTYPE_p_FIX__SideTrdRegTimestampType swig_types[1319] +#define SWIGTYPE_p_FIX__SideTrdSubTyp swig_types[1320] +#define SWIGTYPE_p_FIX__SideValue1 swig_types[1321] +#define SWIGTYPE_p_FIX__SideValue2 swig_types[1322] +#define SWIGTYPE_p_FIX__SideValueInd swig_types[1323] +#define SWIGTYPE_p_FIX__Signature swig_types[1324] +#define SWIGTYPE_p_FIX__SignatureLength swig_types[1325] +#define SWIGTYPE_p_FIX__SocketAcceptor swig_types[1326] +#define SWIGTYPE_p_FIX__SocketCloseFailed swig_types[1327] +#define SWIGTYPE_p_FIX__SocketException swig_types[1328] +#define SWIGTYPE_p_FIX__SocketInitiator swig_types[1329] +#define SWIGTYPE_p_FIX__SocketRecvFailed swig_types[1330] +#define SWIGTYPE_p_FIX__SocketSendFailed swig_types[1331] +#define SWIGTYPE_p_FIX__SolicitedFlag swig_types[1332] +#define SWIGTYPE_p_FIX__Spread swig_types[1333] +#define SWIGTYPE_p_FIX__SpreadToBenchmark swig_types[1334] +#define SWIGTYPE_p_FIX__StandInstDbID swig_types[1335] +#define SWIGTYPE_p_FIX__StandInstDbName swig_types[1336] +#define SWIGTYPE_p_FIX__StandInstDbType swig_types[1337] +#define SWIGTYPE_p_FIX__StartCash swig_types[1338] +#define SWIGTYPE_p_FIX__StartDate swig_types[1339] +#define SWIGTYPE_p_FIX__StartMaturityMonthYear swig_types[1340] +#define SWIGTYPE_p_FIX__StartStrikePxRange swig_types[1341] +#define SWIGTYPE_p_FIX__StartTickPriceRange swig_types[1342] +#define SWIGTYPE_p_FIX__StateOrProvinceOfIssue swig_types[1343] +#define SWIGTYPE_p_FIX__StatsType swig_types[1344] +#define SWIGTYPE_p_FIX__StatusText swig_types[1345] +#define SWIGTYPE_p_FIX__StatusValue swig_types[1346] +#define SWIGTYPE_p_FIX__StipulationType swig_types[1347] +#define SWIGTYPE_p_FIX__StipulationValue swig_types[1348] +#define SWIGTYPE_p_FIX__StopPx swig_types[1349] +#define SWIGTYPE_p_FIX__StrategyParameterName swig_types[1350] +#define SWIGTYPE_p_FIX__StrategyParameterType swig_types[1351] +#define SWIGTYPE_p_FIX__StrategyParameterValue swig_types[1352] +#define SWIGTYPE_p_FIX__StreamAsgnAckType swig_types[1353] +#define SWIGTYPE_p_FIX__StreamAsgnRejReason swig_types[1354] +#define SWIGTYPE_p_FIX__StreamAsgnReqID swig_types[1355] +#define SWIGTYPE_p_FIX__StreamAsgnReqType swig_types[1356] +#define SWIGTYPE_p_FIX__StreamAsgnRptID swig_types[1357] +#define SWIGTYPE_p_FIX__StreamAsgnType swig_types[1358] +#define SWIGTYPE_p_FIX__StrikeCurrency swig_types[1359] +#define SWIGTYPE_p_FIX__StrikeExerciseStyle swig_types[1360] +#define SWIGTYPE_p_FIX__StrikeIncrement swig_types[1361] +#define SWIGTYPE_p_FIX__StrikeMultiplier swig_types[1362] +#define SWIGTYPE_p_FIX__StrikePrice swig_types[1363] +#define SWIGTYPE_p_FIX__StrikePriceBoundaryMethod swig_types[1364] +#define SWIGTYPE_p_FIX__StrikePriceBoundaryPrecision swig_types[1365] +#define SWIGTYPE_p_FIX__StrikePriceDeterminationMethod swig_types[1366] +#define SWIGTYPE_p_FIX__StrikeRuleID swig_types[1367] +#define SWIGTYPE_p_FIX__StrikeTime swig_types[1368] +#define SWIGTYPE_p_FIX__StrikeValue swig_types[1369] +#define SWIGTYPE_p_FIX__StringField swig_types[1370] +#define SWIGTYPE_p_FIX__Subject swig_types[1371] +#define SWIGTYPE_p_FIX__SubscriptionRequestType swig_types[1372] +#define SWIGTYPE_p_FIX__SwapPoints swig_types[1373] +#define SWIGTYPE_p_FIX__Symbol swig_types[1374] +#define SWIGTYPE_p_FIX__SymbolSfx swig_types[1375] +#define SWIGTYPE_p_FIX__SynchronizedApplication swig_types[1376] +#define SWIGTYPE_p_FIX__TYPE__Type swig_types[1377] +#define SWIGTYPE_p_FIX__TZTIMEONLY swig_types[1378] +#define SWIGTYPE_p_FIX__TZTIMESTAMP swig_types[1379] +#define SWIGTYPE_p_FIX__TZTransactTime swig_types[1380] +#define SWIGTYPE_p_FIX__TagNotDefinedForMessage swig_types[1381] +#define SWIGTYPE_p_FIX__TagOutOfOrder swig_types[1382] +#define SWIGTYPE_p_FIX__TargetCompID swig_types[1383] +#define SWIGTYPE_p_FIX__TargetLocationID swig_types[1384] +#define SWIGTYPE_p_FIX__TargetPartyID swig_types[1385] +#define SWIGTYPE_p_FIX__TargetPartyIDSource swig_types[1386] +#define SWIGTYPE_p_FIX__TargetPartyRole swig_types[1387] +#define SWIGTYPE_p_FIX__TargetStrategy swig_types[1388] +#define SWIGTYPE_p_FIX__TargetStrategyParameters swig_types[1389] +#define SWIGTYPE_p_FIX__TargetStrategyPerformance swig_types[1390] +#define SWIGTYPE_p_FIX__TargetSubID swig_types[1391] +#define SWIGTYPE_p_FIX__TaxAdvantageType swig_types[1392] +#define SWIGTYPE_p_FIX__TerminationType swig_types[1393] +#define SWIGTYPE_p_FIX__TestMessageIndicator swig_types[1394] +#define SWIGTYPE_p_FIX__TestReqID swig_types[1395] +#define SWIGTYPE_p_FIX__Text swig_types[1396] +#define SWIGTYPE_p_FIX__ThresholdAmount swig_types[1397] +#define SWIGTYPE_p_FIX__TickDirection swig_types[1398] +#define SWIGTYPE_p_FIX__TickIncrement swig_types[1399] +#define SWIGTYPE_p_FIX__TickRuleType swig_types[1400] +#define SWIGTYPE_p_FIX__TierCode swig_types[1401] +#define SWIGTYPE_p_FIX__TimeBracket swig_types[1402] +#define SWIGTYPE_p_FIX__TimeInForce swig_types[1403] +#define SWIGTYPE_p_FIX__TimeToExpiration swig_types[1404] +#define SWIGTYPE_p_FIX__TimeUnit swig_types[1405] +#define SWIGTYPE_p_FIX__TotNoAccQuotes swig_types[1406] +#define SWIGTYPE_p_FIX__TotNoAllocs swig_types[1407] +#define SWIGTYPE_p_FIX__TotNoCxldQuotes swig_types[1408] +#define SWIGTYPE_p_FIX__TotNoFills swig_types[1409] +#define SWIGTYPE_p_FIX__TotNoOrders swig_types[1410] +#define SWIGTYPE_p_FIX__TotNoQuoteEntries swig_types[1411] +#define SWIGTYPE_p_FIX__TotNoRejQuotes swig_types[1412] +#define SWIGTYPE_p_FIX__TotNoRelatedSym swig_types[1413] +#define SWIGTYPE_p_FIX__TotNoSecurityTypes swig_types[1414] +#define SWIGTYPE_p_FIX__TotNoStrikes swig_types[1415] +#define SWIGTYPE_p_FIX__TotNumAssignmentReports swig_types[1416] +#define SWIGTYPE_p_FIX__TotNumReports swig_types[1417] +#define SWIGTYPE_p_FIX__TotNumTradeReports swig_types[1418] +#define SWIGTYPE_p_FIX__TotQuoteEntries swig_types[1419] +#define SWIGTYPE_p_FIX__TotalAccruedInterestAmt swig_types[1420] +#define SWIGTYPE_p_FIX__TotalAffectedOrders swig_types[1421] +#define SWIGTYPE_p_FIX__TotalNetValue swig_types[1422] +#define SWIGTYPE_p_FIX__TotalNumPosReports swig_types[1423] +#define SWIGTYPE_p_FIX__TotalNumSecurities swig_types[1424] +#define SWIGTYPE_p_FIX__TotalNumSecurityTypes swig_types[1425] +#define SWIGTYPE_p_FIX__TotalTakedown swig_types[1426] +#define SWIGTYPE_p_FIX__TotalVolumeTraded swig_types[1427] +#define SWIGTYPE_p_FIX__TotalVolumeTradedDate swig_types[1428] +#define SWIGTYPE_p_FIX__TotalVolumeTradedTime swig_types[1429] +#define SWIGTYPE_p_FIX__TradSesCloseTime swig_types[1430] +#define SWIGTYPE_p_FIX__TradSesEndTime swig_types[1431] +#define SWIGTYPE_p_FIX__TradSesEvent swig_types[1432] +#define SWIGTYPE_p_FIX__TradSesMethod swig_types[1433] +#define SWIGTYPE_p_FIX__TradSesMode swig_types[1434] +#define SWIGTYPE_p_FIX__TradSesOpenTime swig_types[1435] +#define SWIGTYPE_p_FIX__TradSesPreCloseTime swig_types[1436] +#define SWIGTYPE_p_FIX__TradSesReqID swig_types[1437] +#define SWIGTYPE_p_FIX__TradSesStartTime swig_types[1438] +#define SWIGTYPE_p_FIX__TradSesStatus swig_types[1439] +#define SWIGTYPE_p_FIX__TradSesStatusRejReason swig_types[1440] +#define SWIGTYPE_p_FIX__TradSesUpdateAction swig_types[1441] +#define SWIGTYPE_p_FIX__TradeAllocIndicator swig_types[1442] +#define SWIGTYPE_p_FIX__TradeCondition swig_types[1443] +#define SWIGTYPE_p_FIX__TradeDate swig_types[1444] +#define SWIGTYPE_p_FIX__TradeHandlingInstr swig_types[1445] +#define SWIGTYPE_p_FIX__TradeID swig_types[1446] +#define SWIGTYPE_p_FIX__TradeInputDevice swig_types[1447] +#define SWIGTYPE_p_FIX__TradeInputSource swig_types[1448] +#define SWIGTYPE_p_FIX__TradeLegRefID swig_types[1449] +#define SWIGTYPE_p_FIX__TradeLinkID swig_types[1450] +#define SWIGTYPE_p_FIX__TradeOriginationDate swig_types[1451] +#define SWIGTYPE_p_FIX__TradePublishIndicator swig_types[1452] +#define SWIGTYPE_p_FIX__TradeReportID swig_types[1453] +#define SWIGTYPE_p_FIX__TradeReportRefID swig_types[1454] +#define SWIGTYPE_p_FIX__TradeReportRejectReason swig_types[1455] +#define SWIGTYPE_p_FIX__TradeReportTransType swig_types[1456] +#define SWIGTYPE_p_FIX__TradeReportType swig_types[1457] +#define SWIGTYPE_p_FIX__TradeRequestID swig_types[1458] +#define SWIGTYPE_p_FIX__TradeRequestResult swig_types[1459] +#define SWIGTYPE_p_FIX__TradeRequestStatus swig_types[1460] +#define SWIGTYPE_p_FIX__TradeRequestType swig_types[1461] +#define SWIGTYPE_p_FIX__TradeType swig_types[1462] +#define SWIGTYPE_p_FIX__TradeVolume swig_types[1463] +#define SWIGTYPE_p_FIX__TradedFlatSwitch swig_types[1464] +#define SWIGTYPE_p_FIX__TradingCurrency swig_types[1465] +#define SWIGTYPE_p_FIX__TradingReferencePrice swig_types[1466] +#define SWIGTYPE_p_FIX__TradingSessionDesc swig_types[1467] +#define SWIGTYPE_p_FIX__TradingSessionID swig_types[1468] +#define SWIGTYPE_p_FIX__TradingSessionSubID swig_types[1469] +#define SWIGTYPE_p_FIX__TransBkdTime swig_types[1470] +#define SWIGTYPE_p_FIX__TransactTime swig_types[1471] +#define SWIGTYPE_p_FIX__TransferReason swig_types[1472] +#define SWIGTYPE_p_FIX__TrdMatchID swig_types[1473] +#define SWIGTYPE_p_FIX__TrdRegTimestamp swig_types[1474] +#define SWIGTYPE_p_FIX__TrdRegTimestampOrigin swig_types[1475] +#define SWIGTYPE_p_FIX__TrdRegTimestampType swig_types[1476] +#define SWIGTYPE_p_FIX__TrdRepIndicator swig_types[1477] +#define SWIGTYPE_p_FIX__TrdRepPartyRole swig_types[1478] +#define SWIGTYPE_p_FIX__TrdRptStatus swig_types[1479] +#define SWIGTYPE_p_FIX__TrdSubType swig_types[1480] +#define SWIGTYPE_p_FIX__TrdType swig_types[1481] +#define SWIGTYPE_p_FIX__TriggerAction swig_types[1482] +#define SWIGTYPE_p_FIX__TriggerNewPrice swig_types[1483] +#define SWIGTYPE_p_FIX__TriggerNewQty swig_types[1484] +#define SWIGTYPE_p_FIX__TriggerOrderType swig_types[1485] +#define SWIGTYPE_p_FIX__TriggerPrice swig_types[1486] +#define SWIGTYPE_p_FIX__TriggerPriceDirection swig_types[1487] +#define SWIGTYPE_p_FIX__TriggerPriceType swig_types[1488] +#define SWIGTYPE_p_FIX__TriggerPriceTypeScope swig_types[1489] +#define SWIGTYPE_p_FIX__TriggerSecurityDesc swig_types[1490] +#define SWIGTYPE_p_FIX__TriggerSecurityID swig_types[1491] +#define SWIGTYPE_p_FIX__TriggerSecurityIDSource swig_types[1492] +#define SWIGTYPE_p_FIX__TriggerSymbol swig_types[1493] +#define SWIGTYPE_p_FIX__TriggerTradingSessionID swig_types[1494] +#define SWIGTYPE_p_FIX__TriggerTradingSessionSubID swig_types[1495] +#define SWIGTYPE_p_FIX__TriggerType swig_types[1496] +#define SWIGTYPE_p_FIX__URLLink swig_types[1497] +#define SWIGTYPE_p_FIX__UTCDATE swig_types[1498] +#define SWIGTYPE_p_FIX__UTCDATEONLY swig_types[1499] +#define SWIGTYPE_p_FIX__UTCTIMEONLY swig_types[1500] +#define SWIGTYPE_p_FIX__UTCTIMESTAMP swig_types[1501] +#define SWIGTYPE_p_FIX__UnderlyingAdjustedQuantity swig_types[1502] +#define SWIGTYPE_p_FIX__UnderlyingAllocationPercent swig_types[1503] +#define SWIGTYPE_p_FIX__UnderlyingAttachmentPoint swig_types[1504] +#define SWIGTYPE_p_FIX__UnderlyingCFICode swig_types[1505] +#define SWIGTYPE_p_FIX__UnderlyingCPProgram swig_types[1506] +#define SWIGTYPE_p_FIX__UnderlyingCPRegType swig_types[1507] +#define SWIGTYPE_p_FIX__UnderlyingCapValue swig_types[1508] +#define SWIGTYPE_p_FIX__UnderlyingCashAmount swig_types[1509] +#define SWIGTYPE_p_FIX__UnderlyingCashType swig_types[1510] +#define SWIGTYPE_p_FIX__UnderlyingCollectAmount swig_types[1511] +#define SWIGTYPE_p_FIX__UnderlyingContractMultiplier swig_types[1512] +#define SWIGTYPE_p_FIX__UnderlyingContractMultiplierUnit swig_types[1513] +#define SWIGTYPE_p_FIX__UnderlyingCountryOfIssue swig_types[1514] +#define SWIGTYPE_p_FIX__UnderlyingCouponPaymentDate swig_types[1515] +#define SWIGTYPE_p_FIX__UnderlyingCouponRate swig_types[1516] +#define SWIGTYPE_p_FIX__UnderlyingCreditRating swig_types[1517] +#define SWIGTYPE_p_FIX__UnderlyingCurrency swig_types[1518] +#define SWIGTYPE_p_FIX__UnderlyingCurrentValue swig_types[1519] +#define SWIGTYPE_p_FIX__UnderlyingDeliveryAmount swig_types[1520] +#define SWIGTYPE_p_FIX__UnderlyingDetachmentPoint swig_types[1521] +#define SWIGTYPE_p_FIX__UnderlyingDirtyPrice swig_types[1522] +#define SWIGTYPE_p_FIX__UnderlyingEndPrice swig_types[1523] +#define SWIGTYPE_p_FIX__UnderlyingEndValue swig_types[1524] +#define SWIGTYPE_p_FIX__UnderlyingExerciseStyle swig_types[1525] +#define SWIGTYPE_p_FIX__UnderlyingFXRate swig_types[1526] +#define SWIGTYPE_p_FIX__UnderlyingFXRateCalc swig_types[1527] +#define SWIGTYPE_p_FIX__UnderlyingFactor swig_types[1528] +#define SWIGTYPE_p_FIX__UnderlyingFlowScheduleType swig_types[1529] +#define SWIGTYPE_p_FIX__UnderlyingIDSource swig_types[1530] +#define SWIGTYPE_p_FIX__UnderlyingInstrRegistry swig_types[1531] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyID swig_types[1532] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyIDSource swig_types[1533] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyRole swig_types[1534] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubID swig_types[1535] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubIDType swig_types[1536] +#define SWIGTYPE_p_FIX__UnderlyingIssueDate swig_types[1537] +#define SWIGTYPE_p_FIX__UnderlyingIssuer swig_types[1538] +#define SWIGTYPE_p_FIX__UnderlyingLastPx swig_types[1539] +#define SWIGTYPE_p_FIX__UnderlyingLastQty swig_types[1540] +#define SWIGTYPE_p_FIX__UnderlyingLegCFICode swig_types[1541] +#define SWIGTYPE_p_FIX__UnderlyingLegMaturityDate swig_types[1542] +#define SWIGTYPE_p_FIX__UnderlyingLegMaturityMonthYear swig_types[1543] +#define SWIGTYPE_p_FIX__UnderlyingLegMaturityTime swig_types[1544] +#define SWIGTYPE_p_FIX__UnderlyingLegOptAttribute swig_types[1545] +#define SWIGTYPE_p_FIX__UnderlyingLegPutOrCall swig_types[1546] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltID swig_types[1547] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltIDSource swig_types[1548] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityDesc swig_types[1549] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityExchange swig_types[1550] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityID swig_types[1551] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityIDSource swig_types[1552] +#define SWIGTYPE_p_FIX__UnderlyingLegSecuritySubType swig_types[1553] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityType swig_types[1554] +#define SWIGTYPE_p_FIX__UnderlyingLegStrikePrice swig_types[1555] +#define SWIGTYPE_p_FIX__UnderlyingLegSymbol swig_types[1556] +#define SWIGTYPE_p_FIX__UnderlyingLegSymbolSfx swig_types[1557] +#define SWIGTYPE_p_FIX__UnderlyingLocaleOfIssue swig_types[1558] +#define SWIGTYPE_p_FIX__UnderlyingMaturityDate swig_types[1559] +#define SWIGTYPE_p_FIX__UnderlyingMaturityDay swig_types[1560] +#define SWIGTYPE_p_FIX__UnderlyingMaturityMonthYear swig_types[1561] +#define SWIGTYPE_p_FIX__UnderlyingMaturityTime swig_types[1562] +#define SWIGTYPE_p_FIX__UnderlyingNotionalPercentageOutstanding swig_types[1563] +#define SWIGTYPE_p_FIX__UnderlyingOptAttribute swig_types[1564] +#define SWIGTYPE_p_FIX__UnderlyingOriginalNotionalPercentageOutstanding swig_types[1565] +#define SWIGTYPE_p_FIX__UnderlyingPayAmount swig_types[1566] +#define SWIGTYPE_p_FIX__UnderlyingPriceDeterminationMethod swig_types[1567] +#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasure swig_types[1568] +#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasureQty swig_types[1569] +#define SWIGTYPE_p_FIX__UnderlyingProduct swig_types[1570] +#define SWIGTYPE_p_FIX__UnderlyingPutOrCall swig_types[1571] +#define SWIGTYPE_p_FIX__UnderlyingPx swig_types[1572] +#define SWIGTYPE_p_FIX__UnderlyingQty swig_types[1573] +#define SWIGTYPE_p_FIX__UnderlyingRedemptionDate swig_types[1574] +#define SWIGTYPE_p_FIX__UnderlyingRepoCollateralSecurityType swig_types[1575] +#define SWIGTYPE_p_FIX__UnderlyingRepurchaseRate swig_types[1576] +#define SWIGTYPE_p_FIX__UnderlyingRepurchaseTerm swig_types[1577] +#define SWIGTYPE_p_FIX__UnderlyingRestructuringType swig_types[1578] +#define SWIGTYPE_p_FIX__UnderlyingSecurityAltID swig_types[1579] +#define SWIGTYPE_p_FIX__UnderlyingSecurityAltIDSource swig_types[1580] +#define SWIGTYPE_p_FIX__UnderlyingSecurityDesc swig_types[1581] +#define SWIGTYPE_p_FIX__UnderlyingSecurityExchange swig_types[1582] +#define SWIGTYPE_p_FIX__UnderlyingSecurityID swig_types[1583] +#define SWIGTYPE_p_FIX__UnderlyingSecurityIDSource swig_types[1584] +#define SWIGTYPE_p_FIX__UnderlyingSecuritySubType swig_types[1585] +#define SWIGTYPE_p_FIX__UnderlyingSecurityType swig_types[1586] +#define SWIGTYPE_p_FIX__UnderlyingSeniority swig_types[1587] +#define SWIGTYPE_p_FIX__UnderlyingSettlMethod swig_types[1588] +#define SWIGTYPE_p_FIX__UnderlyingSettlPrice swig_types[1589] +#define SWIGTYPE_p_FIX__UnderlyingSettlPriceType swig_types[1590] +#define SWIGTYPE_p_FIX__UnderlyingSettlementDate swig_types[1591] +#define SWIGTYPE_p_FIX__UnderlyingSettlementStatus swig_types[1592] +#define SWIGTYPE_p_FIX__UnderlyingSettlementType swig_types[1593] +#define SWIGTYPE_p_FIX__UnderlyingStartValue swig_types[1594] +#define SWIGTYPE_p_FIX__UnderlyingStateOrProvinceOfIssue swig_types[1595] +#define SWIGTYPE_p_FIX__UnderlyingStipType swig_types[1596] +#define SWIGTYPE_p_FIX__UnderlyingStipValue swig_types[1597] +#define SWIGTYPE_p_FIX__UnderlyingStrikeCurrency swig_types[1598] +#define SWIGTYPE_p_FIX__UnderlyingStrikePrice swig_types[1599] +#define SWIGTYPE_p_FIX__UnderlyingSymbol swig_types[1600] +#define SWIGTYPE_p_FIX__UnderlyingSymbolSfx swig_types[1601] +#define SWIGTYPE_p_FIX__UnderlyingTimeUnit swig_types[1602] +#define SWIGTYPE_p_FIX__UnderlyingTradingSessionID swig_types[1603] +#define SWIGTYPE_p_FIX__UnderlyingTradingSessionSubID swig_types[1604] +#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasure swig_types[1605] +#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasureQty swig_types[1606] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartyID swig_types[1607] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartyIDSource swig_types[1608] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartyRole swig_types[1609] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubID swig_types[1610] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubIDType swig_types[1611] +#define SWIGTYPE_p_FIX__UnitOfMeasure swig_types[1612] +#define SWIGTYPE_p_FIX__UnitOfMeasureQty swig_types[1613] +#define SWIGTYPE_p_FIX__UnsolicitedIndicator swig_types[1614] +#define SWIGTYPE_p_FIX__UnsupportedMessageType swig_types[1615] +#define SWIGTYPE_p_FIX__UnsupportedVersion swig_types[1616] +#define SWIGTYPE_p_FIX__Urgency swig_types[1617] +#define SWIGTYPE_p_FIX__UserRequestID swig_types[1618] +#define SWIGTYPE_p_FIX__UserRequestType swig_types[1619] +#define SWIGTYPE_p_FIX__UserStatus swig_types[1620] +#define SWIGTYPE_p_FIX__UserStatusText swig_types[1621] +#define SWIGTYPE_p_FIX__Username swig_types[1622] +#define SWIGTYPE_p_FIX__UtcDateField swig_types[1623] +#define SWIGTYPE_p_FIX__UtcTimeOnlyField swig_types[1624] +#define SWIGTYPE_p_FIX__UtcTimeStampField swig_types[1625] +#define SWIGTYPE_p_FIX__ValidUntilTime swig_types[1626] +#define SWIGTYPE_p_FIX__ValuationMethod swig_types[1627] +#define SWIGTYPE_p_FIX__ValueOfFutures swig_types[1628] +#define SWIGTYPE_p_FIX__VenueType swig_types[1629] +#define SWIGTYPE_p_FIX__Volatility swig_types[1630] +#define SWIGTYPE_p_FIX__WaveNo swig_types[1631] +#define SWIGTYPE_p_FIX__WorkingIndicator swig_types[1632] +#define SWIGTYPE_p_FIX__WtAverageLiquidity swig_types[1633] +#define SWIGTYPE_p_FIX__XMLDATA swig_types[1634] +#define SWIGTYPE_p_FIX__XmlData swig_types[1635] +#define SWIGTYPE_p_FIX__XmlDataLen swig_types[1636] +#define SWIGTYPE_p_FIX__Yield swig_types[1637] +#define SWIGTYPE_p_FIX__YieldCalcDate swig_types[1638] +#define SWIGTYPE_p_FIX__YieldRedemptionDate swig_types[1639] +#define SWIGTYPE_p_FIX__YieldRedemptionPrice swig_types[1640] +#define SWIGTYPE_p_FIX__YieldRedemptionPriceType swig_types[1641] +#define SWIGTYPE_p_FIX__YieldType swig_types[1642] +#define SWIGTYPE_p_FieldPresenceMap swig_types[1643] #define SWIGTYPE_p_FieldToGroup swig_types[1644] #define SWIGTYPE_p_FieldToName swig_types[1645] #define SWIGTYPE_p_FieldToValue swig_types[1646] #define SWIGTYPE_p_FieldTypeDataBits swig_types[1647] -#define SWIGTYPE_p_FieldTypeHeaderBits swig_types[1648] -#define SWIGTYPE_p_FieldTypeTrailerBits swig_types[1649] -#define SWIGTYPE_p_FieldTypes swig_types[1650] -#define SWIGTYPE_p_Fields swig_types[1651] -#define SWIGTYPE_p_Group swig_types[1652] -#define SWIGTYPE_p_IntArray swig_types[1653] -#define SWIGTYPE_p_IntField swig_types[1654] -#define SWIGTYPE_p_Log swig_types[1655] -#define SWIGTYPE_p_LogFactory swig_types[1656] -#define SWIGTYPE_p_MessageStore swig_types[1657] -#define SWIGTYPE_p_MessageStoreFactory swig_types[1658] -#define SWIGTYPE_p_MsgFields swig_types[1659] -#define SWIGTYPE_p_MsgType swig_types[1660] -#define SWIGTYPE_p_MsgTypeToField swig_types[1661] -#define SWIGTYPE_p_MsgTypes swig_types[1662] -#define SWIGTYPE_p_Mutex swig_types[1663] -#define SWIGTYPE_p_NameToField swig_types[1664] -#define SWIGTYPE_p_NonBodyFields swig_types[1665] -#define SWIGTYPE_p_OrderedFields swig_types[1666] -#define SWIGTYPE_p_OrderedFieldsArray swig_types[1667] -#define SWIGTYPE_p_Pack swig_types[1668] -#define SWIGTYPE_p_Responder swig_types[1669] -#define SWIGTYPE_p_SessionID swig_types[1670] -#define SWIGTYPE_p_Sg__sg_buf_ptr swig_types[1671] -#define SWIGTYPE_p_Sg__sg_buf_t swig_types[1672] -#define SWIGTYPE_p_StringField swig_types[1673] -#define SWIGTYPE_p_String__value_type swig_types[1674] -#define SWIGTYPE_p_TimeRange swig_types[1675] -#define SWIGTYPE_p_UtcDate swig_types[1676] -#define SWIGTYPE_p_UtcDateField swig_types[1677] -#define SWIGTYPE_p_UtcTimeOnly swig_types[1678] -#define SWIGTYPE_p_UtcTimeStamp swig_types[1679] -#define SWIGTYPE_p_ValueToName swig_types[1680] -#define SWIGTYPE_p_Values swig_types[1681] -#define SWIGTYPE_p_allocator_type swig_types[1682] -#define SWIGTYPE_p_bool swig_types[1683] -#define SWIGTYPE_p_char swig_types[1684] -#define SWIGTYPE_p_const_iterator swig_types[1685] -#define SWIGTYPE_p_data_type swig_types[1686] -#define SWIGTYPE_p_g_const_iterator swig_types[1687] -#define SWIGTYPE_p_g_item_const_iterator swig_types[1688] -#define SWIGTYPE_p_g_item_iterator swig_types[1689] -#define SWIGTYPE_p_g_iterator swig_types[1690] -#define SWIGTYPE_p_int swig_types[1691] -#define SWIGTYPE_p_iterator swig_types[1692] -#define SWIGTYPE_p_message_order swig_types[1693] -#define SWIGTYPE_p_p_FIX__DataDictionary swig_types[1694] -#define SWIGTYPE_p_size_type swig_types[1695] -#define SWIGTYPE_p_std__istream swig_types[1696] -#define SWIGTYPE_p_std__ostream swig_types[1697] -#define SWIGTYPE_p_std__setT_FIX__SessionID_t swig_types[1698] -#define SWIGTYPE_p_std__string swig_types[1699] -#define SWIGTYPE_p_std__string__size_type swig_types[1700] -#define SWIGTYPE_p_std__vectorT_std__string_t swig_types[1701] -#define SWIGTYPE_p_string_type swig_types[1702] -#define SWIGTYPE_p_tag_type swig_types[1703] -static swig_type_info *swig_types[1705]; -static swig_module_info swig_module = {swig_types, 1704, 0, 0, 0, 0}; +#define SWIGTYPE_p_FieldTypeGroupBits swig_types[1648] +#define SWIGTYPE_p_FieldTypeHeaderBits swig_types[1649] +#define SWIGTYPE_p_FieldTypeTrailerBits swig_types[1650] +#define SWIGTYPE_p_FieldTypes swig_types[1651] +#define SWIGTYPE_p_Fields swig_types[1652] +#define SWIGTYPE_p_Group swig_types[1653] +#define SWIGTYPE_p_IntArray swig_types[1654] +#define SWIGTYPE_p_IntField swig_types[1655] +#define SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t swig_types[1656] +#define SWIGTYPE_p_Log swig_types[1657] +#define SWIGTYPE_p_LogFactory swig_types[1658] +#define SWIGTYPE_p_MessageStore swig_types[1659] +#define SWIGTYPE_p_MessageStoreFactory swig_types[1660] +#define SWIGTYPE_p_MsgFields swig_types[1661] +#define SWIGTYPE_p_MsgType swig_types[1662] +#define SWIGTYPE_p_MsgTypeToField swig_types[1663] +#define SWIGTYPE_p_MsgTypes swig_types[1664] +#define SWIGTYPE_p_Mutex swig_types[1665] +#define SWIGTYPE_p_NameToField swig_types[1666] +#define SWIGTYPE_p_NonBodyFields swig_types[1667] +#define SWIGTYPE_p_OrderedFields swig_types[1668] +#define SWIGTYPE_p_OrderedFieldsArray swig_types[1669] +#define SWIGTYPE_p_Pack swig_types[1670] +#define SWIGTYPE_p_Responder swig_types[1671] +#define SWIGTYPE_p_SessionID swig_types[1672] +#define SWIGTYPE_p_Sg__sg_buf_ptr swig_types[1673] +#define SWIGTYPE_p_Sg__sg_buf_t swig_types[1674] +#define SWIGTYPE_p_StringField swig_types[1675] +#define SWIGTYPE_p_String__value_type swig_types[1676] +#define SWIGTYPE_p_TimeRange swig_types[1677] +#define SWIGTYPE_p_UtcDate swig_types[1678] +#define SWIGTYPE_p_UtcDateField swig_types[1679] +#define SWIGTYPE_p_UtcTimeOnly swig_types[1680] +#define SWIGTYPE_p_UtcTimeStamp swig_types[1681] +#define SWIGTYPE_p_ValueToName swig_types[1682] +#define SWIGTYPE_p_Values swig_types[1683] +#define SWIGTYPE_p_allocator_type swig_types[1684] +#define SWIGTYPE_p_bool swig_types[1685] +#define SWIGTYPE_p_char swig_types[1686] +#define SWIGTYPE_p_const_iterator swig_types[1687] +#define SWIGTYPE_p_data_type swig_types[1688] +#define SWIGTYPE_p_field_iterator swig_types[1689] +#define SWIGTYPE_p_g_const_iterator swig_types[1690] +#define SWIGTYPE_p_g_item_const_iterator swig_types[1691] +#define SWIGTYPE_p_g_item_iterator swig_types[1692] +#define SWIGTYPE_p_g_iterator swig_types[1693] +#define SWIGTYPE_p_int swig_types[1694] +#define SWIGTYPE_p_iterator swig_types[1695] +#define SWIGTYPE_p_message_order swig_types[1696] +#define SWIGTYPE_p_p_FIX__DataDictionary swig_types[1697] +#define SWIGTYPE_p_size_type swig_types[1698] +#define SWIGTYPE_p_std__istream swig_types[1699] +#define SWIGTYPE_p_std__ostream swig_types[1700] +#define SWIGTYPE_p_std__setT_FIX__SessionID_t swig_types[1701] +#define SWIGTYPE_p_std__string swig_types[1702] +#define SWIGTYPE_p_std__string__size_type swig_types[1703] +#define SWIGTYPE_p_std__vectorT_std__string_t swig_types[1704] +#define SWIGTYPE_p_string_type swig_types[1705] +#define SWIGTYPE_p_tag_type swig_types[1706] +static swig_type_info *swig_types[1708]; +static swig_module_info swig_module = {swig_types, 1707, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) @@ -11909,6 +11912,40 @@ SWIGINTERN PyObject *_wrap_delete_FieldBase(PyObject *SWIGUNUSEDPARM(self), PyOb } +SWIGINTERN PyObject *_wrap_FieldBase_setTag(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:FieldBase_setTag",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FIX__FieldBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FieldBase_setTag" "', argument " "1"" of type '" "FIX::FieldBase *""'"); + } + arg1 = reinterpret_cast< FIX::FieldBase * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "FieldBase_setTag" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + SWIG_PYTHON_THREAD_BEGIN_ALLOW; + (arg1)->setTag(arg2); + SWIG_PYTHON_THREAD_END_ALLOW; + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_FieldBase_setField(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; @@ -11992,6 +12029,32 @@ SWIGINTERN PyObject *_wrap_FieldBase_setString(PyObject *SWIGUNUSEDPARM(self), P } +SWIGINTERN PyObject *_wrap_FieldBase_getTag(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"O:FieldBase_getTag",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FIX__FieldBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FieldBase_getTag" "', argument " "1"" of type '" "FIX::FieldBase const *""'"); + } + arg1 = reinterpret_cast< FIX::FieldBase * >(argp1); + { + SWIG_PYTHON_THREAD_BEGIN_ALLOW; + result = (int)((FIX::FieldBase const *)arg1)->getTag(); + SWIG_PYTHON_THREAD_END_ALLOW; + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_FieldBase_getField(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; @@ -16883,6 +16946,32 @@ SWIGINTERN PyObject *CheckSumField_swigregister(PyObject *SWIGUNUSEDPARM(self), return SWIG_Py_Void(); } +SWIGINTERN PyObject *_wrap_FieldMap_get_allocator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FIX::FieldMap *arg1 = (FIX::FieldMap *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + FIX::FieldMap::allocator_type result; + + if (!PyArg_ParseTuple(args,(char *)"O:FieldMap_get_allocator",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FIX__FieldMap, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FieldMap_get_allocator" "', argument " "1"" of type '" "FIX::FieldMap *""'"); + } + arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); + { + SWIG_PYTHON_THREAD_BEGIN_ALLOW; + result = (arg1)->get_allocator(); + SWIG_PYTHON_THREAD_END_ALLOW; + } + resultobj = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; message_order *arg1 = 0 ; @@ -16931,36 +17020,21 @@ SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_1(PyObject *SWIGUNUSEDPARM(self), SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; - FIX::FieldMap::allocator_type *arg1 = 0 ; - message_order *arg2 = 0 ; + int *arg1 ; void *argp1 = 0 ; int res1 = 0 ; - void *argp2 = 0 ; - int res2 = 0 ; PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; FIX::FieldMap *result = 0 ; - if (!PyArg_ParseTuple(args,(char *)"OO:new_FieldMap",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 | 0); + if (!PyArg_ParseTuple(args,(char *)"O:new_FieldMap",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); - } - if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); - } - arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_message_order, 0 | 0); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_FieldMap" "', argument " "2"" of type '" "message_order const &""'"); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "2"" of type '" "message_order const &""'"); - } - arg2 = reinterpret_cast< message_order * >(argp2); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "int const []""'"); + } + arg1 = reinterpret_cast< int * >(argp1); { SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1,(message_order const &)*arg2); + result = (FIX::FieldMap *)new FIX::FieldMap((int const (*))arg1); SWIG_PYTHON_THREAD_END_ALLOW; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FIX__FieldMap, SWIG_POINTER_NEW | 0 ); @@ -16972,24 +17046,24 @@ SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_2(PyObject *SWIGUNUSEDPARM(self), SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; - FIX::FieldMap::allocator_type *arg1 = 0 ; + FIX::FieldMap *arg1 = 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; FIX::FieldMap *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_FieldMap",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 | 0); + res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_FIX__FieldMap, 0 | 0); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap const &""'"); } if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap const &""'"); } - arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); + arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); { SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1); + result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap const &)*arg1); SWIG_PYTHON_THREAD_END_ALLOW; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FIX__FieldMap, SWIG_POINTER_NEW | 0 ); @@ -17001,21 +17075,36 @@ SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_3(PyObject *SWIGUNUSEDPARM(self), SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; - int *arg1 ; + FIX::FieldMap::allocator_type *arg1 = 0 ; + message_order *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; FIX::FieldMap *result = 0 ; - if (!PyArg_ParseTuple(args,(char *)"O:new_FieldMap",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 | 0 ); + if (!PyArg_ParseTuple(args,(char *)"OO:new_FieldMap",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 | 0); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "int const []""'"); - } - arg1 = reinterpret_cast< int * >(argp1); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); + } + if (!argp1) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); + } + arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_message_order, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_FieldMap" "', argument " "2"" of type '" "message_order const &""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "2"" of type '" "message_order const &""'"); + } + arg2 = reinterpret_cast< message_order * >(argp2); { SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (FIX::FieldMap *)new FIX::FieldMap((int const (*))arg1); + result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1,(message_order const &)*arg2); SWIG_PYTHON_THREAD_END_ALLOW; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FIX__FieldMap, SWIG_POINTER_NEW | 0 ); @@ -17027,24 +17116,24 @@ SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_4(PyObject *SWIGUNUSEDPARM(self), SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_5(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; - FIX::FieldMap *arg1 = 0 ; + FIX::FieldMap::allocator_type *arg1 = 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; FIX::FieldMap *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_FieldMap",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_FIX__FieldMap, 0 | 0); + res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 | 0); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap const &""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); } if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap const &""'"); + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); } - arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); + arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); { SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap const &)*arg1); + result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1); SWIG_PYTHON_THREAD_END_ALLOW; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FIX__FieldMap, SWIG_POINTER_NEW | 0 ); @@ -17067,7 +17156,7 @@ SWIGINTERN PyObject *_wrap_new_FieldMap__SWIG_6(PyObject *SWIGUNUSEDPARM(self), FIX::FieldMap *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:new_FieldMap",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 | 0); + res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_FieldMap" "', argument " "1"" of type '" "FIX::FieldMap::allocator_type const &""'"); } @@ -17118,24 +17207,24 @@ SWIGINTERN PyObject *_wrap_new_FieldMap(PyObject *self, PyObject *args) { } if (argc == 1) { int _v; - int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_int, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_FieldMap__SWIG_3(self, args); + return _wrap_new_FieldMap__SWIG_2(self, args); } } if (argc == 1) { int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_int, 0); + int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_FIX__FieldMap, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_FieldMap__SWIG_4(self, args); + return _wrap_new_FieldMap__SWIG_3(self, args); } } if (argc == 1) { int _v; - int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_FIX__FieldMap, 0); + int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_FieldMap__SWIG_5(self, args); @@ -17143,19 +17232,19 @@ SWIGINTERN PyObject *_wrap_new_FieldMap(PyObject *self, PyObject *args) { } if (argc == 2) { int _v; - int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_message_order, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_FieldMap__SWIG_2(self, args); + return _wrap_new_FieldMap__SWIG_4(self, args); } } } if (argc == 2) { int _v; - int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_FIX__FieldMap, 0); @@ -17171,10 +17260,10 @@ SWIGINTERN PyObject *_wrap_new_FieldMap(PyObject *self, PyObject *args) { " Possible C/C++ prototypes are:\n" " FIX::FieldMap::FieldMap(message_order const &)\n" " FIX::FieldMap::FieldMap()\n" - " FIX::FieldMap::FieldMap(FIX::FieldMap::allocator_type const &,message_order const &)\n" - " FIX::FieldMap::FieldMap(FIX::FieldMap::allocator_type const &)\n" " FIX::FieldMap::FieldMap(int const [])\n" " FIX::FieldMap::FieldMap(FIX::FieldMap const &)\n" + " FIX::FieldMap::FieldMap(FIX::FieldMap::allocator_type const &,message_order const &)\n" + " FIX::FieldMap::FieldMap(FIX::FieldMap::allocator_type const &)\n" " FIX::FieldMap::FieldMap(FIX::FieldMap::allocator_type const &,FIX::FieldMap const &)\n"); return 0; } @@ -17236,7 +17325,7 @@ SWIGINTERN PyObject *_wrap_FieldMap_addField__SWIG_2(PyObject *SWIGUNUSEDPARM(se result = (arg1)->addField((FIX::FieldBase const &)*arg2); SWIG_PYTHON_THREAD_END_ALLOW; } - resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; @@ -17266,7 +17355,7 @@ SWIGINTERN PyObject *_wrap_FieldMap_addField__SWIG_5(PyObject *SWIGUNUSEDPARM(se } arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); { - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, 0 | 0); + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_field_iterator, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FieldMap_addField" "', argument " "2"" of type '" "FIX::FieldMap::iterator""'"); } @@ -17291,7 +17380,7 @@ SWIGINTERN PyObject *_wrap_FieldMap_addField__SWIG_5(PyObject *SWIGUNUSEDPARM(se result = (arg1)->addField(arg2,(FIX::FieldBase const &)*arg3); SWIG_PYTHON_THREAD_END_ALLOW; } - resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; @@ -17327,7 +17416,7 @@ SWIGINTERN PyObject *_wrap_FieldMap_addField(PyObject *self, PyObject *args) { int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__FieldMap, 0); _v = SWIG_CheckState(res); if (_v) { - int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, 0); + int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_field_iterator, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_FIX__FieldBase, 0); @@ -19473,7 +19562,7 @@ SWIGINTERN PyObject *_wrap_FieldMap_begin(PyObject *SWIGUNUSEDPARM(self), PyObje result = ((FIX::FieldMap const *)arg1)->begin(); SWIG_PYTHON_THREAD_END_ALLOW; } - resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; @@ -19499,7 +19588,7 @@ SWIGINTERN PyObject *_wrap_FieldMap_end(PyObject *SWIGUNUSEDPARM(self), PyObject result = ((FIX::FieldMap const *)arg1)->end(); SWIG_PYTHON_THREAD_END_ALLOW; } - resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + resultobj = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; @@ -19558,108 +19647,6 @@ SWIGINTERN PyObject *_wrap_FieldMap_g_end(PyObject *SWIGUNUSEDPARM(self), PyObje } -SWIGINTERN PyObject *_wrap_FieldMap_get_allocator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - FIX::FieldMap *arg1 = (FIX::FieldMap *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - FIX::FieldMap::allocator_type result; - - if (!PyArg_ParseTuple(args,(char *)"O:FieldMap_get_allocator",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FIX__FieldMap, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FieldMap_get_allocator" "', argument " "1"" of type '" "FIX::FieldMap *""'"); - } - arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); - { - SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (arg1)->get_allocator(); - SWIG_PYTHON_THREAD_END_ALLOW; - } - resultobj = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, SWIG_POINTER_OWN | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_FieldMap_create_allocator__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - std::size_t arg1 ; - size_t val1 ; - int ecode1 = 0 ; - PyObject * obj0 = 0 ; - FIX::FieldMap::allocator_type result; - - if (!PyArg_ParseTuple(args,(char *)"O:FieldMap_create_allocator",&obj0)) SWIG_fail; - ecode1 = SWIG_AsVal_size_t(obj0, &val1); - if (!SWIG_IsOK(ecode1)) { - SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "FieldMap_create_allocator" "', argument " "1"" of type '" "std::size_t""'"); - } - arg1 = static_cast< std::size_t >(val1); - { - SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = FIX::FieldMap::create_allocator(arg1); - SWIG_PYTHON_THREAD_END_ALLOW; - } - resultobj = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, SWIG_POINTER_OWN | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_FieldMap_create_allocator__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - FIX::FieldMap::allocator_type result; - - if (!PyArg_ParseTuple(args,(char *)":FieldMap_create_allocator")) SWIG_fail; - { - SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = FIX::FieldMap::create_allocator(); - SWIG_PYTHON_THREAD_END_ALLOW; - } - resultobj = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, SWIG_POINTER_OWN | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_FieldMap_create_allocator(PyObject *self, PyObject *args) { - int argc; - PyObject *argv[2]; - int ii; - - if (!PyTuple_Check(args)) SWIG_fail; - argc = args ? (int)PyObject_Length(args) : 0; - for (ii = 0; (ii < 1) && (ii < argc); ii++) { - argv[ii] = PyTuple_GET_ITEM(args,ii); - } - if (argc == 0) { - return _wrap_FieldMap_create_allocator__SWIG_1(self, args); - } - if (argc == 1) { - int _v; - { - int res = SWIG_AsVal_size_t(argv[0], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - return _wrap_FieldMap_create_allocator__SWIG_0(self, args); - } - } - -fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'FieldMap_create_allocator'.\n" - " Possible C/C++ prototypes are:\n" - " FIX::FieldMap::create_allocator(std::size_t)\n" - " FIX::FieldMap::create_allocator()\n"); - return 0; -} - - SWIGINTERN PyObject *FieldMap_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; @@ -19681,7 +19668,7 @@ SWIGINTERN PyObject *Swig_var_headerOrder_get(void) { } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::Message *result = 0 ; @@ -19698,7 +19685,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_1(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::Message::SerializationHint arg1 ; int arg2 ; @@ -19733,7 +19720,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_2(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::Message::SerializationHint arg1 ; int val1 ; @@ -19759,7 +19746,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_3(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; bool arg2 ; @@ -19815,7 +19802,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_4(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_5(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; int res1 = SWIG_OLDOBJ ; @@ -19862,7 +19849,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_5(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_6(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_5(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; @@ -19930,7 +19917,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_6(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_7(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_6(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; @@ -19989,7 +19976,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_7(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_8(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_7(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; @@ -20069,7 +20056,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_8(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_9(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_8(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; @@ -20140,7 +20127,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_9(PyObject *SWIGUNUSEDPARM(self), P } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_10(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_9(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; @@ -20191,7 +20178,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_10(PyObject *SWIGUNUSEDPARM(self), SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Message" "', argument " "3"" of type '" "FIX::DataDictionary const &""'"); } arg3 = reinterpret_cast< FIX::DataDictionary * >(argp3); - res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 ); + res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 ); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Message" "', argument " "4"" of type '" "FIX::FieldMap::allocator_type &""'"); } @@ -20232,7 +20219,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_10(PyObject *SWIGUNUSEDPARM(self), } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_11(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_10(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; @@ -20279,7 +20266,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_11(PyObject *SWIGUNUSEDPARM(self), SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Message" "', argument " "3"" of type '" "FIX::DataDictionary const &""'"); } arg3 = reinterpret_cast< FIX::DataDictionary * >(argp3); - res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 ); + res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 ); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Message" "', argument " "4"" of type '" "FIX::FieldMap::allocator_type &""'"); } @@ -20315,7 +20302,7 @@ SWIGINTERN PyObject *_wrap_new_Message__SWIG_11(PyObject *SWIGUNUSEDPARM(self), } -SWIGINTERN PyObject *_wrap_new_Message__SWIG_12(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_new_Message__SWIG_11(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::Message *arg1 = 0 ; void *argp1 = 0 ; @@ -20355,14 +20342,14 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { - return _wrap_new_Message__SWIG_1(self, args); + return _wrap_new_Message__SWIG_0(self, args); } if (argc == 1) { int _v; int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_FIX__Message, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_12(self, args); + return _wrap_new_Message__SWIG_11(self, args); } } if (argc == 1) { @@ -20372,7 +20359,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_3(self, args); + return _wrap_new_Message__SWIG_2(self, args); } } if (argc == 1) { @@ -20380,7 +20367,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0)); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_5(self, args); + return _wrap_new_Message__SWIG_4(self, args); } } if (argc == 2) { @@ -20395,7 +20382,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_2(self, args); + return _wrap_new_Message__SWIG_1(self, args); } } } @@ -20407,7 +20394,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_FIX__DataDictionary, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_7(self, args); + return _wrap_new_Message__SWIG_6(self, args); } } } @@ -20421,7 +20408,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_4(self, args); + return _wrap_new_Message__SWIG_3(self, args); } } } @@ -20436,7 +20423,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_FIX__DataDictionary, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_9(self, args); + return _wrap_new_Message__SWIG_8(self, args); } } } @@ -20454,7 +20441,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_6(self, args); + return _wrap_new_Message__SWIG_5(self, args); } } } @@ -20471,10 +20458,10 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_11(self, args); + return _wrap_new_Message__SWIG_10(self, args); } } } @@ -20496,7 +20483,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_8(self, args); + return _wrap_new_Message__SWIG_7(self, args); } } } @@ -20514,7 +20501,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { { @@ -20522,7 +20509,7 @@ SWIGINTERN PyObject *_wrap_new_Message(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_10(self, args); + return _wrap_new_Message__SWIG_9(self, args); } } } @@ -23737,6 +23724,50 @@ SWIGINTERN PyObject *_wrap___lshift____SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py SWIGINTERN PyObject *_wrap_identifyType__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + std::size_t arg2 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + MsgType result; + + if (!PyArg_ParseTuple(args,(char *)"OO:identifyType",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "identifyType" "', argument " "1"" of type '" "char const *""'"); + } + arg1 = reinterpret_cast< char * >(buf1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "identifyType" "', argument " "2"" of type '" "std::size_t""'"); + } + arg2 = static_cast< std::size_t >(val2); + try { + { + SWIG_PYTHON_THREAD_BEGIN_ALLOW; + result = FIX::identifyType((char const *)arg1,arg2); + SWIG_PYTHON_THREAD_END_ALLOW; + } + } + catch(FIX::MessageParseError &_e) { + SWIG_Python_Raise(SWIG_NewPointerObj((new FIX::MessageParseError(static_cast< const FIX::MessageParseError& >(_e))),SWIGTYPE_p_FIX__MessageParseError,SWIG_POINTER_OWN), "FIX::MessageParseError", SWIGTYPE_p_FIX__MessageParseError); SWIG_fail; + } + + resultobj = SWIG_NewPointerObj((new MsgType(static_cast< const MsgType& >(result))), SWIGTYPE_p_MsgType, SWIG_POINTER_OWN | 0 ); + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + return resultobj; +fail: + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_identifyType__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string *arg1 = 0 ; int res1 = SWIG_OLDOBJ ; @@ -23783,50 +23814,6 @@ SWIGINTERN PyObject *_wrap_identifyType__SWIG_0(PyObject *SWIGUNUSEDPARM(self), } -SWIGINTERN PyObject *_wrap_identifyType__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - char *arg1 = (char *) 0 ; - std::size_t arg2 ; - int res1 ; - char *buf1 = 0 ; - int alloc1 = 0 ; - size_t val2 ; - int ecode2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - MsgType result; - - if (!PyArg_ParseTuple(args,(char *)"OO:identifyType",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "identifyType" "', argument " "1"" of type '" "char const *""'"); - } - arg1 = reinterpret_cast< char * >(buf1); - ecode2 = SWIG_AsVal_size_t(obj1, &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "identifyType" "', argument " "2"" of type '" "std::size_t""'"); - } - arg2 = static_cast< std::size_t >(val2); - try { - { - SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = FIX::identifyType((char const *)arg1,arg2); - SWIG_PYTHON_THREAD_END_ALLOW; - } - } - catch(FIX::MessageParseError &_e) { - SWIG_Python_Raise(SWIG_NewPointerObj((new FIX::MessageParseError(static_cast< const FIX::MessageParseError& >(_e))),SWIGTYPE_p_FIX__MessageParseError,SWIG_POINTER_OWN), "FIX::MessageParseError", SWIGTYPE_p_FIX__MessageParseError); SWIG_fail; - } - - resultobj = SWIG_NewPointerObj((new MsgType(static_cast< const MsgType& >(result))), SWIGTYPE_p_MsgType, SWIG_POINTER_OWN | 0 ); - if (alloc1 == SWIG_NEWOBJ) delete[] buf1; - return resultobj; -fail: - if (alloc1 == SWIG_NEWOBJ) delete[] buf1; - return NULL; -} - - SWIGINTERN PyObject *_wrap_identifyType(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; @@ -23842,7 +23829,7 @@ SWIGINTERN PyObject *_wrap_identifyType(PyObject *self, PyObject *args) { int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0)); _v = SWIG_CheckState(res); if (_v) { - return _wrap_identifyType__SWIG_0(self, args); + return _wrap_identifyType__SWIG_1(self, args); } } if (argc == 2) { @@ -23855,7 +23842,7 @@ SWIGINTERN PyObject *_wrap_identifyType(PyObject *self, PyObject *args) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_identifyType__SWIG_1(self, args); + return _wrap_identifyType__SWIG_0(self, args); } } } @@ -23863,8 +23850,8 @@ SWIGINTERN PyObject *_wrap_identifyType(PyObject *self, PyObject *args) { fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'identifyType'.\n" " Possible C/C++ prototypes are:\n" - " FIX::identifyType(std::string const &)\n" - " FIX::identifyType(char const *,std::size_t)\n"); + " FIX::identifyType(char const *,std::size_t)\n" + " FIX::identifyType(std::string const &)\n"); return 0; } @@ -309701,6 +309688,55 @@ SWIGINTERN PyObject *SocketAcceptorBase_swigregister(PyObject *SWIGUNUSEDPARM(se return SWIG_Py_Void(); } +SWIGINTERN PyObject *_wrap_new_DataDictionaryBase(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FIX::DataDictionaryBase *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_DataDictionaryBase")) SWIG_fail; + { + SWIG_PYTHON_THREAD_BEGIN_ALLOW; + result = (FIX::DataDictionaryBase *)new FIX::DataDictionaryBase(); + SWIG_PYTHON_THREAD_END_ALLOW; + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FIX__DataDictionaryBase, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_DataDictionaryBase(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FIX::DataDictionaryBase *arg1 = (FIX::DataDictionaryBase *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_DataDictionaryBase",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FIX__DataDictionaryBase, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_DataDictionaryBase" "', argument " "1"" of type '" "FIX::DataDictionaryBase *""'"); + } + arg1 = reinterpret_cast< FIX::DataDictionaryBase * >(argp1); + { + SWIG_PYTHON_THREAD_BEGIN_ALLOW; + delete arg1; + SWIG_PYTHON_THREAD_END_ALLOW; + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *DataDictionaryBase_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_FIX__DataDictionaryBase, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + SWIGINTERN PyObject *_wrap_new_DataDictionary__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::DataDictionary *result = 0 ; @@ -311218,13 +311254,14 @@ SWIGINTERN PyObject *_wrap_DataDictionary_isFieldValue(PyObject *SWIGUNUSEDPARM( SWIGINTERN PyObject *_wrap_DataDictionary_addGroup(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - std::string *arg2 = 0 ; + FIX::DataDictionary::FieldPresenceMap::key_type *arg2 = 0 ; int arg3 ; int arg4 ; FIX::DataDictionary *arg5 = 0 ; void *argp1 = 0 ; int res1 = 0 ; - int res2 = SWIG_OLDOBJ ; + void *argp2 = 0 ; + int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; @@ -311243,17 +311280,14 @@ SWIGINTERN PyObject *_wrap_DataDictionary_addGroup(PyObject *SWIGUNUSEDPARM(self SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DataDictionary_addGroup" "', argument " "1"" of type '" "FIX::DataDictionary *""'"); } arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - { - std::string *ptr = (std::string *)0; - res2 = SWIG_AsPtr_std_string(obj1, &ptr); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_addGroup" "', argument " "2"" of type '" "std::string const &""'"); - } - if (!ptr) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_addGroup" "', argument " "2"" of type '" "std::string const &""'"); - } - arg2 = ptr; + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_addGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldPresenceMap::key_type const &""'"); } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_addGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldPresenceMap::key_type const &""'"); + } + arg2 = reinterpret_cast< FIX::DataDictionary::FieldPresenceMap::key_type * >(argp2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DataDictionary_addGroup" "', argument " "3"" of type '" "int""'"); @@ -311274,34 +311308,25 @@ SWIGINTERN PyObject *_wrap_DataDictionary_addGroup(PyObject *SWIGUNUSEDPARM(self arg5 = reinterpret_cast< FIX::DataDictionary * >(argp5); { SWIG_PYTHON_THREAD_BEGIN_ALLOW; - (arg1)->addGroup((std::string const &)*arg2,arg3,arg4,(FIX::DataDictionary const &)*arg5); + (arg1)->addGroup((FIX::DataDictionary::FieldPresenceMap::key_type const &)*arg2,arg3,arg4,(FIX::DataDictionary const &)*arg5); SWIG_PYTHON_THREAD_END_ALLOW; } resultobj = SWIG_Py_Void(); - { - if( std::string("std::string const &") == "std::string &" ) - { - if( !PyDict_Check(resultobj) ) - resultobj = PyDict_New(); - PyDict_SetItem( resultobj, PyInt_FromLong(PyDict_Size(resultobj)), PyString_FromString(arg2->c_str()) ); - } - } - if (SWIG_IsNewObj(res2)) delete arg2; return resultobj; fail: - if (SWIG_IsNewObj(res2)) delete arg2; return NULL; } -SWIGINTERN PyObject *_wrap_DataDictionary_isGroup__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_DataDictionary_isGroup(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - std::string *arg2 = 0 ; + FIX::DataDictionary::FieldPresenceMap::key_type *arg2 = 0 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; - int res2 = SWIG_OLDOBJ ; + void *argp2 = 0 ; + int res2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; @@ -311315,17 +311340,14 @@ SWIGINTERN PyObject *_wrap_DataDictionary_isGroup__SWIG_0(PyObject *SWIGUNUSEDPA SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DataDictionary_isGroup" "', argument " "1"" of type '" "FIX::DataDictionary const *""'"); } arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - { - std::string *ptr = (std::string *)0; - res2 = SWIG_AsPtr_std_string(obj1, &ptr); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_isGroup" "', argument " "2"" of type '" "std::string const &""'"); - } - if (!ptr) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_isGroup" "', argument " "2"" of type '" "std::string const &""'"); - } - arg2 = ptr; + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_isGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldPresenceMap::key_type const &""'"); } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_isGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldPresenceMap::key_type const &""'"); + } + arg2 = reinterpret_cast< FIX::DataDictionary::FieldPresenceMap::key_type * >(argp2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DataDictionary_isGroup" "', argument " "3"" of type '" "int""'"); @@ -311333,126 +311355,27 @@ SWIGINTERN PyObject *_wrap_DataDictionary_isGroup__SWIG_0(PyObject *SWIGUNUSEDPA arg3 = static_cast< int >(val3); { SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (bool)((FIX::DataDictionary const *)arg1)->isGroup((std::string const &)*arg2,arg3); + result = (bool)((FIX::DataDictionary const *)arg1)->isGroup((FIX::DataDictionary::FieldPresenceMap::key_type const &)*arg2,arg3); SWIG_PYTHON_THREAD_END_ALLOW; } resultobj = SWIG_From_bool(static_cast< bool >(result)); - { - if( std::string("std::string const &") == "std::string &" ) - { - if( !PyDict_Check(resultobj) ) - resultobj = PyDict_New(); - PyDict_SetItem( resultobj, PyInt_FromLong(PyDict_Size(resultobj)), PyString_FromString(arg2->c_str()) ); - } - } - if (SWIG_IsNewObj(res2)) delete arg2; return resultobj; fail: - if (SWIG_IsNewObj(res2)) delete arg2; return NULL; } -SWIGINTERN PyObject *_wrap_DataDictionary_isGroup__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { +SWIGINTERN PyObject *_wrap_DataDictionary_getGroup(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - FIX::DataDictionary::FieldToGroup::key_type *arg2 = 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - void *argp2 = 0 ; - int res2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - bool result; - - if (!PyArg_ParseTuple(args,(char *)"OO:DataDictionary_isGroup",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FIX__DataDictionary, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DataDictionary_isGroup" "', argument " "1"" of type '" "FIX::DataDictionary const *""'"); - } - arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0 | 0); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_isGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldToGroup::key_type const &""'"); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_isGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldToGroup::key_type const &""'"); - } - arg2 = reinterpret_cast< FIX::DataDictionary::FieldToGroup::key_type * >(argp2); - { - SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (bool)((FIX::DataDictionary const *)arg1)->isGroup((FIX::DataDictionary::FieldToGroup::key_type const &)*arg2); - SWIG_PYTHON_THREAD_END_ALLOW; - } - resultobj = SWIG_From_bool(static_cast< bool >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_DataDictionary_isGroup(PyObject *self, PyObject *args) { - int argc; - PyObject *argv[4]; - int ii; - - if (!PyTuple_Check(args)) SWIG_fail; - argc = args ? (int)PyObject_Length(args) : 0; - for (ii = 0; (ii < 3) && (ii < argc); ii++) { - argv[ii] = PyTuple_GET_ITEM(args,ii); - } - if (argc == 2) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0); - _v = SWIG_CheckState(res); - if (_v) { - return _wrap_DataDictionary_isGroup__SWIG_1(self, args); - } - } - } - if (argc == 3) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0)); - _v = SWIG_CheckState(res); - if (_v) { - { - int res = SWIG_AsVal_int(argv[2], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - return _wrap_DataDictionary_isGroup__SWIG_0(self, args); - } - } - } - } - -fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DataDictionary_isGroup'.\n" - " Possible C/C++ prototypes are:\n" - " FIX::DataDictionary::isGroup(std::string const &,int) const\n" - " FIX::DataDictionary::isGroup(FIX::DataDictionary::FieldToGroup::key_type const &) const\n"); - return 0; -} - - -SWIGINTERN PyObject *_wrap_DataDictionary_getGroup__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - std::string *arg2 = 0 ; + FIX::DataDictionary::FieldPresenceMap::key_type *arg2 = 0 ; int arg3 ; int *arg4 = 0 ; FIX::DataDictionary **arg5 = 0 ; void *argp1 = 0 ; int res1 = 0 ; - int res2 = SWIG_OLDOBJ ; + void *argp2 = 0 ; + int res2 = 0 ; int val3 ; int ecode3 = 0 ; int temp4 ; @@ -311470,17 +311393,14 @@ SWIGINTERN PyObject *_wrap_DataDictionary_getGroup__SWIG_0(PyObject *SWIGUNUSEDP SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DataDictionary_getGroup" "', argument " "1"" of type '" "FIX::DataDictionary const *""'"); } arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - { - std::string *ptr = (std::string *)0; - res2 = SWIG_AsPtr_std_string(obj1, &ptr); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_getGroup" "', argument " "2"" of type '" "std::string const &""'"); - } - if (!ptr) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_getGroup" "', argument " "2"" of type '" "std::string const &""'"); - } - arg2 = ptr; + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_getGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldPresenceMap::key_type const &""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_getGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldPresenceMap::key_type const &""'"); } + arg2 = reinterpret_cast< FIX::DataDictionary::FieldPresenceMap::key_type * >(argp2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DataDictionary_getGroup" "', argument " "3"" of type '" "int""'"); @@ -311496,18 +311416,10 @@ SWIGINTERN PyObject *_wrap_DataDictionary_getGroup__SWIG_0(PyObject *SWIGUNUSEDP } { SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (bool)((FIX::DataDictionary const *)arg1)->getGroup((std::string const &)*arg2,arg3,*arg4,(FIX::DataDictionary const *&)*arg5); + result = (bool)((FIX::DataDictionary const *)arg1)->getGroup((FIX::DataDictionary::FieldPresenceMap::key_type const &)*arg2,arg3,*arg4,(FIX::DataDictionary const *&)*arg5); SWIG_PYTHON_THREAD_END_ALLOW; } resultobj = SWIG_From_bool(static_cast< bool >(result)); - { - if( std::string("std::string const &") == "std::string &" ) - { - if( !PyDict_Check(resultobj) ) - resultobj = PyDict_New(); - PyDict_SetItem( resultobj, PyInt_FromLong(PyDict_Size(resultobj)), PyString_FromString(arg2->c_str()) ); - } - } { if( std::string("int &") == "int &" ) { @@ -311523,153 +311435,12 @@ SWIGINTERN PyObject *_wrap_DataDictionary_getGroup__SWIG_0(PyObject *SWIGUNUSEDP pDD = reinterpret_cast< FIX::DataDictionary * >(argp); *pDD = *(*arg5); } - if (SWIG_IsNewObj(res2)) delete arg2; - return resultobj; -fail: - if (SWIG_IsNewObj(res2)) delete arg2; - return NULL; -} - - -SWIGINTERN PyObject *_wrap_DataDictionary_getGroup__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - FIX::DataDictionary::FieldToGroup::key_type *arg2 = 0 ; - int *arg3 = 0 ; - FIX::DataDictionary **arg4 = 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - void *argp2 = 0 ; - int res2 = 0 ; - int temp3 ; - FIX::DataDictionary *temp4 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - PyObject * obj2 = 0 ; - PyObject * obj3 = 0 ; - bool result; - - if (!PyArg_ParseTuple(args,(char *)"OOOO:DataDictionary_getGroup",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FIX__DataDictionary, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DataDictionary_getGroup" "', argument " "1"" of type '" "FIX::DataDictionary const *""'"); - } - arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0 | 0); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DataDictionary_getGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldToGroup::key_type const &""'"); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DataDictionary_getGroup" "', argument " "2"" of type '" "FIX::DataDictionary::FieldToGroup::key_type const &""'"); - } - arg2 = reinterpret_cast< FIX::DataDictionary::FieldToGroup::key_type * >(argp2); - { - SWIG_AsVal_int(obj2, &temp3); - arg3 = &temp3; - } - { - arg4 = new FIX::DataDictionary*[1]; - *arg4 = temp4; - } - { - SWIG_PYTHON_THREAD_BEGIN_ALLOW; - result = (bool)((FIX::DataDictionary const *)arg1)->getGroup((FIX::DataDictionary::FieldToGroup::key_type const &)*arg2,*arg3,(FIX::DataDictionary const *&)*arg4); - SWIG_PYTHON_THREAD_END_ALLOW; - } - resultobj = SWIG_From_bool(static_cast< bool >(result)); - { - if( std::string("int &") == "int &" ) - { - if( !PyDict_Check(resultobj) ) - resultobj = PyDict_New(); - PyDict_SetItem( resultobj, PyInt_FromLong(PyDict_Size(resultobj)), PyInt_FromLong(*arg3) ); - } - } - { - void* argp; - FIX::DataDictionary* pDD = 0; - int res = SWIG_ConvertPtr(obj3, &argp, SWIGTYPE_p_FIX__DataDictionary, 0 ); - pDD = reinterpret_cast< FIX::DataDictionary * >(argp); - *pDD = *(*arg4); - } return resultobj; fail: return NULL; } -SWIGINTERN PyObject *_wrap_DataDictionary_getGroup(PyObject *self, PyObject *args) { - int argc; - PyObject *argv[6]; - int ii; - - if (!PyTuple_Check(args)) SWIG_fail; - argc = args ? (int)PyObject_Length(args) : 0; - for (ii = 0; (ii < 5) && (ii < argc); ii++) { - argv[ii] = PyTuple_GET_ITEM(args,ii); - } - if (argc == 4) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[2], &vptr, SWIGTYPE_p_int, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - return _wrap_DataDictionary_getGroup__SWIG_1(self, args); - } - } - } - } - } - if (argc == 5) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0)); - _v = SWIG_CheckState(res); - if (_v) { - { - int res = SWIG_AsVal_int(argv[2], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_int, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[4], &vptr, SWIGTYPE_p_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - return _wrap_DataDictionary_getGroup__SWIG_0(self, args); - } - } - } - } - } - } - -fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DataDictionary_getGroup'.\n" - " Possible C/C++ prototypes are:\n" - " FIX::DataDictionary::getGroup(std::string const &,int,int &,FIX::DataDictionary const *&) const\n" - " FIX::DataDictionary::getGroup(FIX::DataDictionary::FieldToGroup::key_type const &,int &,FIX::DataDictionary const *&) const\n"); - return 0; -} - - SWIGINTERN PyObject *_wrap_DataDictionary_isDataField(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; @@ -312338,8 +312109,10 @@ static PyMethodDef SwigMethods[] = { { (char *)"FieldTag_swigregister", FieldTag_swigregister, METH_VARARGS, NULL}, { (char *)"new_FieldBase", _wrap_new_FieldBase, METH_VARARGS, NULL}, { (char *)"delete_FieldBase", _wrap_delete_FieldBase, METH_VARARGS, NULL}, + { (char *)"FieldBase_setTag", _wrap_FieldBase_setTag, METH_VARARGS, NULL}, { (char *)"FieldBase_setField", _wrap_FieldBase_setField, METH_VARARGS, NULL}, { (char *)"FieldBase_setString", _wrap_FieldBase_setString, METH_VARARGS, NULL}, + { (char *)"FieldBase_getTag", _wrap_FieldBase_getTag, METH_VARARGS, NULL}, { (char *)"FieldBase_getField", _wrap_FieldBase_getField, METH_VARARGS, NULL}, { (char *)"FieldBase_getSgBuf", _wrap_FieldBase_getSgBuf, METH_VARARGS, NULL}, { (char *)"FieldBase_getString", _wrap_FieldBase_getString, METH_VARARGS, NULL}, @@ -312417,6 +312190,7 @@ static PyMethodDef SwigMethods[] = { { (char *)"CheckSumField_getValue", _wrap_CheckSumField_getValue, METH_VARARGS, NULL}, { (char *)"delete_CheckSumField", _wrap_delete_CheckSumField, METH_VARARGS, NULL}, { (char *)"CheckSumField_swigregister", CheckSumField_swigregister, METH_VARARGS, NULL}, + { (char *)"FieldMap_get_allocator", _wrap_FieldMap_get_allocator, METH_VARARGS, NULL}, { (char *)"new_FieldMap", _wrap_new_FieldMap, METH_VARARGS, NULL}, { (char *)"delete_FieldMap", _wrap_delete_FieldMap, METH_VARARGS, NULL}, { (char *)"FieldMap_addField", _wrap_FieldMap_addField, METH_VARARGS, NULL}, @@ -312447,8 +312221,6 @@ static PyMethodDef SwigMethods[] = { { (char *)"FieldMap_end", _wrap_FieldMap_end, METH_VARARGS, NULL}, { (char *)"FieldMap_g_begin", _wrap_FieldMap_g_begin, METH_VARARGS, NULL}, { (char *)"FieldMap_g_end", _wrap_FieldMap_g_end, METH_VARARGS, NULL}, - { (char *)"FieldMap_get_allocator", _wrap_FieldMap_get_allocator, METH_VARARGS, NULL}, - { (char *)"FieldMap_create_allocator", _wrap_FieldMap_create_allocator, METH_VARARGS, NULL}, { (char *)"FieldMap_swigregister", FieldMap_swigregister, METH_VARARGS, NULL}, { (char *)"new_Message", _wrap_new_Message, METH_VARARGS, NULL}, { (char *)"Message_InitializeXML", _wrap_Message_InitializeXML, METH_VARARGS, NULL}, @@ -317379,6 +317151,9 @@ static PyMethodDef SwigMethods[] = { { (char *)"new_SocketAcceptorBase", _wrap_new_SocketAcceptorBase, METH_VARARGS, NULL}, { (char *)"delete_SocketAcceptorBase", _wrap_delete_SocketAcceptorBase, METH_VARARGS, NULL}, { (char *)"SocketAcceptorBase_swigregister", SocketAcceptorBase_swigregister, METH_VARARGS, NULL}, + { (char *)"new_DataDictionaryBase", _wrap_new_DataDictionaryBase, METH_VARARGS, NULL}, + { (char *)"delete_DataDictionaryBase", _wrap_delete_DataDictionaryBase, METH_VARARGS, NULL}, + { (char *)"DataDictionaryBase_swigregister", DataDictionaryBase_swigregister, METH_VARARGS, NULL}, { (char *)"new_DataDictionary", _wrap_new_DataDictionary, METH_VARARGS, NULL}, { (char *)"delete_DataDictionary", _wrap_delete_DataDictionary, METH_VARARGS, NULL}, { (char *)"DataDictionary_readFromURL", _wrap_DataDictionary_readFromURL, METH_VARARGS, NULL}, @@ -317446,6 +317221,9 @@ static void *_p_IntArrayTo_p_int(void *x, int *SWIGUNUSEDPARM(newmemory)) { static void *_p_FIX__SocketInitiatorTo_p_FIX__Initiator(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((FIX::Initiator *) ((FIX::SocketInitiator *) x)); } +static void *_p_FIX__DataDictionaryTo_p_FIX__DataDictionaryBase(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((FIX::DataDictionaryBase *) ((FIX::DataDictionary *) x)); +} static void *_p_FIX__SocketAcceptorTo_p_FIX__Acceptor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((FIX::Acceptor *) ((FIX::SocketAcceptor *) x)); } @@ -327022,8 +326800,9 @@ static swig_type_info _swigt__p_FIX__DATA = {"_p_FIX__DATA", "FIX::DATA *", 0, 0 static swig_type_info _swigt__p_FIX__DAYOFMONTH = {"_p_FIX__DAYOFMONTH", "FIX::DAYOFMONTH *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DKReason = {"_p_FIX__DKReason", "FIX::DKReason *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DataDictionary = {"_p_FIX__DataDictionary", "FIX::DataDictionary *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FIX__DataDictionaryBase = {"_p_FIX__DataDictionaryBase", "FIX::DataDictionaryBase *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DataDictionaryNotFound = {"_p_FIX__DataDictionaryNotFound", "FIX::DataDictionaryNotFound *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_FIX__DataDictionary__FieldToGroup__key_type = {"_p_FIX__DataDictionary__FieldToGroup__key_type", "FIX::DataDictionary::FieldToGroup::key_type *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FIX__DataDictionary__FieldPresenceMap__key_type = {"_p_FIX__DataDictionary__FieldPresenceMap__key_type", "FIX::DataDictionary::FieldPresenceMap::key_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DateOfBirth = {"_p_FIX__DateOfBirth", "FIX::DateOfBirth *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DatedDate = {"_p_FIX__DatedDate", "FIX::DatedDate *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DayAvgPx = {"_p_FIX__DayAvgPx", "FIX::DayAvgPx *", 0, 0, (void*)0, 0}; @@ -327235,8 +327014,6 @@ static swig_type_info _swigt__p_FIX__FeeMultiplier = {"_p_FIX__FeeMultiplier", " static swig_type_info _swigt__p_FIX__FieldBase = {"_p_FIX__FieldBase", "FIX::FieldBase *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldConvertError = {"_p_FIX__FieldConvertError", "FIX::FieldConvertError *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldMap = {"_p_FIX__FieldMap", "FIX::FieldMap *|FIX::Trailer *|FIX::Header *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_FIX__FieldMap__Fields__allocator_type = {"_p_FIX__FieldMap__Fields__allocator_type", "FIX::FieldMap::Fields::allocator_type *|FIX::FieldMap::allocator_type *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_FIX__FieldMap__Fields__const_iterator = {"_p_FIX__FieldMap__Fields__const_iterator", "FIX::FieldMap::Fields::const_iterator *|FIX::FieldMap::iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldMap__Groups__const_iterator = {"_p_FIX__FieldMap__Groups__const_iterator", "FIX::FieldMap::Groups::const_iterator *|FIX::FieldMap::g_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldNotFound = {"_p_FIX__FieldNotFound", "FIX::FieldNotFound *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldTag = {"_p_FIX__FieldTag", "FIX::FieldTag *", 0, 0, (void*)0, 0}; @@ -328405,10 +328182,12 @@ static swig_type_info _swigt__p_FIX__YieldRedemptionDate = {"_p_FIX__YieldRedemp static swig_type_info _swigt__p_FIX__YieldRedemptionPrice = {"_p_FIX__YieldRedemptionPrice", "FIX::YieldRedemptionPrice *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__YieldRedemptionPriceType = {"_p_FIX__YieldRedemptionPriceType", "FIX::YieldRedemptionPriceType *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__YieldType = {"_p_FIX__YieldType", "FIX::YieldType *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FieldPresenceMap = {"_p_FieldPresenceMap", "FieldPresenceMap *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldToGroup = {"_p_FieldToGroup", "FieldToGroup *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldToName = {"_p_FieldToName", "FieldToName *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldToValue = {"_p_FieldToValue", "FieldToValue *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypeDataBits = {"_p_FieldTypeDataBits", "FieldTypeDataBits *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FieldTypeGroupBits = {"_p_FieldTypeGroupBits", "FieldTypeGroupBits *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypeHeaderBits = {"_p_FieldTypeHeaderBits", "FieldTypeHeaderBits *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypeTrailerBits = {"_p_FieldTypeTrailerBits", "FieldTypeTrailerBits *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypes = {"_p_FieldTypes", "FieldTypes *", 0, 0, (void*)0, 0}; @@ -328416,6 +328195,7 @@ static swig_type_info _swigt__p_Fields = {"_p_Fields", "Fields *", 0, 0, (void*) static swig_type_info _swigt__p_Group = {"_p_Group", "Group *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_IntArray = {"_p_IntArray", "IntArray *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_IntField = {"_p_IntField", "IntField *|LengthField *|NumInGroupField *|SeqNumField *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ItemAllocatorT_stored_type_NodeList_t = {"_p_ItemAllocatorT_stored_type_NodeList_t", "FIX::FieldMap::allocator_type *|ItemAllocator< stored_type,NodeList > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_Log = {"_p_Log", "Log *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_LogFactory = {"_p_LogFactory", "LogFactory *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_MessageStore = {"_p_MessageStore", "MessageStore *", 0, 0, (void*)0, 0}; @@ -328448,6 +328228,7 @@ static swig_type_info _swigt__p_bool = {"_p_bool", "bool *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_const_iterator = {"_p_const_iterator", "const_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_data_type = {"_p_data_type", "data_type *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_field_iterator = {"_p_field_iterator", "field_iterator *|FIX::FieldMap::iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_g_const_iterator = {"_p_g_const_iterator", "g_const_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_g_item_const_iterator = {"_p_g_item_const_iterator", "g_item_const_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_g_item_iterator = {"_p_g_item_iterator", "g_item_iterator *", 0, 0, (void*)0, 0}; @@ -328728,8 +328509,9 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_FIX__DAYOFMONTH, &_swigt__p_FIX__DKReason, &_swigt__p_FIX__DataDictionary, + &_swigt__p_FIX__DataDictionaryBase, &_swigt__p_FIX__DataDictionaryNotFound, - &_swigt__p_FIX__DataDictionary__FieldToGroup__key_type, + &_swigt__p_FIX__DataDictionary__FieldPresenceMap__key_type, &_swigt__p_FIX__DateOfBirth, &_swigt__p_FIX__DatedDate, &_swigt__p_FIX__DayAvgPx, @@ -328941,8 +328723,6 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_FIX__FieldBase, &_swigt__p_FIX__FieldConvertError, &_swigt__p_FIX__FieldMap, - &_swigt__p_FIX__FieldMap__Fields__allocator_type, - &_swigt__p_FIX__FieldMap__Fields__const_iterator, &_swigt__p_FIX__FieldMap__Groups__const_iterator, &_swigt__p_FIX__FieldNotFound, &_swigt__p_FIX__FieldTag, @@ -330111,10 +329891,12 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_FIX__YieldRedemptionPrice, &_swigt__p_FIX__YieldRedemptionPriceType, &_swigt__p_FIX__YieldType, + &_swigt__p_FieldPresenceMap, &_swigt__p_FieldToGroup, &_swigt__p_FieldToName, &_swigt__p_FieldToValue, &_swigt__p_FieldTypeDataBits, + &_swigt__p_FieldTypeGroupBits, &_swigt__p_FieldTypeHeaderBits, &_swigt__p_FieldTypeTrailerBits, &_swigt__p_FieldTypes, @@ -330122,6 +329904,7 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_Group, &_swigt__p_IntArray, &_swigt__p_IntField, + &_swigt__p_ItemAllocatorT_stored_type_NodeList_t, &_swigt__p_Log, &_swigt__p_LogFactory, &_swigt__p_MessageStore, @@ -330154,6 +329937,7 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_char, &_swigt__p_const_iterator, &_swigt__p_data_type, + &_swigt__p_field_iterator, &_swigt__p_g_const_iterator, &_swigt__p_g_item_const_iterator, &_swigt__p_g_item_iterator, @@ -330434,8 +330218,9 @@ static swig_cast_info _swigc__p_FIX__DATA[] = { {&_swigt__p_FIX__DATA, 0, 0, 0} static swig_cast_info _swigc__p_FIX__DAYOFMONTH[] = { {&_swigt__p_FIX__DAYOFMONTH, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DKReason[] = { {&_swigt__p_FIX__DKReason, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DataDictionary[] = { {&_swigt__p_FIX__DataDictionary, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FIX__DataDictionaryBase[] = { {&_swigt__p_FIX__DataDictionary, _p_FIX__DataDictionaryTo_p_FIX__DataDictionaryBase, 0, 0}, {&_swigt__p_FIX__DataDictionaryBase, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DataDictionaryNotFound[] = { {&_swigt__p_FIX__DataDictionaryNotFound, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_FIX__DataDictionary__FieldToGroup__key_type[] = { {&_swigt__p_FIX__DataDictionary__FieldToGroup__key_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FIX__DataDictionary__FieldPresenceMap__key_type[] = { {&_swigt__p_FIX__DataDictionary__FieldPresenceMap__key_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DateOfBirth[] = { {&_swigt__p_FIX__DateOfBirth, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DatedDate[] = { {&_swigt__p_FIX__DatedDate, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DayAvgPx[] = { {&_swigt__p_FIX__DayAvgPx, 0, 0, 0},{0, 0, 0, 0}}; @@ -330647,8 +330432,6 @@ static swig_cast_info _swigc__p_FIX__FeeMultiplier[] = { {&_swigt__p_FIX__FeeMu static swig_cast_info _swigc__p_FIX__FieldBase[] = { {&_swigt__p_FIX__CFICode, _p_FIX__CFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCFICode, _p_FIX__UnderlyingCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeCFICode, _p_FIX__DerivativeCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCFICode, _p_FIX__LegCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegCFICode, _p_FIX__UnderlyingLegCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYearFormat, _p_FIX__MaturityMonthYearFormatTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartCash, _p_FIX__StartCashTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPriceUnitOfMeasure, _p_FIX__UnderlyingPriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingUnitOfMeasure, _p_FIX__UnderlyingUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegUnitOfMeasure, _p_FIX__LegUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceUnitOfMeasure, _p_FIX__PriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnitOfMeasure, _p_FIX__UnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPriceUnitOfMeasure, _p_FIX__LegPriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeUnitOfMeasure, _p_FIX__DerivativeUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePriceUnitOfMeasure, _p_FIX__DerivativePriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTradeID, _p_FIX__OrigTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FirmTradeID, _p_FIX__FirmTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryFirmTradeID, _p_FIX__SecondaryFirmTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeID, _p_FIX__TradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradeID, _p_FIX__SecondaryTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigSecondaryTradeID, _p_FIX__OrigSecondaryTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Yield, _p_FIX__YieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityType, _p_FIX__UnderlyingSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityType, _p_FIX__SecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RepoCollateralSecurityType, _p_FIX__RepoCollateralSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRepoCollateralSecurityType, _p_FIX__LegRepoCollateralSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpirationQtyType, _p_FIX__ExpirationQtyTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityType, _p_FIX__LegSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuantityType, _p_FIX__QuantityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityType, _p_FIX__DerivativeSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRepoCollateralSecurityType, _p_FIX__UnderlyingRepoCollateralSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QtyType, _p_FIX__QtyTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityType, _p_FIX__UnderlyingLegSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Account, _p_FIX__AccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingAccount, _p_FIX__ClearingAccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocAccount, _p_FIX__LegAllocAccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAccount, _p_FIX__AllocAccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDImplicitDelete, _p_FIX__MDImplicitDeleteTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegTimeUnit, _p_FIX__LegTimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeUnit, _p_FIX__TimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeTimeUnit, _p_FIX__DerivativeTimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingTimeUnit, _p_FIX__UnderlyingTimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StandInstDbID, _p_FIX__StandInstDbIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotifyBrokerOfCredit, _p_FIX__NotifyBrokerOfCreditTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BrokerOfCredit, _p_FIX__BrokerOfCreditTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecuritySubType, _p_FIX__UnderlyingSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecuritySubType, _p_FIX__LegSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecuritySubType, _p_FIX__DerivativeSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySubType, _p_FIX__SecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecuritySubType, _p_FIX__UnderlyingLegSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdSubType, _p_FIX__TrdSubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ShortSaleReason, _p_FIX__ShortSaleReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeleteReason, _p_FIX__DeleteReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocCancReplaceReason, _p_FIX__AllocCancReplaceReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DKReason, _p_FIX__DKReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkRequestID, _p_FIX__NetworkRequestIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserRequestID, _p_FIX__UserRequestIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestID, _p_FIX__TradeRequestIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarginExcess, _p_FIX__MarginExcessTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistRejReasonText, _p_FIX__RegistRejReasonTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraTradeTime, _p_FIX__ContraTradeTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoEvents, _p_FIX__NoEventsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeEvents, _p_FIX__NoDerivativeEventsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLastQty, _p_FIX__UnderlyingLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CalculatedCcyLastQty, _p_FIX__CalculatedCcyLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideLastQty, _p_FIX__SideLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCalculatedCcyLastQty, _p_FIX__LegCalculatedCcyLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLastQty, _p_FIX__LegLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastQty, _p_FIX__LastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CheckSumField, _p_FIX__CheckSumFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Username, _p_FIX__UsernameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintRptID, _p_FIX__PosMaintRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContIntRptID, _p_FIX__ContIntRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikeValue, _p_FIX__DerivativeStrikeValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeValue, _p_FIX__StrikeValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptPayoutType, _p_FIX__OptPayoutTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedText, _p_FIX__EncodedTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__GapFillFlag, _p_FIX__GapFillFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketDepth, _p_FIX__MarketDepthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StopPx, _p_FIX__StopPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDPriceLevel, _p_FIX__MDPriceLevelTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteResponseLevel, _p_FIX__QuoteResponseLevelTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldCalcDate, _p_FIX__YieldCalcDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollRptID, _p_FIX__CollRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegNumber, _p_FIX__LegNumberTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosType, _p_FIX__PosTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContAmtType, _p_FIX__ContAmtTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosAmtType, _p_FIX__PosAmtTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstID, _p_FIX__SettlInstIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReportedPx, _p_FIX__ReportedPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastFragment, _p_FIX__LastFragmentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceLimitType, _p_FIX__PriceLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegLimitType, _p_FIX__PegLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryPriceLimitType, _p_FIX__SecondaryPriceLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionLimitType, _p_FIX__DiscretionLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegStipulations, _p_FIX__NoLegStipulationsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStipulations, _p_FIX__NoStipulationsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ShortQty, _p_FIX__ShortQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SellerDays, _p_FIX__SellerDaysTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RptSeq, _p_FIX__RptSeqTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionOffsetType, _p_FIX__DiscretionOffsetTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegOffsetType, _p_FIX__PegOffsetTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesEndTime, _p_FIX__TradSesEndTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventEndTime, _p_FIX__ComplexEventEndTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TierCode, _p_FIX__TierCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Benchmark, _p_FIX__BenchmarkTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SpreadToBenchmark, _p_FIX__SpreadToBenchmarkTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TransferReason, _p_FIX__TransferReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnRejectReason, _p_FIX__CollAsgnRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRequestRejectReason, _p_FIX__QuoteRequestRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SessionRejectReason, _p_FIX__SessionRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListRejectReason, _p_FIX__ListRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnReason, _p_FIX__CollAsgnReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRejectReason, _p_FIX__QuoteRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportRejectReason, _p_FIX__TradeReportRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnRejReason, _p_FIX__StreamAsgnRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteEntryRejectReason, _p_FIX__QuoteEntryRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecRestatementReason, _p_FIX__ExecRestatementReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdRejReason, _p_FIX__OrdRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassCancelRejectReason, _p_FIX__MassCancelRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesStatusRejReason, _p_FIX__TradSesStatusRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlRejReason, _p_FIX__CxlRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmRejReason, _p_FIX__ConfirmRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionRejectReason, _p_FIX__MassActionRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefOrdIDReason, _p_FIX__RefOrdIDReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDReqRejReason, _p_FIX__MDReqRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BusinessRejectReason, _p_FIX__BusinessRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocText, _p_FIX__AllocTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedAllocText, _p_FIX__EncodedAllocTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliverToSubID, _p_FIX__DeliverToSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeCurr, _p_FIX__MiscFeeCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligMsgID, _p_FIX__SettlObligMsgIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReportedPxDiff, _p_FIX__ReportedPxDiffTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoComplexEvents, _p_FIX__NoComplexEventsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNestedInstrAttrib, _p_FIX__NoNestedInstrAttribTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoInstrAttrib, _p_FIX__NoInstrAttribTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeInstrAttrib, _p_FIX__NoDerivativeInstrAttribTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTrdRepIndicators, _p_FIX__NoTrdRepIndicatorsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStatsIndicators, _p_FIX__NoStatsIndicatorsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoQuoteSets, _p_FIX__NoQuoteSetsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BeginSeqNo, _p_FIX__BeginSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventPx, _p_FIX__EventPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventPx, _p_FIX__DerivativeEventPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityTradingEvent, _p_FIX__SecurityTradingEventTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossType, _p_FIX__CrossTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndStrikePxRange, _p_FIX__EndStrikePxRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartStrikePxRange, _p_FIX__StartStrikePxRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementDesc, _p_FIX__AgreementDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketSegmentDesc, _p_FIX__MarketSegmentDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderDelay, _p_FIX__OrderDelayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderCategory, _p_FIX__OrderCategoryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsCategory, _p_FIX__NewsCategoryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinQty, _p_FIX__MinQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardNumber, _p_FIX__CardNumberTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentAcctNumber, _p_FIX__CashDistribAgentAcctNumberTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPositions, _p_FIX__NoPositionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOfLegUnderlyings, _p_FIX__NoOfLegUnderlyingsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyings, _p_FIX__NoUnderlyingsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDates, _p_FIX__NoDatesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardStartDate, _p_FIX__CardStartDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartDate, _p_FIX__StartDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventStartDate, _p_FIX__ComplexEventStartDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefreshQty, _p_FIX__RefreshQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTime, _p_FIX__OrigTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDUpdateType, _p_FIX__MDUpdateTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDQuoteType, _p_FIX__MDQuoteTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteType, _p_FIX__QuoteTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumBidders, _p_FIX__NumBiddersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementDate, _p_FIX__AgreementDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventDate, _p_FIX__EventDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCouponPaymentDate, _p_FIX__UnderlyingCouponPaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentDate, _p_FIX__PaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlementDate, _p_FIX__UnderlyingSettlementDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CouponPaymentDate, _p_FIX__CouponPaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventDate, _p_FIX__DerivativeEventDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCouponPaymentDate, _p_FIX__LegCouponPaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSymbolSfx, _p_FIX__UnderlyingSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSymbolSfx, _p_FIX__DerivativeSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SymbolSfx, _p_FIX__SymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSymbolSfx, _p_FIX__UnderlyingLegSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSymbolSfx, _p_FIX__LegSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdType, _p_FIX__TrdTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTrdType, _p_FIX__SecondaryTrdTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMsgTypes, _p_FIX__NoMsgTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerOrderType, _p_FIX__TriggerOrderTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrategyParameterType, _p_FIX__StrategyParameterTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OwnerType, _p_FIX__OwnerTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlSessSubID, _p_FIX__SettlSessSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TickRuleType, _p_FIX__TickRuleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFlowScheduleType, _p_FIX__UnderlyingFlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegFlowScheduleType, _p_FIX__LegFlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeFlowScheduleType, _p_FIX__DerivativeFlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FlowScheduleType, _p_FIX__FlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeBasis, _p_FIX__MiscFeeBasisTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedTextLen, _p_FIX__EncodedTextLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedAllocTextLen, _p_FIX__EncodedAllocTextLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListStatusTextLen, _p_FIX__EncodedListStatusTextLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesEvent, _p_FIX__TradSesEventTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayQty, _p_FIX__DisplayQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryDisplayQty, _p_FIX__SecondaryDisplayQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNumTradeReports, _p_FIX__TotNumTradeReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNumPosReports, _p_FIX__TotalNumPosReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNumReports, _p_FIX__TotNumReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNumAssignmentReports, _p_FIX__TotNumAssignmentReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideSettlCurrency, _p_FIX__SideSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkCurveCurrency, _p_FIX__LegBenchmarkCurveCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkCurveCurrency, _p_FIX__BenchmarkCurveCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocSettlCurrency, _p_FIX__LegAllocSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlCurrency, _p_FIX__LegSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingCurrency, _p_FIX__TradingCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeCurrency, _p_FIX__StrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrency, _p_FIX__SettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Currency, _p_FIX__CurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCurrency, _p_FIX__LegCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideCurrency, _p_FIX__SideCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocSettlCurrency, _p_FIX__AllocSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementCurrency, _p_FIX__AgreementCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikeCurrency, _p_FIX__DerivativeStrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStrikeCurrency, _p_FIX__UnderlyingStrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CommCurrency, _p_FIX__CommCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCurrency, _p_FIX__UnderlyingCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PositionCurrency, _p_FIX__PositionCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStrikeCurrency, _p_FIX__LegStrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeType, _p_FIX__TradeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidTradeType, _p_FIX__BidTradeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettleOnOpenFlag, _p_FIX__SettleOnOpenFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSettleOnOpenFlag, _p_FIX__DerivativeSettleOnOpenFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLocaleOfIssue, _p_FIX__LegLocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LocaleOfIssue, _p_FIX__LocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCountryOfIssue, _p_FIX__UnderlyingCountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStateOrProvinceOfIssue, _p_FIX__LegStateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeCountryOfIssue, _p_FIX__DerivativeCountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStateOrProvinceOfIssue, _p_FIX__UnderlyingStateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStateOrProvinceOfIssue, _p_FIX__DerivativeStateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCountryOfIssue, _p_FIX__LegCountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StateOrProvinceOfIssue, _p_FIX__StateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CountryOfIssue, _p_FIX__CountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeLocaleOfIssue, _p_FIX__DerivativeLocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLocaleOfIssue, _p_FIX__UnderlyingLocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlInst, _p_FIX__NoSettlInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTradingSessions, _p_FIX__NoTradingSessionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Seniority, _p_FIX__SeniorityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSeniority, _p_FIX__UnderlyingSeniorityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlQty, _p_FIX__CxlQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoExecInstRules, _p_FIX__NoExecInstRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeBracket, _p_FIX__TimeBracketTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstMode, _p_FIX__SettlInstModeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResponseError, _p_FIX__ApplResponseErrorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HaltReasonInt, _p_FIX__HaltReasonIntTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListNoOrds, _p_FIX__ListNoOrdsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlmntTyp, _p_FIX__LegSettlmntTypTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlmntTyp, _p_FIX__SettlmntTypTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvRefID, _p_FIX__AdvRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BookingUnit, _p_FIX__BookingUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastPx, _p_FIX__LastPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLastPx, _p_FIX__LegLastPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLastPx, _p_FIX__UnderlyingLastPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PrevClosePx, _p_FIX__PrevClosePxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDReportID, _p_FIX__MDReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityReportID, _p_FIX__SecurityReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradeReportID, _p_FIX__SecondaryTradeReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReportID, _p_FIX__ApplReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionReportID, _p_FIX__MassActionReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketReportID, _p_FIX__MarketReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegReportID, _p_FIX__LegReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportID, _p_FIX__TradeReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocReportID, _p_FIX__AllocReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTradeReportID, _p_FIX__SideTradeReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegs, _p_FIX__NoLegsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CancellationRights, _p_FIX__CancellationRightsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityXML, _p_FIX__SecurityXMLTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityXML, _p_FIX__DerivativeSecurityXMLTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMatchRules, _p_FIX__NoMatchRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RawData, _p_FIX__RawDataTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocHandlInst, _p_FIX__AllocHandlInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HandlInst, _p_FIX__HandlInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdType, _p_FIX__OrdTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Factor, _p_FIX__FactorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFactor, _p_FIX__UnderlyingFactorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegFactor, _p_FIX__LegFactorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MatchType, _p_FIX__MatchTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingIssueDate, _p_FIX__UnderlyingIssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeIssueDate, _p_FIX__DerivativeIssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IssueDate, _p_FIX__IssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIssueDate, _p_FIX__LegIssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerType, _p_FIX__TriggerTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingAmounts, _p_FIX__NoUnderlyingAmountsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidID, _p_FIX__BidIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlType, _p_FIX__SettlTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlType, _p_FIX__LegSettlTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityIndType, _p_FIX__LiquidityIndTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmType, _p_FIX__ConfirmTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAvgPx, _p_FIX__AllocAvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityReqID, _p_FIX__SecurityReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollApplType, _p_FIX__CollApplTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashMargin, _p_FIX__CashMarginTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPx, _p_FIX__AvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingAllocationPercent, _p_FIX__UnderlyingAllocationPercentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderPercent, _p_FIX__OrderPercentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossPercent, _p_FIX__CrossPercentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesStartTime, _p_FIX__TradSesStartTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventStartTime, _p_FIX__ComplexEventStartTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListExecInstLen, _p_FIX__EncodedListExecInstLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventTime, _p_FIX__EventTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventTime, _p_FIX__DerivativeEventTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartyRole, _p_FIX__UndlyInstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartyRole, _p_FIX__RootPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRepPartyRole, _p_FIX__TrdRepPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartyRole, _p_FIX__InstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartyRole, _p_FIX__Nested4PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartyRole, _p_FIX__NestedPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartyRole, _p_FIX__Nested3PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartyRole, _p_FIX__DerivativeInstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartyRole, _p_FIX__PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartyRole, _p_FIX__SettlPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartyRole, _p_FIX__Nested2PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetPartyRole, _p_FIX__TargetPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartyRole, _p_FIX__UnderlyingInstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentCode, _p_FIX__CashSettlAgentCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentCode, _p_FIX__SecuritySettlAgentCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentCode, _p_FIX__CashDistribAgentCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCreditRating, _p_FIX__LegCreditRatingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CreditRating, _p_FIX__CreditRatingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCreditRating, _p_FIX__UnderlyingCreditRatingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCashType, _p_FIX__UnderlyingCashTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmReqID, _p_FIX__ConfirmReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRpts, _p_FIX__NoRptsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoBidDescriptors, _p_FIX__NoBidDescriptorsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegDividendYield, _p_FIX__LegDividendYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DividendYield, _p_FIX__DividendYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkResponseID, _p_FIX__NetworkResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityResponseID, _p_FIX__SecurityResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastNetworkResponseID, _p_FIX__LastNetworkResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResponseID, _p_FIX__ApplResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultilegModel, _p_FIX__MultilegModelTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraTradeQty, _p_FIX__ContraTradeQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InViewOfCommon, _p_FIX__InViewOfCommonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossPrioritization, _p_FIX__CrossPrioritizationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayLowQty, _p_FIX__DisplayLowQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RateSource, _p_FIX__RateSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListTypeSource, _p_FIX__SecurityListTypeSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligSource, _p_FIX__SettlObligSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskTypeSource, _p_FIX__DeskTypeSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCoveredOrUncovered, _p_FIX__LegCoveredOrUncoveredTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CoveredOrUncovered, _p_FIX__CoveredOrUncoveredTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteReqID, _p_FIX__QuoteReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeFloorPrice, _p_FIX__DerivativeFloorPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPrice, _p_FIX__TriggerPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FloorPrice, _p_FIX__FloorPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PutOrCall, _p_FIX__PutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPutOrCall, _p_FIX__LegPutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePutOrCall, _p_FIX__DerivativePutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegPutOrCall, _p_FIX__UnderlyingLegPutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPutOrCall, _p_FIX__UnderlyingPutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentAcctNum, _p_FIX__CashSettlAgentAcctNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentAcctNum, _p_FIX__SecuritySettlAgentAcctNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StandInstDbName, _p_FIX__StandInstDbNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RiskFreeRate, _p_FIX__RiskFreeRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRespID, _p_FIX__QuoteRespIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldRedemptionPrice, _p_FIX__YieldRedemptionPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionPrice, _p_FIX__DiscretionPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlType, _p_FIX__CxlTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CPRegType, _p_FIX__CPRegTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCPRegType, _p_FIX__UnderlyingCPRegTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnRefID, _p_FIX__CollAsgnRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoExpiration, _p_FIX__NoExpirationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeToExpiration, _p_FIX__TimeToExpirationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OwnershipType, _p_FIX__OwnershipTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStipType, _p_FIX__UnderlyingStipTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceProtectionScope, _p_FIX__PriceProtectionScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionScope, _p_FIX__MassActionScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionScope, _p_FIX__DiscretionScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ResponseDestination, _p_FIX__ResponseDestinationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExDestination, _p_FIX__ExDestinationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Designation, _p_FIX__DesignationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesOpenTime, _p_FIX__TradSesOpenTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingStips, _p_FIX__NoUnderlyingStipsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PeggedRefPrice, _p_FIX__PeggedRefPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOptionRatio, _p_FIX__LegOptionRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarginRatio, _p_FIX__MarginRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Urgency, _p_FIX__UrgencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentRef, _p_FIX__PaymentRefTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExchangeForPhysical, _p_FIX__ExchangeForPhysicalTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefOfferSize, _p_FIX__DefOfferSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferSize, _p_FIX__OfferSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinOfferSize, _p_FIX__MinOfferSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedMktSegmDesc, _p_FIX__EncodedMktSegmDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RFQReqID, _p_FIX__RFQReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideQty, _p_FIX__SideQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocSettlCurrAmt, _p_FIX__AllocSettlCurrAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrAmt, _p_FIX__SettlCurrAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__XmlData, _p_FIX__XmlDataTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumTickets, _p_FIX__NumTicketsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOINaturalFlag, _p_FIX__IOINaturalFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventCondition, _p_FIX__ComplexEventConditionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeCondition, _p_FIX__TradeConditionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteCondition, _p_FIX__QuoteConditionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidYield, _p_FIX__BidYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MidYield, _p_FIX__MidYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetGrossInd, _p_FIX__NetGrossIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecValuationPoint, _p_FIX__ExecValuationPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AffectedOrderID, _p_FIX__AffectedOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderID, _p_FIX__OrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotAffectedOrderID, _p_FIX__NotAffectedOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AffectedSecondaryOrderID, _p_FIX__AffectedSecondaryOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryOrderID, _p_FIX__SecondaryOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefOrderID, _p_FIX__RefOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReferencePage, _p_FIX__ReferencePageTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartyIDSource, _p_FIX__SettlPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAcctIDSource, _p_FIX__AllocAcctIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityIDSource, _p_FIX__UnderlyingSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartyIDSource, _p_FIX__PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InputSource, _p_FIX__InputSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSecurityIDSource, _p_FIX__PegSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSecurityIDSource, _p_FIX__TriggerSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityAltIDSource, _p_FIX__LegSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartyIDSource, _p_FIX__NestedPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingIDSource, _p_FIX__UnderlyingIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityAltIDSource, _p_FIX__SecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityAltIDSource, _p_FIX__UnderlyingLegSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityIDSource, _p_FIX__SecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartyIDSource, _p_FIX__DerivativeInstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartyIDSource, _p_FIX__UnderlyingInstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAltMDSource, _p_FIX__NoAltMDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExDestinationIDSource, _p_FIX__ExDestinationIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderHandlingInstSource, _p_FIX__OrderHandlingInstSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkSecurityIDSource, _p_FIX__BenchmarkSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityIDSource, _p_FIX__DerivativeSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AcctIDSource, _p_FIX__AcctIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartyIDSource, _p_FIX__Nested4PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartyIDSource, _p_FIX__RootPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityAltIDSource, _p_FIX__DerivativeSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartyIDSource, _p_FIX__Nested3PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IDSource, _p_FIX__IDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetPartyIDSource, _p_FIX__TargetPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartyIDSource, _p_FIX__InstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityIDSource, _p_FIX__LegSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstSource, _p_FIX__SettlInstSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeInputSource, _p_FIX__TradeInputSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartyIDSource, _p_FIX__UndlyInstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MessageEventSource, _p_FIX__MessageEventSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefOrderIDSource, _p_FIX__RefOrderIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartyIDSource, _p_FIX__Nested2PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocAcctIDSource, _p_FIX__LegAllocAcctIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityAltIDSource, _p_FIX__UnderlyingSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityIDSource, _p_FIX__UnderlyingLegSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplTotalMessageCount, _p_FIX__ApplTotalMessageCountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FairValue, _p_FIX__FairValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrategyParameterValue, _p_FIX__StrategyParameterValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegalConfirm, _p_FIX__LegalConfirmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContractSettlMonth, _p_FIX__ContractSettlMonthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegContractSettlMonth, _p_FIX__LegContractSettlMonthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeContractSettlMonth, _p_FIX__DerivativeContractSettlMonthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteID, _p_FIX__QuoteIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TransBkdTime, _p_FIX__TransBkdTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollRespID, _p_FIX__CollRespIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdRegTimestampType, _p_FIX__SideTrdRegTimestampTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRegTimestampType, _p_FIX__TrdRegTimestampTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStipulationValue, _p_FIX__LegStipulationValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StipulationValue, _p_FIX__StipulationValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CharField, _p_FIX__CharFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MidPx, _p_FIX__MidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesMode, _p_FIX__TradSesModeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Country, _p_FIX__CountryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryDate, _p_FIX__MDEntryDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Rule80A, _p_FIX__Rule80ATo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeInstrumentParties, _p_FIX__NoDerivativeInstrumentPartiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUndlyInstrumentParties, _p_FIX__NoUndlyInstrumentPartiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoInstrumentParties, _p_FIX__NoInstrumentPartiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LongQty, _p_FIX__LongQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSwapType, _p_FIX__LegSwapTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillQty, _p_FIX__FillQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrAttribValue, _p_FIX__InstrAttribValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrAttribValue, _p_FIX__DerivativeInstrAttribValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedInstrAttribValue, _p_FIX__NestedInstrAttribValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoundingModulus, _p_FIX__RoundingModulusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocLinkType, _p_FIX__AllocLinkTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocReportType, _p_FIX__AllocReportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportType, _p_FIX__TradeReportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ResponseTransportType, _p_FIX__ResponseTransportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReportType, _p_FIX__ApplReportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedPassword, _p_FIX__EncryptedPasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Password, _p_FIX__PasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedNewPassword, _p_FIX__EncryptedNewPasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewPassword, _p_FIX__NewPasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlementType, _p_FIX__UnderlyingSettlementTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventType, _p_FIX__EventTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventType, _p_FIX__ComplexEventTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAccountType, _p_FIX__AllocAccountTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AccountType, _p_FIX__AccountTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdjustmentType, _p_FIX__AdjustmentTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventType, _p_FIX__DerivativeEventTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RespondentType, _p_FIX__RespondentTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FutSettDate2, _p_FIX__FutSettDate2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceDelta, _p_FIX__PriceDeltaTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideValue1, _p_FIX__SideValue1To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideValue2, _p_FIX__SideValue2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSymbol, _p_FIX__DerivativeSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSymbol, _p_FIX__LegSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSymbol, _p_FIX__UnderlyingSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSymbol, _p_FIX__UnderlyingLegSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSymbol, _p_FIX__PegSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Symbol, _p_FIX__SymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderQty2, _p_FIX__OrderQty2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AltMDSourceID, _p_FIX__AltMDSourceIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoQuoteEntries, _p_FIX__TotNoQuoteEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMDEntries, _p_FIX__NoMDEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotQuoteEntries, _p_FIX__TotQuoteEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoQuoteEntries, _p_FIX__NoQuoteEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__VenueType, _p_FIX__VenueTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerNewQty, _p_FIX__TriggerNewQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeInForce, _p_FIX__TimeInForceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTimeInForce, _p_FIX__SideTimeInForceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstMsgID, _p_FIX__SettlInstMsgIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvSide, _p_FIX__AdvSideTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDate2, _p_FIX__SettlDate2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigOrdModTime, _p_FIX__OrigOrdModTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueDepth, _p_FIX__ApplQueueDepthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FieldBase, 0, 0, 0}, {&_swigt__p_FIX__MatchAlgorithm, _p_FIX__MatchAlgorithmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Signature, _p_FIX__SignatureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Text, _p_FIX__TextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InterestAccrualDate, _p_FIX__InterestAccrualDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegInterestAccrualDate, _p_FIX__LegInterestAccrualDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Pool, _p_FIX__PoolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SendingDate, _p_FIX__SendingDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistID, _p_FIX__RegistIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewSeqNo, _p_FIX__NewSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegInstrRegistry, _p_FIX__LegInstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrRegistry, _p_FIX__InstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrRegistry, _p_FIX__DerivativeInstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrRegistry, _p_FIX__UnderlyingInstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMaturityRules, _p_FIX__NoMaturityRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeType, _p_FIX__MiscFeeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliveryDate, _p_FIX__DeliveryDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ValidUntilTime, _p_FIX__ValidUntilTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteSetValidUntilTime, _p_FIX__QuoteSetValidUntilTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClientBidID, _p_FIX__ClientBidIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityListDesc, _p_FIX__EncodedSecurityListDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListDesc, _p_FIX__SecurityListDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ParentMktSegmID, _p_FIX__ParentMktSegmIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StatsType, _p_FIX__StatsTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoComplexEventDates, _p_FIX__NoComplexEventDatesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityPctHigh, _p_FIX__LiquidityPctHighTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideReasonCd, _p_FIX__SideReasonCdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSymbol, _p_FIX__TriggerSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSides, _p_FIX__NoSidesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryTime, _p_FIX__MDEntryTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReportToExch, _p_FIX__ReportToExchTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSubject, _p_FIX__EncodedSubjectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Subject, _p_FIX__SubjectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocLinkID, _p_FIX__AllocLinkIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeLinkID, _p_FIX__TradeLinkIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBidPx, _p_FIX__LegBidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLotTypeRules, _p_FIX__NoLotTypeRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOrdTypeRules, _p_FIX__NoOrdTypeRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueMax, _p_FIX__ApplQueueMaxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FundRenewWaiv, _p_FIX__FundRenewWaivTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Adjustment, _p_FIX__AdjustmentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecPriceAdjustment, _p_FIX__ExecPriceAdjustmentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetSubID, _p_FIX__TargetSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPriceTimeType, _p_FIX__ComplexEventPriceTimeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOfferPx, _p_FIX__LegOfferPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MktOfferPx, _p_FIX__MktOfferPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferPx, _p_FIX__OfferPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPool, _p_FIX__LegPoolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMDFeedTypes, _p_FIX__NoMDFeedTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidPx, _p_FIX__BidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastSpotRate, _p_FIX__LastSpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferSpotRate, _p_FIX__OfferSpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidSpotRate, _p_FIX__BidSpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntrySpotRate, _p_FIX__MDEntrySpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityXMLSchema, _p_FIX__DerivativeSecurityXMLSchemaTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityXMLSchema, _p_FIX__SecurityXMLSchemaTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstCode, _p_FIX__SettlInstCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenInterest, _p_FIX__OpenInterestTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumDaysInterest, _p_FIX__NumDaysInterestTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideValueInd, _p_FIX__SideValueIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegMaturityMonthYear, _p_FIX__UnderlyingLegMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndMaturityMonthYear, _p_FIX__EndMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityMonthYear, _p_FIX__UnderlyingMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMaturityMonthYear, _p_FIX__DerivativeMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYear, _p_FIX__MaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartMaturityMonthYear, _p_FIX__StartMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegMaturityMonthYear, _p_FIX__LegMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoIOIQualifiers, _p_FIX__NoIOIQualifiersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoQuoteQualifiers, _p_FIX__NoQuoteQualifiersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDOriginType, _p_FIX__MDOriginTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderQty, _p_FIX__OrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOrderQty, _p_FIX__LegOrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashOrderQty, _p_FIX__CashOrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayOrderQty, _p_FIX__DayOrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeInputDevice, _p_FIX__TradeInputDeviceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderInputDevice, _p_FIX__OrderInputDeviceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoutingID, _p_FIX__RoutingIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlOblig, _p_FIX__NoSettlObligTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingLegSecurityAltID, _p_FIX__NoUnderlyingLegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityAltID, _p_FIX__UnderlyingSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingSecurityAltID, _p_FIX__NoUnderlyingSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityAltID, _p_FIX__LegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegSecurityAltID, _p_FIX__NoLegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityAltID, _p_FIX__SecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSecurityAltID, _p_FIX__NoSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityAltID, _p_FIX__UnderlyingLegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeSecurityAltID, _p_FIX__NoDerivativeSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityAltID, _p_FIX__DerivativeSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SendingTime, _p_FIX__SendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfSendingTime, _p_FIX__OnBehalfOfSendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigSendingTime, _p_FIX__OrigSendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HopSendingTime, _p_FIX__HopSendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListExecInst, _p_FIX__ListExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegExecInst, _p_FIX__LegExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListExecInst, _p_FIX__EncodedListExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecInst, _p_FIX__ExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LinesOfText, _p_FIX__LinesOfTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLinesOfText, _p_FIX__NoLinesOfTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDepositoryCode, _p_FIX__SettlDepositoryCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradedFlatSwitch, _p_FIX__TradedFlatSwitchTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClOrdLinkID, _p_FIX__ClOrdLinkIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTimeInForceRules, _p_FIX__NoTimeInForceRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStrikeRules, _p_FIX__NoStrikeRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkPrice, _p_FIX__BenchmarkPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkPrice, _p_FIX__LegBenchmarkPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DueToRelated, _p_FIX__DueToRelatedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDlvyInst, _p_FIX__NoDlvyInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DlvyInst, _p_FIX__DlvyInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AccruedInterestRate, _p_FIX__AccruedInterestRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecureData, _p_FIX__SecureDataTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MessageEncoding, _p_FIX__MessageEncodingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpireDate, _p_FIX__ExpireDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BasisFeatureDate, _p_FIX__BasisFeatureDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayWhen, _p_FIX__DisplayWhenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartTickPriceRange, _p_FIX__StartTickPriceRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndTickPriceRange, _p_FIX__EndTickPriceRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoCompIDs, _p_FIX__NoCompIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BookingRefID, _p_FIX__BookingRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__WtAverageLiquidity, _p_FIX__WtAverageLiquidityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceImprovement, _p_FIX__PriceImprovementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdSubTyp, _p_FIX__SideTrdSubTypTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TickIncrement, _p_FIX__TickIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYearIncrement, _p_FIX__MaturityMonthYearIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MatchIncrement, _p_FIX__MatchIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeIncrement, _p_FIX__StrikeIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMinPriceIncrement, _p_FIX__DerivativeMinPriceIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinPriceIncrement, _p_FIX__MinPriceIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecType, _p_FIX__ExecTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MailingDtls, _p_FIX__MailingDtlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HaltReasonChar, _p_FIX__HaltReasonCharTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ModelType, _p_FIX__ModelTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventText, _p_FIX__DerivativeEventTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventText, _p_FIX__EventTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IndividualAllocRejCode, _p_FIX__IndividualAllocRejCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocRejCode, _p_FIX__AllocRejCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstReqRejCode, _p_FIX__SettlInstReqRejCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerNewPrice, _p_FIX__TriggerNewPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingFirm, _p_FIX__ClearingFirmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlementCycleNo, _p_FIX__SettlementCycleNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RelSymTransactTime, _p_FIX__RelSymTransactTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TZTransactTime, _p_FIX__TZTransactTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TransactTime, _p_FIX__TransactTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPriceUnitOfMeasureQty, _p_FIX__UnderlyingPriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceUnitOfMeasureQty, _p_FIX__PriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePriceUnitOfMeasureQty, _p_FIX__DerivativePriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeUnitOfMeasureQty, _p_FIX__DerivativeUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnitOfMeasureQty, _p_FIX__UnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingUnitOfMeasureQty, _p_FIX__UnderlyingUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPriceUnitOfMeasureQty, _p_FIX__LegPriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegUnitOfMeasureQty, _p_FIX__LegUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsRefID, _p_FIX__NewsRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryType, _p_FIX__MDEntryTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgParPx, _p_FIX__AvgParPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIQltyInd, _p_FIX__IOIQltyIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAllocs, _p_FIX__NoAllocsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoAllocs, _p_FIX__TotNoAllocsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegAllocs, _p_FIX__NoLegAllocsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistDtls, _p_FIX__RegistDtlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRegistDtls, _p_FIX__NoRegistDtlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskOrderHandlingInst, _p_FIX__DeskOrderHandlingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__GTBookingInst, _p_FIX__GTBookingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustOrderHandlingInst, _p_FIX__CustOrderHandlingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MailingInst, _p_FIX__MailingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayBookingInst, _p_FIX__DayBookingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPrice, _p_FIX__LegPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplVerID, _p_FIX__RefApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CstmApplVerID, _p_FIX__CstmApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultApplVerID, _p_FIX__DefaultApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefCstmApplVerID, _p_FIX__RefCstmApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplVerID, _p_FIX__ApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultCstmApplVerID, _p_FIX__DefaultCstmApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DateOfBirth, _p_FIX__DateOfBirthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastMsgSeqNumProcessed, _p_FIX__LastMsgSeqNumProcessedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligRefID, _p_FIX__SettlObligRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRefID, _p_FIX__LegRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraLegRefID, _p_FIX__ContraLegRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeLegRefID, _p_FIX__TradeLegRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRateSources, _p_FIX__NoRateSourcesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotionalPercentageOutstanding, _p_FIX__NotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashOutstanding, _p_FIX__CashOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingNotionalPercentageOutstanding, _p_FIX__UnderlyingNotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OriginalNotionalPercentageOutstanding, _p_FIX__OriginalNotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdMatchID, _p_FIX__TrdMatchIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliverToCompID, _p_FIX__DeliverToCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocPrice, _p_FIX__AllocPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StringField, _p_FIX__StringFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocSettlInstType, _p_FIX__AllocSettlInstTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListExecInstType, _p_FIX__ListExecInstTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DlvyInstType, _p_FIX__DlvyInstTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingSessionID, _p_FIX__TradingSessionIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerTradingSessionID, _p_FIX__TriggerTradingSessionIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingTradingSessionID, _p_FIX__UnderlyingTradingSessionIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegScope, _p_FIX__PegScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoAccQuotes, _p_FIX__TotNoAccQuotesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryID, _p_FIX__CollInquiryIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecRefID, _p_FIX__ExecRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlRejResponseTo, _p_FIX__CxlRejResponseToTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Price, _p_FIX__PriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LotType, _p_FIX__LotTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdRegTimestampSrc, _p_FIX__SideTrdRegTimestampSrcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EmailType, _p_FIX__EmailTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeOptAttribute, _p_FIX__DerivativeOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegOptAttribute, _p_FIX__UnderlyingLegOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptAttribute, _p_FIX__OptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingOptAttribute, _p_FIX__UnderlyingOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOptAttribute, _p_FIX__LegOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlLocation, _p_FIX__SettlLocationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EffectiveTime, _p_FIX__EffectiveTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnReqID, _p_FIX__StreamAsgnReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteCancelType, _p_FIX__QuoteCancelTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Scope, _p_FIX__ScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpireTime, _p_FIX__ExpireTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlBrkrCode, _p_FIX__SettlBrkrCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PreTradeAnonymity, _p_FIX__PreTradeAnonymityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoutingType, _p_FIX__RoutingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideMultiLegReportingType, _p_FIX__SideMultiLegReportingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BookingType, _p_FIX__BookingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRestructuringType, _p_FIX__UnderlyingRestructuringTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RestructuringType, _p_FIX__RestructuringTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultiLegReportingType, _p_FIX__MultiLegReportingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StatusValue, _p_FIX__StatusValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllowableOneSidednessValue, _p_FIX__AllowableOneSidednessValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTrdRegTimestamps, _p_FIX__NoTrdRegTimestampsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListID, _p_FIX__ListIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListID, _p_FIX__SecurityListIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliveryType, _p_FIX__DeliveryTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDeliveryType, _p_FIX__SettlDeliveryTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PrivateQuote, _p_FIX__PrivateQuoteTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedHeadlineLen, _p_FIX__EncodedHeadlineLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BasisPxType, _p_FIX__BasisPxTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityRuleID, _p_FIX__MaturityRuleIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeRuleID, _p_FIX__StrikeRuleIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteMsgID, _p_FIX__QuoteMsgIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskType, _p_FIX__DeskTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrategyParameterName, _p_FIX__StrategyParameterNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardHolderName, _p_FIX__CardHolderNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RptSys, _p_FIX__RptSysTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegQty, _p_FIX__LegQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoSecurityTypes, _p_FIX__TotNoSecurityTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMDEntryTypes, _p_FIX__NoMDEntryTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNumSecurityTypes, _p_FIX__TotalNumSecurityTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSecurityTypes, _p_FIX__NoSecurityTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxPriceLevels, _p_FIX__MaxPriceLevelsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefCompID, _p_FIX__RefCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SenderCompID, _p_FIX__SenderCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetCompID, _p_FIX__TargetCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HopCompID, _p_FIX__HopCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfCompID, _p_FIX__OnBehalfOfCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListStatusType, _p_FIX__ListStatusTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDBookType, _p_FIX__MDBookTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDSubBookType, _p_FIX__MDSubBookTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityRequestType, _p_FIX__SecurityRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListRequestType, _p_FIX__SecurityListRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRequestType, _p_FIX__QuoteRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListType, _p_FIX__SecurityListTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestType, _p_FIX__TradeRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserRequestType, _p_FIX__UserRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkRequestType, _p_FIX__NetworkRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SubscriptionRequestType, _p_FIX__SubscriptionRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassCancelRequestType, _p_FIX__MassCancelRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedIssuerLen, _p_FIX__EncodedIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegIssuerLen, _p_FIX__EncodedLegIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedIssuerLen, _p_FIX__DerivativeEncodedIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingIssuerLen, _p_FIX__EncodedUnderlyingIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoRejQuotes, _p_FIX__TotNoRejQuotesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoCxldQuotes, _p_FIX__TotNoCxldQuotesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeProductComplex, _p_FIX__DerivativeProductComplexTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProductComplex, _p_FIX__ProductComplexTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustOrderCapacity, _p_FIX__CustOrderCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigCustOrderCapacity, _p_FIX__OrigCustOrderCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocCustomerCapacity, _p_FIX__AllocCustomerCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastCapacity, _p_FIX__LastCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DealingCapacity, _p_FIX__DealingCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderCapacity, _p_FIX__OrderCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityNumSecurities, _p_FIX__LiquidityNumSecuritiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNumSecurities, _p_FIX__TotalNumSecuritiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistEmail, _p_FIX__RegistEmailTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideComplianceID, _p_FIX__SideComplianceIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplianceID, _p_FIX__ComplianceIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndSeqNo, _p_FIX__EndSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartySubID, _p_FIX__UndlyInstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartySubID, _p_FIX__DerivativeInstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartySubID, _p_FIX__Nested3PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartySubID, _p_FIX__Nested4PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartySubID, _p_FIX__UnderlyingInstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartySubID, _p_FIX__SettlPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartySubID, _p_FIX__PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartySubID, _p_FIX__RootPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartySubID, _p_FIX__InstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartySubID, _p_FIX__NestedPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartySubID, _p_FIX__Nested2PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnAckType, _p_FIX__StreamAsgnAckTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRegTimestampOrigin, _p_FIX__TrdRegTimestampOriginTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribPayRef, _p_FIX__CashDistribPayRefTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistAcctType, _p_FIX__RegistAcctTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DistribPercentage, _p_FIX__DistribPercentageTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMarketSegments, _p_FIX__NoMarketSegmentsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIOthSvc, _p_FIX__IOIOthSvcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExchangeRule, _p_FIX__ExchangeRuleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReceivedDeptID, _p_FIX__ReceivedDeptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefTagID, _p_FIX__RefTagIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProgRptReqs, _p_FIX__ProgRptReqsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CcyAmt, _p_FIX__CcyAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListSeqNo, _p_FIX__ListSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LowPx, _p_FIX__LowPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustDirectedOrder, _p_FIX__CustDirectedOrderTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDStreamID, _p_FIX__MDStreamIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntrySize, _p_FIX__MDEntrySizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetStrategyPerformance, _p_FIX__TargetStrategyPerformanceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoHops, _p_FIX__NoHopsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EFPTrackingError, _p_FIX__EFPTrackingErrorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MktBidPx, _p_FIX__MktBidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AsgnRptID, _p_FIX__AsgnRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnRptID, _p_FIX__StreamAsgnRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxFloor, _p_FIX__MaxFloorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocInterestAtMaturity, _p_FIX__AllocInterestAtMaturityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InterestAtMaturity, _p_FIX__InterestAtMaturityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideExecID, _p_FIX__SideExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecID, _p_FIX__ExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryExecID, _p_FIX__SecondaryExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Spread, _p_FIX__SpreadTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDSecSizeType, _p_FIX__MDSecSizeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustomerOrFirm, _p_FIX__CustomerOrFirmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityDescLen, _p_FIX__EncodedSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityListDescLen, _p_FIX__EncodedSecurityListDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingSecurityDescLen, _p_FIX__EncodedUnderlyingSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedSecurityDescLen, _p_FIX__DerivativeEncodedSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedMktSegmDescLen, _p_FIX__EncodedMktSegmDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegSecurityDescLen, _p_FIX__EncodedLegSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryOriginator, _p_FIX__MDEntryOriginatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FutSettDate, _p_FIX__FutSettDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegFutSettDate, _p_FIX__LegFutSettDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidDescriptorType, _p_FIX__BidDescriptorTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMiscFees, _p_FIX__NoMiscFeesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExDate, _p_FIX__ExDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegMoveType, _p_FIX__PegMoveTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionMoveType, _p_FIX__DiscretionMoveTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Price2, _p_FIX__Price2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClientID, _p_FIX__ClientIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RawDataLength, _p_FIX__RawDataLengthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BodyLength, _p_FIX__BodyLengthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SignatureLength, _p_FIX__SignatureLengthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoClearingInstructions, _p_FIX__NoClearingInstructionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderRestrictions, _p_FIX__OrderRestrictionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExchangeSpecialInstructions, _p_FIX__ExchangeSpecialInstructionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntrySeller, _p_FIX__MDEntrySellerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDSecSize, _p_FIX__MDSecSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinLotSize, _p_FIX__MinLotSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityDay, _p_FIX__UnderlyingMaturityDayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityDay, _p_FIX__MaturityDayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionResponse, _p_FIX__MassActionResponseTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassCancelResponse, _p_FIX__MassCancelResponseTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideFillStationCd, _p_FIX__SideFillStationCdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocShares, _p_FIX__AllocSharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Shares, _p_FIX__SharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIShares, _p_FIX__IOISharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartyID, _p_FIX__UndlyInstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetPartyID, _p_FIX__TargetPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartyID, _p_FIX__NestedPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartyID, _p_FIX__Nested3PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartyID, _p_FIX__UnderlyingInstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartyID, _p_FIX__SettlPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartyID, _p_FIX__Nested4PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartyID, _p_FIX__PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartyID, _p_FIX__RootPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartyID, _p_FIX__DerivativeInstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartyID, _p_FIX__InstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartyID, _p_FIX__Nested2PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueResolution, _p_FIX__ApplQueueResolutionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayAvgPx, _p_FIX__DayAvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityXMLLen, _p_FIX__SecurityXMLLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityXMLLen, _p_FIX__DerivativeSecurityXMLLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRoutingIDs, _p_FIX__NoRoutingIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryID, _p_FIX__MDEntryIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteEntryID, _p_FIX__QuoteEntryIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillExecID, _p_FIX__FillExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InvestorCountryOfResidence, _p_FIX__InvestorCountryOfResidenceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriorSpreadIndicator, _p_FIX__PriorSpreadIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefreshIndicator, _p_FIX__RefreshIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultVerIndicator, _p_FIX__DefaultVerIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeAllocIndicator, _p_FIX__TradeAllocIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRepIndicator, _p_FIX__TrdRepIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PublishTrdIndicator, _p_FIX__PublishTrdIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradePublishIndicator, _p_FIX__TradePublishIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CopyMsgIndicator, _p_FIX__CopyMsgIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ImpliedMarketIndicator, _p_FIX__ImpliedMarketIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnsolicitedIndicator, _p_FIX__UnsolicitedIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LateIndicator, _p_FIX__LateIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FlexibleIndicator, _p_FIX__FlexibleIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AutoAcceptIndicator, _p_FIX__AutoAcceptIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivFlexProductEligibilityIndicator, _p_FIX__DerivFlexProductEligibilityIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPxIndicator, _p_FIX__AvgPxIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TestMessageIndicator, _p_FIX__TestMessageIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__WorkingIndicator, _p_FIX__WorkingIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ManualOrderIndicator, _p_FIX__ManualOrderIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraryInstructionIndicator, _p_FIX__ContraryInstructionIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReversalIndicator, _p_FIX__ReversalIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriorityIndicator, _p_FIX__PriorityIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FlexProductEligibilityIndicator, _p_FIX__FlexProductEligibilityIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AggressorIndicator, _p_FIX__AggressorIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocClearingFeeIndicator, _p_FIX__AllocClearingFeeIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingFeeIndicator, _p_FIX__ClearingFeeIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AsOfIndicator, _p_FIX__AsOfIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTradingSessionRules, _p_FIX__NoTradingSessionRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplID, _p_FIX__ApplIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementID, _p_FIX__AgreementIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketSegmentID, _p_FIX__MarketSegmentIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPrice, _p_FIX__ComplexEventPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraBroker, _p_FIX__ContraBrokerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecBroker, _p_FIX__ExecBrokerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFXRateCalc, _p_FIX__UnderlyingFXRateCalcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrFxRateCalc, _p_FIX__SettlCurrFxRateCalcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradeReportRefID, _p_FIX__SecondaryTradeReportRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintRptRefID, _p_FIX__PosMaintRptRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocReportRefID, _p_FIX__AllocReportRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportRefID, _p_FIX__TradeReportRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpirationCycle, _p_FIX__ExpirationCycleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ResetSeqNumFlag, _p_FIX__ResetSeqNumFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriorSettlPrice, _p_FIX__PriorSettlPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlPrice, _p_FIX__UnderlyingSettlPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPrice, _p_FIX__SettlPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideLiquidityInd, _p_FIX__SideLiquidityIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastLiquidityInd, _p_FIX__LastLiquidityIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillLiquidityInd, _p_FIX__FillLiquidityIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIssuer, _p_FIX__LegIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingIssuer, _p_FIX__EncodedUnderlyingIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeIssuer, _p_FIX__DerivativeIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingIssuer, _p_FIX__UnderlyingIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegIssuer, _p_FIX__EncodedLegIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Issuer, _p_FIX__IssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingSessionDesc, _p_FIX__TradingSessionDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnReqType, _p_FIX__StreamAsgnReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocIntermedReqType, _p_FIX__AllocIntermedReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqType, _p_FIX__PosReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassStatusReqType, _p_FIX__MassStatusReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReqType, _p_FIX__ApplReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastShares, _p_FIX__LastSharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillPx, _p_FIX__FillPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFXRate, _p_FIX__UnderlyingFXRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityExchange, _p_FIX__DerivativeSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityExchange, _p_FIX__UnderlyingLegSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityExchange, _p_FIX__SecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityExchange, _p_FIX__LegSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityExchange, _p_FIX__UnderlyingSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldType, _p_FIX__YieldTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardIssNo, _p_FIX__CardIssNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingEndPrice, _p_FIX__UnderlyingEndPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocQty, _p_FIX__AllocQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocQty, _p_FIX__LegAllocQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmID, _p_FIX__ConfirmIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartySubIDType, _p_FIX__PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartySubIDType, _p_FIX__InstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartySubIDType, _p_FIX__RootPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartySubIDType, _p_FIX__DerivativeInstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartySubIDType, _p_FIX__Nested2PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartySubIDType, _p_FIX__UndlyInstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartySubIDType, _p_FIX__UnderlyingInstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartySubIDType, _p_FIX__SettlPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartySubIDType, _p_FIX__Nested3PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartySubIDType, _p_FIX__NestedPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartySubIDType, _p_FIX__Nested4PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SolicitedFlag, _p_FIX__SolicitedFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeAmt, _p_FIX__MiscFeeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RedemptionDate, _p_FIX__RedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeOriginationDate, _p_FIX__TradeOriginationDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRedemptionDate, _p_FIX__LegRedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRedemptionDate, _p_FIX__UnderlyingRedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldRedemptionDate, _p_FIX__YieldRedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListStatusText, _p_FIX__EncodedListStatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListStatusText, _p_FIX__ListStatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StatusText, _p_FIX__StatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserStatusText, _p_FIX__UserStatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OutsideIndexPct, _p_FIX__OutsideIndexPctTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPosAmt, _p_FIX__NoPosAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosAmt, _p_FIX__PosAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Headline, _p_FIX__HeadlineTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedHeadline, _p_FIX__EncodedHeadlineTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AttachmentPoint, _p_FIX__AttachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DetachmentPoint, _p_FIX__DetachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingAttachmentPoint, _p_FIX__UnderlyingAttachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingDetachmentPoint, _p_FIX__UnderlyingDetachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalVolumeTradedDate, _p_FIX__TotalVolumeTradedDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegDatedDate, _p_FIX__LegDatedDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DatedDate, _p_FIX__DatedDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIQty, _p_FIX__IOIQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIOIQty, _p_FIX__LegIOIQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastRptRequested, _p_FIX__LastRptRequestedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCouponRate, _p_FIX__UnderlyingCouponRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CouponRate, _p_FIX__CouponRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCouponRate, _p_FIX__LegCouponRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplID, _p_FIX__RefApplIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSideTrdRegTS, _p_FIX__NoSideTrdRegTSTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LowLimitPrice, _p_FIX__LowLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryLowLimitPrice, _p_FIX__SecondaryLowLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HighLimitPrice, _p_FIX__HighLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryHighLimitPrice, _p_FIX__SecondaryHighLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStartValue, _p_FIX__UnderlyingStartValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCurrentValue, _p_FIX__UnderlyingCurrentValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoApplIDs, _p_FIX__NoApplIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentName, _p_FIX__SecuritySettlAgentNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentName, _p_FIX__CashDistribAgentNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentName, _p_FIX__CashSettlAgentNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistRefID, _p_FIX__RegistRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BusinessRejectRefID, _p_FIX__BusinessRejectRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstRefID, _p_FIX__SettlInstRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListRefID, _p_FIX__SecurityListRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeCapPrice, _p_FIX__DerivativeCapPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CapPrice, _p_FIX__CapPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IntField, _p_FIX__IntFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentContactPhone, _p_FIX__CashSettlAgentContactPhoneTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentContactPhone, _p_FIX__SecuritySettlAgentContactPhoneTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RejectText, _p_FIX__RejectTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoundLot, _p_FIX__RoundLotTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HopRefID, _p_FIX__HopRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingExerciseStyle, _p_FIX__UnderlyingExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegExerciseStyle, _p_FIX__LegExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeExerciseStyle, _p_FIX__StrikeExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExerciseStyle, _p_FIX__ExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeExerciseStyle, _p_FIX__DerivativeExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStrikes, _p_FIX__NoStrikesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoStrikes, _p_FIX__TotNoStrikesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAsgnReqs, _p_FIX__NoAsgnReqsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedIssuer, _p_FIX__DerivativeEncodedIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedIssuer, _p_FIX__EncodedIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OddLot, _p_FIX__OddLotTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CheckSum, _p_FIX__CheckSumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferYield, _p_FIX__OfferYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PeggedPrice, _p_FIX__PeggedPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingEndValue, _p_FIX__UnderlyingEndValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliverToLocationID, _p_FIX__DeliverToLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfLocationID, _p_FIX__OnBehalfOfLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetLocationID, _p_FIX__TargetLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LocationID, _p_FIX__LocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SenderLocationID, _p_FIX__SenderLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__URLLink, _p_FIX__URLLinkTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribCurr, _p_FIX__CashDistribCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContingencyType, _p_FIX__ContingencyTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityStatusReqID, _p_FIX__SecurityStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqID, _p_FIX__PosReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesReqID, _p_FIX__TradSesReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassStatusReqID, _p_FIX__MassStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteStatusReqID, _p_FIX__QuoteStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdStatusReqID, _p_FIX__OrdStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProgPeriodInterval, _p_FIX__ProgPeriodIntervalTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalTakedown, _p_FIX__TotalTakedownTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRepurchaseRate, _p_FIX__LegRepurchaseRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RepurchaseRate, _p_FIX__RepurchaseRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRepurchaseRate, _p_FIX__UnderlyingRepurchaseRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastParPx, _p_FIX__LastParPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BeginString, _p_FIX__BeginStringTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDistribInsts, _p_FIX__NoDistribInstsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityPctLow, _p_FIX__LiquidityPctLowTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardIssNum, _p_FIX__CardIssNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefMsgType, _p_FIX__RefMsgTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MsgType, _p_FIX__MsgTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoFills, _p_FIX__TotNoFillsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoFills, _p_FIX__NoFillsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesCloseTime, _p_FIX__TradSesCloseTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesPreCloseTime, _p_FIX__TradSesPreCloseTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayHighQty, _p_FIX__DisplayHighQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidDescriptor, _p_FIX__BidDescriptorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnRespType, _p_FIX__CollAsgnRespTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRespType, _p_FIX__QuoteRespTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ParticipationRate, _p_FIX__ParticipationRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeVolume, _p_FIX__TradeVolumeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BuyVolume, _p_FIX__BuyVolumeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecInstValue, _p_FIX__ExecInstValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegOffsetValue, _p_FIX__PegOffsetValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContAmtValue, _p_FIX__ContAmtValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionOffsetValue, _p_FIX__DiscretionOffsetValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNetValue, _p_FIX__TotalNetValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIid, _p_FIX__IOIidTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeTime, _p_FIX__StrikeTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HeartBtInt, _p_FIX__HeartBtIntTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStipValue, _p_FIX__UnderlyingStipValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCapValue, _p_FIX__UnderlyingCapValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedNewPasswordLen, _p_FIX__EncryptedNewPasswordLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedPasswordLen, _p_FIX__EncryptedPasswordLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikeMultiplier, _p_FIX__DerivativeStrikeMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeContractMultiplier, _p_FIX__DerivativeContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeMultiplier, _p_FIX__StrikeMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingContractMultiplier, _p_FIX__UnderlyingContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegContractMultiplier, _p_FIX__LegContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContractMultiplier, _p_FIX__ContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FeeMultiplier, _p_FIX__FeeMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistRejReasonCode, _p_FIX__RegistRejReasonCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ForexReq, _p_FIX__ForexReqTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Side, _p_FIX__SideTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDMkt, _p_FIX__MDMktTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlSessID, _p_FIX__SettlSessIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UtcTimeStampField, _p_FIX__UtcTimeStampFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LanguageCode, _p_FIX__LanguageCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSubjectLen, _p_FIX__EncodedSubjectLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsRefType, _p_FIX__NewsRefTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalVolumeTradedTime, _p_FIX__TotalVolumeTradedTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__WaveNo, _p_FIX__WaveNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalVolumeTraded, _p_FIX__TotalVolumeTradedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoContraBrokers, _p_FIX__NoContraBrokersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OutMainCntryUIndex, _p_FIX__OutMainCntryUIndexTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HighPx, _p_FIX__HighPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BoolField, _p_FIX__BoolFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPx, _p_FIX__UnderlyingPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsID, _p_FIX__NewsIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraTrader, _p_FIX__ContraTraderTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTrades, _p_FIX__NoTradesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllowableOneSidednessPct, _p_FIX__AllowableOneSidednessPctTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplBegSeqNum, _p_FIX__ApplBegSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MsgSeqNum, _p_FIX__MsgSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplNewSeqNum, _p_FIX__ApplNewSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NextExpectedMsgSeqNum, _p_FIX__NextExpectedMsgSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Volatility, _p_FIX__VolatilityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegVolatility, _p_FIX__LegVolatilityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNewsRefIDs, _p_FIX__NoNewsRefIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContAmtCurr, _p_FIX__ContAmtCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StandInstDbType, _p_FIX__StandInstDbTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingInstruction, _p_FIX__ClearingInstructionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastMkt, _p_FIX__LastMktTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityResponseType, _p_FIX__SecurityResponseTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResponseType, _p_FIX__ApplResponseTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkStatusResponseType, _p_FIX__NetworkStatusResponseTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryAllocID, _p_FIX__SecondaryAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IndividualAllocID, _p_FIX__IndividualAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefAllocID, _p_FIX__RefAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryIndividualAllocID, _p_FIX__SecondaryIndividualAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocID, _p_FIX__LegAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIndividualAllocID, _p_FIX__LegIndividualAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocID, _p_FIX__AllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EmailThreadID, _p_FIX__EmailThreadIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SellVolume, _p_FIX__SellVolumeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedSecurityDesc, _p_FIX__DerivativeEncodedSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityDesc, _p_FIX__DerivativeSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSecurityDesc, _p_FIX__TriggerSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSecurityDesc, _p_FIX__PegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityDesc, _p_FIX__UnderlyingLegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityDesc, _p_FIX__UnderlyingSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityDesc, _p_FIX__SecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingSecurityDesc, _p_FIX__EncodedUnderlyingSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegSecurityDesc, _p_FIX__EncodedLegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityDesc, _p_FIX__EncodedSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityDesc, _p_FIX__LegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoComplexEventTimes, _p_FIX__NoComplexEventTimesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardExpDate, _p_FIX__CardExpDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndAccruedInterestAmt, _p_FIX__EndAccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalAccruedInterestAmt, _p_FIX__TotalAccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AccruedInterestAmt, _p_FIX__AccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAccruedInterestAmt, _p_FIX__AllocAccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingContractMultiplierUnit, _p_FIX__UnderlyingContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeContractMultiplierUnit, _p_FIX__DerivativeContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegContractMultiplierUnit, _p_FIX__LegContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContractMultiplierUnit, _p_FIX__ContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSide, _p_FIX__LegSideTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStrategyParameters, _p_FIX__NoStrategyParametersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetStrategyParameters, _p_FIX__TargetStrategyParametersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoCapacities, _p_FIX__NoCapacitiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityDate, _p_FIX__UnderlyingMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegMaturityDate, _p_FIX__LegMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityDate, _p_FIX__MaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuantityDate, _p_FIX__QuantityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegMaturityDate, _p_FIX__UnderlyingLegMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMaturityDate, _p_FIX__DerivativeMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionRoundDirection, _p_FIX__DiscretionRoundDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MsgDirection, _p_FIX__MsgDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TickDirection, _p_FIX__TickDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPriceDirection, _p_FIX__TriggerPriceDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoundingDirection, _p_FIX__RoundingDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegRoundDirection, _p_FIX__PegRoundDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PossResend, _p_FIX__PossResendTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RateSourceType, _p_FIX__RateSourceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityGroup, _p_FIX__DerivativeSecurityGroupTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityGroup, _p_FIX__SecurityGroupTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoOrders, _p_FIX__TotNoOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOrders, _p_FIX__NoOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqResult, _p_FIX__PosReqResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryResult, _p_FIX__CollInquiryResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegDifference, _p_FIX__PegDifferenceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CorporateAction, _p_FIX__CorporateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesUpdateAction, _p_FIX__TradSesUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityUpdateAction, _p_FIX__SecurityUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListUpdateAction, _p_FIX__ListUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketUpdateAction, _p_FIX__MarketUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDUpdateAction, _p_FIX__MDUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueAction, _p_FIX__ApplQueueActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionInst, _p_FIX__DiscretionInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PreviouslyReported, _p_FIX__PreviouslyReportedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinTradeVol, _p_FIX__MinTradeVolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxTradeVol, _p_FIX__MaxTradeVolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllowableOneSidednessCurr, _p_FIX__AllowableOneSidednessCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocNoOrdersType, _p_FIX__AllocNoOrdersTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteAckStatus, _p_FIX__QuoteAckStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesStatus, _p_FIX__TradSesStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryStatus, _p_FIX__CollInquiryStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteEntryStatus, _p_FIX__QuoteEntryStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteStatus, _p_FIX__QuoteStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmStatus, _p_FIX__ConfirmStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AffirmStatus, _p_FIX__AffirmStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosQtyStatus, _p_FIX__PosQtyStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityTradingStatus, _p_FIX__SecurityTradingStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocStatus, _p_FIX__AllocStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqStatus, _p_FIX__PosReqStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityStatus, _p_FIX__DerivativeSecurityStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityStatus, _p_FIX__SecurityStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecAckStatus, _p_FIX__ExecAckStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MoneyLaunderingStatus, _p_FIX__MoneyLaunderingStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplSeqNum, _p_FIX__ApplSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefSeqNum, _p_FIX__RefSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplLastSeqNum, _p_FIX__ApplLastSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplLastSeqNum, _p_FIX__RefApplLastSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplEndSeqNum, _p_FIX__ApplEndSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingQty, _p_FIX__UnderlyingQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderBookingQty, _p_FIX__OrderBookingQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCPProgram, _p_FIX__UnderlyingCPProgramTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CPProgram, _p_FIX__CPProgramTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryPx, _p_FIX__MDEntryPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvTransType, _p_FIX__AdvTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocTransType, _p_FIX__AllocTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOITransType, _p_FIX__IOITransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecTransType, _p_FIX__ExecTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidRequestTransType, _p_FIX__BidRequestTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistTransType, _p_FIX__RegistTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstTransType, _p_FIX__SettlInstTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligTransType, _p_FIX__SettlObligTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnTransType, _p_FIX__CollAsgnTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportTransType, _p_FIX__TradeReportTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmTransType, _p_FIX__ConfirmTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosTransType, _p_FIX__PosTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastForwardPoints2, _p_FIX__LastForwardPoints2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferForwardPoints2, _p_FIX__OfferForwardPoints2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidForwardPoints2, _p_FIX__BidForwardPoints2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnID, _p_FIX__CollAsgnIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenClose, _p_FIX__OpenCloseTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocPositionEffect, _p_FIX__AllocPositionEffectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPositionEffect, _p_FIX__LegPositionEffectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PositionEffect, _p_FIX__PositionEffectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested2PartySubIDs, _p_FIX__NoNested2PartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPartySubIDs, _p_FIX__NoPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoInstrumentPartySubIDs, _p_FIX__NoInstrumentPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeInstrumentPartySubIDs, _p_FIX__NoDerivativeInstrumentPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlPartySubIDs, _p_FIX__NoSettlPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested3PartySubIDs, _p_FIX__NoNested3PartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested4PartySubIDs, _p_FIX__NoNested4PartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNestedPartySubIDs, _p_FIX__NoNestedPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRootPartySubIDs, _p_FIX__NoRootPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUndlyInstrumentPartySubIDs, _p_FIX__NoUndlyInstrumentPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IncTaxInd, _p_FIX__IncTaxIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RepurchaseTerm, _p_FIX__RepurchaseTermTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRepurchaseTerm, _p_FIX__LegRepurchaseTermTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRepurchaseTerm, _p_FIX__UnderlyingRepurchaseTermTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RelatdSym, _p_FIX__RelatdSymTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenCloseSettleFlag, _p_FIX__OpenCloseSettleFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistDetls, _p_FIX__RegistDetlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplExtID, _p_FIX__ApplExtIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultApplExtID, _p_FIX__DefaultApplExtIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplExtID, _p_FIX__RefApplExtIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SenderSubID, _p_FIX__SenderSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligMode, _p_FIX__SettlObligModeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TerminationType, _p_FIX__TerminationTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionType, _p_FIX__MassActionTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StipulationType, _p_FIX__StipulationTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStipulationType, _p_FIX__LegStipulationTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligID, _p_FIX__SettlObligIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryClOrdID, _p_FIX__SecondaryClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClOrdID, _p_FIX__ClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigClOrdID, _p_FIX__OrigClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotAffOrigClOrdID, _p_FIX__NotAffOrigClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentRemitterID, _p_FIX__PaymentRemitterIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidType, _p_FIX__BidTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerTradingSessionSubID, _p_FIX__TriggerTradingSessionSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingSessionSubID, _p_FIX__TradingSessionSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingTradingSessionSubID, _p_FIX__UnderlyingTradingSessionSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketID, _p_FIX__MarketIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TaxAdvantageType, _p_FIX__TaxAdvantageTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlDetails, _p_FIX__NoSettlDetailsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayCumQty, _p_FIX__DayCumQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RndPx, _p_FIX__RndPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CumQty, _p_FIX__CumQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryPositionNo, _p_FIX__MDEntryPositionNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkPriceType, _p_FIX__BenchmarkPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPriceType, _p_FIX__LegPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPriceType, _p_FIX__SettlPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkPriceType, _p_FIX__LegBenchmarkPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuotePriceType, _p_FIX__QuotePriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldRedemptionPriceType, _p_FIX__YieldRedemptionPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceType, _p_FIX__PriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegPriceType, _p_FIX__PegPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlPriceType, _p_FIX__UnderlyingSettlPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecPriceType, _p_FIX__ExecPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPriceType, _p_FIX__TriggerPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAffectedOrders, _p_FIX__NoAffectedOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalAffectedOrders, _p_FIX__TotalAffectedOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNotAffectedOrders, _p_FIX__NoNotAffectedOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumberOfOrders, _p_FIX__NumberOfOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnType, _p_FIX__StreamAsgnTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityRequestResult, _p_FIX__SecurityRequestResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintResult, _p_FIX__PosMaintResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestResult, _p_FIX__TradeRequestResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderDelayUnit, _p_FIX__OrderDelayUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerAction, _p_FIX__TriggerActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAction, _p_FIX__CollActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintAction, _p_FIX__PosMaintActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndCash, _p_FIX__EndCashTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefSubID, _p_FIX__RefSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfSubID, _p_FIX__OnBehalfOfSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingDirtyPrice, _p_FIX__UnderlyingDirtyPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderCapacityQty, _p_FIX__OrderCapacityQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSecurityID, _p_FIX__TriggerSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityID, _p_FIX__LegSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityID, _p_FIX__SecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityID, _p_FIX__DerivativeSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkSecurityID, _p_FIX__BenchmarkSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSecurityID, _p_FIX__PegSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityID, _p_FIX__UnderlyingSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityID, _p_FIX__UnderlyingLegSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintStatus, _p_FIX__PosMaintStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollStatus, _p_FIX__CollStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SessionStatus, _p_FIX__SessionStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestStatus, _p_FIX__TradeRequestStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListOrderStatus, _p_FIX__ListOrderStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserStatus, _p_FIX__UserStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRptStatus, _p_FIX__TrdRptStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FinancialStatus, _p_FIX__FinancialStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlementStatus, _p_FIX__UnderlyingSettlementStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MatchStatus, _p_FIX__MatchStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdStatus, _p_FIX__OrdStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistStatus, _p_FIX__RegistStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderAvgPx, _p_FIX__OrderAvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryRefID, _p_FIX__MDEntryRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecureDataLen, _p_FIX__SecureDataLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__XmlDataLen, _p_FIX__XmlDataLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultiLegRptTypeReq, _p_FIX__MultiLegRptTypeReqTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityTime, _p_FIX__MaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityTime, _p_FIX__UnderlyingMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegMaturityTime, _p_FIX__UnderlyingLegMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegMaturityTime, _p_FIX__LegMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMaturityTime, _p_FIX__DerivativeMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTickRules, _p_FIX__NoTickRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingBusinessDate, _p_FIX__ClearingBusinessDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeNTPositionLimit, _p_FIX__DerivativeNTPositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PositionLimit, _p_FIX__PositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NTPositionLimit, _p_FIX__NTPositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePositionLimit, _p_FIX__DerivativePositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteSetID, _p_FIX__QuoteSetIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvId, _p_FIX__AdvIdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Quantity, _p_FIX__QuantityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingAdjustedQuantity, _p_FIX__UnderlyingAdjustedQuantityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPayAmount, _p_FIX__UnderlyingPayAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeOptPayAmount, _p_FIX__DerivativeOptPayAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingDeliveryAmount, _p_FIX__UnderlyingDeliveryAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptPayAmount, _p_FIX__OptPayAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmRefID, _p_FIX__ConfirmRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoContAmts, _p_FIX__NoContAmtsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocType, _p_FIX__AllocTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IndividualAllocType, _p_FIX__IndividualAllocTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SharedCommission, _p_FIX__SharedCommissionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Commission, _p_FIX__CommissionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionOffset, _p_FIX__DiscretionOffsetTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIRefID, _p_FIX__IOIRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BasisFeaturePrice, _p_FIX__BasisFeaturePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Product, _p_FIX__ProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingProduct, _p_FIX__UnderlyingProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeProduct, _p_FIX__DerivativeProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegProduct, _p_FIX__LegProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LocateReqd, _p_FIX__LocateReqdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Concession, _p_FIX__ConcessionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CommType, _p_FIX__CommTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxPriceVariation, _p_FIX__MaxPriceVariationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTradeHandlingInstr, _p_FIX__OrigTradeHandlingInstrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeHandlingInstr, _p_FIX__TradeHandlingInstrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDFeedType, _p_FIX__MDFeedTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPriceTypeScope, _p_FIX__TriggerPriceTypeScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdRegTimestamp, _p_FIX__SideTrdRegTimestampTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRegTimestamp, _p_FIX__TrdRegTimestampTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetChgPrevDay, _p_FIX__NetChgPrevDayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpQty, _p_FIX__ExpQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AssignmentUnit, _p_FIX__AssignmentUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePriceBoundaryMethod, _p_FIX__StrikePriceBoundaryMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultilegPriceMethod, _p_FIX__MultilegPriceMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPriceBoundaryMethod, _p_FIX__ComplexEventPriceBoundaryMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocMethod, _p_FIX__AllocMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesMethod, _p_FIX__TradSesMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePriceQuoteMethod, _p_FIX__DerivativePriceQuoteMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceQuoteMethod, _p_FIX__PriceQuoteMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PreallocMethod, _p_FIX__PreallocMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExerciseMethod, _p_FIX__ExerciseMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayMethod, _p_FIX__DisplayMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplReqID, _p_FIX__RefApplReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReqID, _p_FIX__ApplReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollReqID, _p_FIX__CollReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoBidComponents, _p_FIX__NoBidComponentsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityValue, _p_FIX__LiquidityValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeDate, _p_FIX__TradeDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTradeDate, _p_FIX__OrigTradeDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListName, _p_FIX__ListNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PctAtRisk, _p_FIX__PctAtRiskTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UtcTimeOnlyField, _p_FIX__UtcTimeOnlyFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoRelatedSym, _p_FIX__TotNoRelatedSymTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRelatedSym, _p_FIX__NoRelatedSymTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingOriginalNotionalPercentageOutstanding, _p_FIX__UnderlyingOriginalNotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDReqID, _p_FIX__MDReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCurrencyRatio, _p_FIX__LegCurrencyRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CurrencyRatio, _p_FIX__CurrencyRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocNetMoney, _p_FIX__AllocNetMoneyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetMoney, _p_FIX__NetMoneyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityNetMoney, _p_FIX__MaturityNetMoneyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkCurveName, _p_FIX__BenchmarkCurveNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkCurveName, _p_FIX__LegBenchmarkCurveNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigPosReqRefID, _p_FIX__OrigPosReqRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RatioQty, _p_FIX__RatioQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRatioQty, _p_FIX__LegRatioQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AggregatedBook, _p_FIX__AggregatedBookTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkCurvePoint, _p_FIX__LegBenchmarkCurvePointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkCurvePoint, _p_FIX__BenchmarkCurvePointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinPriceIncrementAmount, _p_FIX__MinPriceIncrementAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptPayoutAmount, _p_FIX__OptPayoutAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCollectAmount, _p_FIX__UnderlyingCollectAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexOptPayoutAmount, _p_FIX__ComplexOptPayoutAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ThresholdAmount, _p_FIX__ThresholdAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMinPriceIncrementAmount, _p_FIX__DerivativeMinPriceIncrementAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCashAmount, _p_FIX__UnderlyingCashAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenCloseSettlFlag, _p_FIX__OpenCloseSettlFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResendFlag, _p_FIX__ApplResendFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayMinIncr, _p_FIX__DisplayMinIncrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxShow, _p_FIX__MaxShowTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoExecs, _p_FIX__NoExecsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrFxRate, _p_FIX__SettlCurrFxRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrOfferFxRate, _p_FIX__SettlCurrOfferFxRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrBidFxRate, _p_FIX__SettlCurrBidFxRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskID, _p_FIX__DeskIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliveryForm, _p_FIX__DeliveryFormTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HostCrossID, _p_FIX__HostCrossIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigCrossID, _p_FIX__OrigCrossIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossID, _p_FIX__CrossIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetStrategy, _p_FIX__TargetStrategyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentContactName, _p_FIX__CashSettlAgentContactNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentAcctName, _p_FIX__CashSettlAgentAcctNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentAcctName, _p_FIX__CashDistribAgentAcctNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentAcctName, _p_FIX__SecuritySettlAgentAcctNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentContactName, _p_FIX__SecuritySettlAgentContactNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRootPartyIDs, _p_FIX__NoRootPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTargetPartyIDs, _p_FIX__NoTargetPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested4PartyIDs, _p_FIX__NoNested4PartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNestedPartyIDs, _p_FIX__NoNestedPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested2PartyIDs, _p_FIX__NoNested2PartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlPartyIDs, _p_FIX__NoSettlPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPartyIDs, _p_FIX__NoPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested3PartyIDs, _p_FIX__NoNested3PartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOfSecSizes, _p_FIX__NoOfSecSizesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FirstPx, _p_FIX__FirstPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPrxPrecision, _p_FIX__AvgPrxPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPxPrecision, _p_FIX__AvgPxPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegStrikePrice, _p_FIX__UnderlyingLegStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStrikePrice, _p_FIX__LegStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikePrice, _p_FIX__DerivativeStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradingReferencePrice, _p_FIX__SecondaryTradingReferencePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStrikePrice, _p_FIX__UnderlyingStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePrice, _p_FIX__StrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingReferencePrice, _p_FIX__TradingReferencePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePriceBoundaryPrecision, _p_FIX__StrikePriceBoundaryPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPriceBoundaryPrecision, _p_FIX__ComplexEventPriceBoundaryPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYearIncrementUnits, _p_FIX__MaturityMonthYearIncrementUnitsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryBuyer, _p_FIX__MDEntryBuyerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlDate, _p_FIX__LegSettlDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDate, _p_FIX__SettlDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndDate, _p_FIX__EndDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TestReqID, _p_FIX__TestReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketReqID, _p_FIX__MarketReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstReqID, _p_FIX__SettlInstReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventEndDate, _p_FIX__ComplexEventEndDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LeavesQty, _p_FIX__LeavesQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIID, _p_FIX__IOIIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrAttribType, _p_FIX__DerivativeInstrAttribTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedInstrAttribType, _p_FIX__NestedInstrAttribTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrAttribType, _p_FIX__InstrAttribTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProcessCode, _p_FIX__ProcessCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UtcDateField, _p_FIX__UtcDateFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DoubleField, _p_FIX__DoubleFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ValueOfFutures, _p_FIX__ValueOfFuturesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoCollInquiryQualifier, _p_FIX__NoCollInquiryQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryQualifier, _p_FIX__CollInquiryQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteQualifier, _p_FIX__QuoteQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIQualifier, _p_FIX__IOIQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegGrossTradeAmt, _p_FIX__LegGrossTradeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideGrossTradeAmt, _p_FIX__SideGrossTradeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__GrossTradeAmt, _p_FIX__GrossTradeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinBidSize, _p_FIX__MinBidSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefBidSize, _p_FIX__DefBidSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidSize, _p_FIX__BidSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpType, _p_FIX__ExpTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastUpdateTime, _p_FIX__LastUpdateTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PossDupFlag, _p_FIX__PossDupFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPriceDeterminationMethod, _p_FIX__UnderlyingPriceDeterminationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentMethod, _p_FIX__PaymentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePriceDeterminationMethod, _p_FIX__StrikePriceDeterminationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptMethod, _p_FIX__EncryptMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListMethod, _p_FIX__ListMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DistribPaymentMethod, _p_FIX__DistribPaymentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedPasswordMethod, _p_FIX__EncryptedPasswordMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeListMethod, _p_FIX__DerivativeListMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlMethod, _p_FIX__UnderlyingSettlMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeFuturesValuationMethod, _p_FIX__DerivativeFuturesValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ValuationMethod, _p_FIX__ValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FuturesValuationMethod, _p_FIX__FuturesValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeValuationMethod, _p_FIX__DerivativeValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AssignmentMethod, _p_FIX__AssignmentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlMethod, _p_FIX__SettlMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrmtAssignmentMethod, _p_FIX__DerivativeInstrmtAssignmentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrmtAssignmentMethod, _p_FIX__InstrmtAssignmentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSettlMethod, _p_FIX__DerivativeSettlMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxMessageSize, _p_FIX__MaxMessageSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastSwapPoints, _p_FIX__LastSwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBidForwardPoints, _p_FIX__LegBidForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastForwardPoints, _p_FIX__LastForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SwapPoints, _p_FIX__SwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLastForwardPoints, _p_FIX__LegLastForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOfferForwardPoints, _p_FIX__LegOfferForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidSwapPoints, _p_FIX__BidSwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferSwapPoints, _p_FIX__OfferSwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidForwardPoints, _p_FIX__BidForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryForwardPoints, _p_FIX__MDEntryForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferForwardPoints, _p_FIX__OfferForwardPointsTo_p_FIX__FieldBase, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldConvertError[] = { {&_swigt__p_FIX__FieldConvertError, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldMap[] = { {&_swigt__p_FIX__Group, _p_FIX__GroupTo_p_FIX__FieldMap, 0, 0}, {&_swigt__p_FIX__Message, _p_FIX__MessageTo_p_FIX__FieldMap, 0, 0}, {&_swigt__p_FIX__FieldMap, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_FIX__FieldMap__Fields__allocator_type[] = { {&_swigt__p_FIX__FieldMap__Fields__allocator_type, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_FIX__FieldMap__Fields__const_iterator[] = { {&_swigt__p_FIX__FieldMap__Fields__const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldMap__Groups__const_iterator[] = { {&_swigt__p_FIX__FieldMap__Groups__const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldNotFound[] = { {&_swigt__p_FIX__FieldNotFound, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldTag[] = { {&_swigt__p_FIX__FieldTag, 0, 0, 0},{0, 0, 0, 0}}; @@ -331817,10 +331600,12 @@ static swig_cast_info _swigc__p_FIX__YieldRedemptionDate[] = { {&_swigt__p_FIX_ static swig_cast_info _swigc__p_FIX__YieldRedemptionPrice[] = { {&_swigt__p_FIX__YieldRedemptionPrice, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__YieldRedemptionPriceType[] = { {&_swigt__p_FIX__YieldRedemptionPriceType, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__YieldType[] = { {&_swigt__p_FIX__YieldType, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FieldPresenceMap[] = { {&_swigt__p_FieldPresenceMap, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldToGroup[] = { {&_swigt__p_FieldToGroup, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldToName[] = { {&_swigt__p_FieldToName, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldToValue[] = { {&_swigt__p_FieldToValue, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypeDataBits[] = { {&_swigt__p_FieldTypeDataBits, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FieldTypeGroupBits[] = { {&_swigt__p_FieldTypeGroupBits, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypeHeaderBits[] = { {&_swigt__p_FieldTypeHeaderBits, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypeTrailerBits[] = { {&_swigt__p_FieldTypeTrailerBits, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypes[] = { {&_swigt__p_FieldTypes, 0, 0, 0},{0, 0, 0, 0}}; @@ -331828,6 +331613,7 @@ static swig_cast_info _swigc__p_Fields[] = { {&_swigt__p_Fields, 0, 0, 0},{0, 0 static swig_cast_info _swigc__p_Group[] = { {&_swigt__p_Group, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IntArray[] = { {&_swigt__p_IntArray, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IntField[] = { {&_swigt__p_IntField, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ItemAllocatorT_stored_type_NodeList_t[] = { {&_swigt__p_ItemAllocatorT_stored_type_NodeList_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_Log[] = { {&_swigt__p_Log, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_LogFactory[] = { {&_swigt__p_LogFactory, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_MessageStore[] = { {&_swigt__p_MessageStore, 0, 0, 0},{0, 0, 0, 0}}; @@ -331860,6 +331646,7 @@ static swig_cast_info _swigc__p_bool[] = { {&_swigt__p_bool, 0, 0, 0},{0, 0, 0, static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_const_iterator[] = { {&_swigt__p_const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_data_type[] = { {&_swigt__p_data_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_field_iterator[] = { {&_swigt__p_field_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_g_const_iterator[] = { {&_swigt__p_g_const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_g_item_const_iterator[] = { {&_swigt__p_g_item_const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_g_item_iterator[] = { {&_swigt__p_g_item_iterator, 0, 0, 0},{0, 0, 0, 0}}; @@ -332140,8 +331927,9 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_FIX__DAYOFMONTH, _swigc__p_FIX__DKReason, _swigc__p_FIX__DataDictionary, + _swigc__p_FIX__DataDictionaryBase, _swigc__p_FIX__DataDictionaryNotFound, - _swigc__p_FIX__DataDictionary__FieldToGroup__key_type, + _swigc__p_FIX__DataDictionary__FieldPresenceMap__key_type, _swigc__p_FIX__DateOfBirth, _swigc__p_FIX__DatedDate, _swigc__p_FIX__DayAvgPx, @@ -332353,8 +332141,6 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_FIX__FieldBase, _swigc__p_FIX__FieldConvertError, _swigc__p_FIX__FieldMap, - _swigc__p_FIX__FieldMap__Fields__allocator_type, - _swigc__p_FIX__FieldMap__Fields__const_iterator, _swigc__p_FIX__FieldMap__Groups__const_iterator, _swigc__p_FIX__FieldNotFound, _swigc__p_FIX__FieldTag, @@ -333523,10 +333309,12 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_FIX__YieldRedemptionPrice, _swigc__p_FIX__YieldRedemptionPriceType, _swigc__p_FIX__YieldType, + _swigc__p_FieldPresenceMap, _swigc__p_FieldToGroup, _swigc__p_FieldToName, _swigc__p_FieldToValue, _swigc__p_FieldTypeDataBits, + _swigc__p_FieldTypeGroupBits, _swigc__p_FieldTypeHeaderBits, _swigc__p_FieldTypeTrailerBits, _swigc__p_FieldTypes, @@ -333534,6 +333322,7 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_Group, _swigc__p_IntArray, _swigc__p_IntField, + _swigc__p_ItemAllocatorT_stored_type_NodeList_t, _swigc__p_Log, _swigc__p_LogFactory, _swigc__p_MessageStore, @@ -333566,6 +333355,7 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_char, _swigc__p_const_iterator, _swigc__p_data_type, + _swigc__p_field_iterator, _swigc__p_g_const_iterator, _swigc__p_g_item_const_iterator, _swigc__p_g_item_iterator, diff --git a/src/python/quickfix.py b/src/python/quickfix.py index a9c22f1b5..2258d3b24 100644 --- a/src/python/quickfix.py +++ b/src/python/quickfix.py @@ -1,5 +1,5 @@ # This file was automatically generated by SWIG (http://www.swig.org). -# Version 2.0.7 +# Version 2.0.10 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. @@ -250,8 +250,8 @@ class InvalidTagNumber(Exception): for _s in [Exception]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{})) __getattr__ = lambda self, name: _swig_getattr(self, InvalidTagNumber, name) __repr__ = _swig_repr - def __init__(self, f=0, what=""): - this = _quickfix.new_InvalidTagNumber(f, what) + def __init__(self, *args): + this = _quickfix.new_InvalidTagNumber(*args) try: self.this.append(this) except: self.this = this __swig_setmethods__["field"] = _quickfix.InvalidTagNumber_field_set @@ -669,8 +669,10 @@ def __init__(self, *args): except: self.this = this __swig_destroy__ = _quickfix.delete_FieldBase __del__ = lambda self : None; + def setTag(self, *args): return _quickfix.FieldBase_setTag(self, *args) def setField(self, *args): return _quickfix.FieldBase_setField(self, *args) def setString(self, *args): return _quickfix.FieldBase_setString(self, *args) + def getTag(self): return _quickfix.FieldBase_getTag(self) def getField(self): return _quickfix.FieldBase_getField(self) def getSgBuf(self): return _quickfix.FieldBase_getSgBuf(self) def getString(self): return _quickfix.FieldBase_getString(self) @@ -895,6 +897,7 @@ class FieldMap(_object): __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, FieldMap, name) __repr__ = _swig_repr + def get_allocator(self): return _quickfix.FieldMap_get_allocator(self) def __init__(self, *args): this = _quickfix.new_FieldMap(*args) try: self.this.append(this) @@ -903,9 +906,11 @@ def __init__(self, *args): __del__ = lambda self : None; def addField(self, *args): return _quickfix.FieldMap_addField(self, *args) def setField(self, *args): return _quickfix.FieldMap_setField(self, *args) + def getFieldIfSet(self, *args): return _quickfix.FieldMap_getFieldIfSet(self, *args) def getField(self, *args): return _quickfix.FieldMap_getField(self, *args) def getFieldRef(self, *args): return _quickfix.FieldMap_getFieldRef(self, *args) def getFieldPtr(self, *args): return _quickfix.FieldMap_getFieldPtr(self, *args) + def getFieldPtrIfSet(self, *args): return _quickfix.FieldMap_getFieldPtrIfSet(self, *args) def isSetField(self, *args): return _quickfix.FieldMap_isSetField(self, *args) def removeField(self, *args): return _quickfix.FieldMap_removeField(self, *args) def addGroup(self, *args): return _quickfix.FieldMap_addGroup(self, *args) @@ -927,16 +932,9 @@ def begin(self): return _quickfix.FieldMap_begin(self) def end(self): return _quickfix.FieldMap_end(self) def g_begin(self): return _quickfix.FieldMap_g_begin(self) def g_end(self): return _quickfix.FieldMap_g_end(self) - def get_allocator(self): return _quickfix.FieldMap_get_allocator(self) - __swig_getmethods__["create_allocator"] = lambda x: _quickfix.FieldMap_create_allocator - if _newclass:create_allocator = staticmethod(_quickfix.FieldMap_create_allocator) FieldMap_swigregister = _quickfix.FieldMap_swigregister FieldMap_swigregister(FieldMap) -def FieldMap_create_allocator(*args): - return _quickfix.FieldMap_create_allocator(*args) -FieldMap_create_allocator = _quickfix.FieldMap_create_allocator - class Message(FieldMap): __swig_setmethods__ = {} for _s in [FieldMap]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{})) @@ -967,6 +965,7 @@ def setStringHeader(self, *args): return _quickfix.Message_setStringHeader(self, def getHeader(self, *args): return _quickfix.Message_getHeader(self, *args) def getTrailer(self, *args): return _quickfix.Message_getTrailer(self, *args) def hasValidStructure(self, *args): return _quickfix.Message_hasValidStructure(self, *args) + def hasInvalidTagFormat(self): return _quickfix.Message_hasInvalidTagFormat(self) def bodyLength(self, *args): return _quickfix.Message_bodyLength(self, *args) def checkSum(self, *args): return _quickfix.Message_checkSum(self, *args) def isAdmin(self): return _quickfix.Message_isAdmin(self) @@ -30364,12 +30363,12 @@ def __init__(self, *args): def getName(self): return _quickfix.Dictionary_getName(self) def size(self): return _quickfix.Dictionary_size(self) def getString(self, *args): return _quickfix.Dictionary_getString(self, *args) - def getLong(self, *args): return _quickfix.Dictionary_getLong(self, *args) + def getInt(self, *args): return _quickfix.Dictionary_getInt(self, *args) def getDouble(self, *args): return _quickfix.Dictionary_getDouble(self, *args) def getBool(self, *args): return _quickfix.Dictionary_getBool(self, *args) def getDay(self, *args): return _quickfix.Dictionary_getDay(self, *args) def setString(self, *args): return _quickfix.Dictionary_setString(self, *args) - def setLong(self, *args): return _quickfix.Dictionary_setLong(self, *args) + def setInt(self, *args): return _quickfix.Dictionary_setInt(self, *args) def setDouble(self, *args): return _quickfix.Dictionary_setDouble(self, *args) def setBool(self, *args): return _quickfix.Dictionary_setBool(self, *args) def setDay(self, *args): return _quickfix.Dictionary_setDay(self, *args) @@ -31103,10 +31102,27 @@ def __init__(self, *args): SocketAcceptorBase_swigregister = _quickfix.SocketAcceptorBase_swigregister SocketAcceptorBase_swigregister(SocketAcceptorBase) -class DataDictionary(_object): +class DataDictionaryBase(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DataDictionaryBase, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DataDictionaryBase, name) + __repr__ = _swig_repr + def __init__(self): + this = _quickfix.new_DataDictionaryBase() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _quickfix.delete_DataDictionaryBase + __del__ = lambda self : None; +DataDictionaryBase_swigregister = _quickfix.DataDictionaryBase_swigregister +DataDictionaryBase_swigregister(DataDictionaryBase) + +class DataDictionary(DataDictionaryBase): __swig_setmethods__ = {} + for _s in [DataDictionaryBase]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{})) __setattr__ = lambda self, name, value: _swig_setattr(self, DataDictionary, name, value) __swig_getmethods__ = {} + for _s in [DataDictionaryBase]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{})) __getattr__ = lambda self, name: _swig_getattr(self, DataDictionary, name) __repr__ = _swig_repr def __init__(self, *args): diff --git a/src/python/swig.sh b/src/python/swig.sh index 444b02739..16060ee37 100755 --- a/src/python/swig.sh +++ b/src/python/swig.sh @@ -1,4 +1,4 @@ #!/bin/sh -swig -threads -python -c++ -o QuickfixPython.cpp quickfix.i +swig -DALIGN_DECL_DEFAULT -DHEAVYUSE -DPURE_DECL -threads -python -c++ -o QuickfixPython.cpp quickfix.i cat quickfix_fields.py >> quickfix.py diff --git a/src/quickfix.i b/src/quickfix.i index 38cbf2445..d2271fa7c 100644 --- a/src/quickfix.i +++ b/src/quickfix.i @@ -15,8 +15,8 @@ %array_class(int, IntArray); %ignore _REENTRANT; -%ignore ALIGN_DECL_DEFAULT; %ignore FIX::SynchronizedApplication::m_mutex; +%ignore FIX::FieldMap::FieldMap( const allocator_type&, const message_order&, const Options& ); %rename(SocketInitiatorBase) FIX::SocketInitiator; %rename(SocketAcceptorBase) FIX::SocketAcceptor; diff --git a/src/ruby/QuickfixRuby.cpp b/src/ruby/QuickfixRuby.cpp index 399c7658e..731f3a1e9 100644 --- a/src/ruby/QuickfixRuby.cpp +++ b/src/ruby/QuickfixRuby.cpp @@ -2531,1451 +2531,1454 @@ namespace Swig { #define SWIGTYPE_p_FIX__DAYOFMONTH swig_types[258] #define SWIGTYPE_p_FIX__DKReason swig_types[259] #define SWIGTYPE_p_FIX__DataDictionary swig_types[260] -#define SWIGTYPE_p_FIX__DataDictionaryNotFound swig_types[261] -#define SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type swig_types[262] -#define SWIGTYPE_p_FIX__DateOfBirth swig_types[263] -#define SWIGTYPE_p_FIX__DatedDate swig_types[264] -#define SWIGTYPE_p_FIX__DayAvgPx swig_types[265] -#define SWIGTYPE_p_FIX__DayBookingInst swig_types[266] -#define SWIGTYPE_p_FIX__DayCumQty swig_types[267] -#define SWIGTYPE_p_FIX__DayOrderQty swig_types[268] -#define SWIGTYPE_p_FIX__DealingCapacity swig_types[269] -#define SWIGTYPE_p_FIX__DefBidSize swig_types[270] -#define SWIGTYPE_p_FIX__DefOfferSize swig_types[271] -#define SWIGTYPE_p_FIX__DefaultApplExtID swig_types[272] -#define SWIGTYPE_p_FIX__DefaultApplVerID swig_types[273] -#define SWIGTYPE_p_FIX__DefaultCstmApplVerID swig_types[274] -#define SWIGTYPE_p_FIX__DefaultVerIndicator swig_types[275] -#define SWIGTYPE_p_FIX__DeleteReason swig_types[276] -#define SWIGTYPE_p_FIX__DeliverToCompID swig_types[277] -#define SWIGTYPE_p_FIX__DeliverToLocationID swig_types[278] -#define SWIGTYPE_p_FIX__DeliverToSubID swig_types[279] -#define SWIGTYPE_p_FIX__DeliveryDate swig_types[280] -#define SWIGTYPE_p_FIX__DeliveryForm swig_types[281] -#define SWIGTYPE_p_FIX__DeliveryType swig_types[282] -#define SWIGTYPE_p_FIX__DerivFlexProductEligibilityIndicator swig_types[283] -#define SWIGTYPE_p_FIX__DerivativeCFICode swig_types[284] -#define SWIGTYPE_p_FIX__DerivativeCapPrice swig_types[285] -#define SWIGTYPE_p_FIX__DerivativeContractMultiplier swig_types[286] -#define SWIGTYPE_p_FIX__DerivativeContractMultiplierUnit swig_types[287] -#define SWIGTYPE_p_FIX__DerivativeContractSettlMonth swig_types[288] -#define SWIGTYPE_p_FIX__DerivativeCountryOfIssue swig_types[289] -#define SWIGTYPE_p_FIX__DerivativeEncodedIssuer swig_types[290] -#define SWIGTYPE_p_FIX__DerivativeEncodedIssuerLen swig_types[291] -#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDesc swig_types[292] -#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDescLen swig_types[293] -#define SWIGTYPE_p_FIX__DerivativeEventDate swig_types[294] -#define SWIGTYPE_p_FIX__DerivativeEventPx swig_types[295] -#define SWIGTYPE_p_FIX__DerivativeEventText swig_types[296] -#define SWIGTYPE_p_FIX__DerivativeEventTime swig_types[297] -#define SWIGTYPE_p_FIX__DerivativeEventType swig_types[298] -#define SWIGTYPE_p_FIX__DerivativeExerciseStyle swig_types[299] -#define SWIGTYPE_p_FIX__DerivativeFloorPrice swig_types[300] -#define SWIGTYPE_p_FIX__DerivativeFlowScheduleType swig_types[301] -#define SWIGTYPE_p_FIX__DerivativeFuturesValuationMethod swig_types[302] -#define SWIGTYPE_p_FIX__DerivativeInstrAttribType swig_types[303] -#define SWIGTYPE_p_FIX__DerivativeInstrAttribValue swig_types[304] -#define SWIGTYPE_p_FIX__DerivativeInstrRegistry swig_types[305] -#define SWIGTYPE_p_FIX__DerivativeInstrmtAssignmentMethod swig_types[306] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyID swig_types[307] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyIDSource swig_types[308] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyRole swig_types[309] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubID swig_types[310] -#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubIDType swig_types[311] -#define SWIGTYPE_p_FIX__DerivativeIssueDate swig_types[312] -#define SWIGTYPE_p_FIX__DerivativeIssuer swig_types[313] -#define SWIGTYPE_p_FIX__DerivativeListMethod swig_types[314] -#define SWIGTYPE_p_FIX__DerivativeLocaleOfIssue swig_types[315] -#define SWIGTYPE_p_FIX__DerivativeMaturityDate swig_types[316] -#define SWIGTYPE_p_FIX__DerivativeMaturityMonthYear swig_types[317] -#define SWIGTYPE_p_FIX__DerivativeMaturityTime swig_types[318] -#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrement swig_types[319] -#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrementAmount swig_types[320] -#define SWIGTYPE_p_FIX__DerivativeNTPositionLimit swig_types[321] -#define SWIGTYPE_p_FIX__DerivativeOptAttribute swig_types[322] -#define SWIGTYPE_p_FIX__DerivativeOptPayAmount swig_types[323] -#define SWIGTYPE_p_FIX__DerivativePositionLimit swig_types[324] -#define SWIGTYPE_p_FIX__DerivativePriceQuoteMethod swig_types[325] -#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasure swig_types[326] -#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasureQty swig_types[327] -#define SWIGTYPE_p_FIX__DerivativeProduct swig_types[328] -#define SWIGTYPE_p_FIX__DerivativeProductComplex swig_types[329] -#define SWIGTYPE_p_FIX__DerivativePutOrCall swig_types[330] -#define SWIGTYPE_p_FIX__DerivativeSecurityAltID swig_types[331] -#define SWIGTYPE_p_FIX__DerivativeSecurityAltIDSource swig_types[332] -#define SWIGTYPE_p_FIX__DerivativeSecurityDesc swig_types[333] -#define SWIGTYPE_p_FIX__DerivativeSecurityExchange swig_types[334] -#define SWIGTYPE_p_FIX__DerivativeSecurityGroup swig_types[335] -#define SWIGTYPE_p_FIX__DerivativeSecurityID swig_types[336] -#define SWIGTYPE_p_FIX__DerivativeSecurityIDSource swig_types[337] -#define SWIGTYPE_p_FIX__DerivativeSecurityStatus swig_types[338] -#define SWIGTYPE_p_FIX__DerivativeSecuritySubType swig_types[339] -#define SWIGTYPE_p_FIX__DerivativeSecurityType swig_types[340] -#define SWIGTYPE_p_FIX__DerivativeSecurityXML swig_types[341] -#define SWIGTYPE_p_FIX__DerivativeSecurityXMLLen swig_types[342] -#define SWIGTYPE_p_FIX__DerivativeSecurityXMLSchema swig_types[343] -#define SWIGTYPE_p_FIX__DerivativeSettlMethod swig_types[344] -#define SWIGTYPE_p_FIX__DerivativeSettleOnOpenFlag swig_types[345] -#define SWIGTYPE_p_FIX__DerivativeStateOrProvinceOfIssue swig_types[346] -#define SWIGTYPE_p_FIX__DerivativeStrikeCurrency swig_types[347] -#define SWIGTYPE_p_FIX__DerivativeStrikeMultiplier swig_types[348] -#define SWIGTYPE_p_FIX__DerivativeStrikePrice swig_types[349] -#define SWIGTYPE_p_FIX__DerivativeStrikeValue swig_types[350] -#define SWIGTYPE_p_FIX__DerivativeSymbol swig_types[351] -#define SWIGTYPE_p_FIX__DerivativeSymbolSfx swig_types[352] -#define SWIGTYPE_p_FIX__DerivativeTimeUnit swig_types[353] -#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasure swig_types[354] -#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasureQty swig_types[355] -#define SWIGTYPE_p_FIX__DerivativeValuationMethod swig_types[356] -#define SWIGTYPE_p_FIX__Designation swig_types[357] -#define SWIGTYPE_p_FIX__DeskID swig_types[358] -#define SWIGTYPE_p_FIX__DeskOrderHandlingInst swig_types[359] -#define SWIGTYPE_p_FIX__DeskType swig_types[360] -#define SWIGTYPE_p_FIX__DeskTypeSource swig_types[361] -#define SWIGTYPE_p_FIX__DetachmentPoint swig_types[362] -#define SWIGTYPE_p_FIX__Dictionary swig_types[363] -#define SWIGTYPE_p_FIX__Dictionary__Data__const_iterator swig_types[364] -#define SWIGTYPE_p_FIX__DiscretionInst swig_types[365] -#define SWIGTYPE_p_FIX__DiscretionLimitType swig_types[366] -#define SWIGTYPE_p_FIX__DiscretionMoveType swig_types[367] -#define SWIGTYPE_p_FIX__DiscretionOffset swig_types[368] -#define SWIGTYPE_p_FIX__DiscretionOffsetType swig_types[369] -#define SWIGTYPE_p_FIX__DiscretionOffsetValue swig_types[370] -#define SWIGTYPE_p_FIX__DiscretionPrice swig_types[371] -#define SWIGTYPE_p_FIX__DiscretionRoundDirection swig_types[372] -#define SWIGTYPE_p_FIX__DiscretionScope swig_types[373] -#define SWIGTYPE_p_FIX__DisplayHighQty swig_types[374] -#define SWIGTYPE_p_FIX__DisplayLowQty swig_types[375] -#define SWIGTYPE_p_FIX__DisplayMethod swig_types[376] -#define SWIGTYPE_p_FIX__DisplayMinIncr swig_types[377] -#define SWIGTYPE_p_FIX__DisplayQty swig_types[378] -#define SWIGTYPE_p_FIX__DisplayWhen swig_types[379] -#define SWIGTYPE_p_FIX__DistribPaymentMethod swig_types[380] -#define SWIGTYPE_p_FIX__DistribPercentage swig_types[381] -#define SWIGTYPE_p_FIX__DividendYield swig_types[382] -#define SWIGTYPE_p_FIX__DlvyInst swig_types[383] -#define SWIGTYPE_p_FIX__DlvyInstType swig_types[384] -#define SWIGTYPE_p_FIX__DoNotSend swig_types[385] -#define SWIGTYPE_p_FIX__DoubleField swig_types[386] -#define SWIGTYPE_p_FIX__DueToRelated swig_types[387] -#define SWIGTYPE_p_FIX__DuplicateFieldNumber swig_types[388] -#define SWIGTYPE_p_FIX__EFPTrackingError swig_types[389] -#define SWIGTYPE_p_FIX__EXCHANGE swig_types[390] -#define SWIGTYPE_p_FIX__EffectiveTime swig_types[391] -#define SWIGTYPE_p_FIX__EmailThreadID swig_types[392] -#define SWIGTYPE_p_FIX__EmailType swig_types[393] -#define SWIGTYPE_p_FIX__EncodedAllocText swig_types[394] -#define SWIGTYPE_p_FIX__EncodedAllocTextLen swig_types[395] -#define SWIGTYPE_p_FIX__EncodedHeadline swig_types[396] -#define SWIGTYPE_p_FIX__EncodedHeadlineLen swig_types[397] -#define SWIGTYPE_p_FIX__EncodedIssuer swig_types[398] -#define SWIGTYPE_p_FIX__EncodedIssuerLen swig_types[399] -#define SWIGTYPE_p_FIX__EncodedLegIssuer swig_types[400] -#define SWIGTYPE_p_FIX__EncodedLegIssuerLen swig_types[401] -#define SWIGTYPE_p_FIX__EncodedLegSecurityDesc swig_types[402] -#define SWIGTYPE_p_FIX__EncodedLegSecurityDescLen swig_types[403] -#define SWIGTYPE_p_FIX__EncodedListExecInst swig_types[404] -#define SWIGTYPE_p_FIX__EncodedListExecInstLen swig_types[405] -#define SWIGTYPE_p_FIX__EncodedListStatusText swig_types[406] -#define SWIGTYPE_p_FIX__EncodedListStatusTextLen swig_types[407] -#define SWIGTYPE_p_FIX__EncodedMktSegmDesc swig_types[408] -#define SWIGTYPE_p_FIX__EncodedMktSegmDescLen swig_types[409] -#define SWIGTYPE_p_FIX__EncodedSecurityDesc swig_types[410] -#define SWIGTYPE_p_FIX__EncodedSecurityDescLen swig_types[411] -#define SWIGTYPE_p_FIX__EncodedSecurityListDesc swig_types[412] -#define SWIGTYPE_p_FIX__EncodedSecurityListDescLen swig_types[413] -#define SWIGTYPE_p_FIX__EncodedSubject swig_types[414] -#define SWIGTYPE_p_FIX__EncodedSubjectLen swig_types[415] -#define SWIGTYPE_p_FIX__EncodedText swig_types[416] -#define SWIGTYPE_p_FIX__EncodedTextLen swig_types[417] -#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuer swig_types[418] -#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuerLen swig_types[419] -#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDesc swig_types[420] -#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDescLen swig_types[421] -#define SWIGTYPE_p_FIX__EncryptMethod swig_types[422] -#define SWIGTYPE_p_FIX__EncryptedNewPassword swig_types[423] -#define SWIGTYPE_p_FIX__EncryptedNewPasswordLen swig_types[424] -#define SWIGTYPE_p_FIX__EncryptedPassword swig_types[425] -#define SWIGTYPE_p_FIX__EncryptedPasswordLen swig_types[426] -#define SWIGTYPE_p_FIX__EncryptedPasswordMethod swig_types[427] -#define SWIGTYPE_p_FIX__EndAccruedInterestAmt swig_types[428] -#define SWIGTYPE_p_FIX__EndCash swig_types[429] -#define SWIGTYPE_p_FIX__EndDate swig_types[430] -#define SWIGTYPE_p_FIX__EndMaturityMonthYear swig_types[431] -#define SWIGTYPE_p_FIX__EndSeqNo swig_types[432] -#define SWIGTYPE_p_FIX__EndStrikePxRange swig_types[433] -#define SWIGTYPE_p_FIX__EndTickPriceRange swig_types[434] -#define SWIGTYPE_p_FIX__EventDate swig_types[435] -#define SWIGTYPE_p_FIX__EventPx swig_types[436] -#define SWIGTYPE_p_FIX__EventText swig_types[437] -#define SWIGTYPE_p_FIX__EventTime swig_types[438] -#define SWIGTYPE_p_FIX__EventType swig_types[439] -#define SWIGTYPE_p_FIX__ExDate swig_types[440] -#define SWIGTYPE_p_FIX__ExDestination swig_types[441] -#define SWIGTYPE_p_FIX__ExDestinationIDSource swig_types[442] -#define SWIGTYPE_p_FIX__Exception swig_types[443] -#define SWIGTYPE_p_FIX__ExchangeForPhysical swig_types[444] -#define SWIGTYPE_p_FIX__ExchangeRule swig_types[445] -#define SWIGTYPE_p_FIX__ExchangeSpecialInstructions swig_types[446] -#define SWIGTYPE_p_FIX__ExecAckStatus swig_types[447] -#define SWIGTYPE_p_FIX__ExecBroker swig_types[448] -#define SWIGTYPE_p_FIX__ExecID swig_types[449] -#define SWIGTYPE_p_FIX__ExecInst swig_types[450] -#define SWIGTYPE_p_FIX__ExecInstValue swig_types[451] -#define SWIGTYPE_p_FIX__ExecPriceAdjustment swig_types[452] -#define SWIGTYPE_p_FIX__ExecPriceType swig_types[453] -#define SWIGTYPE_p_FIX__ExecRefID swig_types[454] -#define SWIGTYPE_p_FIX__ExecRestatementReason swig_types[455] -#define SWIGTYPE_p_FIX__ExecTransType swig_types[456] -#define SWIGTYPE_p_FIX__ExecType swig_types[457] -#define SWIGTYPE_p_FIX__ExecValuationPoint swig_types[458] -#define SWIGTYPE_p_FIX__ExerciseMethod swig_types[459] -#define SWIGTYPE_p_FIX__ExerciseStyle swig_types[460] -#define SWIGTYPE_p_FIX__ExpQty swig_types[461] -#define SWIGTYPE_p_FIX__ExpType swig_types[462] -#define SWIGTYPE_p_FIX__ExpirationCycle swig_types[463] -#define SWIGTYPE_p_FIX__ExpirationQtyType swig_types[464] -#define SWIGTYPE_p_FIX__ExpireDate swig_types[465] -#define SWIGTYPE_p_FIX__ExpireTime swig_types[466] -#define SWIGTYPE_p_FIX__FLOAT swig_types[467] -#define SWIGTYPE_p_FIX__Factor swig_types[468] -#define SWIGTYPE_p_FIX__FairValue swig_types[469] -#define SWIGTYPE_p_FIX__FeeMultiplier swig_types[470] -#define SWIGTYPE_p_FIX__FieldBase swig_types[471] -#define SWIGTYPE_p_FIX__FieldConvertError swig_types[472] -#define SWIGTYPE_p_FIX__FieldMap swig_types[473] -#define SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type swig_types[474] -#define SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator swig_types[475] -#define SWIGTYPE_p_FIX__FieldMap__Groups__const_iterator swig_types[476] -#define SWIGTYPE_p_FIX__FieldNotFound swig_types[477] -#define SWIGTYPE_p_FIX__FieldTag swig_types[478] -#define SWIGTYPE_p_FIX__FileLog swig_types[479] -#define SWIGTYPE_p_FIX__FileLogFactory swig_types[480] -#define SWIGTYPE_p_FIX__FileStore swig_types[481] -#define SWIGTYPE_p_FIX__FileStoreFactory swig_types[482] -#define SWIGTYPE_p_FIX__FillExecID swig_types[483] -#define SWIGTYPE_p_FIX__FillLiquidityInd swig_types[484] -#define SWIGTYPE_p_FIX__FillPx swig_types[485] -#define SWIGTYPE_p_FIX__FillQty swig_types[486] -#define SWIGTYPE_p_FIX__FinancialStatus swig_types[487] -#define SWIGTYPE_p_FIX__FirmTradeID swig_types[488] -#define SWIGTYPE_p_FIX__FirstPx swig_types[489] -#define SWIGTYPE_p_FIX__FlexProductEligibilityIndicator swig_types[490] -#define SWIGTYPE_p_FIX__FlexibleIndicator swig_types[491] -#define SWIGTYPE_p_FIX__FloorPrice swig_types[492] -#define SWIGTYPE_p_FIX__FlowScheduleType swig_types[493] -#define SWIGTYPE_p_FIX__ForexReq swig_types[494] -#define SWIGTYPE_p_FIX__FundRenewWaiv swig_types[495] -#define SWIGTYPE_p_FIX__FutSettDate swig_types[496] -#define SWIGTYPE_p_FIX__FutSettDate2 swig_types[497] -#define SWIGTYPE_p_FIX__FuturesValuationMethod swig_types[498] -#define SWIGTYPE_p_FIX__GTBookingInst swig_types[499] -#define SWIGTYPE_p_FIX__GapFillFlag swig_types[500] -#define SWIGTYPE_p_FIX__GrossTradeAmt swig_types[501] -#define SWIGTYPE_p_FIX__Group swig_types[502] -#define SWIGTYPE_p_FIX__HaltReasonChar swig_types[503] -#define SWIGTYPE_p_FIX__HaltReasonInt swig_types[504] -#define SWIGTYPE_p_FIX__HandlInst swig_types[505] -#define SWIGTYPE_p_FIX__Headline swig_types[506] -#define SWIGTYPE_p_FIX__HeartBtInt swig_types[507] -#define SWIGTYPE_p_FIX__HighLimitPrice swig_types[508] -#define SWIGTYPE_p_FIX__HighPx swig_types[509] -#define SWIGTYPE_p_FIX__HopCompID swig_types[510] -#define SWIGTYPE_p_FIX__HopRefID swig_types[511] -#define SWIGTYPE_p_FIX__HopSendingTime swig_types[512] -#define SWIGTYPE_p_FIX__HostCrossID swig_types[513] -#define SWIGTYPE_p_FIX__IDSource swig_types[514] -#define SWIGTYPE_p_FIX__INT swig_types[515] -#define SWIGTYPE_p_FIX__IOException swig_types[516] -#define SWIGTYPE_p_FIX__IOIID swig_types[517] -#define SWIGTYPE_p_FIX__IOINaturalFlag swig_types[518] -#define SWIGTYPE_p_FIX__IOIOthSvc swig_types[519] -#define SWIGTYPE_p_FIX__IOIQltyInd swig_types[520] -#define SWIGTYPE_p_FIX__IOIQty swig_types[521] -#define SWIGTYPE_p_FIX__IOIQualifier swig_types[522] -#define SWIGTYPE_p_FIX__IOIRefID swig_types[523] -#define SWIGTYPE_p_FIX__IOIShares swig_types[524] -#define SWIGTYPE_p_FIX__IOITransType swig_types[525] -#define SWIGTYPE_p_FIX__IOIid swig_types[526] -#define SWIGTYPE_p_FIX__ImpliedMarketIndicator swig_types[527] -#define SWIGTYPE_p_FIX__InViewOfCommon swig_types[528] -#define SWIGTYPE_p_FIX__IncTaxInd swig_types[529] -#define SWIGTYPE_p_FIX__IncorrectDataFormat swig_types[530] -#define SWIGTYPE_p_FIX__IncorrectMessageStructure swig_types[531] -#define SWIGTYPE_p_FIX__IncorrectTagValue swig_types[532] -#define SWIGTYPE_p_FIX__IndividualAllocID swig_types[533] -#define SWIGTYPE_p_FIX__IndividualAllocRejCode swig_types[534] -#define SWIGTYPE_p_FIX__IndividualAllocType swig_types[535] -#define SWIGTYPE_p_FIX__Initiator swig_types[536] -#define SWIGTYPE_p_FIX__InputSource swig_types[537] -#define SWIGTYPE_p_FIX__InstrAttribType swig_types[538] -#define SWIGTYPE_p_FIX__InstrAttribValue swig_types[539] -#define SWIGTYPE_p_FIX__InstrRegistry swig_types[540] -#define SWIGTYPE_p_FIX__InstrmtAssignmentMethod swig_types[541] -#define SWIGTYPE_p_FIX__InstrumentPartyID swig_types[542] -#define SWIGTYPE_p_FIX__InstrumentPartyIDSource swig_types[543] -#define SWIGTYPE_p_FIX__InstrumentPartyRole swig_types[544] -#define SWIGTYPE_p_FIX__InstrumentPartySubID swig_types[545] -#define SWIGTYPE_p_FIX__InstrumentPartySubIDType swig_types[546] -#define SWIGTYPE_p_FIX__IntField swig_types[547] -#define SWIGTYPE_p_FIX__InterestAccrualDate swig_types[548] -#define SWIGTYPE_p_FIX__InterestAtMaturity swig_types[549] -#define SWIGTYPE_p_FIX__InvalidMessage swig_types[550] -#define SWIGTYPE_p_FIX__InvalidMessageType swig_types[551] -#define SWIGTYPE_p_FIX__InvalidTagNumber swig_types[552] -#define SWIGTYPE_p_FIX__InvestorCountryOfResidence swig_types[553] -#define SWIGTYPE_p_FIX__IssueDate swig_types[554] -#define SWIGTYPE_p_FIX__Issuer swig_types[555] -#define SWIGTYPE_p_FIX__LANGUAGE swig_types[556] -#define SWIGTYPE_p_FIX__LENGTH swig_types[557] -#define SWIGTYPE_p_FIX__LOCALMKTDATE swig_types[558] -#define SWIGTYPE_p_FIX__LanguageCode swig_types[559] -#define SWIGTYPE_p_FIX__LastCapacity swig_types[560] -#define SWIGTYPE_p_FIX__LastForwardPoints swig_types[561] -#define SWIGTYPE_p_FIX__LastForwardPoints2 swig_types[562] -#define SWIGTYPE_p_FIX__LastFragment swig_types[563] -#define SWIGTYPE_p_FIX__LastLiquidityInd swig_types[564] -#define SWIGTYPE_p_FIX__LastMkt swig_types[565] -#define SWIGTYPE_p_FIX__LastMsgSeqNumProcessed swig_types[566] -#define SWIGTYPE_p_FIX__LastNetworkResponseID swig_types[567] -#define SWIGTYPE_p_FIX__LastParPx swig_types[568] -#define SWIGTYPE_p_FIX__LastPx swig_types[569] -#define SWIGTYPE_p_FIX__LastQty swig_types[570] -#define SWIGTYPE_p_FIX__LastRptRequested swig_types[571] -#define SWIGTYPE_p_FIX__LastShares swig_types[572] -#define SWIGTYPE_p_FIX__LastSpotRate swig_types[573] -#define SWIGTYPE_p_FIX__LastSwapPoints swig_types[574] -#define SWIGTYPE_p_FIX__LastUpdateTime swig_types[575] -#define SWIGTYPE_p_FIX__LateIndicator swig_types[576] -#define SWIGTYPE_p_FIX__LeavesQty swig_types[577] -#define SWIGTYPE_p_FIX__LegAllocAccount swig_types[578] -#define SWIGTYPE_p_FIX__LegAllocAcctIDSource swig_types[579] -#define SWIGTYPE_p_FIX__LegAllocID swig_types[580] -#define SWIGTYPE_p_FIX__LegAllocQty swig_types[581] -#define SWIGTYPE_p_FIX__LegAllocSettlCurrency swig_types[582] -#define SWIGTYPE_p_FIX__LegBenchmarkCurveCurrency swig_types[583] -#define SWIGTYPE_p_FIX__LegBenchmarkCurveName swig_types[584] -#define SWIGTYPE_p_FIX__LegBenchmarkCurvePoint swig_types[585] -#define SWIGTYPE_p_FIX__LegBenchmarkPrice swig_types[586] -#define SWIGTYPE_p_FIX__LegBenchmarkPriceType swig_types[587] -#define SWIGTYPE_p_FIX__LegBidForwardPoints swig_types[588] -#define SWIGTYPE_p_FIX__LegBidPx swig_types[589] -#define SWIGTYPE_p_FIX__LegCFICode swig_types[590] -#define SWIGTYPE_p_FIX__LegCalculatedCcyLastQty swig_types[591] -#define SWIGTYPE_p_FIX__LegContractMultiplier swig_types[592] -#define SWIGTYPE_p_FIX__LegContractMultiplierUnit swig_types[593] -#define SWIGTYPE_p_FIX__LegContractSettlMonth swig_types[594] -#define SWIGTYPE_p_FIX__LegCountryOfIssue swig_types[595] -#define SWIGTYPE_p_FIX__LegCouponPaymentDate swig_types[596] -#define SWIGTYPE_p_FIX__LegCouponRate swig_types[597] -#define SWIGTYPE_p_FIX__LegCoveredOrUncovered swig_types[598] -#define SWIGTYPE_p_FIX__LegCreditRating swig_types[599] -#define SWIGTYPE_p_FIX__LegCurrency swig_types[600] -#define SWIGTYPE_p_FIX__LegCurrencyRatio swig_types[601] -#define SWIGTYPE_p_FIX__LegDatedDate swig_types[602] -#define SWIGTYPE_p_FIX__LegDividendYield swig_types[603] -#define SWIGTYPE_p_FIX__LegExecInst swig_types[604] -#define SWIGTYPE_p_FIX__LegExerciseStyle swig_types[605] -#define SWIGTYPE_p_FIX__LegFactor swig_types[606] -#define SWIGTYPE_p_FIX__LegFlowScheduleType swig_types[607] -#define SWIGTYPE_p_FIX__LegFutSettDate swig_types[608] -#define SWIGTYPE_p_FIX__LegGrossTradeAmt swig_types[609] -#define SWIGTYPE_p_FIX__LegIOIQty swig_types[610] -#define SWIGTYPE_p_FIX__LegIndividualAllocID swig_types[611] -#define SWIGTYPE_p_FIX__LegInstrRegistry swig_types[612] -#define SWIGTYPE_p_FIX__LegInterestAccrualDate swig_types[613] -#define SWIGTYPE_p_FIX__LegIssueDate swig_types[614] -#define SWIGTYPE_p_FIX__LegIssuer swig_types[615] -#define SWIGTYPE_p_FIX__LegLastForwardPoints swig_types[616] -#define SWIGTYPE_p_FIX__LegLastPx swig_types[617] -#define SWIGTYPE_p_FIX__LegLastQty swig_types[618] -#define SWIGTYPE_p_FIX__LegLocaleOfIssue swig_types[619] -#define SWIGTYPE_p_FIX__LegMaturityDate swig_types[620] -#define SWIGTYPE_p_FIX__LegMaturityMonthYear swig_types[621] -#define SWIGTYPE_p_FIX__LegMaturityTime swig_types[622] -#define SWIGTYPE_p_FIX__LegNumber swig_types[623] -#define SWIGTYPE_p_FIX__LegOfferForwardPoints swig_types[624] -#define SWIGTYPE_p_FIX__LegOfferPx swig_types[625] -#define SWIGTYPE_p_FIX__LegOptAttribute swig_types[626] -#define SWIGTYPE_p_FIX__LegOptionRatio swig_types[627] -#define SWIGTYPE_p_FIX__LegOrderQty swig_types[628] -#define SWIGTYPE_p_FIX__LegPool swig_types[629] -#define SWIGTYPE_p_FIX__LegPositionEffect swig_types[630] -#define SWIGTYPE_p_FIX__LegPrice swig_types[631] -#define SWIGTYPE_p_FIX__LegPriceType swig_types[632] -#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasure swig_types[633] -#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasureQty swig_types[634] -#define SWIGTYPE_p_FIX__LegProduct swig_types[635] -#define SWIGTYPE_p_FIX__LegPutOrCall swig_types[636] -#define SWIGTYPE_p_FIX__LegQty swig_types[637] -#define SWIGTYPE_p_FIX__LegRatioQty swig_types[638] -#define SWIGTYPE_p_FIX__LegRedemptionDate swig_types[639] -#define SWIGTYPE_p_FIX__LegRefID swig_types[640] -#define SWIGTYPE_p_FIX__LegRepoCollateralSecurityType swig_types[641] -#define SWIGTYPE_p_FIX__LegReportID swig_types[642] -#define SWIGTYPE_p_FIX__LegRepurchaseRate swig_types[643] -#define SWIGTYPE_p_FIX__LegRepurchaseTerm swig_types[644] -#define SWIGTYPE_p_FIX__LegSecurityAltID swig_types[645] -#define SWIGTYPE_p_FIX__LegSecurityAltIDSource swig_types[646] -#define SWIGTYPE_p_FIX__LegSecurityDesc swig_types[647] -#define SWIGTYPE_p_FIX__LegSecurityExchange swig_types[648] -#define SWIGTYPE_p_FIX__LegSecurityID swig_types[649] -#define SWIGTYPE_p_FIX__LegSecurityIDSource swig_types[650] -#define SWIGTYPE_p_FIX__LegSecuritySubType swig_types[651] -#define SWIGTYPE_p_FIX__LegSecurityType swig_types[652] -#define SWIGTYPE_p_FIX__LegSettlCurrency swig_types[653] -#define SWIGTYPE_p_FIX__LegSettlDate swig_types[654] -#define SWIGTYPE_p_FIX__LegSettlType swig_types[655] -#define SWIGTYPE_p_FIX__LegSettlmntTyp swig_types[656] -#define SWIGTYPE_p_FIX__LegSide swig_types[657] -#define SWIGTYPE_p_FIX__LegStateOrProvinceOfIssue swig_types[658] -#define SWIGTYPE_p_FIX__LegStipulationType swig_types[659] -#define SWIGTYPE_p_FIX__LegStipulationValue swig_types[660] -#define SWIGTYPE_p_FIX__LegStrikeCurrency swig_types[661] -#define SWIGTYPE_p_FIX__LegStrikePrice swig_types[662] -#define SWIGTYPE_p_FIX__LegSwapType swig_types[663] -#define SWIGTYPE_p_FIX__LegSymbol swig_types[664] -#define SWIGTYPE_p_FIX__LegSymbolSfx swig_types[665] -#define SWIGTYPE_p_FIX__LegTimeUnit swig_types[666] -#define SWIGTYPE_p_FIX__LegUnitOfMeasure swig_types[667] -#define SWIGTYPE_p_FIX__LegUnitOfMeasureQty swig_types[668] -#define SWIGTYPE_p_FIX__LegVolatility swig_types[669] -#define SWIGTYPE_p_FIX__LegalConfirm swig_types[670] -#define SWIGTYPE_p_FIX__LinesOfText swig_types[671] -#define SWIGTYPE_p_FIX__LiquidityIndType swig_types[672] -#define SWIGTYPE_p_FIX__LiquidityNumSecurities swig_types[673] -#define SWIGTYPE_p_FIX__LiquidityPctHigh swig_types[674] -#define SWIGTYPE_p_FIX__LiquidityPctLow swig_types[675] -#define SWIGTYPE_p_FIX__LiquidityValue swig_types[676] -#define SWIGTYPE_p_FIX__ListExecInst swig_types[677] -#define SWIGTYPE_p_FIX__ListExecInstType swig_types[678] -#define SWIGTYPE_p_FIX__ListID swig_types[679] -#define SWIGTYPE_p_FIX__ListMethod swig_types[680] -#define SWIGTYPE_p_FIX__ListName swig_types[681] -#define SWIGTYPE_p_FIX__ListNoOrds swig_types[682] -#define SWIGTYPE_p_FIX__ListOrderStatus swig_types[683] -#define SWIGTYPE_p_FIX__ListRejectReason swig_types[684] -#define SWIGTYPE_p_FIX__ListSeqNo swig_types[685] -#define SWIGTYPE_p_FIX__ListStatusText swig_types[686] -#define SWIGTYPE_p_FIX__ListStatusType swig_types[687] -#define SWIGTYPE_p_FIX__ListUpdateAction swig_types[688] -#define SWIGTYPE_p_FIX__LocaleOfIssue swig_types[689] -#define SWIGTYPE_p_FIX__LocateReqd swig_types[690] -#define SWIGTYPE_p_FIX__LocationID swig_types[691] -#define SWIGTYPE_p_FIX__Log swig_types[692] -#define SWIGTYPE_p_FIX__LogFactory swig_types[693] -#define SWIGTYPE_p_FIX__LongQty swig_types[694] -#define SWIGTYPE_p_FIX__LotType swig_types[695] -#define SWIGTYPE_p_FIX__LowLimitPrice swig_types[696] -#define SWIGTYPE_p_FIX__LowPx swig_types[697] -#define SWIGTYPE_p_FIX__MDBookType swig_types[698] -#define SWIGTYPE_p_FIX__MDEntryBuyer swig_types[699] -#define SWIGTYPE_p_FIX__MDEntryDate swig_types[700] -#define SWIGTYPE_p_FIX__MDEntryForwardPoints swig_types[701] -#define SWIGTYPE_p_FIX__MDEntryID swig_types[702] -#define SWIGTYPE_p_FIX__MDEntryOriginator swig_types[703] -#define SWIGTYPE_p_FIX__MDEntryPositionNo swig_types[704] -#define SWIGTYPE_p_FIX__MDEntryPx swig_types[705] -#define SWIGTYPE_p_FIX__MDEntryRefID swig_types[706] -#define SWIGTYPE_p_FIX__MDEntrySeller swig_types[707] -#define SWIGTYPE_p_FIX__MDEntrySize swig_types[708] -#define SWIGTYPE_p_FIX__MDEntrySpotRate swig_types[709] -#define SWIGTYPE_p_FIX__MDEntryTime swig_types[710] -#define SWIGTYPE_p_FIX__MDEntryType swig_types[711] -#define SWIGTYPE_p_FIX__MDFeedType swig_types[712] -#define SWIGTYPE_p_FIX__MDImplicitDelete swig_types[713] -#define SWIGTYPE_p_FIX__MDMkt swig_types[714] -#define SWIGTYPE_p_FIX__MDOriginType swig_types[715] -#define SWIGTYPE_p_FIX__MDPriceLevel swig_types[716] -#define SWIGTYPE_p_FIX__MDQuoteType swig_types[717] -#define SWIGTYPE_p_FIX__MDReportID swig_types[718] -#define SWIGTYPE_p_FIX__MDReqID swig_types[719] -#define SWIGTYPE_p_FIX__MDReqRejReason swig_types[720] -#define SWIGTYPE_p_FIX__MDSecSize swig_types[721] -#define SWIGTYPE_p_FIX__MDSecSizeType swig_types[722] -#define SWIGTYPE_p_FIX__MDStreamID swig_types[723] -#define SWIGTYPE_p_FIX__MDSubBookType swig_types[724] -#define SWIGTYPE_p_FIX__MDUpdateAction swig_types[725] -#define SWIGTYPE_p_FIX__MDUpdateType swig_types[726] -#define SWIGTYPE_p_FIX__MONTHYEAR swig_types[727] -#define SWIGTYPE_p_FIX__MULTIPLECHARVALUE swig_types[728] -#define SWIGTYPE_p_FIX__MULTIPLESTRINGVALUE swig_types[729] -#define SWIGTYPE_p_FIX__MULTIPLEVALUESTRING swig_types[730] -#define SWIGTYPE_p_FIX__MailingDtls swig_types[731] -#define SWIGTYPE_p_FIX__MailingInst swig_types[732] -#define SWIGTYPE_p_FIX__ManualOrderIndicator swig_types[733] -#define SWIGTYPE_p_FIX__MarginExcess swig_types[734] -#define SWIGTYPE_p_FIX__MarginRatio swig_types[735] -#define SWIGTYPE_p_FIX__MarketDepth swig_types[736] -#define SWIGTYPE_p_FIX__MarketID swig_types[737] -#define SWIGTYPE_p_FIX__MarketReportID swig_types[738] -#define SWIGTYPE_p_FIX__MarketReqID swig_types[739] -#define SWIGTYPE_p_FIX__MarketSegmentDesc swig_types[740] -#define SWIGTYPE_p_FIX__MarketSegmentID swig_types[741] -#define SWIGTYPE_p_FIX__MarketUpdateAction swig_types[742] -#define SWIGTYPE_p_FIX__MassActionRejectReason swig_types[743] -#define SWIGTYPE_p_FIX__MassActionReportID swig_types[744] -#define SWIGTYPE_p_FIX__MassActionResponse swig_types[745] -#define SWIGTYPE_p_FIX__MassActionScope swig_types[746] -#define SWIGTYPE_p_FIX__MassActionType swig_types[747] -#define SWIGTYPE_p_FIX__MassCancelRejectReason swig_types[748] -#define SWIGTYPE_p_FIX__MassCancelRequestType swig_types[749] -#define SWIGTYPE_p_FIX__MassCancelResponse swig_types[750] -#define SWIGTYPE_p_FIX__MassStatusReqID swig_types[751] -#define SWIGTYPE_p_FIX__MassStatusReqType swig_types[752] -#define SWIGTYPE_p_FIX__MatchAlgorithm swig_types[753] -#define SWIGTYPE_p_FIX__MatchIncrement swig_types[754] -#define SWIGTYPE_p_FIX__MatchStatus swig_types[755] -#define SWIGTYPE_p_FIX__MatchType swig_types[756] -#define SWIGTYPE_p_FIX__MaturityDate swig_types[757] -#define SWIGTYPE_p_FIX__MaturityDay swig_types[758] -#define SWIGTYPE_p_FIX__MaturityMonthYear swig_types[759] -#define SWIGTYPE_p_FIX__MaturityMonthYearFormat swig_types[760] -#define SWIGTYPE_p_FIX__MaturityMonthYearIncrement swig_types[761] -#define SWIGTYPE_p_FIX__MaturityMonthYearIncrementUnits swig_types[762] -#define SWIGTYPE_p_FIX__MaturityNetMoney swig_types[763] -#define SWIGTYPE_p_FIX__MaturityRuleID swig_types[764] -#define SWIGTYPE_p_FIX__MaturityTime swig_types[765] -#define SWIGTYPE_p_FIX__MaxFloor swig_types[766] -#define SWIGTYPE_p_FIX__MaxMessageSize swig_types[767] -#define SWIGTYPE_p_FIX__MaxPriceLevels swig_types[768] -#define SWIGTYPE_p_FIX__MaxPriceVariation swig_types[769] -#define SWIGTYPE_p_FIX__MaxShow swig_types[770] -#define SWIGTYPE_p_FIX__MaxTradeVol swig_types[771] -#define SWIGTYPE_p_FIX__MemoryStore swig_types[772] -#define SWIGTYPE_p_FIX__MemoryStoreFactory swig_types[773] -#define SWIGTYPE_p_FIX__Message swig_types[774] -#define SWIGTYPE_p_FIX__MessageEncoding swig_types[775] -#define SWIGTYPE_p_FIX__MessageEventSource swig_types[776] -#define SWIGTYPE_p_FIX__MessageParseError swig_types[777] -#define SWIGTYPE_p_FIX__MessageStore swig_types[778] -#define SWIGTYPE_p_FIX__MessageStoreExceptionWrapper swig_types[779] -#define SWIGTYPE_p_FIX__MessageStoreFactory swig_types[780] -#define SWIGTYPE_p_FIX__MessageStoreFactoryExceptionWrapper swig_types[781] -#define SWIGTYPE_p_FIX__MidPx swig_types[782] -#define SWIGTYPE_p_FIX__MidYield swig_types[783] -#define SWIGTYPE_p_FIX__MinBidSize swig_types[784] -#define SWIGTYPE_p_FIX__MinLotSize swig_types[785] -#define SWIGTYPE_p_FIX__MinOfferSize swig_types[786] -#define SWIGTYPE_p_FIX__MinPriceIncrement swig_types[787] -#define SWIGTYPE_p_FIX__MinPriceIncrementAmount swig_types[788] -#define SWIGTYPE_p_FIX__MinQty swig_types[789] -#define SWIGTYPE_p_FIX__MinTradeVol swig_types[790] -#define SWIGTYPE_p_FIX__MiscFeeAmt swig_types[791] -#define SWIGTYPE_p_FIX__MiscFeeBasis swig_types[792] -#define SWIGTYPE_p_FIX__MiscFeeCurr swig_types[793] -#define SWIGTYPE_p_FIX__MiscFeeType swig_types[794] -#define SWIGTYPE_p_FIX__MktBidPx swig_types[795] -#define SWIGTYPE_p_FIX__MktOfferPx swig_types[796] -#define SWIGTYPE_p_FIX__ModelType swig_types[797] -#define SWIGTYPE_p_FIX__MoneyLaunderingStatus swig_types[798] -#define SWIGTYPE_p_FIX__MsgDirection swig_types[799] -#define SWIGTYPE_p_FIX__MsgSeqNum swig_types[800] -#define SWIGTYPE_p_FIX__MsgType swig_types[801] -#define SWIGTYPE_p_FIX__MultiLegReportingType swig_types[802] -#define SWIGTYPE_p_FIX__MultiLegRptTypeReq swig_types[803] -#define SWIGTYPE_p_FIX__MultilegModel swig_types[804] -#define SWIGTYPE_p_FIX__MultilegPriceMethod swig_types[805] -#define SWIGTYPE_p_FIX__NTPositionLimit swig_types[806] -#define SWIGTYPE_p_FIX__NUMINGROUP swig_types[807] -#define SWIGTYPE_p_FIX__Nested2PartyID swig_types[808] -#define SWIGTYPE_p_FIX__Nested2PartyIDSource swig_types[809] -#define SWIGTYPE_p_FIX__Nested2PartyRole swig_types[810] -#define SWIGTYPE_p_FIX__Nested2PartySubID swig_types[811] -#define SWIGTYPE_p_FIX__Nested2PartySubIDType swig_types[812] -#define SWIGTYPE_p_FIX__Nested3PartyID swig_types[813] -#define SWIGTYPE_p_FIX__Nested3PartyIDSource swig_types[814] -#define SWIGTYPE_p_FIX__Nested3PartyRole swig_types[815] -#define SWIGTYPE_p_FIX__Nested3PartySubID swig_types[816] -#define SWIGTYPE_p_FIX__Nested3PartySubIDType swig_types[817] -#define SWIGTYPE_p_FIX__Nested4PartyID swig_types[818] -#define SWIGTYPE_p_FIX__Nested4PartyIDSource swig_types[819] -#define SWIGTYPE_p_FIX__Nested4PartyRole swig_types[820] -#define SWIGTYPE_p_FIX__Nested4PartySubID swig_types[821] -#define SWIGTYPE_p_FIX__Nested4PartySubIDType swig_types[822] -#define SWIGTYPE_p_FIX__NestedInstrAttribType swig_types[823] -#define SWIGTYPE_p_FIX__NestedInstrAttribValue swig_types[824] -#define SWIGTYPE_p_FIX__NestedPartyID swig_types[825] -#define SWIGTYPE_p_FIX__NestedPartyIDSource swig_types[826] -#define SWIGTYPE_p_FIX__NestedPartyRole swig_types[827] -#define SWIGTYPE_p_FIX__NestedPartySubID swig_types[828] -#define SWIGTYPE_p_FIX__NestedPartySubIDType swig_types[829] -#define SWIGTYPE_p_FIX__NetChgPrevDay swig_types[830] -#define SWIGTYPE_p_FIX__NetGrossInd swig_types[831] -#define SWIGTYPE_p_FIX__NetMoney swig_types[832] -#define SWIGTYPE_p_FIX__NetworkRequestID swig_types[833] -#define SWIGTYPE_p_FIX__NetworkRequestType swig_types[834] -#define SWIGTYPE_p_FIX__NetworkResponseID swig_types[835] -#define SWIGTYPE_p_FIX__NetworkStatusResponseType swig_types[836] -#define SWIGTYPE_p_FIX__NewPassword swig_types[837] -#define SWIGTYPE_p_FIX__NewSeqNo swig_types[838] -#define SWIGTYPE_p_FIX__NewsCategory swig_types[839] -#define SWIGTYPE_p_FIX__NewsID swig_types[840] -#define SWIGTYPE_p_FIX__NewsRefID swig_types[841] -#define SWIGTYPE_p_FIX__NewsRefType swig_types[842] -#define SWIGTYPE_p_FIX__NextExpectedMsgSeqNum swig_types[843] -#define SWIGTYPE_p_FIX__NoAffectedOrders swig_types[844] -#define SWIGTYPE_p_FIX__NoAllocs swig_types[845] -#define SWIGTYPE_p_FIX__NoAltMDSource swig_types[846] -#define SWIGTYPE_p_FIX__NoApplIDs swig_types[847] -#define SWIGTYPE_p_FIX__NoAsgnReqs swig_types[848] -#define SWIGTYPE_p_FIX__NoBidComponents swig_types[849] -#define SWIGTYPE_p_FIX__NoBidDescriptors swig_types[850] -#define SWIGTYPE_p_FIX__NoCapacities swig_types[851] -#define SWIGTYPE_p_FIX__NoClearingInstructions swig_types[852] -#define SWIGTYPE_p_FIX__NoCollInquiryQualifier swig_types[853] -#define SWIGTYPE_p_FIX__NoCompIDs swig_types[854] -#define SWIGTYPE_p_FIX__NoComplexEventDates swig_types[855] -#define SWIGTYPE_p_FIX__NoComplexEventTimes swig_types[856] -#define SWIGTYPE_p_FIX__NoComplexEvents swig_types[857] -#define SWIGTYPE_p_FIX__NoContAmts swig_types[858] -#define SWIGTYPE_p_FIX__NoContraBrokers swig_types[859] -#define SWIGTYPE_p_FIX__NoDates swig_types[860] -#define SWIGTYPE_p_FIX__NoDerivativeEvents swig_types[861] -#define SWIGTYPE_p_FIX__NoDerivativeInstrAttrib swig_types[862] -#define SWIGTYPE_p_FIX__NoDerivativeInstrumentParties swig_types[863] -#define SWIGTYPE_p_FIX__NoDerivativeInstrumentPartySubIDs swig_types[864] -#define SWIGTYPE_p_FIX__NoDerivativeSecurityAltID swig_types[865] -#define SWIGTYPE_p_FIX__NoDistribInsts swig_types[866] -#define SWIGTYPE_p_FIX__NoDlvyInst swig_types[867] -#define SWIGTYPE_p_FIX__NoEvents swig_types[868] -#define SWIGTYPE_p_FIX__NoExecInstRules swig_types[869] -#define SWIGTYPE_p_FIX__NoExecs swig_types[870] -#define SWIGTYPE_p_FIX__NoExpiration swig_types[871] -#define SWIGTYPE_p_FIX__NoFills swig_types[872] -#define SWIGTYPE_p_FIX__NoHops swig_types[873] -#define SWIGTYPE_p_FIX__NoIOIQualifiers swig_types[874] -#define SWIGTYPE_p_FIX__NoInstrAttrib swig_types[875] -#define SWIGTYPE_p_FIX__NoInstrumentParties swig_types[876] -#define SWIGTYPE_p_FIX__NoInstrumentPartySubIDs swig_types[877] -#define SWIGTYPE_p_FIX__NoLegAllocs swig_types[878] -#define SWIGTYPE_p_FIX__NoLegSecurityAltID swig_types[879] -#define SWIGTYPE_p_FIX__NoLegStipulations swig_types[880] -#define SWIGTYPE_p_FIX__NoLegs swig_types[881] -#define SWIGTYPE_p_FIX__NoLinesOfText swig_types[882] -#define SWIGTYPE_p_FIX__NoLotTypeRules swig_types[883] -#define SWIGTYPE_p_FIX__NoMDEntries swig_types[884] -#define SWIGTYPE_p_FIX__NoMDEntryTypes swig_types[885] -#define SWIGTYPE_p_FIX__NoMDFeedTypes swig_types[886] -#define SWIGTYPE_p_FIX__NoMarketSegments swig_types[887] -#define SWIGTYPE_p_FIX__NoMatchRules swig_types[888] -#define SWIGTYPE_p_FIX__NoMaturityRules swig_types[889] -#define SWIGTYPE_p_FIX__NoMiscFees swig_types[890] -#define SWIGTYPE_p_FIX__NoMsgTypes swig_types[891] -#define SWIGTYPE_p_FIX__NoNested2PartyIDs swig_types[892] -#define SWIGTYPE_p_FIX__NoNested2PartySubIDs swig_types[893] -#define SWIGTYPE_p_FIX__NoNested3PartyIDs swig_types[894] -#define SWIGTYPE_p_FIX__NoNested3PartySubIDs swig_types[895] -#define SWIGTYPE_p_FIX__NoNested4PartyIDs swig_types[896] -#define SWIGTYPE_p_FIX__NoNested4PartySubIDs swig_types[897] -#define SWIGTYPE_p_FIX__NoNestedInstrAttrib swig_types[898] -#define SWIGTYPE_p_FIX__NoNestedPartyIDs swig_types[899] -#define SWIGTYPE_p_FIX__NoNestedPartySubIDs swig_types[900] -#define SWIGTYPE_p_FIX__NoNewsRefIDs swig_types[901] -#define SWIGTYPE_p_FIX__NoNotAffectedOrders swig_types[902] -#define SWIGTYPE_p_FIX__NoOfLegUnderlyings swig_types[903] -#define SWIGTYPE_p_FIX__NoOfSecSizes swig_types[904] -#define SWIGTYPE_p_FIX__NoOrdTypeRules swig_types[905] -#define SWIGTYPE_p_FIX__NoOrders swig_types[906] -#define SWIGTYPE_p_FIX__NoPartyIDs swig_types[907] -#define SWIGTYPE_p_FIX__NoPartySubIDs swig_types[908] -#define SWIGTYPE_p_FIX__NoPosAmt swig_types[909] -#define SWIGTYPE_p_FIX__NoPositions swig_types[910] -#define SWIGTYPE_p_FIX__NoQuoteEntries swig_types[911] -#define SWIGTYPE_p_FIX__NoQuoteQualifiers swig_types[912] -#define SWIGTYPE_p_FIX__NoQuoteSets swig_types[913] -#define SWIGTYPE_p_FIX__NoRateSources swig_types[914] -#define SWIGTYPE_p_FIX__NoRegistDtls swig_types[915] -#define SWIGTYPE_p_FIX__NoRelatedSym swig_types[916] -#define SWIGTYPE_p_FIX__NoRootPartyIDs swig_types[917] -#define SWIGTYPE_p_FIX__NoRootPartySubIDs swig_types[918] -#define SWIGTYPE_p_FIX__NoRoutingIDs swig_types[919] -#define SWIGTYPE_p_FIX__NoRpts swig_types[920] -#define SWIGTYPE_p_FIX__NoSecurityAltID swig_types[921] -#define SWIGTYPE_p_FIX__NoSecurityTypes swig_types[922] -#define SWIGTYPE_p_FIX__NoSettlDetails swig_types[923] -#define SWIGTYPE_p_FIX__NoSettlInst swig_types[924] -#define SWIGTYPE_p_FIX__NoSettlOblig swig_types[925] -#define SWIGTYPE_p_FIX__NoSettlPartyIDs swig_types[926] -#define SWIGTYPE_p_FIX__NoSettlPartySubIDs swig_types[927] -#define SWIGTYPE_p_FIX__NoSideTrdRegTS swig_types[928] -#define SWIGTYPE_p_FIX__NoSides swig_types[929] -#define SWIGTYPE_p_FIX__NoStatsIndicators swig_types[930] -#define SWIGTYPE_p_FIX__NoStipulations swig_types[931] -#define SWIGTYPE_p_FIX__NoStrategyParameters swig_types[932] -#define SWIGTYPE_p_FIX__NoStrikeRules swig_types[933] -#define SWIGTYPE_p_FIX__NoStrikes swig_types[934] -#define SWIGTYPE_p_FIX__NoTagValue swig_types[935] -#define SWIGTYPE_p_FIX__NoTargetPartyIDs swig_types[936] -#define SWIGTYPE_p_FIX__NoTickRules swig_types[937] -#define SWIGTYPE_p_FIX__NoTimeInForceRules swig_types[938] -#define SWIGTYPE_p_FIX__NoTrades swig_types[939] -#define SWIGTYPE_p_FIX__NoTradingSessionRules swig_types[940] -#define SWIGTYPE_p_FIX__NoTradingSessions swig_types[941] -#define SWIGTYPE_p_FIX__NoTrdRegTimestamps swig_types[942] -#define SWIGTYPE_p_FIX__NoTrdRepIndicators swig_types[943] -#define SWIGTYPE_p_FIX__NoUnderlyingAmounts swig_types[944] -#define SWIGTYPE_p_FIX__NoUnderlyingLegSecurityAltID swig_types[945] -#define SWIGTYPE_p_FIX__NoUnderlyingSecurityAltID swig_types[946] -#define SWIGTYPE_p_FIX__NoUnderlyingStips swig_types[947] -#define SWIGTYPE_p_FIX__NoUnderlyings swig_types[948] -#define SWIGTYPE_p_FIX__NoUndlyInstrumentParties swig_types[949] -#define SWIGTYPE_p_FIX__NoUndlyInstrumentPartySubIDs swig_types[950] -#define SWIGTYPE_p_FIX__NotAffOrigClOrdID swig_types[951] -#define SWIGTYPE_p_FIX__NotAffectedOrderID swig_types[952] -#define SWIGTYPE_p_FIX__NotifyBrokerOfCredit swig_types[953] -#define SWIGTYPE_p_FIX__NotionalPercentageOutstanding swig_types[954] -#define SWIGTYPE_p_FIX__NullApplication swig_types[955] -#define SWIGTYPE_p_FIX__NullLog swig_types[956] -#define SWIGTYPE_p_FIX__NumBidders swig_types[957] -#define SWIGTYPE_p_FIX__NumDaysInterest swig_types[958] -#define SWIGTYPE_p_FIX__NumTickets swig_types[959] -#define SWIGTYPE_p_FIX__NumberOfOrders swig_types[960] -#define SWIGTYPE_p_FIX__OddLot swig_types[961] -#define SWIGTYPE_p_FIX__OfferForwardPoints swig_types[962] -#define SWIGTYPE_p_FIX__OfferForwardPoints2 swig_types[963] -#define SWIGTYPE_p_FIX__OfferPx swig_types[964] -#define SWIGTYPE_p_FIX__OfferSize swig_types[965] -#define SWIGTYPE_p_FIX__OfferSpotRate swig_types[966] -#define SWIGTYPE_p_FIX__OfferSwapPoints swig_types[967] -#define SWIGTYPE_p_FIX__OfferYield swig_types[968] -#define SWIGTYPE_p_FIX__OnBehalfOfCompID swig_types[969] -#define SWIGTYPE_p_FIX__OnBehalfOfLocationID swig_types[970] -#define SWIGTYPE_p_FIX__OnBehalfOfSendingTime swig_types[971] -#define SWIGTYPE_p_FIX__OnBehalfOfSubID swig_types[972] -#define SWIGTYPE_p_FIX__OpenClose swig_types[973] -#define SWIGTYPE_p_FIX__OpenCloseSettlFlag swig_types[974] -#define SWIGTYPE_p_FIX__OpenCloseSettleFlag swig_types[975] -#define SWIGTYPE_p_FIX__OpenInterest swig_types[976] -#define SWIGTYPE_p_FIX__OptAttribute swig_types[977] -#define SWIGTYPE_p_FIX__OptPayAmount swig_types[978] -#define SWIGTYPE_p_FIX__OptPayoutAmount swig_types[979] -#define SWIGTYPE_p_FIX__OptPayoutType swig_types[980] -#define SWIGTYPE_p_FIX__OrdRejReason swig_types[981] -#define SWIGTYPE_p_FIX__OrdStatus swig_types[982] -#define SWIGTYPE_p_FIX__OrdStatusReqID swig_types[983] -#define SWIGTYPE_p_FIX__OrdType swig_types[984] -#define SWIGTYPE_p_FIX__OrderAvgPx swig_types[985] -#define SWIGTYPE_p_FIX__OrderBookingQty swig_types[986] -#define SWIGTYPE_p_FIX__OrderCapacity swig_types[987] -#define SWIGTYPE_p_FIX__OrderCapacityQty swig_types[988] -#define SWIGTYPE_p_FIX__OrderCategory swig_types[989] -#define SWIGTYPE_p_FIX__OrderDelay swig_types[990] -#define SWIGTYPE_p_FIX__OrderDelayUnit swig_types[991] -#define SWIGTYPE_p_FIX__OrderHandlingInstSource swig_types[992] -#define SWIGTYPE_p_FIX__OrderID swig_types[993] -#define SWIGTYPE_p_FIX__OrderInputDevice swig_types[994] -#define SWIGTYPE_p_FIX__OrderPercent swig_types[995] -#define SWIGTYPE_p_FIX__OrderQty swig_types[996] -#define SWIGTYPE_p_FIX__OrderQty2 swig_types[997] -#define SWIGTYPE_p_FIX__OrderRestrictions swig_types[998] -#define SWIGTYPE_p_FIX__OrigClOrdID swig_types[999] -#define SWIGTYPE_p_FIX__OrigCrossID swig_types[1000] -#define SWIGTYPE_p_FIX__OrigCustOrderCapacity swig_types[1001] -#define SWIGTYPE_p_FIX__OrigOrdModTime swig_types[1002] -#define SWIGTYPE_p_FIX__OrigPosReqRefID swig_types[1003] -#define SWIGTYPE_p_FIX__OrigSecondaryTradeID swig_types[1004] -#define SWIGTYPE_p_FIX__OrigSendingTime swig_types[1005] -#define SWIGTYPE_p_FIX__OrigTime swig_types[1006] -#define SWIGTYPE_p_FIX__OrigTradeDate swig_types[1007] -#define SWIGTYPE_p_FIX__OrigTradeHandlingInstr swig_types[1008] -#define SWIGTYPE_p_FIX__OrigTradeID swig_types[1009] -#define SWIGTYPE_p_FIX__OriginalNotionalPercentageOutstanding swig_types[1010] -#define SWIGTYPE_p_FIX__OutMainCntryUIndex swig_types[1011] -#define SWIGTYPE_p_FIX__OutsideIndexPct swig_types[1012] -#define SWIGTYPE_p_FIX__OwnerType swig_types[1013] -#define SWIGTYPE_p_FIX__OwnershipType swig_types[1014] -#define SWIGTYPE_p_FIX__PERCENTAGE swig_types[1015] -#define SWIGTYPE_p_FIX__PRICE swig_types[1016] -#define SWIGTYPE_p_FIX__PRICEOFFSET swig_types[1017] -#define SWIGTYPE_p_FIX__ParentMktSegmID swig_types[1018] -#define SWIGTYPE_p_FIX__ParticipationRate swig_types[1019] -#define SWIGTYPE_p_FIX__PartyID swig_types[1020] -#define SWIGTYPE_p_FIX__PartyIDSource swig_types[1021] -#define SWIGTYPE_p_FIX__PartyRole swig_types[1022] -#define SWIGTYPE_p_FIX__PartySubID swig_types[1023] -#define SWIGTYPE_p_FIX__PartySubIDType swig_types[1024] -#define SWIGTYPE_p_FIX__Password swig_types[1025] -#define SWIGTYPE_p_FIX__PaymentDate swig_types[1026] -#define SWIGTYPE_p_FIX__PaymentMethod swig_types[1027] -#define SWIGTYPE_p_FIX__PaymentRef swig_types[1028] -#define SWIGTYPE_p_FIX__PaymentRemitterID swig_types[1029] -#define SWIGTYPE_p_FIX__PctAtRisk swig_types[1030] -#define SWIGTYPE_p_FIX__PegDifference swig_types[1031] -#define SWIGTYPE_p_FIX__PegLimitType swig_types[1032] -#define SWIGTYPE_p_FIX__PegMoveType swig_types[1033] -#define SWIGTYPE_p_FIX__PegOffsetType swig_types[1034] -#define SWIGTYPE_p_FIX__PegOffsetValue swig_types[1035] -#define SWIGTYPE_p_FIX__PegPriceType swig_types[1036] -#define SWIGTYPE_p_FIX__PegRoundDirection swig_types[1037] -#define SWIGTYPE_p_FIX__PegScope swig_types[1038] -#define SWIGTYPE_p_FIX__PegSecurityDesc swig_types[1039] -#define SWIGTYPE_p_FIX__PegSecurityID swig_types[1040] -#define SWIGTYPE_p_FIX__PegSecurityIDSource swig_types[1041] -#define SWIGTYPE_p_FIX__PegSymbol swig_types[1042] -#define SWIGTYPE_p_FIX__PeggedPrice swig_types[1043] -#define SWIGTYPE_p_FIX__PeggedRefPrice swig_types[1044] -#define SWIGTYPE_p_FIX__Pool swig_types[1045] -#define SWIGTYPE_p_FIX__PosAmt swig_types[1046] -#define SWIGTYPE_p_FIX__PosAmtType swig_types[1047] -#define SWIGTYPE_p_FIX__PosMaintAction swig_types[1048] -#define SWIGTYPE_p_FIX__PosMaintResult swig_types[1049] -#define SWIGTYPE_p_FIX__PosMaintRptID swig_types[1050] -#define SWIGTYPE_p_FIX__PosMaintRptRefID swig_types[1051] -#define SWIGTYPE_p_FIX__PosMaintStatus swig_types[1052] -#define SWIGTYPE_p_FIX__PosQtyStatus swig_types[1053] -#define SWIGTYPE_p_FIX__PosReqID swig_types[1054] -#define SWIGTYPE_p_FIX__PosReqResult swig_types[1055] -#define SWIGTYPE_p_FIX__PosReqStatus swig_types[1056] -#define SWIGTYPE_p_FIX__PosReqType swig_types[1057] -#define SWIGTYPE_p_FIX__PosTransType swig_types[1058] -#define SWIGTYPE_p_FIX__PosType swig_types[1059] -#define SWIGTYPE_p_FIX__PositionCurrency swig_types[1060] -#define SWIGTYPE_p_FIX__PositionEffect swig_types[1061] -#define SWIGTYPE_p_FIX__PositionLimit swig_types[1062] -#define SWIGTYPE_p_FIX__PossDupFlag swig_types[1063] -#define SWIGTYPE_p_FIX__PossResend swig_types[1064] -#define SWIGTYPE_p_FIX__PreTradeAnonymity swig_types[1065] -#define SWIGTYPE_p_FIX__PreallocMethod swig_types[1066] -#define SWIGTYPE_p_FIX__PrevClosePx swig_types[1067] -#define SWIGTYPE_p_FIX__PreviouslyReported swig_types[1068] -#define SWIGTYPE_p_FIX__Price swig_types[1069] -#define SWIGTYPE_p_FIX__Price2 swig_types[1070] -#define SWIGTYPE_p_FIX__PriceDelta swig_types[1071] -#define SWIGTYPE_p_FIX__PriceImprovement swig_types[1072] -#define SWIGTYPE_p_FIX__PriceLimitType swig_types[1073] -#define SWIGTYPE_p_FIX__PriceProtectionScope swig_types[1074] -#define SWIGTYPE_p_FIX__PriceQuoteMethod swig_types[1075] -#define SWIGTYPE_p_FIX__PriceType swig_types[1076] -#define SWIGTYPE_p_FIX__PriceUnitOfMeasure swig_types[1077] -#define SWIGTYPE_p_FIX__PriceUnitOfMeasureQty swig_types[1078] -#define SWIGTYPE_p_FIX__PriorSettlPrice swig_types[1079] -#define SWIGTYPE_p_FIX__PriorSpreadIndicator swig_types[1080] -#define SWIGTYPE_p_FIX__PriorityIndicator swig_types[1081] -#define SWIGTYPE_p_FIX__PrivateQuote swig_types[1082] -#define SWIGTYPE_p_FIX__ProcessCode swig_types[1083] -#define SWIGTYPE_p_FIX__Product swig_types[1084] -#define SWIGTYPE_p_FIX__ProductComplex swig_types[1085] -#define SWIGTYPE_p_FIX__ProgPeriodInterval swig_types[1086] -#define SWIGTYPE_p_FIX__ProgRptReqs swig_types[1087] -#define SWIGTYPE_p_FIX__PublishTrdIndicator swig_types[1088] -#define SWIGTYPE_p_FIX__PutOrCall swig_types[1089] -#define SWIGTYPE_p_FIX__QTY swig_types[1090] -#define SWIGTYPE_p_FIX__QtyType swig_types[1091] -#define SWIGTYPE_p_FIX__Quantity swig_types[1092] -#define SWIGTYPE_p_FIX__QuantityDate swig_types[1093] -#define SWIGTYPE_p_FIX__QuantityType swig_types[1094] -#define SWIGTYPE_p_FIX__QuoteAckStatus swig_types[1095] -#define SWIGTYPE_p_FIX__QuoteCancelType swig_types[1096] -#define SWIGTYPE_p_FIX__QuoteCondition swig_types[1097] -#define SWIGTYPE_p_FIX__QuoteEntryID swig_types[1098] -#define SWIGTYPE_p_FIX__QuoteEntryRejectReason swig_types[1099] -#define SWIGTYPE_p_FIX__QuoteEntryStatus swig_types[1100] -#define SWIGTYPE_p_FIX__QuoteID swig_types[1101] -#define SWIGTYPE_p_FIX__QuoteMsgID swig_types[1102] -#define SWIGTYPE_p_FIX__QuotePriceType swig_types[1103] -#define SWIGTYPE_p_FIX__QuoteQualifier swig_types[1104] -#define SWIGTYPE_p_FIX__QuoteRejectReason swig_types[1105] -#define SWIGTYPE_p_FIX__QuoteReqID swig_types[1106] -#define SWIGTYPE_p_FIX__QuoteRequestRejectReason swig_types[1107] -#define SWIGTYPE_p_FIX__QuoteRequestType swig_types[1108] -#define SWIGTYPE_p_FIX__QuoteRespID swig_types[1109] -#define SWIGTYPE_p_FIX__QuoteRespType swig_types[1110] -#define SWIGTYPE_p_FIX__QuoteResponseLevel swig_types[1111] -#define SWIGTYPE_p_FIX__QuoteSetID swig_types[1112] -#define SWIGTYPE_p_FIX__QuoteSetValidUntilTime swig_types[1113] -#define SWIGTYPE_p_FIX__QuoteStatus swig_types[1114] -#define SWIGTYPE_p_FIX__QuoteStatusReqID swig_types[1115] -#define SWIGTYPE_p_FIX__QuoteType swig_types[1116] -#define SWIGTYPE_p_FIX__RFQReqID swig_types[1117] -#define SWIGTYPE_p_FIX__RateSource swig_types[1118] -#define SWIGTYPE_p_FIX__RateSourceType swig_types[1119] -#define SWIGTYPE_p_FIX__RatioQty swig_types[1120] -#define SWIGTYPE_p_FIX__RawData swig_types[1121] -#define SWIGTYPE_p_FIX__RawDataLength swig_types[1122] -#define SWIGTYPE_p_FIX__ReceivedDeptID swig_types[1123] -#define SWIGTYPE_p_FIX__RedemptionDate swig_types[1124] -#define SWIGTYPE_p_FIX__RefAllocID swig_types[1125] -#define SWIGTYPE_p_FIX__RefApplExtID swig_types[1126] -#define SWIGTYPE_p_FIX__RefApplID swig_types[1127] -#define SWIGTYPE_p_FIX__RefApplLastSeqNum swig_types[1128] -#define SWIGTYPE_p_FIX__RefApplReqID swig_types[1129] -#define SWIGTYPE_p_FIX__RefApplVerID swig_types[1130] -#define SWIGTYPE_p_FIX__RefCompID swig_types[1131] -#define SWIGTYPE_p_FIX__RefCstmApplVerID swig_types[1132] -#define SWIGTYPE_p_FIX__RefMsgType swig_types[1133] -#define SWIGTYPE_p_FIX__RefOrdIDReason swig_types[1134] -#define SWIGTYPE_p_FIX__RefOrderID swig_types[1135] -#define SWIGTYPE_p_FIX__RefOrderIDSource swig_types[1136] -#define SWIGTYPE_p_FIX__RefSeqNum swig_types[1137] -#define SWIGTYPE_p_FIX__RefSubID swig_types[1138] -#define SWIGTYPE_p_FIX__RefTagID swig_types[1139] -#define SWIGTYPE_p_FIX__ReferencePage swig_types[1140] -#define SWIGTYPE_p_FIX__RefreshIndicator swig_types[1141] -#define SWIGTYPE_p_FIX__RefreshQty swig_types[1142] -#define SWIGTYPE_p_FIX__RegistAcctType swig_types[1143] -#define SWIGTYPE_p_FIX__RegistDetls swig_types[1144] -#define SWIGTYPE_p_FIX__RegistDtls swig_types[1145] -#define SWIGTYPE_p_FIX__RegistEmail swig_types[1146] -#define SWIGTYPE_p_FIX__RegistID swig_types[1147] -#define SWIGTYPE_p_FIX__RegistRefID swig_types[1148] -#define SWIGTYPE_p_FIX__RegistRejReasonCode swig_types[1149] -#define SWIGTYPE_p_FIX__RegistRejReasonText swig_types[1150] -#define SWIGTYPE_p_FIX__RegistStatus swig_types[1151] -#define SWIGTYPE_p_FIX__RegistTransType swig_types[1152] -#define SWIGTYPE_p_FIX__RejectLogon swig_types[1153] -#define SWIGTYPE_p_FIX__RejectText swig_types[1154] -#define SWIGTYPE_p_FIX__RelSymTransactTime swig_types[1155] -#define SWIGTYPE_p_FIX__RelatdSym swig_types[1156] -#define SWIGTYPE_p_FIX__RepeatedTag swig_types[1157] -#define SWIGTYPE_p_FIX__RepeatingGroupCountMismatch swig_types[1158] -#define SWIGTYPE_p_FIX__RepoCollateralSecurityType swig_types[1159] -#define SWIGTYPE_p_FIX__ReportToExch swig_types[1160] -#define SWIGTYPE_p_FIX__ReportedPx swig_types[1161] -#define SWIGTYPE_p_FIX__ReportedPxDiff swig_types[1162] -#define SWIGTYPE_p_FIX__RepurchaseRate swig_types[1163] -#define SWIGTYPE_p_FIX__RepurchaseTerm swig_types[1164] -#define SWIGTYPE_p_FIX__RequiredTagMissing swig_types[1165] -#define SWIGTYPE_p_FIX__ResetSeqNumFlag swig_types[1166] -#define SWIGTYPE_p_FIX__RespondentType swig_types[1167] -#define SWIGTYPE_p_FIX__ResponseDestination swig_types[1168] -#define SWIGTYPE_p_FIX__ResponseTransportType swig_types[1169] -#define SWIGTYPE_p_FIX__RestructuringType swig_types[1170] -#define SWIGTYPE_p_FIX__ReversalIndicator swig_types[1171] -#define SWIGTYPE_p_FIX__RiskFreeRate swig_types[1172] -#define SWIGTYPE_p_FIX__RndPx swig_types[1173] -#define SWIGTYPE_p_FIX__RootPartyID swig_types[1174] -#define SWIGTYPE_p_FIX__RootPartyIDSource swig_types[1175] -#define SWIGTYPE_p_FIX__RootPartyRole swig_types[1176] -#define SWIGTYPE_p_FIX__RootPartySubID swig_types[1177] -#define SWIGTYPE_p_FIX__RootPartySubIDType swig_types[1178] -#define SWIGTYPE_p_FIX__RoundLot swig_types[1179] -#define SWIGTYPE_p_FIX__RoundingDirection swig_types[1180] -#define SWIGTYPE_p_FIX__RoundingModulus swig_types[1181] -#define SWIGTYPE_p_FIX__RoutingID swig_types[1182] -#define SWIGTYPE_p_FIX__RoutingType swig_types[1183] -#define SWIGTYPE_p_FIX__RptSeq swig_types[1184] -#define SWIGTYPE_p_FIX__RptSys swig_types[1185] -#define SWIGTYPE_p_FIX__Rule80A swig_types[1186] -#define SWIGTYPE_p_FIX__RuntimeError swig_types[1187] -#define SWIGTYPE_p_FIX__SEQNUM swig_types[1188] -#define SWIGTYPE_p_FIX__STRING swig_types[1189] -#define SWIGTYPE_p_FIX__Scope swig_types[1190] -#define SWIGTYPE_p_FIX__ScreenLog swig_types[1191] -#define SWIGTYPE_p_FIX__ScreenLogFactory swig_types[1192] -#define SWIGTYPE_p_FIX__SecondaryAllocID swig_types[1193] -#define SWIGTYPE_p_FIX__SecondaryClOrdID swig_types[1194] -#define SWIGTYPE_p_FIX__SecondaryDisplayQty swig_types[1195] -#define SWIGTYPE_p_FIX__SecondaryExecID swig_types[1196] -#define SWIGTYPE_p_FIX__SecondaryFirmTradeID swig_types[1197] -#define SWIGTYPE_p_FIX__SecondaryHighLimitPrice swig_types[1198] -#define SWIGTYPE_p_FIX__SecondaryIndividualAllocID swig_types[1199] -#define SWIGTYPE_p_FIX__SecondaryLowLimitPrice swig_types[1200] -#define SWIGTYPE_p_FIX__SecondaryOrderID swig_types[1201] -#define SWIGTYPE_p_FIX__SecondaryPriceLimitType swig_types[1202] -#define SWIGTYPE_p_FIX__SecondaryTradeID swig_types[1203] -#define SWIGTYPE_p_FIX__SecondaryTradeReportID swig_types[1204] -#define SWIGTYPE_p_FIX__SecondaryTradeReportRefID swig_types[1205] -#define SWIGTYPE_p_FIX__SecondaryTradingReferencePrice swig_types[1206] -#define SWIGTYPE_p_FIX__SecondaryTrdType swig_types[1207] -#define SWIGTYPE_p_FIX__SecureData swig_types[1208] -#define SWIGTYPE_p_FIX__SecureDataLen swig_types[1209] -#define SWIGTYPE_p_FIX__SecurityAltID swig_types[1210] -#define SWIGTYPE_p_FIX__SecurityAltIDSource swig_types[1211] -#define SWIGTYPE_p_FIX__SecurityDesc swig_types[1212] -#define SWIGTYPE_p_FIX__SecurityExchange swig_types[1213] -#define SWIGTYPE_p_FIX__SecurityGroup swig_types[1214] -#define SWIGTYPE_p_FIX__SecurityID swig_types[1215] -#define SWIGTYPE_p_FIX__SecurityIDSource swig_types[1216] -#define SWIGTYPE_p_FIX__SecurityListDesc swig_types[1217] -#define SWIGTYPE_p_FIX__SecurityListID swig_types[1218] -#define SWIGTYPE_p_FIX__SecurityListRefID swig_types[1219] -#define SWIGTYPE_p_FIX__SecurityListRequestType swig_types[1220] -#define SWIGTYPE_p_FIX__SecurityListType swig_types[1221] -#define SWIGTYPE_p_FIX__SecurityListTypeSource swig_types[1222] -#define SWIGTYPE_p_FIX__SecurityReportID swig_types[1223] -#define SWIGTYPE_p_FIX__SecurityReqID swig_types[1224] -#define SWIGTYPE_p_FIX__SecurityRequestResult swig_types[1225] -#define SWIGTYPE_p_FIX__SecurityRequestType swig_types[1226] -#define SWIGTYPE_p_FIX__SecurityResponseID swig_types[1227] -#define SWIGTYPE_p_FIX__SecurityResponseType swig_types[1228] -#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctName swig_types[1229] -#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctNum swig_types[1230] -#define SWIGTYPE_p_FIX__SecuritySettlAgentCode swig_types[1231] -#define SWIGTYPE_p_FIX__SecuritySettlAgentContactName swig_types[1232] -#define SWIGTYPE_p_FIX__SecuritySettlAgentContactPhone swig_types[1233] -#define SWIGTYPE_p_FIX__SecuritySettlAgentName swig_types[1234] -#define SWIGTYPE_p_FIX__SecurityStatus swig_types[1235] -#define SWIGTYPE_p_FIX__SecurityStatusReqID swig_types[1236] -#define SWIGTYPE_p_FIX__SecuritySubType swig_types[1237] -#define SWIGTYPE_p_FIX__SecurityTradingEvent swig_types[1238] -#define SWIGTYPE_p_FIX__SecurityTradingStatus swig_types[1239] -#define SWIGTYPE_p_FIX__SecurityType swig_types[1240] -#define SWIGTYPE_p_FIX__SecurityUpdateAction swig_types[1241] -#define SWIGTYPE_p_FIX__SecurityXML swig_types[1242] -#define SWIGTYPE_p_FIX__SecurityXMLLen swig_types[1243] -#define SWIGTYPE_p_FIX__SecurityXMLSchema swig_types[1244] -#define SWIGTYPE_p_FIX__SellVolume swig_types[1245] -#define SWIGTYPE_p_FIX__SellerDays swig_types[1246] -#define SWIGTYPE_p_FIX__SenderCompID swig_types[1247] -#define SWIGTYPE_p_FIX__SenderLocationID swig_types[1248] -#define SWIGTYPE_p_FIX__SenderSubID swig_types[1249] -#define SWIGTYPE_p_FIX__SendingDate swig_types[1250] -#define SWIGTYPE_p_FIX__SendingTime swig_types[1251] -#define SWIGTYPE_p_FIX__Seniority swig_types[1252] -#define SWIGTYPE_p_FIX__Session swig_types[1253] -#define SWIGTYPE_p_FIX__SessionID swig_types[1254] -#define SWIGTYPE_p_FIX__SessionNotFound swig_types[1255] -#define SWIGTYPE_p_FIX__SessionRejectReason swig_types[1256] -#define SWIGTYPE_p_FIX__SessionSettings swig_types[1257] -#define SWIGTYPE_p_FIX__SessionStatus swig_types[1258] -#define SWIGTYPE_p_FIX__SettlBrkrCode swig_types[1259] -#define SWIGTYPE_p_FIX__SettlCurrAmt swig_types[1260] -#define SWIGTYPE_p_FIX__SettlCurrBidFxRate swig_types[1261] -#define SWIGTYPE_p_FIX__SettlCurrFxRate swig_types[1262] -#define SWIGTYPE_p_FIX__SettlCurrFxRateCalc swig_types[1263] -#define SWIGTYPE_p_FIX__SettlCurrOfferFxRate swig_types[1264] -#define SWIGTYPE_p_FIX__SettlCurrency swig_types[1265] -#define SWIGTYPE_p_FIX__SettlDate swig_types[1266] -#define SWIGTYPE_p_FIX__SettlDate2 swig_types[1267] -#define SWIGTYPE_p_FIX__SettlDeliveryType swig_types[1268] -#define SWIGTYPE_p_FIX__SettlDepositoryCode swig_types[1269] -#define SWIGTYPE_p_FIX__SettlInstCode swig_types[1270] -#define SWIGTYPE_p_FIX__SettlInstID swig_types[1271] -#define SWIGTYPE_p_FIX__SettlInstMode swig_types[1272] -#define SWIGTYPE_p_FIX__SettlInstMsgID swig_types[1273] -#define SWIGTYPE_p_FIX__SettlInstRefID swig_types[1274] -#define SWIGTYPE_p_FIX__SettlInstReqID swig_types[1275] -#define SWIGTYPE_p_FIX__SettlInstReqRejCode swig_types[1276] -#define SWIGTYPE_p_FIX__SettlInstSource swig_types[1277] -#define SWIGTYPE_p_FIX__SettlInstTransType swig_types[1278] -#define SWIGTYPE_p_FIX__SettlLocation swig_types[1279] -#define SWIGTYPE_p_FIX__SettlMethod swig_types[1280] -#define SWIGTYPE_p_FIX__SettlObligID swig_types[1281] -#define SWIGTYPE_p_FIX__SettlObligMode swig_types[1282] -#define SWIGTYPE_p_FIX__SettlObligMsgID swig_types[1283] -#define SWIGTYPE_p_FIX__SettlObligRefID swig_types[1284] -#define SWIGTYPE_p_FIX__SettlObligSource swig_types[1285] -#define SWIGTYPE_p_FIX__SettlObligTransType swig_types[1286] -#define SWIGTYPE_p_FIX__SettlPartyID swig_types[1287] -#define SWIGTYPE_p_FIX__SettlPartyIDSource swig_types[1288] -#define SWIGTYPE_p_FIX__SettlPartyRole swig_types[1289] -#define SWIGTYPE_p_FIX__SettlPartySubID swig_types[1290] -#define SWIGTYPE_p_FIX__SettlPartySubIDType swig_types[1291] -#define SWIGTYPE_p_FIX__SettlPrice swig_types[1292] -#define SWIGTYPE_p_FIX__SettlPriceType swig_types[1293] -#define SWIGTYPE_p_FIX__SettlSessID swig_types[1294] -#define SWIGTYPE_p_FIX__SettlSessSubID swig_types[1295] -#define SWIGTYPE_p_FIX__SettlType swig_types[1296] -#define SWIGTYPE_p_FIX__SettleOnOpenFlag swig_types[1297] -#define SWIGTYPE_p_FIX__SettlementCycleNo swig_types[1298] -#define SWIGTYPE_p_FIX__SettlmntTyp swig_types[1299] -#define SWIGTYPE_p_FIX__SharedCommission swig_types[1300] -#define SWIGTYPE_p_FIX__Shares swig_types[1301] -#define SWIGTYPE_p_FIX__ShortQty swig_types[1302] -#define SWIGTYPE_p_FIX__ShortSaleReason swig_types[1303] -#define SWIGTYPE_p_FIX__Side swig_types[1304] -#define SWIGTYPE_p_FIX__SideComplianceID swig_types[1305] -#define SWIGTYPE_p_FIX__SideCurrency swig_types[1306] -#define SWIGTYPE_p_FIX__SideExecID swig_types[1307] -#define SWIGTYPE_p_FIX__SideFillStationCd swig_types[1308] -#define SWIGTYPE_p_FIX__SideGrossTradeAmt swig_types[1309] -#define SWIGTYPE_p_FIX__SideLastQty swig_types[1310] -#define SWIGTYPE_p_FIX__SideLiquidityInd swig_types[1311] -#define SWIGTYPE_p_FIX__SideMultiLegReportingType swig_types[1312] -#define SWIGTYPE_p_FIX__SideQty swig_types[1313] -#define SWIGTYPE_p_FIX__SideReasonCd swig_types[1314] -#define SWIGTYPE_p_FIX__SideSettlCurrency swig_types[1315] -#define SWIGTYPE_p_FIX__SideTimeInForce swig_types[1316] -#define SWIGTYPE_p_FIX__SideTradeReportID swig_types[1317] -#define SWIGTYPE_p_FIX__SideTrdRegTimestamp swig_types[1318] -#define SWIGTYPE_p_FIX__SideTrdRegTimestampSrc swig_types[1319] -#define SWIGTYPE_p_FIX__SideTrdRegTimestampType swig_types[1320] -#define SWIGTYPE_p_FIX__SideTrdSubTyp swig_types[1321] -#define SWIGTYPE_p_FIX__SideValue1 swig_types[1322] -#define SWIGTYPE_p_FIX__SideValue2 swig_types[1323] -#define SWIGTYPE_p_FIX__SideValueInd swig_types[1324] -#define SWIGTYPE_p_FIX__Signature swig_types[1325] -#define SWIGTYPE_p_FIX__SignatureLength swig_types[1326] -#define SWIGTYPE_p_FIX__SocketAcceptor swig_types[1327] -#define SWIGTYPE_p_FIX__SocketCloseFailed swig_types[1328] -#define SWIGTYPE_p_FIX__SocketException swig_types[1329] -#define SWIGTYPE_p_FIX__SocketInitiator swig_types[1330] -#define SWIGTYPE_p_FIX__SocketRecvFailed swig_types[1331] -#define SWIGTYPE_p_FIX__SocketSendFailed swig_types[1332] -#define SWIGTYPE_p_FIX__SolicitedFlag swig_types[1333] -#define SWIGTYPE_p_FIX__Spread swig_types[1334] -#define SWIGTYPE_p_FIX__SpreadToBenchmark swig_types[1335] -#define SWIGTYPE_p_FIX__StandInstDbID swig_types[1336] -#define SWIGTYPE_p_FIX__StandInstDbName swig_types[1337] -#define SWIGTYPE_p_FIX__StandInstDbType swig_types[1338] -#define SWIGTYPE_p_FIX__StartCash swig_types[1339] -#define SWIGTYPE_p_FIX__StartDate swig_types[1340] -#define SWIGTYPE_p_FIX__StartMaturityMonthYear swig_types[1341] -#define SWIGTYPE_p_FIX__StartStrikePxRange swig_types[1342] -#define SWIGTYPE_p_FIX__StartTickPriceRange swig_types[1343] -#define SWIGTYPE_p_FIX__StateOrProvinceOfIssue swig_types[1344] -#define SWIGTYPE_p_FIX__StatsType swig_types[1345] -#define SWIGTYPE_p_FIX__StatusText swig_types[1346] -#define SWIGTYPE_p_FIX__StatusValue swig_types[1347] -#define SWIGTYPE_p_FIX__StipulationType swig_types[1348] -#define SWIGTYPE_p_FIX__StipulationValue swig_types[1349] -#define SWIGTYPE_p_FIX__StopPx swig_types[1350] -#define SWIGTYPE_p_FIX__StrategyParameterName swig_types[1351] -#define SWIGTYPE_p_FIX__StrategyParameterType swig_types[1352] -#define SWIGTYPE_p_FIX__StrategyParameterValue swig_types[1353] -#define SWIGTYPE_p_FIX__StreamAsgnAckType swig_types[1354] -#define SWIGTYPE_p_FIX__StreamAsgnRejReason swig_types[1355] -#define SWIGTYPE_p_FIX__StreamAsgnReqID swig_types[1356] -#define SWIGTYPE_p_FIX__StreamAsgnReqType swig_types[1357] -#define SWIGTYPE_p_FIX__StreamAsgnRptID swig_types[1358] -#define SWIGTYPE_p_FIX__StreamAsgnType swig_types[1359] -#define SWIGTYPE_p_FIX__StrikeCurrency swig_types[1360] -#define SWIGTYPE_p_FIX__StrikeExerciseStyle swig_types[1361] -#define SWIGTYPE_p_FIX__StrikeIncrement swig_types[1362] -#define SWIGTYPE_p_FIX__StrikeMultiplier swig_types[1363] -#define SWIGTYPE_p_FIX__StrikePrice swig_types[1364] -#define SWIGTYPE_p_FIX__StrikePriceBoundaryMethod swig_types[1365] -#define SWIGTYPE_p_FIX__StrikePriceBoundaryPrecision swig_types[1366] -#define SWIGTYPE_p_FIX__StrikePriceDeterminationMethod swig_types[1367] -#define SWIGTYPE_p_FIX__StrikeRuleID swig_types[1368] -#define SWIGTYPE_p_FIX__StrikeTime swig_types[1369] -#define SWIGTYPE_p_FIX__StrikeValue swig_types[1370] -#define SWIGTYPE_p_FIX__StringField swig_types[1371] -#define SWIGTYPE_p_FIX__Subject swig_types[1372] -#define SWIGTYPE_p_FIX__SubscriptionRequestType swig_types[1373] -#define SWIGTYPE_p_FIX__SwapPoints swig_types[1374] -#define SWIGTYPE_p_FIX__Symbol swig_types[1375] -#define SWIGTYPE_p_FIX__SymbolSfx swig_types[1376] -#define SWIGTYPE_p_FIX__SynchronizedApplication swig_types[1377] -#define SWIGTYPE_p_FIX__TYPE__Type swig_types[1378] -#define SWIGTYPE_p_FIX__TZTIMEONLY swig_types[1379] -#define SWIGTYPE_p_FIX__TZTIMESTAMP swig_types[1380] -#define SWIGTYPE_p_FIX__TZTransactTime swig_types[1381] -#define SWIGTYPE_p_FIX__TagNotDefinedForMessage swig_types[1382] -#define SWIGTYPE_p_FIX__TagOutOfOrder swig_types[1383] -#define SWIGTYPE_p_FIX__TargetCompID swig_types[1384] -#define SWIGTYPE_p_FIX__TargetLocationID swig_types[1385] -#define SWIGTYPE_p_FIX__TargetPartyID swig_types[1386] -#define SWIGTYPE_p_FIX__TargetPartyIDSource swig_types[1387] -#define SWIGTYPE_p_FIX__TargetPartyRole swig_types[1388] -#define SWIGTYPE_p_FIX__TargetStrategy swig_types[1389] -#define SWIGTYPE_p_FIX__TargetStrategyParameters swig_types[1390] -#define SWIGTYPE_p_FIX__TargetStrategyPerformance swig_types[1391] -#define SWIGTYPE_p_FIX__TargetSubID swig_types[1392] -#define SWIGTYPE_p_FIX__TaxAdvantageType swig_types[1393] -#define SWIGTYPE_p_FIX__TerminationType swig_types[1394] -#define SWIGTYPE_p_FIX__TestMessageIndicator swig_types[1395] -#define SWIGTYPE_p_FIX__TestReqID swig_types[1396] -#define SWIGTYPE_p_FIX__Text swig_types[1397] -#define SWIGTYPE_p_FIX__ThresholdAmount swig_types[1398] -#define SWIGTYPE_p_FIX__TickDirection swig_types[1399] -#define SWIGTYPE_p_FIX__TickIncrement swig_types[1400] -#define SWIGTYPE_p_FIX__TickRuleType swig_types[1401] -#define SWIGTYPE_p_FIX__TierCode swig_types[1402] -#define SWIGTYPE_p_FIX__TimeBracket swig_types[1403] -#define SWIGTYPE_p_FIX__TimeInForce swig_types[1404] -#define SWIGTYPE_p_FIX__TimeToExpiration swig_types[1405] -#define SWIGTYPE_p_FIX__TimeUnit swig_types[1406] -#define SWIGTYPE_p_FIX__TotNoAccQuotes swig_types[1407] -#define SWIGTYPE_p_FIX__TotNoAllocs swig_types[1408] -#define SWIGTYPE_p_FIX__TotNoCxldQuotes swig_types[1409] -#define SWIGTYPE_p_FIX__TotNoFills swig_types[1410] -#define SWIGTYPE_p_FIX__TotNoOrders swig_types[1411] -#define SWIGTYPE_p_FIX__TotNoQuoteEntries swig_types[1412] -#define SWIGTYPE_p_FIX__TotNoRejQuotes swig_types[1413] -#define SWIGTYPE_p_FIX__TotNoRelatedSym swig_types[1414] -#define SWIGTYPE_p_FIX__TotNoSecurityTypes swig_types[1415] -#define SWIGTYPE_p_FIX__TotNoStrikes swig_types[1416] -#define SWIGTYPE_p_FIX__TotNumAssignmentReports swig_types[1417] -#define SWIGTYPE_p_FIX__TotNumReports swig_types[1418] -#define SWIGTYPE_p_FIX__TotNumTradeReports swig_types[1419] -#define SWIGTYPE_p_FIX__TotQuoteEntries swig_types[1420] -#define SWIGTYPE_p_FIX__TotalAccruedInterestAmt swig_types[1421] -#define SWIGTYPE_p_FIX__TotalAffectedOrders swig_types[1422] -#define SWIGTYPE_p_FIX__TotalNetValue swig_types[1423] -#define SWIGTYPE_p_FIX__TotalNumPosReports swig_types[1424] -#define SWIGTYPE_p_FIX__TotalNumSecurities swig_types[1425] -#define SWIGTYPE_p_FIX__TotalNumSecurityTypes swig_types[1426] -#define SWIGTYPE_p_FIX__TotalTakedown swig_types[1427] -#define SWIGTYPE_p_FIX__TotalVolumeTraded swig_types[1428] -#define SWIGTYPE_p_FIX__TotalVolumeTradedDate swig_types[1429] -#define SWIGTYPE_p_FIX__TotalVolumeTradedTime swig_types[1430] -#define SWIGTYPE_p_FIX__TradSesCloseTime swig_types[1431] -#define SWIGTYPE_p_FIX__TradSesEndTime swig_types[1432] -#define SWIGTYPE_p_FIX__TradSesEvent swig_types[1433] -#define SWIGTYPE_p_FIX__TradSesMethod swig_types[1434] -#define SWIGTYPE_p_FIX__TradSesMode swig_types[1435] -#define SWIGTYPE_p_FIX__TradSesOpenTime swig_types[1436] -#define SWIGTYPE_p_FIX__TradSesPreCloseTime swig_types[1437] -#define SWIGTYPE_p_FIX__TradSesReqID swig_types[1438] -#define SWIGTYPE_p_FIX__TradSesStartTime swig_types[1439] -#define SWIGTYPE_p_FIX__TradSesStatus swig_types[1440] -#define SWIGTYPE_p_FIX__TradSesStatusRejReason swig_types[1441] -#define SWIGTYPE_p_FIX__TradSesUpdateAction swig_types[1442] -#define SWIGTYPE_p_FIX__TradeAllocIndicator swig_types[1443] -#define SWIGTYPE_p_FIX__TradeCondition swig_types[1444] -#define SWIGTYPE_p_FIX__TradeDate swig_types[1445] -#define SWIGTYPE_p_FIX__TradeHandlingInstr swig_types[1446] -#define SWIGTYPE_p_FIX__TradeID swig_types[1447] -#define SWIGTYPE_p_FIX__TradeInputDevice swig_types[1448] -#define SWIGTYPE_p_FIX__TradeInputSource swig_types[1449] -#define SWIGTYPE_p_FIX__TradeLegRefID swig_types[1450] -#define SWIGTYPE_p_FIX__TradeLinkID swig_types[1451] -#define SWIGTYPE_p_FIX__TradeOriginationDate swig_types[1452] -#define SWIGTYPE_p_FIX__TradePublishIndicator swig_types[1453] -#define SWIGTYPE_p_FIX__TradeReportID swig_types[1454] -#define SWIGTYPE_p_FIX__TradeReportRefID swig_types[1455] -#define SWIGTYPE_p_FIX__TradeReportRejectReason swig_types[1456] -#define SWIGTYPE_p_FIX__TradeReportTransType swig_types[1457] -#define SWIGTYPE_p_FIX__TradeReportType swig_types[1458] -#define SWIGTYPE_p_FIX__TradeRequestID swig_types[1459] -#define SWIGTYPE_p_FIX__TradeRequestResult swig_types[1460] -#define SWIGTYPE_p_FIX__TradeRequestStatus swig_types[1461] -#define SWIGTYPE_p_FIX__TradeRequestType swig_types[1462] -#define SWIGTYPE_p_FIX__TradeType swig_types[1463] -#define SWIGTYPE_p_FIX__TradeVolume swig_types[1464] -#define SWIGTYPE_p_FIX__TradedFlatSwitch swig_types[1465] -#define SWIGTYPE_p_FIX__TradingCurrency swig_types[1466] -#define SWIGTYPE_p_FIX__TradingReferencePrice swig_types[1467] -#define SWIGTYPE_p_FIX__TradingSessionDesc swig_types[1468] -#define SWIGTYPE_p_FIX__TradingSessionID swig_types[1469] -#define SWIGTYPE_p_FIX__TradingSessionSubID swig_types[1470] -#define SWIGTYPE_p_FIX__TransBkdTime swig_types[1471] -#define SWIGTYPE_p_FIX__TransactTime swig_types[1472] -#define SWIGTYPE_p_FIX__TransferReason swig_types[1473] -#define SWIGTYPE_p_FIX__TrdMatchID swig_types[1474] -#define SWIGTYPE_p_FIX__TrdRegTimestamp swig_types[1475] -#define SWIGTYPE_p_FIX__TrdRegTimestampOrigin swig_types[1476] -#define SWIGTYPE_p_FIX__TrdRegTimestampType swig_types[1477] -#define SWIGTYPE_p_FIX__TrdRepIndicator swig_types[1478] -#define SWIGTYPE_p_FIX__TrdRepPartyRole swig_types[1479] -#define SWIGTYPE_p_FIX__TrdRptStatus swig_types[1480] -#define SWIGTYPE_p_FIX__TrdSubType swig_types[1481] -#define SWIGTYPE_p_FIX__TrdType swig_types[1482] -#define SWIGTYPE_p_FIX__TriggerAction swig_types[1483] -#define SWIGTYPE_p_FIX__TriggerNewPrice swig_types[1484] -#define SWIGTYPE_p_FIX__TriggerNewQty swig_types[1485] -#define SWIGTYPE_p_FIX__TriggerOrderType swig_types[1486] -#define SWIGTYPE_p_FIX__TriggerPrice swig_types[1487] -#define SWIGTYPE_p_FIX__TriggerPriceDirection swig_types[1488] -#define SWIGTYPE_p_FIX__TriggerPriceType swig_types[1489] -#define SWIGTYPE_p_FIX__TriggerPriceTypeScope swig_types[1490] -#define SWIGTYPE_p_FIX__TriggerSecurityDesc swig_types[1491] -#define SWIGTYPE_p_FIX__TriggerSecurityID swig_types[1492] -#define SWIGTYPE_p_FIX__TriggerSecurityIDSource swig_types[1493] -#define SWIGTYPE_p_FIX__TriggerSymbol swig_types[1494] -#define SWIGTYPE_p_FIX__TriggerTradingSessionID swig_types[1495] -#define SWIGTYPE_p_FIX__TriggerTradingSessionSubID swig_types[1496] -#define SWIGTYPE_p_FIX__TriggerType swig_types[1497] -#define SWIGTYPE_p_FIX__URLLink swig_types[1498] -#define SWIGTYPE_p_FIX__UTCDATE swig_types[1499] -#define SWIGTYPE_p_FIX__UTCDATEONLY swig_types[1500] -#define SWIGTYPE_p_FIX__UTCTIMEONLY swig_types[1501] -#define SWIGTYPE_p_FIX__UTCTIMESTAMP swig_types[1502] -#define SWIGTYPE_p_FIX__UnderlyingAdjustedQuantity swig_types[1503] -#define SWIGTYPE_p_FIX__UnderlyingAllocationPercent swig_types[1504] -#define SWIGTYPE_p_FIX__UnderlyingAttachmentPoint swig_types[1505] -#define SWIGTYPE_p_FIX__UnderlyingCFICode swig_types[1506] -#define SWIGTYPE_p_FIX__UnderlyingCPProgram swig_types[1507] -#define SWIGTYPE_p_FIX__UnderlyingCPRegType swig_types[1508] -#define SWIGTYPE_p_FIX__UnderlyingCapValue swig_types[1509] -#define SWIGTYPE_p_FIX__UnderlyingCashAmount swig_types[1510] -#define SWIGTYPE_p_FIX__UnderlyingCashType swig_types[1511] -#define SWIGTYPE_p_FIX__UnderlyingCollectAmount swig_types[1512] -#define SWIGTYPE_p_FIX__UnderlyingContractMultiplier swig_types[1513] -#define SWIGTYPE_p_FIX__UnderlyingContractMultiplierUnit swig_types[1514] -#define SWIGTYPE_p_FIX__UnderlyingCountryOfIssue swig_types[1515] -#define SWIGTYPE_p_FIX__UnderlyingCouponPaymentDate swig_types[1516] -#define SWIGTYPE_p_FIX__UnderlyingCouponRate swig_types[1517] -#define SWIGTYPE_p_FIX__UnderlyingCreditRating swig_types[1518] -#define SWIGTYPE_p_FIX__UnderlyingCurrency swig_types[1519] -#define SWIGTYPE_p_FIX__UnderlyingCurrentValue swig_types[1520] -#define SWIGTYPE_p_FIX__UnderlyingDeliveryAmount swig_types[1521] -#define SWIGTYPE_p_FIX__UnderlyingDetachmentPoint swig_types[1522] -#define SWIGTYPE_p_FIX__UnderlyingDirtyPrice swig_types[1523] -#define SWIGTYPE_p_FIX__UnderlyingEndPrice swig_types[1524] -#define SWIGTYPE_p_FIX__UnderlyingEndValue swig_types[1525] -#define SWIGTYPE_p_FIX__UnderlyingExerciseStyle swig_types[1526] -#define SWIGTYPE_p_FIX__UnderlyingFXRate swig_types[1527] -#define SWIGTYPE_p_FIX__UnderlyingFXRateCalc swig_types[1528] -#define SWIGTYPE_p_FIX__UnderlyingFactor swig_types[1529] -#define SWIGTYPE_p_FIX__UnderlyingFlowScheduleType swig_types[1530] -#define SWIGTYPE_p_FIX__UnderlyingIDSource swig_types[1531] -#define SWIGTYPE_p_FIX__UnderlyingInstrRegistry swig_types[1532] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyID swig_types[1533] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyIDSource swig_types[1534] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyRole swig_types[1535] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubID swig_types[1536] -#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubIDType swig_types[1537] -#define SWIGTYPE_p_FIX__UnderlyingIssueDate swig_types[1538] -#define SWIGTYPE_p_FIX__UnderlyingIssuer swig_types[1539] -#define SWIGTYPE_p_FIX__UnderlyingLastPx swig_types[1540] -#define SWIGTYPE_p_FIX__UnderlyingLastQty swig_types[1541] -#define SWIGTYPE_p_FIX__UnderlyingLegCFICode swig_types[1542] -#define SWIGTYPE_p_FIX__UnderlyingLegMaturityDate swig_types[1543] -#define SWIGTYPE_p_FIX__UnderlyingLegMaturityMonthYear swig_types[1544] -#define SWIGTYPE_p_FIX__UnderlyingLegMaturityTime swig_types[1545] -#define SWIGTYPE_p_FIX__UnderlyingLegOptAttribute swig_types[1546] -#define SWIGTYPE_p_FIX__UnderlyingLegPutOrCall swig_types[1547] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltID swig_types[1548] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltIDSource swig_types[1549] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityDesc swig_types[1550] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityExchange swig_types[1551] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityID swig_types[1552] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityIDSource swig_types[1553] -#define SWIGTYPE_p_FIX__UnderlyingLegSecuritySubType swig_types[1554] -#define SWIGTYPE_p_FIX__UnderlyingLegSecurityType swig_types[1555] -#define SWIGTYPE_p_FIX__UnderlyingLegStrikePrice swig_types[1556] -#define SWIGTYPE_p_FIX__UnderlyingLegSymbol swig_types[1557] -#define SWIGTYPE_p_FIX__UnderlyingLegSymbolSfx swig_types[1558] -#define SWIGTYPE_p_FIX__UnderlyingLocaleOfIssue swig_types[1559] -#define SWIGTYPE_p_FIX__UnderlyingMaturityDate swig_types[1560] -#define SWIGTYPE_p_FIX__UnderlyingMaturityDay swig_types[1561] -#define SWIGTYPE_p_FIX__UnderlyingMaturityMonthYear swig_types[1562] -#define SWIGTYPE_p_FIX__UnderlyingMaturityTime swig_types[1563] -#define SWIGTYPE_p_FIX__UnderlyingNotionalPercentageOutstanding swig_types[1564] -#define SWIGTYPE_p_FIX__UnderlyingOptAttribute swig_types[1565] -#define SWIGTYPE_p_FIX__UnderlyingOriginalNotionalPercentageOutstanding swig_types[1566] -#define SWIGTYPE_p_FIX__UnderlyingPayAmount swig_types[1567] -#define SWIGTYPE_p_FIX__UnderlyingPriceDeterminationMethod swig_types[1568] -#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasure swig_types[1569] -#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasureQty swig_types[1570] -#define SWIGTYPE_p_FIX__UnderlyingProduct swig_types[1571] -#define SWIGTYPE_p_FIX__UnderlyingPutOrCall swig_types[1572] -#define SWIGTYPE_p_FIX__UnderlyingPx swig_types[1573] -#define SWIGTYPE_p_FIX__UnderlyingQty swig_types[1574] -#define SWIGTYPE_p_FIX__UnderlyingRedemptionDate swig_types[1575] -#define SWIGTYPE_p_FIX__UnderlyingRepoCollateralSecurityType swig_types[1576] -#define SWIGTYPE_p_FIX__UnderlyingRepurchaseRate swig_types[1577] -#define SWIGTYPE_p_FIX__UnderlyingRepurchaseTerm swig_types[1578] -#define SWIGTYPE_p_FIX__UnderlyingRestructuringType swig_types[1579] -#define SWIGTYPE_p_FIX__UnderlyingSecurityAltID swig_types[1580] -#define SWIGTYPE_p_FIX__UnderlyingSecurityAltIDSource swig_types[1581] -#define SWIGTYPE_p_FIX__UnderlyingSecurityDesc swig_types[1582] -#define SWIGTYPE_p_FIX__UnderlyingSecurityExchange swig_types[1583] -#define SWIGTYPE_p_FIX__UnderlyingSecurityID swig_types[1584] -#define SWIGTYPE_p_FIX__UnderlyingSecurityIDSource swig_types[1585] -#define SWIGTYPE_p_FIX__UnderlyingSecuritySubType swig_types[1586] -#define SWIGTYPE_p_FIX__UnderlyingSecurityType swig_types[1587] -#define SWIGTYPE_p_FIX__UnderlyingSeniority swig_types[1588] -#define SWIGTYPE_p_FIX__UnderlyingSettlMethod swig_types[1589] -#define SWIGTYPE_p_FIX__UnderlyingSettlPrice swig_types[1590] -#define SWIGTYPE_p_FIX__UnderlyingSettlPriceType swig_types[1591] -#define SWIGTYPE_p_FIX__UnderlyingSettlementDate swig_types[1592] -#define SWIGTYPE_p_FIX__UnderlyingSettlementStatus swig_types[1593] -#define SWIGTYPE_p_FIX__UnderlyingSettlementType swig_types[1594] -#define SWIGTYPE_p_FIX__UnderlyingStartValue swig_types[1595] -#define SWIGTYPE_p_FIX__UnderlyingStateOrProvinceOfIssue swig_types[1596] -#define SWIGTYPE_p_FIX__UnderlyingStipType swig_types[1597] -#define SWIGTYPE_p_FIX__UnderlyingStipValue swig_types[1598] -#define SWIGTYPE_p_FIX__UnderlyingStrikeCurrency swig_types[1599] -#define SWIGTYPE_p_FIX__UnderlyingStrikePrice swig_types[1600] -#define SWIGTYPE_p_FIX__UnderlyingSymbol swig_types[1601] -#define SWIGTYPE_p_FIX__UnderlyingSymbolSfx swig_types[1602] -#define SWIGTYPE_p_FIX__UnderlyingTimeUnit swig_types[1603] -#define SWIGTYPE_p_FIX__UnderlyingTradingSessionID swig_types[1604] -#define SWIGTYPE_p_FIX__UnderlyingTradingSessionSubID swig_types[1605] -#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasure swig_types[1606] -#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasureQty swig_types[1607] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartyID swig_types[1608] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartyIDSource swig_types[1609] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartyRole swig_types[1610] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubID swig_types[1611] -#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubIDType swig_types[1612] -#define SWIGTYPE_p_FIX__UnitOfMeasure swig_types[1613] -#define SWIGTYPE_p_FIX__UnitOfMeasureQty swig_types[1614] -#define SWIGTYPE_p_FIX__UnsolicitedIndicator swig_types[1615] -#define SWIGTYPE_p_FIX__UnsupportedMessageType swig_types[1616] -#define SWIGTYPE_p_FIX__UnsupportedVersion swig_types[1617] -#define SWIGTYPE_p_FIX__Urgency swig_types[1618] -#define SWIGTYPE_p_FIX__UserRequestID swig_types[1619] -#define SWIGTYPE_p_FIX__UserRequestType swig_types[1620] -#define SWIGTYPE_p_FIX__UserStatus swig_types[1621] -#define SWIGTYPE_p_FIX__UserStatusText swig_types[1622] -#define SWIGTYPE_p_FIX__Username swig_types[1623] -#define SWIGTYPE_p_FIX__UtcDateField swig_types[1624] -#define SWIGTYPE_p_FIX__UtcTimeOnlyField swig_types[1625] -#define SWIGTYPE_p_FIX__UtcTimeStampField swig_types[1626] -#define SWIGTYPE_p_FIX__ValidUntilTime swig_types[1627] -#define SWIGTYPE_p_FIX__ValuationMethod swig_types[1628] -#define SWIGTYPE_p_FIX__ValueOfFutures swig_types[1629] -#define SWIGTYPE_p_FIX__VenueType swig_types[1630] -#define SWIGTYPE_p_FIX__Volatility swig_types[1631] -#define SWIGTYPE_p_FIX__WaveNo swig_types[1632] -#define SWIGTYPE_p_FIX__WorkingIndicator swig_types[1633] -#define SWIGTYPE_p_FIX__WtAverageLiquidity swig_types[1634] -#define SWIGTYPE_p_FIX__XMLDATA swig_types[1635] -#define SWIGTYPE_p_FIX__XmlData swig_types[1636] -#define SWIGTYPE_p_FIX__XmlDataLen swig_types[1637] -#define SWIGTYPE_p_FIX__Yield swig_types[1638] -#define SWIGTYPE_p_FIX__YieldCalcDate swig_types[1639] -#define SWIGTYPE_p_FIX__YieldRedemptionDate swig_types[1640] -#define SWIGTYPE_p_FIX__YieldRedemptionPrice swig_types[1641] -#define SWIGTYPE_p_FIX__YieldRedemptionPriceType swig_types[1642] -#define SWIGTYPE_p_FIX__YieldType swig_types[1643] +#define SWIGTYPE_p_FIX__DataDictionaryBase swig_types[261] +#define SWIGTYPE_p_FIX__DataDictionaryNotFound swig_types[262] +#define SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type swig_types[263] +#define SWIGTYPE_p_FIX__DateOfBirth swig_types[264] +#define SWIGTYPE_p_FIX__DatedDate swig_types[265] +#define SWIGTYPE_p_FIX__DayAvgPx swig_types[266] +#define SWIGTYPE_p_FIX__DayBookingInst swig_types[267] +#define SWIGTYPE_p_FIX__DayCumQty swig_types[268] +#define SWIGTYPE_p_FIX__DayOrderQty swig_types[269] +#define SWIGTYPE_p_FIX__DealingCapacity swig_types[270] +#define SWIGTYPE_p_FIX__DefBidSize swig_types[271] +#define SWIGTYPE_p_FIX__DefOfferSize swig_types[272] +#define SWIGTYPE_p_FIX__DefaultApplExtID swig_types[273] +#define SWIGTYPE_p_FIX__DefaultApplVerID swig_types[274] +#define SWIGTYPE_p_FIX__DefaultCstmApplVerID swig_types[275] +#define SWIGTYPE_p_FIX__DefaultVerIndicator swig_types[276] +#define SWIGTYPE_p_FIX__DeleteReason swig_types[277] +#define SWIGTYPE_p_FIX__DeliverToCompID swig_types[278] +#define SWIGTYPE_p_FIX__DeliverToLocationID swig_types[279] +#define SWIGTYPE_p_FIX__DeliverToSubID swig_types[280] +#define SWIGTYPE_p_FIX__DeliveryDate swig_types[281] +#define SWIGTYPE_p_FIX__DeliveryForm swig_types[282] +#define SWIGTYPE_p_FIX__DeliveryType swig_types[283] +#define SWIGTYPE_p_FIX__DerivFlexProductEligibilityIndicator swig_types[284] +#define SWIGTYPE_p_FIX__DerivativeCFICode swig_types[285] +#define SWIGTYPE_p_FIX__DerivativeCapPrice swig_types[286] +#define SWIGTYPE_p_FIX__DerivativeContractMultiplier swig_types[287] +#define SWIGTYPE_p_FIX__DerivativeContractMultiplierUnit swig_types[288] +#define SWIGTYPE_p_FIX__DerivativeContractSettlMonth swig_types[289] +#define SWIGTYPE_p_FIX__DerivativeCountryOfIssue swig_types[290] +#define SWIGTYPE_p_FIX__DerivativeEncodedIssuer swig_types[291] +#define SWIGTYPE_p_FIX__DerivativeEncodedIssuerLen swig_types[292] +#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDesc swig_types[293] +#define SWIGTYPE_p_FIX__DerivativeEncodedSecurityDescLen swig_types[294] +#define SWIGTYPE_p_FIX__DerivativeEventDate swig_types[295] +#define SWIGTYPE_p_FIX__DerivativeEventPx swig_types[296] +#define SWIGTYPE_p_FIX__DerivativeEventText swig_types[297] +#define SWIGTYPE_p_FIX__DerivativeEventTime swig_types[298] +#define SWIGTYPE_p_FIX__DerivativeEventType swig_types[299] +#define SWIGTYPE_p_FIX__DerivativeExerciseStyle swig_types[300] +#define SWIGTYPE_p_FIX__DerivativeFloorPrice swig_types[301] +#define SWIGTYPE_p_FIX__DerivativeFlowScheduleType swig_types[302] +#define SWIGTYPE_p_FIX__DerivativeFuturesValuationMethod swig_types[303] +#define SWIGTYPE_p_FIX__DerivativeInstrAttribType swig_types[304] +#define SWIGTYPE_p_FIX__DerivativeInstrAttribValue swig_types[305] +#define SWIGTYPE_p_FIX__DerivativeInstrRegistry swig_types[306] +#define SWIGTYPE_p_FIX__DerivativeInstrmtAssignmentMethod swig_types[307] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyID swig_types[308] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyIDSource swig_types[309] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartyRole swig_types[310] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubID swig_types[311] +#define SWIGTYPE_p_FIX__DerivativeInstrumentPartySubIDType swig_types[312] +#define SWIGTYPE_p_FIX__DerivativeIssueDate swig_types[313] +#define SWIGTYPE_p_FIX__DerivativeIssuer swig_types[314] +#define SWIGTYPE_p_FIX__DerivativeListMethod swig_types[315] +#define SWIGTYPE_p_FIX__DerivativeLocaleOfIssue swig_types[316] +#define SWIGTYPE_p_FIX__DerivativeMaturityDate swig_types[317] +#define SWIGTYPE_p_FIX__DerivativeMaturityMonthYear swig_types[318] +#define SWIGTYPE_p_FIX__DerivativeMaturityTime swig_types[319] +#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrement swig_types[320] +#define SWIGTYPE_p_FIX__DerivativeMinPriceIncrementAmount swig_types[321] +#define SWIGTYPE_p_FIX__DerivativeNTPositionLimit swig_types[322] +#define SWIGTYPE_p_FIX__DerivativeOptAttribute swig_types[323] +#define SWIGTYPE_p_FIX__DerivativeOptPayAmount swig_types[324] +#define SWIGTYPE_p_FIX__DerivativePositionLimit swig_types[325] +#define SWIGTYPE_p_FIX__DerivativePriceQuoteMethod swig_types[326] +#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasure swig_types[327] +#define SWIGTYPE_p_FIX__DerivativePriceUnitOfMeasureQty swig_types[328] +#define SWIGTYPE_p_FIX__DerivativeProduct swig_types[329] +#define SWIGTYPE_p_FIX__DerivativeProductComplex swig_types[330] +#define SWIGTYPE_p_FIX__DerivativePutOrCall swig_types[331] +#define SWIGTYPE_p_FIX__DerivativeSecurityAltID swig_types[332] +#define SWIGTYPE_p_FIX__DerivativeSecurityAltIDSource swig_types[333] +#define SWIGTYPE_p_FIX__DerivativeSecurityDesc swig_types[334] +#define SWIGTYPE_p_FIX__DerivativeSecurityExchange swig_types[335] +#define SWIGTYPE_p_FIX__DerivativeSecurityGroup swig_types[336] +#define SWIGTYPE_p_FIX__DerivativeSecurityID swig_types[337] +#define SWIGTYPE_p_FIX__DerivativeSecurityIDSource swig_types[338] +#define SWIGTYPE_p_FIX__DerivativeSecurityStatus swig_types[339] +#define SWIGTYPE_p_FIX__DerivativeSecuritySubType swig_types[340] +#define SWIGTYPE_p_FIX__DerivativeSecurityType swig_types[341] +#define SWIGTYPE_p_FIX__DerivativeSecurityXML swig_types[342] +#define SWIGTYPE_p_FIX__DerivativeSecurityXMLLen swig_types[343] +#define SWIGTYPE_p_FIX__DerivativeSecurityXMLSchema swig_types[344] +#define SWIGTYPE_p_FIX__DerivativeSettlMethod swig_types[345] +#define SWIGTYPE_p_FIX__DerivativeSettleOnOpenFlag swig_types[346] +#define SWIGTYPE_p_FIX__DerivativeStateOrProvinceOfIssue swig_types[347] +#define SWIGTYPE_p_FIX__DerivativeStrikeCurrency swig_types[348] +#define SWIGTYPE_p_FIX__DerivativeStrikeMultiplier swig_types[349] +#define SWIGTYPE_p_FIX__DerivativeStrikePrice swig_types[350] +#define SWIGTYPE_p_FIX__DerivativeStrikeValue swig_types[351] +#define SWIGTYPE_p_FIX__DerivativeSymbol swig_types[352] +#define SWIGTYPE_p_FIX__DerivativeSymbolSfx swig_types[353] +#define SWIGTYPE_p_FIX__DerivativeTimeUnit swig_types[354] +#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasure swig_types[355] +#define SWIGTYPE_p_FIX__DerivativeUnitOfMeasureQty swig_types[356] +#define SWIGTYPE_p_FIX__DerivativeValuationMethod swig_types[357] +#define SWIGTYPE_p_FIX__Designation swig_types[358] +#define SWIGTYPE_p_FIX__DeskID swig_types[359] +#define SWIGTYPE_p_FIX__DeskOrderHandlingInst swig_types[360] +#define SWIGTYPE_p_FIX__DeskType swig_types[361] +#define SWIGTYPE_p_FIX__DeskTypeSource swig_types[362] +#define SWIGTYPE_p_FIX__DetachmentPoint swig_types[363] +#define SWIGTYPE_p_FIX__Dictionary swig_types[364] +#define SWIGTYPE_p_FIX__Dictionary__Data__const_iterator swig_types[365] +#define SWIGTYPE_p_FIX__DiscretionInst swig_types[366] +#define SWIGTYPE_p_FIX__DiscretionLimitType swig_types[367] +#define SWIGTYPE_p_FIX__DiscretionMoveType swig_types[368] +#define SWIGTYPE_p_FIX__DiscretionOffset swig_types[369] +#define SWIGTYPE_p_FIX__DiscretionOffsetType swig_types[370] +#define SWIGTYPE_p_FIX__DiscretionOffsetValue swig_types[371] +#define SWIGTYPE_p_FIX__DiscretionPrice swig_types[372] +#define SWIGTYPE_p_FIX__DiscretionRoundDirection swig_types[373] +#define SWIGTYPE_p_FIX__DiscretionScope swig_types[374] +#define SWIGTYPE_p_FIX__DisplayHighQty swig_types[375] +#define SWIGTYPE_p_FIX__DisplayLowQty swig_types[376] +#define SWIGTYPE_p_FIX__DisplayMethod swig_types[377] +#define SWIGTYPE_p_FIX__DisplayMinIncr swig_types[378] +#define SWIGTYPE_p_FIX__DisplayQty swig_types[379] +#define SWIGTYPE_p_FIX__DisplayWhen swig_types[380] +#define SWIGTYPE_p_FIX__DistribPaymentMethod swig_types[381] +#define SWIGTYPE_p_FIX__DistribPercentage swig_types[382] +#define SWIGTYPE_p_FIX__DividendYield swig_types[383] +#define SWIGTYPE_p_FIX__DlvyInst swig_types[384] +#define SWIGTYPE_p_FIX__DlvyInstType swig_types[385] +#define SWIGTYPE_p_FIX__DoNotSend swig_types[386] +#define SWIGTYPE_p_FIX__DoubleField swig_types[387] +#define SWIGTYPE_p_FIX__DueToRelated swig_types[388] +#define SWIGTYPE_p_FIX__DuplicateFieldNumber swig_types[389] +#define SWIGTYPE_p_FIX__EFPTrackingError swig_types[390] +#define SWIGTYPE_p_FIX__EXCHANGE swig_types[391] +#define SWIGTYPE_p_FIX__EffectiveTime swig_types[392] +#define SWIGTYPE_p_FIX__EmailThreadID swig_types[393] +#define SWIGTYPE_p_FIX__EmailType swig_types[394] +#define SWIGTYPE_p_FIX__EncodedAllocText swig_types[395] +#define SWIGTYPE_p_FIX__EncodedAllocTextLen swig_types[396] +#define SWIGTYPE_p_FIX__EncodedHeadline swig_types[397] +#define SWIGTYPE_p_FIX__EncodedHeadlineLen swig_types[398] +#define SWIGTYPE_p_FIX__EncodedIssuer swig_types[399] +#define SWIGTYPE_p_FIX__EncodedIssuerLen swig_types[400] +#define SWIGTYPE_p_FIX__EncodedLegIssuer swig_types[401] +#define SWIGTYPE_p_FIX__EncodedLegIssuerLen swig_types[402] +#define SWIGTYPE_p_FIX__EncodedLegSecurityDesc swig_types[403] +#define SWIGTYPE_p_FIX__EncodedLegSecurityDescLen swig_types[404] +#define SWIGTYPE_p_FIX__EncodedListExecInst swig_types[405] +#define SWIGTYPE_p_FIX__EncodedListExecInstLen swig_types[406] +#define SWIGTYPE_p_FIX__EncodedListStatusText swig_types[407] +#define SWIGTYPE_p_FIX__EncodedListStatusTextLen swig_types[408] +#define SWIGTYPE_p_FIX__EncodedMktSegmDesc swig_types[409] +#define SWIGTYPE_p_FIX__EncodedMktSegmDescLen swig_types[410] +#define SWIGTYPE_p_FIX__EncodedSecurityDesc swig_types[411] +#define SWIGTYPE_p_FIX__EncodedSecurityDescLen swig_types[412] +#define SWIGTYPE_p_FIX__EncodedSecurityListDesc swig_types[413] +#define SWIGTYPE_p_FIX__EncodedSecurityListDescLen swig_types[414] +#define SWIGTYPE_p_FIX__EncodedSubject swig_types[415] +#define SWIGTYPE_p_FIX__EncodedSubjectLen swig_types[416] +#define SWIGTYPE_p_FIX__EncodedText swig_types[417] +#define SWIGTYPE_p_FIX__EncodedTextLen swig_types[418] +#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuer swig_types[419] +#define SWIGTYPE_p_FIX__EncodedUnderlyingIssuerLen swig_types[420] +#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDesc swig_types[421] +#define SWIGTYPE_p_FIX__EncodedUnderlyingSecurityDescLen swig_types[422] +#define SWIGTYPE_p_FIX__EncryptMethod swig_types[423] +#define SWIGTYPE_p_FIX__EncryptedNewPassword swig_types[424] +#define SWIGTYPE_p_FIX__EncryptedNewPasswordLen swig_types[425] +#define SWIGTYPE_p_FIX__EncryptedPassword swig_types[426] +#define SWIGTYPE_p_FIX__EncryptedPasswordLen swig_types[427] +#define SWIGTYPE_p_FIX__EncryptedPasswordMethod swig_types[428] +#define SWIGTYPE_p_FIX__EndAccruedInterestAmt swig_types[429] +#define SWIGTYPE_p_FIX__EndCash swig_types[430] +#define SWIGTYPE_p_FIX__EndDate swig_types[431] +#define SWIGTYPE_p_FIX__EndMaturityMonthYear swig_types[432] +#define SWIGTYPE_p_FIX__EndSeqNo swig_types[433] +#define SWIGTYPE_p_FIX__EndStrikePxRange swig_types[434] +#define SWIGTYPE_p_FIX__EndTickPriceRange swig_types[435] +#define SWIGTYPE_p_FIX__EventDate swig_types[436] +#define SWIGTYPE_p_FIX__EventPx swig_types[437] +#define SWIGTYPE_p_FIX__EventText swig_types[438] +#define SWIGTYPE_p_FIX__EventTime swig_types[439] +#define SWIGTYPE_p_FIX__EventType swig_types[440] +#define SWIGTYPE_p_FIX__ExDate swig_types[441] +#define SWIGTYPE_p_FIX__ExDestination swig_types[442] +#define SWIGTYPE_p_FIX__ExDestinationIDSource swig_types[443] +#define SWIGTYPE_p_FIX__Exception swig_types[444] +#define SWIGTYPE_p_FIX__ExchangeForPhysical swig_types[445] +#define SWIGTYPE_p_FIX__ExchangeRule swig_types[446] +#define SWIGTYPE_p_FIX__ExchangeSpecialInstructions swig_types[447] +#define SWIGTYPE_p_FIX__ExecAckStatus swig_types[448] +#define SWIGTYPE_p_FIX__ExecBroker swig_types[449] +#define SWIGTYPE_p_FIX__ExecID swig_types[450] +#define SWIGTYPE_p_FIX__ExecInst swig_types[451] +#define SWIGTYPE_p_FIX__ExecInstValue swig_types[452] +#define SWIGTYPE_p_FIX__ExecPriceAdjustment swig_types[453] +#define SWIGTYPE_p_FIX__ExecPriceType swig_types[454] +#define SWIGTYPE_p_FIX__ExecRefID swig_types[455] +#define SWIGTYPE_p_FIX__ExecRestatementReason swig_types[456] +#define SWIGTYPE_p_FIX__ExecTransType swig_types[457] +#define SWIGTYPE_p_FIX__ExecType swig_types[458] +#define SWIGTYPE_p_FIX__ExecValuationPoint swig_types[459] +#define SWIGTYPE_p_FIX__ExerciseMethod swig_types[460] +#define SWIGTYPE_p_FIX__ExerciseStyle swig_types[461] +#define SWIGTYPE_p_FIX__ExpQty swig_types[462] +#define SWIGTYPE_p_FIX__ExpType swig_types[463] +#define SWIGTYPE_p_FIX__ExpirationCycle swig_types[464] +#define SWIGTYPE_p_FIX__ExpirationQtyType swig_types[465] +#define SWIGTYPE_p_FIX__ExpireDate swig_types[466] +#define SWIGTYPE_p_FIX__ExpireTime swig_types[467] +#define SWIGTYPE_p_FIX__FLOAT swig_types[468] +#define SWIGTYPE_p_FIX__Factor swig_types[469] +#define SWIGTYPE_p_FIX__FairValue swig_types[470] +#define SWIGTYPE_p_FIX__FeeMultiplier swig_types[471] +#define SWIGTYPE_p_FIX__FieldBase swig_types[472] +#define SWIGTYPE_p_FIX__FieldConvertError swig_types[473] +#define SWIGTYPE_p_FIX__FieldMap swig_types[474] +#define SWIGTYPE_p_FIX__FieldMap__Groups__const_iterator swig_types[475] +#define SWIGTYPE_p_FIX__FieldNotFound swig_types[476] +#define SWIGTYPE_p_FIX__FieldTag swig_types[477] +#define SWIGTYPE_p_FIX__FileLog swig_types[478] +#define SWIGTYPE_p_FIX__FileLogFactory swig_types[479] +#define SWIGTYPE_p_FIX__FileStore swig_types[480] +#define SWIGTYPE_p_FIX__FileStoreFactory swig_types[481] +#define SWIGTYPE_p_FIX__FillExecID swig_types[482] +#define SWIGTYPE_p_FIX__FillLiquidityInd swig_types[483] +#define SWIGTYPE_p_FIX__FillPx swig_types[484] +#define SWIGTYPE_p_FIX__FillQty swig_types[485] +#define SWIGTYPE_p_FIX__FinancialStatus swig_types[486] +#define SWIGTYPE_p_FIX__FirmTradeID swig_types[487] +#define SWIGTYPE_p_FIX__FirstPx swig_types[488] +#define SWIGTYPE_p_FIX__FlexProductEligibilityIndicator swig_types[489] +#define SWIGTYPE_p_FIX__FlexibleIndicator swig_types[490] +#define SWIGTYPE_p_FIX__FloorPrice swig_types[491] +#define SWIGTYPE_p_FIX__FlowScheduleType swig_types[492] +#define SWIGTYPE_p_FIX__ForexReq swig_types[493] +#define SWIGTYPE_p_FIX__FundRenewWaiv swig_types[494] +#define SWIGTYPE_p_FIX__FutSettDate swig_types[495] +#define SWIGTYPE_p_FIX__FutSettDate2 swig_types[496] +#define SWIGTYPE_p_FIX__FuturesValuationMethod swig_types[497] +#define SWIGTYPE_p_FIX__GTBookingInst swig_types[498] +#define SWIGTYPE_p_FIX__GapFillFlag swig_types[499] +#define SWIGTYPE_p_FIX__GrossTradeAmt swig_types[500] +#define SWIGTYPE_p_FIX__Group swig_types[501] +#define SWIGTYPE_p_FIX__HaltReasonChar swig_types[502] +#define SWIGTYPE_p_FIX__HaltReasonInt swig_types[503] +#define SWIGTYPE_p_FIX__HandlInst swig_types[504] +#define SWIGTYPE_p_FIX__Headline swig_types[505] +#define SWIGTYPE_p_FIX__HeartBtInt swig_types[506] +#define SWIGTYPE_p_FIX__HighLimitPrice swig_types[507] +#define SWIGTYPE_p_FIX__HighPx swig_types[508] +#define SWIGTYPE_p_FIX__HopCompID swig_types[509] +#define SWIGTYPE_p_FIX__HopRefID swig_types[510] +#define SWIGTYPE_p_FIX__HopSendingTime swig_types[511] +#define SWIGTYPE_p_FIX__HostCrossID swig_types[512] +#define SWIGTYPE_p_FIX__IDSource swig_types[513] +#define SWIGTYPE_p_FIX__INT swig_types[514] +#define SWIGTYPE_p_FIX__IOException swig_types[515] +#define SWIGTYPE_p_FIX__IOIID swig_types[516] +#define SWIGTYPE_p_FIX__IOINaturalFlag swig_types[517] +#define SWIGTYPE_p_FIX__IOIOthSvc swig_types[518] +#define SWIGTYPE_p_FIX__IOIQltyInd swig_types[519] +#define SWIGTYPE_p_FIX__IOIQty swig_types[520] +#define SWIGTYPE_p_FIX__IOIQualifier swig_types[521] +#define SWIGTYPE_p_FIX__IOIRefID swig_types[522] +#define SWIGTYPE_p_FIX__IOIShares swig_types[523] +#define SWIGTYPE_p_FIX__IOITransType swig_types[524] +#define SWIGTYPE_p_FIX__IOIid swig_types[525] +#define SWIGTYPE_p_FIX__ImpliedMarketIndicator swig_types[526] +#define SWIGTYPE_p_FIX__InViewOfCommon swig_types[527] +#define SWIGTYPE_p_FIX__IncTaxInd swig_types[528] +#define SWIGTYPE_p_FIX__IncorrectDataFormat swig_types[529] +#define SWIGTYPE_p_FIX__IncorrectMessageStructure swig_types[530] +#define SWIGTYPE_p_FIX__IncorrectTagValue swig_types[531] +#define SWIGTYPE_p_FIX__IndividualAllocID swig_types[532] +#define SWIGTYPE_p_FIX__IndividualAllocRejCode swig_types[533] +#define SWIGTYPE_p_FIX__IndividualAllocType swig_types[534] +#define SWIGTYPE_p_FIX__Initiator swig_types[535] +#define SWIGTYPE_p_FIX__InputSource swig_types[536] +#define SWIGTYPE_p_FIX__InstrAttribType swig_types[537] +#define SWIGTYPE_p_FIX__InstrAttribValue swig_types[538] +#define SWIGTYPE_p_FIX__InstrRegistry swig_types[539] +#define SWIGTYPE_p_FIX__InstrmtAssignmentMethod swig_types[540] +#define SWIGTYPE_p_FIX__InstrumentPartyID swig_types[541] +#define SWIGTYPE_p_FIX__InstrumentPartyIDSource swig_types[542] +#define SWIGTYPE_p_FIX__InstrumentPartyRole swig_types[543] +#define SWIGTYPE_p_FIX__InstrumentPartySubID swig_types[544] +#define SWIGTYPE_p_FIX__InstrumentPartySubIDType swig_types[545] +#define SWIGTYPE_p_FIX__IntField swig_types[546] +#define SWIGTYPE_p_FIX__InterestAccrualDate swig_types[547] +#define SWIGTYPE_p_FIX__InterestAtMaturity swig_types[548] +#define SWIGTYPE_p_FIX__InvalidMessage swig_types[549] +#define SWIGTYPE_p_FIX__InvalidMessageType swig_types[550] +#define SWIGTYPE_p_FIX__InvalidTagNumber swig_types[551] +#define SWIGTYPE_p_FIX__InvestorCountryOfResidence swig_types[552] +#define SWIGTYPE_p_FIX__IssueDate swig_types[553] +#define SWIGTYPE_p_FIX__Issuer swig_types[554] +#define SWIGTYPE_p_FIX__LANGUAGE swig_types[555] +#define SWIGTYPE_p_FIX__LENGTH swig_types[556] +#define SWIGTYPE_p_FIX__LOCALMKTDATE swig_types[557] +#define SWIGTYPE_p_FIX__LanguageCode swig_types[558] +#define SWIGTYPE_p_FIX__LastCapacity swig_types[559] +#define SWIGTYPE_p_FIX__LastForwardPoints swig_types[560] +#define SWIGTYPE_p_FIX__LastForwardPoints2 swig_types[561] +#define SWIGTYPE_p_FIX__LastFragment swig_types[562] +#define SWIGTYPE_p_FIX__LastLiquidityInd swig_types[563] +#define SWIGTYPE_p_FIX__LastMkt swig_types[564] +#define SWIGTYPE_p_FIX__LastMsgSeqNumProcessed swig_types[565] +#define SWIGTYPE_p_FIX__LastNetworkResponseID swig_types[566] +#define SWIGTYPE_p_FIX__LastParPx swig_types[567] +#define SWIGTYPE_p_FIX__LastPx swig_types[568] +#define SWIGTYPE_p_FIX__LastQty swig_types[569] +#define SWIGTYPE_p_FIX__LastRptRequested swig_types[570] +#define SWIGTYPE_p_FIX__LastShares swig_types[571] +#define SWIGTYPE_p_FIX__LastSpotRate swig_types[572] +#define SWIGTYPE_p_FIX__LastSwapPoints swig_types[573] +#define SWIGTYPE_p_FIX__LastUpdateTime swig_types[574] +#define SWIGTYPE_p_FIX__LateIndicator swig_types[575] +#define SWIGTYPE_p_FIX__LeavesQty swig_types[576] +#define SWIGTYPE_p_FIX__LegAllocAccount swig_types[577] +#define SWIGTYPE_p_FIX__LegAllocAcctIDSource swig_types[578] +#define SWIGTYPE_p_FIX__LegAllocID swig_types[579] +#define SWIGTYPE_p_FIX__LegAllocQty swig_types[580] +#define SWIGTYPE_p_FIX__LegAllocSettlCurrency swig_types[581] +#define SWIGTYPE_p_FIX__LegBenchmarkCurveCurrency swig_types[582] +#define SWIGTYPE_p_FIX__LegBenchmarkCurveName swig_types[583] +#define SWIGTYPE_p_FIX__LegBenchmarkCurvePoint swig_types[584] +#define SWIGTYPE_p_FIX__LegBenchmarkPrice swig_types[585] +#define SWIGTYPE_p_FIX__LegBenchmarkPriceType swig_types[586] +#define SWIGTYPE_p_FIX__LegBidForwardPoints swig_types[587] +#define SWIGTYPE_p_FIX__LegBidPx swig_types[588] +#define SWIGTYPE_p_FIX__LegCFICode swig_types[589] +#define SWIGTYPE_p_FIX__LegCalculatedCcyLastQty swig_types[590] +#define SWIGTYPE_p_FIX__LegContractMultiplier swig_types[591] +#define SWIGTYPE_p_FIX__LegContractMultiplierUnit swig_types[592] +#define SWIGTYPE_p_FIX__LegContractSettlMonth swig_types[593] +#define SWIGTYPE_p_FIX__LegCountryOfIssue swig_types[594] +#define SWIGTYPE_p_FIX__LegCouponPaymentDate swig_types[595] +#define SWIGTYPE_p_FIX__LegCouponRate swig_types[596] +#define SWIGTYPE_p_FIX__LegCoveredOrUncovered swig_types[597] +#define SWIGTYPE_p_FIX__LegCreditRating swig_types[598] +#define SWIGTYPE_p_FIX__LegCurrency swig_types[599] +#define SWIGTYPE_p_FIX__LegCurrencyRatio swig_types[600] +#define SWIGTYPE_p_FIX__LegDatedDate swig_types[601] +#define SWIGTYPE_p_FIX__LegDividendYield swig_types[602] +#define SWIGTYPE_p_FIX__LegExecInst swig_types[603] +#define SWIGTYPE_p_FIX__LegExerciseStyle swig_types[604] +#define SWIGTYPE_p_FIX__LegFactor swig_types[605] +#define SWIGTYPE_p_FIX__LegFlowScheduleType swig_types[606] +#define SWIGTYPE_p_FIX__LegFutSettDate swig_types[607] +#define SWIGTYPE_p_FIX__LegGrossTradeAmt swig_types[608] +#define SWIGTYPE_p_FIX__LegIOIQty swig_types[609] +#define SWIGTYPE_p_FIX__LegIndividualAllocID swig_types[610] +#define SWIGTYPE_p_FIX__LegInstrRegistry swig_types[611] +#define SWIGTYPE_p_FIX__LegInterestAccrualDate swig_types[612] +#define SWIGTYPE_p_FIX__LegIssueDate swig_types[613] +#define SWIGTYPE_p_FIX__LegIssuer swig_types[614] +#define SWIGTYPE_p_FIX__LegLastForwardPoints swig_types[615] +#define SWIGTYPE_p_FIX__LegLastPx swig_types[616] +#define SWIGTYPE_p_FIX__LegLastQty swig_types[617] +#define SWIGTYPE_p_FIX__LegLocaleOfIssue swig_types[618] +#define SWIGTYPE_p_FIX__LegMaturityDate swig_types[619] +#define SWIGTYPE_p_FIX__LegMaturityMonthYear swig_types[620] +#define SWIGTYPE_p_FIX__LegMaturityTime swig_types[621] +#define SWIGTYPE_p_FIX__LegNumber swig_types[622] +#define SWIGTYPE_p_FIX__LegOfferForwardPoints swig_types[623] +#define SWIGTYPE_p_FIX__LegOfferPx swig_types[624] +#define SWIGTYPE_p_FIX__LegOptAttribute swig_types[625] +#define SWIGTYPE_p_FIX__LegOptionRatio swig_types[626] +#define SWIGTYPE_p_FIX__LegOrderQty swig_types[627] +#define SWIGTYPE_p_FIX__LegPool swig_types[628] +#define SWIGTYPE_p_FIX__LegPositionEffect swig_types[629] +#define SWIGTYPE_p_FIX__LegPrice swig_types[630] +#define SWIGTYPE_p_FIX__LegPriceType swig_types[631] +#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasure swig_types[632] +#define SWIGTYPE_p_FIX__LegPriceUnitOfMeasureQty swig_types[633] +#define SWIGTYPE_p_FIX__LegProduct swig_types[634] +#define SWIGTYPE_p_FIX__LegPutOrCall swig_types[635] +#define SWIGTYPE_p_FIX__LegQty swig_types[636] +#define SWIGTYPE_p_FIX__LegRatioQty swig_types[637] +#define SWIGTYPE_p_FIX__LegRedemptionDate swig_types[638] +#define SWIGTYPE_p_FIX__LegRefID swig_types[639] +#define SWIGTYPE_p_FIX__LegRepoCollateralSecurityType swig_types[640] +#define SWIGTYPE_p_FIX__LegReportID swig_types[641] +#define SWIGTYPE_p_FIX__LegRepurchaseRate swig_types[642] +#define SWIGTYPE_p_FIX__LegRepurchaseTerm swig_types[643] +#define SWIGTYPE_p_FIX__LegSecurityAltID swig_types[644] +#define SWIGTYPE_p_FIX__LegSecurityAltIDSource swig_types[645] +#define SWIGTYPE_p_FIX__LegSecurityDesc swig_types[646] +#define SWIGTYPE_p_FIX__LegSecurityExchange swig_types[647] +#define SWIGTYPE_p_FIX__LegSecurityID swig_types[648] +#define SWIGTYPE_p_FIX__LegSecurityIDSource swig_types[649] +#define SWIGTYPE_p_FIX__LegSecuritySubType swig_types[650] +#define SWIGTYPE_p_FIX__LegSecurityType swig_types[651] +#define SWIGTYPE_p_FIX__LegSettlCurrency swig_types[652] +#define SWIGTYPE_p_FIX__LegSettlDate swig_types[653] +#define SWIGTYPE_p_FIX__LegSettlType swig_types[654] +#define SWIGTYPE_p_FIX__LegSettlmntTyp swig_types[655] +#define SWIGTYPE_p_FIX__LegSide swig_types[656] +#define SWIGTYPE_p_FIX__LegStateOrProvinceOfIssue swig_types[657] +#define SWIGTYPE_p_FIX__LegStipulationType swig_types[658] +#define SWIGTYPE_p_FIX__LegStipulationValue swig_types[659] +#define SWIGTYPE_p_FIX__LegStrikeCurrency swig_types[660] +#define SWIGTYPE_p_FIX__LegStrikePrice swig_types[661] +#define SWIGTYPE_p_FIX__LegSwapType swig_types[662] +#define SWIGTYPE_p_FIX__LegSymbol swig_types[663] +#define SWIGTYPE_p_FIX__LegSymbolSfx swig_types[664] +#define SWIGTYPE_p_FIX__LegTimeUnit swig_types[665] +#define SWIGTYPE_p_FIX__LegUnitOfMeasure swig_types[666] +#define SWIGTYPE_p_FIX__LegUnitOfMeasureQty swig_types[667] +#define SWIGTYPE_p_FIX__LegVolatility swig_types[668] +#define SWIGTYPE_p_FIX__LegalConfirm swig_types[669] +#define SWIGTYPE_p_FIX__LinesOfText swig_types[670] +#define SWIGTYPE_p_FIX__LiquidityIndType swig_types[671] +#define SWIGTYPE_p_FIX__LiquidityNumSecurities swig_types[672] +#define SWIGTYPE_p_FIX__LiquidityPctHigh swig_types[673] +#define SWIGTYPE_p_FIX__LiquidityPctLow swig_types[674] +#define SWIGTYPE_p_FIX__LiquidityValue swig_types[675] +#define SWIGTYPE_p_FIX__ListExecInst swig_types[676] +#define SWIGTYPE_p_FIX__ListExecInstType swig_types[677] +#define SWIGTYPE_p_FIX__ListID swig_types[678] +#define SWIGTYPE_p_FIX__ListMethod swig_types[679] +#define SWIGTYPE_p_FIX__ListName swig_types[680] +#define SWIGTYPE_p_FIX__ListNoOrds swig_types[681] +#define SWIGTYPE_p_FIX__ListOrderStatus swig_types[682] +#define SWIGTYPE_p_FIX__ListRejectReason swig_types[683] +#define SWIGTYPE_p_FIX__ListSeqNo swig_types[684] +#define SWIGTYPE_p_FIX__ListStatusText swig_types[685] +#define SWIGTYPE_p_FIX__ListStatusType swig_types[686] +#define SWIGTYPE_p_FIX__ListUpdateAction swig_types[687] +#define SWIGTYPE_p_FIX__LocaleOfIssue swig_types[688] +#define SWIGTYPE_p_FIX__LocateReqd swig_types[689] +#define SWIGTYPE_p_FIX__LocationID swig_types[690] +#define SWIGTYPE_p_FIX__Log swig_types[691] +#define SWIGTYPE_p_FIX__LogFactory swig_types[692] +#define SWIGTYPE_p_FIX__LongQty swig_types[693] +#define SWIGTYPE_p_FIX__LotType swig_types[694] +#define SWIGTYPE_p_FIX__LowLimitPrice swig_types[695] +#define SWIGTYPE_p_FIX__LowPx swig_types[696] +#define SWIGTYPE_p_FIX__MDBookType swig_types[697] +#define SWIGTYPE_p_FIX__MDEntryBuyer swig_types[698] +#define SWIGTYPE_p_FIX__MDEntryDate swig_types[699] +#define SWIGTYPE_p_FIX__MDEntryForwardPoints swig_types[700] +#define SWIGTYPE_p_FIX__MDEntryID swig_types[701] +#define SWIGTYPE_p_FIX__MDEntryOriginator swig_types[702] +#define SWIGTYPE_p_FIX__MDEntryPositionNo swig_types[703] +#define SWIGTYPE_p_FIX__MDEntryPx swig_types[704] +#define SWIGTYPE_p_FIX__MDEntryRefID swig_types[705] +#define SWIGTYPE_p_FIX__MDEntrySeller swig_types[706] +#define SWIGTYPE_p_FIX__MDEntrySize swig_types[707] +#define SWIGTYPE_p_FIX__MDEntrySpotRate swig_types[708] +#define SWIGTYPE_p_FIX__MDEntryTime swig_types[709] +#define SWIGTYPE_p_FIX__MDEntryType swig_types[710] +#define SWIGTYPE_p_FIX__MDFeedType swig_types[711] +#define SWIGTYPE_p_FIX__MDImplicitDelete swig_types[712] +#define SWIGTYPE_p_FIX__MDMkt swig_types[713] +#define SWIGTYPE_p_FIX__MDOriginType swig_types[714] +#define SWIGTYPE_p_FIX__MDPriceLevel swig_types[715] +#define SWIGTYPE_p_FIX__MDQuoteType swig_types[716] +#define SWIGTYPE_p_FIX__MDReportID swig_types[717] +#define SWIGTYPE_p_FIX__MDReqID swig_types[718] +#define SWIGTYPE_p_FIX__MDReqRejReason swig_types[719] +#define SWIGTYPE_p_FIX__MDSecSize swig_types[720] +#define SWIGTYPE_p_FIX__MDSecSizeType swig_types[721] +#define SWIGTYPE_p_FIX__MDStreamID swig_types[722] +#define SWIGTYPE_p_FIX__MDSubBookType swig_types[723] +#define SWIGTYPE_p_FIX__MDUpdateAction swig_types[724] +#define SWIGTYPE_p_FIX__MDUpdateType swig_types[725] +#define SWIGTYPE_p_FIX__MONTHYEAR swig_types[726] +#define SWIGTYPE_p_FIX__MULTIPLECHARVALUE swig_types[727] +#define SWIGTYPE_p_FIX__MULTIPLESTRINGVALUE swig_types[728] +#define SWIGTYPE_p_FIX__MULTIPLEVALUESTRING swig_types[729] +#define SWIGTYPE_p_FIX__MailingDtls swig_types[730] +#define SWIGTYPE_p_FIX__MailingInst swig_types[731] +#define SWIGTYPE_p_FIX__ManualOrderIndicator swig_types[732] +#define SWIGTYPE_p_FIX__MarginExcess swig_types[733] +#define SWIGTYPE_p_FIX__MarginRatio swig_types[734] +#define SWIGTYPE_p_FIX__MarketDepth swig_types[735] +#define SWIGTYPE_p_FIX__MarketID swig_types[736] +#define SWIGTYPE_p_FIX__MarketReportID swig_types[737] +#define SWIGTYPE_p_FIX__MarketReqID swig_types[738] +#define SWIGTYPE_p_FIX__MarketSegmentDesc swig_types[739] +#define SWIGTYPE_p_FIX__MarketSegmentID swig_types[740] +#define SWIGTYPE_p_FIX__MarketUpdateAction swig_types[741] +#define SWIGTYPE_p_FIX__MassActionRejectReason swig_types[742] +#define SWIGTYPE_p_FIX__MassActionReportID swig_types[743] +#define SWIGTYPE_p_FIX__MassActionResponse swig_types[744] +#define SWIGTYPE_p_FIX__MassActionScope swig_types[745] +#define SWIGTYPE_p_FIX__MassActionType swig_types[746] +#define SWIGTYPE_p_FIX__MassCancelRejectReason swig_types[747] +#define SWIGTYPE_p_FIX__MassCancelRequestType swig_types[748] +#define SWIGTYPE_p_FIX__MassCancelResponse swig_types[749] +#define SWIGTYPE_p_FIX__MassStatusReqID swig_types[750] +#define SWIGTYPE_p_FIX__MassStatusReqType swig_types[751] +#define SWIGTYPE_p_FIX__MatchAlgorithm swig_types[752] +#define SWIGTYPE_p_FIX__MatchIncrement swig_types[753] +#define SWIGTYPE_p_FIX__MatchStatus swig_types[754] +#define SWIGTYPE_p_FIX__MatchType swig_types[755] +#define SWIGTYPE_p_FIX__MaturityDate swig_types[756] +#define SWIGTYPE_p_FIX__MaturityDay swig_types[757] +#define SWIGTYPE_p_FIX__MaturityMonthYear swig_types[758] +#define SWIGTYPE_p_FIX__MaturityMonthYearFormat swig_types[759] +#define SWIGTYPE_p_FIX__MaturityMonthYearIncrement swig_types[760] +#define SWIGTYPE_p_FIX__MaturityMonthYearIncrementUnits swig_types[761] +#define SWIGTYPE_p_FIX__MaturityNetMoney swig_types[762] +#define SWIGTYPE_p_FIX__MaturityRuleID swig_types[763] +#define SWIGTYPE_p_FIX__MaturityTime swig_types[764] +#define SWIGTYPE_p_FIX__MaxFloor swig_types[765] +#define SWIGTYPE_p_FIX__MaxMessageSize swig_types[766] +#define SWIGTYPE_p_FIX__MaxPriceLevels swig_types[767] +#define SWIGTYPE_p_FIX__MaxPriceVariation swig_types[768] +#define SWIGTYPE_p_FIX__MaxShow swig_types[769] +#define SWIGTYPE_p_FIX__MaxTradeVol swig_types[770] +#define SWIGTYPE_p_FIX__MemoryStore swig_types[771] +#define SWIGTYPE_p_FIX__MemoryStoreFactory swig_types[772] +#define SWIGTYPE_p_FIX__Message swig_types[773] +#define SWIGTYPE_p_FIX__MessageEncoding swig_types[774] +#define SWIGTYPE_p_FIX__MessageEventSource swig_types[775] +#define SWIGTYPE_p_FIX__MessageParseError swig_types[776] +#define SWIGTYPE_p_FIX__MessageStore swig_types[777] +#define SWIGTYPE_p_FIX__MessageStoreExceptionWrapper swig_types[778] +#define SWIGTYPE_p_FIX__MessageStoreFactory swig_types[779] +#define SWIGTYPE_p_FIX__MessageStoreFactoryExceptionWrapper swig_types[780] +#define SWIGTYPE_p_FIX__MidPx swig_types[781] +#define SWIGTYPE_p_FIX__MidYield swig_types[782] +#define SWIGTYPE_p_FIX__MinBidSize swig_types[783] +#define SWIGTYPE_p_FIX__MinLotSize swig_types[784] +#define SWIGTYPE_p_FIX__MinOfferSize swig_types[785] +#define SWIGTYPE_p_FIX__MinPriceIncrement swig_types[786] +#define SWIGTYPE_p_FIX__MinPriceIncrementAmount swig_types[787] +#define SWIGTYPE_p_FIX__MinQty swig_types[788] +#define SWIGTYPE_p_FIX__MinTradeVol swig_types[789] +#define SWIGTYPE_p_FIX__MiscFeeAmt swig_types[790] +#define SWIGTYPE_p_FIX__MiscFeeBasis swig_types[791] +#define SWIGTYPE_p_FIX__MiscFeeCurr swig_types[792] +#define SWIGTYPE_p_FIX__MiscFeeType swig_types[793] +#define SWIGTYPE_p_FIX__MktBidPx swig_types[794] +#define SWIGTYPE_p_FIX__MktOfferPx swig_types[795] +#define SWIGTYPE_p_FIX__ModelType swig_types[796] +#define SWIGTYPE_p_FIX__MoneyLaunderingStatus swig_types[797] +#define SWIGTYPE_p_FIX__MsgDirection swig_types[798] +#define SWIGTYPE_p_FIX__MsgSeqNum swig_types[799] +#define SWIGTYPE_p_FIX__MsgType swig_types[800] +#define SWIGTYPE_p_FIX__MultiLegReportingType swig_types[801] +#define SWIGTYPE_p_FIX__MultiLegRptTypeReq swig_types[802] +#define SWIGTYPE_p_FIX__MultilegModel swig_types[803] +#define SWIGTYPE_p_FIX__MultilegPriceMethod swig_types[804] +#define SWIGTYPE_p_FIX__NTPositionLimit swig_types[805] +#define SWIGTYPE_p_FIX__NUMINGROUP swig_types[806] +#define SWIGTYPE_p_FIX__Nested2PartyID swig_types[807] +#define SWIGTYPE_p_FIX__Nested2PartyIDSource swig_types[808] +#define SWIGTYPE_p_FIX__Nested2PartyRole swig_types[809] +#define SWIGTYPE_p_FIX__Nested2PartySubID swig_types[810] +#define SWIGTYPE_p_FIX__Nested2PartySubIDType swig_types[811] +#define SWIGTYPE_p_FIX__Nested3PartyID swig_types[812] +#define SWIGTYPE_p_FIX__Nested3PartyIDSource swig_types[813] +#define SWIGTYPE_p_FIX__Nested3PartyRole swig_types[814] +#define SWIGTYPE_p_FIX__Nested3PartySubID swig_types[815] +#define SWIGTYPE_p_FIX__Nested3PartySubIDType swig_types[816] +#define SWIGTYPE_p_FIX__Nested4PartyID swig_types[817] +#define SWIGTYPE_p_FIX__Nested4PartyIDSource swig_types[818] +#define SWIGTYPE_p_FIX__Nested4PartyRole swig_types[819] +#define SWIGTYPE_p_FIX__Nested4PartySubID swig_types[820] +#define SWIGTYPE_p_FIX__Nested4PartySubIDType swig_types[821] +#define SWIGTYPE_p_FIX__NestedInstrAttribType swig_types[822] +#define SWIGTYPE_p_FIX__NestedInstrAttribValue swig_types[823] +#define SWIGTYPE_p_FIX__NestedPartyID swig_types[824] +#define SWIGTYPE_p_FIX__NestedPartyIDSource swig_types[825] +#define SWIGTYPE_p_FIX__NestedPartyRole swig_types[826] +#define SWIGTYPE_p_FIX__NestedPartySubID swig_types[827] +#define SWIGTYPE_p_FIX__NestedPartySubIDType swig_types[828] +#define SWIGTYPE_p_FIX__NetChgPrevDay swig_types[829] +#define SWIGTYPE_p_FIX__NetGrossInd swig_types[830] +#define SWIGTYPE_p_FIX__NetMoney swig_types[831] +#define SWIGTYPE_p_FIX__NetworkRequestID swig_types[832] +#define SWIGTYPE_p_FIX__NetworkRequestType swig_types[833] +#define SWIGTYPE_p_FIX__NetworkResponseID swig_types[834] +#define SWIGTYPE_p_FIX__NetworkStatusResponseType swig_types[835] +#define SWIGTYPE_p_FIX__NewPassword swig_types[836] +#define SWIGTYPE_p_FIX__NewSeqNo swig_types[837] +#define SWIGTYPE_p_FIX__NewsCategory swig_types[838] +#define SWIGTYPE_p_FIX__NewsID swig_types[839] +#define SWIGTYPE_p_FIX__NewsRefID swig_types[840] +#define SWIGTYPE_p_FIX__NewsRefType swig_types[841] +#define SWIGTYPE_p_FIX__NextExpectedMsgSeqNum swig_types[842] +#define SWIGTYPE_p_FIX__NoAffectedOrders swig_types[843] +#define SWIGTYPE_p_FIX__NoAllocs swig_types[844] +#define SWIGTYPE_p_FIX__NoAltMDSource swig_types[845] +#define SWIGTYPE_p_FIX__NoApplIDs swig_types[846] +#define SWIGTYPE_p_FIX__NoAsgnReqs swig_types[847] +#define SWIGTYPE_p_FIX__NoBidComponents swig_types[848] +#define SWIGTYPE_p_FIX__NoBidDescriptors swig_types[849] +#define SWIGTYPE_p_FIX__NoCapacities swig_types[850] +#define SWIGTYPE_p_FIX__NoClearingInstructions swig_types[851] +#define SWIGTYPE_p_FIX__NoCollInquiryQualifier swig_types[852] +#define SWIGTYPE_p_FIX__NoCompIDs swig_types[853] +#define SWIGTYPE_p_FIX__NoComplexEventDates swig_types[854] +#define SWIGTYPE_p_FIX__NoComplexEventTimes swig_types[855] +#define SWIGTYPE_p_FIX__NoComplexEvents swig_types[856] +#define SWIGTYPE_p_FIX__NoContAmts swig_types[857] +#define SWIGTYPE_p_FIX__NoContraBrokers swig_types[858] +#define SWIGTYPE_p_FIX__NoDates swig_types[859] +#define SWIGTYPE_p_FIX__NoDerivativeEvents swig_types[860] +#define SWIGTYPE_p_FIX__NoDerivativeInstrAttrib swig_types[861] +#define SWIGTYPE_p_FIX__NoDerivativeInstrumentParties swig_types[862] +#define SWIGTYPE_p_FIX__NoDerivativeInstrumentPartySubIDs swig_types[863] +#define SWIGTYPE_p_FIX__NoDerivativeSecurityAltID swig_types[864] +#define SWIGTYPE_p_FIX__NoDistribInsts swig_types[865] +#define SWIGTYPE_p_FIX__NoDlvyInst swig_types[866] +#define SWIGTYPE_p_FIX__NoEvents swig_types[867] +#define SWIGTYPE_p_FIX__NoExecInstRules swig_types[868] +#define SWIGTYPE_p_FIX__NoExecs swig_types[869] +#define SWIGTYPE_p_FIX__NoExpiration swig_types[870] +#define SWIGTYPE_p_FIX__NoFills swig_types[871] +#define SWIGTYPE_p_FIX__NoHops swig_types[872] +#define SWIGTYPE_p_FIX__NoIOIQualifiers swig_types[873] +#define SWIGTYPE_p_FIX__NoInstrAttrib swig_types[874] +#define SWIGTYPE_p_FIX__NoInstrumentParties swig_types[875] +#define SWIGTYPE_p_FIX__NoInstrumentPartySubIDs swig_types[876] +#define SWIGTYPE_p_FIX__NoLegAllocs swig_types[877] +#define SWIGTYPE_p_FIX__NoLegSecurityAltID swig_types[878] +#define SWIGTYPE_p_FIX__NoLegStipulations swig_types[879] +#define SWIGTYPE_p_FIX__NoLegs swig_types[880] +#define SWIGTYPE_p_FIX__NoLinesOfText swig_types[881] +#define SWIGTYPE_p_FIX__NoLotTypeRules swig_types[882] +#define SWIGTYPE_p_FIX__NoMDEntries swig_types[883] +#define SWIGTYPE_p_FIX__NoMDEntryTypes swig_types[884] +#define SWIGTYPE_p_FIX__NoMDFeedTypes swig_types[885] +#define SWIGTYPE_p_FIX__NoMarketSegments swig_types[886] +#define SWIGTYPE_p_FIX__NoMatchRules swig_types[887] +#define SWIGTYPE_p_FIX__NoMaturityRules swig_types[888] +#define SWIGTYPE_p_FIX__NoMiscFees swig_types[889] +#define SWIGTYPE_p_FIX__NoMsgTypes swig_types[890] +#define SWIGTYPE_p_FIX__NoNested2PartyIDs swig_types[891] +#define SWIGTYPE_p_FIX__NoNested2PartySubIDs swig_types[892] +#define SWIGTYPE_p_FIX__NoNested3PartyIDs swig_types[893] +#define SWIGTYPE_p_FIX__NoNested3PartySubIDs swig_types[894] +#define SWIGTYPE_p_FIX__NoNested4PartyIDs swig_types[895] +#define SWIGTYPE_p_FIX__NoNested4PartySubIDs swig_types[896] +#define SWIGTYPE_p_FIX__NoNestedInstrAttrib swig_types[897] +#define SWIGTYPE_p_FIX__NoNestedPartyIDs swig_types[898] +#define SWIGTYPE_p_FIX__NoNestedPartySubIDs swig_types[899] +#define SWIGTYPE_p_FIX__NoNewsRefIDs swig_types[900] +#define SWIGTYPE_p_FIX__NoNotAffectedOrders swig_types[901] +#define SWIGTYPE_p_FIX__NoOfLegUnderlyings swig_types[902] +#define SWIGTYPE_p_FIX__NoOfSecSizes swig_types[903] +#define SWIGTYPE_p_FIX__NoOrdTypeRules swig_types[904] +#define SWIGTYPE_p_FIX__NoOrders swig_types[905] +#define SWIGTYPE_p_FIX__NoPartyIDs swig_types[906] +#define SWIGTYPE_p_FIX__NoPartySubIDs swig_types[907] +#define SWIGTYPE_p_FIX__NoPosAmt swig_types[908] +#define SWIGTYPE_p_FIX__NoPositions swig_types[909] +#define SWIGTYPE_p_FIX__NoQuoteEntries swig_types[910] +#define SWIGTYPE_p_FIX__NoQuoteQualifiers swig_types[911] +#define SWIGTYPE_p_FIX__NoQuoteSets swig_types[912] +#define SWIGTYPE_p_FIX__NoRateSources swig_types[913] +#define SWIGTYPE_p_FIX__NoRegistDtls swig_types[914] +#define SWIGTYPE_p_FIX__NoRelatedSym swig_types[915] +#define SWIGTYPE_p_FIX__NoRootPartyIDs swig_types[916] +#define SWIGTYPE_p_FIX__NoRootPartySubIDs swig_types[917] +#define SWIGTYPE_p_FIX__NoRoutingIDs swig_types[918] +#define SWIGTYPE_p_FIX__NoRpts swig_types[919] +#define SWIGTYPE_p_FIX__NoSecurityAltID swig_types[920] +#define SWIGTYPE_p_FIX__NoSecurityTypes swig_types[921] +#define SWIGTYPE_p_FIX__NoSettlDetails swig_types[922] +#define SWIGTYPE_p_FIX__NoSettlInst swig_types[923] +#define SWIGTYPE_p_FIX__NoSettlOblig swig_types[924] +#define SWIGTYPE_p_FIX__NoSettlPartyIDs swig_types[925] +#define SWIGTYPE_p_FIX__NoSettlPartySubIDs swig_types[926] +#define SWIGTYPE_p_FIX__NoSideTrdRegTS swig_types[927] +#define SWIGTYPE_p_FIX__NoSides swig_types[928] +#define SWIGTYPE_p_FIX__NoStatsIndicators swig_types[929] +#define SWIGTYPE_p_FIX__NoStipulations swig_types[930] +#define SWIGTYPE_p_FIX__NoStrategyParameters swig_types[931] +#define SWIGTYPE_p_FIX__NoStrikeRules swig_types[932] +#define SWIGTYPE_p_FIX__NoStrikes swig_types[933] +#define SWIGTYPE_p_FIX__NoTagValue swig_types[934] +#define SWIGTYPE_p_FIX__NoTargetPartyIDs swig_types[935] +#define SWIGTYPE_p_FIX__NoTickRules swig_types[936] +#define SWIGTYPE_p_FIX__NoTimeInForceRules swig_types[937] +#define SWIGTYPE_p_FIX__NoTrades swig_types[938] +#define SWIGTYPE_p_FIX__NoTradingSessionRules swig_types[939] +#define SWIGTYPE_p_FIX__NoTradingSessions swig_types[940] +#define SWIGTYPE_p_FIX__NoTrdRegTimestamps swig_types[941] +#define SWIGTYPE_p_FIX__NoTrdRepIndicators swig_types[942] +#define SWIGTYPE_p_FIX__NoUnderlyingAmounts swig_types[943] +#define SWIGTYPE_p_FIX__NoUnderlyingLegSecurityAltID swig_types[944] +#define SWIGTYPE_p_FIX__NoUnderlyingSecurityAltID swig_types[945] +#define SWIGTYPE_p_FIX__NoUnderlyingStips swig_types[946] +#define SWIGTYPE_p_FIX__NoUnderlyings swig_types[947] +#define SWIGTYPE_p_FIX__NoUndlyInstrumentParties swig_types[948] +#define SWIGTYPE_p_FIX__NoUndlyInstrumentPartySubIDs swig_types[949] +#define SWIGTYPE_p_FIX__NotAffOrigClOrdID swig_types[950] +#define SWIGTYPE_p_FIX__NotAffectedOrderID swig_types[951] +#define SWIGTYPE_p_FIX__NotifyBrokerOfCredit swig_types[952] +#define SWIGTYPE_p_FIX__NotionalPercentageOutstanding swig_types[953] +#define SWIGTYPE_p_FIX__NullApplication swig_types[954] +#define SWIGTYPE_p_FIX__NullLog swig_types[955] +#define SWIGTYPE_p_FIX__NumBidders swig_types[956] +#define SWIGTYPE_p_FIX__NumDaysInterest swig_types[957] +#define SWIGTYPE_p_FIX__NumTickets swig_types[958] +#define SWIGTYPE_p_FIX__NumberOfOrders swig_types[959] +#define SWIGTYPE_p_FIX__OddLot swig_types[960] +#define SWIGTYPE_p_FIX__OfferForwardPoints swig_types[961] +#define SWIGTYPE_p_FIX__OfferForwardPoints2 swig_types[962] +#define SWIGTYPE_p_FIX__OfferPx swig_types[963] +#define SWIGTYPE_p_FIX__OfferSize swig_types[964] +#define SWIGTYPE_p_FIX__OfferSpotRate swig_types[965] +#define SWIGTYPE_p_FIX__OfferSwapPoints swig_types[966] +#define SWIGTYPE_p_FIX__OfferYield swig_types[967] +#define SWIGTYPE_p_FIX__OnBehalfOfCompID swig_types[968] +#define SWIGTYPE_p_FIX__OnBehalfOfLocationID swig_types[969] +#define SWIGTYPE_p_FIX__OnBehalfOfSendingTime swig_types[970] +#define SWIGTYPE_p_FIX__OnBehalfOfSubID swig_types[971] +#define SWIGTYPE_p_FIX__OpenClose swig_types[972] +#define SWIGTYPE_p_FIX__OpenCloseSettlFlag swig_types[973] +#define SWIGTYPE_p_FIX__OpenCloseSettleFlag swig_types[974] +#define SWIGTYPE_p_FIX__OpenInterest swig_types[975] +#define SWIGTYPE_p_FIX__OptAttribute swig_types[976] +#define SWIGTYPE_p_FIX__OptPayAmount swig_types[977] +#define SWIGTYPE_p_FIX__OptPayoutAmount swig_types[978] +#define SWIGTYPE_p_FIX__OptPayoutType swig_types[979] +#define SWIGTYPE_p_FIX__OrdRejReason swig_types[980] +#define SWIGTYPE_p_FIX__OrdStatus swig_types[981] +#define SWIGTYPE_p_FIX__OrdStatusReqID swig_types[982] +#define SWIGTYPE_p_FIX__OrdType swig_types[983] +#define SWIGTYPE_p_FIX__OrderAvgPx swig_types[984] +#define SWIGTYPE_p_FIX__OrderBookingQty swig_types[985] +#define SWIGTYPE_p_FIX__OrderCapacity swig_types[986] +#define SWIGTYPE_p_FIX__OrderCapacityQty swig_types[987] +#define SWIGTYPE_p_FIX__OrderCategory swig_types[988] +#define SWIGTYPE_p_FIX__OrderDelay swig_types[989] +#define SWIGTYPE_p_FIX__OrderDelayUnit swig_types[990] +#define SWIGTYPE_p_FIX__OrderHandlingInstSource swig_types[991] +#define SWIGTYPE_p_FIX__OrderID swig_types[992] +#define SWIGTYPE_p_FIX__OrderInputDevice swig_types[993] +#define SWIGTYPE_p_FIX__OrderPercent swig_types[994] +#define SWIGTYPE_p_FIX__OrderQty swig_types[995] +#define SWIGTYPE_p_FIX__OrderQty2 swig_types[996] +#define SWIGTYPE_p_FIX__OrderRestrictions swig_types[997] +#define SWIGTYPE_p_FIX__OrigClOrdID swig_types[998] +#define SWIGTYPE_p_FIX__OrigCrossID swig_types[999] +#define SWIGTYPE_p_FIX__OrigCustOrderCapacity swig_types[1000] +#define SWIGTYPE_p_FIX__OrigOrdModTime swig_types[1001] +#define SWIGTYPE_p_FIX__OrigPosReqRefID swig_types[1002] +#define SWIGTYPE_p_FIX__OrigSecondaryTradeID swig_types[1003] +#define SWIGTYPE_p_FIX__OrigSendingTime swig_types[1004] +#define SWIGTYPE_p_FIX__OrigTime swig_types[1005] +#define SWIGTYPE_p_FIX__OrigTradeDate swig_types[1006] +#define SWIGTYPE_p_FIX__OrigTradeHandlingInstr swig_types[1007] +#define SWIGTYPE_p_FIX__OrigTradeID swig_types[1008] +#define SWIGTYPE_p_FIX__OriginalNotionalPercentageOutstanding swig_types[1009] +#define SWIGTYPE_p_FIX__OutMainCntryUIndex swig_types[1010] +#define SWIGTYPE_p_FIX__OutsideIndexPct swig_types[1011] +#define SWIGTYPE_p_FIX__OwnerType swig_types[1012] +#define SWIGTYPE_p_FIX__OwnershipType swig_types[1013] +#define SWIGTYPE_p_FIX__PERCENTAGE swig_types[1014] +#define SWIGTYPE_p_FIX__PRICE swig_types[1015] +#define SWIGTYPE_p_FIX__PRICEOFFSET swig_types[1016] +#define SWIGTYPE_p_FIX__ParentMktSegmID swig_types[1017] +#define SWIGTYPE_p_FIX__ParticipationRate swig_types[1018] +#define SWIGTYPE_p_FIX__PartyID swig_types[1019] +#define SWIGTYPE_p_FIX__PartyIDSource swig_types[1020] +#define SWIGTYPE_p_FIX__PartyRole swig_types[1021] +#define SWIGTYPE_p_FIX__PartySubID swig_types[1022] +#define SWIGTYPE_p_FIX__PartySubIDType swig_types[1023] +#define SWIGTYPE_p_FIX__Password swig_types[1024] +#define SWIGTYPE_p_FIX__PaymentDate swig_types[1025] +#define SWIGTYPE_p_FIX__PaymentMethod swig_types[1026] +#define SWIGTYPE_p_FIX__PaymentRef swig_types[1027] +#define SWIGTYPE_p_FIX__PaymentRemitterID swig_types[1028] +#define SWIGTYPE_p_FIX__PctAtRisk swig_types[1029] +#define SWIGTYPE_p_FIX__PegDifference swig_types[1030] +#define SWIGTYPE_p_FIX__PegLimitType swig_types[1031] +#define SWIGTYPE_p_FIX__PegMoveType swig_types[1032] +#define SWIGTYPE_p_FIX__PegOffsetType swig_types[1033] +#define SWIGTYPE_p_FIX__PegOffsetValue swig_types[1034] +#define SWIGTYPE_p_FIX__PegPriceType swig_types[1035] +#define SWIGTYPE_p_FIX__PegRoundDirection swig_types[1036] +#define SWIGTYPE_p_FIX__PegScope swig_types[1037] +#define SWIGTYPE_p_FIX__PegSecurityDesc swig_types[1038] +#define SWIGTYPE_p_FIX__PegSecurityID swig_types[1039] +#define SWIGTYPE_p_FIX__PegSecurityIDSource swig_types[1040] +#define SWIGTYPE_p_FIX__PegSymbol swig_types[1041] +#define SWIGTYPE_p_FIX__PeggedPrice swig_types[1042] +#define SWIGTYPE_p_FIX__PeggedRefPrice swig_types[1043] +#define SWIGTYPE_p_FIX__Pool swig_types[1044] +#define SWIGTYPE_p_FIX__PosAmt swig_types[1045] +#define SWIGTYPE_p_FIX__PosAmtType swig_types[1046] +#define SWIGTYPE_p_FIX__PosMaintAction swig_types[1047] +#define SWIGTYPE_p_FIX__PosMaintResult swig_types[1048] +#define SWIGTYPE_p_FIX__PosMaintRptID swig_types[1049] +#define SWIGTYPE_p_FIX__PosMaintRptRefID swig_types[1050] +#define SWIGTYPE_p_FIX__PosMaintStatus swig_types[1051] +#define SWIGTYPE_p_FIX__PosQtyStatus swig_types[1052] +#define SWIGTYPE_p_FIX__PosReqID swig_types[1053] +#define SWIGTYPE_p_FIX__PosReqResult swig_types[1054] +#define SWIGTYPE_p_FIX__PosReqStatus swig_types[1055] +#define SWIGTYPE_p_FIX__PosReqType swig_types[1056] +#define SWIGTYPE_p_FIX__PosTransType swig_types[1057] +#define SWIGTYPE_p_FIX__PosType swig_types[1058] +#define SWIGTYPE_p_FIX__PositionCurrency swig_types[1059] +#define SWIGTYPE_p_FIX__PositionEffect swig_types[1060] +#define SWIGTYPE_p_FIX__PositionLimit swig_types[1061] +#define SWIGTYPE_p_FIX__PossDupFlag swig_types[1062] +#define SWIGTYPE_p_FIX__PossResend swig_types[1063] +#define SWIGTYPE_p_FIX__PreTradeAnonymity swig_types[1064] +#define SWIGTYPE_p_FIX__PreallocMethod swig_types[1065] +#define SWIGTYPE_p_FIX__PrevClosePx swig_types[1066] +#define SWIGTYPE_p_FIX__PreviouslyReported swig_types[1067] +#define SWIGTYPE_p_FIX__Price swig_types[1068] +#define SWIGTYPE_p_FIX__Price2 swig_types[1069] +#define SWIGTYPE_p_FIX__PriceDelta swig_types[1070] +#define SWIGTYPE_p_FIX__PriceImprovement swig_types[1071] +#define SWIGTYPE_p_FIX__PriceLimitType swig_types[1072] +#define SWIGTYPE_p_FIX__PriceProtectionScope swig_types[1073] +#define SWIGTYPE_p_FIX__PriceQuoteMethod swig_types[1074] +#define SWIGTYPE_p_FIX__PriceType swig_types[1075] +#define SWIGTYPE_p_FIX__PriceUnitOfMeasure swig_types[1076] +#define SWIGTYPE_p_FIX__PriceUnitOfMeasureQty swig_types[1077] +#define SWIGTYPE_p_FIX__PriorSettlPrice swig_types[1078] +#define SWIGTYPE_p_FIX__PriorSpreadIndicator swig_types[1079] +#define SWIGTYPE_p_FIX__PriorityIndicator swig_types[1080] +#define SWIGTYPE_p_FIX__PrivateQuote swig_types[1081] +#define SWIGTYPE_p_FIX__ProcessCode swig_types[1082] +#define SWIGTYPE_p_FIX__Product swig_types[1083] +#define SWIGTYPE_p_FIX__ProductComplex swig_types[1084] +#define SWIGTYPE_p_FIX__ProgPeriodInterval swig_types[1085] +#define SWIGTYPE_p_FIX__ProgRptReqs swig_types[1086] +#define SWIGTYPE_p_FIX__PublishTrdIndicator swig_types[1087] +#define SWIGTYPE_p_FIX__PutOrCall swig_types[1088] +#define SWIGTYPE_p_FIX__QTY swig_types[1089] +#define SWIGTYPE_p_FIX__QtyType swig_types[1090] +#define SWIGTYPE_p_FIX__Quantity swig_types[1091] +#define SWIGTYPE_p_FIX__QuantityDate swig_types[1092] +#define SWIGTYPE_p_FIX__QuantityType swig_types[1093] +#define SWIGTYPE_p_FIX__QuoteAckStatus swig_types[1094] +#define SWIGTYPE_p_FIX__QuoteCancelType swig_types[1095] +#define SWIGTYPE_p_FIX__QuoteCondition swig_types[1096] +#define SWIGTYPE_p_FIX__QuoteEntryID swig_types[1097] +#define SWIGTYPE_p_FIX__QuoteEntryRejectReason swig_types[1098] +#define SWIGTYPE_p_FIX__QuoteEntryStatus swig_types[1099] +#define SWIGTYPE_p_FIX__QuoteID swig_types[1100] +#define SWIGTYPE_p_FIX__QuoteMsgID swig_types[1101] +#define SWIGTYPE_p_FIX__QuotePriceType swig_types[1102] +#define SWIGTYPE_p_FIX__QuoteQualifier swig_types[1103] +#define SWIGTYPE_p_FIX__QuoteRejectReason swig_types[1104] +#define SWIGTYPE_p_FIX__QuoteReqID swig_types[1105] +#define SWIGTYPE_p_FIX__QuoteRequestRejectReason swig_types[1106] +#define SWIGTYPE_p_FIX__QuoteRequestType swig_types[1107] +#define SWIGTYPE_p_FIX__QuoteRespID swig_types[1108] +#define SWIGTYPE_p_FIX__QuoteRespType swig_types[1109] +#define SWIGTYPE_p_FIX__QuoteResponseLevel swig_types[1110] +#define SWIGTYPE_p_FIX__QuoteSetID swig_types[1111] +#define SWIGTYPE_p_FIX__QuoteSetValidUntilTime swig_types[1112] +#define SWIGTYPE_p_FIX__QuoteStatus swig_types[1113] +#define SWIGTYPE_p_FIX__QuoteStatusReqID swig_types[1114] +#define SWIGTYPE_p_FIX__QuoteType swig_types[1115] +#define SWIGTYPE_p_FIX__RFQReqID swig_types[1116] +#define SWIGTYPE_p_FIX__RateSource swig_types[1117] +#define SWIGTYPE_p_FIX__RateSourceType swig_types[1118] +#define SWIGTYPE_p_FIX__RatioQty swig_types[1119] +#define SWIGTYPE_p_FIX__RawData swig_types[1120] +#define SWIGTYPE_p_FIX__RawDataLength swig_types[1121] +#define SWIGTYPE_p_FIX__ReceivedDeptID swig_types[1122] +#define SWIGTYPE_p_FIX__RedemptionDate swig_types[1123] +#define SWIGTYPE_p_FIX__RefAllocID swig_types[1124] +#define SWIGTYPE_p_FIX__RefApplExtID swig_types[1125] +#define SWIGTYPE_p_FIX__RefApplID swig_types[1126] +#define SWIGTYPE_p_FIX__RefApplLastSeqNum swig_types[1127] +#define SWIGTYPE_p_FIX__RefApplReqID swig_types[1128] +#define SWIGTYPE_p_FIX__RefApplVerID swig_types[1129] +#define SWIGTYPE_p_FIX__RefCompID swig_types[1130] +#define SWIGTYPE_p_FIX__RefCstmApplVerID swig_types[1131] +#define SWIGTYPE_p_FIX__RefMsgType swig_types[1132] +#define SWIGTYPE_p_FIX__RefOrdIDReason swig_types[1133] +#define SWIGTYPE_p_FIX__RefOrderID swig_types[1134] +#define SWIGTYPE_p_FIX__RefOrderIDSource swig_types[1135] +#define SWIGTYPE_p_FIX__RefSeqNum swig_types[1136] +#define SWIGTYPE_p_FIX__RefSubID swig_types[1137] +#define SWIGTYPE_p_FIX__RefTagID swig_types[1138] +#define SWIGTYPE_p_FIX__ReferencePage swig_types[1139] +#define SWIGTYPE_p_FIX__RefreshIndicator swig_types[1140] +#define SWIGTYPE_p_FIX__RefreshQty swig_types[1141] +#define SWIGTYPE_p_FIX__RegistAcctType swig_types[1142] +#define SWIGTYPE_p_FIX__RegistDetls swig_types[1143] +#define SWIGTYPE_p_FIX__RegistDtls swig_types[1144] +#define SWIGTYPE_p_FIX__RegistEmail swig_types[1145] +#define SWIGTYPE_p_FIX__RegistID swig_types[1146] +#define SWIGTYPE_p_FIX__RegistRefID swig_types[1147] +#define SWIGTYPE_p_FIX__RegistRejReasonCode swig_types[1148] +#define SWIGTYPE_p_FIX__RegistRejReasonText swig_types[1149] +#define SWIGTYPE_p_FIX__RegistStatus swig_types[1150] +#define SWIGTYPE_p_FIX__RegistTransType swig_types[1151] +#define SWIGTYPE_p_FIX__RejectLogon swig_types[1152] +#define SWIGTYPE_p_FIX__RejectText swig_types[1153] +#define SWIGTYPE_p_FIX__RelSymTransactTime swig_types[1154] +#define SWIGTYPE_p_FIX__RelatdSym swig_types[1155] +#define SWIGTYPE_p_FIX__RepeatedTag swig_types[1156] +#define SWIGTYPE_p_FIX__RepeatingGroupCountMismatch swig_types[1157] +#define SWIGTYPE_p_FIX__RepoCollateralSecurityType swig_types[1158] +#define SWIGTYPE_p_FIX__ReportToExch swig_types[1159] +#define SWIGTYPE_p_FIX__ReportedPx swig_types[1160] +#define SWIGTYPE_p_FIX__ReportedPxDiff swig_types[1161] +#define SWIGTYPE_p_FIX__RepurchaseRate swig_types[1162] +#define SWIGTYPE_p_FIX__RepurchaseTerm swig_types[1163] +#define SWIGTYPE_p_FIX__RequiredTagMissing swig_types[1164] +#define SWIGTYPE_p_FIX__ResetSeqNumFlag swig_types[1165] +#define SWIGTYPE_p_FIX__RespondentType swig_types[1166] +#define SWIGTYPE_p_FIX__ResponseDestination swig_types[1167] +#define SWIGTYPE_p_FIX__ResponseTransportType swig_types[1168] +#define SWIGTYPE_p_FIX__RestructuringType swig_types[1169] +#define SWIGTYPE_p_FIX__ReversalIndicator swig_types[1170] +#define SWIGTYPE_p_FIX__RiskFreeRate swig_types[1171] +#define SWIGTYPE_p_FIX__RndPx swig_types[1172] +#define SWIGTYPE_p_FIX__RootPartyID swig_types[1173] +#define SWIGTYPE_p_FIX__RootPartyIDSource swig_types[1174] +#define SWIGTYPE_p_FIX__RootPartyRole swig_types[1175] +#define SWIGTYPE_p_FIX__RootPartySubID swig_types[1176] +#define SWIGTYPE_p_FIX__RootPartySubIDType swig_types[1177] +#define SWIGTYPE_p_FIX__RoundLot swig_types[1178] +#define SWIGTYPE_p_FIX__RoundingDirection swig_types[1179] +#define SWIGTYPE_p_FIX__RoundingModulus swig_types[1180] +#define SWIGTYPE_p_FIX__RoutingID swig_types[1181] +#define SWIGTYPE_p_FIX__RoutingType swig_types[1182] +#define SWIGTYPE_p_FIX__RptSeq swig_types[1183] +#define SWIGTYPE_p_FIX__RptSys swig_types[1184] +#define SWIGTYPE_p_FIX__Rule80A swig_types[1185] +#define SWIGTYPE_p_FIX__RuntimeError swig_types[1186] +#define SWIGTYPE_p_FIX__SEQNUM swig_types[1187] +#define SWIGTYPE_p_FIX__STRING swig_types[1188] +#define SWIGTYPE_p_FIX__Scope swig_types[1189] +#define SWIGTYPE_p_FIX__ScreenLog swig_types[1190] +#define SWIGTYPE_p_FIX__ScreenLogFactory swig_types[1191] +#define SWIGTYPE_p_FIX__SecondaryAllocID swig_types[1192] +#define SWIGTYPE_p_FIX__SecondaryClOrdID swig_types[1193] +#define SWIGTYPE_p_FIX__SecondaryDisplayQty swig_types[1194] +#define SWIGTYPE_p_FIX__SecondaryExecID swig_types[1195] +#define SWIGTYPE_p_FIX__SecondaryFirmTradeID swig_types[1196] +#define SWIGTYPE_p_FIX__SecondaryHighLimitPrice swig_types[1197] +#define SWIGTYPE_p_FIX__SecondaryIndividualAllocID swig_types[1198] +#define SWIGTYPE_p_FIX__SecondaryLowLimitPrice swig_types[1199] +#define SWIGTYPE_p_FIX__SecondaryOrderID swig_types[1200] +#define SWIGTYPE_p_FIX__SecondaryPriceLimitType swig_types[1201] +#define SWIGTYPE_p_FIX__SecondaryTradeID swig_types[1202] +#define SWIGTYPE_p_FIX__SecondaryTradeReportID swig_types[1203] +#define SWIGTYPE_p_FIX__SecondaryTradeReportRefID swig_types[1204] +#define SWIGTYPE_p_FIX__SecondaryTradingReferencePrice swig_types[1205] +#define SWIGTYPE_p_FIX__SecondaryTrdType swig_types[1206] +#define SWIGTYPE_p_FIX__SecureData swig_types[1207] +#define SWIGTYPE_p_FIX__SecureDataLen swig_types[1208] +#define SWIGTYPE_p_FIX__SecurityAltID swig_types[1209] +#define SWIGTYPE_p_FIX__SecurityAltIDSource swig_types[1210] +#define SWIGTYPE_p_FIX__SecurityDesc swig_types[1211] +#define SWIGTYPE_p_FIX__SecurityExchange swig_types[1212] +#define SWIGTYPE_p_FIX__SecurityGroup swig_types[1213] +#define SWIGTYPE_p_FIX__SecurityID swig_types[1214] +#define SWIGTYPE_p_FIX__SecurityIDSource swig_types[1215] +#define SWIGTYPE_p_FIX__SecurityListDesc swig_types[1216] +#define SWIGTYPE_p_FIX__SecurityListID swig_types[1217] +#define SWIGTYPE_p_FIX__SecurityListRefID swig_types[1218] +#define SWIGTYPE_p_FIX__SecurityListRequestType swig_types[1219] +#define SWIGTYPE_p_FIX__SecurityListType swig_types[1220] +#define SWIGTYPE_p_FIX__SecurityListTypeSource swig_types[1221] +#define SWIGTYPE_p_FIX__SecurityReportID swig_types[1222] +#define SWIGTYPE_p_FIX__SecurityReqID swig_types[1223] +#define SWIGTYPE_p_FIX__SecurityRequestResult swig_types[1224] +#define SWIGTYPE_p_FIX__SecurityRequestType swig_types[1225] +#define SWIGTYPE_p_FIX__SecurityResponseID swig_types[1226] +#define SWIGTYPE_p_FIX__SecurityResponseType swig_types[1227] +#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctName swig_types[1228] +#define SWIGTYPE_p_FIX__SecuritySettlAgentAcctNum swig_types[1229] +#define SWIGTYPE_p_FIX__SecuritySettlAgentCode swig_types[1230] +#define SWIGTYPE_p_FIX__SecuritySettlAgentContactName swig_types[1231] +#define SWIGTYPE_p_FIX__SecuritySettlAgentContactPhone swig_types[1232] +#define SWIGTYPE_p_FIX__SecuritySettlAgentName swig_types[1233] +#define SWIGTYPE_p_FIX__SecurityStatus swig_types[1234] +#define SWIGTYPE_p_FIX__SecurityStatusReqID swig_types[1235] +#define SWIGTYPE_p_FIX__SecuritySubType swig_types[1236] +#define SWIGTYPE_p_FIX__SecurityTradingEvent swig_types[1237] +#define SWIGTYPE_p_FIX__SecurityTradingStatus swig_types[1238] +#define SWIGTYPE_p_FIX__SecurityType swig_types[1239] +#define SWIGTYPE_p_FIX__SecurityUpdateAction swig_types[1240] +#define SWIGTYPE_p_FIX__SecurityXML swig_types[1241] +#define SWIGTYPE_p_FIX__SecurityXMLLen swig_types[1242] +#define SWIGTYPE_p_FIX__SecurityXMLSchema swig_types[1243] +#define SWIGTYPE_p_FIX__SellVolume swig_types[1244] +#define SWIGTYPE_p_FIX__SellerDays swig_types[1245] +#define SWIGTYPE_p_FIX__SenderCompID swig_types[1246] +#define SWIGTYPE_p_FIX__SenderLocationID swig_types[1247] +#define SWIGTYPE_p_FIX__SenderSubID swig_types[1248] +#define SWIGTYPE_p_FIX__SendingDate swig_types[1249] +#define SWIGTYPE_p_FIX__SendingTime swig_types[1250] +#define SWIGTYPE_p_FIX__Seniority swig_types[1251] +#define SWIGTYPE_p_FIX__Session swig_types[1252] +#define SWIGTYPE_p_FIX__SessionID swig_types[1253] +#define SWIGTYPE_p_FIX__SessionNotFound swig_types[1254] +#define SWIGTYPE_p_FIX__SessionRejectReason swig_types[1255] +#define SWIGTYPE_p_FIX__SessionSettings swig_types[1256] +#define SWIGTYPE_p_FIX__SessionStatus swig_types[1257] +#define SWIGTYPE_p_FIX__SettlBrkrCode swig_types[1258] +#define SWIGTYPE_p_FIX__SettlCurrAmt swig_types[1259] +#define SWIGTYPE_p_FIX__SettlCurrBidFxRate swig_types[1260] +#define SWIGTYPE_p_FIX__SettlCurrFxRate swig_types[1261] +#define SWIGTYPE_p_FIX__SettlCurrFxRateCalc swig_types[1262] +#define SWIGTYPE_p_FIX__SettlCurrOfferFxRate swig_types[1263] +#define SWIGTYPE_p_FIX__SettlCurrency swig_types[1264] +#define SWIGTYPE_p_FIX__SettlDate swig_types[1265] +#define SWIGTYPE_p_FIX__SettlDate2 swig_types[1266] +#define SWIGTYPE_p_FIX__SettlDeliveryType swig_types[1267] +#define SWIGTYPE_p_FIX__SettlDepositoryCode swig_types[1268] +#define SWIGTYPE_p_FIX__SettlInstCode swig_types[1269] +#define SWIGTYPE_p_FIX__SettlInstID swig_types[1270] +#define SWIGTYPE_p_FIX__SettlInstMode swig_types[1271] +#define SWIGTYPE_p_FIX__SettlInstMsgID swig_types[1272] +#define SWIGTYPE_p_FIX__SettlInstRefID swig_types[1273] +#define SWIGTYPE_p_FIX__SettlInstReqID swig_types[1274] +#define SWIGTYPE_p_FIX__SettlInstReqRejCode swig_types[1275] +#define SWIGTYPE_p_FIX__SettlInstSource swig_types[1276] +#define SWIGTYPE_p_FIX__SettlInstTransType swig_types[1277] +#define SWIGTYPE_p_FIX__SettlLocation swig_types[1278] +#define SWIGTYPE_p_FIX__SettlMethod swig_types[1279] +#define SWIGTYPE_p_FIX__SettlObligID swig_types[1280] +#define SWIGTYPE_p_FIX__SettlObligMode swig_types[1281] +#define SWIGTYPE_p_FIX__SettlObligMsgID swig_types[1282] +#define SWIGTYPE_p_FIX__SettlObligRefID swig_types[1283] +#define SWIGTYPE_p_FIX__SettlObligSource swig_types[1284] +#define SWIGTYPE_p_FIX__SettlObligTransType swig_types[1285] +#define SWIGTYPE_p_FIX__SettlPartyID swig_types[1286] +#define SWIGTYPE_p_FIX__SettlPartyIDSource swig_types[1287] +#define SWIGTYPE_p_FIX__SettlPartyRole swig_types[1288] +#define SWIGTYPE_p_FIX__SettlPartySubID swig_types[1289] +#define SWIGTYPE_p_FIX__SettlPartySubIDType swig_types[1290] +#define SWIGTYPE_p_FIX__SettlPrice swig_types[1291] +#define SWIGTYPE_p_FIX__SettlPriceType swig_types[1292] +#define SWIGTYPE_p_FIX__SettlSessID swig_types[1293] +#define SWIGTYPE_p_FIX__SettlSessSubID swig_types[1294] +#define SWIGTYPE_p_FIX__SettlType swig_types[1295] +#define SWIGTYPE_p_FIX__SettleOnOpenFlag swig_types[1296] +#define SWIGTYPE_p_FIX__SettlementCycleNo swig_types[1297] +#define SWIGTYPE_p_FIX__SettlmntTyp swig_types[1298] +#define SWIGTYPE_p_FIX__SharedCommission swig_types[1299] +#define SWIGTYPE_p_FIX__Shares swig_types[1300] +#define SWIGTYPE_p_FIX__ShortQty swig_types[1301] +#define SWIGTYPE_p_FIX__ShortSaleReason swig_types[1302] +#define SWIGTYPE_p_FIX__Side swig_types[1303] +#define SWIGTYPE_p_FIX__SideComplianceID swig_types[1304] +#define SWIGTYPE_p_FIX__SideCurrency swig_types[1305] +#define SWIGTYPE_p_FIX__SideExecID swig_types[1306] +#define SWIGTYPE_p_FIX__SideFillStationCd swig_types[1307] +#define SWIGTYPE_p_FIX__SideGrossTradeAmt swig_types[1308] +#define SWIGTYPE_p_FIX__SideLastQty swig_types[1309] +#define SWIGTYPE_p_FIX__SideLiquidityInd swig_types[1310] +#define SWIGTYPE_p_FIX__SideMultiLegReportingType swig_types[1311] +#define SWIGTYPE_p_FIX__SideQty swig_types[1312] +#define SWIGTYPE_p_FIX__SideReasonCd swig_types[1313] +#define SWIGTYPE_p_FIX__SideSettlCurrency swig_types[1314] +#define SWIGTYPE_p_FIX__SideTimeInForce swig_types[1315] +#define SWIGTYPE_p_FIX__SideTradeReportID swig_types[1316] +#define SWIGTYPE_p_FIX__SideTrdRegTimestamp swig_types[1317] +#define SWIGTYPE_p_FIX__SideTrdRegTimestampSrc swig_types[1318] +#define SWIGTYPE_p_FIX__SideTrdRegTimestampType swig_types[1319] +#define SWIGTYPE_p_FIX__SideTrdSubTyp swig_types[1320] +#define SWIGTYPE_p_FIX__SideValue1 swig_types[1321] +#define SWIGTYPE_p_FIX__SideValue2 swig_types[1322] +#define SWIGTYPE_p_FIX__SideValueInd swig_types[1323] +#define SWIGTYPE_p_FIX__Signature swig_types[1324] +#define SWIGTYPE_p_FIX__SignatureLength swig_types[1325] +#define SWIGTYPE_p_FIX__SocketAcceptor swig_types[1326] +#define SWIGTYPE_p_FIX__SocketCloseFailed swig_types[1327] +#define SWIGTYPE_p_FIX__SocketException swig_types[1328] +#define SWIGTYPE_p_FIX__SocketInitiator swig_types[1329] +#define SWIGTYPE_p_FIX__SocketRecvFailed swig_types[1330] +#define SWIGTYPE_p_FIX__SocketSendFailed swig_types[1331] +#define SWIGTYPE_p_FIX__SolicitedFlag swig_types[1332] +#define SWIGTYPE_p_FIX__Spread swig_types[1333] +#define SWIGTYPE_p_FIX__SpreadToBenchmark swig_types[1334] +#define SWIGTYPE_p_FIX__StandInstDbID swig_types[1335] +#define SWIGTYPE_p_FIX__StandInstDbName swig_types[1336] +#define SWIGTYPE_p_FIX__StandInstDbType swig_types[1337] +#define SWIGTYPE_p_FIX__StartCash swig_types[1338] +#define SWIGTYPE_p_FIX__StartDate swig_types[1339] +#define SWIGTYPE_p_FIX__StartMaturityMonthYear swig_types[1340] +#define SWIGTYPE_p_FIX__StartStrikePxRange swig_types[1341] +#define SWIGTYPE_p_FIX__StartTickPriceRange swig_types[1342] +#define SWIGTYPE_p_FIX__StateOrProvinceOfIssue swig_types[1343] +#define SWIGTYPE_p_FIX__StatsType swig_types[1344] +#define SWIGTYPE_p_FIX__StatusText swig_types[1345] +#define SWIGTYPE_p_FIX__StatusValue swig_types[1346] +#define SWIGTYPE_p_FIX__StipulationType swig_types[1347] +#define SWIGTYPE_p_FIX__StipulationValue swig_types[1348] +#define SWIGTYPE_p_FIX__StopPx swig_types[1349] +#define SWIGTYPE_p_FIX__StrategyParameterName swig_types[1350] +#define SWIGTYPE_p_FIX__StrategyParameterType swig_types[1351] +#define SWIGTYPE_p_FIX__StrategyParameterValue swig_types[1352] +#define SWIGTYPE_p_FIX__StreamAsgnAckType swig_types[1353] +#define SWIGTYPE_p_FIX__StreamAsgnRejReason swig_types[1354] +#define SWIGTYPE_p_FIX__StreamAsgnReqID swig_types[1355] +#define SWIGTYPE_p_FIX__StreamAsgnReqType swig_types[1356] +#define SWIGTYPE_p_FIX__StreamAsgnRptID swig_types[1357] +#define SWIGTYPE_p_FIX__StreamAsgnType swig_types[1358] +#define SWIGTYPE_p_FIX__StrikeCurrency swig_types[1359] +#define SWIGTYPE_p_FIX__StrikeExerciseStyle swig_types[1360] +#define SWIGTYPE_p_FIX__StrikeIncrement swig_types[1361] +#define SWIGTYPE_p_FIX__StrikeMultiplier swig_types[1362] +#define SWIGTYPE_p_FIX__StrikePrice swig_types[1363] +#define SWIGTYPE_p_FIX__StrikePriceBoundaryMethod swig_types[1364] +#define SWIGTYPE_p_FIX__StrikePriceBoundaryPrecision swig_types[1365] +#define SWIGTYPE_p_FIX__StrikePriceDeterminationMethod swig_types[1366] +#define SWIGTYPE_p_FIX__StrikeRuleID swig_types[1367] +#define SWIGTYPE_p_FIX__StrikeTime swig_types[1368] +#define SWIGTYPE_p_FIX__StrikeValue swig_types[1369] +#define SWIGTYPE_p_FIX__StringField swig_types[1370] +#define SWIGTYPE_p_FIX__Subject swig_types[1371] +#define SWIGTYPE_p_FIX__SubscriptionRequestType swig_types[1372] +#define SWIGTYPE_p_FIX__SwapPoints swig_types[1373] +#define SWIGTYPE_p_FIX__Symbol swig_types[1374] +#define SWIGTYPE_p_FIX__SymbolSfx swig_types[1375] +#define SWIGTYPE_p_FIX__SynchronizedApplication swig_types[1376] +#define SWIGTYPE_p_FIX__TYPE__Type swig_types[1377] +#define SWIGTYPE_p_FIX__TZTIMEONLY swig_types[1378] +#define SWIGTYPE_p_FIX__TZTIMESTAMP swig_types[1379] +#define SWIGTYPE_p_FIX__TZTransactTime swig_types[1380] +#define SWIGTYPE_p_FIX__TagNotDefinedForMessage swig_types[1381] +#define SWIGTYPE_p_FIX__TagOutOfOrder swig_types[1382] +#define SWIGTYPE_p_FIX__TargetCompID swig_types[1383] +#define SWIGTYPE_p_FIX__TargetLocationID swig_types[1384] +#define SWIGTYPE_p_FIX__TargetPartyID swig_types[1385] +#define SWIGTYPE_p_FIX__TargetPartyIDSource swig_types[1386] +#define SWIGTYPE_p_FIX__TargetPartyRole swig_types[1387] +#define SWIGTYPE_p_FIX__TargetStrategy swig_types[1388] +#define SWIGTYPE_p_FIX__TargetStrategyParameters swig_types[1389] +#define SWIGTYPE_p_FIX__TargetStrategyPerformance swig_types[1390] +#define SWIGTYPE_p_FIX__TargetSubID swig_types[1391] +#define SWIGTYPE_p_FIX__TaxAdvantageType swig_types[1392] +#define SWIGTYPE_p_FIX__TerminationType swig_types[1393] +#define SWIGTYPE_p_FIX__TestMessageIndicator swig_types[1394] +#define SWIGTYPE_p_FIX__TestReqID swig_types[1395] +#define SWIGTYPE_p_FIX__Text swig_types[1396] +#define SWIGTYPE_p_FIX__ThresholdAmount swig_types[1397] +#define SWIGTYPE_p_FIX__TickDirection swig_types[1398] +#define SWIGTYPE_p_FIX__TickIncrement swig_types[1399] +#define SWIGTYPE_p_FIX__TickRuleType swig_types[1400] +#define SWIGTYPE_p_FIX__TierCode swig_types[1401] +#define SWIGTYPE_p_FIX__TimeBracket swig_types[1402] +#define SWIGTYPE_p_FIX__TimeInForce swig_types[1403] +#define SWIGTYPE_p_FIX__TimeToExpiration swig_types[1404] +#define SWIGTYPE_p_FIX__TimeUnit swig_types[1405] +#define SWIGTYPE_p_FIX__TotNoAccQuotes swig_types[1406] +#define SWIGTYPE_p_FIX__TotNoAllocs swig_types[1407] +#define SWIGTYPE_p_FIX__TotNoCxldQuotes swig_types[1408] +#define SWIGTYPE_p_FIX__TotNoFills swig_types[1409] +#define SWIGTYPE_p_FIX__TotNoOrders swig_types[1410] +#define SWIGTYPE_p_FIX__TotNoQuoteEntries swig_types[1411] +#define SWIGTYPE_p_FIX__TotNoRejQuotes swig_types[1412] +#define SWIGTYPE_p_FIX__TotNoRelatedSym swig_types[1413] +#define SWIGTYPE_p_FIX__TotNoSecurityTypes swig_types[1414] +#define SWIGTYPE_p_FIX__TotNoStrikes swig_types[1415] +#define SWIGTYPE_p_FIX__TotNumAssignmentReports swig_types[1416] +#define SWIGTYPE_p_FIX__TotNumReports swig_types[1417] +#define SWIGTYPE_p_FIX__TotNumTradeReports swig_types[1418] +#define SWIGTYPE_p_FIX__TotQuoteEntries swig_types[1419] +#define SWIGTYPE_p_FIX__TotalAccruedInterestAmt swig_types[1420] +#define SWIGTYPE_p_FIX__TotalAffectedOrders swig_types[1421] +#define SWIGTYPE_p_FIX__TotalNetValue swig_types[1422] +#define SWIGTYPE_p_FIX__TotalNumPosReports swig_types[1423] +#define SWIGTYPE_p_FIX__TotalNumSecurities swig_types[1424] +#define SWIGTYPE_p_FIX__TotalNumSecurityTypes swig_types[1425] +#define SWIGTYPE_p_FIX__TotalTakedown swig_types[1426] +#define SWIGTYPE_p_FIX__TotalVolumeTraded swig_types[1427] +#define SWIGTYPE_p_FIX__TotalVolumeTradedDate swig_types[1428] +#define SWIGTYPE_p_FIX__TotalVolumeTradedTime swig_types[1429] +#define SWIGTYPE_p_FIX__TradSesCloseTime swig_types[1430] +#define SWIGTYPE_p_FIX__TradSesEndTime swig_types[1431] +#define SWIGTYPE_p_FIX__TradSesEvent swig_types[1432] +#define SWIGTYPE_p_FIX__TradSesMethod swig_types[1433] +#define SWIGTYPE_p_FIX__TradSesMode swig_types[1434] +#define SWIGTYPE_p_FIX__TradSesOpenTime swig_types[1435] +#define SWIGTYPE_p_FIX__TradSesPreCloseTime swig_types[1436] +#define SWIGTYPE_p_FIX__TradSesReqID swig_types[1437] +#define SWIGTYPE_p_FIX__TradSesStartTime swig_types[1438] +#define SWIGTYPE_p_FIX__TradSesStatus swig_types[1439] +#define SWIGTYPE_p_FIX__TradSesStatusRejReason swig_types[1440] +#define SWIGTYPE_p_FIX__TradSesUpdateAction swig_types[1441] +#define SWIGTYPE_p_FIX__TradeAllocIndicator swig_types[1442] +#define SWIGTYPE_p_FIX__TradeCondition swig_types[1443] +#define SWIGTYPE_p_FIX__TradeDate swig_types[1444] +#define SWIGTYPE_p_FIX__TradeHandlingInstr swig_types[1445] +#define SWIGTYPE_p_FIX__TradeID swig_types[1446] +#define SWIGTYPE_p_FIX__TradeInputDevice swig_types[1447] +#define SWIGTYPE_p_FIX__TradeInputSource swig_types[1448] +#define SWIGTYPE_p_FIX__TradeLegRefID swig_types[1449] +#define SWIGTYPE_p_FIX__TradeLinkID swig_types[1450] +#define SWIGTYPE_p_FIX__TradeOriginationDate swig_types[1451] +#define SWIGTYPE_p_FIX__TradePublishIndicator swig_types[1452] +#define SWIGTYPE_p_FIX__TradeReportID swig_types[1453] +#define SWIGTYPE_p_FIX__TradeReportRefID swig_types[1454] +#define SWIGTYPE_p_FIX__TradeReportRejectReason swig_types[1455] +#define SWIGTYPE_p_FIX__TradeReportTransType swig_types[1456] +#define SWIGTYPE_p_FIX__TradeReportType swig_types[1457] +#define SWIGTYPE_p_FIX__TradeRequestID swig_types[1458] +#define SWIGTYPE_p_FIX__TradeRequestResult swig_types[1459] +#define SWIGTYPE_p_FIX__TradeRequestStatus swig_types[1460] +#define SWIGTYPE_p_FIX__TradeRequestType swig_types[1461] +#define SWIGTYPE_p_FIX__TradeType swig_types[1462] +#define SWIGTYPE_p_FIX__TradeVolume swig_types[1463] +#define SWIGTYPE_p_FIX__TradedFlatSwitch swig_types[1464] +#define SWIGTYPE_p_FIX__TradingCurrency swig_types[1465] +#define SWIGTYPE_p_FIX__TradingReferencePrice swig_types[1466] +#define SWIGTYPE_p_FIX__TradingSessionDesc swig_types[1467] +#define SWIGTYPE_p_FIX__TradingSessionID swig_types[1468] +#define SWIGTYPE_p_FIX__TradingSessionSubID swig_types[1469] +#define SWIGTYPE_p_FIX__TransBkdTime swig_types[1470] +#define SWIGTYPE_p_FIX__TransactTime swig_types[1471] +#define SWIGTYPE_p_FIX__TransferReason swig_types[1472] +#define SWIGTYPE_p_FIX__TrdMatchID swig_types[1473] +#define SWIGTYPE_p_FIX__TrdRegTimestamp swig_types[1474] +#define SWIGTYPE_p_FIX__TrdRegTimestampOrigin swig_types[1475] +#define SWIGTYPE_p_FIX__TrdRegTimestampType swig_types[1476] +#define SWIGTYPE_p_FIX__TrdRepIndicator swig_types[1477] +#define SWIGTYPE_p_FIX__TrdRepPartyRole swig_types[1478] +#define SWIGTYPE_p_FIX__TrdRptStatus swig_types[1479] +#define SWIGTYPE_p_FIX__TrdSubType swig_types[1480] +#define SWIGTYPE_p_FIX__TrdType swig_types[1481] +#define SWIGTYPE_p_FIX__TriggerAction swig_types[1482] +#define SWIGTYPE_p_FIX__TriggerNewPrice swig_types[1483] +#define SWIGTYPE_p_FIX__TriggerNewQty swig_types[1484] +#define SWIGTYPE_p_FIX__TriggerOrderType swig_types[1485] +#define SWIGTYPE_p_FIX__TriggerPrice swig_types[1486] +#define SWIGTYPE_p_FIX__TriggerPriceDirection swig_types[1487] +#define SWIGTYPE_p_FIX__TriggerPriceType swig_types[1488] +#define SWIGTYPE_p_FIX__TriggerPriceTypeScope swig_types[1489] +#define SWIGTYPE_p_FIX__TriggerSecurityDesc swig_types[1490] +#define SWIGTYPE_p_FIX__TriggerSecurityID swig_types[1491] +#define SWIGTYPE_p_FIX__TriggerSecurityIDSource swig_types[1492] +#define SWIGTYPE_p_FIX__TriggerSymbol swig_types[1493] +#define SWIGTYPE_p_FIX__TriggerTradingSessionID swig_types[1494] +#define SWIGTYPE_p_FIX__TriggerTradingSessionSubID swig_types[1495] +#define SWIGTYPE_p_FIX__TriggerType swig_types[1496] +#define SWIGTYPE_p_FIX__URLLink swig_types[1497] +#define SWIGTYPE_p_FIX__UTCDATE swig_types[1498] +#define SWIGTYPE_p_FIX__UTCDATEONLY swig_types[1499] +#define SWIGTYPE_p_FIX__UTCTIMEONLY swig_types[1500] +#define SWIGTYPE_p_FIX__UTCTIMESTAMP swig_types[1501] +#define SWIGTYPE_p_FIX__UnderlyingAdjustedQuantity swig_types[1502] +#define SWIGTYPE_p_FIX__UnderlyingAllocationPercent swig_types[1503] +#define SWIGTYPE_p_FIX__UnderlyingAttachmentPoint swig_types[1504] +#define SWIGTYPE_p_FIX__UnderlyingCFICode swig_types[1505] +#define SWIGTYPE_p_FIX__UnderlyingCPProgram swig_types[1506] +#define SWIGTYPE_p_FIX__UnderlyingCPRegType swig_types[1507] +#define SWIGTYPE_p_FIX__UnderlyingCapValue swig_types[1508] +#define SWIGTYPE_p_FIX__UnderlyingCashAmount swig_types[1509] +#define SWIGTYPE_p_FIX__UnderlyingCashType swig_types[1510] +#define SWIGTYPE_p_FIX__UnderlyingCollectAmount swig_types[1511] +#define SWIGTYPE_p_FIX__UnderlyingContractMultiplier swig_types[1512] +#define SWIGTYPE_p_FIX__UnderlyingContractMultiplierUnit swig_types[1513] +#define SWIGTYPE_p_FIX__UnderlyingCountryOfIssue swig_types[1514] +#define SWIGTYPE_p_FIX__UnderlyingCouponPaymentDate swig_types[1515] +#define SWIGTYPE_p_FIX__UnderlyingCouponRate swig_types[1516] +#define SWIGTYPE_p_FIX__UnderlyingCreditRating swig_types[1517] +#define SWIGTYPE_p_FIX__UnderlyingCurrency swig_types[1518] +#define SWIGTYPE_p_FIX__UnderlyingCurrentValue swig_types[1519] +#define SWIGTYPE_p_FIX__UnderlyingDeliveryAmount swig_types[1520] +#define SWIGTYPE_p_FIX__UnderlyingDetachmentPoint swig_types[1521] +#define SWIGTYPE_p_FIX__UnderlyingDirtyPrice swig_types[1522] +#define SWIGTYPE_p_FIX__UnderlyingEndPrice swig_types[1523] +#define SWIGTYPE_p_FIX__UnderlyingEndValue swig_types[1524] +#define SWIGTYPE_p_FIX__UnderlyingExerciseStyle swig_types[1525] +#define SWIGTYPE_p_FIX__UnderlyingFXRate swig_types[1526] +#define SWIGTYPE_p_FIX__UnderlyingFXRateCalc swig_types[1527] +#define SWIGTYPE_p_FIX__UnderlyingFactor swig_types[1528] +#define SWIGTYPE_p_FIX__UnderlyingFlowScheduleType swig_types[1529] +#define SWIGTYPE_p_FIX__UnderlyingIDSource swig_types[1530] +#define SWIGTYPE_p_FIX__UnderlyingInstrRegistry swig_types[1531] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyID swig_types[1532] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyIDSource swig_types[1533] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartyRole swig_types[1534] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubID swig_types[1535] +#define SWIGTYPE_p_FIX__UnderlyingInstrumentPartySubIDType swig_types[1536] +#define SWIGTYPE_p_FIX__UnderlyingIssueDate swig_types[1537] +#define SWIGTYPE_p_FIX__UnderlyingIssuer swig_types[1538] +#define SWIGTYPE_p_FIX__UnderlyingLastPx swig_types[1539] +#define SWIGTYPE_p_FIX__UnderlyingLastQty swig_types[1540] +#define SWIGTYPE_p_FIX__UnderlyingLegCFICode swig_types[1541] +#define SWIGTYPE_p_FIX__UnderlyingLegMaturityDate swig_types[1542] +#define SWIGTYPE_p_FIX__UnderlyingLegMaturityMonthYear swig_types[1543] +#define SWIGTYPE_p_FIX__UnderlyingLegMaturityTime swig_types[1544] +#define SWIGTYPE_p_FIX__UnderlyingLegOptAttribute swig_types[1545] +#define SWIGTYPE_p_FIX__UnderlyingLegPutOrCall swig_types[1546] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltID swig_types[1547] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityAltIDSource swig_types[1548] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityDesc swig_types[1549] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityExchange swig_types[1550] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityID swig_types[1551] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityIDSource swig_types[1552] +#define SWIGTYPE_p_FIX__UnderlyingLegSecuritySubType swig_types[1553] +#define SWIGTYPE_p_FIX__UnderlyingLegSecurityType swig_types[1554] +#define SWIGTYPE_p_FIX__UnderlyingLegStrikePrice swig_types[1555] +#define SWIGTYPE_p_FIX__UnderlyingLegSymbol swig_types[1556] +#define SWIGTYPE_p_FIX__UnderlyingLegSymbolSfx swig_types[1557] +#define SWIGTYPE_p_FIX__UnderlyingLocaleOfIssue swig_types[1558] +#define SWIGTYPE_p_FIX__UnderlyingMaturityDate swig_types[1559] +#define SWIGTYPE_p_FIX__UnderlyingMaturityDay swig_types[1560] +#define SWIGTYPE_p_FIX__UnderlyingMaturityMonthYear swig_types[1561] +#define SWIGTYPE_p_FIX__UnderlyingMaturityTime swig_types[1562] +#define SWIGTYPE_p_FIX__UnderlyingNotionalPercentageOutstanding swig_types[1563] +#define SWIGTYPE_p_FIX__UnderlyingOptAttribute swig_types[1564] +#define SWIGTYPE_p_FIX__UnderlyingOriginalNotionalPercentageOutstanding swig_types[1565] +#define SWIGTYPE_p_FIX__UnderlyingPayAmount swig_types[1566] +#define SWIGTYPE_p_FIX__UnderlyingPriceDeterminationMethod swig_types[1567] +#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasure swig_types[1568] +#define SWIGTYPE_p_FIX__UnderlyingPriceUnitOfMeasureQty swig_types[1569] +#define SWIGTYPE_p_FIX__UnderlyingProduct swig_types[1570] +#define SWIGTYPE_p_FIX__UnderlyingPutOrCall swig_types[1571] +#define SWIGTYPE_p_FIX__UnderlyingPx swig_types[1572] +#define SWIGTYPE_p_FIX__UnderlyingQty swig_types[1573] +#define SWIGTYPE_p_FIX__UnderlyingRedemptionDate swig_types[1574] +#define SWIGTYPE_p_FIX__UnderlyingRepoCollateralSecurityType swig_types[1575] +#define SWIGTYPE_p_FIX__UnderlyingRepurchaseRate swig_types[1576] +#define SWIGTYPE_p_FIX__UnderlyingRepurchaseTerm swig_types[1577] +#define SWIGTYPE_p_FIX__UnderlyingRestructuringType swig_types[1578] +#define SWIGTYPE_p_FIX__UnderlyingSecurityAltID swig_types[1579] +#define SWIGTYPE_p_FIX__UnderlyingSecurityAltIDSource swig_types[1580] +#define SWIGTYPE_p_FIX__UnderlyingSecurityDesc swig_types[1581] +#define SWIGTYPE_p_FIX__UnderlyingSecurityExchange swig_types[1582] +#define SWIGTYPE_p_FIX__UnderlyingSecurityID swig_types[1583] +#define SWIGTYPE_p_FIX__UnderlyingSecurityIDSource swig_types[1584] +#define SWIGTYPE_p_FIX__UnderlyingSecuritySubType swig_types[1585] +#define SWIGTYPE_p_FIX__UnderlyingSecurityType swig_types[1586] +#define SWIGTYPE_p_FIX__UnderlyingSeniority swig_types[1587] +#define SWIGTYPE_p_FIX__UnderlyingSettlMethod swig_types[1588] +#define SWIGTYPE_p_FIX__UnderlyingSettlPrice swig_types[1589] +#define SWIGTYPE_p_FIX__UnderlyingSettlPriceType swig_types[1590] +#define SWIGTYPE_p_FIX__UnderlyingSettlementDate swig_types[1591] +#define SWIGTYPE_p_FIX__UnderlyingSettlementStatus swig_types[1592] +#define SWIGTYPE_p_FIX__UnderlyingSettlementType swig_types[1593] +#define SWIGTYPE_p_FIX__UnderlyingStartValue swig_types[1594] +#define SWIGTYPE_p_FIX__UnderlyingStateOrProvinceOfIssue swig_types[1595] +#define SWIGTYPE_p_FIX__UnderlyingStipType swig_types[1596] +#define SWIGTYPE_p_FIX__UnderlyingStipValue swig_types[1597] +#define SWIGTYPE_p_FIX__UnderlyingStrikeCurrency swig_types[1598] +#define SWIGTYPE_p_FIX__UnderlyingStrikePrice swig_types[1599] +#define SWIGTYPE_p_FIX__UnderlyingSymbol swig_types[1600] +#define SWIGTYPE_p_FIX__UnderlyingSymbolSfx swig_types[1601] +#define SWIGTYPE_p_FIX__UnderlyingTimeUnit swig_types[1602] +#define SWIGTYPE_p_FIX__UnderlyingTradingSessionID swig_types[1603] +#define SWIGTYPE_p_FIX__UnderlyingTradingSessionSubID swig_types[1604] +#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasure swig_types[1605] +#define SWIGTYPE_p_FIX__UnderlyingUnitOfMeasureQty swig_types[1606] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartyID swig_types[1607] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartyIDSource swig_types[1608] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartyRole swig_types[1609] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubID swig_types[1610] +#define SWIGTYPE_p_FIX__UndlyInstrumentPartySubIDType swig_types[1611] +#define SWIGTYPE_p_FIX__UnitOfMeasure swig_types[1612] +#define SWIGTYPE_p_FIX__UnitOfMeasureQty swig_types[1613] +#define SWIGTYPE_p_FIX__UnsolicitedIndicator swig_types[1614] +#define SWIGTYPE_p_FIX__UnsupportedMessageType swig_types[1615] +#define SWIGTYPE_p_FIX__UnsupportedVersion swig_types[1616] +#define SWIGTYPE_p_FIX__Urgency swig_types[1617] +#define SWIGTYPE_p_FIX__UserRequestID swig_types[1618] +#define SWIGTYPE_p_FIX__UserRequestType swig_types[1619] +#define SWIGTYPE_p_FIX__UserStatus swig_types[1620] +#define SWIGTYPE_p_FIX__UserStatusText swig_types[1621] +#define SWIGTYPE_p_FIX__Username swig_types[1622] +#define SWIGTYPE_p_FIX__UtcDateField swig_types[1623] +#define SWIGTYPE_p_FIX__UtcTimeOnlyField swig_types[1624] +#define SWIGTYPE_p_FIX__UtcTimeStampField swig_types[1625] +#define SWIGTYPE_p_FIX__ValidUntilTime swig_types[1626] +#define SWIGTYPE_p_FIX__ValuationMethod swig_types[1627] +#define SWIGTYPE_p_FIX__ValueOfFutures swig_types[1628] +#define SWIGTYPE_p_FIX__VenueType swig_types[1629] +#define SWIGTYPE_p_FIX__Volatility swig_types[1630] +#define SWIGTYPE_p_FIX__WaveNo swig_types[1631] +#define SWIGTYPE_p_FIX__WorkingIndicator swig_types[1632] +#define SWIGTYPE_p_FIX__WtAverageLiquidity swig_types[1633] +#define SWIGTYPE_p_FIX__XMLDATA swig_types[1634] +#define SWIGTYPE_p_FIX__XmlData swig_types[1635] +#define SWIGTYPE_p_FIX__XmlDataLen swig_types[1636] +#define SWIGTYPE_p_FIX__Yield swig_types[1637] +#define SWIGTYPE_p_FIX__YieldCalcDate swig_types[1638] +#define SWIGTYPE_p_FIX__YieldRedemptionDate swig_types[1639] +#define SWIGTYPE_p_FIX__YieldRedemptionPrice swig_types[1640] +#define SWIGTYPE_p_FIX__YieldRedemptionPriceType swig_types[1641] +#define SWIGTYPE_p_FIX__YieldType swig_types[1642] +#define SWIGTYPE_p_FieldPresenceMap swig_types[1643] #define SWIGTYPE_p_FieldToGroup swig_types[1644] #define SWIGTYPE_p_FieldToName swig_types[1645] #define SWIGTYPE_p_FieldToValue swig_types[1646] #define SWIGTYPE_p_FieldTypeDataBits swig_types[1647] -#define SWIGTYPE_p_FieldTypeHeaderBits swig_types[1648] -#define SWIGTYPE_p_FieldTypeTrailerBits swig_types[1649] -#define SWIGTYPE_p_FieldTypes swig_types[1650] -#define SWIGTYPE_p_Fields swig_types[1651] -#define SWIGTYPE_p_Group swig_types[1652] -#define SWIGTYPE_p_IntArray swig_types[1653] -#define SWIGTYPE_p_IntField swig_types[1654] -#define SWIGTYPE_p_Log swig_types[1655] -#define SWIGTYPE_p_LogFactory swig_types[1656] -#define SWIGTYPE_p_MessageStore swig_types[1657] -#define SWIGTYPE_p_MessageStoreFactory swig_types[1658] -#define SWIGTYPE_p_MsgFields swig_types[1659] -#define SWIGTYPE_p_MsgType swig_types[1660] -#define SWIGTYPE_p_MsgTypeToField swig_types[1661] -#define SWIGTYPE_p_MsgTypes swig_types[1662] -#define SWIGTYPE_p_Mutex swig_types[1663] -#define SWIGTYPE_p_NameToField swig_types[1664] -#define SWIGTYPE_p_NonBodyFields swig_types[1665] -#define SWIGTYPE_p_OrderedFields swig_types[1666] -#define SWIGTYPE_p_OrderedFieldsArray swig_types[1667] -#define SWIGTYPE_p_Pack swig_types[1668] -#define SWIGTYPE_p_Responder swig_types[1669] -#define SWIGTYPE_p_SessionID swig_types[1670] -#define SWIGTYPE_p_Sg__sg_buf_ptr swig_types[1671] -#define SWIGTYPE_p_Sg__sg_buf_t swig_types[1672] -#define SWIGTYPE_p_StringField swig_types[1673] -#define SWIGTYPE_p_String__value_type swig_types[1674] -#define SWIGTYPE_p_TimeRange swig_types[1675] -#define SWIGTYPE_p_UtcDate swig_types[1676] -#define SWIGTYPE_p_UtcDateField swig_types[1677] -#define SWIGTYPE_p_UtcTimeOnly swig_types[1678] -#define SWIGTYPE_p_UtcTimeStamp swig_types[1679] -#define SWIGTYPE_p_ValueToName swig_types[1680] -#define SWIGTYPE_p_Values swig_types[1681] -#define SWIGTYPE_p_allocator_type swig_types[1682] -#define SWIGTYPE_p_bool swig_types[1683] -#define SWIGTYPE_p_char swig_types[1684] -#define SWIGTYPE_p_const_iterator swig_types[1685] -#define SWIGTYPE_p_data_type swig_types[1686] -#define SWIGTYPE_p_g_const_iterator swig_types[1687] -#define SWIGTYPE_p_g_item_const_iterator swig_types[1688] -#define SWIGTYPE_p_g_item_iterator swig_types[1689] -#define SWIGTYPE_p_g_iterator swig_types[1690] -#define SWIGTYPE_p_int swig_types[1691] -#define SWIGTYPE_p_iterator swig_types[1692] -#define SWIGTYPE_p_message_order swig_types[1693] -#define SWIGTYPE_p_p_FIX__DataDictionary swig_types[1694] -#define SWIGTYPE_p_size_type swig_types[1695] -#define SWIGTYPE_p_std__istream swig_types[1696] -#define SWIGTYPE_p_std__ostream swig_types[1697] -#define SWIGTYPE_p_std__setT_FIX__SessionID_t swig_types[1698] -#define SWIGTYPE_p_std__string swig_types[1699] -#define SWIGTYPE_p_std__string__size_type swig_types[1700] -#define SWIGTYPE_p_std__vectorT_std__string_t swig_types[1701] -#define SWIGTYPE_p_string_type swig_types[1702] -#define SWIGTYPE_p_tag_type swig_types[1703] -static swig_type_info *swig_types[1705]; -static swig_module_info swig_module = {swig_types, 1704, 0, 0, 0, 0}; +#define SWIGTYPE_p_FieldTypeGroupBits swig_types[1648] +#define SWIGTYPE_p_FieldTypeHeaderBits swig_types[1649] +#define SWIGTYPE_p_FieldTypeTrailerBits swig_types[1650] +#define SWIGTYPE_p_FieldTypes swig_types[1651] +#define SWIGTYPE_p_Fields swig_types[1652] +#define SWIGTYPE_p_Group swig_types[1653] +#define SWIGTYPE_p_IntArray swig_types[1654] +#define SWIGTYPE_p_IntField swig_types[1655] +#define SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t swig_types[1656] +#define SWIGTYPE_p_Log swig_types[1657] +#define SWIGTYPE_p_LogFactory swig_types[1658] +#define SWIGTYPE_p_MessageStore swig_types[1659] +#define SWIGTYPE_p_MessageStoreFactory swig_types[1660] +#define SWIGTYPE_p_MsgFields swig_types[1661] +#define SWIGTYPE_p_MsgType swig_types[1662] +#define SWIGTYPE_p_MsgTypeToField swig_types[1663] +#define SWIGTYPE_p_MsgTypes swig_types[1664] +#define SWIGTYPE_p_Mutex swig_types[1665] +#define SWIGTYPE_p_NameToField swig_types[1666] +#define SWIGTYPE_p_NonBodyFields swig_types[1667] +#define SWIGTYPE_p_OrderedFields swig_types[1668] +#define SWIGTYPE_p_OrderedFieldsArray swig_types[1669] +#define SWIGTYPE_p_Pack swig_types[1670] +#define SWIGTYPE_p_Responder swig_types[1671] +#define SWIGTYPE_p_SessionID swig_types[1672] +#define SWIGTYPE_p_Sg__sg_buf_ptr swig_types[1673] +#define SWIGTYPE_p_Sg__sg_buf_t swig_types[1674] +#define SWIGTYPE_p_StringField swig_types[1675] +#define SWIGTYPE_p_String__value_type swig_types[1676] +#define SWIGTYPE_p_TimeRange swig_types[1677] +#define SWIGTYPE_p_UtcDate swig_types[1678] +#define SWIGTYPE_p_UtcDateField swig_types[1679] +#define SWIGTYPE_p_UtcTimeOnly swig_types[1680] +#define SWIGTYPE_p_UtcTimeStamp swig_types[1681] +#define SWIGTYPE_p_ValueToName swig_types[1682] +#define SWIGTYPE_p_Values swig_types[1683] +#define SWIGTYPE_p_allocator_type swig_types[1684] +#define SWIGTYPE_p_bool swig_types[1685] +#define SWIGTYPE_p_char swig_types[1686] +#define SWIGTYPE_p_const_iterator swig_types[1687] +#define SWIGTYPE_p_data_type swig_types[1688] +#define SWIGTYPE_p_field_iterator swig_types[1689] +#define SWIGTYPE_p_g_const_iterator swig_types[1690] +#define SWIGTYPE_p_g_item_const_iterator swig_types[1691] +#define SWIGTYPE_p_g_item_iterator swig_types[1692] +#define SWIGTYPE_p_g_iterator swig_types[1693] +#define SWIGTYPE_p_int swig_types[1694] +#define SWIGTYPE_p_iterator swig_types[1695] +#define SWIGTYPE_p_message_order swig_types[1696] +#define SWIGTYPE_p_p_FIX__DataDictionary swig_types[1697] +#define SWIGTYPE_p_size_type swig_types[1698] +#define SWIGTYPE_p_std__istream swig_types[1699] +#define SWIGTYPE_p_std__ostream swig_types[1700] +#define SWIGTYPE_p_std__setT_FIX__SessionID_t swig_types[1701] +#define SWIGTYPE_p_std__string swig_types[1702] +#define SWIGTYPE_p_std__string__size_type swig_types[1703] +#define SWIGTYPE_p_std__vectorT_std__string_t swig_types[1704] +#define SWIGTYPE_p_string_type swig_types[1705] +#define SWIGTYPE_p_tag_type swig_types[1706] +static swig_type_info *swig_types[1708]; +static swig_module_info swig_module = {swig_types, 1707, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) @@ -10003,9 +10006,9 @@ SWIGINTERN VALUE _wrap_new_FieldBase(int nargs, VALUE *args, VALUE self) { fail: Ruby_Format_OverloadedError( argc, 2, "FieldBase.new", - " FieldBase.new(int field)\n" + " FieldBase.new(int tag)\n" " FieldBase.new()\n" - " FieldBase.new(int field, std::string const &string)\n"); + " FieldBase.new(int tag, std::string const &string)\n"); return Qnil; } @@ -10016,6 +10019,35 @@ free_FIX_FieldBase(FIX::FieldBase *arg1) { delete arg1; } +SWIGINTERN VALUE +_wrap_FieldBase_setTag(int argc, VALUE *argv, VALUE self) { + FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + + if ((argc < 1) || (argc > 1)) { + rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail; + } + res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_FIX__FieldBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldBase *","setTag", 1, self )); + } + arg1 = reinterpret_cast< FIX::FieldBase * >(argp1); + ecode2 = SWIG_AsVal_int(argv[0], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "int","setTag", 2, argv[0] )); + } + arg2 = static_cast< int >(val2); + (arg1)->setTag(arg2); + return Qnil; +fail: + return Qnil; +} + + SWIGINTERN VALUE _wrap_FieldBase_setField(int argc, VALUE *argv, VALUE self) { FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; @@ -10089,6 +10121,30 @@ _wrap_FieldBase_setString(int argc, VALUE *argv, VALUE self) { } +SWIGINTERN VALUE +_wrap_FieldBase_getTag(int argc, VALUE *argv, VALUE self) { + FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int result; + VALUE vresult = Qnil; + + if ((argc < 0) || (argc > 0)) { + rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail; + } + res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_FIX__FieldBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldBase const *","getTag", 1, self )); + } + arg1 = reinterpret_cast< FIX::FieldBase * >(argp1); + result = (int)((FIX::FieldBase const *)arg1)->getTag(); + vresult = SWIG_From_int(static_cast< int >(result)); + return vresult; +fail: + return Qnil; +} + + SWIGINTERN VALUE _wrap_FieldBase_getField(int argc, VALUE *argv, VALUE self) { FIX::FieldBase *arg1 = (FIX::FieldBase *) 0 ; @@ -14526,6 +14582,30 @@ free_FIX_CheckSumField(FIX::CheckSumField *arg1) { static swig_class SwigClassFieldMap; +SWIGINTERN VALUE +_wrap_FieldMap_get_allocator(int argc, VALUE *argv, VALUE self) { + FIX::FieldMap *arg1 = (FIX::FieldMap *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + FIX::FieldMap::allocator_type result; + VALUE vresult = Qnil; + + if ((argc < 0) || (argc > 0)) { + rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail; + } + res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_FIX__FieldMap, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap *","get_allocator", 1, self )); + } + arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); + result = (arg1)->get_allocator(); + vresult = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, SWIG_POINTER_OWN | 0 ); + return vresult; +fail: + return Qnil; +} + + SWIGINTERN VALUE _wrap_new_FieldMap__SWIG_0(int argc, VALUE *argv, VALUE self) { message_order *arg1 = 0 ; @@ -14571,35 +14651,21 @@ _wrap_new_FieldMap__SWIG_1(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE _wrap_new_FieldMap__SWIG_2(int argc, VALUE *argv, VALUE self) { - FIX::FieldMap::allocator_type *arg1 = 0 ; - message_order *arg2 = 0 ; - void *argp1 ; + int *arg1 ; + void *argp1 = 0 ; int res1 = 0 ; - void *argp2 ; - int res2 = 0 ; const char *classname SWIGUNUSED = "Quickfix::FieldMap"; FIX::FieldMap *result = 0 ; - if ((argc < 2) || (argc > 2)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc); SWIG_fail; + if ((argc < 1) || (argc > 1)) { + rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail; } - res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 ); + res1 = SWIG_ConvertPtr(argv[0], &argp1,SWIGTYPE_p_int, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0] )); - } - if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0])); - } - arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); - res2 = SWIG_ConvertPtr(argv[1], &argp2, SWIGTYPE_p_message_order, 0 ); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "message_order const &","FieldMap", 2, argv[1] )); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "message_order const &","FieldMap", 2, argv[1])); - } - arg2 = reinterpret_cast< message_order * >(argp2); - result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1,(message_order const &)*arg2); + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "int const []","FieldMap", 1, argv[0] )); + } + arg1 = reinterpret_cast< int * >(argp1); + result = (FIX::FieldMap *)new FIX::FieldMap((int const (*))arg1); DATA_PTR(self) = result; return self; fail: @@ -14609,7 +14675,7 @@ _wrap_new_FieldMap__SWIG_2(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE _wrap_new_FieldMap__SWIG_3(int argc, VALUE *argv, VALUE self) { - FIX::FieldMap::allocator_type *arg1 = 0 ; + FIX::FieldMap *arg1 = 0 ; void *argp1 ; int res1 = 0 ; const char *classname SWIGUNUSED = "Quickfix::FieldMap"; @@ -14618,15 +14684,15 @@ _wrap_new_FieldMap__SWIG_3(int argc, VALUE *argv, VALUE self) { if ((argc < 1) || (argc > 1)) { rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail; } - res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 ); + res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_FIX__FieldMap, 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0] )); + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap const &","FieldMap", 1, argv[0] )); } if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0])); + SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::FieldMap const &","FieldMap", 1, argv[0])); } - arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); - result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1); + arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); + result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap const &)*arg1); DATA_PTR(self) = result; return self; fail: @@ -14636,21 +14702,35 @@ _wrap_new_FieldMap__SWIG_3(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE _wrap_new_FieldMap__SWIG_4(int argc, VALUE *argv, VALUE self) { - int *arg1 ; - void *argp1 = 0 ; + FIX::FieldMap::allocator_type *arg1 = 0 ; + message_order *arg2 = 0 ; + void *argp1 ; int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; const char *classname SWIGUNUSED = "Quickfix::FieldMap"; FIX::FieldMap *result = 0 ; - if ((argc < 1) || (argc > 1)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail; + if ((argc < 2) || (argc > 2)) { + rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc); SWIG_fail; } - res1 = SWIG_ConvertPtr(argv[0], &argp1,SWIGTYPE_p_int, 0 | 0 ); + res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "int const []","FieldMap", 1, argv[0] )); - } - arg1 = reinterpret_cast< int * >(argp1); - result = (FIX::FieldMap *)new FIX::FieldMap((int const (*))arg1); + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0] )); + } + if (!argp1) { + SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0])); + } + arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); + res2 = SWIG_ConvertPtr(argv[1], &argp2, SWIGTYPE_p_message_order, 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "message_order const &","FieldMap", 2, argv[1] )); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "message_order const &","FieldMap", 2, argv[1])); + } + arg2 = reinterpret_cast< message_order * >(argp2); + result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1,(message_order const &)*arg2); DATA_PTR(self) = result; return self; fail: @@ -14660,7 +14740,7 @@ _wrap_new_FieldMap__SWIG_4(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE _wrap_new_FieldMap__SWIG_5(int argc, VALUE *argv, VALUE self) { - FIX::FieldMap *arg1 = 0 ; + FIX::FieldMap::allocator_type *arg1 = 0 ; void *argp1 ; int res1 = 0 ; const char *classname SWIGUNUSED = "Quickfix::FieldMap"; @@ -14669,15 +14749,15 @@ _wrap_new_FieldMap__SWIG_5(int argc, VALUE *argv, VALUE self) { if ((argc < 1) || (argc > 1)) { rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail; } - res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_FIX__FieldMap, 0 ); + res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap const &","FieldMap", 1, argv[0] )); + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0] )); } if (!argp1) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::FieldMap const &","FieldMap", 1, argv[0])); + SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0])); } - arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); - result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap const &)*arg1); + arg1 = reinterpret_cast< FIX::FieldMap::allocator_type * >(argp1); + result = (FIX::FieldMap *)new FIX::FieldMap((FIX::FieldMap::allocator_type const &)*arg1); DATA_PTR(self) = result; return self; fail: @@ -14716,7 +14796,7 @@ _wrap_new_FieldMap__SWIG_6(int argc, VALUE *argv, VALUE self) { if ((argc < 2) || (argc > 2)) { rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc); SWIG_fail; } - res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 ); + res1 = SWIG_ConvertPtr(argv[0], &argp1, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap::allocator_type const &","FieldMap", 1, argv[0] )); } @@ -14765,25 +14845,25 @@ SWIGINTERN VALUE _wrap_new_FieldMap(int nargs, VALUE *args, VALUE self) { if (argc == 1) { int _v; void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_int, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_FieldMap__SWIG_3(nargs, args, self); + return _wrap_new_FieldMap__SWIG_2(nargs, args, self); } } if (argc == 1) { int _v; void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_int, 0); + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__FieldMap, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_FieldMap__SWIG_4(nargs, args, self); + return _wrap_new_FieldMap__SWIG_3(nargs, args, self); } } if (argc == 1) { int _v; void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__FieldMap, 0); + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_FieldMap__SWIG_5(nargs, args, self); @@ -14792,21 +14872,21 @@ SWIGINTERN VALUE _wrap_new_FieldMap(int nargs, VALUE *args, VALUE self) { if (argc == 2) { int _v; void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_message_order, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_FieldMap__SWIG_2(nargs, args, self); + return _wrap_new_FieldMap__SWIG_4(nargs, args, self); } } } if (argc == 2) { int _v; void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; @@ -14822,11 +14902,11 @@ SWIGINTERN VALUE _wrap_new_FieldMap(int nargs, VALUE *args, VALUE self) { Ruby_Format_OverloadedError( argc, 2, "FieldMap.new", " FieldMap.new(message_order const &order)\n" " FieldMap.new()\n" + " FieldMap.new(int const order[])\n" + " FieldMap.new(FIX::FieldMap const &src)\n" " FieldMap.new(FIX::FieldMap::allocator_type const &a, message_order const &order)\n" " FieldMap.new(FIX::FieldMap::allocator_type const &a)\n" - " FieldMap.new(int const order[])\n" - " FieldMap.new(FIX::FieldMap const ©)\n" - " FieldMap.new(FIX::FieldMap::allocator_type const &a, FIX::FieldMap const ©)\n"); + " FieldMap.new(FIX::FieldMap::allocator_type const &a, FIX::FieldMap const &src)\n"); return Qnil; } @@ -14865,7 +14945,7 @@ _wrap_FieldMap_addField__SWIG_2(int argc, VALUE *argv, VALUE self) { } arg2 = reinterpret_cast< FIX::FieldBase * >(argp2); result = (arg1)->addField((FIX::FieldBase const &)*arg2); - vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return vresult; fail: return Qnil; @@ -14895,7 +14975,7 @@ _wrap_FieldMap_addField__SWIG_5(int argc, VALUE *argv, VALUE self) { } arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); { - res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, 0 ); + res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_field_iterator, 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "FIX::FieldMap::iterator","addField", 2, argv[0] )); } @@ -14914,7 +14994,7 @@ _wrap_FieldMap_addField__SWIG_5(int argc, VALUE *argv, VALUE self) { } arg3 = reinterpret_cast< FIX::FieldBase * >(argp3); result = (arg1)->addField(arg2,(FIX::FieldBase const &)*arg3); - vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return vresult; fail: return Qnil; @@ -14953,7 +15033,7 @@ SWIGINTERN VALUE _wrap_FieldMap_addField(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; - int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, 0); + int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_field_iterator, 0); _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; @@ -16970,7 +17050,7 @@ _wrap_FieldMap_begin(int argc, VALUE *argv, VALUE self) { } arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); result = ((FIX::FieldMap const *)arg1)->begin(); - vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return vresult; fail: return Qnil; @@ -16994,7 +17074,7 @@ _wrap_FieldMap_end(int argc, VALUE *argv, VALUE self) { } arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); result = ((FIX::FieldMap const *)arg1)->end(); - vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__const_iterator, SWIG_POINTER_OWN | 0 ); + vresult = SWIG_NewPointerObj((new FIX::FieldMap::iterator(static_cast< const FIX::FieldMap::iterator& >(result))), SWIGTYPE_p_field_iterator, SWIG_POINTER_OWN | 0 ); return vresult; fail: return Qnil; @@ -17049,103 +17129,6 @@ _wrap_FieldMap_g_end(int argc, VALUE *argv, VALUE self) { } -SWIGINTERN VALUE -_wrap_FieldMap_get_allocator(int argc, VALUE *argv, VALUE self) { - FIX::FieldMap *arg1 = (FIX::FieldMap *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - FIX::FieldMap::allocator_type result; - VALUE vresult = Qnil; - - if ((argc < 0) || (argc > 0)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail; - } - res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_FIX__FieldMap, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::FieldMap *","get_allocator", 1, self )); - } - arg1 = reinterpret_cast< FIX::FieldMap * >(argp1); - result = (arg1)->get_allocator(); - vresult = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, SWIG_POINTER_OWN | 0 ); - return vresult; -fail: - return Qnil; -} - - -SWIGINTERN VALUE -_wrap_FieldMap_create_allocator__SWIG_0(int argc, VALUE *argv, VALUE self) { - std::size_t arg1 ; - size_t val1 ; - int ecode1 = 0 ; - FIX::FieldMap::allocator_type result; - VALUE vresult = Qnil; - - if ((argc < 1) || (argc > 1)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail; - } - ecode1 = SWIG_AsVal_size_t(argv[0], &val1); - if (!SWIG_IsOK(ecode1)) { - SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "std::size_t","FIX::FieldMap::create_allocator", 1, argv[0] )); - } - arg1 = static_cast< std::size_t >(val1); - result = FIX::FieldMap::create_allocator(arg1); - vresult = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, SWIG_POINTER_OWN | 0 ); - return vresult; -fail: - return Qnil; -} - - -SWIGINTERN VALUE -_wrap_FieldMap_create_allocator__SWIG_1(int argc, VALUE *argv, VALUE self) { - FIX::FieldMap::allocator_type result; - VALUE vresult = Qnil; - - if ((argc < 0) || (argc > 0)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail; - } - result = FIX::FieldMap::create_allocator(); - vresult = SWIG_NewPointerObj((new FIX::FieldMap::allocator_type(static_cast< const FIX::FieldMap::allocator_type& >(result))), SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, SWIG_POINTER_OWN | 0 ); - return vresult; -fail: - return Qnil; -} - - -SWIGINTERN VALUE _wrap_FieldMap_create_allocator(int nargs, VALUE *args, VALUE self) { - int argc; - VALUE argv[1]; - int ii; - - argc = nargs; - if (argc > 1) SWIG_fail; - for (ii = 0; (ii < argc); ++ii) { - argv[ii] = args[ii]; - } - if (argc == 0) { - return _wrap_FieldMap_create_allocator__SWIG_1(nargs, args, self); - } - if (argc == 1) { - int _v; - { - int res = SWIG_AsVal_size_t(argv[0], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - return _wrap_FieldMap_create_allocator__SWIG_0(nargs, args, self); - } - } - -fail: - Ruby_Format_OverloadedError( argc, 1, "FieldMap.create_allocator", - " FIX::FieldMap::allocator_type FieldMap.create_allocator(std::size_t n)\n" - " FIX::FieldMap::allocator_type FieldMap.create_allocator()\n"); - - return Qnil; -} - - SWIGINTERN VALUE _wrap_headerOrder_get(VALUE self) { VALUE _val; @@ -17158,7 +17141,7 @@ _wrap_headerOrder_get(VALUE self) { static swig_class SwigClassMessage; SWIGINTERN VALUE -_wrap_new_Message__SWIG_1(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_0(int argc, VALUE *argv, VALUE self) { const char *classname SWIGUNUSED = "Quickfix::Message"; FIX::Message *result = 0 ; @@ -17174,7 +17157,7 @@ _wrap_new_Message__SWIG_1(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_2(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_1(int argc, VALUE *argv, VALUE self) { FIX::Message::SerializationHint arg1 ; int arg2 ; int val1 ; @@ -17206,7 +17189,7 @@ _wrap_new_Message__SWIG_2(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_3(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_2(int argc, VALUE *argv, VALUE self) { FIX::Message::SerializationHint arg1 ; int val1 ; int ecode1 = 0 ; @@ -17230,7 +17213,7 @@ _wrap_new_Message__SWIG_3(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_4(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_3(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; bool arg2 ; int res1 = SWIG_OLDOBJ ; @@ -17282,7 +17265,7 @@ _wrap_new_Message__SWIG_4(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_5(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_4(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; int res1 = SWIG_OLDOBJ ; const char *classname SWIGUNUSED = "Quickfix::Message"; @@ -17326,7 +17309,7 @@ _wrap_new_Message__SWIG_5(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_6(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_5(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; bool arg3 ; @@ -17389,7 +17372,7 @@ _wrap_new_Message__SWIG_6(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_7(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_6(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; int res1 = SWIG_OLDOBJ ; @@ -17444,7 +17427,7 @@ _wrap_new_Message__SWIG_7(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_8(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_7(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; FIX::DataDictionary *arg3 = 0 ; @@ -17518,7 +17501,7 @@ _wrap_new_Message__SWIG_8(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_9(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_8(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; FIX::DataDictionary *arg3 = 0 ; @@ -17584,7 +17567,7 @@ _wrap_new_Message__SWIG_9(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_10(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_9(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; FIX::DataDictionary *arg3 = 0 ; @@ -17632,7 +17615,7 @@ _wrap_new_Message__SWIG_10(int argc, VALUE *argv, VALUE self) { SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary const &","Message", 3, argv[2])); } arg3 = reinterpret_cast< FIX::DataDictionary * >(argp3); - res4 = SWIG_ConvertPtr(argv[3], &argp4, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 ); + res4 = SWIG_ConvertPtr(argv[3], &argp4, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 ); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), Ruby_Format_TypeError( "", "FIX::FieldMap::allocator_type &","Message", 4, argv[3] )); } @@ -17669,7 +17652,7 @@ _wrap_new_Message__SWIG_10(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_11(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_10(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; FIX::DataDictionary *arg2 = 0 ; FIX::DataDictionary *arg3 = 0 ; @@ -17714,7 +17697,7 @@ _wrap_new_Message__SWIG_11(int argc, VALUE *argv, VALUE self) { SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary const &","Message", 3, argv[2])); } arg3 = reinterpret_cast< FIX::DataDictionary * >(argp3); - res4 = SWIG_ConvertPtr(argv[3], &argp4, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0 ); + res4 = SWIG_ConvertPtr(argv[3], &argp4, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0 ); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), Ruby_Format_TypeError( "", "FIX::FieldMap::allocator_type &","Message", 4, argv[3] )); } @@ -17763,7 +17746,7 @@ _wrap_Message_allocate(VALUE self) { SWIGINTERN VALUE -_wrap_new_Message__SWIG_12(int argc, VALUE *argv, VALUE self) { +_wrap_new_Message__SWIG_11(int argc, VALUE *argv, VALUE self) { FIX::Message *arg1 = 0 ; void *argp1 ; int res1 = 0 ; @@ -17800,7 +17783,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { argv[ii] = args[ii]; } if (argc == 0) { - return _wrap_new_Message__SWIG_1(nargs, args, self); + return _wrap_new_Message__SWIG_0(nargs, args, self); } if (argc == 1) { int _v; @@ -17808,7 +17791,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__Message, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_12(nargs, args, self); + return _wrap_new_Message__SWIG_11(nargs, args, self); } } if (argc == 1) { @@ -17818,7 +17801,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_3(nargs, args, self); + return _wrap_new_Message__SWIG_2(nargs, args, self); } } if (argc == 1) { @@ -17826,7 +17809,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0)); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_5(nargs, args, self); + return _wrap_new_Message__SWIG_4(nargs, args, self); } } if (argc == 2) { @@ -17841,7 +17824,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_2(nargs, args, self); + return _wrap_new_Message__SWIG_1(nargs, args, self); } } } @@ -17854,7 +17837,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_7(nargs, args, self); + return _wrap_new_Message__SWIG_6(nargs, args, self); } } } @@ -17868,7 +17851,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_4(nargs, args, self); + return _wrap_new_Message__SWIG_3(nargs, args, self); } } } @@ -17885,7 +17868,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { int res = SWIG_ConvertPtr(argv[2], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_9(nargs, args, self); + return _wrap_new_Message__SWIG_8(nargs, args, self); } } } @@ -17904,7 +17887,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_6(nargs, args, self); + return _wrap_new_Message__SWIG_5(nargs, args, self); } } } @@ -17923,10 +17906,10 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { - return _wrap_new_Message__SWIG_11(nargs, args, self); + return _wrap_new_Message__SWIG_10(nargs, args, self); } } } @@ -17950,7 +17933,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_8(nargs, args, self); + return _wrap_new_Message__SWIG_7(nargs, args, self); } } } @@ -17970,7 +17953,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); if (_v) { void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_FIX__FieldMap__Fields__allocator_type, 0); + int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_ItemAllocatorT_stored_type_NodeList_t, 0); _v = SWIG_CheckState(res); if (_v) { { @@ -17978,7 +17961,7 @@ SWIGINTERN VALUE _wrap_new_Message(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_new_Message__SWIG_10(nargs, args, self); + return _wrap_new_Message__SWIG_9(nargs, args, self); } } } @@ -20985,6 +20968,47 @@ _wrap___lshift____SWIG_1(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE _wrap_identifyType__SWIG_0(int argc, VALUE *argv, VALUE self) { + char *arg1 = (char *) 0 ; + std::size_t arg2 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + MsgType result; + VALUE vresult = Qnil; + + if ((argc < 2) || (argc > 2)) { + rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc); SWIG_fail; + } + res1 = SWIG_AsCharPtrAndSize(argv[0], &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "char const *","FIX::identifyType", 1, argv[0] )); + } + arg1 = reinterpret_cast< char * >(buf1); + ecode2 = SWIG_AsVal_size_t(argv[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "std::size_t","FIX::identifyType", 2, argv[1] )); + } + arg2 = static_cast< std::size_t >(val2); + try { + result = FIX::identifyType((char const *)arg1,arg2); + } + catch(FIX::MessageParseError &_e) { + rb_exc_raise(SWIG_Ruby_ExceptionType(SWIGTYPE_p_FIX__MessageParseError, SWIG_NewPointerObj((new FIX::MessageParseError(static_cast< const FIX::MessageParseError& >(_e))),SWIGTYPE_p_FIX__MessageParseError,SWIG_POINTER_OWN))); SWIG_fail; + } + + vresult = SWIG_NewPointerObj((new MsgType(static_cast< const MsgType& >(result))), SWIGTYPE_p_MsgType, SWIG_POINTER_OWN | 0 ); + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + return vresult; +fail: + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + return Qnil; +} + + +SWIGINTERN VALUE +_wrap_identifyType__SWIG_1(int argc, VALUE *argv, VALUE self) { std::string *arg1 = 0 ; int res1 = SWIG_OLDOBJ ; MsgType result; @@ -21027,47 +21051,6 @@ _wrap_identifyType__SWIG_0(int argc, VALUE *argv, VALUE self) { } -SWIGINTERN VALUE -_wrap_identifyType__SWIG_1(int argc, VALUE *argv, VALUE self) { - char *arg1 = (char *) 0 ; - std::size_t arg2 ; - int res1 ; - char *buf1 = 0 ; - int alloc1 = 0 ; - size_t val2 ; - int ecode2 = 0 ; - MsgType result; - VALUE vresult = Qnil; - - if ((argc < 2) || (argc > 2)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc); SWIG_fail; - } - res1 = SWIG_AsCharPtrAndSize(argv[0], &buf1, NULL, &alloc1); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "char const *","FIX::identifyType", 1, argv[0] )); - } - arg1 = reinterpret_cast< char * >(buf1); - ecode2 = SWIG_AsVal_size_t(argv[1], &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "std::size_t","FIX::identifyType", 2, argv[1] )); - } - arg2 = static_cast< std::size_t >(val2); - try { - result = FIX::identifyType((char const *)arg1,arg2); - } - catch(FIX::MessageParseError &_e) { - rb_exc_raise(SWIG_Ruby_ExceptionType(SWIGTYPE_p_FIX__MessageParseError, SWIG_NewPointerObj((new FIX::MessageParseError(static_cast< const FIX::MessageParseError& >(_e))),SWIGTYPE_p_FIX__MessageParseError,SWIG_POINTER_OWN))); SWIG_fail; - } - - vresult = SWIG_NewPointerObj((new MsgType(static_cast< const MsgType& >(result))), SWIGTYPE_p_MsgType, SWIG_POINTER_OWN | 0 ); - if (alloc1 == SWIG_NEWOBJ) delete[] buf1; - return vresult; -fail: - if (alloc1 == SWIG_NEWOBJ) delete[] buf1; - return Qnil; -} - - SWIGINTERN VALUE _wrap_identifyType(int nargs, VALUE *args, VALUE self) { int argc; VALUE argv[2]; @@ -21083,7 +21066,7 @@ SWIGINTERN VALUE _wrap_identifyType(int nargs, VALUE *args, VALUE self) { int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0)); _v = SWIG_CheckState(res); if (_v) { - return _wrap_identifyType__SWIG_0(nargs, args, self); + return _wrap_identifyType__SWIG_1(nargs, args, self); } } if (argc == 2) { @@ -21096,15 +21079,15 @@ SWIGINTERN VALUE _wrap_identifyType(int nargs, VALUE *args, VALUE self) { _v = SWIG_CheckState(res); } if (_v) { - return _wrap_identifyType__SWIG_1(nargs, args, self); + return _wrap_identifyType__SWIG_0(nargs, args, self); } } } fail: Ruby_Format_OverloadedError( argc, 2, "identifyType", - " MsgType identifyType(std::string const &message)\n" - " MsgType identifyType(char const *message, std::size_t length)\n"); + " MsgType identifyType(char const *message, std::size_t length)\n" + " MsgType identifyType(std::string const &message)\n"); return Qnil; } @@ -270227,6 +270210,46 @@ free_FIX_SocketAcceptor(FIX::SocketAcceptor *arg1) { delete arg1; } +static swig_class SwigClassDataDictionaryBase; + +#ifdef HAVE_RB_DEFINE_ALLOC_FUNC +SWIGINTERN VALUE +_wrap_DataDictionaryBase_allocate(VALUE self) { +#else + SWIGINTERN VALUE + _wrap_DataDictionaryBase_allocate(int argc, VALUE *argv, VALUE self) { +#endif + + + VALUE vresult = SWIG_NewClassInstance(self, SWIGTYPE_p_FIX__DataDictionaryBase); +#ifndef HAVE_RB_DEFINE_ALLOC_FUNC + rb_obj_call_init(vresult, argc, argv); +#endif + return vresult; + } + + +SWIGINTERN VALUE +_wrap_new_DataDictionaryBase(int argc, VALUE *argv, VALUE self) { + const char *classname SWIGUNUSED = "Quickfix::DataDictionaryBase"; + FIX::DataDictionaryBase *result = 0 ; + + if ((argc < 0) || (argc > 0)) { + rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail; + } + result = (FIX::DataDictionaryBase *)new FIX::DataDictionaryBase(); + DATA_PTR(self) = result; + return self; +fail: + return Qnil; +} + + +SWIGINTERN void +free_FIX_DataDictionaryBase(FIX::DataDictionaryBase *arg1) { + delete arg1; +} + static swig_class SwigClassDataDictionary; SWIGINTERN VALUE @@ -271600,20 +271623,20 @@ _wrap_DataDictionary_isFieldValue(int argc, VALUE *argv, VALUE self) { SWIGINTERN VALUE _wrap_DataDictionary_addGroup(int argc, VALUE *argv, VALUE self) { FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - std::string *arg2 = 0 ; + FIX::DataDictionary::FieldPresenceMap::key_type *arg2 = 0 ; int arg3 ; int arg4 ; FIX::DataDictionary *arg5 = 0 ; void *argp1 = 0 ; int res1 = 0 ; - int res2 = SWIG_OLDOBJ ; + void *argp2 ; + int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; void *argp5 ; int res5 = 0 ; - VALUE vresult = Qnil; if ((argc < 4) || (argc > 4)) { rb_raise(rb_eArgError, "wrong # of arguments(%d for 4)",argc); SWIG_fail; @@ -271623,17 +271646,14 @@ _wrap_DataDictionary_addGroup(int argc, VALUE *argv, VALUE self) { SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::DataDictionary *","addGroup", 1, self )); } arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - { - std::string *ptr = (std::string *)0; - res2 = SWIG_AsPtr_std_string(argv[0], &ptr); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "std::string const &","addGroup", 2, argv[0] )); - } - if (!ptr) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "std::string const &","addGroup", 2, argv[0])); - } - arg2 = ptr; + res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type, 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "FIX::DataDictionary::FieldPresenceMap::key_type const &","addGroup", 2, argv[0] )); } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary::FieldPresenceMap::key_type const &","addGroup", 2, argv[0])); + } + arg2 = reinterpret_cast< FIX::DataDictionary::FieldPresenceMap::key_type * >(argp2); ecode3 = SWIG_AsVal_int(argv[1], &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), Ruby_Format_TypeError( "", "int","addGroup", 3, argv[1] )); @@ -271652,30 +271672,22 @@ _wrap_DataDictionary_addGroup(int argc, VALUE *argv, VALUE self) { SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary const &","addGroup", 5, argv[3])); } arg5 = reinterpret_cast< FIX::DataDictionary * >(argp5); - (arg1)->addGroup((std::string const &)*arg2,arg3,arg4,(FIX::DataDictionary const &)*arg5); - { - if( std::string("std::string const &") == "std::string &" ) - { - rb_str_resize( argv[0], 0 ); - rb_str_append( argv[0], rb_str_new2(arg2->c_str()) ); - } - } - if (SWIG_IsNewObj(res2)) delete arg2; - return vresult; + (arg1)->addGroup((FIX::DataDictionary::FieldPresenceMap::key_type const &)*arg2,arg3,arg4,(FIX::DataDictionary const &)*arg5); + return Qnil; fail: - if (SWIG_IsNewObj(res2)) delete arg2; return Qnil; } SWIGINTERN VALUE -_wrap_DataDictionary_isGroup__SWIG_0(int argc, VALUE *argv, VALUE self) { +_wrap_DataDictionary_isGroup(int argc, VALUE *argv, VALUE self) { FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - std::string *arg2 = 0 ; + FIX::DataDictionary::FieldPresenceMap::key_type *arg2 = 0 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; - int res2 = SWIG_OLDOBJ ; + void *argp2 ; + int res2 = 0 ; int val3 ; int ecode3 = 0 ; bool result; @@ -271689,138 +271701,38 @@ _wrap_DataDictionary_isGroup__SWIG_0(int argc, VALUE *argv, VALUE self) { SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::DataDictionary const *","isGroup", 1, self )); } arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - { - std::string *ptr = (std::string *)0; - res2 = SWIG_AsPtr_std_string(argv[0], &ptr); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "std::string const &","isGroup", 2, argv[0] )); - } - if (!ptr) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "std::string const &","isGroup", 2, argv[0])); - } - arg2 = ptr; + res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type, 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "FIX::DataDictionary::FieldPresenceMap::key_type const &","isGroup", 2, argv[0] )); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary::FieldPresenceMap::key_type const &","isGroup", 2, argv[0])); } + arg2 = reinterpret_cast< FIX::DataDictionary::FieldPresenceMap::key_type * >(argp2); ecode3 = SWIG_AsVal_int(argv[1], &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), Ruby_Format_TypeError( "", "int","isGroup", 3, argv[1] )); } arg3 = static_cast< int >(val3); - result = (bool)((FIX::DataDictionary const *)arg1)->isGroup((std::string const &)*arg2,arg3); + result = (bool)((FIX::DataDictionary const *)arg1)->isGroup((FIX::DataDictionary::FieldPresenceMap::key_type const &)*arg2,arg3); vresult = SWIG_From_bool(static_cast< bool >(result)); - { - if( std::string("std::string const &") == "std::string &" ) - { - rb_str_resize( argv[0], 0 ); - rb_str_append( argv[0], rb_str_new2(arg2->c_str()) ); - } - } - if (SWIG_IsNewObj(res2)) delete arg2; return vresult; fail: - if (SWIG_IsNewObj(res2)) delete arg2; return Qnil; } SWIGINTERN VALUE -_wrap_DataDictionary_isGroup__SWIG_1(int argc, VALUE *argv, VALUE self) { +_wrap_DataDictionary__getGroup(int argc, VALUE *argv, VALUE self) { FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - FIX::DataDictionary::FieldToGroup::key_type *arg2 = 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - void *argp2 ; - int res2 = 0 ; - bool result; - VALUE vresult = Qnil; - - if ((argc < 1) || (argc > 1)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail; - } - res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_FIX__DataDictionary, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::DataDictionary const *","isGroup", 1, self )); - } - arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0 ); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "FIX::DataDictionary::FieldToGroup::key_type const &","isGroup", 2, argv[0] )); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary::FieldToGroup::key_type const &","isGroup", 2, argv[0])); - } - arg2 = reinterpret_cast< FIX::DataDictionary::FieldToGroup::key_type * >(argp2); - result = (bool)((FIX::DataDictionary const *)arg1)->isGroup((FIX::DataDictionary::FieldToGroup::key_type const &)*arg2); - vresult = SWIG_From_bool(static_cast< bool >(result)); - return vresult; -fail: - return Qnil; -} - - -SWIGINTERN VALUE _wrap_DataDictionary_isGroup(int nargs, VALUE *args, VALUE self) { - int argc; - VALUE argv[4]; - int ii; - - argc = nargs + 1; - argv[0] = self; - if (argc > 4) SWIG_fail; - for (ii = 1; (ii < argc); ++ii) { - argv[ii] = args[ii-1]; - } - if (argc == 2) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0); - _v = SWIG_CheckState(res); - if (_v) { - return _wrap_DataDictionary_isGroup__SWIG_1(nargs, args, self); - } - } - } - if (argc == 3) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0)); - _v = SWIG_CheckState(res); - if (_v) { - { - int res = SWIG_AsVal_int(argv[2], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - return _wrap_DataDictionary_isGroup__SWIG_0(nargs, args, self); - } - } - } - } - -fail: - Ruby_Format_OverloadedError( argc, 4, "DataDictionary.isGroup", - " bool DataDictionary.isGroup(std::string const &msg, int field)\n" - " bool DataDictionary.isGroup(FIX::DataDictionary::FieldToGroup::key_type const &key)\n"); - - return Qnil; -} - - -SWIGINTERN VALUE -_wrap_DataDictionary__getGroup__SWIG_0(int argc, VALUE *argv, VALUE self) { - FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - std::string *arg2 = 0 ; + FIX::DataDictionary::FieldPresenceMap::key_type *arg2 = 0 ; int arg3 ; int *arg4 = 0 ; FIX::DataDictionary **arg5 = 0 ; void *argp1 = 0 ; int res1 = 0 ; - int res2 = SWIG_OLDOBJ ; + void *argp2 ; + int res2 = 0 ; int val3 ; int ecode3 = 0 ; int temp4 ; @@ -271836,17 +271748,14 @@ _wrap_DataDictionary__getGroup__SWIG_0(int argc, VALUE *argv, VALUE self) { SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::DataDictionary const *","getGroup", 1, self )); } arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - { - std::string *ptr = (std::string *)0; - res2 = SWIG_AsPtr_std_string(argv[0], &ptr); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "std::string const &","getGroup", 2, argv[0] )); - } - if (!ptr) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "std::string const &","getGroup", 2, argv[0])); - } - arg2 = ptr; + res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldPresenceMap__key_type, 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "FIX::DataDictionary::FieldPresenceMap::key_type const &","getGroup", 2, argv[0] )); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary::FieldPresenceMap::key_type const &","getGroup", 2, argv[0])); } + arg2 = reinterpret_cast< FIX::DataDictionary::FieldPresenceMap::key_type * >(argp2); ecode3 = SWIG_AsVal_int(argv[1], &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), Ruby_Format_TypeError( "", "int","getGroup", 3, argv[1] )); @@ -271860,15 +271769,8 @@ _wrap_DataDictionary__getGroup__SWIG_0(int argc, VALUE *argv, VALUE self) { arg5 = new FIX::DataDictionary*[1]; *arg5 = temp5; } - result = (bool)((FIX::DataDictionary const *)arg1)->getGroup((std::string const &)*arg2,arg3,*arg4,(FIX::DataDictionary const *&)*arg5); + result = (bool)((FIX::DataDictionary const *)arg1)->getGroup((FIX::DataDictionary::FieldPresenceMap::key_type const &)*arg2,arg3,*arg4,(FIX::DataDictionary const *&)*arg5); vresult = SWIG_From_bool(static_cast< bool >(result)); - { - if( std::string("std::string const &") == "std::string &" ) - { - rb_str_resize( argv[0], 0 ); - rb_str_append( argv[0], rb_str_new2(arg2->c_str()) ); - } - } { if( std::string("int &") == "int &" ) { @@ -271882,144 +271784,8 @@ _wrap_DataDictionary__getGroup__SWIG_0(int argc, VALUE *argv, VALUE self) { pDD = reinterpret_cast< FIX::DataDictionary * >(argp); *pDD = *(*arg5); } - if (SWIG_IsNewObj(res2)) delete arg2; return vresult; fail: - if (SWIG_IsNewObj(res2)) delete arg2; - return Qnil; -} - - -SWIGINTERN VALUE -_wrap_DataDictionary__getGroup__SWIG_1(int argc, VALUE *argv, VALUE self) { - FIX::DataDictionary *arg1 = (FIX::DataDictionary *) 0 ; - FIX::DataDictionary::FieldToGroup::key_type *arg2 = 0 ; - int *arg3 = 0 ; - FIX::DataDictionary **arg4 = 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - void *argp2 ; - int res2 = 0 ; - int temp3 ; - FIX::DataDictionary *temp4 ; - bool result; - VALUE vresult = Qnil; - - if ((argc < 3) || (argc > 3)) { - rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc); SWIG_fail; - } - res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_FIX__DataDictionary, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "FIX::DataDictionary const *","getGroup", 1, self )); - } - arg1 = reinterpret_cast< FIX::DataDictionary * >(argp1); - res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0 ); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "FIX::DataDictionary::FieldToGroup::key_type const &","getGroup", 2, argv[0] )); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "FIX::DataDictionary::FieldToGroup::key_type const &","getGroup", 2, argv[0])); - } - arg2 = reinterpret_cast< FIX::DataDictionary::FieldToGroup::key_type * >(argp2); - { - temp3 = NUM2INT(argv[1]); - arg3 = &temp3; - } - { - arg4 = new FIX::DataDictionary*[1]; - *arg4 = temp4; - } - result = (bool)((FIX::DataDictionary const *)arg1)->getGroup((FIX::DataDictionary::FieldToGroup::key_type const &)*arg2,*arg3,(FIX::DataDictionary const *&)*arg4); - vresult = SWIG_From_bool(static_cast< bool >(result)); - { - if( std::string("int &") == "int &" ) - { - vresult = result ? SWIG_From_int(static_cast< int >(*arg3)) : Qnil; - } - } - { - void* argp; - FIX::DataDictionary* pDD = 0; - int res = SWIG_ConvertPtr(argv[2], &argp, SWIGTYPE_p_FIX__DataDictionary, 0 ); - pDD = reinterpret_cast< FIX::DataDictionary * >(argp); - *pDD = *(*arg4); - } - return vresult; -fail: - return Qnil; -} - - -SWIGINTERN VALUE _wrap_DataDictionary__getGroup(int nargs, VALUE *args, VALUE self) { - int argc; - VALUE argv[6]; - int ii; - - argc = nargs + 1; - argv[0] = self; - if (argc > 6) SWIG_fail; - for (ii = 1; (ii < argc); ++ii) { - argv[ii] = args[ii-1]; - } - if (argc == 4) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_FIX__DataDictionary__FieldToGroup__key_type, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[2], &vptr, SWIGTYPE_p_int, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - return _wrap_DataDictionary__getGroup__SWIG_1(nargs, args, self); - } - } - } - } - } - if (argc == 5) { - int _v; - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0)); - _v = SWIG_CheckState(res); - if (_v) { - { - int res = SWIG_AsVal_int(argv[2], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[3], &vptr, SWIGTYPE_p_int, 0); - _v = SWIG_CheckState(res); - if (_v) { - void *vptr = 0; - int res = SWIG_ConvertPtr(argv[4], &vptr, SWIGTYPE_p_p_FIX__DataDictionary, 0); - _v = SWIG_CheckState(res); - if (_v) { - return _wrap_DataDictionary__getGroup__SWIG_0(nargs, args, self); - } - } - } - } - } - } - -fail: - Ruby_Format_OverloadedError( argc, 6, "DataDictionary._getGroup", - " bool DataDictionary._getGroup(std::string const &msg, int field, int &delim, FIX::DataDictionary const *&pDataDictionary)\n" - " bool DataDictionary._getGroup(FIX::DataDictionary::FieldToGroup::key_type const &key, int &delim, FIX::DataDictionary const *&pDataDictionary)\n"); - return Qnil; } @@ -272520,6 +272286,9 @@ static void *_p_IntArrayTo_p_int(void *x, int *SWIGUNUSEDPARM(newmemory)) { static void *_p_FIX__SocketInitiatorTo_p_FIX__Initiator(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((FIX::Initiator *) ((FIX::SocketInitiator *) x)); } +static void *_p_FIX__DataDictionaryTo_p_FIX__DataDictionaryBase(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((FIX::DataDictionaryBase *) ((FIX::DataDictionary *) x)); +} static void *_p_FIX__SocketAcceptorTo_p_FIX__Acceptor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((FIX::Acceptor *) ((FIX::SocketAcceptor *) x)); } @@ -282096,8 +281865,9 @@ static swig_type_info _swigt__p_FIX__DATA = {"_p_FIX__DATA", "FIX::DATA *", 0, 0 static swig_type_info _swigt__p_FIX__DAYOFMONTH = {"_p_FIX__DAYOFMONTH", "FIX::DAYOFMONTH *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DKReason = {"_p_FIX__DKReason", "FIX::DKReason *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DataDictionary = {"_p_FIX__DataDictionary", "FIX::DataDictionary *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FIX__DataDictionaryBase = {"_p_FIX__DataDictionaryBase", "FIX::DataDictionaryBase *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DataDictionaryNotFound = {"_p_FIX__DataDictionaryNotFound", "FIX::DataDictionaryNotFound *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_FIX__DataDictionary__FieldToGroup__key_type = {"_p_FIX__DataDictionary__FieldToGroup__key_type", "FIX::DataDictionary::FieldToGroup::key_type *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FIX__DataDictionary__FieldPresenceMap__key_type = {"_p_FIX__DataDictionary__FieldPresenceMap__key_type", "FIX::DataDictionary::FieldPresenceMap::key_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DateOfBirth = {"_p_FIX__DateOfBirth", "FIX::DateOfBirth *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DatedDate = {"_p_FIX__DatedDate", "FIX::DatedDate *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__DayAvgPx = {"_p_FIX__DayAvgPx", "FIX::DayAvgPx *", 0, 0, (void*)0, 0}; @@ -282309,8 +282079,6 @@ static swig_type_info _swigt__p_FIX__FeeMultiplier = {"_p_FIX__FeeMultiplier", " static swig_type_info _swigt__p_FIX__FieldBase = {"_p_FIX__FieldBase", "FIX::FieldBase *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldConvertError = {"_p_FIX__FieldConvertError", "FIX::FieldConvertError *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldMap = {"_p_FIX__FieldMap", "FIX::FieldMap *|FIX::Trailer *|FIX::Header *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_FIX__FieldMap__Fields__allocator_type = {"_p_FIX__FieldMap__Fields__allocator_type", "FIX::FieldMap::Fields::allocator_type *|FIX::FieldMap::allocator_type *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_FIX__FieldMap__Fields__const_iterator = {"_p_FIX__FieldMap__Fields__const_iterator", "FIX::FieldMap::Fields::const_iterator *|FIX::FieldMap::iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldMap__Groups__const_iterator = {"_p_FIX__FieldMap__Groups__const_iterator", "FIX::FieldMap::Groups::const_iterator *|FIX::FieldMap::g_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldNotFound = {"_p_FIX__FieldNotFound", "FIX::FieldNotFound *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__FieldTag = {"_p_FIX__FieldTag", "FIX::FieldTag *", 0, 0, (void*)0, 0}; @@ -283479,10 +283247,12 @@ static swig_type_info _swigt__p_FIX__YieldRedemptionDate = {"_p_FIX__YieldRedemp static swig_type_info _swigt__p_FIX__YieldRedemptionPrice = {"_p_FIX__YieldRedemptionPrice", "FIX::YieldRedemptionPrice *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__YieldRedemptionPriceType = {"_p_FIX__YieldRedemptionPriceType", "FIX::YieldRedemptionPriceType *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FIX__YieldType = {"_p_FIX__YieldType", "FIX::YieldType *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FieldPresenceMap = {"_p_FieldPresenceMap", "FieldPresenceMap *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldToGroup = {"_p_FieldToGroup", "FieldToGroup *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldToName = {"_p_FieldToName", "FieldToName *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldToValue = {"_p_FieldToValue", "FieldToValue *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypeDataBits = {"_p_FieldTypeDataBits", "FieldTypeDataBits *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FieldTypeGroupBits = {"_p_FieldTypeGroupBits", "FieldTypeGroupBits *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypeHeaderBits = {"_p_FieldTypeHeaderBits", "FieldTypeHeaderBits *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypeTrailerBits = {"_p_FieldTypeTrailerBits", "FieldTypeTrailerBits *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FieldTypes = {"_p_FieldTypes", "FieldTypes *", 0, 0, (void*)0, 0}; @@ -283490,6 +283260,7 @@ static swig_type_info _swigt__p_Fields = {"_p_Fields", "Fields *", 0, 0, (void*) static swig_type_info _swigt__p_Group = {"_p_Group", "Group *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_IntArray = {"_p_IntArray", "IntArray *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_IntField = {"_p_IntField", "IntField *|LengthField *|NumInGroupField *|SeqNumField *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ItemAllocatorT_stored_type_NodeList_t = {"_p_ItemAllocatorT_stored_type_NodeList_t", "FIX::FieldMap::allocator_type *|ItemAllocator< stored_type,NodeList > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_Log = {"_p_Log", "Log *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_LogFactory = {"_p_LogFactory", "LogFactory *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_MessageStore = {"_p_MessageStore", "MessageStore *", 0, 0, (void*)0, 0}; @@ -283522,6 +283293,7 @@ static swig_type_info _swigt__p_bool = {"_p_bool", "bool *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_const_iterator = {"_p_const_iterator", "const_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_data_type = {"_p_data_type", "data_type *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_field_iterator = {"_p_field_iterator", "field_iterator *|FIX::FieldMap::iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_g_const_iterator = {"_p_g_const_iterator", "g_const_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_g_item_const_iterator = {"_p_g_item_const_iterator", "g_item_const_iterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_g_item_iterator = {"_p_g_item_iterator", "g_item_iterator *", 0, 0, (void*)0, 0}; @@ -283802,8 +283574,9 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_FIX__DAYOFMONTH, &_swigt__p_FIX__DKReason, &_swigt__p_FIX__DataDictionary, + &_swigt__p_FIX__DataDictionaryBase, &_swigt__p_FIX__DataDictionaryNotFound, - &_swigt__p_FIX__DataDictionary__FieldToGroup__key_type, + &_swigt__p_FIX__DataDictionary__FieldPresenceMap__key_type, &_swigt__p_FIX__DateOfBirth, &_swigt__p_FIX__DatedDate, &_swigt__p_FIX__DayAvgPx, @@ -284015,8 +283788,6 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_FIX__FieldBase, &_swigt__p_FIX__FieldConvertError, &_swigt__p_FIX__FieldMap, - &_swigt__p_FIX__FieldMap__Fields__allocator_type, - &_swigt__p_FIX__FieldMap__Fields__const_iterator, &_swigt__p_FIX__FieldMap__Groups__const_iterator, &_swigt__p_FIX__FieldNotFound, &_swigt__p_FIX__FieldTag, @@ -285185,10 +284956,12 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_FIX__YieldRedemptionPrice, &_swigt__p_FIX__YieldRedemptionPriceType, &_swigt__p_FIX__YieldType, + &_swigt__p_FieldPresenceMap, &_swigt__p_FieldToGroup, &_swigt__p_FieldToName, &_swigt__p_FieldToValue, &_swigt__p_FieldTypeDataBits, + &_swigt__p_FieldTypeGroupBits, &_swigt__p_FieldTypeHeaderBits, &_swigt__p_FieldTypeTrailerBits, &_swigt__p_FieldTypes, @@ -285196,6 +284969,7 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_Group, &_swigt__p_IntArray, &_swigt__p_IntField, + &_swigt__p_ItemAllocatorT_stored_type_NodeList_t, &_swigt__p_Log, &_swigt__p_LogFactory, &_swigt__p_MessageStore, @@ -285228,6 +285002,7 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_char, &_swigt__p_const_iterator, &_swigt__p_data_type, + &_swigt__p_field_iterator, &_swigt__p_g_const_iterator, &_swigt__p_g_item_const_iterator, &_swigt__p_g_item_iterator, @@ -285508,8 +285283,9 @@ static swig_cast_info _swigc__p_FIX__DATA[] = { {&_swigt__p_FIX__DATA, 0, 0, 0} static swig_cast_info _swigc__p_FIX__DAYOFMONTH[] = { {&_swigt__p_FIX__DAYOFMONTH, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DKReason[] = { {&_swigt__p_FIX__DKReason, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DataDictionary[] = { {&_swigt__p_FIX__DataDictionary, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FIX__DataDictionaryBase[] = { {&_swigt__p_FIX__DataDictionary, _p_FIX__DataDictionaryTo_p_FIX__DataDictionaryBase, 0, 0}, {&_swigt__p_FIX__DataDictionaryBase, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DataDictionaryNotFound[] = { {&_swigt__p_FIX__DataDictionaryNotFound, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_FIX__DataDictionary__FieldToGroup__key_type[] = { {&_swigt__p_FIX__DataDictionary__FieldToGroup__key_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FIX__DataDictionary__FieldPresenceMap__key_type[] = { {&_swigt__p_FIX__DataDictionary__FieldPresenceMap__key_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DateOfBirth[] = { {&_swigt__p_FIX__DateOfBirth, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DatedDate[] = { {&_swigt__p_FIX__DatedDate, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__DayAvgPx[] = { {&_swigt__p_FIX__DayAvgPx, 0, 0, 0},{0, 0, 0, 0}}; @@ -285721,8 +285497,6 @@ static swig_cast_info _swigc__p_FIX__FeeMultiplier[] = { {&_swigt__p_FIX__FeeMu static swig_cast_info _swigc__p_FIX__FieldBase[] = { {&_swigt__p_FIX__CFICode, _p_FIX__CFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCFICode, _p_FIX__UnderlyingCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeCFICode, _p_FIX__DerivativeCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCFICode, _p_FIX__LegCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegCFICode, _p_FIX__UnderlyingLegCFICodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYearFormat, _p_FIX__MaturityMonthYearFormatTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartCash, _p_FIX__StartCashTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPriceUnitOfMeasure, _p_FIX__UnderlyingPriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingUnitOfMeasure, _p_FIX__UnderlyingUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegUnitOfMeasure, _p_FIX__LegUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceUnitOfMeasure, _p_FIX__PriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnitOfMeasure, _p_FIX__UnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPriceUnitOfMeasure, _p_FIX__LegPriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeUnitOfMeasure, _p_FIX__DerivativeUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePriceUnitOfMeasure, _p_FIX__DerivativePriceUnitOfMeasureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTradeID, _p_FIX__OrigTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FirmTradeID, _p_FIX__FirmTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryFirmTradeID, _p_FIX__SecondaryFirmTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeID, _p_FIX__TradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradeID, _p_FIX__SecondaryTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigSecondaryTradeID, _p_FIX__OrigSecondaryTradeIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Yield, _p_FIX__YieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityType, _p_FIX__UnderlyingSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityType, _p_FIX__SecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RepoCollateralSecurityType, _p_FIX__RepoCollateralSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRepoCollateralSecurityType, _p_FIX__LegRepoCollateralSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpirationQtyType, _p_FIX__ExpirationQtyTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityType, _p_FIX__LegSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuantityType, _p_FIX__QuantityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityType, _p_FIX__DerivativeSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRepoCollateralSecurityType, _p_FIX__UnderlyingRepoCollateralSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QtyType, _p_FIX__QtyTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityType, _p_FIX__UnderlyingLegSecurityTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Account, _p_FIX__AccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingAccount, _p_FIX__ClearingAccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocAccount, _p_FIX__LegAllocAccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAccount, _p_FIX__AllocAccountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDImplicitDelete, _p_FIX__MDImplicitDeleteTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegTimeUnit, _p_FIX__LegTimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeUnit, _p_FIX__TimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeTimeUnit, _p_FIX__DerivativeTimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingTimeUnit, _p_FIX__UnderlyingTimeUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StandInstDbID, _p_FIX__StandInstDbIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotifyBrokerOfCredit, _p_FIX__NotifyBrokerOfCreditTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BrokerOfCredit, _p_FIX__BrokerOfCreditTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecuritySubType, _p_FIX__UnderlyingSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecuritySubType, _p_FIX__LegSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecuritySubType, _p_FIX__DerivativeSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySubType, _p_FIX__SecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecuritySubType, _p_FIX__UnderlyingLegSecuritySubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdSubType, _p_FIX__TrdSubTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ShortSaleReason, _p_FIX__ShortSaleReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeleteReason, _p_FIX__DeleteReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocCancReplaceReason, _p_FIX__AllocCancReplaceReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DKReason, _p_FIX__DKReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkRequestID, _p_FIX__NetworkRequestIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserRequestID, _p_FIX__UserRequestIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestID, _p_FIX__TradeRequestIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarginExcess, _p_FIX__MarginExcessTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistRejReasonText, _p_FIX__RegistRejReasonTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraTradeTime, _p_FIX__ContraTradeTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoEvents, _p_FIX__NoEventsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeEvents, _p_FIX__NoDerivativeEventsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLastQty, _p_FIX__UnderlyingLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CalculatedCcyLastQty, _p_FIX__CalculatedCcyLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideLastQty, _p_FIX__SideLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCalculatedCcyLastQty, _p_FIX__LegCalculatedCcyLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLastQty, _p_FIX__LegLastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastQty, _p_FIX__LastQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CheckSumField, _p_FIX__CheckSumFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Username, _p_FIX__UsernameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintRptID, _p_FIX__PosMaintRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContIntRptID, _p_FIX__ContIntRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikeValue, _p_FIX__DerivativeStrikeValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeValue, _p_FIX__StrikeValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptPayoutType, _p_FIX__OptPayoutTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedText, _p_FIX__EncodedTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__GapFillFlag, _p_FIX__GapFillFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketDepth, _p_FIX__MarketDepthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StopPx, _p_FIX__StopPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDPriceLevel, _p_FIX__MDPriceLevelTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteResponseLevel, _p_FIX__QuoteResponseLevelTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldCalcDate, _p_FIX__YieldCalcDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollRptID, _p_FIX__CollRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegNumber, _p_FIX__LegNumberTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosType, _p_FIX__PosTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContAmtType, _p_FIX__ContAmtTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosAmtType, _p_FIX__PosAmtTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstID, _p_FIX__SettlInstIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReportedPx, _p_FIX__ReportedPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastFragment, _p_FIX__LastFragmentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceLimitType, _p_FIX__PriceLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegLimitType, _p_FIX__PegLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryPriceLimitType, _p_FIX__SecondaryPriceLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionLimitType, _p_FIX__DiscretionLimitTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegStipulations, _p_FIX__NoLegStipulationsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStipulations, _p_FIX__NoStipulationsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ShortQty, _p_FIX__ShortQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SellerDays, _p_FIX__SellerDaysTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RptSeq, _p_FIX__RptSeqTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionOffsetType, _p_FIX__DiscretionOffsetTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegOffsetType, _p_FIX__PegOffsetTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesEndTime, _p_FIX__TradSesEndTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventEndTime, _p_FIX__ComplexEventEndTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TierCode, _p_FIX__TierCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Benchmark, _p_FIX__BenchmarkTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SpreadToBenchmark, _p_FIX__SpreadToBenchmarkTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TransferReason, _p_FIX__TransferReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnRejectReason, _p_FIX__CollAsgnRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRequestRejectReason, _p_FIX__QuoteRequestRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SessionRejectReason, _p_FIX__SessionRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListRejectReason, _p_FIX__ListRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnReason, _p_FIX__CollAsgnReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRejectReason, _p_FIX__QuoteRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportRejectReason, _p_FIX__TradeReportRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnRejReason, _p_FIX__StreamAsgnRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteEntryRejectReason, _p_FIX__QuoteEntryRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecRestatementReason, _p_FIX__ExecRestatementReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdRejReason, _p_FIX__OrdRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassCancelRejectReason, _p_FIX__MassCancelRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesStatusRejReason, _p_FIX__TradSesStatusRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlRejReason, _p_FIX__CxlRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmRejReason, _p_FIX__ConfirmRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionRejectReason, _p_FIX__MassActionRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefOrdIDReason, _p_FIX__RefOrdIDReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDReqRejReason, _p_FIX__MDReqRejReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BusinessRejectReason, _p_FIX__BusinessRejectReasonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocText, _p_FIX__AllocTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedAllocText, _p_FIX__EncodedAllocTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliverToSubID, _p_FIX__DeliverToSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeCurr, _p_FIX__MiscFeeCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligMsgID, _p_FIX__SettlObligMsgIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReportedPxDiff, _p_FIX__ReportedPxDiffTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoComplexEvents, _p_FIX__NoComplexEventsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNestedInstrAttrib, _p_FIX__NoNestedInstrAttribTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoInstrAttrib, _p_FIX__NoInstrAttribTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeInstrAttrib, _p_FIX__NoDerivativeInstrAttribTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTrdRepIndicators, _p_FIX__NoTrdRepIndicatorsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStatsIndicators, _p_FIX__NoStatsIndicatorsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoQuoteSets, _p_FIX__NoQuoteSetsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BeginSeqNo, _p_FIX__BeginSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventPx, _p_FIX__EventPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventPx, _p_FIX__DerivativeEventPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityTradingEvent, _p_FIX__SecurityTradingEventTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossType, _p_FIX__CrossTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndStrikePxRange, _p_FIX__EndStrikePxRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartStrikePxRange, _p_FIX__StartStrikePxRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementDesc, _p_FIX__AgreementDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketSegmentDesc, _p_FIX__MarketSegmentDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderDelay, _p_FIX__OrderDelayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderCategory, _p_FIX__OrderCategoryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsCategory, _p_FIX__NewsCategoryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinQty, _p_FIX__MinQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardNumber, _p_FIX__CardNumberTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentAcctNumber, _p_FIX__CashDistribAgentAcctNumberTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPositions, _p_FIX__NoPositionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOfLegUnderlyings, _p_FIX__NoOfLegUnderlyingsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyings, _p_FIX__NoUnderlyingsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDates, _p_FIX__NoDatesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardStartDate, _p_FIX__CardStartDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartDate, _p_FIX__StartDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventStartDate, _p_FIX__ComplexEventStartDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefreshQty, _p_FIX__RefreshQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTime, _p_FIX__OrigTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDUpdateType, _p_FIX__MDUpdateTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDQuoteType, _p_FIX__MDQuoteTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteType, _p_FIX__QuoteTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumBidders, _p_FIX__NumBiddersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementDate, _p_FIX__AgreementDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventDate, _p_FIX__EventDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCouponPaymentDate, _p_FIX__UnderlyingCouponPaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentDate, _p_FIX__PaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlementDate, _p_FIX__UnderlyingSettlementDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CouponPaymentDate, _p_FIX__CouponPaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventDate, _p_FIX__DerivativeEventDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCouponPaymentDate, _p_FIX__LegCouponPaymentDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSymbolSfx, _p_FIX__UnderlyingSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSymbolSfx, _p_FIX__DerivativeSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SymbolSfx, _p_FIX__SymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSymbolSfx, _p_FIX__UnderlyingLegSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSymbolSfx, _p_FIX__LegSymbolSfxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdType, _p_FIX__TrdTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTrdType, _p_FIX__SecondaryTrdTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMsgTypes, _p_FIX__NoMsgTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerOrderType, _p_FIX__TriggerOrderTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrategyParameterType, _p_FIX__StrategyParameterTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OwnerType, _p_FIX__OwnerTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlSessSubID, _p_FIX__SettlSessSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TickRuleType, _p_FIX__TickRuleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFlowScheduleType, _p_FIX__UnderlyingFlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegFlowScheduleType, _p_FIX__LegFlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeFlowScheduleType, _p_FIX__DerivativeFlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FlowScheduleType, _p_FIX__FlowScheduleTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeBasis, _p_FIX__MiscFeeBasisTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedTextLen, _p_FIX__EncodedTextLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedAllocTextLen, _p_FIX__EncodedAllocTextLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListStatusTextLen, _p_FIX__EncodedListStatusTextLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesEvent, _p_FIX__TradSesEventTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayQty, _p_FIX__DisplayQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryDisplayQty, _p_FIX__SecondaryDisplayQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNumTradeReports, _p_FIX__TotNumTradeReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNumPosReports, _p_FIX__TotalNumPosReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNumReports, _p_FIX__TotNumReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNumAssignmentReports, _p_FIX__TotNumAssignmentReportsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideSettlCurrency, _p_FIX__SideSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkCurveCurrency, _p_FIX__LegBenchmarkCurveCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkCurveCurrency, _p_FIX__BenchmarkCurveCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocSettlCurrency, _p_FIX__LegAllocSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlCurrency, _p_FIX__LegSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingCurrency, _p_FIX__TradingCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeCurrency, _p_FIX__StrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrency, _p_FIX__SettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Currency, _p_FIX__CurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCurrency, _p_FIX__LegCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideCurrency, _p_FIX__SideCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocSettlCurrency, _p_FIX__AllocSettlCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementCurrency, _p_FIX__AgreementCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikeCurrency, _p_FIX__DerivativeStrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStrikeCurrency, _p_FIX__UnderlyingStrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CommCurrency, _p_FIX__CommCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCurrency, _p_FIX__UnderlyingCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PositionCurrency, _p_FIX__PositionCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStrikeCurrency, _p_FIX__LegStrikeCurrencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeType, _p_FIX__TradeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidTradeType, _p_FIX__BidTradeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettleOnOpenFlag, _p_FIX__SettleOnOpenFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSettleOnOpenFlag, _p_FIX__DerivativeSettleOnOpenFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLocaleOfIssue, _p_FIX__LegLocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LocaleOfIssue, _p_FIX__LocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCountryOfIssue, _p_FIX__UnderlyingCountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStateOrProvinceOfIssue, _p_FIX__LegStateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeCountryOfIssue, _p_FIX__DerivativeCountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStateOrProvinceOfIssue, _p_FIX__UnderlyingStateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStateOrProvinceOfIssue, _p_FIX__DerivativeStateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCountryOfIssue, _p_FIX__LegCountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StateOrProvinceOfIssue, _p_FIX__StateOrProvinceOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CountryOfIssue, _p_FIX__CountryOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeLocaleOfIssue, _p_FIX__DerivativeLocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLocaleOfIssue, _p_FIX__UnderlyingLocaleOfIssueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlInst, _p_FIX__NoSettlInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTradingSessions, _p_FIX__NoTradingSessionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Seniority, _p_FIX__SeniorityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSeniority, _p_FIX__UnderlyingSeniorityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlQty, _p_FIX__CxlQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoExecInstRules, _p_FIX__NoExecInstRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeBracket, _p_FIX__TimeBracketTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstMode, _p_FIX__SettlInstModeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResponseError, _p_FIX__ApplResponseErrorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HaltReasonInt, _p_FIX__HaltReasonIntTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListNoOrds, _p_FIX__ListNoOrdsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlmntTyp, _p_FIX__LegSettlmntTypTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlmntTyp, _p_FIX__SettlmntTypTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvRefID, _p_FIX__AdvRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BookingUnit, _p_FIX__BookingUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastPx, _p_FIX__LastPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLastPx, _p_FIX__LegLastPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLastPx, _p_FIX__UnderlyingLastPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PrevClosePx, _p_FIX__PrevClosePxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDReportID, _p_FIX__MDReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityReportID, _p_FIX__SecurityReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradeReportID, _p_FIX__SecondaryTradeReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReportID, _p_FIX__ApplReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionReportID, _p_FIX__MassActionReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketReportID, _p_FIX__MarketReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegReportID, _p_FIX__LegReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportID, _p_FIX__TradeReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocReportID, _p_FIX__AllocReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTradeReportID, _p_FIX__SideTradeReportIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegs, _p_FIX__NoLegsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CancellationRights, _p_FIX__CancellationRightsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityXML, _p_FIX__SecurityXMLTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityXML, _p_FIX__DerivativeSecurityXMLTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMatchRules, _p_FIX__NoMatchRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RawData, _p_FIX__RawDataTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocHandlInst, _p_FIX__AllocHandlInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HandlInst, _p_FIX__HandlInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdType, _p_FIX__OrdTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Factor, _p_FIX__FactorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFactor, _p_FIX__UnderlyingFactorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegFactor, _p_FIX__LegFactorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MatchType, _p_FIX__MatchTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingIssueDate, _p_FIX__UnderlyingIssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeIssueDate, _p_FIX__DerivativeIssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IssueDate, _p_FIX__IssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIssueDate, _p_FIX__LegIssueDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerType, _p_FIX__TriggerTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingAmounts, _p_FIX__NoUnderlyingAmountsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidID, _p_FIX__BidIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlType, _p_FIX__SettlTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlType, _p_FIX__LegSettlTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityIndType, _p_FIX__LiquidityIndTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmType, _p_FIX__ConfirmTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAvgPx, _p_FIX__AllocAvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityReqID, _p_FIX__SecurityReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollApplType, _p_FIX__CollApplTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashMargin, _p_FIX__CashMarginTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPx, _p_FIX__AvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingAllocationPercent, _p_FIX__UnderlyingAllocationPercentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderPercent, _p_FIX__OrderPercentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossPercent, _p_FIX__CrossPercentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesStartTime, _p_FIX__TradSesStartTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventStartTime, _p_FIX__ComplexEventStartTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListExecInstLen, _p_FIX__EncodedListExecInstLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventTime, _p_FIX__EventTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventTime, _p_FIX__DerivativeEventTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartyRole, _p_FIX__UndlyInstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartyRole, _p_FIX__RootPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRepPartyRole, _p_FIX__TrdRepPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartyRole, _p_FIX__InstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartyRole, _p_FIX__Nested4PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartyRole, _p_FIX__NestedPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartyRole, _p_FIX__Nested3PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartyRole, _p_FIX__DerivativeInstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartyRole, _p_FIX__PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartyRole, _p_FIX__SettlPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartyRole, _p_FIX__Nested2PartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetPartyRole, _p_FIX__TargetPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartyRole, _p_FIX__UnderlyingInstrumentPartyRoleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentCode, _p_FIX__CashSettlAgentCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentCode, _p_FIX__SecuritySettlAgentCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentCode, _p_FIX__CashDistribAgentCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCreditRating, _p_FIX__LegCreditRatingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CreditRating, _p_FIX__CreditRatingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCreditRating, _p_FIX__UnderlyingCreditRatingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCashType, _p_FIX__UnderlyingCashTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmReqID, _p_FIX__ConfirmReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRpts, _p_FIX__NoRptsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoBidDescriptors, _p_FIX__NoBidDescriptorsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegDividendYield, _p_FIX__LegDividendYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DividendYield, _p_FIX__DividendYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkResponseID, _p_FIX__NetworkResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityResponseID, _p_FIX__SecurityResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastNetworkResponseID, _p_FIX__LastNetworkResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResponseID, _p_FIX__ApplResponseIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultilegModel, _p_FIX__MultilegModelTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraTradeQty, _p_FIX__ContraTradeQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InViewOfCommon, _p_FIX__InViewOfCommonTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossPrioritization, _p_FIX__CrossPrioritizationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayLowQty, _p_FIX__DisplayLowQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RateSource, _p_FIX__RateSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListTypeSource, _p_FIX__SecurityListTypeSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligSource, _p_FIX__SettlObligSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskTypeSource, _p_FIX__DeskTypeSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCoveredOrUncovered, _p_FIX__LegCoveredOrUncoveredTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CoveredOrUncovered, _p_FIX__CoveredOrUncoveredTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteReqID, _p_FIX__QuoteReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeFloorPrice, _p_FIX__DerivativeFloorPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPrice, _p_FIX__TriggerPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FloorPrice, _p_FIX__FloorPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PutOrCall, _p_FIX__PutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPutOrCall, _p_FIX__LegPutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePutOrCall, _p_FIX__DerivativePutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegPutOrCall, _p_FIX__UnderlyingLegPutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPutOrCall, _p_FIX__UnderlyingPutOrCallTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentAcctNum, _p_FIX__CashSettlAgentAcctNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentAcctNum, _p_FIX__SecuritySettlAgentAcctNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StandInstDbName, _p_FIX__StandInstDbNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RiskFreeRate, _p_FIX__RiskFreeRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRespID, _p_FIX__QuoteRespIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldRedemptionPrice, _p_FIX__YieldRedemptionPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionPrice, _p_FIX__DiscretionPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlType, _p_FIX__CxlTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CPRegType, _p_FIX__CPRegTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCPRegType, _p_FIX__UnderlyingCPRegTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnRefID, _p_FIX__CollAsgnRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoExpiration, _p_FIX__NoExpirationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeToExpiration, _p_FIX__TimeToExpirationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OwnershipType, _p_FIX__OwnershipTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStipType, _p_FIX__UnderlyingStipTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceProtectionScope, _p_FIX__PriceProtectionScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionScope, _p_FIX__MassActionScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionScope, _p_FIX__DiscretionScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ResponseDestination, _p_FIX__ResponseDestinationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExDestination, _p_FIX__ExDestinationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Designation, _p_FIX__DesignationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesOpenTime, _p_FIX__TradSesOpenTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingStips, _p_FIX__NoUnderlyingStipsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PeggedRefPrice, _p_FIX__PeggedRefPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOptionRatio, _p_FIX__LegOptionRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarginRatio, _p_FIX__MarginRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Urgency, _p_FIX__UrgencyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentRef, _p_FIX__PaymentRefTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExchangeForPhysical, _p_FIX__ExchangeForPhysicalTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefOfferSize, _p_FIX__DefOfferSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferSize, _p_FIX__OfferSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinOfferSize, _p_FIX__MinOfferSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedMktSegmDesc, _p_FIX__EncodedMktSegmDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RFQReqID, _p_FIX__RFQReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideQty, _p_FIX__SideQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocSettlCurrAmt, _p_FIX__AllocSettlCurrAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrAmt, _p_FIX__SettlCurrAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__XmlData, _p_FIX__XmlDataTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumTickets, _p_FIX__NumTicketsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOINaturalFlag, _p_FIX__IOINaturalFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventCondition, _p_FIX__ComplexEventConditionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeCondition, _p_FIX__TradeConditionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteCondition, _p_FIX__QuoteConditionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidYield, _p_FIX__BidYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MidYield, _p_FIX__MidYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetGrossInd, _p_FIX__NetGrossIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecValuationPoint, _p_FIX__ExecValuationPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AffectedOrderID, _p_FIX__AffectedOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderID, _p_FIX__OrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotAffectedOrderID, _p_FIX__NotAffectedOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AffectedSecondaryOrderID, _p_FIX__AffectedSecondaryOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryOrderID, _p_FIX__SecondaryOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefOrderID, _p_FIX__RefOrderIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReferencePage, _p_FIX__ReferencePageTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartyIDSource, _p_FIX__SettlPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAcctIDSource, _p_FIX__AllocAcctIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityIDSource, _p_FIX__UnderlyingSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartyIDSource, _p_FIX__PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InputSource, _p_FIX__InputSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSecurityIDSource, _p_FIX__PegSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSecurityIDSource, _p_FIX__TriggerSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityAltIDSource, _p_FIX__LegSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartyIDSource, _p_FIX__NestedPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingIDSource, _p_FIX__UnderlyingIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityAltIDSource, _p_FIX__SecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityAltIDSource, _p_FIX__UnderlyingLegSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityIDSource, _p_FIX__SecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartyIDSource, _p_FIX__DerivativeInstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartyIDSource, _p_FIX__UnderlyingInstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAltMDSource, _p_FIX__NoAltMDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExDestinationIDSource, _p_FIX__ExDestinationIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderHandlingInstSource, _p_FIX__OrderHandlingInstSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkSecurityIDSource, _p_FIX__BenchmarkSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityIDSource, _p_FIX__DerivativeSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AcctIDSource, _p_FIX__AcctIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartyIDSource, _p_FIX__Nested4PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartyIDSource, _p_FIX__RootPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityAltIDSource, _p_FIX__DerivativeSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartyIDSource, _p_FIX__Nested3PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IDSource, _p_FIX__IDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetPartyIDSource, _p_FIX__TargetPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartyIDSource, _p_FIX__InstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityIDSource, _p_FIX__LegSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstSource, _p_FIX__SettlInstSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeInputSource, _p_FIX__TradeInputSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartyIDSource, _p_FIX__UndlyInstrumentPartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MessageEventSource, _p_FIX__MessageEventSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefOrderIDSource, _p_FIX__RefOrderIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartyIDSource, _p_FIX__Nested2PartyIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocAcctIDSource, _p_FIX__LegAllocAcctIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityAltIDSource, _p_FIX__UnderlyingSecurityAltIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityIDSource, _p_FIX__UnderlyingLegSecurityIDSourceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplTotalMessageCount, _p_FIX__ApplTotalMessageCountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FairValue, _p_FIX__FairValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrategyParameterValue, _p_FIX__StrategyParameterValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegalConfirm, _p_FIX__LegalConfirmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContractSettlMonth, _p_FIX__ContractSettlMonthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegContractSettlMonth, _p_FIX__LegContractSettlMonthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeContractSettlMonth, _p_FIX__DerivativeContractSettlMonthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteID, _p_FIX__QuoteIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TransBkdTime, _p_FIX__TransBkdTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollRespID, _p_FIX__CollRespIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdRegTimestampType, _p_FIX__SideTrdRegTimestampTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRegTimestampType, _p_FIX__TrdRegTimestampTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStipulationValue, _p_FIX__LegStipulationValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StipulationValue, _p_FIX__StipulationValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CharField, _p_FIX__CharFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MidPx, _p_FIX__MidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesMode, _p_FIX__TradSesModeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Country, _p_FIX__CountryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryDate, _p_FIX__MDEntryDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Rule80A, _p_FIX__Rule80ATo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeInstrumentParties, _p_FIX__NoDerivativeInstrumentPartiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUndlyInstrumentParties, _p_FIX__NoUndlyInstrumentPartiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoInstrumentParties, _p_FIX__NoInstrumentPartiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LongQty, _p_FIX__LongQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSwapType, _p_FIX__LegSwapTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillQty, _p_FIX__FillQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrAttribValue, _p_FIX__InstrAttribValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrAttribValue, _p_FIX__DerivativeInstrAttribValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedInstrAttribValue, _p_FIX__NestedInstrAttribValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoundingModulus, _p_FIX__RoundingModulusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocLinkType, _p_FIX__AllocLinkTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocReportType, _p_FIX__AllocReportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportType, _p_FIX__TradeReportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ResponseTransportType, _p_FIX__ResponseTransportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReportType, _p_FIX__ApplReportTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedPassword, _p_FIX__EncryptedPasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Password, _p_FIX__PasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedNewPassword, _p_FIX__EncryptedNewPasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewPassword, _p_FIX__NewPasswordTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlementType, _p_FIX__UnderlyingSettlementTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventType, _p_FIX__EventTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventType, _p_FIX__ComplexEventTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAccountType, _p_FIX__AllocAccountTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AccountType, _p_FIX__AccountTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdjustmentType, _p_FIX__AdjustmentTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventType, _p_FIX__DerivativeEventTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RespondentType, _p_FIX__RespondentTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FutSettDate2, _p_FIX__FutSettDate2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceDelta, _p_FIX__PriceDeltaTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideValue1, _p_FIX__SideValue1To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideValue2, _p_FIX__SideValue2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSymbol, _p_FIX__DerivativeSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSymbol, _p_FIX__LegSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSymbol, _p_FIX__UnderlyingSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSymbol, _p_FIX__UnderlyingLegSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSymbol, _p_FIX__PegSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Symbol, _p_FIX__SymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderQty2, _p_FIX__OrderQty2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AltMDSourceID, _p_FIX__AltMDSourceIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoQuoteEntries, _p_FIX__TotNoQuoteEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMDEntries, _p_FIX__NoMDEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotQuoteEntries, _p_FIX__TotQuoteEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoQuoteEntries, _p_FIX__NoQuoteEntriesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__VenueType, _p_FIX__VenueTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerNewQty, _p_FIX__TriggerNewQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TimeInForce, _p_FIX__TimeInForceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTimeInForce, _p_FIX__SideTimeInForceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstMsgID, _p_FIX__SettlInstMsgIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvSide, _p_FIX__AdvSideTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDate2, _p_FIX__SettlDate2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigOrdModTime, _p_FIX__OrigOrdModTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueDepth, _p_FIX__ApplQueueDepthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FieldBase, 0, 0, 0}, {&_swigt__p_FIX__MatchAlgorithm, _p_FIX__MatchAlgorithmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Signature, _p_FIX__SignatureTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Text, _p_FIX__TextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InterestAccrualDate, _p_FIX__InterestAccrualDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegInterestAccrualDate, _p_FIX__LegInterestAccrualDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Pool, _p_FIX__PoolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SendingDate, _p_FIX__SendingDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistID, _p_FIX__RegistIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewSeqNo, _p_FIX__NewSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegInstrRegistry, _p_FIX__LegInstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrRegistry, _p_FIX__InstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrRegistry, _p_FIX__DerivativeInstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrRegistry, _p_FIX__UnderlyingInstrRegistryTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMaturityRules, _p_FIX__NoMaturityRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeType, _p_FIX__MiscFeeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliveryDate, _p_FIX__DeliveryDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ValidUntilTime, _p_FIX__ValidUntilTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteSetValidUntilTime, _p_FIX__QuoteSetValidUntilTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClientBidID, _p_FIX__ClientBidIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityListDesc, _p_FIX__EncodedSecurityListDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListDesc, _p_FIX__SecurityListDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ParentMktSegmID, _p_FIX__ParentMktSegmIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StatsType, _p_FIX__StatsTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoComplexEventDates, _p_FIX__NoComplexEventDatesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityPctHigh, _p_FIX__LiquidityPctHighTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideReasonCd, _p_FIX__SideReasonCdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSymbol, _p_FIX__TriggerSymbolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSides, _p_FIX__NoSidesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryTime, _p_FIX__MDEntryTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReportToExch, _p_FIX__ReportToExchTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSubject, _p_FIX__EncodedSubjectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Subject, _p_FIX__SubjectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocLinkID, _p_FIX__AllocLinkIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeLinkID, _p_FIX__TradeLinkIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBidPx, _p_FIX__LegBidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLotTypeRules, _p_FIX__NoLotTypeRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOrdTypeRules, _p_FIX__NoOrdTypeRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueMax, _p_FIX__ApplQueueMaxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FundRenewWaiv, _p_FIX__FundRenewWaivTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Adjustment, _p_FIX__AdjustmentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecPriceAdjustment, _p_FIX__ExecPriceAdjustmentTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetSubID, _p_FIX__TargetSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPriceTimeType, _p_FIX__ComplexEventPriceTimeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOfferPx, _p_FIX__LegOfferPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MktOfferPx, _p_FIX__MktOfferPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferPx, _p_FIX__OfferPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPool, _p_FIX__LegPoolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMDFeedTypes, _p_FIX__NoMDFeedTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidPx, _p_FIX__BidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastSpotRate, _p_FIX__LastSpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferSpotRate, _p_FIX__OfferSpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidSpotRate, _p_FIX__BidSpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntrySpotRate, _p_FIX__MDEntrySpotRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityXMLSchema, _p_FIX__DerivativeSecurityXMLSchemaTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityXMLSchema, _p_FIX__SecurityXMLSchemaTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstCode, _p_FIX__SettlInstCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenInterest, _p_FIX__OpenInterestTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumDaysInterest, _p_FIX__NumDaysInterestTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideValueInd, _p_FIX__SideValueIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegMaturityMonthYear, _p_FIX__UnderlyingLegMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndMaturityMonthYear, _p_FIX__EndMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityMonthYear, _p_FIX__UnderlyingMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMaturityMonthYear, _p_FIX__DerivativeMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYear, _p_FIX__MaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartMaturityMonthYear, _p_FIX__StartMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegMaturityMonthYear, _p_FIX__LegMaturityMonthYearTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoIOIQualifiers, _p_FIX__NoIOIQualifiersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoQuoteQualifiers, _p_FIX__NoQuoteQualifiersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDOriginType, _p_FIX__MDOriginTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderQty, _p_FIX__OrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOrderQty, _p_FIX__LegOrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashOrderQty, _p_FIX__CashOrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayOrderQty, _p_FIX__DayOrderQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeInputDevice, _p_FIX__TradeInputDeviceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderInputDevice, _p_FIX__OrderInputDeviceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoutingID, _p_FIX__RoutingIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlOblig, _p_FIX__NoSettlObligTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingLegSecurityAltID, _p_FIX__NoUnderlyingLegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityAltID, _p_FIX__UnderlyingSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUnderlyingSecurityAltID, _p_FIX__NoUnderlyingSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityAltID, _p_FIX__LegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegSecurityAltID, _p_FIX__NoLegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityAltID, _p_FIX__SecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSecurityAltID, _p_FIX__NoSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityAltID, _p_FIX__UnderlyingLegSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeSecurityAltID, _p_FIX__NoDerivativeSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityAltID, _p_FIX__DerivativeSecurityAltIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SendingTime, _p_FIX__SendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfSendingTime, _p_FIX__OnBehalfOfSendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigSendingTime, _p_FIX__OrigSendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HopSendingTime, _p_FIX__HopSendingTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListExecInst, _p_FIX__ListExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegExecInst, _p_FIX__LegExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListExecInst, _p_FIX__EncodedListExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecInst, _p_FIX__ExecInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LinesOfText, _p_FIX__LinesOfTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLinesOfText, _p_FIX__NoLinesOfTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDepositoryCode, _p_FIX__SettlDepositoryCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradedFlatSwitch, _p_FIX__TradedFlatSwitchTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClOrdLinkID, _p_FIX__ClOrdLinkIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTimeInForceRules, _p_FIX__NoTimeInForceRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStrikeRules, _p_FIX__NoStrikeRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkPrice, _p_FIX__BenchmarkPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkPrice, _p_FIX__LegBenchmarkPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DueToRelated, _p_FIX__DueToRelatedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDlvyInst, _p_FIX__NoDlvyInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DlvyInst, _p_FIX__DlvyInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AccruedInterestRate, _p_FIX__AccruedInterestRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecureData, _p_FIX__SecureDataTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MessageEncoding, _p_FIX__MessageEncodingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpireDate, _p_FIX__ExpireDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BasisFeatureDate, _p_FIX__BasisFeatureDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayWhen, _p_FIX__DisplayWhenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StartTickPriceRange, _p_FIX__StartTickPriceRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndTickPriceRange, _p_FIX__EndTickPriceRangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoCompIDs, _p_FIX__NoCompIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BookingRefID, _p_FIX__BookingRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__WtAverageLiquidity, _p_FIX__WtAverageLiquidityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceImprovement, _p_FIX__PriceImprovementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdSubTyp, _p_FIX__SideTrdSubTypTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TickIncrement, _p_FIX__TickIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYearIncrement, _p_FIX__MaturityMonthYearIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MatchIncrement, _p_FIX__MatchIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeIncrement, _p_FIX__StrikeIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMinPriceIncrement, _p_FIX__DerivativeMinPriceIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinPriceIncrement, _p_FIX__MinPriceIncrementTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecType, _p_FIX__ExecTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MailingDtls, _p_FIX__MailingDtlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HaltReasonChar, _p_FIX__HaltReasonCharTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ModelType, _p_FIX__ModelTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEventText, _p_FIX__DerivativeEventTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EventText, _p_FIX__EventTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IndividualAllocRejCode, _p_FIX__IndividualAllocRejCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocRejCode, _p_FIX__AllocRejCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstReqRejCode, _p_FIX__SettlInstReqRejCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerNewPrice, _p_FIX__TriggerNewPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingFirm, _p_FIX__ClearingFirmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlementCycleNo, _p_FIX__SettlementCycleNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RelSymTransactTime, _p_FIX__RelSymTransactTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TZTransactTime, _p_FIX__TZTransactTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TransactTime, _p_FIX__TransactTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPriceUnitOfMeasureQty, _p_FIX__UnderlyingPriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceUnitOfMeasureQty, _p_FIX__PriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePriceUnitOfMeasureQty, _p_FIX__DerivativePriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeUnitOfMeasureQty, _p_FIX__DerivativeUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnitOfMeasureQty, _p_FIX__UnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingUnitOfMeasureQty, _p_FIX__UnderlyingUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPriceUnitOfMeasureQty, _p_FIX__LegPriceUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegUnitOfMeasureQty, _p_FIX__LegUnitOfMeasureQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsRefID, _p_FIX__NewsRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryType, _p_FIX__MDEntryTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgParPx, _p_FIX__AvgParPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIQltyInd, _p_FIX__IOIQltyIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAllocs, _p_FIX__NoAllocsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoAllocs, _p_FIX__TotNoAllocsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoLegAllocs, _p_FIX__NoLegAllocsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistDtls, _p_FIX__RegistDtlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRegistDtls, _p_FIX__NoRegistDtlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskOrderHandlingInst, _p_FIX__DeskOrderHandlingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__GTBookingInst, _p_FIX__GTBookingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustOrderHandlingInst, _p_FIX__CustOrderHandlingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MailingInst, _p_FIX__MailingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayBookingInst, _p_FIX__DayBookingInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPrice, _p_FIX__LegPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplVerID, _p_FIX__RefApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CstmApplVerID, _p_FIX__CstmApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultApplVerID, _p_FIX__DefaultApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefCstmApplVerID, _p_FIX__RefCstmApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplVerID, _p_FIX__ApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultCstmApplVerID, _p_FIX__DefaultCstmApplVerIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DateOfBirth, _p_FIX__DateOfBirthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastMsgSeqNumProcessed, _p_FIX__LastMsgSeqNumProcessedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligRefID, _p_FIX__SettlObligRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRefID, _p_FIX__LegRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraLegRefID, _p_FIX__ContraLegRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeLegRefID, _p_FIX__TradeLegRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRateSources, _p_FIX__NoRateSourcesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotionalPercentageOutstanding, _p_FIX__NotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashOutstanding, _p_FIX__CashOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingNotionalPercentageOutstanding, _p_FIX__UnderlyingNotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OriginalNotionalPercentageOutstanding, _p_FIX__OriginalNotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdMatchID, _p_FIX__TrdMatchIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliverToCompID, _p_FIX__DeliverToCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocPrice, _p_FIX__AllocPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StringField, _p_FIX__StringFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocSettlInstType, _p_FIX__AllocSettlInstTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListExecInstType, _p_FIX__ListExecInstTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DlvyInstType, _p_FIX__DlvyInstTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingSessionID, _p_FIX__TradingSessionIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerTradingSessionID, _p_FIX__TriggerTradingSessionIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingTradingSessionID, _p_FIX__UnderlyingTradingSessionIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegScope, _p_FIX__PegScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoAccQuotes, _p_FIX__TotNoAccQuotesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryID, _p_FIX__CollInquiryIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecRefID, _p_FIX__ExecRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CxlRejResponseTo, _p_FIX__CxlRejResponseToTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Price, _p_FIX__PriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LotType, _p_FIX__LotTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdRegTimestampSrc, _p_FIX__SideTrdRegTimestampSrcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EmailType, _p_FIX__EmailTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeOptAttribute, _p_FIX__DerivativeOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegOptAttribute, _p_FIX__UnderlyingLegOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptAttribute, _p_FIX__OptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingOptAttribute, _p_FIX__UnderlyingOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOptAttribute, _p_FIX__LegOptAttributeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlLocation, _p_FIX__SettlLocationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EffectiveTime, _p_FIX__EffectiveTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnReqID, _p_FIX__StreamAsgnReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteCancelType, _p_FIX__QuoteCancelTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Scope, _p_FIX__ScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpireTime, _p_FIX__ExpireTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlBrkrCode, _p_FIX__SettlBrkrCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PreTradeAnonymity, _p_FIX__PreTradeAnonymityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoutingType, _p_FIX__RoutingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideMultiLegReportingType, _p_FIX__SideMultiLegReportingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BookingType, _p_FIX__BookingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRestructuringType, _p_FIX__UnderlyingRestructuringTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RestructuringType, _p_FIX__RestructuringTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultiLegReportingType, _p_FIX__MultiLegReportingTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StatusValue, _p_FIX__StatusValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllowableOneSidednessValue, _p_FIX__AllowableOneSidednessValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTrdRegTimestamps, _p_FIX__NoTrdRegTimestampsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListID, _p_FIX__ListIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListID, _p_FIX__SecurityListIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliveryType, _p_FIX__DeliveryTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDeliveryType, _p_FIX__SettlDeliveryTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PrivateQuote, _p_FIX__PrivateQuoteTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedHeadlineLen, _p_FIX__EncodedHeadlineLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BasisPxType, _p_FIX__BasisPxTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityRuleID, _p_FIX__MaturityRuleIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeRuleID, _p_FIX__StrikeRuleIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteMsgID, _p_FIX__QuoteMsgIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskType, _p_FIX__DeskTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrategyParameterName, _p_FIX__StrategyParameterNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardHolderName, _p_FIX__CardHolderNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RptSys, _p_FIX__RptSysTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegQty, _p_FIX__LegQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoSecurityTypes, _p_FIX__TotNoSecurityTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMDEntryTypes, _p_FIX__NoMDEntryTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNumSecurityTypes, _p_FIX__TotalNumSecurityTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSecurityTypes, _p_FIX__NoSecurityTypesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxPriceLevels, _p_FIX__MaxPriceLevelsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefCompID, _p_FIX__RefCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SenderCompID, _p_FIX__SenderCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetCompID, _p_FIX__TargetCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HopCompID, _p_FIX__HopCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfCompID, _p_FIX__OnBehalfOfCompIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListStatusType, _p_FIX__ListStatusTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDBookType, _p_FIX__MDBookTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDSubBookType, _p_FIX__MDSubBookTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityRequestType, _p_FIX__SecurityRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListRequestType, _p_FIX__SecurityListRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRequestType, _p_FIX__QuoteRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListType, _p_FIX__SecurityListTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestType, _p_FIX__TradeRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserRequestType, _p_FIX__UserRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkRequestType, _p_FIX__NetworkRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SubscriptionRequestType, _p_FIX__SubscriptionRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassCancelRequestType, _p_FIX__MassCancelRequestTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedIssuerLen, _p_FIX__EncodedIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegIssuerLen, _p_FIX__EncodedLegIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedIssuerLen, _p_FIX__DerivativeEncodedIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingIssuerLen, _p_FIX__EncodedUnderlyingIssuerLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoRejQuotes, _p_FIX__TotNoRejQuotesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoCxldQuotes, _p_FIX__TotNoCxldQuotesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeProductComplex, _p_FIX__DerivativeProductComplexTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProductComplex, _p_FIX__ProductComplexTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustOrderCapacity, _p_FIX__CustOrderCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigCustOrderCapacity, _p_FIX__OrigCustOrderCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocCustomerCapacity, _p_FIX__AllocCustomerCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastCapacity, _p_FIX__LastCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DealingCapacity, _p_FIX__DealingCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderCapacity, _p_FIX__OrderCapacityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityNumSecurities, _p_FIX__LiquidityNumSecuritiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNumSecurities, _p_FIX__TotalNumSecuritiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistEmail, _p_FIX__RegistEmailTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideComplianceID, _p_FIX__SideComplianceIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplianceID, _p_FIX__ComplianceIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndSeqNo, _p_FIX__EndSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartySubID, _p_FIX__UndlyInstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartySubID, _p_FIX__DerivativeInstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartySubID, _p_FIX__Nested3PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartySubID, _p_FIX__Nested4PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartySubID, _p_FIX__UnderlyingInstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartySubID, _p_FIX__SettlPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartySubID, _p_FIX__PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartySubID, _p_FIX__RootPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartySubID, _p_FIX__InstrumentPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartySubID, _p_FIX__NestedPartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartySubID, _p_FIX__Nested2PartySubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnAckType, _p_FIX__StreamAsgnAckTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRegTimestampOrigin, _p_FIX__TrdRegTimestampOriginTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribPayRef, _p_FIX__CashDistribPayRefTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistAcctType, _p_FIX__RegistAcctTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DistribPercentage, _p_FIX__DistribPercentageTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMarketSegments, _p_FIX__NoMarketSegmentsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIOthSvc, _p_FIX__IOIOthSvcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExchangeRule, _p_FIX__ExchangeRuleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReceivedDeptID, _p_FIX__ReceivedDeptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefTagID, _p_FIX__RefTagIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProgRptReqs, _p_FIX__ProgRptReqsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CcyAmt, _p_FIX__CcyAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListSeqNo, _p_FIX__ListSeqNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LowPx, _p_FIX__LowPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustDirectedOrder, _p_FIX__CustDirectedOrderTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDStreamID, _p_FIX__MDStreamIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntrySize, _p_FIX__MDEntrySizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetStrategyPerformance, _p_FIX__TargetStrategyPerformanceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoHops, _p_FIX__NoHopsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EFPTrackingError, _p_FIX__EFPTrackingErrorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MktBidPx, _p_FIX__MktBidPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AsgnRptID, _p_FIX__AsgnRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnRptID, _p_FIX__StreamAsgnRptIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxFloor, _p_FIX__MaxFloorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocInterestAtMaturity, _p_FIX__AllocInterestAtMaturityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InterestAtMaturity, _p_FIX__InterestAtMaturityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideExecID, _p_FIX__SideExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecID, _p_FIX__ExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryExecID, _p_FIX__SecondaryExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Spread, _p_FIX__SpreadTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDSecSizeType, _p_FIX__MDSecSizeTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CustomerOrFirm, _p_FIX__CustomerOrFirmTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityDescLen, _p_FIX__EncodedSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityListDescLen, _p_FIX__EncodedSecurityListDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingSecurityDescLen, _p_FIX__EncodedUnderlyingSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedSecurityDescLen, _p_FIX__DerivativeEncodedSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedMktSegmDescLen, _p_FIX__EncodedMktSegmDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegSecurityDescLen, _p_FIX__EncodedLegSecurityDescLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryOriginator, _p_FIX__MDEntryOriginatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FutSettDate, _p_FIX__FutSettDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegFutSettDate, _p_FIX__LegFutSettDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidDescriptorType, _p_FIX__BidDescriptorTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoMiscFees, _p_FIX__NoMiscFeesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExDate, _p_FIX__ExDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegMoveType, _p_FIX__PegMoveTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionMoveType, _p_FIX__DiscretionMoveTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Price2, _p_FIX__Price2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClientID, _p_FIX__ClientIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RawDataLength, _p_FIX__RawDataLengthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BodyLength, _p_FIX__BodyLengthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SignatureLength, _p_FIX__SignatureLengthTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoClearingInstructions, _p_FIX__NoClearingInstructionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderRestrictions, _p_FIX__OrderRestrictionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExchangeSpecialInstructions, _p_FIX__ExchangeSpecialInstructionsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntrySeller, _p_FIX__MDEntrySellerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDSecSize, _p_FIX__MDSecSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinLotSize, _p_FIX__MinLotSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityDay, _p_FIX__UnderlyingMaturityDayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityDay, _p_FIX__MaturityDayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionResponse, _p_FIX__MassActionResponseTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassCancelResponse, _p_FIX__MassCancelResponseTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideFillStationCd, _p_FIX__SideFillStationCdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocShares, _p_FIX__AllocSharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Shares, _p_FIX__SharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIShares, _p_FIX__IOISharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartyID, _p_FIX__UndlyInstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetPartyID, _p_FIX__TargetPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartyID, _p_FIX__NestedPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartyID, _p_FIX__Nested3PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartyID, _p_FIX__UnderlyingInstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartyID, _p_FIX__SettlPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartyID, _p_FIX__Nested4PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartyID, _p_FIX__PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartyID, _p_FIX__RootPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartyID, _p_FIX__DerivativeInstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartyID, _p_FIX__InstrumentPartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartyID, _p_FIX__Nested2PartyIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueResolution, _p_FIX__ApplQueueResolutionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayAvgPx, _p_FIX__DayAvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityXMLLen, _p_FIX__SecurityXMLLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityXMLLen, _p_FIX__DerivativeSecurityXMLLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRoutingIDs, _p_FIX__NoRoutingIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryID, _p_FIX__MDEntryIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteEntryID, _p_FIX__QuoteEntryIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillExecID, _p_FIX__FillExecIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InvestorCountryOfResidence, _p_FIX__InvestorCountryOfResidenceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriorSpreadIndicator, _p_FIX__PriorSpreadIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefreshIndicator, _p_FIX__RefreshIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultVerIndicator, _p_FIX__DefaultVerIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeAllocIndicator, _p_FIX__TradeAllocIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRepIndicator, _p_FIX__TrdRepIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PublishTrdIndicator, _p_FIX__PublishTrdIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradePublishIndicator, _p_FIX__TradePublishIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CopyMsgIndicator, _p_FIX__CopyMsgIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ImpliedMarketIndicator, _p_FIX__ImpliedMarketIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnsolicitedIndicator, _p_FIX__UnsolicitedIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LateIndicator, _p_FIX__LateIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FlexibleIndicator, _p_FIX__FlexibleIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AutoAcceptIndicator, _p_FIX__AutoAcceptIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivFlexProductEligibilityIndicator, _p_FIX__DerivFlexProductEligibilityIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPxIndicator, _p_FIX__AvgPxIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TestMessageIndicator, _p_FIX__TestMessageIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__WorkingIndicator, _p_FIX__WorkingIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ManualOrderIndicator, _p_FIX__ManualOrderIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraryInstructionIndicator, _p_FIX__ContraryInstructionIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ReversalIndicator, _p_FIX__ReversalIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriorityIndicator, _p_FIX__PriorityIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FlexProductEligibilityIndicator, _p_FIX__FlexProductEligibilityIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AggressorIndicator, _p_FIX__AggressorIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocClearingFeeIndicator, _p_FIX__AllocClearingFeeIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingFeeIndicator, _p_FIX__ClearingFeeIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AsOfIndicator, _p_FIX__AsOfIndicatorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTradingSessionRules, _p_FIX__NoTradingSessionRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplID, _p_FIX__ApplIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AgreementID, _p_FIX__AgreementIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketSegmentID, _p_FIX__MarketSegmentIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPrice, _p_FIX__ComplexEventPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraBroker, _p_FIX__ContraBrokerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecBroker, _p_FIX__ExecBrokerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFXRateCalc, _p_FIX__UnderlyingFXRateCalcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrFxRateCalc, _p_FIX__SettlCurrFxRateCalcTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradeReportRefID, _p_FIX__SecondaryTradeReportRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintRptRefID, _p_FIX__PosMaintRptRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocReportRefID, _p_FIX__AllocReportRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportRefID, _p_FIX__TradeReportRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpirationCycle, _p_FIX__ExpirationCycleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ResetSeqNumFlag, _p_FIX__ResetSeqNumFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriorSettlPrice, _p_FIX__PriorSettlPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlPrice, _p_FIX__UnderlyingSettlPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPrice, _p_FIX__SettlPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideLiquidityInd, _p_FIX__SideLiquidityIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastLiquidityInd, _p_FIX__LastLiquidityIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillLiquidityInd, _p_FIX__FillLiquidityIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIssuer, _p_FIX__LegIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingIssuer, _p_FIX__EncodedUnderlyingIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeIssuer, _p_FIX__DerivativeIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingIssuer, _p_FIX__UnderlyingIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegIssuer, _p_FIX__EncodedLegIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Issuer, _p_FIX__IssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingSessionDesc, _p_FIX__TradingSessionDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnReqType, _p_FIX__StreamAsgnReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocIntermedReqType, _p_FIX__AllocIntermedReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqType, _p_FIX__PosReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassStatusReqType, _p_FIX__MassStatusReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReqType, _p_FIX__ApplReqTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastShares, _p_FIX__LastSharesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FillPx, _p_FIX__FillPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingFXRate, _p_FIX__UnderlyingFXRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityExchange, _p_FIX__DerivativeSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityExchange, _p_FIX__UnderlyingLegSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityExchange, _p_FIX__SecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityExchange, _p_FIX__LegSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityExchange, _p_FIX__UnderlyingSecurityExchangeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldType, _p_FIX__YieldTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardIssNo, _p_FIX__CardIssNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingEndPrice, _p_FIX__UnderlyingEndPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocQty, _p_FIX__AllocQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocQty, _p_FIX__LegAllocQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmID, _p_FIX__ConfirmIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PartySubIDType, _p_FIX__PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrumentPartySubIDType, _p_FIX__InstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RootPartySubIDType, _p_FIX__RootPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrumentPartySubIDType, _p_FIX__DerivativeInstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested2PartySubIDType, _p_FIX__Nested2PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UndlyInstrumentPartySubIDType, _p_FIX__UndlyInstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingInstrumentPartySubIDType, _p_FIX__UnderlyingInstrumentPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPartySubIDType, _p_FIX__SettlPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested3PartySubIDType, _p_FIX__Nested3PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedPartySubIDType, _p_FIX__NestedPartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Nested4PartySubIDType, _p_FIX__Nested4PartySubIDTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SolicitedFlag, _p_FIX__SolicitedFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MiscFeeAmt, _p_FIX__MiscFeeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RedemptionDate, _p_FIX__RedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeOriginationDate, _p_FIX__TradeOriginationDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRedemptionDate, _p_FIX__LegRedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRedemptionDate, _p_FIX__UnderlyingRedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldRedemptionDate, _p_FIX__YieldRedemptionDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedListStatusText, _p_FIX__EncodedListStatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListStatusText, _p_FIX__ListStatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StatusText, _p_FIX__StatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserStatusText, _p_FIX__UserStatusTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OutsideIndexPct, _p_FIX__OutsideIndexPctTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPosAmt, _p_FIX__NoPosAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosAmt, _p_FIX__PosAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Headline, _p_FIX__HeadlineTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedHeadline, _p_FIX__EncodedHeadlineTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AttachmentPoint, _p_FIX__AttachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DetachmentPoint, _p_FIX__DetachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingAttachmentPoint, _p_FIX__UnderlyingAttachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingDetachmentPoint, _p_FIX__UnderlyingDetachmentPointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalVolumeTradedDate, _p_FIX__TotalVolumeTradedDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegDatedDate, _p_FIX__LegDatedDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DatedDate, _p_FIX__DatedDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIQty, _p_FIX__IOIQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIOIQty, _p_FIX__LegIOIQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastRptRequested, _p_FIX__LastRptRequestedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCouponRate, _p_FIX__UnderlyingCouponRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CouponRate, _p_FIX__CouponRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCouponRate, _p_FIX__LegCouponRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplID, _p_FIX__RefApplIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSideTrdRegTS, _p_FIX__NoSideTrdRegTSTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LowLimitPrice, _p_FIX__LowLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryLowLimitPrice, _p_FIX__SecondaryLowLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HighLimitPrice, _p_FIX__HighLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryHighLimitPrice, _p_FIX__SecondaryHighLimitPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStartValue, _p_FIX__UnderlyingStartValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCurrentValue, _p_FIX__UnderlyingCurrentValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoApplIDs, _p_FIX__NoApplIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentName, _p_FIX__SecuritySettlAgentNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentName, _p_FIX__CashDistribAgentNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentName, _p_FIX__CashSettlAgentNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistRefID, _p_FIX__RegistRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BusinessRejectRefID, _p_FIX__BusinessRejectRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstRefID, _p_FIX__SettlInstRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityListRefID, _p_FIX__SecurityListRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeCapPrice, _p_FIX__DerivativeCapPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CapPrice, _p_FIX__CapPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IntField, _p_FIX__IntFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentContactPhone, _p_FIX__CashSettlAgentContactPhoneTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentContactPhone, _p_FIX__SecuritySettlAgentContactPhoneTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RejectText, _p_FIX__RejectTextTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoundLot, _p_FIX__RoundLotTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HopRefID, _p_FIX__HopRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingExerciseStyle, _p_FIX__UnderlyingExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegExerciseStyle, _p_FIX__LegExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeExerciseStyle, _p_FIX__StrikeExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExerciseStyle, _p_FIX__ExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeExerciseStyle, _p_FIX__DerivativeExerciseStyleTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStrikes, _p_FIX__NoStrikesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoStrikes, _p_FIX__TotNoStrikesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAsgnReqs, _p_FIX__NoAsgnReqsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedIssuer, _p_FIX__DerivativeEncodedIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedIssuer, _p_FIX__EncodedIssuerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OddLot, _p_FIX__OddLotTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CheckSum, _p_FIX__CheckSumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferYield, _p_FIX__OfferYieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PeggedPrice, _p_FIX__PeggedPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingEndValue, _p_FIX__UnderlyingEndValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliverToLocationID, _p_FIX__DeliverToLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfLocationID, _p_FIX__OnBehalfOfLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetLocationID, _p_FIX__TargetLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LocationID, _p_FIX__LocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SenderLocationID, _p_FIX__SenderLocationIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__URLLink, _p_FIX__URLLinkTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribCurr, _p_FIX__CashDistribCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContingencyType, _p_FIX__ContingencyTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityStatusReqID, _p_FIX__SecurityStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqID, _p_FIX__PosReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesReqID, _p_FIX__TradSesReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassStatusReqID, _p_FIX__MassStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteStatusReqID, _p_FIX__QuoteStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdStatusReqID, _p_FIX__OrdStatusReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProgPeriodInterval, _p_FIX__ProgPeriodIntervalTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalTakedown, _p_FIX__TotalTakedownTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRepurchaseRate, _p_FIX__LegRepurchaseRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RepurchaseRate, _p_FIX__RepurchaseRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRepurchaseRate, _p_FIX__UnderlyingRepurchaseRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastParPx, _p_FIX__LastParPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BeginString, _p_FIX__BeginStringTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDistribInsts, _p_FIX__NoDistribInstsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityPctLow, _p_FIX__LiquidityPctLowTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardIssNum, _p_FIX__CardIssNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefMsgType, _p_FIX__RefMsgTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MsgType, _p_FIX__MsgTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoFills, _p_FIX__TotNoFillsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoFills, _p_FIX__NoFillsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesCloseTime, _p_FIX__TradSesCloseTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesPreCloseTime, _p_FIX__TradSesPreCloseTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayHighQty, _p_FIX__DisplayHighQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidDescriptor, _p_FIX__BidDescriptorTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnRespType, _p_FIX__CollAsgnRespTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteRespType, _p_FIX__QuoteRespTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ParticipationRate, _p_FIX__ParticipationRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeVolume, _p_FIX__TradeVolumeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BuyVolume, _p_FIX__BuyVolumeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecInstValue, _p_FIX__ExecInstValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegOffsetValue, _p_FIX__PegOffsetValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContAmtValue, _p_FIX__ContAmtValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionOffsetValue, _p_FIX__DiscretionOffsetValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalNetValue, _p_FIX__TotalNetValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIid, _p_FIX__IOIidTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeTime, _p_FIX__StrikeTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HeartBtInt, _p_FIX__HeartBtIntTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStipValue, _p_FIX__UnderlyingStipValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCapValue, _p_FIX__UnderlyingCapValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedNewPasswordLen, _p_FIX__EncryptedNewPasswordLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedPasswordLen, _p_FIX__EncryptedPasswordLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikeMultiplier, _p_FIX__DerivativeStrikeMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeContractMultiplier, _p_FIX__DerivativeContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikeMultiplier, _p_FIX__StrikeMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingContractMultiplier, _p_FIX__UnderlyingContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegContractMultiplier, _p_FIX__LegContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContractMultiplier, _p_FIX__ContractMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FeeMultiplier, _p_FIX__FeeMultiplierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistRejReasonCode, _p_FIX__RegistRejReasonCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ForexReq, _p_FIX__ForexReqTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Side, _p_FIX__SideTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDMkt, _p_FIX__MDMktTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlSessID, _p_FIX__SettlSessIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UtcTimeStampField, _p_FIX__UtcTimeStampFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LanguageCode, _p_FIX__LanguageCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSubjectLen, _p_FIX__EncodedSubjectLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsRefType, _p_FIX__NewsRefTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalVolumeTradedTime, _p_FIX__TotalVolumeTradedTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__WaveNo, _p_FIX__WaveNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalVolumeTraded, _p_FIX__TotalVolumeTradedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoContraBrokers, _p_FIX__NoContraBrokersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OutMainCntryUIndex, _p_FIX__OutMainCntryUIndexTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HighPx, _p_FIX__HighPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BoolField, _p_FIX__BoolFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPx, _p_FIX__UnderlyingPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NewsID, _p_FIX__NewsIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContraTrader, _p_FIX__ContraTraderTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTrades, _p_FIX__NoTradesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllowableOneSidednessPct, _p_FIX__AllowableOneSidednessPctTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplBegSeqNum, _p_FIX__ApplBegSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MsgSeqNum, _p_FIX__MsgSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplNewSeqNum, _p_FIX__ApplNewSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NextExpectedMsgSeqNum, _p_FIX__NextExpectedMsgSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Volatility, _p_FIX__VolatilityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegVolatility, _p_FIX__LegVolatilityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNewsRefIDs, _p_FIX__NoNewsRefIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContAmtCurr, _p_FIX__ContAmtCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StandInstDbType, _p_FIX__StandInstDbTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingInstruction, _p_FIX__ClearingInstructionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastMkt, _p_FIX__LastMktTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityResponseType, _p_FIX__SecurityResponseTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResponseType, _p_FIX__ApplResponseTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetworkStatusResponseType, _p_FIX__NetworkStatusResponseTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryAllocID, _p_FIX__SecondaryAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IndividualAllocID, _p_FIX__IndividualAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefAllocID, _p_FIX__RefAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryIndividualAllocID, _p_FIX__SecondaryIndividualAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegAllocID, _p_FIX__LegAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegIndividualAllocID, _p_FIX__LegIndividualAllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocID, _p_FIX__AllocIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EmailThreadID, _p_FIX__EmailThreadIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SellVolume, _p_FIX__SellVolumeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeEncodedSecurityDesc, _p_FIX__DerivativeEncodedSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityDesc, _p_FIX__DerivativeSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSecurityDesc, _p_FIX__TriggerSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSecurityDesc, _p_FIX__PegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityDesc, _p_FIX__UnderlyingLegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityDesc, _p_FIX__UnderlyingSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityDesc, _p_FIX__SecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedUnderlyingSecurityDesc, _p_FIX__EncodedUnderlyingSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedLegSecurityDesc, _p_FIX__EncodedLegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncodedSecurityDesc, _p_FIX__EncodedSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityDesc, _p_FIX__LegSecurityDescTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoComplexEventTimes, _p_FIX__NoComplexEventTimesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CardExpDate, _p_FIX__CardExpDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndAccruedInterestAmt, _p_FIX__EndAccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalAccruedInterestAmt, _p_FIX__TotalAccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AccruedInterestAmt, _p_FIX__AccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocAccruedInterestAmt, _p_FIX__AllocAccruedInterestAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingContractMultiplierUnit, _p_FIX__UnderlyingContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeContractMultiplierUnit, _p_FIX__DerivativeContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegContractMultiplierUnit, _p_FIX__LegContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ContractMultiplierUnit, _p_FIX__ContractMultiplierUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSide, _p_FIX__LegSideTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoStrategyParameters, _p_FIX__NoStrategyParametersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetStrategyParameters, _p_FIX__TargetStrategyParametersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoCapacities, _p_FIX__NoCapacitiesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityDate, _p_FIX__UnderlyingMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegMaturityDate, _p_FIX__LegMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityDate, _p_FIX__MaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuantityDate, _p_FIX__QuantityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegMaturityDate, _p_FIX__UnderlyingLegMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMaturityDate, _p_FIX__DerivativeMaturityDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionRoundDirection, _p_FIX__DiscretionRoundDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MsgDirection, _p_FIX__MsgDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TickDirection, _p_FIX__TickDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPriceDirection, _p_FIX__TriggerPriceDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RoundingDirection, _p_FIX__RoundingDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegRoundDirection, _p_FIX__PegRoundDirectionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PossResend, _p_FIX__PossResendTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RateSourceType, _p_FIX__RateSourceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityGroup, _p_FIX__DerivativeSecurityGroupTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityGroup, _p_FIX__SecurityGroupTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoOrders, _p_FIX__TotNoOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOrders, _p_FIX__NoOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqResult, _p_FIX__PosReqResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryResult, _p_FIX__CollInquiryResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegDifference, _p_FIX__PegDifferenceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CorporateAction, _p_FIX__CorporateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesUpdateAction, _p_FIX__TradSesUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityUpdateAction, _p_FIX__SecurityUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListUpdateAction, _p_FIX__ListUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketUpdateAction, _p_FIX__MarketUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDUpdateAction, _p_FIX__MDUpdateActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplQueueAction, _p_FIX__ApplQueueActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionInst, _p_FIX__DiscretionInstTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PreviouslyReported, _p_FIX__PreviouslyReportedTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinTradeVol, _p_FIX__MinTradeVolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxTradeVol, _p_FIX__MaxTradeVolTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllowableOneSidednessCurr, _p_FIX__AllowableOneSidednessCurrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocNoOrdersType, _p_FIX__AllocNoOrdersTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteAckStatus, _p_FIX__QuoteAckStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesStatus, _p_FIX__TradSesStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryStatus, _p_FIX__CollInquiryStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteEntryStatus, _p_FIX__QuoteEntryStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteStatus, _p_FIX__QuoteStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmStatus, _p_FIX__ConfirmStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AffirmStatus, _p_FIX__AffirmStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosQtyStatus, _p_FIX__PosQtyStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityTradingStatus, _p_FIX__SecurityTradingStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocStatus, _p_FIX__AllocStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosReqStatus, _p_FIX__PosReqStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityStatus, _p_FIX__DerivativeSecurityStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityStatus, _p_FIX__SecurityStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecAckStatus, _p_FIX__ExecAckStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MoneyLaunderingStatus, _p_FIX__MoneyLaunderingStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplSeqNum, _p_FIX__ApplSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefSeqNum, _p_FIX__RefSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplLastSeqNum, _p_FIX__ApplLastSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplLastSeqNum, _p_FIX__RefApplLastSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplEndSeqNum, _p_FIX__ApplEndSeqNumTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingQty, _p_FIX__UnderlyingQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderBookingQty, _p_FIX__OrderBookingQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCPProgram, _p_FIX__UnderlyingCPProgramTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CPProgram, _p_FIX__CPProgramTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryPx, _p_FIX__MDEntryPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvTransType, _p_FIX__AdvTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocTransType, _p_FIX__AllocTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOITransType, _p_FIX__IOITransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecTransType, _p_FIX__ExecTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidRequestTransType, _p_FIX__BidRequestTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistTransType, _p_FIX__RegistTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstTransType, _p_FIX__SettlInstTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligTransType, _p_FIX__SettlObligTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnTransType, _p_FIX__CollAsgnTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeReportTransType, _p_FIX__TradeReportTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmTransType, _p_FIX__ConfirmTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosTransType, _p_FIX__PosTransTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastForwardPoints2, _p_FIX__LastForwardPoints2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferForwardPoints2, _p_FIX__OfferForwardPoints2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidForwardPoints2, _p_FIX__BidForwardPoints2To_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAsgnID, _p_FIX__CollAsgnIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenClose, _p_FIX__OpenCloseTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocPositionEffect, _p_FIX__AllocPositionEffectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPositionEffect, _p_FIX__LegPositionEffectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PositionEffect, _p_FIX__PositionEffectTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested2PartySubIDs, _p_FIX__NoNested2PartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPartySubIDs, _p_FIX__NoPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoInstrumentPartySubIDs, _p_FIX__NoInstrumentPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoDerivativeInstrumentPartySubIDs, _p_FIX__NoDerivativeInstrumentPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlPartySubIDs, _p_FIX__NoSettlPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested3PartySubIDs, _p_FIX__NoNested3PartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested4PartySubIDs, _p_FIX__NoNested4PartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNestedPartySubIDs, _p_FIX__NoNestedPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRootPartySubIDs, _p_FIX__NoRootPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoUndlyInstrumentPartySubIDs, _p_FIX__NoUndlyInstrumentPartySubIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IncTaxInd, _p_FIX__IncTaxIndTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RepurchaseTerm, _p_FIX__RepurchaseTermTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRepurchaseTerm, _p_FIX__LegRepurchaseTermTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingRepurchaseTerm, _p_FIX__UnderlyingRepurchaseTermTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RelatdSym, _p_FIX__RelatdSymTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenCloseSettleFlag, _p_FIX__OpenCloseSettleFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistDetls, _p_FIX__RegistDetlsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplExtID, _p_FIX__ApplExtIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefaultApplExtID, _p_FIX__DefaultApplExtIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplExtID, _p_FIX__RefApplExtIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SenderSubID, _p_FIX__SenderSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligMode, _p_FIX__SettlObligModeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TerminationType, _p_FIX__TerminationTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MassActionType, _p_FIX__MassActionTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StipulationType, _p_FIX__StipulationTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStipulationType, _p_FIX__LegStipulationTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlObligID, _p_FIX__SettlObligIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryClOrdID, _p_FIX__SecondaryClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClOrdID, _p_FIX__ClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigClOrdID, _p_FIX__OrigClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NotAffOrigClOrdID, _p_FIX__NotAffOrigClOrdIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentRemitterID, _p_FIX__PaymentRemitterIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidType, _p_FIX__BidTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerTradingSessionSubID, _p_FIX__TriggerTradingSessionSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingSessionSubID, _p_FIX__TradingSessionSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingTradingSessionSubID, _p_FIX__UnderlyingTradingSessionSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketID, _p_FIX__MarketIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TaxAdvantageType, _p_FIX__TaxAdvantageTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlDetails, _p_FIX__NoSettlDetailsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DayCumQty, _p_FIX__DayCumQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RndPx, _p_FIX__RndPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CumQty, _p_FIX__CumQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryPositionNo, _p_FIX__MDEntryPositionNoTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkPriceType, _p_FIX__BenchmarkPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegPriceType, _p_FIX__LegPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlPriceType, _p_FIX__SettlPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkPriceType, _p_FIX__LegBenchmarkPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuotePriceType, _p_FIX__QuotePriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__YieldRedemptionPriceType, _p_FIX__YieldRedemptionPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceType, _p_FIX__PriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegPriceType, _p_FIX__PegPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlPriceType, _p_FIX__UnderlyingSettlPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExecPriceType, _p_FIX__ExecPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPriceType, _p_FIX__TriggerPriceTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoAffectedOrders, _p_FIX__NoAffectedOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotalAffectedOrders, _p_FIX__TotalAffectedOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNotAffectedOrders, _p_FIX__NoNotAffectedOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NumberOfOrders, _p_FIX__NumberOfOrdersTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StreamAsgnType, _p_FIX__StreamAsgnTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityRequestResult, _p_FIX__SecurityRequestResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintResult, _p_FIX__PosMaintResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestResult, _p_FIX__TradeRequestResultTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderDelayUnit, _p_FIX__OrderDelayUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerAction, _p_FIX__TriggerActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollAction, _p_FIX__CollActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintAction, _p_FIX__PosMaintActionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndCash, _p_FIX__EndCashTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefSubID, _p_FIX__RefSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OnBehalfOfSubID, _p_FIX__OnBehalfOfSubIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingDirtyPrice, _p_FIX__UnderlyingDirtyPriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderCapacityQty, _p_FIX__OrderCapacityQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerSecurityID, _p_FIX__TriggerSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSecurityID, _p_FIX__LegSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecurityID, _p_FIX__SecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSecurityID, _p_FIX__DerivativeSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkSecurityID, _p_FIX__BenchmarkSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PegSecurityID, _p_FIX__PegSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSecurityID, _p_FIX__UnderlyingSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegSecurityID, _p_FIX__UnderlyingLegSecurityIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PosMaintStatus, _p_FIX__PosMaintStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollStatus, _p_FIX__CollStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SessionStatus, _p_FIX__SessionStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeRequestStatus, _p_FIX__TradeRequestStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListOrderStatus, _p_FIX__ListOrderStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UserStatus, _p_FIX__UserStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRptStatus, _p_FIX__TrdRptStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FinancialStatus, _p_FIX__FinancialStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlementStatus, _p_FIX__UnderlyingSettlementStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MatchStatus, _p_FIX__MatchStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrdStatus, _p_FIX__OrdStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RegistStatus, _p_FIX__RegistStatusTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrderAvgPx, _p_FIX__OrderAvgPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryRefID, _p_FIX__MDEntryRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecureDataLen, _p_FIX__SecureDataLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__XmlDataLen, _p_FIX__XmlDataLenTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultiLegRptTypeReq, _p_FIX__MultiLegRptTypeReqTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityTime, _p_FIX__MaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingMaturityTime, _p_FIX__UnderlyingMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegMaturityTime, _p_FIX__UnderlyingLegMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegMaturityTime, _p_FIX__LegMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMaturityTime, _p_FIX__DerivativeMaturityTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTickRules, _p_FIX__NoTickRulesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ClearingBusinessDate, _p_FIX__ClearingBusinessDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeNTPositionLimit, _p_FIX__DerivativeNTPositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PositionLimit, _p_FIX__PositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NTPositionLimit, _p_FIX__NTPositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePositionLimit, _p_FIX__DerivativePositionLimitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteSetID, _p_FIX__QuoteSetIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AdvId, _p_FIX__AdvIdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Quantity, _p_FIX__QuantityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingAdjustedQuantity, _p_FIX__UnderlyingAdjustedQuantityTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPayAmount, _p_FIX__UnderlyingPayAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeOptPayAmount, _p_FIX__DerivativeOptPayAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingDeliveryAmount, _p_FIX__UnderlyingDeliveryAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptPayAmount, _p_FIX__OptPayAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ConfirmRefID, _p_FIX__ConfirmRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoContAmts, _p_FIX__NoContAmtsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocType, _p_FIX__AllocTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IndividualAllocType, _p_FIX__IndividualAllocTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SharedCommission, _p_FIX__SharedCommissionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Commission, _p_FIX__CommissionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DiscretionOffset, _p_FIX__DiscretionOffsetTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIRefID, _p_FIX__IOIRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BasisFeaturePrice, _p_FIX__BasisFeaturePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Product, _p_FIX__ProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingProduct, _p_FIX__UnderlyingProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeProduct, _p_FIX__DerivativeProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegProduct, _p_FIX__LegProductTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LocateReqd, _p_FIX__LocateReqdTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__Concession, _p_FIX__ConcessionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CommType, _p_FIX__CommTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxPriceVariation, _p_FIX__MaxPriceVariationTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTradeHandlingInstr, _p_FIX__OrigTradeHandlingInstrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeHandlingInstr, _p_FIX__TradeHandlingInstrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDFeedType, _p_FIX__MDFeedTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TriggerPriceTypeScope, _p_FIX__TriggerPriceTypeScopeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideTrdRegTimestamp, _p_FIX__SideTrdRegTimestampTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TrdRegTimestamp, _p_FIX__TrdRegTimestampTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetChgPrevDay, _p_FIX__NetChgPrevDayTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpQty, _p_FIX__ExpQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AssignmentUnit, _p_FIX__AssignmentUnitTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePriceBoundaryMethod, _p_FIX__StrikePriceBoundaryMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MultilegPriceMethod, _p_FIX__MultilegPriceMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPriceBoundaryMethod, _p_FIX__ComplexEventPriceBoundaryMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocMethod, _p_FIX__AllocMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradSesMethod, _p_FIX__TradSesMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativePriceQuoteMethod, _p_FIX__DerivativePriceQuoteMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PriceQuoteMethod, _p_FIX__PriceQuoteMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PreallocMethod, _p_FIX__PreallocMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExerciseMethod, _p_FIX__ExerciseMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayMethod, _p_FIX__DisplayMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RefApplReqID, _p_FIX__RefApplReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplReqID, _p_FIX__ApplReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollReqID, _p_FIX__CollReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoBidComponents, _p_FIX__NoBidComponentsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LiquidityValue, _p_FIX__LiquidityValueTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradeDate, _p_FIX__TradeDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigTradeDate, _p_FIX__OrigTradeDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListName, _p_FIX__ListNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PctAtRisk, _p_FIX__PctAtRiskTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UtcTimeOnlyField, _p_FIX__UtcTimeOnlyFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TotNoRelatedSym, _p_FIX__TotNoRelatedSymTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRelatedSym, _p_FIX__NoRelatedSymTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingOriginalNotionalPercentageOutstanding, _p_FIX__UnderlyingOriginalNotionalPercentageOutstandingTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDReqID, _p_FIX__MDReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegCurrencyRatio, _p_FIX__LegCurrencyRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CurrencyRatio, _p_FIX__CurrencyRatioTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AllocNetMoney, _p_FIX__AllocNetMoneyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NetMoney, _p_FIX__NetMoneyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityNetMoney, _p_FIX__MaturityNetMoneyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkCurveName, _p_FIX__BenchmarkCurveNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkCurveName, _p_FIX__LegBenchmarkCurveNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigPosReqRefID, _p_FIX__OrigPosReqRefIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__RatioQty, _p_FIX__RatioQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegRatioQty, _p_FIX__LegRatioQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AggregatedBook, _p_FIX__AggregatedBookTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBenchmarkCurvePoint, _p_FIX__LegBenchmarkCurvePointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BenchmarkCurvePoint, _p_FIX__BenchmarkCurvePointTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinPriceIncrementAmount, _p_FIX__MinPriceIncrementAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OptPayoutAmount, _p_FIX__OptPayoutAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCollectAmount, _p_FIX__UnderlyingCollectAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexOptPayoutAmount, _p_FIX__ComplexOptPayoutAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ThresholdAmount, _p_FIX__ThresholdAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeMinPriceIncrementAmount, _p_FIX__DerivativeMinPriceIncrementAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingCashAmount, _p_FIX__UnderlyingCashAmountTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OpenCloseSettlFlag, _p_FIX__OpenCloseSettlFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ApplResendFlag, _p_FIX__ApplResendFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DisplayMinIncr, _p_FIX__DisplayMinIncrTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxShow, _p_FIX__MaxShowTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoExecs, _p_FIX__NoExecsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrFxRate, _p_FIX__SettlCurrFxRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrOfferFxRate, _p_FIX__SettlCurrOfferFxRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlCurrBidFxRate, _p_FIX__SettlCurrBidFxRateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeskID, _p_FIX__DeskIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DeliveryForm, _p_FIX__DeliveryFormTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__HostCrossID, _p_FIX__HostCrossIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OrigCrossID, _p_FIX__OrigCrossIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CrossID, _p_FIX__CrossIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TargetStrategy, _p_FIX__TargetStrategyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentContactName, _p_FIX__CashSettlAgentContactNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashSettlAgentAcctName, _p_FIX__CashSettlAgentAcctNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CashDistribAgentAcctName, _p_FIX__CashDistribAgentAcctNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentAcctName, _p_FIX__SecuritySettlAgentAcctNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecuritySettlAgentContactName, _p_FIX__SecuritySettlAgentContactNameTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoRootPartyIDs, _p_FIX__NoRootPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoTargetPartyIDs, _p_FIX__NoTargetPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested4PartyIDs, _p_FIX__NoNested4PartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNestedPartyIDs, _p_FIX__NoNestedPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested2PartyIDs, _p_FIX__NoNested2PartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoSettlPartyIDs, _p_FIX__NoSettlPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoPartyIDs, _p_FIX__NoPartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoNested3PartyIDs, _p_FIX__NoNested3PartyIDsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoOfSecSizes, _p_FIX__NoOfSecSizesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FirstPx, _p_FIX__FirstPxTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPrxPrecision, _p_FIX__AvgPrxPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AvgPxPrecision, _p_FIX__AvgPxPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingLegStrikePrice, _p_FIX__UnderlyingLegStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegStrikePrice, _p_FIX__LegStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeStrikePrice, _p_FIX__DerivativeStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SecondaryTradingReferencePrice, _p_FIX__SecondaryTradingReferencePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingStrikePrice, _p_FIX__UnderlyingStrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePrice, _p_FIX__StrikePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TradingReferencePrice, _p_FIX__TradingReferencePriceTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePriceBoundaryPrecision, _p_FIX__StrikePriceBoundaryPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventPriceBoundaryPrecision, _p_FIX__ComplexEventPriceBoundaryPrecisionTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaturityMonthYearIncrementUnits, _p_FIX__MaturityMonthYearIncrementUnitsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryBuyer, _p_FIX__MDEntryBuyerTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegSettlDate, _p_FIX__LegSettlDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlDate, _p_FIX__SettlDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EndDate, _p_FIX__EndDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__TestReqID, _p_FIX__TestReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MarketReqID, _p_FIX__MarketReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlInstReqID, _p_FIX__SettlInstReqIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ComplexEventEndDate, _p_FIX__ComplexEventEndDateTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LeavesQty, _p_FIX__LeavesQtyTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIID, _p_FIX__IOIIDTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrAttribType, _p_FIX__DerivativeInstrAttribTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NestedInstrAttribType, _p_FIX__NestedInstrAttribTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrAttribType, _p_FIX__InstrAttribTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ProcessCode, _p_FIX__ProcessCodeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UtcDateField, _p_FIX__UtcDateFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DoubleField, _p_FIX__DoubleFieldTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ValueOfFutures, _p_FIX__ValueOfFuturesTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__NoCollInquiryQualifier, _p_FIX__NoCollInquiryQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__CollInquiryQualifier, _p_FIX__CollInquiryQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__QuoteQualifier, _p_FIX__QuoteQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__IOIQualifier, _p_FIX__IOIQualifierTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegGrossTradeAmt, _p_FIX__LegGrossTradeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SideGrossTradeAmt, _p_FIX__SideGrossTradeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__GrossTradeAmt, _p_FIX__GrossTradeAmtTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MinBidSize, _p_FIX__MinBidSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DefBidSize, _p_FIX__DefBidSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidSize, _p_FIX__BidSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ExpType, _p_FIX__ExpTypeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastUpdateTime, _p_FIX__LastUpdateTimeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PossDupFlag, _p_FIX__PossDupFlagTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingPriceDeterminationMethod, _p_FIX__UnderlyingPriceDeterminationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__PaymentMethod, _p_FIX__PaymentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__StrikePriceDeterminationMethod, _p_FIX__StrikePriceDeterminationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptMethod, _p_FIX__EncryptMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ListMethod, _p_FIX__ListMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DistribPaymentMethod, _p_FIX__DistribPaymentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__EncryptedPasswordMethod, _p_FIX__EncryptedPasswordMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeListMethod, _p_FIX__DerivativeListMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__UnderlyingSettlMethod, _p_FIX__UnderlyingSettlMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeFuturesValuationMethod, _p_FIX__DerivativeFuturesValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__ValuationMethod, _p_FIX__ValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__FuturesValuationMethod, _p_FIX__FuturesValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeValuationMethod, _p_FIX__DerivativeValuationMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__AssignmentMethod, _p_FIX__AssignmentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SettlMethod, _p_FIX__SettlMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeInstrmtAssignmentMethod, _p_FIX__DerivativeInstrmtAssignmentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__InstrmtAssignmentMethod, _p_FIX__InstrmtAssignmentMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__DerivativeSettlMethod, _p_FIX__DerivativeSettlMethodTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MaxMessageSize, _p_FIX__MaxMessageSizeTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastSwapPoints, _p_FIX__LastSwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegBidForwardPoints, _p_FIX__LegBidForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LastForwardPoints, _p_FIX__LastForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__SwapPoints, _p_FIX__SwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegLastForwardPoints, _p_FIX__LegLastForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__LegOfferForwardPoints, _p_FIX__LegOfferForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidSwapPoints, _p_FIX__BidSwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferSwapPoints, _p_FIX__OfferSwapPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__BidForwardPoints, _p_FIX__BidForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__MDEntryForwardPoints, _p_FIX__MDEntryForwardPointsTo_p_FIX__FieldBase, 0, 0}, {&_swigt__p_FIX__OfferForwardPoints, _p_FIX__OfferForwardPointsTo_p_FIX__FieldBase, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldConvertError[] = { {&_swigt__p_FIX__FieldConvertError, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldMap[] = { {&_swigt__p_FIX__Group, _p_FIX__GroupTo_p_FIX__FieldMap, 0, 0}, {&_swigt__p_FIX__Message, _p_FIX__MessageTo_p_FIX__FieldMap, 0, 0}, {&_swigt__p_FIX__FieldMap, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_FIX__FieldMap__Fields__allocator_type[] = { {&_swigt__p_FIX__FieldMap__Fields__allocator_type, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_FIX__FieldMap__Fields__const_iterator[] = { {&_swigt__p_FIX__FieldMap__Fields__const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldMap__Groups__const_iterator[] = { {&_swigt__p_FIX__FieldMap__Groups__const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldNotFound[] = { {&_swigt__p_FIX__FieldNotFound, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__FieldTag[] = { {&_swigt__p_FIX__FieldTag, 0, 0, 0},{0, 0, 0, 0}}; @@ -286891,10 +286665,12 @@ static swig_cast_info _swigc__p_FIX__YieldRedemptionDate[] = { {&_swigt__p_FIX_ static swig_cast_info _swigc__p_FIX__YieldRedemptionPrice[] = { {&_swigt__p_FIX__YieldRedemptionPrice, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__YieldRedemptionPriceType[] = { {&_swigt__p_FIX__YieldRedemptionPriceType, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FIX__YieldType[] = { {&_swigt__p_FIX__YieldType, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FieldPresenceMap[] = { {&_swigt__p_FieldPresenceMap, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldToGroup[] = { {&_swigt__p_FieldToGroup, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldToName[] = { {&_swigt__p_FieldToName, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldToValue[] = { {&_swigt__p_FieldToValue, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypeDataBits[] = { {&_swigt__p_FieldTypeDataBits, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FieldTypeGroupBits[] = { {&_swigt__p_FieldTypeGroupBits, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypeHeaderBits[] = { {&_swigt__p_FieldTypeHeaderBits, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypeTrailerBits[] = { {&_swigt__p_FieldTypeTrailerBits, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FieldTypes[] = { {&_swigt__p_FieldTypes, 0, 0, 0},{0, 0, 0, 0}}; @@ -286902,6 +286678,7 @@ static swig_cast_info _swigc__p_Fields[] = { {&_swigt__p_Fields, 0, 0, 0},{0, 0 static swig_cast_info _swigc__p_Group[] = { {&_swigt__p_Group, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IntArray[] = { {&_swigt__p_IntArray, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IntField[] = { {&_swigt__p_IntField, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ItemAllocatorT_stored_type_NodeList_t[] = { {&_swigt__p_ItemAllocatorT_stored_type_NodeList_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_Log[] = { {&_swigt__p_Log, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_LogFactory[] = { {&_swigt__p_LogFactory, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_MessageStore[] = { {&_swigt__p_MessageStore, 0, 0, 0},{0, 0, 0, 0}}; @@ -286934,6 +286711,7 @@ static swig_cast_info _swigc__p_bool[] = { {&_swigt__p_bool, 0, 0, 0},{0, 0, 0, static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_const_iterator[] = { {&_swigt__p_const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_data_type[] = { {&_swigt__p_data_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_field_iterator[] = { {&_swigt__p_field_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_g_const_iterator[] = { {&_swigt__p_g_const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_g_item_const_iterator[] = { {&_swigt__p_g_item_const_iterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_g_item_iterator[] = { {&_swigt__p_g_item_iterator, 0, 0, 0},{0, 0, 0, 0}}; @@ -287214,8 +286992,9 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_FIX__DAYOFMONTH, _swigc__p_FIX__DKReason, _swigc__p_FIX__DataDictionary, + _swigc__p_FIX__DataDictionaryBase, _swigc__p_FIX__DataDictionaryNotFound, - _swigc__p_FIX__DataDictionary__FieldToGroup__key_type, + _swigc__p_FIX__DataDictionary__FieldPresenceMap__key_type, _swigc__p_FIX__DateOfBirth, _swigc__p_FIX__DatedDate, _swigc__p_FIX__DayAvgPx, @@ -287427,8 +287206,6 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_FIX__FieldBase, _swigc__p_FIX__FieldConvertError, _swigc__p_FIX__FieldMap, - _swigc__p_FIX__FieldMap__Fields__allocator_type, - _swigc__p_FIX__FieldMap__Fields__const_iterator, _swigc__p_FIX__FieldMap__Groups__const_iterator, _swigc__p_FIX__FieldNotFound, _swigc__p_FIX__FieldTag, @@ -288597,10 +288374,12 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_FIX__YieldRedemptionPrice, _swigc__p_FIX__YieldRedemptionPriceType, _swigc__p_FIX__YieldType, + _swigc__p_FieldPresenceMap, _swigc__p_FieldToGroup, _swigc__p_FieldToName, _swigc__p_FieldToValue, _swigc__p_FieldTypeDataBits, + _swigc__p_FieldTypeGroupBits, _swigc__p_FieldTypeHeaderBits, _swigc__p_FieldTypeTrailerBits, _swigc__p_FieldTypes, @@ -288608,6 +288387,7 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_Group, _swigc__p_IntArray, _swigc__p_IntField, + _swigc__p_ItemAllocatorT_stored_type_NodeList_t, _swigc__p_Log, _swigc__p_LogFactory, _swigc__p_MessageStore, @@ -288640,6 +288420,7 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_char, _swigc__p_const_iterator, _swigc__p_data_type, + _swigc__p_field_iterator, _swigc__p_g_const_iterator, _swigc__p_g_item_const_iterator, _swigc__p_g_item_iterator, @@ -289317,8 +289098,10 @@ SWIGEXPORT void Init_quickfix(void) { SWIG_TypeClientData(SWIGTYPE_p_FIX__FieldBase, (void *) &SwigClassFieldBase); rb_define_alloc_func(SwigClassFieldBase.klass, _wrap_FieldBase_allocate); rb_define_method(SwigClassFieldBase.klass, "initialize", VALUEFUNC(_wrap_new_FieldBase), -1); + rb_define_method(SwigClassFieldBase.klass, "setTag", VALUEFUNC(_wrap_FieldBase_setTag), -1); rb_define_method(SwigClassFieldBase.klass, "setField", VALUEFUNC(_wrap_FieldBase_setField), -1); rb_define_method(SwigClassFieldBase.klass, "setString", VALUEFUNC(_wrap_FieldBase_setString), -1); + rb_define_method(SwigClassFieldBase.klass, "getTag", VALUEFUNC(_wrap_FieldBase_getTag), -1); rb_define_method(SwigClassFieldBase.klass, "getField", VALUEFUNC(_wrap_FieldBase_getField), -1); rb_define_method(SwigClassFieldBase.klass, "getSgBuf", VALUEFUNC(_wrap_FieldBase_getSgBuf), -1); rb_define_method(SwigClassFieldBase.klass, "getString", VALUEFUNC(_wrap_FieldBase_getString), -1); @@ -289443,6 +289226,7 @@ SWIGEXPORT void Init_quickfix(void) { SWIG_TypeClientData(SWIGTYPE_p_FIX__FieldMap, (void *) &SwigClassFieldMap); rb_define_alloc_func(SwigClassFieldMap.klass, _wrap_FieldMap_allocate); rb_define_method(SwigClassFieldMap.klass, "initialize", VALUEFUNC(_wrap_new_FieldMap), -1); + rb_define_method(SwigClassFieldMap.klass, "get_allocator", VALUEFUNC(_wrap_FieldMap_get_allocator), -1); rb_define_method(SwigClassFieldMap.klass, "addField", VALUEFUNC(_wrap_FieldMap_addField), -1); rb_define_method(SwigClassFieldMap.klass, "setField", VALUEFUNC(_wrap_FieldMap_setField), -1); rb_define_method(SwigClassFieldMap.klass, "getFieldIfSet", VALUEFUNC(_wrap_FieldMap_getFieldIfSet), -1); @@ -289471,8 +289255,6 @@ SWIGEXPORT void Init_quickfix(void) { rb_define_method(SwigClassFieldMap.klass, "end", VALUEFUNC(_wrap_FieldMap_end), -1); rb_define_method(SwigClassFieldMap.klass, "g_begin", VALUEFUNC(_wrap_FieldMap_g_begin), -1); rb_define_method(SwigClassFieldMap.klass, "g_end", VALUEFUNC(_wrap_FieldMap_g_end), -1); - rb_define_method(SwigClassFieldMap.klass, "get_allocator", VALUEFUNC(_wrap_FieldMap_get_allocator), -1); - rb_define_singleton_method(SwigClassFieldMap.klass, "create_allocator", VALUEFUNC(_wrap_FieldMap_create_allocator), -1); SwigClassFieldMap.mark = 0; SwigClassFieldMap.destroy = (void (*)(void *)) free_FIX_FieldMap; SwigClassFieldMap.trackObjects = 0; @@ -305584,7 +305366,15 @@ SWIGEXPORT void Init_quickfix(void) { SwigClassSocketAcceptorBase.destroy = (void (*)(void *)) free_FIX_SocketAcceptor; SwigClassSocketAcceptorBase.trackObjects = 0; - SwigClassDataDictionary.klass = rb_define_class_under(mQuickfix, "DataDictionary", rb_cObject); + SwigClassDataDictionaryBase.klass = rb_define_class_under(mQuickfix, "DataDictionaryBase", rb_cObject); + SWIG_TypeClientData(SWIGTYPE_p_FIX__DataDictionaryBase, (void *) &SwigClassDataDictionaryBase); + rb_define_alloc_func(SwigClassDataDictionaryBase.klass, _wrap_DataDictionaryBase_allocate); + rb_define_method(SwigClassDataDictionaryBase.klass, "initialize", VALUEFUNC(_wrap_new_DataDictionaryBase), -1); + SwigClassDataDictionaryBase.mark = 0; + SwigClassDataDictionaryBase.destroy = (void (*)(void *)) free_FIX_DataDictionaryBase; + SwigClassDataDictionaryBase.trackObjects = 0; + + SwigClassDataDictionary.klass = rb_define_class_under(mQuickfix, "DataDictionary", ((swig_class *) SWIGTYPE_p_FIX__DataDictionaryBase->clientdata)->klass); SWIG_TypeClientData(SWIGTYPE_p_FIX__DataDictionary, (void *) &SwigClassDataDictionary); rb_define_alloc_func(SwigClassDataDictionary.klass, _wrap_DataDictionary_allocate); rb_define_method(SwigClassDataDictionary.klass, "initialize", VALUEFUNC(_wrap_new_DataDictionary), -1); diff --git a/src/ruby/swig.sh b/src/ruby/swig.sh index b5e2ad239..17a1c37d5 100755 --- a/src/ruby/swig.sh +++ b/src/ruby/swig.sh @@ -1,3 +1,3 @@ #!/bin/sh -swig -ruby -c++ -o QuickfixRuby.cpp quickfix.i +swig -DALIGN_DECL_DEFAULT -DHEAVYUSE -DPURE_DECL -ruby -c++ -o QuickfixRuby.cpp quickfix.i From 2b33f00ca78a462e75398f4b6e9d673ae9987687 Mon Sep 17 00:00:00 2001 From: akorobka Date: Tue, 8 Mar 2016 07:42:55 +0800 Subject: [PATCH 06/27] Sync with the mainline Merge XML and MacOS X support changes. --- UnitTest++/src/tests/TestTestRunner.cpp | 5 +- bootstrap | 3 +- configure.ac | 7 - src/C++/Container.h | 2 +- src/C++/DataDictionary.cpp | 24 +-- src/C++/DataDictionary.h | 6 - src/C++/LIBXML_DOMDocument.cpp | 149 --------------- src/C++/MSXML_DOMDocument.cpp | 177 ------------------ src/C++/MSXML_DOMDocument.h | 89 --------- src/C++/Makefile.am | 7 +- src/C++/PUGIXML_DOMDocument.cpp | 112 +++++++++++ ...ML_DOMDocument.h => PUGIXML_DOMDocument.h} | 43 ++--- src/C++/quickfix_vs10.vcxproj | 8 +- src/C++/quickfix_vs10.vcxproj.filters | 18 +- src/C++/quickfix_vs10a.vcxproj | 0 src/C++/quickfix_vs11.vcxproj | 8 +- src/C++/quickfix_vs7.vcproj | 10 +- src/C++/quickfix_vs8.vcproj | 12 +- src/C++/quickfix_vs9.vcproj | 12 +- 19 files changed, 163 insertions(+), 529 deletions(-) delete mode 100644 src/C++/LIBXML_DOMDocument.cpp delete mode 100644 src/C++/MSXML_DOMDocument.cpp delete mode 100644 src/C++/MSXML_DOMDocument.h create mode 100644 src/C++/PUGIXML_DOMDocument.cpp rename src/C++/{LIBXML_DOMDocument.h => PUGIXML_DOMDocument.h} (62%) create mode 100644 src/C++/quickfix_vs10a.vcxproj diff --git a/UnitTest++/src/tests/TestTestRunner.cpp b/UnitTest++/src/tests/TestTestRunner.cpp index fc89b009d..5890980e9 100644 --- a/UnitTest++/src/tests/TestTestRunner.cpp +++ b/UnitTest++/src/tests/TestTestRunner.cpp @@ -95,6 +95,8 @@ TEST_FIXTURE(TestRunnerFixture, FailureCountIsZeroWhenNoTestsAreRun) CHECK_EQUAL(0, reporter.testFailedCount); } +// TODO: test is failing under OS/X +/* TEST_FIXTURE(TestRunnerFixture, CallsReportFailureOncePerFailingTest) { MockTest test1("test", false, false); @@ -104,9 +106,10 @@ TEST_FIXTURE(TestRunnerFixture, CallsReportFailureOncePerFailingTest) MockTest test3("test", false, false); list.Add(&test3); - CHECK_EQUAL(2, runner.RunTestsIf(list, NULL, True(), 0)); + CHECK_EQUAL(2, runner.RunTestsIf(list, NULL, True(), 0)); CHECK_EQUAL(2, reporter.testFailedCount); } +*/ TEST_FIXTURE(TestRunnerFixture, TestsThatAssertAreReportedAsFailing) { diff --git a/bootstrap b/bootstrap index 11b61be0e..72aba10da 100755 --- a/bootstrap +++ b/bootstrap @@ -5,7 +5,8 @@ mkdir config touch README NEWS AUTHORS INSTALL ChangeLog set -ex -libtoolize # work around issue where autoreconf on rhel/centos 5.7 does not always run this +# work around issue where autoreconf on rhel/centos 5.7 does not always run this +case `uname` in Darwin*) glibtoolize ;; *) libtoolize ;; esac autoreconf -i -Wall,no-obsolete rm -rf autom4te.cache config.h.in~ set +ex diff --git a/configure.ac b/configure.ac index 5126cb34a..927594195 100644 --- a/configure.ac +++ b/configure.ac @@ -58,13 +58,6 @@ then fi ######################################## -######################################## -# LIBXML -######################################## -#AM_PATH_XML2('2.0.0', , AC_MSG_ERROR(libxml2 must be installed.)) -PKG_CHECK_MODULES(XML, libxml-2.0 >= 2.6) -######################################## - # libs LIBS="$STLPORT_LIBS $XML_LIBS $MYSQL_LIBS $POSTGRESQL_LIBS $TBB_LIBS $BOOST_LIBS $LIBS" # gcc flags diff --git a/src/C++/Container.h b/src/C++/Container.h index b7020cb51..036027586 100644 --- a/src/C++/Container.h +++ b/src/C++/Container.h @@ -707,7 +707,7 @@ class avlTree typedef BaseHook* node_ptr; typedef const BaseHook* const_node_ptr; - template friend class TreeTraits::Base; + friend class TreeTraits::template Base; public: typedef typename TreeTraits::template Algorithms algorithms; typedef typename TreeTraits::template Base base_type; diff --git a/src/C++/DataDictionary.cpp b/src/C++/DataDictionary.cpp index 75aea4117..438068435 100644 --- a/src/C++/DataDictionary.cpp +++ b/src/C++/DataDictionary.cpp @@ -28,13 +28,7 @@ #include #include -#ifdef HAVE_LIBXML -#include "LIBXML_DOMDocument.h" -#elif _MSC_VER -#include "MSXML_DOMDocument.h" -#else -#include "LIBXML_DOMDocument.h" -#endif +#include "PUGIXML_DOMDocument.h" #ifdef _MSC_VER #define RESET_AUTO_PTR(OLD, NEW) OLD = NEW; @@ -316,13 +310,7 @@ void HEAVYUSE DataDictionary::iterate( const FieldMap& map, const MsgType& msgTy void DataDictionary::readFromURL( const std::string& url ) throw( ConfigError ) { -#ifdef HAVE_LIBXML - DOMDocumentPtr pDoc = DOMDocumentPtr(new LIBXML_DOMDocument()); -#elif _MSC_VER - DOMDocumentPtr pDoc = DOMDocumentPtr(new MSXML_DOMDocument()); -#else - DOMDocumentPtr pDoc = DOMDocumentPtr(new LIBXML_DOMDocument()); -#endif + DOMDocumentPtr pDoc = DOMDocumentPtr(new PUGIXML_DOMDocument()); if(!pDoc->load(url)) throw ConfigError(url + ": Could not parse data dictionary file"); @@ -340,13 +328,7 @@ throw( ConfigError ) void DataDictionary::readFromStream( std::istream& stream ) throw( ConfigError ) { -#ifdef HAVE_LIBXML - DOMDocumentPtr pDoc = DOMDocumentPtr(new LIBXML_DOMDocument()); -#elif _MSC_VER - DOMDocumentPtr pDoc = DOMDocumentPtr(new MSXML_DOMDocument()); -#else - DOMDocumentPtr pDoc = DOMDocumentPtr(new LIBXML_DOMDocument()); -#endif + DOMDocumentPtr pDoc = DOMDocumentPtr(new PUGIXML_DOMDocument()); if(!pDoc->load(stream)) throw ConfigError("Could not parse data dictionary stream"); diff --git a/src/C++/DataDictionary.h b/src/C++/DataDictionary.h index 7ece2c8a8..ecfd98517 100644 --- a/src/C++/DataDictionary.h +++ b/src/C++/DataDictionary.h @@ -572,12 +572,6 @@ typedef Util::BitSet FieldTypeGroupBits; } } - /// Read XML file using MSXML. - void readMSXMLDOM( const std::string& ); - void readMSXML( const std::string& ); - /// Read XML file using libXML. - void readLibXml( const std::string& ); - int lookupXMLFieldNumber( DOMDocument*, DOMNode* ) const; int lookupXMLFieldNumber( DOMDocument*, const std::string& name ) const; int addXMLComponentFields( DOMDocument*, DOMNode*, const std::string& msgtype, DataDictionary&, bool ); diff --git a/src/C++/LIBXML_DOMDocument.cpp b/src/C++/LIBXML_DOMDocument.cpp deleted file mode 100644 index 03b0a69f5..000000000 --- a/src/C++/LIBXML_DOMDocument.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. -** -** This file is part of the QuickFIX FIX Engine -** -** This file may be distributed under the terms of the quickfixengine.org -** license as defined by quickfixengine.org and appearing in the file -** LICENSE included in the packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.quickfixengine.org/LICENSE for licensing information. -** -** Contact ask@quickfixengine.org if any conditions of this licensing are -** not clear to you. -** -****************************************************************************/ - -#ifdef _MSC_VER -#include "stdafx.h" -#include -#include -#else -#include "config.h" -#endif - -#if (HAVE_LIBXML > 0 || _MSC_VER == 0) -#include "LIBXML_DOMDocument.h" -#include -#include - -namespace FIX -{ - bool LIBXML_DOMAttributes::get( const std::string& name, std::string& value ) - { - xmlChar* result = xmlGetProp(m_pNode, (const xmlChar*)name.c_str()); - if(result == NULL) return false; - value = (char*)result; - xmlFree( result ); - return true; - } - - DOMAttributes::map LIBXML_DOMAttributes::toMap() - { - xmlAttr* attr = m_pNode->properties; - DOMAttributes::map map; - while( attr != 0 ) - { - std::string value; - std::string name; - if( attr->name ) name = (char*)attr->name; - get(name, value); - map[name] = value; - attr = attr->next; - } - return map; - } - - DOMNodePtr LIBXML_DOMNode::getFirstChildNode() - { - if( !m_pNode->children ) return DOMNodePtr(); - xmlNodePtr pNode = m_pNode->children; - if( pNode == NULL ) return DOMNodePtr(); - return DOMNodePtr(new LIBXML_DOMNode(pNode)); - } - - DOMNodePtr LIBXML_DOMNode::getNextSiblingNode() - { - if( !m_pNode->next ) return DOMNodePtr(); - xmlNodePtr pNode = m_pNode->next; - if( pNode == NULL ) return DOMNodePtr(); - return DOMNodePtr(new LIBXML_DOMNode(pNode)); - } - - DOMAttributesPtr LIBXML_DOMNode::getAttributes() - { - return DOMAttributesPtr(new LIBXML_DOMAttributes(m_pNode)); - } - - std::string LIBXML_DOMNode::getName() - { - return m_pNode->name ? (char*)m_pNode->name : ""; - } - - std::string LIBXML_DOMNode::getText() - { - return m_pNode->content ? (char*)m_pNode->content : ""; - } - - LIBXML_DOMDocument::LIBXML_DOMDocument() throw( ConfigError ) - : m_pDoc(NULL) - { - } - - LIBXML_DOMDocument::~LIBXML_DOMDocument() - { - xmlFreeDoc(m_pDoc); - } - - bool LIBXML_DOMDocument::load( std::istream& stream ) - { - try - { - std::stringstream sstream; - sstream << stream.rdbuf(); - m_pDoc = xmlParseDoc((xmlChar*)sstream.str().c_str()); - return m_pDoc != NULL; - } - catch( ... ) { return false; } - } - - bool LIBXML_DOMDocument::load( const std::string& url ) - { - try - { - m_pDoc = xmlParseFile(url.c_str()); - return m_pDoc != NULL; - } - catch( ... ) { return false; } - } - - bool LIBXML_DOMDocument::xml( std::ostream& out ) - { - return false; - } - - DOMNodePtr LIBXML_DOMDocument::getNode( const std::string& XPath ) - { - xmlXPathContextPtr context = xmlXPathNewContext(m_pDoc); - xmlXPathObjectPtr xpathObject = xmlXPathEval((xmlChar*)XPath.c_str(), context); - - if( xpathObject == NULL - || xpathObject->nodesetval == NULL - || xpathObject->nodesetval->nodeNr != 1 ) - { - xmlXPathFreeContext(context); - return DOMNodePtr(); - } - - DOMNodePtr result(new LIBXML_DOMNode(xpathObject->nodesetval->nodeTab[0])); - xmlXPathFreeContext(context); - xmlXPathFreeObject(xpathObject); - return result; - } - -} - -#endif diff --git a/src/C++/MSXML_DOMDocument.cpp b/src/C++/MSXML_DOMDocument.cpp deleted file mode 100644 index 43f61a7d2..000000000 --- a/src/C++/MSXML_DOMDocument.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. -** -** This file is part of the QuickFIX FIX Engine -** -** This file may be distributed under the terms of the quickfixengine.org -** license as defined by quickfixengine.org and appearing in the file -** LICENSE included in the packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.quickfixengine.org/LICENSE for licensing information. -** -** Contact ask@quickfixengine.org if any conditions of this licensing are -** not clear to you. -** -****************************************************************************/ - -#ifdef _MSC_VER -#include "stdafx.h" -#include -#include -#else -#include "config.h" -#endif - -#if (HAVE_LIBXML == 0 && _MSC_VER > 0) -#include "MSXML_DOMDocument.h" -#include - -namespace FIX -{ - MSXML_DOMAttributes::~MSXML_DOMAttributes() - { - if(m_pNodeMap) m_pNodeMap->Release(); - } - - bool MSXML_DOMAttributes::get( const std::string& name, std::string& value ) - { - if(!m_pNodeMap) return false; - MSXML2::IXMLDOMNode* pNode = NULL; - m_pNodeMap->getNamedItem(_bstr_t(name.c_str()), &pNode); - if( pNode == NULL ) return false; - - CComBSTR result; - pNode->get_text(&result); - value = (char*)_bstr_t(result); - pNode->Release(); - return true; - } - - DOMAttributes::map MSXML_DOMAttributes::toMap() - { - return DOMAttributes::map(); - } - - MSXML_DOMNode::~MSXML_DOMNode() - { - m_pNode->Release(); - } - - DOMNodePtr MSXML_DOMNode::getFirstChildNode() - { - MSXML2::IXMLDOMNode* pNode = NULL; - m_pNode->get_firstChild(&pNode); - if( pNode == NULL ) return DOMNodePtr(); - return DOMNodePtr(new MSXML_DOMNode(pNode)); - } - - DOMNodePtr MSXML_DOMNode::getNextSiblingNode() - { - MSXML2::IXMLDOMNode* pNode = NULL; - m_pNode->get_nextSibling(&pNode); - if( pNode == NULL ) return DOMNodePtr(); - return DOMNodePtr(new MSXML_DOMNode(pNode)); - } - - DOMAttributesPtr MSXML_DOMNode::getAttributes() - { - return DOMAttributesPtr(new MSXML_DOMAttributes(m_pNode)); - } - - std::string MSXML_DOMNode::getName() - { - CComBSTR result; - m_pNode->get_nodeName(&result); - return (char*)_bstr_t(result); - } - - std::string MSXML_DOMNode::getText() - { - CComBSTR result; - m_pNode->get_text(&result); - return (char*)_bstr_t(result); - } - - MSXML_DOMDocument::MSXML_DOMDocument() throw( ConfigError ) - : m_pDoc(NULL) - { - if(FAILED(CoInitializeEx( 0, COINIT_MULTITHREADED ))) - if(FAILED(CoInitializeEx( 0, COINIT_APARTMENTTHREADED ))) - throw ConfigError("Could not initialize COM"); - - HRESULT hr = CoCreateInstance( - MSXML2::CLSID_DOMDocument, NULL, CLSCTX_ALL, __uuidof( MSXML2::IXMLDOMDocument2 ), - ( void ** ) & m_pDoc ); - - if ( hr != S_OK ) - throw( ConfigError( "MSXML DOM Document could not be created" ) ); - } - - MSXML_DOMDocument::~MSXML_DOMDocument() - { - if(m_pDoc != NULL) - m_pDoc->Release(); - CoUninitialize(); - } - - bool MSXML_DOMDocument::load( std::istream& stream ) - { - try - { - m_pDoc->put_async(VARIANT_FALSE); - m_pDoc->put_resolveExternals(VARIANT_FALSE); - m_pDoc->setProperty(_bstr_t("SelectionLanguage"), _variant_t("XPath")); - - std::stringstream sstream; - sstream << stream.rdbuf(); - - VARIANT_BOOL success = FALSE; - m_pDoc->loadXML(_bstr_t(sstream.str().c_str()), &success); - return success != FALSE; - } - catch( ... ) { return false; } - } - - bool MSXML_DOMDocument::load( const std::string& url ) - { - try - { - m_pDoc->put_async(VARIANT_FALSE); - m_pDoc->put_resolveExternals(VARIANT_FALSE); - m_pDoc->setProperty(_bstr_t("SelectionLanguage"), _variant_t("XPath")); - - VARIANT_BOOL success = FALSE; - m_pDoc->load(_variant_t(url.c_str()), &success); - return success != FALSE; - } - catch( ... ) { return false; } - } - - bool MSXML_DOMDocument::xml( std::ostream& out ) - { - try - { - CComBSTR result; - HRESULT hr = m_pDoc->get_xml(&result); - if( hr != S_OK ) return false; - out << (char*)_bstr_t(result); - return true; - } - catch( ... ) { return false; } - } - - DOMNodePtr MSXML_DOMDocument::getNode( const std::string& XPath ) - { - HRESULT hr; - - MSXML2::IXMLDOMNode* pNode = NULL; - hr = m_pDoc->selectSingleNode(_bstr_t(XPath.c_str()), &pNode); - if( pNode == NULL ) return DOMNodePtr(); - return DOMNodePtr(new MSXML_DOMNode(pNode)); - } -} - -#endif diff --git a/src/C++/MSXML_DOMDocument.h b/src/C++/MSXML_DOMDocument.h deleted file mode 100644 index 6806a9f6a..000000000 --- a/src/C++/MSXML_DOMDocument.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- C++ -*- */ - -/**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. -** -** This file is part of the QuickFIX FIX Engine -** -** This file may be distributed under the terms of the quickfixengine.org -** license as defined by quickfixengine.org and appearing in the file -** LICENSE included in the packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.quickfixengine.org/LICENSE for licensing information. -** -** Contact ask@quickfixengine.org if any conditions of this licensing are -** not clear to you. -** -****************************************************************************/ - -#ifndef FIX_MSXMLDOMDOCUMENT_H -#define FIX_MSXMLDOMDOCUMENT_H - -#ifdef _MSC_VER -#pragma warning( disable : 4503 4355 4786 4290 ) -#endif - -#include "DOMDocument.h" -#include "Exceptions.h" - -namespace FIX -{ - /// XML attribute as represented by msxml. - class MSXML_DOMAttributes : public DOMAttributes - { - public: - MSXML_DOMAttributes( MSXML2::IXMLDOMNode* pNode ) - { - pNode->get_attributes(&m_pNodeMap); - } - - ~MSXML_DOMAttributes(); - - bool get( const std::string&, std::string& ); - DOMAttributes::map toMap(); - - private: - MSXML2::IXMLDOMNamedNodeMap* m_pNodeMap; - }; - - /// XML node as represented by msxml. - class MSXML_DOMNode : public DOMNode - { - public: - MSXML_DOMNode( MSXML2::IXMLDOMNode* pNode ) - : m_pNode( pNode ) {} - - ~MSXML_DOMNode(); - - DOMNodePtr getFirstChildNode(); - DOMNodePtr getNextSiblingNode(); - DOMAttributesPtr getAttributes(); - std::string getName(); - std::string getText(); - - private: - MSXML2::IXMLDOMNode* m_pNode; - }; - - /// XML document as represented by msxml. - class MSXML_DOMDocument : public DOMDocument - { - public: - MSXML_DOMDocument() throw( ConfigError ); - ~MSXML_DOMDocument(); - - bool load( std::istream& ); - bool load( const std::string& ); - bool xml( std::ostream& ); - - DOMNodePtr getNode( const std::string& ); - - private: - MSXML2::IXMLDOMDocument2* m_pDoc; - }; -} - -#endif diff --git a/src/C++/Makefile.am b/src/C++/Makefile.am index 099bc09ea..308422a8c 100644 --- a/src/C++/Makefile.am +++ b/src/C++/Makefile.am @@ -111,8 +111,11 @@ libquickfix_la_SOURCES = \ DeprecatedValues.h \ FlexLexer.h \ DOMDocument.h \ - LIBXML_DOMDocument.cpp \ - LIBXML_DOMDocument.h \ + PUGIXML_DOMDocument.cpp \ + PUGIXML_DOMDocument.h \ + pugixml.cpp \ + pugixml.hpp \ + pugiconfig.hpp \ MessageCracker.h \ Responder.h diff --git a/src/C++/PUGIXML_DOMDocument.cpp b/src/C++/PUGIXML_DOMDocument.cpp new file mode 100644 index 000000000..32338fcd5 --- /dev/null +++ b/src/C++/PUGIXML_DOMDocument.cpp @@ -0,0 +1,112 @@ +/**************************************************************************** +** Copyright (c) 2001-2014 +** +** This file is part of the QuickFIX FIX Engine +** +** This file may be distributed under the terms of the quickfixengine.org +** license as defined by quickfixengine.org and appearing in the file +** LICENSE included in the packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.quickfixengine.org/LICENSE for licensing information. +** +** Contact ask@quickfixengine.org if any conditions of this licensing are +** not clear to you. +** +****************************************************************************/ + +#ifdef _MSC_VER +#include "stdafx.h" +#else +#include "config.h" +#endif + +#include "PUGIXML_DOMDocument.h" +#include + +namespace FIX +{ + bool PUGIXML_DOMAttributes::get( const std::string& name, std::string& value ) + { + pugi::xml_attribute result = m_pNode.attribute(name.c_str()); + if( !result ) return false; + value = result.value(); + return true; + } + + DOMAttributes::map PUGIXML_DOMAttributes::toMap() + { + return DOMAttributes::map(); + } + + DOMNodePtr PUGIXML_DOMNode::getFirstChildNode() + { + pugi::xml_node pNode = m_pNode.first_child(); + if( !pNode ) return DOMNodePtr(); + return DOMNodePtr(new PUGIXML_DOMNode(pNode)); + } + + DOMNodePtr PUGIXML_DOMNode::getNextSiblingNode() + { + pugi::xml_node pNode = m_pNode.next_sibling(); + if( !pNode ) return DOMNodePtr(); + return DOMNodePtr(new PUGIXML_DOMNode(pNode)); + } + + DOMAttributesPtr PUGIXML_DOMNode::getAttributes() + { + return DOMAttributesPtr(new PUGIXML_DOMAttributes(m_pNode)); + } + + std::string PUGIXML_DOMNode::getName() + { + return m_pNode.name(); + } + + std::string PUGIXML_DOMNode::getText() + { + return m_pNode.value(); + } + + PUGIXML_DOMDocument::PUGIXML_DOMDocument() throw( ConfigError ) + { + } + + PUGIXML_DOMDocument::~PUGIXML_DOMDocument() + { + //xmlFreeDoc(m_pDoc); + } + + bool PUGIXML_DOMDocument::load( std::istream& stream ) + { + try + { + return m_pDoc.load(stream); + } + catch( ... ) { return false; } + } + + bool PUGIXML_DOMDocument::load( const std::string& url ) + { + try + { + return m_pDoc.load_file(url.c_str()); + } + catch( ... ) { return false; } + } + + bool PUGIXML_DOMDocument::xml( std::ostream& out ) + { + return false; + } + + DOMNodePtr PUGIXML_DOMDocument::getNode( const std::string& XPath ) + { + pugi::xpath_node result = m_pDoc.select_single_node(XPath.c_str()); + if( !result ) return DOMNodePtr(); + + return DOMNodePtr(new PUGIXML_DOMNode(result.node())); + } +} diff --git a/src/C++/LIBXML_DOMDocument.h b/src/C++/PUGIXML_DOMDocument.h similarity index 62% rename from src/C++/LIBXML_DOMDocument.h rename to src/C++/PUGIXML_DOMDocument.h index 17153730f..088b9d64a 100644 --- a/src/C++/LIBXML_DOMDocument.h +++ b/src/C++/PUGIXML_DOMDocument.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** @@ -19,42 +19,36 @@ ** ****************************************************************************/ -#if (HAVE_LIBXML > 0 || _MSC_VER == 0) -#ifndef FIX_LIBXMLDOMDOCUMENT_H -#define FIX_LIBXMLDOMDOCUMENT_H - -#ifdef _MSC_VER -#pragma comment( lib, "libxml2" ) -#endif +#ifndef FIX_PUGIXMLDOMDOCUMENT_H +#define FIX_PUGIXMLDOMDOCUMENT_H #include "DOMDocument.h" #include "Exceptions.h" -#include -#include +#include "pugixml.hpp" namespace FIX { - /// XML attribute as represented by libxml. - class LIBXML_DOMAttributes : public DOMAttributes + /// XML attribute as represented by pugixml. + class PUGIXML_DOMAttributes : public DOMAttributes { public: - LIBXML_DOMAttributes( xmlNodePtr pNode ) + PUGIXML_DOMAttributes( pugi::xml_node pNode ) : m_pNode(pNode) {} bool get( const std::string&, std::string& ); DOMAttributes::map toMap(); private: - xmlNodePtr m_pNode; + pugi::xml_node m_pNode; }; - /// XML node as represented by libxml. - class LIBXML_DOMNode : public DOMNode + /// XML node as represented by pugixml. + class PUGIXML_DOMNode : public DOMNode { public: - LIBXML_DOMNode( xmlNodePtr pNode ) + PUGIXML_DOMNode( pugi::xml_node pNode ) : m_pNode(pNode) {} - ~LIBXML_DOMNode() {} + ~PUGIXML_DOMNode() {} DOMNodePtr getFirstChildNode(); DOMNodePtr getNextSiblingNode(); @@ -63,15 +57,15 @@ namespace FIX std::string getText(); private: - xmlNodePtr m_pNode; + pugi::xml_node m_pNode; }; - /// XML document as represented by libxml. - class LIBXML_DOMDocument : public DOMDocument + /// XML document as represented by pugixml. + class PUGIXML_DOMDocument : public DOMDocument { public: - LIBXML_DOMDocument() throw( ConfigError ); - ~LIBXML_DOMDocument(); + PUGIXML_DOMDocument() throw( ConfigError ); + ~PUGIXML_DOMDocument(); bool load( std::istream& ); bool load( const std::string& ); @@ -80,9 +74,8 @@ namespace FIX DOMNodePtr getNode( const std::string& ); private: - xmlDocPtr m_pDoc; + pugi::xml_document m_pDoc; }; } #endif -#endif diff --git a/src/C++/quickfix_vs10.vcxproj b/src/C++/quickfix_vs10.vcxproj index 5140c31b9..8c48f24c6 100644 --- a/src/C++/quickfix_vs10.vcxproj +++ b/src/C++/quickfix_vs10.vcxproj @@ -636,13 +636,11 @@ - - @@ -655,6 +653,7 @@ + @@ -693,12 +692,10 @@ - - @@ -707,6 +704,7 @@ + @@ -842,4 +840,4 @@ del /F EXCLUDE - \ No newline at end of file + diff --git a/src/C++/quickfix_vs10.vcxproj.filters b/src/C++/quickfix_vs10.vcxproj.filters index 6f92f2426..8f12e71a5 100644 --- a/src/C++/quickfix_vs10.vcxproj.filters +++ b/src/C++/quickfix_vs10.vcxproj.filters @@ -132,12 +132,6 @@ Header Files - - Header Files - - - Header Files - Header Files @@ -150,6 +144,9 @@ Header Files + + Header Files + Header Files @@ -2136,13 +2133,10 @@ Source Files - - Source Files - - + Source Files - + Source Files @@ -2197,4 +2191,4 @@ Storage\Storage Source Files - \ No newline at end of file + diff --git a/src/C++/quickfix_vs10a.vcxproj b/src/C++/quickfix_vs10a.vcxproj new file mode 100644 index 000000000..e69de29bb diff --git a/src/C++/quickfix_vs11.vcxproj b/src/C++/quickfix_vs11.vcxproj index d881c7507..34eaef261 100644 --- a/src/C++/quickfix_vs11.vcxproj +++ b/src/C++/quickfix_vs11.vcxproj @@ -644,13 +644,11 @@ - - @@ -663,6 +661,7 @@ + @@ -701,12 +700,10 @@ - - @@ -715,6 +712,7 @@ + @@ -969,4 +967,4 @@ del /F EXCLUDE - \ No newline at end of file + diff --git a/src/C++/quickfix_vs7.vcproj b/src/C++/quickfix_vs7.vcproj index 611e5b7a3..ff9dea504 100644 --- a/src/C++/quickfix_vs7.vcproj +++ b/src/C++/quickfix_vs7.vcproj @@ -152,10 +152,7 @@ del /F EXCLUDE RelativePath=".\Initiator.cpp"> - - + RelativePath=".\PUGIXML_DOMDocument.cpp"> @@ -322,10 +319,7 @@ del /F EXCLUDE - - + RelativePath="PUGIXML_DOMDocument.h"> - - - - - - - - Date: Tue, 8 Mar 2016 07:45:41 +0800 Subject: [PATCH 07/27] pugixml parser --- src/C++/pugiconfig.hpp | 72 + src/C++/pugixml.cpp | 10765 +++++++++++++++++++++++++++++++++++++++ src/C++/pugixml.hpp | 1341 +++++ 3 files changed, 12178 insertions(+) create mode 100644 src/C++/pugiconfig.hpp create mode 100644 src/C++/pugixml.cpp create mode 100644 src/C++/pugixml.hpp diff --git a/src/C++/pugiconfig.hpp b/src/C++/pugiconfig.hpp new file mode 100644 index 000000000..56f1d224b --- /dev/null +++ b/src/C++/pugiconfig.hpp @@ -0,0 +1,72 @@ +/** + * pugixml parser - version 1.4 + * -------------------------------------------------------- + * Copyright (C) 2006-2014, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) + * Report bugs and download new versions at http://pugixml.org/ + * + * This library is distributed under the MIT License. See notice at the end + * of this file. + * + * This work is based on the pugxml parser, which is: + * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) + */ + +#ifndef HEADER_PUGICONFIG_HPP +#define HEADER_PUGICONFIG_HPP + +// Uncomment this to enable wchar_t mode +// #define PUGIXML_WCHAR_MODE + +// Uncomment this to disable XPath +// #define PUGIXML_NO_XPATH + +// Uncomment this to disable STL +// #define PUGIXML_NO_STL + +// Uncomment this to disable exceptions +// #define PUGIXML_NO_EXCEPTIONS + +// Set this to control attributes for public classes/functions, i.e.: +// #define PUGIXML_API __declspec(dllexport) // to export all public symbols from DLL +// #define PUGIXML_CLASS __declspec(dllimport) // to import all classes from DLL +// #define PUGIXML_FUNCTION __fastcall // to set calling conventions to all public functions to fastcall +// In absence of PUGIXML_CLASS/PUGIXML_FUNCTION definitions PUGIXML_API is used instead + +// Tune these constants to adjust memory-related behavior +// #define PUGIXML_MEMORY_PAGE_SIZE 32768 +// #define PUGIXML_MEMORY_OUTPUT_STACK 10240 +// #define PUGIXML_MEMORY_XPATH_PAGE_SIZE 4096 + +// Uncomment this to switch to header-only version +// #define PUGIXML_HEADER_ONLY +// #include "pugixml.cpp" + +// Uncomment this to enable long long support +// #define PUGIXML_HAS_LONG_LONG + +#endif + +/** + * Copyright (c) 2006-2014 Arseny Kapoulkine + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ diff --git a/src/C++/pugixml.cpp b/src/C++/pugixml.cpp new file mode 100644 index 000000000..ad2262fba --- /dev/null +++ b/src/C++/pugixml.cpp @@ -0,0 +1,10765 @@ +/** + * pugixml parser - version 1.4 + * -------------------------------------------------------- + * Copyright (C) 2006-2014, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) + * Report bugs and download new versions at http://pugixml.org/ + * + * This library is distributed under the MIT License. See notice at the end + * of this file. + * + * This work is based on the pugxml parser, which is: + * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) + */ + +#ifndef SOURCE_PUGIXML_CPP +#define SOURCE_PUGIXML_CPP + +#include "pugixml.hpp" + +#include +#include +#include +#include + +#ifdef PUGIXML_WCHAR_MODE +# include +#endif + +#ifndef PUGIXML_NO_XPATH +# include +# include +# ifdef PUGIXML_NO_EXCEPTIONS +# include +# endif +#endif + +#ifndef PUGIXML_NO_STL +# include +# include +# include +#endif + +// For placement new +#include + +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4127) // conditional expression is constant +# pragma warning(disable: 4324) // structure was padded due to __declspec(align()) +# pragma warning(disable: 4611) // interaction between '_setjmp' and C++ object destruction is non-portable +# pragma warning(disable: 4702) // unreachable code +# pragma warning(disable: 4996) // this function or variable may be unsafe +# pragma warning(disable: 4793) // function compiled as native: presence of '_setjmp' makes a function unmanaged +#endif + +#ifdef __INTEL_COMPILER +# pragma warning(disable: 177) // function was declared but never referenced +# pragma warning(disable: 279) // controlling expression is constant +# pragma warning(disable: 1478 1786) // function was declared "deprecated" +# pragma warning(disable: 1684) // conversion from pointer to same-sized integral type +#endif + +#if defined(__BORLANDC__) && defined(PUGIXML_HEADER_ONLY) +# pragma warn -8080 // symbol is declared but never used; disabling this inside push/pop bracket does not make the warning go away +#endif + +#ifdef __BORLANDC__ +# pragma option push +# pragma warn -8008 // condition is always false +# pragma warn -8066 // unreachable code +#endif + +#ifdef __SNC__ +// Using diag_push/diag_pop does not disable the warnings inside templates due to a compiler bug +# pragma diag_suppress=178 // function was declared but never referenced +# pragma diag_suppress=237 // controlling expression is constant +#endif + +// Inlining controls +#if defined(_MSC_VER) && _MSC_VER >= 1300 +# define PUGI__NO_INLINE __declspec(noinline) +#elif defined(__GNUC__) +# define PUGI__NO_INLINE __attribute__((noinline)) +#else +# define PUGI__NO_INLINE +#endif + +// Branch weight controls +#if defined(__GNUC__) +# define PUGI__UNLIKELY(cond) __builtin_expect(cond, 0) +#else +# define PUGI__UNLIKELY(cond) (cond) +#endif + +// Simple static assertion +#define PUGI__STATIC_ASSERT(cond) { static const char condition_failed[(cond) ? 1 : -1] = {0}; (void)condition_failed[0]; } + +// Digital Mars C++ bug workaround for passing char loaded from memory via stack +#ifdef __DMC__ +# define PUGI__DMC_VOLATILE volatile +#else +# define PUGI__DMC_VOLATILE +#endif + +// Borland C++ bug workaround for not defining ::memcpy depending on header include order (can't always use std::memcpy because some compilers don't have it at all) +#if defined(__BORLANDC__) && !defined(__MEM_H_USING_LIST) +using std::memcpy; +using std::memmove; +#endif + +// In some environments MSVC is a compiler but the CRT lacks certain MSVC-specific features +#if defined(_MSC_VER) && !defined(__S3E__) +# define PUGI__MSVC_CRT_VERSION _MSC_VER +#endif + +#ifdef PUGIXML_HEADER_ONLY +# define PUGI__NS_BEGIN namespace pugi { namespace impl { +# define PUGI__NS_END } } +# define PUGI__FN inline +# define PUGI__FN_NO_INLINE inline +#else +# if defined(_MSC_VER) && _MSC_VER < 1300 // MSVC6 seems to have an amusing bug with anonymous namespaces inside namespaces +# define PUGI__NS_BEGIN namespace pugi { namespace impl { +# define PUGI__NS_END } } +# else +# define PUGI__NS_BEGIN namespace pugi { namespace impl { namespace { +# define PUGI__NS_END } } } +# endif +# define PUGI__FN +# define PUGI__FN_NO_INLINE PUGI__NO_INLINE +#endif + +// uintptr_t +#if !defined(_MSC_VER) || _MSC_VER >= 1600 +# include +#else +# ifndef _UINTPTR_T_DEFINED +// No native uintptr_t in MSVC6 and in some WinCE versions +typedef size_t uintptr_t; +#define _UINTPTR_T_DEFINED +# endif +PUGI__NS_BEGIN + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; +PUGI__NS_END +#endif + +// Memory allocation +PUGI__NS_BEGIN + PUGI__FN void* default_allocate(size_t size) + { + return malloc(size); + } + + PUGI__FN void default_deallocate(void* ptr) + { + free(ptr); + } + + template + struct xml_memory_management_function_storage + { + static allocation_function allocate; + static deallocation_function deallocate; + }; + + template allocation_function xml_memory_management_function_storage::allocate = default_allocate; + template deallocation_function xml_memory_management_function_storage::deallocate = default_deallocate; + + typedef xml_memory_management_function_storage xml_memory; +PUGI__NS_END + +// String utilities +PUGI__NS_BEGIN + // Get string length + PUGI__FN size_t strlength(const char_t* s) + { + assert(s); + + #ifdef PUGIXML_WCHAR_MODE + return wcslen(s); + #else + return strlen(s); + #endif + } + + // Compare two strings + PUGI__FN bool strequal(const char_t* src, const char_t* dst) + { + assert(src && dst); + + #ifdef PUGIXML_WCHAR_MODE + return wcscmp(src, dst) == 0; + #else + return strcmp(src, dst) == 0; + #endif + } + + // Compare lhs with [rhs_begin, rhs_end) + PUGI__FN bool strequalrange(const char_t* lhs, const char_t* rhs, size_t count) + { + for (size_t i = 0; i < count; ++i) + if (lhs[i] != rhs[i]) + return false; + + return lhs[count] == 0; + } + + // Get length of wide string, even if CRT lacks wide character support + PUGI__FN size_t strlength_wide(const wchar_t* s) + { + assert(s); + + #ifdef PUGIXML_WCHAR_MODE + return wcslen(s); + #else + const wchar_t* end = s; + while (*end) end++; + return static_cast(end - s); + #endif + } + +#ifdef PUGIXML_WCHAR_MODE + // Convert string to wide string, assuming all symbols are ASCII + PUGI__FN void widen_ascii(wchar_t* dest, const char* source) + { + for (const char* i = source; *i; ++i) *dest++ = *i; + *dest = 0; + } +#endif +PUGI__NS_END + +#if !defined(PUGIXML_NO_STL) || !defined(PUGIXML_NO_XPATH) +// auto_ptr-like buffer holder for exception recovery +PUGI__NS_BEGIN + struct buffer_holder + { + void* data; + void (*deleter)(void*); + + buffer_holder(void* data_, void (*deleter_)(void*)): data(data_), deleter(deleter_) + { + } + + ~buffer_holder() + { + if (data) deleter(data); + } + + void* release() + { + void* result = data; + data = 0; + return result; + } + }; +PUGI__NS_END +#endif + +PUGI__NS_BEGIN + static const size_t xml_memory_page_size = + #ifdef PUGIXML_MEMORY_PAGE_SIZE + PUGIXML_MEMORY_PAGE_SIZE + #else + 32768 + #endif + ; + + static const uintptr_t xml_memory_page_alignment = 32; + static const uintptr_t xml_memory_page_pointer_mask = ~(xml_memory_page_alignment - 1); + static const uintptr_t xml_memory_page_name_allocated_mask = 16; + static const uintptr_t xml_memory_page_value_allocated_mask = 8; + static const uintptr_t xml_memory_page_type_mask = 7; + + struct xml_allocator; + + struct xml_memory_page + { + static xml_memory_page* construct(void* memory) + { + if (!memory) return 0; //$ redundant, left for performance + + xml_memory_page* result = static_cast(memory); + + result->allocator = 0; + result->memory = 0; + result->prev = 0; + result->next = 0; + result->busy_size = 0; + result->freed_size = 0; + + return result; + } + + xml_allocator* allocator; + + void* memory; + + xml_memory_page* prev; + xml_memory_page* next; + + size_t busy_size; + size_t freed_size; + + char data[1]; + }; + + struct xml_memory_string_header + { + uint16_t page_offset; // offset from page->data + uint16_t full_size; // 0 if string occupies whole page + }; + + struct xml_allocator + { + xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->busy_size) + { + } + + xml_memory_page* allocate_page(size_t data_size) + { + size_t size = offsetof(xml_memory_page, data) + data_size; + + // allocate block with some alignment, leaving memory for worst-case padding + void* memory = xml_memory::allocate(size + xml_memory_page_alignment); + if (!memory) return 0; + + // align upwards to page boundary + void* page_memory = reinterpret_cast((reinterpret_cast(memory) + (xml_memory_page_alignment - 1)) & ~(xml_memory_page_alignment - 1)); + + // prepare page structure + xml_memory_page* page = xml_memory_page::construct(page_memory); + assert(page); + + page->memory = memory; + page->allocator = _root->allocator; + + return page; + } + + static void deallocate_page(xml_memory_page* page) + { + xml_memory::deallocate(page->memory); + } + + void* allocate_memory_oob(size_t size, xml_memory_page*& out_page); + + void* allocate_memory(size_t size, xml_memory_page*& out_page) + { + if (_busy_size + size > xml_memory_page_size) return allocate_memory_oob(size, out_page); + + void* buf = _root->data + _busy_size; + + _busy_size += size; + + out_page = _root; + + return buf; + } + + void deallocate_memory(void* ptr, size_t size, xml_memory_page* page) + { + if (page == _root) page->busy_size = _busy_size; + + assert(ptr >= page->data && ptr < page->data + page->busy_size); + (void)!ptr; + + page->freed_size += size; + assert(page->freed_size <= page->busy_size); + + if (page->freed_size == page->busy_size) + { + if (page->next == 0) + { + assert(_root == page); + + // top page freed, just reset sizes + page->busy_size = page->freed_size = 0; + _busy_size = 0; + } + else + { + assert(_root != page); + assert(page->prev); + + // remove from the list + page->prev->next = page->next; + page->next->prev = page->prev; + + // deallocate + deallocate_page(page); + } + } + } + + char_t* allocate_string(size_t length) + { + // allocate memory for string and header block + size_t size = sizeof(xml_memory_string_header) + length * sizeof(char_t); + + // round size up to pointer alignment boundary + size_t full_size = (size + (sizeof(void*) - 1)) & ~(sizeof(void*) - 1); + + xml_memory_page* page; + xml_memory_string_header* header = static_cast(allocate_memory(full_size, page)); + + if (!header) return 0; + + // setup header + ptrdiff_t page_offset = reinterpret_cast(header) - page->data; + + assert(page_offset >= 0 && page_offset < (1 << 16)); + header->page_offset = static_cast(page_offset); + + // full_size == 0 for large strings that occupy the whole page + assert(full_size < (1 << 16) || (page->busy_size == full_size && page_offset == 0)); + header->full_size = static_cast(full_size < (1 << 16) ? full_size : 0); + + // round-trip through void* to avoid 'cast increases required alignment of target type' warning + // header is guaranteed a pointer-sized alignment, which should be enough for char_t + return static_cast(static_cast(header + 1)); + } + + void deallocate_string(char_t* string) + { + // this function casts pointers through void* to avoid 'cast increases required alignment of target type' warnings + // we're guaranteed the proper (pointer-sized) alignment on the input string if it was allocated via allocate_string + + // get header + xml_memory_string_header* header = static_cast(static_cast(string)) - 1; + + // deallocate + size_t page_offset = offsetof(xml_memory_page, data) + header->page_offset; + xml_memory_page* page = reinterpret_cast(static_cast(reinterpret_cast(header) - page_offset)); + + // if full_size == 0 then this string occupies the whole page + size_t full_size = header->full_size == 0 ? page->busy_size : header->full_size; + + deallocate_memory(header, full_size, page); + } + + xml_memory_page* _root; + size_t _busy_size; + }; + + PUGI__FN_NO_INLINE void* xml_allocator::allocate_memory_oob(size_t size, xml_memory_page*& out_page) + { + const size_t large_allocation_threshold = xml_memory_page_size / 4; + + xml_memory_page* page = allocate_page(size <= large_allocation_threshold ? xml_memory_page_size : size); + out_page = page; + + if (!page) return 0; + + if (size <= large_allocation_threshold) + { + _root->busy_size = _busy_size; + + // insert page at the end of linked list + page->prev = _root; + _root->next = page; + _root = page; + + _busy_size = size; + } + else + { + // insert page before the end of linked list, so that it is deleted as soon as possible + // the last page is not deleted even if it's empty (see deallocate_memory) + assert(_root->prev); + + page->prev = _root->prev; + page->next = _root; + + _root->prev->next = page; + _root->prev = page; + } + + // allocate inside page + page->busy_size = size; + + return page->data; + } +PUGI__NS_END + +namespace pugi +{ + /// A 'name=value' XML attribute structure. + struct xml_attribute_struct + { + /// Default ctor + xml_attribute_struct(impl::xml_memory_page* page): header(reinterpret_cast(page)), name(0), value(0), prev_attribute_c(0), next_attribute(0) + { + } + + uintptr_t header; + + char_t* name; ///< Pointer to attribute name. + char_t* value; ///< Pointer to attribute value. + + xml_attribute_struct* prev_attribute_c; ///< Previous attribute (cyclic list) + xml_attribute_struct* next_attribute; ///< Next attribute + }; + + /// An XML document tree node. + struct xml_node_struct + { + /// Default ctor + /// \param type - node type + xml_node_struct(impl::xml_memory_page* page, xml_node_type type): header(reinterpret_cast(page) | (type - 1)), parent(0), name(0), value(0), first_child(0), prev_sibling_c(0), next_sibling(0), first_attribute(0) + { + } + + uintptr_t header; + + xml_node_struct* parent; ///< Pointer to parent + + char_t* name; ///< Pointer to element name. + char_t* value; ///< Pointer to any associated string data. + + xml_node_struct* first_child; ///< First child + + xml_node_struct* prev_sibling_c; ///< Left brother (cyclic list) + xml_node_struct* next_sibling; ///< Right brother + + xml_attribute_struct* first_attribute; ///< First attribute + }; +} + +PUGI__NS_BEGIN + struct xml_extra_buffer + { + char_t* buffer; + xml_extra_buffer* next; + }; + + struct xml_document_struct: public xml_node_struct, public xml_allocator + { + xml_document_struct(xml_memory_page* page): xml_node_struct(page, node_document), xml_allocator(page), buffer(0), extra_buffers(0) + { + } + + const char_t* buffer; + + xml_extra_buffer* extra_buffers; + }; + + inline xml_allocator& get_allocator(const xml_node_struct* node) + { + assert(node); + + return *reinterpret_cast(node->header & xml_memory_page_pointer_mask)->allocator; + } +PUGI__NS_END + +// Low-level DOM operations +PUGI__NS_BEGIN + inline xml_attribute_struct* allocate_attribute(xml_allocator& alloc) + { + xml_memory_page* page; + void* memory = alloc.allocate_memory(sizeof(xml_attribute_struct), page); + + return new (memory) xml_attribute_struct(page); + } + + inline xml_node_struct* allocate_node(xml_allocator& alloc, xml_node_type type) + { + xml_memory_page* page; + void* memory = alloc.allocate_memory(sizeof(xml_node_struct), page); + + return new (memory) xml_node_struct(page, type); + } + + inline void destroy_attribute(xml_attribute_struct* a, xml_allocator& alloc) + { + uintptr_t header = a->header; + + if (header & impl::xml_memory_page_name_allocated_mask) alloc.deallocate_string(a->name); + if (header & impl::xml_memory_page_value_allocated_mask) alloc.deallocate_string(a->value); + + alloc.deallocate_memory(a, sizeof(xml_attribute_struct), reinterpret_cast(header & xml_memory_page_pointer_mask)); + } + + inline void destroy_node(xml_node_struct* n, xml_allocator& alloc) + { + uintptr_t header = n->header; + + if (header & impl::xml_memory_page_name_allocated_mask) alloc.deallocate_string(n->name); + if (header & impl::xml_memory_page_value_allocated_mask) alloc.deallocate_string(n->value); + + for (xml_attribute_struct* attr = n->first_attribute; attr; ) + { + xml_attribute_struct* next = attr->next_attribute; + + destroy_attribute(attr, alloc); + + attr = next; + } + + for (xml_node_struct* child = n->first_child; child; ) + { + xml_node_struct* next = child->next_sibling; + + destroy_node(child, alloc); + + child = next; + } + + alloc.deallocate_memory(n, sizeof(xml_node_struct), reinterpret_cast(header & xml_memory_page_pointer_mask)); + } + + inline void append_node(xml_node_struct* child, xml_node_struct* node) + { + child->parent = node; + + xml_node_struct* head = node->first_child; + + if (head) + { + xml_node_struct* tail = head->prev_sibling_c; + + tail->next_sibling = child; + child->prev_sibling_c = tail; + head->prev_sibling_c = child; + } + else + { + node->first_child = child; + child->prev_sibling_c = child; + } + + child->next_sibling = 0; + } + + inline void prepend_node(xml_node_struct* child, xml_node_struct* node) + { + child->parent = node; + + xml_node_struct* head = node->first_child; + + if (head) + { + child->prev_sibling_c = head->prev_sibling_c; + head->prev_sibling_c = child; + } + else + child->prev_sibling_c = child; + + child->next_sibling = head; + node->first_child = child; + } + + inline void insert_node_after(xml_node_struct* child, xml_node_struct* node) + { + xml_node_struct* parent = node->parent; + + child->parent = parent; + + if (node->next_sibling) + node->next_sibling->prev_sibling_c = child; + else + parent->first_child->prev_sibling_c = child; + + child->next_sibling = node->next_sibling; + child->prev_sibling_c = node; + + node->next_sibling = child; + } + + inline void insert_node_before(xml_node_struct* child, xml_node_struct* node) + { + xml_node_struct* parent = node->parent; + + child->parent = parent; + + if (node->prev_sibling_c->next_sibling) + node->prev_sibling_c->next_sibling = child; + else + parent->first_child = child; + + child->prev_sibling_c = node->prev_sibling_c; + child->next_sibling = node; + + node->prev_sibling_c = child; + } + + inline void remove_node(xml_node_struct* node) + { + xml_node_struct* parent = node->parent; + + if (node->next_sibling) + node->next_sibling->prev_sibling_c = node->prev_sibling_c; + else if (parent->first_child) + parent->first_child->prev_sibling_c = node->prev_sibling_c; + + if (node->prev_sibling_c->next_sibling) + node->prev_sibling_c->next_sibling = node->next_sibling; + else + parent->first_child = node->next_sibling; + } + + PUGI__FN_NO_INLINE xml_node_struct* append_new_node(xml_node_struct* node, xml_allocator& alloc, xml_node_type type = node_element) + { + xml_node_struct* child = allocate_node(alloc, type); + if (!child) return 0; + + append_node(child, node); + + return child; + } + + PUGI__FN_NO_INLINE xml_attribute_struct* append_new_attribute(xml_node_struct* node, xml_allocator& alloc) + { + xml_attribute_struct* a = allocate_attribute(alloc); + if (!a) return 0; + + xml_attribute_struct* first_attribute = node->first_attribute; + + if (first_attribute) + { + xml_attribute_struct* last_attribute = first_attribute->prev_attribute_c; + + last_attribute->next_attribute = a; + a->prev_attribute_c = last_attribute; + first_attribute->prev_attribute_c = a; + } + else + { + node->first_attribute = a; + a->prev_attribute_c = a; + } + + return a; + } +PUGI__NS_END + +// Helper classes for code generation +PUGI__NS_BEGIN + struct opt_false + { + enum { value = 0 }; + }; + + struct opt_true + { + enum { value = 1 }; + }; +PUGI__NS_END + +// Unicode utilities +PUGI__NS_BEGIN + inline uint16_t endian_swap(uint16_t value) + { + return static_cast(((value & 0xff) << 8) | (value >> 8)); + } + + inline uint32_t endian_swap(uint32_t value) + { + return ((value & 0xff) << 24) | ((value & 0xff00) << 8) | ((value & 0xff0000) >> 8) | (value >> 24); + } + + struct utf8_counter + { + typedef size_t value_type; + + static value_type low(value_type result, uint32_t ch) + { + // U+0000..U+007F + if (ch < 0x80) return result + 1; + // U+0080..U+07FF + else if (ch < 0x800) return result + 2; + // U+0800..U+FFFF + else return result + 3; + } + + static value_type high(value_type result, uint32_t) + { + // U+10000..U+10FFFF + return result + 4; + } + }; + + struct utf8_writer + { + typedef uint8_t* value_type; + + static value_type low(value_type result, uint32_t ch) + { + // U+0000..U+007F + if (ch < 0x80) + { + *result = static_cast(ch); + return result + 1; + } + // U+0080..U+07FF + else if (ch < 0x800) + { + result[0] = static_cast(0xC0 | (ch >> 6)); + result[1] = static_cast(0x80 | (ch & 0x3F)); + return result + 2; + } + // U+0800..U+FFFF + else + { + result[0] = static_cast(0xE0 | (ch >> 12)); + result[1] = static_cast(0x80 | ((ch >> 6) & 0x3F)); + result[2] = static_cast(0x80 | (ch & 0x3F)); + return result + 3; + } + } + + static value_type high(value_type result, uint32_t ch) + { + // U+10000..U+10FFFF + result[0] = static_cast(0xF0 | (ch >> 18)); + result[1] = static_cast(0x80 | ((ch >> 12) & 0x3F)); + result[2] = static_cast(0x80 | ((ch >> 6) & 0x3F)); + result[3] = static_cast(0x80 | (ch & 0x3F)); + return result + 4; + } + + static value_type any(value_type result, uint32_t ch) + { + return (ch < 0x10000) ? low(result, ch) : high(result, ch); + } + }; + + struct utf16_counter + { + typedef size_t value_type; + + static value_type low(value_type result, uint32_t) + { + return result + 1; + } + + static value_type high(value_type result, uint32_t) + { + return result + 2; + } + }; + + struct utf16_writer + { + typedef uint16_t* value_type; + + static value_type low(value_type result, uint32_t ch) + { + *result = static_cast(ch); + + return result + 1; + } + + static value_type high(value_type result, uint32_t ch) + { + uint32_t msh = static_cast(ch - 0x10000) >> 10; + uint32_t lsh = static_cast(ch - 0x10000) & 0x3ff; + + result[0] = static_cast(0xD800 + msh); + result[1] = static_cast(0xDC00 + lsh); + + return result + 2; + } + + static value_type any(value_type result, uint32_t ch) + { + return (ch < 0x10000) ? low(result, ch) : high(result, ch); + } + }; + + struct utf32_counter + { + typedef size_t value_type; + + static value_type low(value_type result, uint32_t) + { + return result + 1; + } + + static value_type high(value_type result, uint32_t) + { + return result + 1; + } + }; + + struct utf32_writer + { + typedef uint32_t* value_type; + + static value_type low(value_type result, uint32_t ch) + { + *result = ch; + + return result + 1; + } + + static value_type high(value_type result, uint32_t ch) + { + *result = ch; + + return result + 1; + } + + static value_type any(value_type result, uint32_t ch) + { + *result = ch; + + return result + 1; + } + }; + + struct latin1_writer + { + typedef uint8_t* value_type; + + static value_type low(value_type result, uint32_t ch) + { + *result = static_cast(ch > 255 ? '?' : ch); + + return result + 1; + } + + static value_type high(value_type result, uint32_t ch) + { + (void)ch; + + *result = '?'; + + return result + 1; + } + }; + + template struct wchar_selector; + + template <> struct wchar_selector<2> + { + typedef uint16_t type; + typedef utf16_counter counter; + typedef utf16_writer writer; + }; + + template <> struct wchar_selector<4> + { + typedef uint32_t type; + typedef utf32_counter counter; + typedef utf32_writer writer; + }; + + typedef wchar_selector::counter wchar_counter; + typedef wchar_selector::writer wchar_writer; + + template struct utf_decoder + { + static inline typename Traits::value_type decode_utf8_block(const uint8_t* data, size_t size, typename Traits::value_type result) + { + const uint8_t utf8_byte_mask = 0x3f; + + while (size) + { + uint8_t lead = *data; + + // 0xxxxxxx -> U+0000..U+007F + if (lead < 0x80) + { + result = Traits::low(result, lead); + data += 1; + size -= 1; + + // process aligned single-byte (ascii) blocks + if ((reinterpret_cast(data) & 3) == 0) + { + // round-trip through void* to silence 'cast increases required alignment of target type' warnings + while (size >= 4 && (*static_cast(static_cast(data)) & 0x80808080) == 0) + { + result = Traits::low(result, data[0]); + result = Traits::low(result, data[1]); + result = Traits::low(result, data[2]); + result = Traits::low(result, data[3]); + data += 4; + size -= 4; + } + } + } + // 110xxxxx -> U+0080..U+07FF + else if (static_cast(lead - 0xC0) < 0x20 && size >= 2 && (data[1] & 0xc0) == 0x80) + { + result = Traits::low(result, ((lead & ~0xC0) << 6) | (data[1] & utf8_byte_mask)); + data += 2; + size -= 2; + } + // 1110xxxx -> U+0800-U+FFFF + else if (static_cast(lead - 0xE0) < 0x10 && size >= 3 && (data[1] & 0xc0) == 0x80 && (data[2] & 0xc0) == 0x80) + { + result = Traits::low(result, ((lead & ~0xE0) << 12) | ((data[1] & utf8_byte_mask) << 6) | (data[2] & utf8_byte_mask)); + data += 3; + size -= 3; + } + // 11110xxx -> U+10000..U+10FFFF + else if (static_cast(lead - 0xF0) < 0x08 && size >= 4 && (data[1] & 0xc0) == 0x80 && (data[2] & 0xc0) == 0x80 && (data[3] & 0xc0) == 0x80) + { + result = Traits::high(result, ((lead & ~0xF0) << 18) | ((data[1] & utf8_byte_mask) << 12) | ((data[2] & utf8_byte_mask) << 6) | (data[3] & utf8_byte_mask)); + data += 4; + size -= 4; + } + // 10xxxxxx or 11111xxx -> invalid + else + { + data += 1; + size -= 1; + } + } + + return result; + } + + static inline typename Traits::value_type decode_utf16_block(const uint16_t* data, size_t size, typename Traits::value_type result) + { + const uint16_t* end = data + size; + + while (data < end) + { + unsigned int lead = opt_swap::value ? endian_swap(*data) : *data; + + // U+0000..U+D7FF + if (lead < 0xD800) + { + result = Traits::low(result, lead); + data += 1; + } + // U+E000..U+FFFF + else if (static_cast(lead - 0xE000) < 0x2000) + { + result = Traits::low(result, lead); + data += 1; + } + // surrogate pair lead + else if (static_cast(lead - 0xD800) < 0x400 && data + 1 < end) + { + uint16_t next = opt_swap::value ? endian_swap(data[1]) : data[1]; + + if (static_cast(next - 0xDC00) < 0x400) + { + result = Traits::high(result, 0x10000 + ((lead & 0x3ff) << 10) + (next & 0x3ff)); + data += 2; + } + else + { + data += 1; + } + } + else + { + data += 1; + } + } + + return result; + } + + static inline typename Traits::value_type decode_utf32_block(const uint32_t* data, size_t size, typename Traits::value_type result) + { + const uint32_t* end = data + size; + + while (data < end) + { + uint32_t lead = opt_swap::value ? endian_swap(*data) : *data; + + // U+0000..U+FFFF + if (lead < 0x10000) + { + result = Traits::low(result, lead); + data += 1; + } + // U+10000..U+10FFFF + else + { + result = Traits::high(result, lead); + data += 1; + } + } + + return result; + } + + static inline typename Traits::value_type decode_latin1_block(const uint8_t* data, size_t size, typename Traits::value_type result) + { + for (size_t i = 0; i < size; ++i) + { + result = Traits::low(result, data[i]); + } + + return result; + } + + static inline typename Traits::value_type decode_wchar_block_impl(const uint16_t* data, size_t size, typename Traits::value_type result) + { + return decode_utf16_block(data, size, result); + } + + static inline typename Traits::value_type decode_wchar_block_impl(const uint32_t* data, size_t size, typename Traits::value_type result) + { + return decode_utf32_block(data, size, result); + } + + static inline typename Traits::value_type decode_wchar_block(const wchar_t* data, size_t size, typename Traits::value_type result) + { + return decode_wchar_block_impl(reinterpret_cast::type*>(data), size, result); + } + }; + + template PUGI__FN void convert_utf_endian_swap(T* result, const T* data, size_t length) + { + for (size_t i = 0; i < length; ++i) result[i] = endian_swap(data[i]); + } + +#ifdef PUGIXML_WCHAR_MODE + PUGI__FN void convert_wchar_endian_swap(wchar_t* result, const wchar_t* data, size_t length) + { + for (size_t i = 0; i < length; ++i) result[i] = static_cast(endian_swap(static_cast::type>(data[i]))); + } +#endif +PUGI__NS_END + +PUGI__NS_BEGIN + enum chartype_t + { + ct_parse_pcdata = 1, // \0, &, \r, < + ct_parse_attr = 2, // \0, &, \r, ', " + ct_parse_attr_ws = 4, // \0, &, \r, ', ", \n, tab + ct_space = 8, // \r, \n, space, tab + ct_parse_cdata = 16, // \0, ], >, \r + ct_parse_comment = 32, // \0, -, >, \r + ct_symbol = 64, // Any symbol > 127, a-z, A-Z, 0-9, _, :, -, . + ct_start_symbol = 128 // Any symbol > 127, a-z, A-Z, _, : + }; + + static const unsigned char chartype_table[256] = + { + 55, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 63, 0, 0, // 0-15 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16-31 + 8, 0, 6, 0, 0, 0, 7, 6, 0, 0, 0, 0, 0, 96, 64, 0, // 32-47 + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 192, 0, 1, 0, 48, 0, // 48-63 + 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 64-79 + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 0, 16, 0, 192, // 80-95 + 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 96-111 + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0, 0, // 112-127 + + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 128+ + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192 + }; + + enum chartypex_t + { + ctx_special_pcdata = 1, // Any symbol >= 0 and < 32 (except \t, \r, \n), &, <, > + ctx_special_attr = 2, // Any symbol >= 0 and < 32 (except \t), &, <, >, " + ctx_start_symbol = 4, // Any symbol > 127, a-z, A-Z, _ + ctx_digit = 8, // 0-9 + ctx_symbol = 16 // Any symbol > 127, a-z, A-Z, 0-9, _, -, . + }; + + static const unsigned char chartypex_table[256] = + { + 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 3, 3, 2, 3, 3, // 0-15 + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 16-31 + 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 16, 16, 0, // 32-47 + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 3, 0, 3, 0, // 48-63 + + 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 64-79 + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 20, // 80-95 + 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 96-111 + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, // 112-127 + + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 128+ + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 + }; + +#ifdef PUGIXML_WCHAR_MODE + #define PUGI__IS_CHARTYPE_IMPL(c, ct, table) ((static_cast(c) < 128 ? table[static_cast(c)] : table[128]) & (ct)) +#else + #define PUGI__IS_CHARTYPE_IMPL(c, ct, table) (table[static_cast(c)] & (ct)) +#endif + + #define PUGI__IS_CHARTYPE(c, ct) PUGI__IS_CHARTYPE_IMPL(c, ct, chartype_table) + #define PUGI__IS_CHARTYPEX(c, ct) PUGI__IS_CHARTYPE_IMPL(c, ct, chartypex_table) + + PUGI__FN bool is_little_endian() + { + unsigned int ui = 1; + + return *reinterpret_cast(&ui) == 1; + } + + PUGI__FN xml_encoding get_wchar_encoding() + { + PUGI__STATIC_ASSERT(sizeof(wchar_t) == 2 || sizeof(wchar_t) == 4); + + if (sizeof(wchar_t) == 2) + return is_little_endian() ? encoding_utf16_le : encoding_utf16_be; + else + return is_little_endian() ? encoding_utf32_le : encoding_utf32_be; + } + + PUGI__FN xml_encoding guess_buffer_encoding(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) + { + // look for BOM in first few bytes + if (d0 == 0 && d1 == 0 && d2 == 0xfe && d3 == 0xff) return encoding_utf32_be; + if (d0 == 0xff && d1 == 0xfe && d2 == 0 && d3 == 0) return encoding_utf32_le; + if (d0 == 0xfe && d1 == 0xff) return encoding_utf16_be; + if (d0 == 0xff && d1 == 0xfe) return encoding_utf16_le; + if (d0 == 0xef && d1 == 0xbb && d2 == 0xbf) return encoding_utf8; + + // look for <, (contents); + + PUGI__DMC_VOLATILE uint8_t d0 = data[0], d1 = data[1], d2 = data[2], d3 = data[3]; + + return guess_buffer_encoding(d0, d1, d2, d3); + } + + PUGI__FN bool get_mutable_buffer(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) + { + size_t length = size / sizeof(char_t); + + if (is_mutable) + { + out_buffer = static_cast(const_cast(contents)); + out_length = length; + } + else + { + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + memcpy(buffer, contents, length * sizeof(char_t)); + buffer[length] = 0; + + out_buffer = buffer; + out_length = length + 1; + } + + return true; + } + +#ifdef PUGIXML_WCHAR_MODE + PUGI__FN bool need_endian_swap_utf(xml_encoding le, xml_encoding re) + { + return (le == encoding_utf16_be && re == encoding_utf16_le) || (le == encoding_utf16_le && re == encoding_utf16_be) || + (le == encoding_utf32_be && re == encoding_utf32_le) || (le == encoding_utf32_le && re == encoding_utf32_be); + } + + PUGI__FN bool convert_buffer_endian_swap(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) + { + const char_t* data = static_cast(contents); + size_t length = size / sizeof(char_t); + + if (is_mutable) + { + char_t* buffer = const_cast(data); + + convert_wchar_endian_swap(buffer, data, length); + + out_buffer = buffer; + out_length = length; + } + else + { + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + convert_wchar_endian_swap(buffer, data, length); + buffer[length] = 0; + + out_buffer = buffer; + out_length = length + 1; + } + + return true; + } + + PUGI__FN bool convert_buffer_utf8(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size) + { + const uint8_t* data = static_cast(contents); + size_t data_length = size; + + // first pass: get length in wchar_t units + size_t length = utf_decoder::decode_utf8_block(data, data_length, 0); + + // allocate buffer of suitable length + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + // second pass: convert utf8 input to wchar_t + wchar_writer::value_type obegin = reinterpret_cast(buffer); + wchar_writer::value_type oend = utf_decoder::decode_utf8_block(data, data_length, obegin); + + assert(oend == obegin + length); + *oend = 0; + + out_buffer = buffer; + out_length = length + 1; + + return true; + } + + template PUGI__FN bool convert_buffer_utf16(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) + { + const uint16_t* data = static_cast(contents); + size_t data_length = size / sizeof(uint16_t); + + // first pass: get length in wchar_t units + size_t length = utf_decoder::decode_utf16_block(data, data_length, 0); + + // allocate buffer of suitable length + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + // second pass: convert utf16 input to wchar_t + wchar_writer::value_type obegin = reinterpret_cast(buffer); + wchar_writer::value_type oend = utf_decoder::decode_utf16_block(data, data_length, obegin); + + assert(oend == obegin + length); + *oend = 0; + + out_buffer = buffer; + out_length = length + 1; + + return true; + } + + template PUGI__FN bool convert_buffer_utf32(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) + { + const uint32_t* data = static_cast(contents); + size_t data_length = size / sizeof(uint32_t); + + // first pass: get length in wchar_t units + size_t length = utf_decoder::decode_utf32_block(data, data_length, 0); + + // allocate buffer of suitable length + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + // second pass: convert utf32 input to wchar_t + wchar_writer::value_type obegin = reinterpret_cast(buffer); + wchar_writer::value_type oend = utf_decoder::decode_utf32_block(data, data_length, obegin); + + assert(oend == obegin + length); + *oend = 0; + + out_buffer = buffer; + out_length = length + 1; + + return true; + } + + PUGI__FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size) + { + const uint8_t* data = static_cast(contents); + size_t data_length = size; + + // get length in wchar_t units + size_t length = data_length; + + // allocate buffer of suitable length + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + // convert latin1 input to wchar_t + wchar_writer::value_type obegin = reinterpret_cast(buffer); + wchar_writer::value_type oend = utf_decoder::decode_latin1_block(data, data_length, obegin); + + assert(oend == obegin + length); + *oend = 0; + + out_buffer = buffer; + out_length = length + 1; + + return true; + } + + PUGI__FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xml_encoding encoding, const void* contents, size_t size, bool is_mutable) + { + // get native encoding + xml_encoding wchar_encoding = get_wchar_encoding(); + + // fast path: no conversion required + if (encoding == wchar_encoding) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); + + // only endian-swapping is required + if (need_endian_swap_utf(encoding, wchar_encoding)) return convert_buffer_endian_swap(out_buffer, out_length, contents, size, is_mutable); + + // source encoding is utf8 + if (encoding == encoding_utf8) return convert_buffer_utf8(out_buffer, out_length, contents, size); + + // source encoding is utf16 + if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) + { + xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; + + return (native_encoding == encoding) ? + convert_buffer_utf16(out_buffer, out_length, contents, size, opt_false()) : + convert_buffer_utf16(out_buffer, out_length, contents, size, opt_true()); + } + + // source encoding is utf32 + if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) + { + xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; + + return (native_encoding == encoding) ? + convert_buffer_utf32(out_buffer, out_length, contents, size, opt_false()) : + convert_buffer_utf32(out_buffer, out_length, contents, size, opt_true()); + } + + // source encoding is latin1 + if (encoding == encoding_latin1) return convert_buffer_latin1(out_buffer, out_length, contents, size); + + assert(!"Invalid encoding"); + return false; + } +#else + template PUGI__FN bool convert_buffer_utf16(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) + { + const uint16_t* data = static_cast(contents); + size_t data_length = size / sizeof(uint16_t); + + // first pass: get length in utf8 units + size_t length = utf_decoder::decode_utf16_block(data, data_length, 0); + + // allocate buffer of suitable length + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + // second pass: convert utf16 input to utf8 + uint8_t* obegin = reinterpret_cast(buffer); + uint8_t* oend = utf_decoder::decode_utf16_block(data, data_length, obegin); + + assert(oend == obegin + length); + *oend = 0; + + out_buffer = buffer; + out_length = length + 1; + + return true; + } + + template PUGI__FN bool convert_buffer_utf32(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) + { + const uint32_t* data = static_cast(contents); + size_t data_length = size / sizeof(uint32_t); + + // first pass: get length in utf8 units + size_t length = utf_decoder::decode_utf32_block(data, data_length, 0); + + // allocate buffer of suitable length + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + // second pass: convert utf32 input to utf8 + uint8_t* obegin = reinterpret_cast(buffer); + uint8_t* oend = utf_decoder::decode_utf32_block(data, data_length, obegin); + + assert(oend == obegin + length); + *oend = 0; + + out_buffer = buffer; + out_length = length + 1; + + return true; + } + + PUGI__FN size_t get_latin1_7bit_prefix_length(const uint8_t* data, size_t size) + { + for (size_t i = 0; i < size; ++i) + if (data[i] > 127) + return i; + + return size; + } + + PUGI__FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) + { + const uint8_t* data = static_cast(contents); + size_t data_length = size; + + // get size of prefix that does not need utf8 conversion + size_t prefix_length = get_latin1_7bit_prefix_length(data, data_length); + assert(prefix_length <= data_length); + + const uint8_t* postfix = data + prefix_length; + size_t postfix_length = data_length - prefix_length; + + // if no conversion is needed, just return the original buffer + if (postfix_length == 0) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); + + // first pass: get length in utf8 units + size_t length = prefix_length + utf_decoder::decode_latin1_block(postfix, postfix_length, 0); + + // allocate buffer of suitable length + char_t* buffer = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!buffer) return false; + + // second pass: convert latin1 input to utf8 + memcpy(buffer, data, prefix_length); + + uint8_t* obegin = reinterpret_cast(buffer); + uint8_t* oend = utf_decoder::decode_latin1_block(postfix, postfix_length, obegin + prefix_length); + + assert(oend == obegin + length); + *oend = 0; + + out_buffer = buffer; + out_length = length + 1; + + return true; + } + + PUGI__FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xml_encoding encoding, const void* contents, size_t size, bool is_mutable) + { + // fast path: no conversion required + if (encoding == encoding_utf8) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); + + // source encoding is utf16 + if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) + { + xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; + + return (native_encoding == encoding) ? + convert_buffer_utf16(out_buffer, out_length, contents, size, opt_false()) : + convert_buffer_utf16(out_buffer, out_length, contents, size, opt_true()); + } + + // source encoding is utf32 + if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) + { + xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; + + return (native_encoding == encoding) ? + convert_buffer_utf32(out_buffer, out_length, contents, size, opt_false()) : + convert_buffer_utf32(out_buffer, out_length, contents, size, opt_true()); + } + + // source encoding is latin1 + if (encoding == encoding_latin1) return convert_buffer_latin1(out_buffer, out_length, contents, size, is_mutable); + + assert(!"Invalid encoding"); + return false; + } +#endif + + PUGI__FN size_t as_utf8_begin(const wchar_t* str, size_t length) + { + // get length in utf8 characters + return utf_decoder::decode_wchar_block(str, length, 0); + } + + PUGI__FN void as_utf8_end(char* buffer, size_t size, const wchar_t* str, size_t length) + { + // convert to utf8 + uint8_t* begin = reinterpret_cast(buffer); + uint8_t* end = utf_decoder::decode_wchar_block(str, length, begin); + + assert(begin + size == end); + (void)!end; + + // zero-terminate + buffer[size] = 0; + } + +#ifndef PUGIXML_NO_STL + PUGI__FN std::string as_utf8_impl(const wchar_t* str, size_t length) + { + // first pass: get length in utf8 characters + size_t size = as_utf8_begin(str, length); + + // allocate resulting string + std::string result; + result.resize(size); + + // second pass: convert to utf8 + if (size > 0) as_utf8_end(&result[0], size, str, length); + + return result; + } + + PUGI__FN std::basic_string as_wide_impl(const char* str, size_t size) + { + const uint8_t* data = reinterpret_cast(str); + + // first pass: get length in wchar_t units + size_t length = utf_decoder::decode_utf8_block(data, size, 0); + + // allocate resulting string + std::basic_string result; + result.resize(length); + + // second pass: convert to wchar_t + if (length > 0) + { + wchar_writer::value_type begin = reinterpret_cast(&result[0]); + wchar_writer::value_type end = utf_decoder::decode_utf8_block(data, size, begin); + + assert(begin + length == end); + (void)!end; + } + + return result; + } +#endif + + inline bool strcpy_insitu_allow(size_t length, uintptr_t allocated, char_t* target) + { + assert(target); + size_t target_length = strlength(target); + + // always reuse document buffer memory if possible + if (!allocated) return target_length >= length; + + // reuse heap memory if waste is not too great + const size_t reuse_threshold = 32; + + return target_length >= length && (target_length < reuse_threshold || target_length - length < target_length / 2); + } + + PUGI__FN bool strcpy_insitu(char_t*& dest, uintptr_t& header, uintptr_t header_mask, const char_t* source) + { + assert(header); + + size_t source_length = strlength(source); + + if (source_length == 0) + { + // empty string and null pointer are equivalent, so just deallocate old memory + xml_allocator* alloc = reinterpret_cast(header & xml_memory_page_pointer_mask)->allocator; + + if (header & header_mask) alloc->deallocate_string(dest); + + // mark the string as not allocated + dest = 0; + header &= ~header_mask; + + return true; + } + else if (dest && strcpy_insitu_allow(source_length, header & header_mask, dest)) + { + // we can reuse old buffer, so just copy the new data (including zero terminator) + memcpy(dest, source, (source_length + 1) * sizeof(char_t)); + + return true; + } + else + { + xml_allocator* alloc = reinterpret_cast(header & xml_memory_page_pointer_mask)->allocator; + + // allocate new buffer + char_t* buf = alloc->allocate_string(source_length + 1); + if (!buf) return false; + + // copy the string (including zero terminator) + memcpy(buf, source, (source_length + 1) * sizeof(char_t)); + + // deallocate old buffer (*after* the above to protect against overlapping memory and/or allocation failures) + if (header & header_mask) alloc->deallocate_string(dest); + + // the string is now allocated, so set the flag + dest = buf; + header |= header_mask; + + return true; + } + } + + struct gap + { + char_t* end; + size_t size; + + gap(): end(0), size(0) + { + } + + // Push new gap, move s count bytes further (skipping the gap). + // Collapse previous gap. + void push(char_t*& s, size_t count) + { + if (end) // there was a gap already; collapse it + { + // Move [old_gap_end, new_gap_start) to [old_gap_start, ...) + assert(s >= end); + memmove(end - size, end, reinterpret_cast(s) - reinterpret_cast(end)); + } + + s += count; // end of current gap + + // "merge" two gaps + end = s; + size += count; + } + + // Collapse all gaps, return past-the-end pointer + char_t* flush(char_t* s) + { + if (end) + { + // Move [old_gap_end, current_pos) to [old_gap_start, ...) + assert(s >= end); + memmove(end - size, end, reinterpret_cast(s) - reinterpret_cast(end)); + + return s - size; + } + else return s; + } + }; + + PUGI__FN char_t* strconv_escape(char_t* s, gap& g) + { + char_t* stre = s + 1; + + switch (*stre) + { + case '#': // &#... + { + unsigned int ucsc = 0; + + if (stre[1] == 'x') // &#x... (hex code) + { + stre += 2; + + char_t ch = *stre; + + if (ch == ';') return stre; + + for (;;) + { + if (static_cast(ch - '0') <= 9) + ucsc = 16 * ucsc + (ch - '0'); + else if (static_cast((ch | ' ') - 'a') <= 5) + ucsc = 16 * ucsc + ((ch | ' ') - 'a' + 10); + else if (ch == ';') + break; + else // cancel + return stre; + + ch = *++stre; + } + + ++stre; + } + else // &#... (dec code) + { + char_t ch = *++stre; + + if (ch == ';') return stre; + + for (;;) + { + if (static_cast(static_cast(ch) - '0') <= 9) + ucsc = 10 * ucsc + (ch - '0'); + else if (ch == ';') + break; + else // cancel + return stre; + + ch = *++stre; + } + + ++stre; + } + + #ifdef PUGIXML_WCHAR_MODE + s = reinterpret_cast(wchar_writer::any(reinterpret_cast(s), ucsc)); + #else + s = reinterpret_cast(utf8_writer::any(reinterpret_cast(s), ucsc)); + #endif + + g.push(s, stre - s); + return stre; + } + + case 'a': // &a + { + ++stre; + + if (*stre == 'm') // &am + { + if (*++stre == 'p' && *++stre == ';') // & + { + *s++ = '&'; + ++stre; + + g.push(s, stre - s); + return stre; + } + } + else if (*stre == 'p') // &ap + { + if (*++stre == 'o' && *++stre == 's' && *++stre == ';') // ' + { + *s++ = '\''; + ++stre; + + g.push(s, stre - s); + return stre; + } + } + break; + } + + case 'g': // &g + { + if (*++stre == 't' && *++stre == ';') // > + { + *s++ = '>'; + ++stre; + + g.push(s, stre - s); + return stre; + } + break; + } + + case 'l': // &l + { + if (*++stre == 't' && *++stre == ';') // < + { + *s++ = '<'; + ++stre; + + g.push(s, stre - s); + return stre; + } + break; + } + + case 'q': // &q + { + if (*++stre == 'u' && *++stre == 'o' && *++stre == 't' && *++stre == ';') // " + { + *s++ = '"'; + ++stre; + + g.push(s, stre - s); + return stre; + } + break; + } + + default: + break; + } + + return stre; + } + + // Parser utilities + #define PUGI__ENDSWITH(c, e) ((c) == (e) || ((c) == 0 && endch == (e))) + #define PUGI__SKIPWS() { while (PUGI__IS_CHARTYPE(*s, ct_space)) ++s; } + #define PUGI__OPTSET(OPT) ( optmsk & (OPT) ) + #define PUGI__PUSHNODE(TYPE) { cursor = append_new_node(cursor, alloc, TYPE); if (!cursor) PUGI__THROW_ERROR(status_out_of_memory, s); } + #define PUGI__POPNODE() { cursor = cursor->parent; } + #define PUGI__SCANFOR(X) { while (*s != 0 && !(X)) ++s; } + #define PUGI__SCANWHILE(X) { while (X) ++s; } + #define PUGI__SCANWHILE_UNROLL(X) { while (X) { ++s; if (PUGI__UNLIKELY(!(X))) break; ++s; if (PUGI__UNLIKELY(!(X))) break; ++s; if (PUGI__UNLIKELY(!(X))) break; ++s; } } + #define PUGI__ENDSEG() { ch = *s; *s = 0; ++s; } + #define PUGI__THROW_ERROR(err, m) return error_offset = m, error_status = err, static_cast(0) + #define PUGI__CHECK_ERROR(err, m) { if (*s == 0) PUGI__THROW_ERROR(err, m); } + + PUGI__FN char_t* strconv_comment(char_t* s, char_t endch) + { + gap g; + + while (true) + { + PUGI__SCANWHILE_UNROLL(!PUGI__IS_CHARTYPE(*s, ct_parse_comment)); + + if (*s == '\r') // Either a single 0x0d or 0x0d 0x0a pair + { + *s++ = '\n'; // replace first one with 0x0a + + if (*s == '\n') g.push(s, 1); + } + else if (s[0] == '-' && s[1] == '-' && PUGI__ENDSWITH(s[2], '>')) // comment ends here + { + *g.flush(s) = 0; + + return s + (s[2] == '>' ? 3 : 2); + } + else if (*s == 0) + { + return 0; + } + else ++s; + } + } + + PUGI__FN char_t* strconv_cdata(char_t* s, char_t endch) + { + gap g; + + while (true) + { + PUGI__SCANWHILE_UNROLL(!PUGI__IS_CHARTYPE(*s, ct_parse_cdata)); + + if (*s == '\r') // Either a single 0x0d or 0x0d 0x0a pair + { + *s++ = '\n'; // replace first one with 0x0a + + if (*s == '\n') g.push(s, 1); + } + else if (s[0] == ']' && s[1] == ']' && PUGI__ENDSWITH(s[2], '>')) // CDATA ends here + { + *g.flush(s) = 0; + + return s + 1; + } + else if (*s == 0) + { + return 0; + } + else ++s; + } + } + + typedef char_t* (*strconv_pcdata_t)(char_t*); + + template struct strconv_pcdata_impl + { + static char_t* parse(char_t* s) + { + gap g; + + char_t* begin = s; + + while (true) + { + PUGI__SCANWHILE_UNROLL(!PUGI__IS_CHARTYPE(*s, ct_parse_pcdata)); + + if (*s == '<') // PCDATA ends here + { + char_t* end = g.flush(s); + + if (opt_trim::value) + while (end > begin && PUGI__IS_CHARTYPE(end[-1], ct_space)) + --end; + + *end = 0; + + return s + 1; + } + else if (opt_eol::value && *s == '\r') // Either a single 0x0d or 0x0d 0x0a pair + { + *s++ = '\n'; // replace first one with 0x0a + + if (*s == '\n') g.push(s, 1); + } + else if (opt_escape::value && *s == '&') + { + s = strconv_escape(s, g); + } + else if (*s == 0) + { + char_t* end = g.flush(s); + + if (opt_trim::value) + while (end > begin && PUGI__IS_CHARTYPE(end[-1], ct_space)) + --end; + + *end = 0; + + return s; + } + else ++s; + } + } + }; + + PUGI__FN strconv_pcdata_t get_strconv_pcdata(unsigned int optmask) + { + PUGI__STATIC_ASSERT(parse_escapes == 0x10 && parse_eol == 0x20 && parse_trim_pcdata == 0x0800); + + switch (((optmask >> 4) & 3) | ((optmask >> 9) & 4)) // get bitmask for flags (eol escapes trim) + { + case 0: return strconv_pcdata_impl::parse; + case 1: return strconv_pcdata_impl::parse; + case 2: return strconv_pcdata_impl::parse; + case 3: return strconv_pcdata_impl::parse; + case 4: return strconv_pcdata_impl::parse; + case 5: return strconv_pcdata_impl::parse; + case 6: return strconv_pcdata_impl::parse; + case 7: return strconv_pcdata_impl::parse; + default: assert(false); return 0; // should not get here + } + } + + typedef char_t* (*strconv_attribute_t)(char_t*, char_t); + + template struct strconv_attribute_impl + { + static char_t* parse_wnorm(char_t* s, char_t end_quote) + { + gap g; + + // trim leading whitespaces + if (PUGI__IS_CHARTYPE(*s, ct_space)) + { + char_t* str = s; + + do ++str; + while (PUGI__IS_CHARTYPE(*str, ct_space)); + + g.push(s, str - s); + } + + while (true) + { + PUGI__SCANWHILE_UNROLL(!PUGI__IS_CHARTYPE(*s, ct_parse_attr_ws | ct_space)); + + if (*s == end_quote) + { + char_t* str = g.flush(s); + + do *str-- = 0; + while (PUGI__IS_CHARTYPE(*str, ct_space)); + + return s + 1; + } + else if (PUGI__IS_CHARTYPE(*s, ct_space)) + { + *s++ = ' '; + + if (PUGI__IS_CHARTYPE(*s, ct_space)) + { + char_t* str = s + 1; + while (PUGI__IS_CHARTYPE(*str, ct_space)) ++str; + + g.push(s, str - s); + } + } + else if (opt_escape::value && *s == '&') + { + s = strconv_escape(s, g); + } + else if (!*s) + { + return 0; + } + else ++s; + } + } + + static char_t* parse_wconv(char_t* s, char_t end_quote) + { + gap g; + + while (true) + { + PUGI__SCANWHILE_UNROLL(!PUGI__IS_CHARTYPE(*s, ct_parse_attr_ws)); + + if (*s == end_quote) + { + *g.flush(s) = 0; + + return s + 1; + } + else if (PUGI__IS_CHARTYPE(*s, ct_space)) + { + if (*s == '\r') + { + *s++ = ' '; + + if (*s == '\n') g.push(s, 1); + } + else *s++ = ' '; + } + else if (opt_escape::value && *s == '&') + { + s = strconv_escape(s, g); + } + else if (!*s) + { + return 0; + } + else ++s; + } + } + + static char_t* parse_eol(char_t* s, char_t end_quote) + { + gap g; + + while (true) + { + PUGI__SCANWHILE_UNROLL(!PUGI__IS_CHARTYPE(*s, ct_parse_attr)); + + if (*s == end_quote) + { + *g.flush(s) = 0; + + return s + 1; + } + else if (*s == '\r') + { + *s++ = '\n'; + + if (*s == '\n') g.push(s, 1); + } + else if (opt_escape::value && *s == '&') + { + s = strconv_escape(s, g); + } + else if (!*s) + { + return 0; + } + else ++s; + } + } + + static char_t* parse_simple(char_t* s, char_t end_quote) + { + gap g; + + while (true) + { + PUGI__SCANWHILE_UNROLL(!PUGI__IS_CHARTYPE(*s, ct_parse_attr)); + + if (*s == end_quote) + { + *g.flush(s) = 0; + + return s + 1; + } + else if (opt_escape::value && *s == '&') + { + s = strconv_escape(s, g); + } + else if (!*s) + { + return 0; + } + else ++s; + } + } + }; + + PUGI__FN strconv_attribute_t get_strconv_attribute(unsigned int optmask) + { + PUGI__STATIC_ASSERT(parse_escapes == 0x10 && parse_eol == 0x20 && parse_wconv_attribute == 0x40 && parse_wnorm_attribute == 0x80); + + switch ((optmask >> 4) & 15) // get bitmask for flags (wconv wnorm eol escapes) + { + case 0: return strconv_attribute_impl::parse_simple; + case 1: return strconv_attribute_impl::parse_simple; + case 2: return strconv_attribute_impl::parse_eol; + case 3: return strconv_attribute_impl::parse_eol; + case 4: return strconv_attribute_impl::parse_wconv; + case 5: return strconv_attribute_impl::parse_wconv; + case 6: return strconv_attribute_impl::parse_wconv; + case 7: return strconv_attribute_impl::parse_wconv; + case 8: return strconv_attribute_impl::parse_wnorm; + case 9: return strconv_attribute_impl::parse_wnorm; + case 10: return strconv_attribute_impl::parse_wnorm; + case 11: return strconv_attribute_impl::parse_wnorm; + case 12: return strconv_attribute_impl::parse_wnorm; + case 13: return strconv_attribute_impl::parse_wnorm; + case 14: return strconv_attribute_impl::parse_wnorm; + case 15: return strconv_attribute_impl::parse_wnorm; + default: assert(false); return 0; // should not get here + } + } + + inline xml_parse_result make_parse_result(xml_parse_status status, ptrdiff_t offset = 0) + { + xml_parse_result result; + result.status = status; + result.offset = offset; + + return result; + } + + struct xml_parser + { + xml_allocator alloc; + char_t* error_offset; + xml_parse_status error_status; + + xml_parser(const xml_allocator& alloc_): alloc(alloc_), error_offset(0), error_status(status_ok) + { + } + + // DOCTYPE consists of nested sections of the following possible types: + // , , "...", '...' + // + // + // First group can not contain nested groups + // Second group can contain nested groups of the same type + // Third group can contain all other groups + char_t* parse_doctype_primitive(char_t* s) + { + if (*s == '"' || *s == '\'') + { + // quoted string + char_t ch = *s++; + PUGI__SCANFOR(*s == ch); + if (!*s) PUGI__THROW_ERROR(status_bad_doctype, s); + + s++; + } + else if (s[0] == '<' && s[1] == '?') + { + // + s += 2; + PUGI__SCANFOR(s[0] == '?' && s[1] == '>'); // no need for ENDSWITH because ?> can't terminate proper doctype + if (!*s) PUGI__THROW_ERROR(status_bad_doctype, s); + + s += 2; + } + else if (s[0] == '<' && s[1] == '!' && s[2] == '-' && s[3] == '-') + { + s += 4; + PUGI__SCANFOR(s[0] == '-' && s[1] == '-' && s[2] == '>'); // no need for ENDSWITH because --> can't terminate proper doctype + if (!*s) PUGI__THROW_ERROR(status_bad_doctype, s); + + s += 4; + } + else PUGI__THROW_ERROR(status_bad_doctype, s); + + return s; + } + + char_t* parse_doctype_ignore(char_t* s) + { + assert(s[0] == '<' && s[1] == '!' && s[2] == '['); + s++; + + while (*s) + { + if (s[0] == '<' && s[1] == '!' && s[2] == '[') + { + // nested ignore section + s = parse_doctype_ignore(s); + if (!s) return s; + } + else if (s[0] == ']' && s[1] == ']' && s[2] == '>') + { + // ignore section end + s += 3; + + return s; + } + else s++; + } + + PUGI__THROW_ERROR(status_bad_doctype, s); + } + + char_t* parse_doctype_group(char_t* s, char_t endch, bool toplevel) + { + assert((s[0] == '<' || s[0] == 0) && s[1] == '!'); + s++; + + while (*s) + { + if (s[0] == '<' && s[1] == '!' && s[2] != '-') + { + if (s[2] == '[') + { + // ignore + s = parse_doctype_ignore(s); + if (!s) return s; + } + else + { + // some control group + s = parse_doctype_group(s, endch, false); + if (!s) return s; + + // skip > + assert(*s == '>'); + s++; + } + } + else if (s[0] == '<' || s[0] == '"' || s[0] == '\'') + { + // unknown tag (forbidden), or some primitive group + s = parse_doctype_primitive(s); + if (!s) return s; + } + else if (*s == '>') + { + return s; + } + else s++; + } + + if (!toplevel || endch != '>') PUGI__THROW_ERROR(status_bad_doctype, s); + + return s; + } + + char_t* parse_exclamation(char_t* s, xml_node_struct* cursor, unsigned int optmsk, char_t endch) + { + // parse node contents, starting with exclamation mark + ++s; + + if (*s == '-') // 'value = s; // Save the offset. + } + + if (PUGI__OPTSET(parse_eol) && PUGI__OPTSET(parse_comments)) + { + s = strconv_comment(s, endch); + + if (!s) PUGI__THROW_ERROR(status_bad_comment, cursor->value); + } + else + { + // Scan for terminating '-->'. + PUGI__SCANFOR(s[0] == '-' && s[1] == '-' && PUGI__ENDSWITH(s[2], '>')); + PUGI__CHECK_ERROR(status_bad_comment, s); + + if (PUGI__OPTSET(parse_comments)) + *s = 0; // Zero-terminate this segment at the first terminating '-'. + + s += (s[2] == '>' ? 3 : 2); // Step over the '\0->'. + } + } + else PUGI__THROW_ERROR(status_bad_comment, s); + } + else if (*s == '[') + { + // 'value = s; // Save the offset. + + if (PUGI__OPTSET(parse_eol)) + { + s = strconv_cdata(s, endch); + + if (!s) PUGI__THROW_ERROR(status_bad_cdata, cursor->value); + } + else + { + // Scan for terminating ']]>'. + PUGI__SCANFOR(s[0] == ']' && s[1] == ']' && PUGI__ENDSWITH(s[2], '>')); + PUGI__CHECK_ERROR(status_bad_cdata, s); + + *s++ = 0; // Zero-terminate this segment. + } + } + else // Flagged for discard, but we still have to scan for the terminator. + { + // Scan for terminating ']]>'. + PUGI__SCANFOR(s[0] == ']' && s[1] == ']' && PUGI__ENDSWITH(s[2], '>')); + PUGI__CHECK_ERROR(status_bad_cdata, s); + + ++s; + } + + s += (s[1] == '>' ? 2 : 1); // Step over the last ']>'. + } + else PUGI__THROW_ERROR(status_bad_cdata, s); + } + else if (s[0] == 'D' && s[1] == 'O' && s[2] == 'C' && s[3] == 'T' && s[4] == 'Y' && s[5] == 'P' && PUGI__ENDSWITH(s[6], 'E')) + { + s -= 2; + + if (cursor->parent) PUGI__THROW_ERROR(status_bad_doctype, s); + + char_t* mark = s + 9; + + s = parse_doctype_group(s, endch, true); + if (!s) return s; + + assert((*s == 0 && endch == '>') || *s == '>'); + if (*s) *s++ = 0; + + if (PUGI__OPTSET(parse_doctype)) + { + while (PUGI__IS_CHARTYPE(*mark, ct_space)) ++mark; + + PUGI__PUSHNODE(node_doctype); + + cursor->value = mark; + + PUGI__POPNODE(); + } + } + else if (*s == 0 && endch == '-') PUGI__THROW_ERROR(status_bad_comment, s); + else if (*s == 0 && endch == '[') PUGI__THROW_ERROR(status_bad_cdata, s); + else PUGI__THROW_ERROR(status_unrecognized_tag, s); + + return s; + } + + char_t* parse_question(char_t* s, xml_node_struct*& ref_cursor, unsigned int optmsk, char_t endch) + { + // load into registers + xml_node_struct* cursor = ref_cursor; + char_t ch = 0; + + // parse node contents, starting with question mark + ++s; + + // read PI target + char_t* target = s; + + if (!PUGI__IS_CHARTYPE(*s, ct_start_symbol)) PUGI__THROW_ERROR(status_bad_pi, s); + + PUGI__SCANWHILE(PUGI__IS_CHARTYPE(*s, ct_symbol)); + PUGI__CHECK_ERROR(status_bad_pi, s); + + // determine node type; stricmp / strcasecmp is not portable + bool declaration = (target[0] | ' ') == 'x' && (target[1] | ' ') == 'm' && (target[2] | ' ') == 'l' && target + 3 == s; + + if (declaration ? PUGI__OPTSET(parse_declaration) : PUGI__OPTSET(parse_pi)) + { + if (declaration) + { + // disallow non top-level declarations + if (cursor->parent) PUGI__THROW_ERROR(status_bad_pi, s); + + PUGI__PUSHNODE(node_declaration); + } + else + { + PUGI__PUSHNODE(node_pi); + } + + cursor->name = target; + + PUGI__ENDSEG(); + + // parse value/attributes + if (ch == '?') + { + // empty node + if (!PUGI__ENDSWITH(*s, '>')) PUGI__THROW_ERROR(status_bad_pi, s); + s += (*s == '>'); + + PUGI__POPNODE(); + } + else if (PUGI__IS_CHARTYPE(ch, ct_space)) + { + PUGI__SKIPWS(); + + // scan for tag end + char_t* value = s; + + PUGI__SCANFOR(s[0] == '?' && PUGI__ENDSWITH(s[1], '>')); + PUGI__CHECK_ERROR(status_bad_pi, s); + + if (declaration) + { + // replace ending ? with / so that 'element' terminates properly + *s = '/'; + + // we exit from this function with cursor at node_declaration, which is a signal to parse() to go to LOC_ATTRIBUTES + s = value; + } + else + { + // store value and step over > + cursor->value = value; + PUGI__POPNODE(); + + PUGI__ENDSEG(); + + s += (*s == '>'); + } + } + else PUGI__THROW_ERROR(status_bad_pi, s); + } + else + { + // scan for tag end + PUGI__SCANFOR(s[0] == '?' && PUGI__ENDSWITH(s[1], '>')); + PUGI__CHECK_ERROR(status_bad_pi, s); + + s += (s[1] == '>' ? 2 : 1); + } + + // store from registers + ref_cursor = cursor; + + return s; + } + + char_t* parse_tree(char_t* s, xml_node_struct* root, unsigned int optmsk, char_t endch) + { + strconv_attribute_t strconv_attribute = get_strconv_attribute(optmsk); + strconv_pcdata_t strconv_pcdata = get_strconv_pcdata(optmsk); + + char_t ch = 0; + xml_node_struct* cursor = root; + char_t* mark = s; + + while (*s != 0) + { + if (*s == '<') + { + ++s; + + LOC_TAG: + if (PUGI__IS_CHARTYPE(*s, ct_start_symbol)) // '<#...' + { + PUGI__PUSHNODE(node_element); // Append a new node to the tree. + + cursor->name = s; + + PUGI__SCANWHILE_UNROLL(PUGI__IS_CHARTYPE(*s, ct_symbol)); // Scan for a terminator. + PUGI__ENDSEG(); // Save char in 'ch', terminate & step over. + + if (ch == '>') + { + // end of tag + } + else if (PUGI__IS_CHARTYPE(ch, ct_space)) + { + LOC_ATTRIBUTES: + while (true) + { + PUGI__SKIPWS(); // Eat any whitespace. + + if (PUGI__IS_CHARTYPE(*s, ct_start_symbol)) // <... #... + { + xml_attribute_struct* a = append_new_attribute(cursor, alloc); // Make space for this attribute. + if (!a) PUGI__THROW_ERROR(status_out_of_memory, s); + + a->name = s; // Save the offset. + + PUGI__SCANWHILE_UNROLL(PUGI__IS_CHARTYPE(*s, ct_symbol)); // Scan for a terminator. + PUGI__CHECK_ERROR(status_bad_attribute, s); //$ redundant, left for performance + + PUGI__ENDSEG(); // Save char in 'ch', terminate & step over. + PUGI__CHECK_ERROR(status_bad_attribute, s); //$ redundant, left for performance + + if (PUGI__IS_CHARTYPE(ch, ct_space)) + { + PUGI__SKIPWS(); // Eat any whitespace. + PUGI__CHECK_ERROR(status_bad_attribute, s); //$ redundant, left for performance + + ch = *s; + ++s; + } + + if (ch == '=') // '<... #=...' + { + PUGI__SKIPWS(); // Eat any whitespace. + + if (*s == '"' || *s == '\'') // '<... #="...' + { + ch = *s; // Save quote char to avoid breaking on "''" -or- '""'. + ++s; // Step over the quote. + a->value = s; // Save the offset. + + s = strconv_attribute(s, ch); + + if (!s) PUGI__THROW_ERROR(status_bad_attribute, a->value); + + // After this line the loop continues from the start; + // Whitespaces, / and > are ok, symbols and EOF are wrong, + // everything else will be detected + if (PUGI__IS_CHARTYPE(*s, ct_start_symbol)) PUGI__THROW_ERROR(status_bad_attribute, s); + } + else PUGI__THROW_ERROR(status_bad_attribute, s); + } + else PUGI__THROW_ERROR(status_bad_attribute, s); + } + else if (*s == '/') + { + ++s; + + if (*s == '>') + { + PUGI__POPNODE(); + s++; + break; + } + else if (*s == 0 && endch == '>') + { + PUGI__POPNODE(); + break; + } + else PUGI__THROW_ERROR(status_bad_start_element, s); + } + else if (*s == '>') + { + ++s; + + break; + } + else if (*s == 0 && endch == '>') + { + break; + } + else PUGI__THROW_ERROR(status_bad_start_element, s); + } + + // !!! + } + else if (ch == '/') // '<#.../' + { + if (!PUGI__ENDSWITH(*s, '>')) PUGI__THROW_ERROR(status_bad_start_element, s); + + PUGI__POPNODE(); // Pop. + + s += (*s == '>'); + } + else if (ch == 0) + { + // we stepped over null terminator, backtrack & handle closing tag + --s; + + if (endch != '>') PUGI__THROW_ERROR(status_bad_start_element, s); + } + else PUGI__THROW_ERROR(status_bad_start_element, s); + } + else if (*s == '/') + { + ++s; + + char_t* name = cursor->name; + if (!name) PUGI__THROW_ERROR(status_end_element_mismatch, s); + + while (PUGI__IS_CHARTYPE(*s, ct_symbol)) + { + if (*s++ != *name++) PUGI__THROW_ERROR(status_end_element_mismatch, s); + } + + if (*name) + { + if (*s == 0 && name[0] == endch && name[1] == 0) PUGI__THROW_ERROR(status_bad_end_element, s); + else PUGI__THROW_ERROR(status_end_element_mismatch, s); + } + + PUGI__POPNODE(); // Pop. + + PUGI__SKIPWS(); + + if (*s == 0) + { + if (endch != '>') PUGI__THROW_ERROR(status_bad_end_element, s); + } + else + { + if (*s != '>') PUGI__THROW_ERROR(status_bad_end_element, s); + ++s; + } + } + else if (*s == '?') // 'header & xml_memory_page_type_mask) + 1 == node_declaration) goto LOC_ATTRIBUTES; + } + else if (*s == '!') // 'first_child) continue; + } + } + + if (!PUGI__OPTSET(parse_trim_pcdata)) + s = mark; + + if (cursor->parent || PUGI__OPTSET(parse_fragment)) + { + PUGI__PUSHNODE(node_pcdata); // Append a new node on the tree. + cursor->value = s; // Save the offset. + + s = strconv_pcdata(s); + + PUGI__POPNODE(); // Pop since this is a standalone. + + if (!*s) break; + } + else + { + PUGI__SCANFOR(*s == '<'); // '...<' + if (!*s) break; + + ++s; + } + + // We're after '<' + goto LOC_TAG; + } + } + + // check that last tag is closed + if (cursor != root) PUGI__THROW_ERROR(status_end_element_mismatch, s); + + return s; + } + + #ifdef PUGIXML_WCHAR_MODE + static char_t* parse_skip_bom(char_t* s) + { + unsigned int bom = 0xfeff; + return (s[0] == static_cast(bom)) ? s + 1 : s; + } + #else + static char_t* parse_skip_bom(char_t* s) + { + return (s[0] == '\xef' && s[1] == '\xbb' && s[2] == '\xbf') ? s + 3 : s; + } + #endif + + static bool has_element_node_siblings(xml_node_struct* node) + { + while (node) + { + xml_node_type type = static_cast((node->header & impl::xml_memory_page_type_mask) + 1); + if (type == node_element) return true; + + node = node->next_sibling; + } + + return false; + } + + static xml_parse_result parse(char_t* buffer, size_t length, xml_document_struct* xmldoc, xml_node_struct* root, unsigned int optmsk) + { + // allocator object is a part of document object + xml_allocator& alloc = *static_cast(xmldoc); + + // early-out for empty documents + if (length == 0) + return make_parse_result(PUGI__OPTSET(parse_fragment) ? status_ok : status_no_document_element); + + // get last child of the root before parsing + xml_node_struct* last_root_child = root->first_child ? root->first_child->prev_sibling_c : 0; + + // create parser on stack + xml_parser parser(alloc); + + // save last character and make buffer zero-terminated (speeds up parsing) + char_t endch = buffer[length - 1]; + buffer[length - 1] = 0; + + // skip BOM to make sure it does not end up as part of parse output + char_t* buffer_data = parse_skip_bom(buffer); + + // perform actual parsing + parser.parse_tree(buffer_data, root, optmsk, endch); + + // update allocator state + alloc = parser.alloc; + + xml_parse_result result = make_parse_result(parser.error_status, parser.error_offset ? parser.error_offset - buffer : 0); + assert(result.offset >= 0 && static_cast(result.offset) <= length); + + if (result) + { + // since we removed last character, we have to handle the only possible false positive (stray <) + if (endch == '<') + return make_parse_result(status_unrecognized_tag, length - 1); + + // check if there are any element nodes parsed + xml_node_struct* first_root_child_parsed = last_root_child ? last_root_child->next_sibling : root->first_child; + + if (!PUGI__OPTSET(parse_fragment) && !has_element_node_siblings(first_root_child_parsed)) + return make_parse_result(status_no_document_element, length - 1); + } + else + { + // roll back offset if it occurs on a null terminator in the source buffer + if (result.offset > 0 && static_cast(result.offset) == length - 1 && endch == 0) + result.offset--; + } + + return result; + } + }; + + // Output facilities + PUGI__FN xml_encoding get_write_native_encoding() + { + #ifdef PUGIXML_WCHAR_MODE + return get_wchar_encoding(); + #else + return encoding_utf8; + #endif + } + + PUGI__FN xml_encoding get_write_encoding(xml_encoding encoding) + { + // replace wchar encoding with utf implementation + if (encoding == encoding_wchar) return get_wchar_encoding(); + + // replace utf16 encoding with utf16 with specific endianness + if (encoding == encoding_utf16) return is_little_endian() ? encoding_utf16_le : encoding_utf16_be; + + // replace utf32 encoding with utf32 with specific endianness + if (encoding == encoding_utf32) return is_little_endian() ? encoding_utf32_le : encoding_utf32_be; + + // only do autodetection if no explicit encoding is requested + if (encoding != encoding_auto) return encoding; + + // assume utf8 encoding + return encoding_utf8; + } + +#ifdef PUGIXML_WCHAR_MODE + PUGI__FN size_t get_valid_length(const char_t* data, size_t length) + { + assert(length > 0); + + // discard last character if it's the lead of a surrogate pair + return (sizeof(wchar_t) == 2 && static_cast(static_cast(data[length - 1]) - 0xD800) < 0x400) ? length - 1 : length; + } + + PUGI__FN size_t convert_buffer_output(char_t* r_char, uint8_t* r_u8, uint16_t* r_u16, uint32_t* r_u32, const char_t* data, size_t length, xml_encoding encoding) + { + // only endian-swapping is required + if (need_endian_swap_utf(encoding, get_wchar_encoding())) + { + convert_wchar_endian_swap(r_char, data, length); + + return length * sizeof(char_t); + } + + // convert to utf8 + if (encoding == encoding_utf8) + { + uint8_t* dest = r_u8; + uint8_t* end = utf_decoder::decode_wchar_block(data, length, dest); + + return static_cast(end - dest); + } + + // convert to utf16 + if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) + { + uint16_t* dest = r_u16; + + // convert to native utf16 + uint16_t* end = utf_decoder::decode_wchar_block(data, length, dest); + + // swap if necessary + xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; + + if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); + + return static_cast(end - dest) * sizeof(uint16_t); + } + + // convert to utf32 + if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) + { + uint32_t* dest = r_u32; + + // convert to native utf32 + uint32_t* end = utf_decoder::decode_wchar_block(data, length, dest); + + // swap if necessary + xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; + + if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); + + return static_cast(end - dest) * sizeof(uint32_t); + } + + // convert to latin1 + if (encoding == encoding_latin1) + { + uint8_t* dest = r_u8; + uint8_t* end = utf_decoder::decode_wchar_block(data, length, dest); + + return static_cast(end - dest); + } + + assert(!"Invalid encoding"); + return 0; + } +#else + PUGI__FN size_t get_valid_length(const char_t* data, size_t length) + { + assert(length > 4); + + for (size_t i = 1; i <= 4; ++i) + { + uint8_t ch = static_cast(data[length - i]); + + // either a standalone character or a leading one + if ((ch & 0xc0) != 0x80) return length - i; + } + + // there are four non-leading characters at the end, sequence tail is broken so might as well process the whole chunk + return length; + } + + PUGI__FN size_t convert_buffer_output(char_t* /* r_char */, uint8_t* r_u8, uint16_t* r_u16, uint32_t* r_u32, const char_t* data, size_t length, xml_encoding encoding) + { + if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) + { + uint16_t* dest = r_u16; + + // convert to native utf16 + uint16_t* end = utf_decoder::decode_utf8_block(reinterpret_cast(data), length, dest); + + // swap if necessary + xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; + + if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); + + return static_cast(end - dest) * sizeof(uint16_t); + } + + if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) + { + uint32_t* dest = r_u32; + + // convert to native utf32 + uint32_t* end = utf_decoder::decode_utf8_block(reinterpret_cast(data), length, dest); + + // swap if necessary + xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; + + if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); + + return static_cast(end - dest) * sizeof(uint32_t); + } + + if (encoding == encoding_latin1) + { + uint8_t* dest = r_u8; + uint8_t* end = utf_decoder::decode_utf8_block(reinterpret_cast(data), length, dest); + + return static_cast(end - dest); + } + + assert(!"Invalid encoding"); + return 0; + } +#endif + + class xml_buffered_writer + { + xml_buffered_writer(const xml_buffered_writer&); + xml_buffered_writer& operator=(const xml_buffered_writer&); + + public: + xml_buffered_writer(xml_writer& writer_, xml_encoding user_encoding): writer(writer_), bufsize(0), encoding(get_write_encoding(user_encoding)) + { + PUGI__STATIC_ASSERT(bufcapacity >= 8); + } + + ~xml_buffered_writer() + { + flush(); + } + + void flush() + { + flush(buffer, bufsize); + bufsize = 0; + } + + void flush(const char_t* data, size_t size) + { + if (size == 0) return; + + // fast path, just write data + if (encoding == get_write_native_encoding()) + writer.write(data, size * sizeof(char_t)); + else + { + // convert chunk + size_t result = convert_buffer_output(scratch.data_char, scratch.data_u8, scratch.data_u16, scratch.data_u32, data, size, encoding); + assert(result <= sizeof(scratch)); + + // write data + writer.write(scratch.data_u8, result); + } + } + + void write(const char_t* data, size_t length) + { + if (bufsize + length > bufcapacity) + { + // flush the remaining buffer contents + flush(); + + // handle large chunks + if (length > bufcapacity) + { + if (encoding == get_write_native_encoding()) + { + // fast path, can just write data chunk + writer.write(data, length * sizeof(char_t)); + return; + } + + // need to convert in suitable chunks + while (length > bufcapacity) + { + // get chunk size by selecting such number of characters that are guaranteed to fit into scratch buffer + // and form a complete codepoint sequence (i.e. discard start of last codepoint if necessary) + size_t chunk_size = get_valid_length(data, bufcapacity); + + // convert chunk and write + flush(data, chunk_size); + + // iterate + data += chunk_size; + length -= chunk_size; + } + + // small tail is copied below + bufsize = 0; + } + } + + memcpy(buffer + bufsize, data, length * sizeof(char_t)); + bufsize += length; + } + + void write(const char_t* data) + { + write(data, strlength(data)); + } + + void write(char_t d0) + { + if (bufsize + 1 > bufcapacity) flush(); + + buffer[bufsize + 0] = d0; + bufsize += 1; + } + + void write(char_t d0, char_t d1) + { + if (bufsize + 2 > bufcapacity) flush(); + + buffer[bufsize + 0] = d0; + buffer[bufsize + 1] = d1; + bufsize += 2; + } + + void write(char_t d0, char_t d1, char_t d2) + { + if (bufsize + 3 > bufcapacity) flush(); + + buffer[bufsize + 0] = d0; + buffer[bufsize + 1] = d1; + buffer[bufsize + 2] = d2; + bufsize += 3; + } + + void write(char_t d0, char_t d1, char_t d2, char_t d3) + { + if (bufsize + 4 > bufcapacity) flush(); + + buffer[bufsize + 0] = d0; + buffer[bufsize + 1] = d1; + buffer[bufsize + 2] = d2; + buffer[bufsize + 3] = d3; + bufsize += 4; + } + + void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4) + { + if (bufsize + 5 > bufcapacity) flush(); + + buffer[bufsize + 0] = d0; + buffer[bufsize + 1] = d1; + buffer[bufsize + 2] = d2; + buffer[bufsize + 3] = d3; + buffer[bufsize + 4] = d4; + bufsize += 5; + } + + void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4, char_t d5) + { + if (bufsize + 6 > bufcapacity) flush(); + + buffer[bufsize + 0] = d0; + buffer[bufsize + 1] = d1; + buffer[bufsize + 2] = d2; + buffer[bufsize + 3] = d3; + buffer[bufsize + 4] = d4; + buffer[bufsize + 5] = d5; + bufsize += 6; + } + + // utf8 maximum expansion: x4 (-> utf32) + // utf16 maximum expansion: x2 (-> utf32) + // utf32 maximum expansion: x1 + enum + { + bufcapacitybytes = + #ifdef PUGIXML_MEMORY_OUTPUT_STACK + PUGIXML_MEMORY_OUTPUT_STACK + #else + 10240 + #endif + , + bufcapacity = bufcapacitybytes / (sizeof(char_t) + 4) + }; + + char_t buffer[bufcapacity]; + + union + { + uint8_t data_u8[4 * bufcapacity]; + uint16_t data_u16[2 * bufcapacity]; + uint32_t data_u32[bufcapacity]; + char_t data_char[bufcapacity]; + } scratch; + + xml_writer& writer; + size_t bufsize; + xml_encoding encoding; + }; + + PUGI__FN void text_output_escaped(xml_buffered_writer& writer, const char_t* s, chartypex_t type) + { + while (*s) + { + const char_t* prev = s; + + // While *s is a usual symbol + while (!PUGI__IS_CHARTYPEX(*s, type)) ++s; + + writer.write(prev, static_cast(s - prev)); + + switch (*s) + { + case 0: break; + case '&': + writer.write('&', 'a', 'm', 'p', ';'); + ++s; + break; + case '<': + writer.write('&', 'l', 't', ';'); + ++s; + break; + case '>': + writer.write('&', 'g', 't', ';'); + ++s; + break; + case '"': + writer.write('&', 'q', 'u', 'o', 't', ';'); + ++s; + break; + default: // s is not a usual symbol + { + unsigned int ch = static_cast(*s++); + assert(ch < 32); + + writer.write('&', '#', static_cast((ch / 10) + '0'), static_cast((ch % 10) + '0'), ';'); + } + } + } + } + + PUGI__FN void text_output(xml_buffered_writer& writer, const char_t* s, chartypex_t type, unsigned int flags) + { + if (flags & format_no_escapes) + writer.write(s); + else + text_output_escaped(writer, s, type); + } + + PUGI__FN void text_output_cdata(xml_buffered_writer& writer, const char_t* s) + { + do + { + writer.write('<', '!', '[', 'C', 'D'); + writer.write('A', 'T', 'A', '['); + + const char_t* prev = s; + + // look for ]]> sequence - we can't output it as is since it terminates CDATA + while (*s && !(s[0] == ']' && s[1] == ']' && s[2] == '>')) ++s; + + // skip ]] if we stopped at ]]>, > will go to the next CDATA section + if (*s) s += 2; + + writer.write(prev, static_cast(s - prev)); + + writer.write(']', ']', '>'); + } + while (*s); + } + + PUGI__FN void node_output_attributes(xml_buffered_writer& writer, const xml_node& node, unsigned int flags) + { + const char_t* default_name = PUGIXML_TEXT(":anonymous"); + + for (xml_attribute a = node.first_attribute(); a; a = a.next_attribute()) + { + writer.write(' '); + writer.write(a.name()[0] ? a.name() : default_name); + writer.write('=', '"'); + + text_output(writer, a.value(), ctx_special_attr, flags); + + writer.write('"'); + } + } + + PUGI__FN void node_output(xml_buffered_writer& writer, const xml_node& node, const char_t* indent, unsigned int flags, unsigned int depth) + { + const char_t* default_name = PUGIXML_TEXT(":anonymous"); + + if ((flags & format_indent) != 0 && (flags & format_raw) == 0) + for (unsigned int i = 0; i < depth; ++i) writer.write(indent); + + switch (node.type()) + { + case node_document: + { + for (xml_node n = node.first_child(); n; n = n.next_sibling()) + node_output(writer, n, indent, flags, depth); + break; + } + + case node_element: + { + const char_t* name = node.name()[0] ? node.name() : default_name; + + writer.write('<'); + writer.write(name); + + node_output_attributes(writer, node, flags); + + if (flags & format_raw) + { + if (!node.first_child()) + writer.write(' ', '/', '>'); + else + { + writer.write('>'); + + for (xml_node n = node.first_child(); n; n = n.next_sibling()) + node_output(writer, n, indent, flags, depth + 1); + + writer.write('<', '/'); + writer.write(name); + writer.write('>'); + } + } + else if (!node.first_child()) + writer.write(' ', '/', '>', '\n'); + else if (node.first_child() == node.last_child() && (node.first_child().type() == node_pcdata || node.first_child().type() == node_cdata)) + { + writer.write('>'); + + if (node.first_child().type() == node_pcdata) + text_output(writer, node.first_child().value(), ctx_special_pcdata, flags); + else + text_output_cdata(writer, node.first_child().value()); + + writer.write('<', '/'); + writer.write(name); + writer.write('>', '\n'); + } + else + { + writer.write('>', '\n'); + + for (xml_node n = node.first_child(); n; n = n.next_sibling()) + node_output(writer, n, indent, flags, depth + 1); + + if ((flags & format_indent) != 0 && (flags & format_raw) == 0) + for (unsigned int i = 0; i < depth; ++i) writer.write(indent); + + writer.write('<', '/'); + writer.write(name); + writer.write('>', '\n'); + } + + break; + } + + case node_pcdata: + text_output(writer, node.value(), ctx_special_pcdata, flags); + if ((flags & format_raw) == 0) writer.write('\n'); + break; + + case node_cdata: + text_output_cdata(writer, node.value()); + if ((flags & format_raw) == 0) writer.write('\n'); + break; + + case node_comment: + writer.write('<', '!', '-', '-'); + writer.write(node.value()); + writer.write('-', '-', '>'); + if ((flags & format_raw) == 0) writer.write('\n'); + break; + + case node_pi: + case node_declaration: + writer.write('<', '?'); + writer.write(node.name()[0] ? node.name() : default_name); + + if (node.type() == node_declaration) + { + node_output_attributes(writer, node, flags); + } + else if (node.value()[0]) + { + writer.write(' '); + writer.write(node.value()); + } + + writer.write('?', '>'); + if ((flags & format_raw) == 0) writer.write('\n'); + break; + + case node_doctype: + writer.write('<', '!', 'D', 'O', 'C'); + writer.write('T', 'Y', 'P', 'E'); + + if (node.value()[0]) + { + writer.write(' '); + writer.write(node.value()); + } + + writer.write('>'); + if ((flags & format_raw) == 0) writer.write('\n'); + break; + + default: + assert(!"Invalid node type"); + } + } + + inline bool has_declaration(const xml_node& node) + { + for (xml_node child = node.first_child(); child; child = child.next_sibling()) + { + xml_node_type type = child.type(); + + if (type == node_declaration) return true; + if (type == node_element) return false; + } + + return false; + } + + inline bool allow_insert_child(xml_node_type parent, xml_node_type child) + { + if (parent != node_document && parent != node_element) return false; + if (child == node_document || child == node_null) return false; + if (parent != node_document && (child == node_declaration || child == node_doctype)) return false; + + return true; + } + + PUGI__FN bool allow_move(const xml_node& parent, const xml_node& child) + { + // check that child can be a child of parent + if (!allow_insert_child(parent.type(), child.type())) + return false; + + // check that node is not moved between documents + if (parent.root() != child.root()) + return false; + + // check that new parent is not in the child subtree + xml_node cur = parent; + + while (cur) + { + if (cur == child) + return false; + + cur = cur.parent(); + } + + return true; + } + + PUGI__FN void recursive_copy_skip(xml_node& dest, const xml_node& source, const xml_node& skip) + { + assert(dest.type() == source.type()); + + switch (source.type()) + { + case node_element: + { + dest.set_name(source.name()); + + for (xml_attribute a = source.first_attribute(); a; a = a.next_attribute()) + dest.append_attribute(a.name()).set_value(a.value()); + + for (xml_node c = source.first_child(); c; c = c.next_sibling()) + { + if (c == skip) continue; + + xml_node cc = dest.append_child(c.type()); + assert(cc); + + recursive_copy_skip(cc, c, skip); + } + + break; + } + + case node_pcdata: + case node_cdata: + case node_comment: + case node_doctype: + dest.set_value(source.value()); + break; + + case node_pi: + dest.set_name(source.name()); + dest.set_value(source.value()); + break; + + case node_declaration: + { + dest.set_name(source.name()); + + for (xml_attribute a = source.first_attribute(); a; a = a.next_attribute()) + dest.append_attribute(a.name()).set_value(a.value()); + + break; + } + + default: + assert(!"Invalid node type"); + } + } + + inline bool is_text_node(xml_node_struct* node) + { + xml_node_type type = static_cast((node->header & impl::xml_memory_page_type_mask) + 1); + + return type == node_pcdata || type == node_cdata; + } + + // get value with conversion functions + PUGI__FN int get_integer_base(const char_t* value) + { + const char_t* s = value; + + while (PUGI__IS_CHARTYPE(*s, ct_space)) + s++; + + if (*s == '-') + s++; + + return (s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) ? 16 : 10; + } + + PUGI__FN int get_value_int(const char_t* value, int def) + { + if (!value) return def; + + int base = get_integer_base(value); + + #ifdef PUGIXML_WCHAR_MODE + return static_cast(wcstol(value, 0, base)); + #else + return static_cast(strtol(value, 0, base)); + #endif + } + + PUGI__FN unsigned int get_value_uint(const char_t* value, unsigned int def) + { + if (!value) return def; + + int base = get_integer_base(value); + + #ifdef PUGIXML_WCHAR_MODE + return static_cast(wcstoul(value, 0, base)); + #else + return static_cast(strtoul(value, 0, base)); + #endif + } + + PUGI__FN double get_value_double(const char_t* value, double def) + { + if (!value) return def; + + #ifdef PUGIXML_WCHAR_MODE + return wcstod(value, 0); + #else + return strtod(value, 0); + #endif + } + + PUGI__FN float get_value_float(const char_t* value, float def) + { + if (!value) return def; + + #ifdef PUGIXML_WCHAR_MODE + return static_cast(wcstod(value, 0)); + #else + return static_cast(strtod(value, 0)); + #endif + } + + PUGI__FN bool get_value_bool(const char_t* value, bool def) + { + if (!value) return def; + + // only look at first char + char_t first = *value; + + // 1*, t* (true), T* (True), y* (yes), Y* (YES) + return (first == '1' || first == 't' || first == 'T' || first == 'y' || first == 'Y'); + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN long long get_value_llong(const char_t* value, long long def) + { + if (!value) return def; + + int base = get_integer_base(value); + + #ifdef PUGIXML_WCHAR_MODE + #ifdef PUGI__MSVC_CRT_VERSION + return _wcstoi64(value, 0, base); + #else + return wcstoll(value, 0, base); + #endif + #else + #ifdef PUGI__MSVC_CRT_VERSION + return _strtoi64(value, 0, base); + #else + return strtoll(value, 0, base); + #endif + #endif + } + + PUGI__FN unsigned long long get_value_ullong(const char_t* value, unsigned long long def) + { + if (!value) return def; + + int base = get_integer_base(value); + + #ifdef PUGIXML_WCHAR_MODE + #ifdef PUGI__MSVC_CRT_VERSION + return _wcstoui64(value, 0, base); + #else + return wcstoull(value, 0, base); + #endif + #else + #ifdef PUGI__MSVC_CRT_VERSION + return _strtoui64(value, 0, base); + #else + return strtoull(value, 0, base); + #endif + #endif + } +#endif + + // set value with conversion functions + PUGI__FN bool set_value_buffer(char_t*& dest, uintptr_t& header, uintptr_t header_mask, char (&buf)[128]) + { + #ifdef PUGIXML_WCHAR_MODE + char_t wbuf[128]; + impl::widen_ascii(wbuf, buf); + + return strcpy_insitu(dest, header, header_mask, wbuf); + #else + return strcpy_insitu(dest, header, header_mask, buf); + #endif + } + + PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, int value) + { + char buf[128]; + sprintf(buf, "%d", value); + + return set_value_buffer(dest, header, header_mask, buf); + } + + PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, unsigned int value) + { + char buf[128]; + sprintf(buf, "%u", value); + + return set_value_buffer(dest, header, header_mask, buf); + } + + PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, double value) + { + char buf[128]; + sprintf(buf, "%g", value); + + return set_value_buffer(dest, header, header_mask, buf); + } + + PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, bool value) + { + return strcpy_insitu(dest, header, header_mask, value ? PUGIXML_TEXT("true") : PUGIXML_TEXT("false")); + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, long long value) + { + char buf[128]; + sprintf(buf, "%lld", value); + + return set_value_buffer(dest, header, header_mask, buf); + } + + PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, unsigned long long value) + { + char buf[128]; + sprintf(buf, "%llu", value); + + return set_value_buffer(dest, header, header_mask, buf); + } +#endif + + // we need to get length of entire file to load it in memory; the only (relatively) sane way to do it is via seek/tell trick + PUGI__FN xml_parse_status get_file_size(FILE* file, size_t& out_result) + { + #if defined(PUGI__MSVC_CRT_VERSION) && PUGI__MSVC_CRT_VERSION >= 1400 && !defined(_WIN32_WCE) + // there are 64-bit versions of fseek/ftell, let's use them + typedef __int64 length_type; + + _fseeki64(file, 0, SEEK_END); + length_type length = _ftelli64(file); + _fseeki64(file, 0, SEEK_SET); + #elif defined(__MINGW32__) && !defined(__NO_MINGW_LFS) && !defined(__STRICT_ANSI__) + // there are 64-bit versions of fseek/ftell, let's use them + typedef off64_t length_type; + + fseeko64(file, 0, SEEK_END); + length_type length = ftello64(file); + fseeko64(file, 0, SEEK_SET); + #else + // if this is a 32-bit OS, long is enough; if this is a unix system, long is 64-bit, which is enough; otherwise we can't do anything anyway. + typedef long length_type; + + fseek(file, 0, SEEK_END); + length_type length = ftell(file); + fseek(file, 0, SEEK_SET); + #endif + + // check for I/O errors + if (length < 0) return status_io_error; + + // check for overflow + size_t result = static_cast(length); + + if (static_cast(result) != length) return status_out_of_memory; + + // finalize + out_result = result; + + return status_ok; + } + + PUGI__FN size_t zero_terminate_buffer(void* buffer, size_t size, xml_encoding encoding) + { + // We only need to zero-terminate if encoding conversion does not do it for us + #ifdef PUGIXML_WCHAR_MODE + xml_encoding wchar_encoding = get_wchar_encoding(); + + if (encoding == wchar_encoding || need_endian_swap_utf(encoding, wchar_encoding)) + { + size_t length = size / sizeof(char_t); + + static_cast(buffer)[length] = 0; + return (length + 1) * sizeof(char_t); + } + #else + if (encoding == encoding_utf8) + { + static_cast(buffer)[size] = 0; + return size + 1; + } + #endif + + return size; + } + + PUGI__FN xml_parse_result load_file_impl(xml_document& doc, FILE* file, unsigned int options, xml_encoding encoding) + { + if (!file) return make_parse_result(status_file_not_found); + + // get file size (can result in I/O errors) + size_t size = 0; + xml_parse_status size_status = get_file_size(file, size); + + if (size_status != status_ok) + { + fclose(file); + return make_parse_result(size_status); + } + + size_t max_suffix_size = sizeof(char_t); + + // allocate buffer for the whole file + char* contents = static_cast(xml_memory::allocate(size + max_suffix_size)); + + if (!contents) + { + fclose(file); + return make_parse_result(status_out_of_memory); + } + + // read file in memory + size_t read_size = fread(contents, 1, size, file); + fclose(file); + + if (read_size != size) + { + xml_memory::deallocate(contents); + return make_parse_result(status_io_error); + } + + xml_encoding real_encoding = get_buffer_encoding(encoding, contents, size); + + return doc.load_buffer_inplace_own(contents, zero_terminate_buffer(contents, size, real_encoding), options, real_encoding); + } + +#ifndef PUGIXML_NO_STL + template struct xml_stream_chunk + { + static xml_stream_chunk* create() + { + void* memory = xml_memory::allocate(sizeof(xml_stream_chunk)); + + return new (memory) xml_stream_chunk(); + } + + static void destroy(void* ptr) + { + xml_stream_chunk* chunk = static_cast(ptr); + + // free chunk chain + while (chunk) + { + xml_stream_chunk* next = chunk->next; + xml_memory::deallocate(chunk); + chunk = next; + } + } + + xml_stream_chunk(): next(0), size(0) + { + } + + xml_stream_chunk* next; + size_t size; + + T data[xml_memory_page_size / sizeof(T)]; + }; + + template PUGI__FN xml_parse_status load_stream_data_noseek(std::basic_istream& stream, void** out_buffer, size_t* out_size) + { + buffer_holder chunks(0, xml_stream_chunk::destroy); + + // read file to a chunk list + size_t total = 0; + xml_stream_chunk* last = 0; + + while (!stream.eof()) + { + // allocate new chunk + xml_stream_chunk* chunk = xml_stream_chunk::create(); + if (!chunk) return status_out_of_memory; + + // append chunk to list + if (last) last = last->next = chunk; + else chunks.data = last = chunk; + + // read data to chunk + stream.read(chunk->data, static_cast(sizeof(chunk->data) / sizeof(T))); + chunk->size = static_cast(stream.gcount()) * sizeof(T); + + // read may set failbit | eofbit in case gcount() is less than read length, so check for other I/O errors + if (stream.bad() || (!stream.eof() && stream.fail())) return status_io_error; + + // guard against huge files (chunk size is small enough to make this overflow check work) + if (total + chunk->size < total) return status_out_of_memory; + total += chunk->size; + } + + size_t max_suffix_size = sizeof(char_t); + + // copy chunk list to a contiguous buffer + char* buffer = static_cast(xml_memory::allocate(total + max_suffix_size)); + if (!buffer) return status_out_of_memory; + + char* write = buffer; + + for (xml_stream_chunk* chunk = static_cast*>(chunks.data); chunk; chunk = chunk->next) + { + assert(write + chunk->size <= buffer + total); + memcpy(write, chunk->data, chunk->size); + write += chunk->size; + } + + assert(write == buffer + total); + + // return buffer + *out_buffer = buffer; + *out_size = total; + + return status_ok; + } + + template PUGI__FN xml_parse_status load_stream_data_seek(std::basic_istream& stream, void** out_buffer, size_t* out_size) + { + // get length of remaining data in stream + typename std::basic_istream::pos_type pos = stream.tellg(); + stream.seekg(0, std::ios::end); + std::streamoff length = stream.tellg() - pos; + stream.seekg(pos); + + if (stream.fail() || pos < 0) return status_io_error; + + // guard against huge files + size_t read_length = static_cast(length); + + if (static_cast(read_length) != length || length < 0) return status_out_of_memory; + + size_t max_suffix_size = sizeof(char_t); + + // read stream data into memory (guard against stream exceptions with buffer holder) + buffer_holder buffer(xml_memory::allocate(read_length * sizeof(T) + max_suffix_size), xml_memory::deallocate); + if (!buffer.data) return status_out_of_memory; + + stream.read(static_cast(buffer.data), static_cast(read_length)); + + // read may set failbit | eofbit in case gcount() is less than read_length (i.e. line ending conversion), so check for other I/O errors + if (stream.bad() || (!stream.eof() && stream.fail())) return status_io_error; + + // return buffer + size_t actual_length = static_cast(stream.gcount()); + assert(actual_length <= read_length); + + *out_buffer = buffer.release(); + *out_size = actual_length * sizeof(T); + + return status_ok; + } + + template PUGI__FN xml_parse_result load_stream_impl(xml_document& doc, std::basic_istream& stream, unsigned int options, xml_encoding encoding) + { + void* buffer = 0; + size_t size = 0; + xml_parse_status status = status_ok; + + // if stream has an error bit set, bail out (otherwise tellg() can fail and we'll clear error bits) + if (stream.fail()) return make_parse_result(status_io_error); + + // load stream to memory (using seek-based implementation if possible, since it's faster and takes less memory) + if (stream.tellg() < 0) + { + stream.clear(); // clear error flags that could be set by a failing tellg + status = load_stream_data_noseek(stream, &buffer, &size); + } + else + status = load_stream_data_seek(stream, &buffer, &size); + + if (status != status_ok) return make_parse_result(status); + + xml_encoding real_encoding = get_buffer_encoding(encoding, buffer, size); + + return doc.load_buffer_inplace_own(buffer, zero_terminate_buffer(buffer, size, real_encoding), options, real_encoding); + } +#endif + +#if defined(PUGI__MSVC_CRT_VERSION) || defined(__BORLANDC__) || (defined(__MINGW32__) && !defined(__STRICT_ANSI__)) + PUGI__FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode) + { + return _wfopen(path, mode); + } +#else + PUGI__FN char* convert_path_heap(const wchar_t* str) + { + assert(str); + + // first pass: get length in utf8 characters + size_t length = strlength_wide(str); + size_t size = as_utf8_begin(str, length); + + // allocate resulting string + char* result = static_cast(xml_memory::allocate(size + 1)); + if (!result) return 0; + + // second pass: convert to utf8 + as_utf8_end(result, size, str, length); + + return result; + } + + PUGI__FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode) + { + // there is no standard function to open wide paths, so our best bet is to try utf8 path + char* path_utf8 = convert_path_heap(path); + if (!path_utf8) return 0; + + // convert mode to ASCII (we mirror _wfopen interface) + char mode_ascii[4] = {0}; + for (size_t i = 0; mode[i]; ++i) mode_ascii[i] = static_cast(mode[i]); + + // try to open the utf8 path + FILE* result = fopen(path_utf8, mode_ascii); + + // free dummy buffer + xml_memory::deallocate(path_utf8); + + return result; + } +#endif + + PUGI__FN bool save_file_impl(const xml_document& doc, FILE* file, const char_t* indent, unsigned int flags, xml_encoding encoding) + { + if (!file) return false; + + xml_writer_file writer(file); + doc.save(writer, indent, flags, encoding); + + int result = ferror(file); + + fclose(file); + + return result == 0; + } + + PUGI__FN xml_parse_result load_buffer_impl(xml_document_struct* doc, xml_node_struct* root, void* contents, size_t size, unsigned int options, xml_encoding encoding, bool is_mutable, bool own, char_t** out_buffer) + { + // check input buffer + assert(contents || size == 0); + + // get actual encoding + xml_encoding buffer_encoding = impl::get_buffer_encoding(encoding, contents, size); + + // get private buffer + char_t* buffer = 0; + size_t length = 0; + + if (!impl::convert_buffer(buffer, length, buffer_encoding, contents, size, is_mutable)) return impl::make_parse_result(status_out_of_memory); + + // delete original buffer if we performed a conversion + if (own && buffer != contents && contents) impl::xml_memory::deallocate(contents); + + // store buffer for offset_debug + doc->buffer = buffer; + + // parse + xml_parse_result res = impl::xml_parser::parse(buffer, length, doc, root, options); + + // remember encoding + res.encoding = buffer_encoding; + + // grab onto buffer if it's our buffer, user is responsible for deallocating contents himself + if (own || buffer != contents) *out_buffer = buffer; + + return res; + } +PUGI__NS_END + +namespace pugi +{ + PUGI__FN xml_writer_file::xml_writer_file(void* file_): file(file_) + { + } + + PUGI__FN void xml_writer_file::write(const void* data, size_t size) + { + size_t result = fwrite(data, 1, size, static_cast(file)); + (void)!result; // unfortunately we can't do proper error handling here + } + +#ifndef PUGIXML_NO_STL + PUGI__FN xml_writer_stream::xml_writer_stream(std::basic_ostream >& stream): narrow_stream(&stream), wide_stream(0) + { + } + + PUGI__FN xml_writer_stream::xml_writer_stream(std::basic_ostream >& stream): narrow_stream(0), wide_stream(&stream) + { + } + + PUGI__FN void xml_writer_stream::write(const void* data, size_t size) + { + if (narrow_stream) + { + assert(!wide_stream); + narrow_stream->write(reinterpret_cast(data), static_cast(size)); + } + else + { + assert(wide_stream); + assert(size % sizeof(wchar_t) == 0); + + wide_stream->write(reinterpret_cast(data), static_cast(size / sizeof(wchar_t))); + } + } +#endif + + PUGI__FN xml_tree_walker::xml_tree_walker(): _depth(0) + { + } + + PUGI__FN xml_tree_walker::~xml_tree_walker() + { + } + + PUGI__FN int xml_tree_walker::depth() const + { + return _depth; + } + + PUGI__FN bool xml_tree_walker::begin(xml_node&) + { + return true; + } + + PUGI__FN bool xml_tree_walker::end(xml_node&) + { + return true; + } + + PUGI__FN xml_attribute::xml_attribute(): _attr(0) + { + } + + PUGI__FN xml_attribute::xml_attribute(xml_attribute_struct* attr): _attr(attr) + { + } + + PUGI__FN static void unspecified_bool_xml_attribute(xml_attribute***) + { + } + + PUGI__FN xml_attribute::operator xml_attribute::unspecified_bool_type() const + { + return _attr ? unspecified_bool_xml_attribute : 0; + } + + PUGI__FN bool xml_attribute::operator!() const + { + return !_attr; + } + + PUGI__FN bool xml_attribute::operator==(const xml_attribute& r) const + { + return (_attr == r._attr); + } + + PUGI__FN bool xml_attribute::operator!=(const xml_attribute& r) const + { + return (_attr != r._attr); + } + + PUGI__FN bool xml_attribute::operator<(const xml_attribute& r) const + { + return (_attr < r._attr); + } + + PUGI__FN bool xml_attribute::operator>(const xml_attribute& r) const + { + return (_attr > r._attr); + } + + PUGI__FN bool xml_attribute::operator<=(const xml_attribute& r) const + { + return (_attr <= r._attr); + } + + PUGI__FN bool xml_attribute::operator>=(const xml_attribute& r) const + { + return (_attr >= r._attr); + } + + PUGI__FN xml_attribute xml_attribute::next_attribute() const + { + return _attr ? xml_attribute(_attr->next_attribute) : xml_attribute(); + } + + PUGI__FN xml_attribute xml_attribute::previous_attribute() const + { + return _attr && _attr->prev_attribute_c->next_attribute ? xml_attribute(_attr->prev_attribute_c) : xml_attribute(); + } + + PUGI__FN const char_t* xml_attribute::as_string(const char_t* def) const + { + return (_attr && _attr->value) ? _attr->value : def; + } + + PUGI__FN int xml_attribute::as_int(int def) const + { + return impl::get_value_int(_attr ? _attr->value : 0, def); + } + + PUGI__FN unsigned int xml_attribute::as_uint(unsigned int def) const + { + return impl::get_value_uint(_attr ? _attr->value : 0, def); + } + + PUGI__FN double xml_attribute::as_double(double def) const + { + return impl::get_value_double(_attr ? _attr->value : 0, def); + } + + PUGI__FN float xml_attribute::as_float(float def) const + { + return impl::get_value_float(_attr ? _attr->value : 0, def); + } + + PUGI__FN bool xml_attribute::as_bool(bool def) const + { + return impl::get_value_bool(_attr ? _attr->value : 0, def); + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN long long xml_attribute::as_llong(long long def) const + { + return impl::get_value_llong(_attr ? _attr->value : 0, def); + } + + PUGI__FN unsigned long long xml_attribute::as_ullong(unsigned long long def) const + { + return impl::get_value_ullong(_attr ? _attr->value : 0, def); + } +#endif + + PUGI__FN bool xml_attribute::empty() const + { + return !_attr; + } + + PUGI__FN const char_t* xml_attribute::name() const + { + return (_attr && _attr->name) ? _attr->name : PUGIXML_TEXT(""); + } + + PUGI__FN const char_t* xml_attribute::value() const + { + return (_attr && _attr->value) ? _attr->value : PUGIXML_TEXT(""); + } + + PUGI__FN size_t xml_attribute::hash_value() const + { + return static_cast(reinterpret_cast(_attr) / sizeof(xml_attribute_struct)); + } + + PUGI__FN xml_attribute_struct* xml_attribute::internal_object() const + { + return _attr; + } + + PUGI__FN xml_attribute& xml_attribute::operator=(const char_t* rhs) + { + set_value(rhs); + return *this; + } + + PUGI__FN xml_attribute& xml_attribute::operator=(int rhs) + { + set_value(rhs); + return *this; + } + + PUGI__FN xml_attribute& xml_attribute::operator=(unsigned int rhs) + { + set_value(rhs); + return *this; + } + + PUGI__FN xml_attribute& xml_attribute::operator=(double rhs) + { + set_value(rhs); + return *this; + } + + PUGI__FN xml_attribute& xml_attribute::operator=(bool rhs) + { + set_value(rhs); + return *this; + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN xml_attribute& xml_attribute::operator=(long long rhs) + { + set_value(rhs); + return *this; + } + + PUGI__FN xml_attribute& xml_attribute::operator=(unsigned long long rhs) + { + set_value(rhs); + return *this; + } +#endif + + PUGI__FN bool xml_attribute::set_name(const char_t* rhs) + { + if (!_attr) return false; + + return impl::strcpy_insitu(_attr->name, _attr->header, impl::xml_memory_page_name_allocated_mask, rhs); + } + + PUGI__FN bool xml_attribute::set_value(const char_t* rhs) + { + if (!_attr) return false; + + return impl::strcpy_insitu(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); + } + + PUGI__FN bool xml_attribute::set_value(int rhs) + { + if (!_attr) return false; + + return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); + } + + PUGI__FN bool xml_attribute::set_value(unsigned int rhs) + { + if (!_attr) return false; + + return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); + } + + PUGI__FN bool xml_attribute::set_value(double rhs) + { + if (!_attr) return false; + + return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); + } + + PUGI__FN bool xml_attribute::set_value(bool rhs) + { + if (!_attr) return false; + + return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN bool xml_attribute::set_value(long long rhs) + { + if (!_attr) return false; + + return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); + } + + PUGI__FN bool xml_attribute::set_value(unsigned long long rhs) + { + if (!_attr) return false; + + return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); + } +#endif + +#ifdef __BORLANDC__ + PUGI__FN bool operator&&(const xml_attribute& lhs, bool rhs) + { + return (bool)lhs && rhs; + } + + PUGI__FN bool operator||(const xml_attribute& lhs, bool rhs) + { + return (bool)lhs || rhs; + } +#endif + + PUGI__FN xml_node::xml_node(): _root(0) + { + } + + PUGI__FN xml_node::xml_node(xml_node_struct* p): _root(p) + { + } + + PUGI__FN static void unspecified_bool_xml_node(xml_node***) + { + } + + PUGI__FN xml_node::operator xml_node::unspecified_bool_type() const + { + return _root ? unspecified_bool_xml_node : 0; + } + + PUGI__FN bool xml_node::operator!() const + { + return !_root; + } + + PUGI__FN xml_node::iterator xml_node::begin() const + { + return iterator(_root ? _root->first_child : 0, _root); + } + + PUGI__FN xml_node::iterator xml_node::end() const + { + return iterator(0, _root); + } + + PUGI__FN xml_node::attribute_iterator xml_node::attributes_begin() const + { + return attribute_iterator(_root ? _root->first_attribute : 0, _root); + } + + PUGI__FN xml_node::attribute_iterator xml_node::attributes_end() const + { + return attribute_iterator(0, _root); + } + + PUGI__FN xml_object_range xml_node::children() const + { + return xml_object_range(begin(), end()); + } + + PUGI__FN xml_object_range xml_node::children(const char_t* name_) const + { + return xml_object_range(xml_named_node_iterator(child(name_)._root, _root, name_), xml_named_node_iterator(0, _root, name_)); + } + + PUGI__FN xml_object_range xml_node::attributes() const + { + return xml_object_range(attributes_begin(), attributes_end()); + } + + PUGI__FN bool xml_node::operator==(const xml_node& r) const + { + return (_root == r._root); + } + + PUGI__FN bool xml_node::operator!=(const xml_node& r) const + { + return (_root != r._root); + } + + PUGI__FN bool xml_node::operator<(const xml_node& r) const + { + return (_root < r._root); + } + + PUGI__FN bool xml_node::operator>(const xml_node& r) const + { + return (_root > r._root); + } + + PUGI__FN bool xml_node::operator<=(const xml_node& r) const + { + return (_root <= r._root); + } + + PUGI__FN bool xml_node::operator>=(const xml_node& r) const + { + return (_root >= r._root); + } + + PUGI__FN bool xml_node::empty() const + { + return !_root; + } + + PUGI__FN const char_t* xml_node::name() const + { + return (_root && _root->name) ? _root->name : PUGIXML_TEXT(""); + } + + PUGI__FN xml_node_type xml_node::type() const + { + return _root ? static_cast((_root->header & impl::xml_memory_page_type_mask) + 1) : node_null; + } + + PUGI__FN const char_t* xml_node::value() const + { + return (_root && _root->value) ? _root->value : PUGIXML_TEXT(""); + } + + PUGI__FN xml_node xml_node::child(const char_t* name_) const + { + if (!_root) return xml_node(); + + for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) + if (i->name && impl::strequal(name_, i->name)) return xml_node(i); + + return xml_node(); + } + + PUGI__FN xml_attribute xml_node::attribute(const char_t* name_) const + { + if (!_root) return xml_attribute(); + + for (xml_attribute_struct* i = _root->first_attribute; i; i = i->next_attribute) + if (i->name && impl::strequal(name_, i->name)) + return xml_attribute(i); + + return xml_attribute(); + } + + PUGI__FN xml_node xml_node::next_sibling(const char_t* name_) const + { + if (!_root) return xml_node(); + + for (xml_node_struct* i = _root->next_sibling; i; i = i->next_sibling) + if (i->name && impl::strequal(name_, i->name)) return xml_node(i); + + return xml_node(); + } + + PUGI__FN xml_node xml_node::next_sibling() const + { + if (!_root) return xml_node(); + + if (_root->next_sibling) return xml_node(_root->next_sibling); + else return xml_node(); + } + + PUGI__FN xml_node xml_node::previous_sibling(const char_t* name_) const + { + if (!_root) return xml_node(); + + for (xml_node_struct* i = _root->prev_sibling_c; i->next_sibling; i = i->prev_sibling_c) + if (i->name && impl::strequal(name_, i->name)) return xml_node(i); + + return xml_node(); + } + + PUGI__FN xml_node xml_node::previous_sibling() const + { + if (!_root) return xml_node(); + + if (_root->prev_sibling_c->next_sibling) return xml_node(_root->prev_sibling_c); + else return xml_node(); + } + + PUGI__FN xml_node xml_node::parent() const + { + return _root ? xml_node(_root->parent) : xml_node(); + } + + PUGI__FN xml_node xml_node::root() const + { + if (!_root) return xml_node(); + + impl::xml_memory_page* page = reinterpret_cast(_root->header & impl::xml_memory_page_pointer_mask); + + return xml_node(static_cast(page->allocator)); + } + + PUGI__FN xml_text xml_node::text() const + { + return xml_text(_root); + } + + PUGI__FN const char_t* xml_node::child_value() const + { + if (!_root) return PUGIXML_TEXT(""); + + for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) + if (i->value && impl::is_text_node(i)) + return i->value; + + return PUGIXML_TEXT(""); + } + + PUGI__FN const char_t* xml_node::child_value(const char_t* name_) const + { + return child(name_).child_value(); + } + + PUGI__FN xml_attribute xml_node::first_attribute() const + { + return _root ? xml_attribute(_root->first_attribute) : xml_attribute(); + } + + PUGI__FN xml_attribute xml_node::last_attribute() const + { + return _root && _root->first_attribute ? xml_attribute(_root->first_attribute->prev_attribute_c) : xml_attribute(); + } + + PUGI__FN xml_node xml_node::first_child() const + { + return _root ? xml_node(_root->first_child) : xml_node(); + } + + PUGI__FN xml_node xml_node::last_child() const + { + return _root && _root->first_child ? xml_node(_root->first_child->prev_sibling_c) : xml_node(); + } + + PUGI__FN bool xml_node::set_name(const char_t* rhs) + { + switch (type()) + { + case node_pi: + case node_declaration: + case node_element: + return impl::strcpy_insitu(_root->name, _root->header, impl::xml_memory_page_name_allocated_mask, rhs); + + default: + return false; + } + } + + PUGI__FN bool xml_node::set_value(const char_t* rhs) + { + switch (type()) + { + case node_pi: + case node_cdata: + case node_pcdata: + case node_comment: + case node_doctype: + return impl::strcpy_insitu(_root->value, _root->header, impl::xml_memory_page_value_allocated_mask, rhs); + + default: + return false; + } + } + + PUGI__FN xml_attribute xml_node::append_attribute(const char_t* name_) + { + if (type() != node_element && type() != node_declaration) return xml_attribute(); + + xml_attribute a(impl::append_new_attribute(_root, impl::get_allocator(_root))); + + a.set_name(name_); + + return a; + } + + PUGI__FN xml_attribute xml_node::prepend_attribute(const char_t* name_) + { + if (type() != node_element && type() != node_declaration) return xml_attribute(); + + xml_attribute a(impl::allocate_attribute(impl::get_allocator(_root))); + if (!a) return xml_attribute(); + + xml_attribute_struct* head = _root->first_attribute; + + if (head) + { + a._attr->prev_attribute_c = head->prev_attribute_c; + head->prev_attribute_c = a._attr; + } + else + a._attr->prev_attribute_c = a._attr; + + a._attr->next_attribute = head; + _root->first_attribute = a._attr; + + a.set_name(name_); + + return a; + } + + PUGI__FN xml_attribute xml_node::insert_attribute_before(const char_t* name_, const xml_attribute& attr) + { + if ((type() != node_element && type() != node_declaration) || attr.empty()) return xml_attribute(); + + // check that attribute belongs to *this + xml_attribute_struct* cur = attr._attr; + + while (cur->prev_attribute_c->next_attribute) cur = cur->prev_attribute_c; + + if (cur != _root->first_attribute) return xml_attribute(); + + xml_attribute a(impl::allocate_attribute(impl::get_allocator(_root))); + if (!a) return xml_attribute(); + + if (attr._attr->prev_attribute_c->next_attribute) + attr._attr->prev_attribute_c->next_attribute = a._attr; + else + _root->first_attribute = a._attr; + + a._attr->prev_attribute_c = attr._attr->prev_attribute_c; + a._attr->next_attribute = attr._attr; + attr._attr->prev_attribute_c = a._attr; + + a.set_name(name_); + + return a; + } + + PUGI__FN xml_attribute xml_node::insert_attribute_after(const char_t* name_, const xml_attribute& attr) + { + if ((type() != node_element && type() != node_declaration) || attr.empty()) return xml_attribute(); + + // check that attribute belongs to *this + xml_attribute_struct* cur = attr._attr; + + while (cur->prev_attribute_c->next_attribute) cur = cur->prev_attribute_c; + + if (cur != _root->first_attribute) return xml_attribute(); + + xml_attribute a(impl::allocate_attribute(impl::get_allocator(_root))); + if (!a) return xml_attribute(); + + if (attr._attr->next_attribute) + attr._attr->next_attribute->prev_attribute_c = a._attr; + else + _root->first_attribute->prev_attribute_c = a._attr; + + a._attr->next_attribute = attr._attr->next_attribute; + a._attr->prev_attribute_c = attr._attr; + attr._attr->next_attribute = a._attr; + + a.set_name(name_); + + return a; + } + + PUGI__FN xml_attribute xml_node::append_copy(const xml_attribute& proto) + { + if (!proto) return xml_attribute(); + + xml_attribute result = append_attribute(proto.name()); + result.set_value(proto.value()); + + return result; + } + + PUGI__FN xml_attribute xml_node::prepend_copy(const xml_attribute& proto) + { + if (!proto) return xml_attribute(); + + xml_attribute result = prepend_attribute(proto.name()); + result.set_value(proto.value()); + + return result; + } + + PUGI__FN xml_attribute xml_node::insert_copy_after(const xml_attribute& proto, const xml_attribute& attr) + { + if (!proto) return xml_attribute(); + + xml_attribute result = insert_attribute_after(proto.name(), attr); + result.set_value(proto.value()); + + return result; + } + + PUGI__FN xml_attribute xml_node::insert_copy_before(const xml_attribute& proto, const xml_attribute& attr) + { + if (!proto) return xml_attribute(); + + xml_attribute result = insert_attribute_before(proto.name(), attr); + result.set_value(proto.value()); + + return result; + } + + PUGI__FN xml_node xml_node::append_child(xml_node_type type_) + { + if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); + + xml_node n(impl::allocate_node(impl::get_allocator(_root), type_)); + if (!n) return xml_node(); + + impl::append_node(n._root, _root); + + if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); + + return n; + } + + PUGI__FN xml_node xml_node::prepend_child(xml_node_type type_) + { + if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); + + xml_node n(impl::allocate_node(impl::get_allocator(_root), type_)); + if (!n) return xml_node(); + + impl::prepend_node(n._root, _root); + + if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); + + return n; + } + + PUGI__FN xml_node xml_node::insert_child_before(xml_node_type type_, const xml_node& node) + { + if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); + if (!node._root || node._root->parent != _root) return xml_node(); + + xml_node n(impl::allocate_node(impl::get_allocator(_root), type_)); + if (!n) return xml_node(); + + impl::insert_node_before(n._root, node._root); + + if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); + + return n; + } + + PUGI__FN xml_node xml_node::insert_child_after(xml_node_type type_, const xml_node& node) + { + if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); + if (!node._root || node._root->parent != _root) return xml_node(); + + xml_node n(impl::allocate_node(impl::get_allocator(_root), type_)); + if (!n) return xml_node(); + + impl::insert_node_after(n._root, node._root); + + if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); + + return n; + } + + PUGI__FN xml_node xml_node::append_child(const char_t* name_) + { + xml_node result = append_child(node_element); + + result.set_name(name_); + + return result; + } + + PUGI__FN xml_node xml_node::prepend_child(const char_t* name_) + { + xml_node result = prepend_child(node_element); + + result.set_name(name_); + + return result; + } + + PUGI__FN xml_node xml_node::insert_child_after(const char_t* name_, const xml_node& node) + { + xml_node result = insert_child_after(node_element, node); + + result.set_name(name_); + + return result; + } + + PUGI__FN xml_node xml_node::insert_child_before(const char_t* name_, const xml_node& node) + { + xml_node result = insert_child_before(node_element, node); + + result.set_name(name_); + + return result; + } + + PUGI__FN xml_node xml_node::append_copy(const xml_node& proto) + { + xml_node result = append_child(proto.type()); + + if (result) impl::recursive_copy_skip(result, proto, result); + + return result; + } + + PUGI__FN xml_node xml_node::prepend_copy(const xml_node& proto) + { + xml_node result = prepend_child(proto.type()); + + if (result) impl::recursive_copy_skip(result, proto, result); + + return result; + } + + PUGI__FN xml_node xml_node::insert_copy_after(const xml_node& proto, const xml_node& node) + { + xml_node result = insert_child_after(proto.type(), node); + + if (result) impl::recursive_copy_skip(result, proto, result); + + return result; + } + + PUGI__FN xml_node xml_node::insert_copy_before(const xml_node& proto, const xml_node& node) + { + xml_node result = insert_child_before(proto.type(), node); + + if (result) impl::recursive_copy_skip(result, proto, result); + + return result; + } + + PUGI__FN xml_node xml_node::append_move(const xml_node& moved) + { + if (!impl::allow_move(*this, moved)) return xml_node(); + + impl::remove_node(moved._root); + impl::append_node(moved._root, _root); + + return moved; + } + + PUGI__FN xml_node xml_node::prepend_move(const xml_node& moved) + { + if (!impl::allow_move(*this, moved)) return xml_node(); + + impl::remove_node(moved._root); + impl::prepend_node(moved._root, _root); + + return moved; + } + + PUGI__FN xml_node xml_node::insert_move_after(const xml_node& moved, const xml_node& node) + { + if (!impl::allow_move(*this, moved)) return xml_node(); + if (!node._root || node._root->parent != _root) return xml_node(); + if (moved._root == node._root) return xml_node(); + + impl::remove_node(moved._root); + impl::insert_node_after(moved._root, node._root); + + return moved; + } + + PUGI__FN xml_node xml_node::insert_move_before(const xml_node& moved, const xml_node& node) + { + if (!impl::allow_move(*this, moved)) return xml_node(); + if (!node._root || node._root->parent != _root) return xml_node(); + if (moved._root == node._root) return xml_node(); + + impl::remove_node(moved._root); + impl::insert_node_before(moved._root, node._root); + + return moved; + } + + PUGI__FN bool xml_node::remove_attribute(const char_t* name_) + { + return remove_attribute(attribute(name_)); + } + + PUGI__FN bool xml_node::remove_attribute(const xml_attribute& a) + { + if (!_root || !a._attr) return false; + + // check that attribute belongs to *this + xml_attribute_struct* attr = a._attr; + + while (attr->prev_attribute_c->next_attribute) attr = attr->prev_attribute_c; + + if (attr != _root->first_attribute) return false; + + if (a._attr->next_attribute) a._attr->next_attribute->prev_attribute_c = a._attr->prev_attribute_c; + else if (_root->first_attribute) _root->first_attribute->prev_attribute_c = a._attr->prev_attribute_c; + + if (a._attr->prev_attribute_c->next_attribute) a._attr->prev_attribute_c->next_attribute = a._attr->next_attribute; + else _root->first_attribute = a._attr->next_attribute; + + impl::destroy_attribute(a._attr, impl::get_allocator(_root)); + + return true; + } + + PUGI__FN bool xml_node::remove_child(const char_t* name_) + { + return remove_child(child(name_)); + } + + PUGI__FN bool xml_node::remove_child(const xml_node& n) + { + if (!_root || !n._root || n._root->parent != _root) return false; + + impl::remove_node(n._root); + + impl::destroy_node(n._root, impl::get_allocator(_root)); + + return true; + } + + PUGI__FN xml_parse_result xml_node::append_buffer(const void* contents, size_t size, unsigned int options, xml_encoding encoding) + { + // append_buffer is only valid for elements/documents + if (!impl::allow_insert_child(type(), node_element)) return impl::make_parse_result(status_append_invalid_root); + + // get document node + impl::xml_document_struct* doc = static_cast(root()._root); + assert(doc); + + // get extra buffer element (we'll store the document fragment buffer there so that we can deallocate it later) + impl::xml_memory_page* page = 0; + impl::xml_extra_buffer* extra = static_cast(doc->allocate_memory(sizeof(impl::xml_extra_buffer), page)); + (void)page; + + if (!extra) return impl::make_parse_result(status_out_of_memory); + + // save name; name of the root has to be NULL before parsing - otherwise closing node mismatches will not be detected at the top level + char_t* rootname = _root->name; + _root->name = 0; + + // parse + char_t* buffer = 0; + xml_parse_result res = impl::load_buffer_impl(doc, _root, const_cast(contents), size, options, encoding, false, false, &buffer); + + // restore name + _root->name = rootname; + + // add extra buffer to the list + extra->buffer = buffer; + extra->next = doc->extra_buffers; + doc->extra_buffers = extra; + + return res; + } + + PUGI__FN xml_node xml_node::find_child_by_attribute(const char_t* name_, const char_t* attr_name, const char_t* attr_value) const + { + if (!_root) return xml_node(); + + for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) + if (i->name && impl::strequal(name_, i->name)) + { + for (xml_attribute_struct* a = i->first_attribute; a; a = a->next_attribute) + if (a->name && impl::strequal(attr_name, a->name) && impl::strequal(attr_value, a->value ? a->value : PUGIXML_TEXT(""))) + return xml_node(i); + } + + return xml_node(); + } + + PUGI__FN xml_node xml_node::find_child_by_attribute(const char_t* attr_name, const char_t* attr_value) const + { + if (!_root) return xml_node(); + + for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) + for (xml_attribute_struct* a = i->first_attribute; a; a = a->next_attribute) + if (a->name && impl::strequal(attr_name, a->name) && impl::strequal(attr_value, a->value ? a->value : PUGIXML_TEXT(""))) + return xml_node(i); + + return xml_node(); + } + +#ifndef PUGIXML_NO_STL + PUGI__FN string_t xml_node::path(char_t delimiter) const + { + xml_node cursor = *this; // Make a copy. + + string_t result = cursor.name(); + + while (cursor.parent()) + { + cursor = cursor.parent(); + + string_t temp = cursor.name(); + temp += delimiter; + temp += result; + result.swap(temp); + } + + return result; + } +#endif + + PUGI__FN xml_node xml_node::first_element_by_path(const char_t* path_, char_t delimiter) const + { + xml_node found = *this; // Current search context. + + if (!_root || !path_ || !path_[0]) return found; + + if (path_[0] == delimiter) + { + // Absolute path; e.g. '/foo/bar' + found = found.root(); + ++path_; + } + + const char_t* path_segment = path_; + + while (*path_segment == delimiter) ++path_segment; + + const char_t* path_segment_end = path_segment; + + while (*path_segment_end && *path_segment_end != delimiter) ++path_segment_end; + + if (path_segment == path_segment_end) return found; + + const char_t* next_segment = path_segment_end; + + while (*next_segment == delimiter) ++next_segment; + + if (*path_segment == '.' && path_segment + 1 == path_segment_end) + return found.first_element_by_path(next_segment, delimiter); + else if (*path_segment == '.' && *(path_segment+1) == '.' && path_segment + 2 == path_segment_end) + return found.parent().first_element_by_path(next_segment, delimiter); + else + { + for (xml_node_struct* j = found._root->first_child; j; j = j->next_sibling) + { + if (j->name && impl::strequalrange(j->name, path_segment, static_cast(path_segment_end - path_segment))) + { + xml_node subsearch = xml_node(j).first_element_by_path(next_segment, delimiter); + + if (subsearch) return subsearch; + } + } + + return xml_node(); + } + } + + PUGI__FN bool xml_node::traverse(xml_tree_walker& walker) + { + walker._depth = -1; + + xml_node arg_begin = *this; + if (!walker.begin(arg_begin)) return false; + + xml_node cur = first_child(); + + if (cur) + { + ++walker._depth; + + do + { + xml_node arg_for_each = cur; + if (!walker.for_each(arg_for_each)) + return false; + + if (cur.first_child()) + { + ++walker._depth; + cur = cur.first_child(); + } + else if (cur.next_sibling()) + cur = cur.next_sibling(); + else + { + // Borland C++ workaround + while (!cur.next_sibling() && cur != *this && !cur.parent().empty()) + { + --walker._depth; + cur = cur.parent(); + } + + if (cur != *this) + cur = cur.next_sibling(); + } + } + while (cur && cur != *this); + } + + assert(walker._depth == -1); + + xml_node arg_end = *this; + return walker.end(arg_end); + } + + PUGI__FN size_t xml_node::hash_value() const + { + return static_cast(reinterpret_cast(_root) / sizeof(xml_node_struct)); + } + + PUGI__FN xml_node_struct* xml_node::internal_object() const + { + return _root; + } + + PUGI__FN void xml_node::print(xml_writer& writer, const char_t* indent, unsigned int flags, xml_encoding encoding, unsigned int depth) const + { + if (!_root) return; + + impl::xml_buffered_writer buffered_writer(writer, encoding); + + impl::node_output(buffered_writer, *this, indent, flags, depth); + } + +#ifndef PUGIXML_NO_STL + PUGI__FN void xml_node::print(std::basic_ostream >& stream, const char_t* indent, unsigned int flags, xml_encoding encoding, unsigned int depth) const + { + xml_writer_stream writer(stream); + + print(writer, indent, flags, encoding, depth); + } + + PUGI__FN void xml_node::print(std::basic_ostream >& stream, const char_t* indent, unsigned int flags, unsigned int depth) const + { + xml_writer_stream writer(stream); + + print(writer, indent, flags, encoding_wchar, depth); + } +#endif + + PUGI__FN ptrdiff_t xml_node::offset_debug() const + { + xml_node_struct* r = root()._root; + + if (!r) return -1; + + const char_t* buffer = static_cast(r)->buffer; + + if (!buffer) return -1; + + switch (type()) + { + case node_document: + return 0; + + case node_element: + case node_declaration: + case node_pi: + return (_root->header & impl::xml_memory_page_name_allocated_mask) ? -1 : _root->name - buffer; + + case node_pcdata: + case node_cdata: + case node_comment: + case node_doctype: + return (_root->header & impl::xml_memory_page_value_allocated_mask) ? -1 : _root->value - buffer; + + default: + return -1; + } + } + +#ifdef __BORLANDC__ + PUGI__FN bool operator&&(const xml_node& lhs, bool rhs) + { + return (bool)lhs && rhs; + } + + PUGI__FN bool operator||(const xml_node& lhs, bool rhs) + { + return (bool)lhs || rhs; + } +#endif + + PUGI__FN xml_text::xml_text(xml_node_struct* root): _root(root) + { + } + + PUGI__FN xml_node_struct* xml_text::_data() const + { + if (!_root || impl::is_text_node(_root)) return _root; + + for (xml_node_struct* node = _root->first_child; node; node = node->next_sibling) + if (impl::is_text_node(node)) + return node; + + return 0; + } + + PUGI__FN xml_node_struct* xml_text::_data_new() + { + xml_node_struct* d = _data(); + if (d) return d; + + return xml_node(_root).append_child(node_pcdata).internal_object(); + } + + PUGI__FN xml_text::xml_text(): _root(0) + { + } + + PUGI__FN static void unspecified_bool_xml_text(xml_text***) + { + } + + PUGI__FN xml_text::operator xml_text::unspecified_bool_type() const + { + return _data() ? unspecified_bool_xml_text : 0; + } + + PUGI__FN bool xml_text::operator!() const + { + return !_data(); + } + + PUGI__FN bool xml_text::empty() const + { + return _data() == 0; + } + + PUGI__FN const char_t* xml_text::get() const + { + xml_node_struct* d = _data(); + + return (d && d->value) ? d->value : PUGIXML_TEXT(""); + } + + PUGI__FN const char_t* xml_text::as_string(const char_t* def) const + { + xml_node_struct* d = _data(); + + return (d && d->value) ? d->value : def; + } + + PUGI__FN int xml_text::as_int(int def) const + { + xml_node_struct* d = _data(); + + return impl::get_value_int(d ? d->value : 0, def); + } + + PUGI__FN unsigned int xml_text::as_uint(unsigned int def) const + { + xml_node_struct* d = _data(); + + return impl::get_value_uint(d ? d->value : 0, def); + } + + PUGI__FN double xml_text::as_double(double def) const + { + xml_node_struct* d = _data(); + + return impl::get_value_double(d ? d->value : 0, def); + } + + PUGI__FN float xml_text::as_float(float def) const + { + xml_node_struct* d = _data(); + + return impl::get_value_float(d ? d->value : 0, def); + } + + PUGI__FN bool xml_text::as_bool(bool def) const + { + xml_node_struct* d = _data(); + + return impl::get_value_bool(d ? d->value : 0, def); + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN long long xml_text::as_llong(long long def) const + { + xml_node_struct* d = _data(); + + return impl::get_value_llong(d ? d->value : 0, def); + } + + PUGI__FN unsigned long long xml_text::as_ullong(unsigned long long def) const + { + xml_node_struct* d = _data(); + + return impl::get_value_ullong(d ? d->value : 0, def); + } +#endif + + PUGI__FN bool xml_text::set(const char_t* rhs) + { + xml_node_struct* dn = _data_new(); + + return dn ? impl::strcpy_insitu(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; + } + + PUGI__FN bool xml_text::set(int rhs) + { + xml_node_struct* dn = _data_new(); + + return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; + } + + PUGI__FN bool xml_text::set(unsigned int rhs) + { + xml_node_struct* dn = _data_new(); + + return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; + } + + PUGI__FN bool xml_text::set(double rhs) + { + xml_node_struct* dn = _data_new(); + + return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; + } + + PUGI__FN bool xml_text::set(bool rhs) + { + xml_node_struct* dn = _data_new(); + + return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN bool xml_text::set(long long rhs) + { + xml_node_struct* dn = _data_new(); + + return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; + } + + PUGI__FN bool xml_text::set(unsigned long long rhs) + { + xml_node_struct* dn = _data_new(); + + return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; + } +#endif + + PUGI__FN xml_text& xml_text::operator=(const char_t* rhs) + { + set(rhs); + return *this; + } + + PUGI__FN xml_text& xml_text::operator=(int rhs) + { + set(rhs); + return *this; + } + + PUGI__FN xml_text& xml_text::operator=(unsigned int rhs) + { + set(rhs); + return *this; + } + + PUGI__FN xml_text& xml_text::operator=(double rhs) + { + set(rhs); + return *this; + } + + PUGI__FN xml_text& xml_text::operator=(bool rhs) + { + set(rhs); + return *this; + } + +#ifdef PUGIXML_HAS_LONG_LONG + PUGI__FN xml_text& xml_text::operator=(long long rhs) + { + set(rhs); + return *this; + } + + PUGI__FN xml_text& xml_text::operator=(unsigned long long rhs) + { + set(rhs); + return *this; + } +#endif + + PUGI__FN xml_node xml_text::data() const + { + return xml_node(_data()); + } + +#ifdef __BORLANDC__ + PUGI__FN bool operator&&(const xml_text& lhs, bool rhs) + { + return (bool)lhs && rhs; + } + + PUGI__FN bool operator||(const xml_text& lhs, bool rhs) + { + return (bool)lhs || rhs; + } +#endif + + PUGI__FN xml_node_iterator::xml_node_iterator() + { + } + + PUGI__FN xml_node_iterator::xml_node_iterator(const xml_node& node): _wrap(node), _parent(node.parent()) + { + } + + PUGI__FN xml_node_iterator::xml_node_iterator(xml_node_struct* ref, xml_node_struct* parent): _wrap(ref), _parent(parent) + { + } + + PUGI__FN bool xml_node_iterator::operator==(const xml_node_iterator& rhs) const + { + return _wrap._root == rhs._wrap._root && _parent._root == rhs._parent._root; + } + + PUGI__FN bool xml_node_iterator::operator!=(const xml_node_iterator& rhs) const + { + return _wrap._root != rhs._wrap._root || _parent._root != rhs._parent._root; + } + + PUGI__FN xml_node& xml_node_iterator::operator*() const + { + assert(_wrap._root); + return _wrap; + } + + PUGI__FN xml_node* xml_node_iterator::operator->() const + { + assert(_wrap._root); + return const_cast(&_wrap); // BCC32 workaround + } + + PUGI__FN const xml_node_iterator& xml_node_iterator::operator++() + { + assert(_wrap._root); + _wrap._root = _wrap._root->next_sibling; + return *this; + } + + PUGI__FN xml_node_iterator xml_node_iterator::operator++(int) + { + xml_node_iterator temp = *this; + ++*this; + return temp; + } + + PUGI__FN const xml_node_iterator& xml_node_iterator::operator--() + { + _wrap = _wrap._root ? _wrap.previous_sibling() : _parent.last_child(); + return *this; + } + + PUGI__FN xml_node_iterator xml_node_iterator::operator--(int) + { + xml_node_iterator temp = *this; + --*this; + return temp; + } + + PUGI__FN xml_attribute_iterator::xml_attribute_iterator() + { + } + + PUGI__FN xml_attribute_iterator::xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent): _wrap(attr), _parent(parent) + { + } + + PUGI__FN xml_attribute_iterator::xml_attribute_iterator(xml_attribute_struct* ref, xml_node_struct* parent): _wrap(ref), _parent(parent) + { + } + + PUGI__FN bool xml_attribute_iterator::operator==(const xml_attribute_iterator& rhs) const + { + return _wrap._attr == rhs._wrap._attr && _parent._root == rhs._parent._root; + } + + PUGI__FN bool xml_attribute_iterator::operator!=(const xml_attribute_iterator& rhs) const + { + return _wrap._attr != rhs._wrap._attr || _parent._root != rhs._parent._root; + } + + PUGI__FN xml_attribute& xml_attribute_iterator::operator*() const + { + assert(_wrap._attr); + return _wrap; + } + + PUGI__FN xml_attribute* xml_attribute_iterator::operator->() const + { + assert(_wrap._attr); + return const_cast(&_wrap); // BCC32 workaround + } + + PUGI__FN const xml_attribute_iterator& xml_attribute_iterator::operator++() + { + assert(_wrap._attr); + _wrap._attr = _wrap._attr->next_attribute; + return *this; + } + + PUGI__FN xml_attribute_iterator xml_attribute_iterator::operator++(int) + { + xml_attribute_iterator temp = *this; + ++*this; + return temp; + } + + PUGI__FN const xml_attribute_iterator& xml_attribute_iterator::operator--() + { + _wrap = _wrap._attr ? _wrap.previous_attribute() : _parent.last_attribute(); + return *this; + } + + PUGI__FN xml_attribute_iterator xml_attribute_iterator::operator--(int) + { + xml_attribute_iterator temp = *this; + --*this; + return temp; + } + + PUGI__FN xml_named_node_iterator::xml_named_node_iterator(): _name(0) + { + } + + PUGI__FN xml_named_node_iterator::xml_named_node_iterator(const xml_node& node, const char_t* name): _wrap(node), _parent(node.parent()), _name(name) + { + } + + PUGI__FN xml_named_node_iterator::xml_named_node_iterator(xml_node_struct* ref, xml_node_struct* parent, const char_t* name): _wrap(ref), _parent(parent), _name(name) + { + } + + PUGI__FN bool xml_named_node_iterator::operator==(const xml_named_node_iterator& rhs) const + { + return _wrap._root == rhs._wrap._root && _parent._root == rhs._parent._root; + } + + PUGI__FN bool xml_named_node_iterator::operator!=(const xml_named_node_iterator& rhs) const + { + return _wrap._root != rhs._wrap._root || _parent._root != rhs._parent._root; + } + + PUGI__FN xml_node& xml_named_node_iterator::operator*() const + { + assert(_wrap._root); + return _wrap; + } + + PUGI__FN xml_node* xml_named_node_iterator::operator->() const + { + assert(_wrap._root); + return const_cast(&_wrap); // BCC32 workaround + } + + PUGI__FN const xml_named_node_iterator& xml_named_node_iterator::operator++() + { + assert(_wrap._root); + _wrap = _wrap.next_sibling(_name); + return *this; + } + + PUGI__FN xml_named_node_iterator xml_named_node_iterator::operator++(int) + { + xml_named_node_iterator temp = *this; + ++*this; + return temp; + } + + PUGI__FN const xml_named_node_iterator& xml_named_node_iterator::operator--() + { + if (_wrap._root) + _wrap = _wrap.previous_sibling(_name); + else + { + _wrap = _parent.last_child(); + + if (!impl::strequal(_wrap.name(), _name)) + _wrap = _wrap.previous_sibling(_name); + } + + return *this; + } + + PUGI__FN xml_named_node_iterator xml_named_node_iterator::operator--(int) + { + xml_named_node_iterator temp = *this; + --*this; + return temp; + } + + PUGI__FN xml_parse_result::xml_parse_result(): status(status_internal_error), offset(0), encoding(encoding_auto) + { + } + + PUGI__FN xml_parse_result::operator bool() const + { + return status == status_ok; + } + + PUGI__FN const char* xml_parse_result::description() const + { + switch (status) + { + case status_ok: return "No error"; + + case status_file_not_found: return "File was not found"; + case status_io_error: return "Error reading from file/stream"; + case status_out_of_memory: return "Could not allocate memory"; + case status_internal_error: return "Internal error occurred"; + + case status_unrecognized_tag: return "Could not determine tag type"; + + case status_bad_pi: return "Error parsing document declaration/processing instruction"; + case status_bad_comment: return "Error parsing comment"; + case status_bad_cdata: return "Error parsing CDATA section"; + case status_bad_doctype: return "Error parsing document type declaration"; + case status_bad_pcdata: return "Error parsing PCDATA section"; + case status_bad_start_element: return "Error parsing start element tag"; + case status_bad_attribute: return "Error parsing element attribute"; + case status_bad_end_element: return "Error parsing end element tag"; + case status_end_element_mismatch: return "Start-end tags mismatch"; + + case status_append_invalid_root: return "Unable to append nodes: root is not an element or document"; + + case status_no_document_element: return "No document element found"; + + default: return "Unknown error"; + } + } + + PUGI__FN xml_document::xml_document(): _buffer(0) + { + create(); + } + + PUGI__FN xml_document::~xml_document() + { + destroy(); + } + + PUGI__FN void xml_document::reset() + { + destroy(); + create(); + } + + PUGI__FN void xml_document::reset(const xml_document& proto) + { + reset(); + + for (xml_node cur = proto.first_child(); cur; cur = cur.next_sibling()) + append_copy(cur); + } + + PUGI__FN void xml_document::create() + { + assert(!_root); + + // initialize sentinel page + PUGI__STATIC_ASSERT(sizeof(impl::xml_memory_page) + sizeof(impl::xml_document_struct) + impl::xml_memory_page_alignment <= sizeof(_memory)); + + // align upwards to page boundary + void* page_memory = reinterpret_cast((reinterpret_cast(_memory) + (impl::xml_memory_page_alignment - 1)) & ~(impl::xml_memory_page_alignment - 1)); + + // prepare page structure + impl::xml_memory_page* page = impl::xml_memory_page::construct(page_memory); + assert(page); + + page->busy_size = impl::xml_memory_page_size; + + // allocate new root + _root = new (page->data) impl::xml_document_struct(page); + _root->prev_sibling_c = _root; + + // setup sentinel page + page->allocator = static_cast(_root); + } + + PUGI__FN void xml_document::destroy() + { + assert(_root); + + // destroy static storage + if (_buffer) + { + impl::xml_memory::deallocate(_buffer); + _buffer = 0; + } + + // destroy extra buffers (note: no need to destroy linked list nodes, they're allocated using document allocator) + for (impl::xml_extra_buffer* extra = static_cast(_root)->extra_buffers; extra; extra = extra->next) + { + if (extra->buffer) impl::xml_memory::deallocate(extra->buffer); + } + + // destroy dynamic storage, leave sentinel page (it's in static memory) + impl::xml_memory_page* root_page = reinterpret_cast(_root->header & impl::xml_memory_page_pointer_mask); + assert(root_page && !root_page->prev && !root_page->memory); + + for (impl::xml_memory_page* page = root_page->next; page; ) + { + impl::xml_memory_page* next = page->next; + + impl::xml_allocator::deallocate_page(page); + + page = next; + } + + _root = 0; + } + +#ifndef PUGIXML_NO_STL + PUGI__FN xml_parse_result xml_document::load(std::basic_istream >& stream, unsigned int options, xml_encoding encoding) + { + reset(); + + return impl::load_stream_impl(*this, stream, options, encoding); + } + + PUGI__FN xml_parse_result xml_document::load(std::basic_istream >& stream, unsigned int options) + { + reset(); + + return impl::load_stream_impl(*this, stream, options, encoding_wchar); + } +#endif + + PUGI__FN xml_parse_result xml_document::load(const char_t* contents, unsigned int options) + { + // Force native encoding (skip autodetection) + #ifdef PUGIXML_WCHAR_MODE + xml_encoding encoding = encoding_wchar; + #else + xml_encoding encoding = encoding_utf8; + #endif + + return load_buffer(contents, impl::strlength(contents) * sizeof(char_t), options, encoding); + } + + PUGI__FN xml_parse_result xml_document::load_file(const char* path_, unsigned int options, xml_encoding encoding) + { + reset(); + + FILE* file = fopen(path_, "rb"); + + return impl::load_file_impl(*this, file, options, encoding); + } + + PUGI__FN xml_parse_result xml_document::load_file(const wchar_t* path_, unsigned int options, xml_encoding encoding) + { + reset(); + + FILE* file = impl::open_file_wide(path_, L"rb"); + + return impl::load_file_impl(*this, file, options, encoding); + } + + PUGI__FN xml_parse_result xml_document::load_buffer(const void* contents, size_t size, unsigned int options, xml_encoding encoding) + { + reset(); + + return impl::load_buffer_impl(static_cast(_root), _root, const_cast(contents), size, options, encoding, false, false, &_buffer); + } + + PUGI__FN xml_parse_result xml_document::load_buffer_inplace(void* contents, size_t size, unsigned int options, xml_encoding encoding) + { + reset(); + + return impl::load_buffer_impl(static_cast(_root), _root, contents, size, options, encoding, true, false, &_buffer); + } + + PUGI__FN xml_parse_result xml_document::load_buffer_inplace_own(void* contents, size_t size, unsigned int options, xml_encoding encoding) + { + reset(); + + return impl::load_buffer_impl(static_cast(_root), _root, contents, size, options, encoding, true, true, &_buffer); + } + + PUGI__FN void xml_document::save(xml_writer& writer, const char_t* indent, unsigned int flags, xml_encoding encoding) const + { + impl::xml_buffered_writer buffered_writer(writer, encoding); + + if ((flags & format_write_bom) && encoding != encoding_latin1) + { + // BOM always represents the codepoint U+FEFF, so just write it in native encoding + #ifdef PUGIXML_WCHAR_MODE + unsigned int bom = 0xfeff; + buffered_writer.write(static_cast(bom)); + #else + buffered_writer.write('\xef', '\xbb', '\xbf'); + #endif + } + + if (!(flags & format_no_declaration) && !impl::has_declaration(*this)) + { + buffered_writer.write(PUGIXML_TEXT("'); + if (!(flags & format_raw)) buffered_writer.write('\n'); + } + + impl::node_output(buffered_writer, *this, indent, flags, 0); + } + +#ifndef PUGIXML_NO_STL + PUGI__FN void xml_document::save(std::basic_ostream >& stream, const char_t* indent, unsigned int flags, xml_encoding encoding) const + { + xml_writer_stream writer(stream); + + save(writer, indent, flags, encoding); + } + + PUGI__FN void xml_document::save(std::basic_ostream >& stream, const char_t* indent, unsigned int flags) const + { + xml_writer_stream writer(stream); + + save(writer, indent, flags, encoding_wchar); + } +#endif + + PUGI__FN bool xml_document::save_file(const char* path_, const char_t* indent, unsigned int flags, xml_encoding encoding) const + { + FILE* file = fopen(path_, (flags & format_save_file_text) ? "w" : "wb"); + return impl::save_file_impl(*this, file, indent, flags, encoding); + } + + PUGI__FN bool xml_document::save_file(const wchar_t* path_, const char_t* indent, unsigned int flags, xml_encoding encoding) const + { + FILE* file = impl::open_file_wide(path_, (flags & format_save_file_text) ? L"w" : L"wb"); + return impl::save_file_impl(*this, file, indent, flags, encoding); + } + + PUGI__FN xml_node xml_document::document_element() const + { + assert(_root); + + for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) + if ((i->header & impl::xml_memory_page_type_mask) + 1 == node_element) + return xml_node(i); + + return xml_node(); + } + +#ifndef PUGIXML_NO_STL + PUGI__FN std::string PUGIXML_FUNCTION as_utf8(const wchar_t* str) + { + assert(str); + + return impl::as_utf8_impl(str, impl::strlength_wide(str)); + } + + PUGI__FN std::string PUGIXML_FUNCTION as_utf8(const std::basic_string& str) + { + return impl::as_utf8_impl(str.c_str(), str.size()); + } + + PUGI__FN std::basic_string PUGIXML_FUNCTION as_wide(const char* str) + { + assert(str); + + return impl::as_wide_impl(str, strlen(str)); + } + + PUGI__FN std::basic_string PUGIXML_FUNCTION as_wide(const std::string& str) + { + return impl::as_wide_impl(str.c_str(), str.size()); + } +#endif + + PUGI__FN void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate) + { + impl::xml_memory::allocate = allocate; + impl::xml_memory::deallocate = deallocate; + } + + PUGI__FN allocation_function PUGIXML_FUNCTION get_memory_allocation_function() + { + return impl::xml_memory::allocate; + } + + PUGI__FN deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function() + { + return impl::xml_memory::deallocate; + } +} + +#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC)) +namespace std +{ + // Workarounds for (non-standard) iterator category detection for older versions (MSVC7/IC8 and earlier) + PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_node_iterator&) + { + return std::bidirectional_iterator_tag(); + } + + PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_attribute_iterator&) + { + return std::bidirectional_iterator_tag(); + } + + PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_named_node_iterator&) + { + return std::bidirectional_iterator_tag(); + } +} +#endif + +#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC) +namespace std +{ + // Workarounds for (non-standard) iterator category detection + PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_node_iterator&) + { + return std::bidirectional_iterator_tag(); + } + + PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_attribute_iterator&) + { + return std::bidirectional_iterator_tag(); + } + + PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_named_node_iterator&) + { + return std::bidirectional_iterator_tag(); + } +} +#endif + +#ifndef PUGIXML_NO_XPATH + +// STL replacements +PUGI__NS_BEGIN + struct equal_to + { + template bool operator()(const T& lhs, const T& rhs) const + { + return lhs == rhs; + } + }; + + struct not_equal_to + { + template bool operator()(const T& lhs, const T& rhs) const + { + return lhs != rhs; + } + }; + + struct less + { + template bool operator()(const T& lhs, const T& rhs) const + { + return lhs < rhs; + } + }; + + struct less_equal + { + template bool operator()(const T& lhs, const T& rhs) const + { + return lhs <= rhs; + } + }; + + template void swap(T& lhs, T& rhs) + { + T temp = lhs; + lhs = rhs; + rhs = temp; + } + + template I min_element(I begin, I end, const Pred& pred) + { + I result = begin; + + for (I it = begin + 1; it != end; ++it) + if (pred(*it, *result)) + result = it; + + return result; + } + + template void reverse(I begin, I end) + { + while (end - begin > 1) swap(*begin++, *--end); + } + + template I unique(I begin, I end) + { + // fast skip head + while (end - begin > 1 && *begin != *(begin + 1)) begin++; + + if (begin == end) return begin; + + // last written element + I write = begin++; + + // merge unique elements + while (begin != end) + { + if (*begin != *write) + *++write = *begin++; + else + begin++; + } + + // past-the-end (write points to live element) + return write + 1; + } + + template void copy_backwards(I begin, I end, I target) + { + while (begin != end) *--target = *--end; + } + + template void insertion_sort(I begin, I end, const Pred& pred, T*) + { + assert(begin != end); + + for (I it = begin + 1; it != end; ++it) + { + T val = *it; + + if (pred(val, *begin)) + { + // move to front + copy_backwards(begin, it, it + 1); + *begin = val; + } + else + { + I hole = it; + + // move hole backwards + while (pred(val, *(hole - 1))) + { + *hole = *(hole - 1); + hole--; + } + + // fill hole with element + *hole = val; + } + } + } + + // std variant for elements with == + template void partition(I begin, I middle, I end, const Pred& pred, I* out_eqbeg, I* out_eqend) + { + I eqbeg = middle, eqend = middle + 1; + + // expand equal range + while (eqbeg != begin && *(eqbeg - 1) == *eqbeg) --eqbeg; + while (eqend != end && *eqend == *eqbeg) ++eqend; + + // process outer elements + I ltend = eqbeg, gtbeg = eqend; + + for (;;) + { + // find the element from the right side that belongs to the left one + for (; gtbeg != end; ++gtbeg) + if (!pred(*eqbeg, *gtbeg)) + { + if (*gtbeg == *eqbeg) swap(*gtbeg, *eqend++); + else break; + } + + // find the element from the left side that belongs to the right one + for (; ltend != begin; --ltend) + if (!pred(*(ltend - 1), *eqbeg)) + { + if (*eqbeg == *(ltend - 1)) swap(*(ltend - 1), *--eqbeg); + else break; + } + + // scanned all elements + if (gtbeg == end && ltend == begin) + { + *out_eqbeg = eqbeg; + *out_eqend = eqend; + return; + } + + // make room for elements by moving equal area + if (gtbeg == end) + { + if (--ltend != --eqbeg) swap(*ltend, *eqbeg); + swap(*eqbeg, *--eqend); + } + else if (ltend == begin) + { + if (eqend != gtbeg) swap(*eqbeg, *eqend); + ++eqend; + swap(*gtbeg++, *eqbeg++); + } + else swap(*gtbeg++, *--ltend); + } + } + + template void median3(I first, I middle, I last, const Pred& pred) + { + if (pred(*middle, *first)) swap(*middle, *first); + if (pred(*last, *middle)) swap(*last, *middle); + if (pred(*middle, *first)) swap(*middle, *first); + } + + template void median(I first, I middle, I last, const Pred& pred) + { + if (last - first <= 40) + { + // median of three for small chunks + median3(first, middle, last, pred); + } + else + { + // median of nine + size_t step = (last - first + 1) / 8; + + median3(first, first + step, first + 2 * step, pred); + median3(middle - step, middle, middle + step, pred); + median3(last - 2 * step, last - step, last, pred); + median3(first + step, middle, last - step, pred); + } + } + + template void sort(I begin, I end, const Pred& pred) + { + // sort large chunks + while (end - begin > 32) + { + // find median element + I middle = begin + (end - begin) / 2; + median(begin, middle, end - 1, pred); + + // partition in three chunks (< = >) + I eqbeg, eqend; + partition(begin, middle, end, pred, &eqbeg, &eqend); + + // loop on larger half + if (eqbeg - begin > end - eqend) + { + sort(eqend, end, pred); + end = eqbeg; + } + else + { + sort(begin, eqbeg, pred); + begin = eqend; + } + } + + // insertion sort small chunk + if (begin != end) insertion_sort(begin, end, pred, &*begin); + } +PUGI__NS_END + +// Allocator used for AST and evaluation stacks +PUGI__NS_BEGIN + struct xpath_memory_block + { + xpath_memory_block* next; + size_t capacity; + + char data[ + #ifdef PUGIXML_MEMORY_XPATH_PAGE_SIZE + PUGIXML_MEMORY_XPATH_PAGE_SIZE + #else + 4096 + #endif + ]; + }; + + class xpath_allocator + { + xpath_memory_block* _root; + size_t _root_size; + + public: + #ifdef PUGIXML_NO_EXCEPTIONS + jmp_buf* error_handler; + #endif + + xpath_allocator(xpath_memory_block* root, size_t root_size = 0): _root(root), _root_size(root_size) + { + #ifdef PUGIXML_NO_EXCEPTIONS + error_handler = 0; + #endif + } + + void* allocate_nothrow(size_t size) + { + // align size so that we're able to store pointers in subsequent blocks + size = (size + sizeof(void*) - 1) & ~(sizeof(void*) - 1); + + if (_root_size + size <= _root->capacity) + { + void* buf = _root->data + _root_size; + _root_size += size; + return buf; + } + else + { + // make sure we have at least 1/4th of the page free after allocation to satisfy subsequent allocation requests + size_t block_capacity_base = sizeof(_root->data); + size_t block_capacity_req = size + block_capacity_base / 4; + size_t block_capacity = (block_capacity_base > block_capacity_req) ? block_capacity_base : block_capacity_req; + + size_t block_size = block_capacity + offsetof(xpath_memory_block, data); + + xpath_memory_block* block = static_cast(xml_memory::allocate(block_size)); + if (!block) return 0; + + block->next = _root; + block->capacity = block_capacity; + + _root = block; + _root_size = size; + + return block->data; + } + } + + void* allocate(size_t size) + { + void* result = allocate_nothrow(size); + + if (!result) + { + #ifdef PUGIXML_NO_EXCEPTIONS + assert(error_handler); + longjmp(*error_handler, 1); + #else + throw std::bad_alloc(); + #endif + } + + return result; + } + + void* reallocate(void* ptr, size_t old_size, size_t new_size) + { + // align size so that we're able to store pointers in subsequent blocks + old_size = (old_size + sizeof(void*) - 1) & ~(sizeof(void*) - 1); + new_size = (new_size + sizeof(void*) - 1) & ~(sizeof(void*) - 1); + + // we can only reallocate the last object + assert(ptr == 0 || static_cast(ptr) + old_size == _root->data + _root_size); + + // adjust root size so that we have not allocated the object at all + bool only_object = (_root_size == old_size); + + if (ptr) _root_size -= old_size; + + // allocate a new version (this will obviously reuse the memory if possible) + void* result = allocate(new_size); + assert(result); + + // we have a new block + if (result != ptr && ptr) + { + // copy old data + assert(new_size >= old_size); + memcpy(result, ptr, old_size); + + // free the previous page if it had no other objects + if (only_object) + { + assert(_root->data == result); + assert(_root->next); + + xpath_memory_block* next = _root->next->next; + + if (next) + { + // deallocate the whole page, unless it was the first one + xml_memory::deallocate(_root->next); + _root->next = next; + } + } + } + + return result; + } + + void revert(const xpath_allocator& state) + { + // free all new pages + xpath_memory_block* cur = _root; + + while (cur != state._root) + { + xpath_memory_block* next = cur->next; + + xml_memory::deallocate(cur); + + cur = next; + } + + // restore state + _root = state._root; + _root_size = state._root_size; + } + + void release() + { + xpath_memory_block* cur = _root; + assert(cur); + + while (cur->next) + { + xpath_memory_block* next = cur->next; + + xml_memory::deallocate(cur); + + cur = next; + } + } + }; + + struct xpath_allocator_capture + { + xpath_allocator_capture(xpath_allocator* alloc): _target(alloc), _state(*alloc) + { + } + + ~xpath_allocator_capture() + { + _target->revert(_state); + } + + xpath_allocator* _target; + xpath_allocator _state; + }; + + struct xpath_stack + { + xpath_allocator* result; + xpath_allocator* temp; + }; + + struct xpath_stack_data + { + xpath_memory_block blocks[2]; + xpath_allocator result; + xpath_allocator temp; + xpath_stack stack; + + #ifdef PUGIXML_NO_EXCEPTIONS + jmp_buf error_handler; + #endif + + xpath_stack_data(): result(blocks + 0), temp(blocks + 1) + { + blocks[0].next = blocks[1].next = 0; + blocks[0].capacity = blocks[1].capacity = sizeof(blocks[0].data); + + stack.result = &result; + stack.temp = &temp; + + #ifdef PUGIXML_NO_EXCEPTIONS + result.error_handler = temp.error_handler = &error_handler; + #endif + } + + ~xpath_stack_data() + { + result.release(); + temp.release(); + } + }; +PUGI__NS_END + +// String class +PUGI__NS_BEGIN + class xpath_string + { + const char_t* _buffer; + bool _uses_heap; + + static char_t* duplicate_string(const char_t* string, size_t length, xpath_allocator* alloc) + { + char_t* result = static_cast(alloc->allocate((length + 1) * sizeof(char_t))); + assert(result); + + memcpy(result, string, length * sizeof(char_t)); + result[length] = 0; + + return result; + } + + static char_t* duplicate_string(const char_t* string, xpath_allocator* alloc) + { + return duplicate_string(string, strlength(string), alloc); + } + + public: + xpath_string(): _buffer(PUGIXML_TEXT("")), _uses_heap(false) + { + } + + explicit xpath_string(const char_t* str, xpath_allocator* alloc) + { + bool empty_ = (*str == 0); + + _buffer = empty_ ? PUGIXML_TEXT("") : duplicate_string(str, alloc); + _uses_heap = !empty_; + } + + explicit xpath_string(const char_t* str, bool use_heap): _buffer(str), _uses_heap(use_heap) + { + } + + xpath_string(const char_t* begin, const char_t* end, xpath_allocator* alloc) + { + assert(begin <= end); + + bool empty_ = (begin == end); + + _buffer = empty_ ? PUGIXML_TEXT("") : duplicate_string(begin, static_cast(end - begin), alloc); + _uses_heap = !empty_; + } + + void append(const xpath_string& o, xpath_allocator* alloc) + { + // skip empty sources + if (!*o._buffer) return; + + // fast append for constant empty target and constant source + if (!*_buffer && !_uses_heap && !o._uses_heap) + { + _buffer = o._buffer; + } + else + { + // need to make heap copy + size_t target_length = strlength(_buffer); + size_t source_length = strlength(o._buffer); + size_t result_length = target_length + source_length; + + // allocate new buffer + char_t* result = static_cast(alloc->reallocate(_uses_heap ? const_cast(_buffer) : 0, (target_length + 1) * sizeof(char_t), (result_length + 1) * sizeof(char_t))); + assert(result); + + // append first string to the new buffer in case there was no reallocation + if (!_uses_heap) memcpy(result, _buffer, target_length * sizeof(char_t)); + + // append second string to the new buffer + memcpy(result + target_length, o._buffer, source_length * sizeof(char_t)); + result[result_length] = 0; + + // finalize + _buffer = result; + _uses_heap = true; + } + } + + const char_t* c_str() const + { + return _buffer; + } + + size_t length() const + { + return strlength(_buffer); + } + + char_t* data(xpath_allocator* alloc) + { + // make private heap copy + if (!_uses_heap) + { + _buffer = duplicate_string(_buffer, alloc); + _uses_heap = true; + } + + return const_cast(_buffer); + } + + bool empty() const + { + return *_buffer == 0; + } + + bool operator==(const xpath_string& o) const + { + return strequal(_buffer, o._buffer); + } + + bool operator!=(const xpath_string& o) const + { + return !strequal(_buffer, o._buffer); + } + + bool uses_heap() const + { + return _uses_heap; + } + }; + + PUGI__FN xpath_string xpath_string_const(const char_t* str) + { + return xpath_string(str, false); + } +PUGI__NS_END + +PUGI__NS_BEGIN + PUGI__FN bool starts_with(const char_t* string, const char_t* pattern) + { + while (*pattern && *string == *pattern) + { + string++; + pattern++; + } + + return *pattern == 0; + } + + PUGI__FN const char_t* find_char(const char_t* s, char_t c) + { + #ifdef PUGIXML_WCHAR_MODE + return wcschr(s, c); + #else + return strchr(s, c); + #endif + } + + PUGI__FN const char_t* find_substring(const char_t* s, const char_t* p) + { + #ifdef PUGIXML_WCHAR_MODE + // MSVC6 wcsstr bug workaround (if s is empty it always returns 0) + return (*p == 0) ? s : wcsstr(s, p); + #else + return strstr(s, p); + #endif + } + + // Converts symbol to lower case, if it is an ASCII one + PUGI__FN char_t tolower_ascii(char_t ch) + { + return static_cast(ch - 'A') < 26 ? static_cast(ch | ' ') : ch; + } + + PUGI__FN xpath_string string_value(const xpath_node& na, xpath_allocator* alloc) + { + if (na.attribute()) + return xpath_string_const(na.attribute().value()); + else + { + const xml_node& n = na.node(); + + switch (n.type()) + { + case node_pcdata: + case node_cdata: + case node_comment: + case node_pi: + return xpath_string_const(n.value()); + + case node_document: + case node_element: + { + xpath_string result; + + xml_node cur = n.first_child(); + + while (cur && cur != n) + { + if (cur.type() == node_pcdata || cur.type() == node_cdata) + result.append(xpath_string_const(cur.value()), alloc); + + if (cur.first_child()) + cur = cur.first_child(); + else if (cur.next_sibling()) + cur = cur.next_sibling(); + else + { + while (!cur.next_sibling() && cur != n) + cur = cur.parent(); + + if (cur != n) cur = cur.next_sibling(); + } + } + + return result; + } + + default: + return xpath_string(); + } + } + } + + PUGI__FN unsigned int node_height(xml_node n) + { + unsigned int result = 0; + + while (n) + { + ++result; + n = n.parent(); + } + + return result; + } + + PUGI__FN bool node_is_before(xml_node ln, unsigned int lh, xml_node rn, unsigned int rh) + { + // normalize heights + for (unsigned int i = rh; i < lh; i++) ln = ln.parent(); + for (unsigned int j = lh; j < rh; j++) rn = rn.parent(); + + // one node is the ancestor of the other + if (ln == rn) return lh < rh; + + // find common ancestor + while (ln.parent() != rn.parent()) + { + ln = ln.parent(); + rn = rn.parent(); + } + + // there is no common ancestor (the shared parent is null), nodes are from different documents + if (!ln.parent()) return ln < rn; + + // determine sibling order + for (; ln; ln = ln.next_sibling()) + if (ln == rn) + return true; + + return false; + } + + PUGI__FN bool node_is_ancestor(xml_node parent, xml_node node) + { + while (node && node != parent) node = node.parent(); + + return parent && node == parent; + } + + PUGI__FN const void* document_order(const xpath_node& xnode) + { + xml_node_struct* node = xnode.node().internal_object(); + + if (node) + { + if (node->name && (node->header & xml_memory_page_name_allocated_mask) == 0) return node->name; + if (node->value && (node->header & xml_memory_page_value_allocated_mask) == 0) return node->value; + return 0; + } + + xml_attribute_struct* attr = xnode.attribute().internal_object(); + + if (attr) + { + if ((attr->header & xml_memory_page_name_allocated_mask) == 0) return attr->name; + if ((attr->header & xml_memory_page_value_allocated_mask) == 0) return attr->value; + return 0; + } + + return 0; + } + + struct document_order_comparator + { + bool operator()(const xpath_node& lhs, const xpath_node& rhs) const + { + // optimized document order based check + const void* lo = document_order(lhs); + const void* ro = document_order(rhs); + + if (lo && ro) return lo < ro; + + // slow comparison + xml_node ln = lhs.node(), rn = rhs.node(); + + // compare attributes + if (lhs.attribute() && rhs.attribute()) + { + // shared parent + if (lhs.parent() == rhs.parent()) + { + // determine sibling order + for (xml_attribute a = lhs.attribute(); a; a = a.next_attribute()) + if (a == rhs.attribute()) + return true; + + return false; + } + + // compare attribute parents + ln = lhs.parent(); + rn = rhs.parent(); + } + else if (lhs.attribute()) + { + // attributes go after the parent element + if (lhs.parent() == rhs.node()) return false; + + ln = lhs.parent(); + } + else if (rhs.attribute()) + { + // attributes go after the parent element + if (rhs.parent() == lhs.node()) return true; + + rn = rhs.parent(); + } + + if (ln == rn) return false; + + unsigned int lh = node_height(ln); + unsigned int rh = node_height(rn); + + return node_is_before(ln, lh, rn, rh); + } + }; + + struct duplicate_comparator + { + bool operator()(const xpath_node& lhs, const xpath_node& rhs) const + { + if (lhs.attribute()) return rhs.attribute() ? lhs.attribute() < rhs.attribute() : true; + else return rhs.attribute() ? false : lhs.node() < rhs.node(); + } + }; + + PUGI__FN double gen_nan() + { + #if defined(__STDC_IEC_559__) || ((FLT_RADIX - 0 == 2) && (FLT_MAX_EXP - 0 == 128) && (FLT_MANT_DIG - 0 == 24)) + union { float f; uint32_t i; } u[sizeof(float) == sizeof(uint32_t) ? 1 : -1]; + u[0].i = 0x7fc00000; + return u[0].f; + #else + // fallback + const volatile double zero = 0.0; + return zero / zero; + #endif + } + + PUGI__FN bool is_nan(double value) + { + #if defined(PUGI__MSVC_CRT_VERSION) || defined(__BORLANDC__) + return !!_isnan(value); + #elif defined(fpclassify) && defined(FP_NAN) + return fpclassify(value) == FP_NAN; + #else + // fallback + const volatile double v = value; + return v != v; + #endif + } + + PUGI__FN const char_t* convert_number_to_string_special(double value) + { + #if defined(PUGI__MSVC_CRT_VERSION) || defined(__BORLANDC__) + if (_finite(value)) return (value == 0) ? PUGIXML_TEXT("0") : 0; + if (_isnan(value)) return PUGIXML_TEXT("NaN"); + return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); + #elif defined(fpclassify) && defined(FP_NAN) && defined(FP_INFINITE) && defined(FP_ZERO) + switch (fpclassify(value)) + { + case FP_NAN: + return PUGIXML_TEXT("NaN"); + + case FP_INFINITE: + return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); + + case FP_ZERO: + return PUGIXML_TEXT("0"); + + default: + return 0; + } + #else + // fallback + const volatile double v = value; + + if (v == 0) return PUGIXML_TEXT("0"); + if (v != v) return PUGIXML_TEXT("NaN"); + if (v * 2 == v) return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); + return 0; + #endif + } + + PUGI__FN bool convert_number_to_boolean(double value) + { + return (value != 0 && !is_nan(value)); + } + + PUGI__FN void truncate_zeros(char* begin, char* end) + { + while (begin != end && end[-1] == '0') end--; + + *end = 0; + } + + // gets mantissa digits in the form of 0.xxxxx with 0. implied and the exponent +#if defined(PUGI__MSVC_CRT_VERSION) && PUGI__MSVC_CRT_VERSION >= 1400 && !defined(_WIN32_WCE) + PUGI__FN void convert_number_to_mantissa_exponent(double value, char* buffer, size_t buffer_size, char** out_mantissa, int* out_exponent) + { + // get base values + int sign, exponent; + _ecvt_s(buffer, buffer_size, value, DBL_DIG + 1, &exponent, &sign); + + // truncate redundant zeros + truncate_zeros(buffer, buffer + strlen(buffer)); + + // fill results + *out_mantissa = buffer; + *out_exponent = exponent; + } +#else + PUGI__FN void convert_number_to_mantissa_exponent(double value, char* buffer, size_t buffer_size, char** out_mantissa, int* out_exponent) + { + // get a scientific notation value with IEEE DBL_DIG decimals + sprintf(buffer, "%.*e", DBL_DIG, value); + assert(strlen(buffer) < buffer_size); + (void)!buffer_size; + + // get the exponent (possibly negative) + char* exponent_string = strchr(buffer, 'e'); + assert(exponent_string); + + int exponent = atoi(exponent_string + 1); + + // extract mantissa string: skip sign + char* mantissa = buffer[0] == '-' ? buffer + 1 : buffer; + assert(mantissa[0] != '0' && mantissa[1] == '.'); + + // divide mantissa by 10 to eliminate integer part + mantissa[1] = mantissa[0]; + mantissa++; + exponent++; + + // remove extra mantissa digits and zero-terminate mantissa + truncate_zeros(mantissa, exponent_string); + + // fill results + *out_mantissa = mantissa; + *out_exponent = exponent; + } +#endif + + PUGI__FN xpath_string convert_number_to_string(double value, xpath_allocator* alloc) + { + // try special number conversion + const char_t* special = convert_number_to_string_special(value); + if (special) return xpath_string_const(special); + + // get mantissa + exponent form + char mantissa_buffer[32]; + + char* mantissa; + int exponent; + convert_number_to_mantissa_exponent(value, mantissa_buffer, sizeof(mantissa_buffer), &mantissa, &exponent); + + // allocate a buffer of suitable length for the number + size_t result_size = strlen(mantissa_buffer) + (exponent > 0 ? exponent : -exponent) + 4; + char_t* result = static_cast(alloc->allocate(sizeof(char_t) * result_size)); + assert(result); + + // make the number! + char_t* s = result; + + // sign + if (value < 0) *s++ = '-'; + + // integer part + if (exponent <= 0) + { + *s++ = '0'; + } + else + { + while (exponent > 0) + { + assert(*mantissa == 0 || static_cast(static_cast(*mantissa) - '0') <= 9); + *s++ = *mantissa ? *mantissa++ : '0'; + exponent--; + } + } + + // fractional part + if (*mantissa) + { + // decimal point + *s++ = '.'; + + // extra zeroes from negative exponent + while (exponent < 0) + { + *s++ = '0'; + exponent++; + } + + // extra mantissa digits + while (*mantissa) + { + assert(static_cast(*mantissa - '0') <= 9); + *s++ = *mantissa++; + } + } + + // zero-terminate + assert(s < result + result_size); + *s = 0; + + return xpath_string(result, true); + } + + PUGI__FN bool check_string_to_number_format(const char_t* string) + { + // parse leading whitespace + while (PUGI__IS_CHARTYPE(*string, ct_space)) ++string; + + // parse sign + if (*string == '-') ++string; + + if (!*string) return false; + + // if there is no integer part, there should be a decimal part with at least one digit + if (!PUGI__IS_CHARTYPEX(string[0], ctx_digit) && (string[0] != '.' || !PUGI__IS_CHARTYPEX(string[1], ctx_digit))) return false; + + // parse integer part + while (PUGI__IS_CHARTYPEX(*string, ctx_digit)) ++string; + + // parse decimal part + if (*string == '.') + { + ++string; + + while (PUGI__IS_CHARTYPEX(*string, ctx_digit)) ++string; + } + + // parse trailing whitespace + while (PUGI__IS_CHARTYPE(*string, ct_space)) ++string; + + return *string == 0; + } + + PUGI__FN double convert_string_to_number(const char_t* string) + { + // check string format + if (!check_string_to_number_format(string)) return gen_nan(); + + // parse string + #ifdef PUGIXML_WCHAR_MODE + return wcstod(string, 0); + #else + return atof(string); + #endif + } + + PUGI__FN bool convert_string_to_number_scratch(char_t (&buffer)[32], const char_t* begin, const char_t* end, double* out_result) + { + size_t length = static_cast(end - begin); + char_t* scratch = buffer; + + if (length >= sizeof(buffer) / sizeof(buffer[0])) + { + // need to make dummy on-heap copy + scratch = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!scratch) return false; + } + + // copy string to zero-terminated buffer and perform conversion + memcpy(scratch, begin, length * sizeof(char_t)); + scratch[length] = 0; + + *out_result = convert_string_to_number(scratch); + + // free dummy buffer + if (scratch != buffer) xml_memory::deallocate(scratch); + + return true; + } + + PUGI__FN double round_nearest(double value) + { + return floor(value + 0.5); + } + + PUGI__FN double round_nearest_nzero(double value) + { + // same as round_nearest, but returns -0 for [-0.5, -0] + // ceil is used to differentiate between +0 and -0 (we return -0 for [-0.5, -0] and +0 for +0) + return (value >= -0.5 && value <= 0) ? ceil(value) : floor(value + 0.5); + } + + PUGI__FN const char_t* qualified_name(const xpath_node& node) + { + return node.attribute() ? node.attribute().name() : node.node().name(); + } + + PUGI__FN const char_t* local_name(const xpath_node& node) + { + const char_t* name = qualified_name(node); + const char_t* p = find_char(name, ':'); + + return p ? p + 1 : name; + } + + struct namespace_uri_predicate + { + const char_t* prefix; + size_t prefix_length; + + namespace_uri_predicate(const char_t* name) + { + const char_t* pos = find_char(name, ':'); + + prefix = pos ? name : 0; + prefix_length = pos ? static_cast(pos - name) : 0; + } + + bool operator()(const xml_attribute& a) const + { + const char_t* name = a.name(); + + if (!starts_with(name, PUGIXML_TEXT("xmlns"))) return false; + + return prefix ? name[5] == ':' && strequalrange(name + 6, prefix, prefix_length) : name[5] == 0; + } + }; + + PUGI__FN const char_t* namespace_uri(const xml_node& node) + { + namespace_uri_predicate pred = node.name(); + + xml_node p = node; + + while (p) + { + xml_attribute a = p.find_attribute(pred); + + if (a) return a.value(); + + p = p.parent(); + } + + return PUGIXML_TEXT(""); + } + + PUGI__FN const char_t* namespace_uri(const xml_attribute& attr, const xml_node& parent) + { + namespace_uri_predicate pred = attr.name(); + + // Default namespace does not apply to attributes + if (!pred.prefix) return PUGIXML_TEXT(""); + + xml_node p = parent; + + while (p) + { + xml_attribute a = p.find_attribute(pred); + + if (a) return a.value(); + + p = p.parent(); + } + + return PUGIXML_TEXT(""); + } + + PUGI__FN const char_t* namespace_uri(const xpath_node& node) + { + return node.attribute() ? namespace_uri(node.attribute(), node.parent()) : namespace_uri(node.node()); + } + + PUGI__FN void normalize_space(char_t* buffer) + { + char_t* write = buffer; + + for (char_t* it = buffer; *it; ) + { + char_t ch = *it++; + + if (PUGI__IS_CHARTYPE(ch, ct_space)) + { + // replace whitespace sequence with single space + while (PUGI__IS_CHARTYPE(*it, ct_space)) it++; + + // avoid leading spaces + if (write != buffer) *write++ = ' '; + } + else *write++ = ch; + } + + // remove trailing space + if (write != buffer && PUGI__IS_CHARTYPE(write[-1], ct_space)) write--; + + // zero-terminate + *write = 0; + } + + PUGI__FN void translate(char_t* buffer, const char_t* from, const char_t* to) + { + size_t to_length = strlength(to); + + char_t* write = buffer; + + while (*buffer) + { + PUGI__DMC_VOLATILE char_t ch = *buffer++; + + const char_t* pos = find_char(from, ch); + + if (!pos) + *write++ = ch; // do not process + else if (static_cast(pos - from) < to_length) + *write++ = to[pos - from]; // replace + } + + // zero-terminate + *write = 0; + } + + struct xpath_variable_boolean: xpath_variable + { + xpath_variable_boolean(): value(false) + { + } + + bool value; + char_t name[1]; + }; + + struct xpath_variable_number: xpath_variable + { + xpath_variable_number(): value(0) + { + } + + double value; + char_t name[1]; + }; + + struct xpath_variable_string: xpath_variable + { + xpath_variable_string(): value(0) + { + } + + ~xpath_variable_string() + { + if (value) xml_memory::deallocate(value); + } + + char_t* value; + char_t name[1]; + }; + + struct xpath_variable_node_set: xpath_variable + { + xpath_node_set value; + char_t name[1]; + }; + + static const xpath_node_set dummy_node_set; + + PUGI__FN unsigned int hash_string(const char_t* str) + { + // Jenkins one-at-a-time hash (http://en.wikipedia.org/wiki/Jenkins_hash_function#one-at-a-time) + unsigned int result = 0; + + while (*str) + { + result += static_cast(*str++); + result += result << 10; + result ^= result >> 6; + } + + result += result << 3; + result ^= result >> 11; + result += result << 15; + + return result; + } + + template PUGI__FN T* new_xpath_variable(const char_t* name) + { + size_t length = strlength(name); + if (length == 0) return 0; // empty variable names are invalid + + // $$ we can't use offsetof(T, name) because T is non-POD, so we just allocate additional length characters + void* memory = xml_memory::allocate(sizeof(T) + length * sizeof(char_t)); + if (!memory) return 0; + + T* result = new (memory) T(); + + memcpy(result->name, name, (length + 1) * sizeof(char_t)); + + return result; + } + + PUGI__FN xpath_variable* new_xpath_variable(xpath_value_type type, const char_t* name) + { + switch (type) + { + case xpath_type_node_set: + return new_xpath_variable(name); + + case xpath_type_number: + return new_xpath_variable(name); + + case xpath_type_string: + return new_xpath_variable(name); + + case xpath_type_boolean: + return new_xpath_variable(name); + + default: + return 0; + } + } + + template PUGI__FN void delete_xpath_variable(T* var) + { + var->~T(); + xml_memory::deallocate(var); + } + + PUGI__FN void delete_xpath_variable(xpath_value_type type, xpath_variable* var) + { + switch (type) + { + case xpath_type_node_set: + delete_xpath_variable(static_cast(var)); + break; + + case xpath_type_number: + delete_xpath_variable(static_cast(var)); + break; + + case xpath_type_string: + delete_xpath_variable(static_cast(var)); + break; + + case xpath_type_boolean: + delete_xpath_variable(static_cast(var)); + break; + + default: + assert(!"Invalid variable type"); + } + } + + PUGI__FN xpath_variable* get_variable_scratch(char_t (&buffer)[32], xpath_variable_set* set, const char_t* begin, const char_t* end) + { + size_t length = static_cast(end - begin); + char_t* scratch = buffer; + + if (length >= sizeof(buffer) / sizeof(buffer[0])) + { + // need to make dummy on-heap copy + scratch = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); + if (!scratch) return 0; + } + + // copy string to zero-terminated buffer and perform lookup + memcpy(scratch, begin, length * sizeof(char_t)); + scratch[length] = 0; + + xpath_variable* result = set->get(scratch); + + // free dummy buffer + if (scratch != buffer) xml_memory::deallocate(scratch); + + return result; + } +PUGI__NS_END + +// Internal node set class +PUGI__NS_BEGIN + PUGI__FN xpath_node_set::type_t xpath_sort(xpath_node* begin, xpath_node* end, xpath_node_set::type_t type, bool rev) + { + xpath_node_set::type_t order = rev ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_sorted; + + if (type == xpath_node_set::type_unsorted) + { + sort(begin, end, document_order_comparator()); + + type = xpath_node_set::type_sorted; + } + + if (type != order) reverse(begin, end); + + return order; + } + + PUGI__FN xpath_node xpath_first(const xpath_node* begin, const xpath_node* end, xpath_node_set::type_t type) + { + if (begin == end) return xpath_node(); + + switch (type) + { + case xpath_node_set::type_sorted: + return *begin; + + case xpath_node_set::type_sorted_reverse: + return *(end - 1); + + case xpath_node_set::type_unsorted: + return *min_element(begin, end, document_order_comparator()); + + default: + assert(!"Invalid node set type"); + return xpath_node(); + } + } + + class xpath_node_set_raw + { + xpath_node_set::type_t _type; + + xpath_node* _begin; + xpath_node* _end; + xpath_node* _eos; + + public: + xpath_node_set_raw(): _type(xpath_node_set::type_unsorted), _begin(0), _end(0), _eos(0) + { + } + + xpath_node* begin() const + { + return _begin; + } + + xpath_node* end() const + { + return _end; + } + + bool empty() const + { + return _begin == _end; + } + + size_t size() const + { + return static_cast(_end - _begin); + } + + xpath_node first() const + { + return xpath_first(_begin, _end, _type); + } + + void push_back(const xpath_node& node, xpath_allocator* alloc) + { + if (_end == _eos) + { + size_t capacity = static_cast(_eos - _begin); + + // get new capacity (1.5x rule) + size_t new_capacity = capacity + capacity / 2 + 1; + + // reallocate the old array or allocate a new one + xpath_node* data = static_cast(alloc->reallocate(_begin, capacity * sizeof(xpath_node), new_capacity * sizeof(xpath_node))); + assert(data); + + // finalize + _begin = data; + _end = data + capacity; + _eos = data + new_capacity; + } + + *_end++ = node; + } + + void append(const xpath_node* begin_, const xpath_node* end_, xpath_allocator* alloc) + { + size_t size_ = static_cast(_end - _begin); + size_t capacity = static_cast(_eos - _begin); + size_t count = static_cast(end_ - begin_); + + if (size_ + count > capacity) + { + // reallocate the old array or allocate a new one + xpath_node* data = static_cast(alloc->reallocate(_begin, capacity * sizeof(xpath_node), (size_ + count) * sizeof(xpath_node))); + assert(data); + + // finalize + _begin = data; + _end = data + size_; + _eos = data + size_ + count; + } + + memcpy(_end, begin_, count * sizeof(xpath_node)); + _end += count; + } + + void sort_do() + { + _type = xpath_sort(_begin, _end, _type, false); + } + + void truncate(xpath_node* pos) + { + assert(_begin <= pos && pos <= _end); + + _end = pos; + } + + void remove_duplicates() + { + if (_type == xpath_node_set::type_unsorted) + sort(_begin, _end, duplicate_comparator()); + + _end = unique(_begin, _end); + } + + xpath_node_set::type_t type() const + { + return _type; + } + + void set_type(xpath_node_set::type_t value) + { + _type = value; + } + }; +PUGI__NS_END + +PUGI__NS_BEGIN + struct xpath_context + { + xpath_node n; + size_t position, size; + + xpath_context(const xpath_node& n_, size_t position_, size_t size_): n(n_), position(position_), size(size_) + { + } + }; + + enum lexeme_t + { + lex_none = 0, + lex_equal, + lex_not_equal, + lex_less, + lex_greater, + lex_less_or_equal, + lex_greater_or_equal, + lex_plus, + lex_minus, + lex_multiply, + lex_union, + lex_var_ref, + lex_open_brace, + lex_close_brace, + lex_quoted_string, + lex_number, + lex_slash, + lex_double_slash, + lex_open_square_brace, + lex_close_square_brace, + lex_string, + lex_comma, + lex_axis_attribute, + lex_dot, + lex_double_dot, + lex_double_colon, + lex_eof + }; + + struct xpath_lexer_string + { + const char_t* begin; + const char_t* end; + + xpath_lexer_string(): begin(0), end(0) + { + } + + bool operator==(const char_t* other) const + { + size_t length = static_cast(end - begin); + + return strequalrange(other, begin, length); + } + }; + + class xpath_lexer + { + const char_t* _cur; + const char_t* _cur_lexeme_pos; + xpath_lexer_string _cur_lexeme_contents; + + lexeme_t _cur_lexeme; + + public: + explicit xpath_lexer(const char_t* query): _cur(query) + { + next(); + } + + const char_t* state() const + { + return _cur; + } + + void next() + { + const char_t* cur = _cur; + + while (PUGI__IS_CHARTYPE(*cur, ct_space)) ++cur; + + // save lexeme position for error reporting + _cur_lexeme_pos = cur; + + switch (*cur) + { + case 0: + _cur_lexeme = lex_eof; + break; + + case '>': + if (*(cur+1) == '=') + { + cur += 2; + _cur_lexeme = lex_greater_or_equal; + } + else + { + cur += 1; + _cur_lexeme = lex_greater; + } + break; + + case '<': + if (*(cur+1) == '=') + { + cur += 2; + _cur_lexeme = lex_less_or_equal; + } + else + { + cur += 1; + _cur_lexeme = lex_less; + } + break; + + case '!': + if (*(cur+1) == '=') + { + cur += 2; + _cur_lexeme = lex_not_equal; + } + else + { + _cur_lexeme = lex_none; + } + break; + + case '=': + cur += 1; + _cur_lexeme = lex_equal; + + break; + + case '+': + cur += 1; + _cur_lexeme = lex_plus; + + break; + + case '-': + cur += 1; + _cur_lexeme = lex_minus; + + break; + + case '*': + cur += 1; + _cur_lexeme = lex_multiply; + + break; + + case '|': + cur += 1; + _cur_lexeme = lex_union; + + break; + + case '$': + cur += 1; + + if (PUGI__IS_CHARTYPEX(*cur, ctx_start_symbol)) + { + _cur_lexeme_contents.begin = cur; + + while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; + + if (cur[0] == ':' && PUGI__IS_CHARTYPEX(cur[1], ctx_symbol)) // qname + { + cur++; // : + + while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; + } + + _cur_lexeme_contents.end = cur; + + _cur_lexeme = lex_var_ref; + } + else + { + _cur_lexeme = lex_none; + } + + break; + + case '(': + cur += 1; + _cur_lexeme = lex_open_brace; + + break; + + case ')': + cur += 1; + _cur_lexeme = lex_close_brace; + + break; + + case '[': + cur += 1; + _cur_lexeme = lex_open_square_brace; + + break; + + case ']': + cur += 1; + _cur_lexeme = lex_close_square_brace; + + break; + + case ',': + cur += 1; + _cur_lexeme = lex_comma; + + break; + + case '/': + if (*(cur+1) == '/') + { + cur += 2; + _cur_lexeme = lex_double_slash; + } + else + { + cur += 1; + _cur_lexeme = lex_slash; + } + break; + + case '.': + if (*(cur+1) == '.') + { + cur += 2; + _cur_lexeme = lex_double_dot; + } + else if (PUGI__IS_CHARTYPEX(*(cur+1), ctx_digit)) + { + _cur_lexeme_contents.begin = cur; // . + + ++cur; + + while (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) cur++; + + _cur_lexeme_contents.end = cur; + + _cur_lexeme = lex_number; + } + else + { + cur += 1; + _cur_lexeme = lex_dot; + } + break; + + case '@': + cur += 1; + _cur_lexeme = lex_axis_attribute; + + break; + + case '"': + case '\'': + { + char_t terminator = *cur; + + ++cur; + + _cur_lexeme_contents.begin = cur; + while (*cur && *cur != terminator) cur++; + _cur_lexeme_contents.end = cur; + + if (!*cur) + _cur_lexeme = lex_none; + else + { + cur += 1; + _cur_lexeme = lex_quoted_string; + } + + break; + } + + case ':': + if (*(cur+1) == ':') + { + cur += 2; + _cur_lexeme = lex_double_colon; + } + else + { + _cur_lexeme = lex_none; + } + break; + + default: + if (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) + { + _cur_lexeme_contents.begin = cur; + + while (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) cur++; + + if (*cur == '.') + { + cur++; + + while (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) cur++; + } + + _cur_lexeme_contents.end = cur; + + _cur_lexeme = lex_number; + } + else if (PUGI__IS_CHARTYPEX(*cur, ctx_start_symbol)) + { + _cur_lexeme_contents.begin = cur; + + while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; + + if (cur[0] == ':') + { + if (cur[1] == '*') // namespace test ncname:* + { + cur += 2; // :* + } + else if (PUGI__IS_CHARTYPEX(cur[1], ctx_symbol)) // namespace test qname + { + cur++; // : + + while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; + } + } + + _cur_lexeme_contents.end = cur; + + _cur_lexeme = lex_string; + } + else + { + _cur_lexeme = lex_none; + } + } + + _cur = cur; + } + + lexeme_t current() const + { + return _cur_lexeme; + } + + const char_t* current_pos() const + { + return _cur_lexeme_pos; + } + + const xpath_lexer_string& contents() const + { + assert(_cur_lexeme == lex_var_ref || _cur_lexeme == lex_number || _cur_lexeme == lex_string || _cur_lexeme == lex_quoted_string); + + return _cur_lexeme_contents; + } + }; + + enum ast_type_t + { + ast_unknown, + ast_op_or, // left or right + ast_op_and, // left and right + ast_op_equal, // left = right + ast_op_not_equal, // left != right + ast_op_less, // left < right + ast_op_greater, // left > right + ast_op_less_or_equal, // left <= right + ast_op_greater_or_equal, // left >= right + ast_op_add, // left + right + ast_op_subtract, // left - right + ast_op_multiply, // left * right + ast_op_divide, // left / right + ast_op_mod, // left % right + ast_op_negate, // left - right + ast_op_union, // left | right + ast_predicate, // apply predicate to set; next points to next predicate + ast_filter, // select * from left where right + ast_filter_posinv, // select * from left where right; proximity position invariant + ast_string_constant, // string constant + ast_number_constant, // number constant + ast_variable, // variable + ast_func_last, // last() + ast_func_position, // position() + ast_func_count, // count(left) + ast_func_id, // id(left) + ast_func_local_name_0, // local-name() + ast_func_local_name_1, // local-name(left) + ast_func_namespace_uri_0, // namespace-uri() + ast_func_namespace_uri_1, // namespace-uri(left) + ast_func_name_0, // name() + ast_func_name_1, // name(left) + ast_func_string_0, // string() + ast_func_string_1, // string(left) + ast_func_concat, // concat(left, right, siblings) + ast_func_starts_with, // starts_with(left, right) + ast_func_contains, // contains(left, right) + ast_func_substring_before, // substring-before(left, right) + ast_func_substring_after, // substring-after(left, right) + ast_func_substring_2, // substring(left, right) + ast_func_substring_3, // substring(left, right, third) + ast_func_string_length_0, // string-length() + ast_func_string_length_1, // string-length(left) + ast_func_normalize_space_0, // normalize-space() + ast_func_normalize_space_1, // normalize-space(left) + ast_func_translate, // translate(left, right, third) + ast_func_boolean, // boolean(left) + ast_func_not, // not(left) + ast_func_true, // true() + ast_func_false, // false() + ast_func_lang, // lang(left) + ast_func_number_0, // number() + ast_func_number_1, // number(left) + ast_func_sum, // sum(left) + ast_func_floor, // floor(left) + ast_func_ceiling, // ceiling(left) + ast_func_round, // round(left) + ast_step, // process set left with step + ast_step_root // select root node + }; + + enum axis_t + { + axis_ancestor, + axis_ancestor_or_self, + axis_attribute, + axis_child, + axis_descendant, + axis_descendant_or_self, + axis_following, + axis_following_sibling, + axis_namespace, + axis_parent, + axis_preceding, + axis_preceding_sibling, + axis_self + }; + + enum nodetest_t + { + nodetest_none, + nodetest_name, + nodetest_type_node, + nodetest_type_comment, + nodetest_type_pi, + nodetest_type_text, + nodetest_pi, + nodetest_all, + nodetest_all_in_namespace + }; + + template struct axis_to_type + { + static const axis_t axis; + }; + + template const axis_t axis_to_type::axis = N; + + class xpath_ast_node + { + private: + // node type + char _type; + char _rettype; + + // for ast_step / ast_predicate + char _axis; + char _test; + + // tree node structure + xpath_ast_node* _left; + xpath_ast_node* _right; + xpath_ast_node* _next; + + union + { + // value for ast_string_constant + const char_t* string; + // value for ast_number_constant + double number; + // variable for ast_variable + xpath_variable* variable; + // node test for ast_step (node name/namespace/node type/pi target) + const char_t* nodetest; + } _data; + + xpath_ast_node(const xpath_ast_node&); + xpath_ast_node& operator=(const xpath_ast_node&); + + template static bool compare_eq(xpath_ast_node* lhs, xpath_ast_node* rhs, const xpath_context& c, const xpath_stack& stack, const Comp& comp) + { + xpath_value_type lt = lhs->rettype(), rt = rhs->rettype(); + + if (lt != xpath_type_node_set && rt != xpath_type_node_set) + { + if (lt == xpath_type_boolean || rt == xpath_type_boolean) + return comp(lhs->eval_boolean(c, stack), rhs->eval_boolean(c, stack)); + else if (lt == xpath_type_number || rt == xpath_type_number) + return comp(lhs->eval_number(c, stack), rhs->eval_number(c, stack)); + else if (lt == xpath_type_string || rt == xpath_type_string) + { + xpath_allocator_capture cr(stack.result); + + xpath_string ls = lhs->eval_string(c, stack); + xpath_string rs = rhs->eval_string(c, stack); + + return comp(ls, rs); + } + } + else if (lt == xpath_type_node_set && rt == xpath_type_node_set) + { + xpath_allocator_capture cr(stack.result); + + xpath_node_set_raw ls = lhs->eval_node_set(c, stack); + xpath_node_set_raw rs = rhs->eval_node_set(c, stack); + + for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) + for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) + { + xpath_allocator_capture cri(stack.result); + + if (comp(string_value(*li, stack.result), string_value(*ri, stack.result))) + return true; + } + + return false; + } + else + { + if (lt == xpath_type_node_set) + { + swap(lhs, rhs); + swap(lt, rt); + } + + if (lt == xpath_type_boolean) + return comp(lhs->eval_boolean(c, stack), rhs->eval_boolean(c, stack)); + else if (lt == xpath_type_number) + { + xpath_allocator_capture cr(stack.result); + + double l = lhs->eval_number(c, stack); + xpath_node_set_raw rs = rhs->eval_node_set(c, stack); + + for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) + { + xpath_allocator_capture cri(stack.result); + + if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) + return true; + } + + return false; + } + else if (lt == xpath_type_string) + { + xpath_allocator_capture cr(stack.result); + + xpath_string l = lhs->eval_string(c, stack); + xpath_node_set_raw rs = rhs->eval_node_set(c, stack); + + for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) + { + xpath_allocator_capture cri(stack.result); + + if (comp(l, string_value(*ri, stack.result))) + return true; + } + + return false; + } + } + + assert(!"Wrong types"); + return false; + } + + template static bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, const xpath_context& c, const xpath_stack& stack, const Comp& comp) + { + xpath_value_type lt = lhs->rettype(), rt = rhs->rettype(); + + if (lt != xpath_type_node_set && rt != xpath_type_node_set) + return comp(lhs->eval_number(c, stack), rhs->eval_number(c, stack)); + else if (lt == xpath_type_node_set && rt == xpath_type_node_set) + { + xpath_allocator_capture cr(stack.result); + + xpath_node_set_raw ls = lhs->eval_node_set(c, stack); + xpath_node_set_raw rs = rhs->eval_node_set(c, stack); + + for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) + { + xpath_allocator_capture cri(stack.result); + + double l = convert_string_to_number(string_value(*li, stack.result).c_str()); + + for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) + { + xpath_allocator_capture crii(stack.result); + + if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) + return true; + } + } + + return false; + } + else if (lt != xpath_type_node_set && rt == xpath_type_node_set) + { + xpath_allocator_capture cr(stack.result); + + double l = lhs->eval_number(c, stack); + xpath_node_set_raw rs = rhs->eval_node_set(c, stack); + + for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) + { + xpath_allocator_capture cri(stack.result); + + if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) + return true; + } + + return false; + } + else if (lt == xpath_type_node_set && rt != xpath_type_node_set) + { + xpath_allocator_capture cr(stack.result); + + xpath_node_set_raw ls = lhs->eval_node_set(c, stack); + double r = rhs->eval_number(c, stack); + + for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) + { + xpath_allocator_capture cri(stack.result); + + if (comp(convert_string_to_number(string_value(*li, stack.result).c_str()), r)) + return true; + } + + return false; + } + else + { + assert(!"Wrong types"); + return false; + } + } + + void apply_predicate(xpath_node_set_raw& ns, size_t first, xpath_ast_node* expr, const xpath_stack& stack) + { + assert(ns.size() >= first); + + size_t i = 1; + size_t size = ns.size() - first; + + xpath_node* last = ns.begin() + first; + + // remove_if... or well, sort of + for (xpath_node* it = last; it != ns.end(); ++it, ++i) + { + xpath_context c(*it, i, size); + + if (expr->rettype() == xpath_type_number) + { + if (expr->eval_number(c, stack) == i) + *last++ = *it; + } + else if (expr->eval_boolean(c, stack)) + *last++ = *it; + } + + ns.truncate(last); + } + + void apply_predicates(xpath_node_set_raw& ns, size_t first, const xpath_stack& stack) + { + if (ns.size() == first) return; + + for (xpath_ast_node* pred = _right; pred; pred = pred->_next) + { + apply_predicate(ns, first, pred->_left, stack); + } + } + + void step_push(xpath_node_set_raw& ns, const xml_attribute& a, const xml_node& parent, xpath_allocator* alloc) + { + if (!a) return; + + const char_t* name = a.name(); + + // There are no attribute nodes corresponding to attributes that declare namespaces + // That is, "xmlns:..." or "xmlns" + if (starts_with(name, PUGIXML_TEXT("xmlns")) && (name[5] == 0 || name[5] == ':')) return; + + switch (_test) + { + case nodetest_name: + if (strequal(name, _data.nodetest)) ns.push_back(xpath_node(a, parent), alloc); + break; + + case nodetest_type_node: + case nodetest_all: + ns.push_back(xpath_node(a, parent), alloc); + break; + + case nodetest_all_in_namespace: + if (starts_with(name, _data.nodetest)) + ns.push_back(xpath_node(a, parent), alloc); + break; + + default: + ; + } + } + + void step_push(xpath_node_set_raw& ns, const xml_node& n, xpath_allocator* alloc) + { + if (!n) return; + + switch (_test) + { + case nodetest_name: + if (n.type() == node_element && strequal(n.name(), _data.nodetest)) ns.push_back(n, alloc); + break; + + case nodetest_type_node: + ns.push_back(n, alloc); + break; + + case nodetest_type_comment: + if (n.type() == node_comment) + ns.push_back(n, alloc); + break; + + case nodetest_type_text: + if (n.type() == node_pcdata || n.type() == node_cdata) + ns.push_back(n, alloc); + break; + + case nodetest_type_pi: + if (n.type() == node_pi) + ns.push_back(n, alloc); + break; + + case nodetest_pi: + if (n.type() == node_pi && strequal(n.name(), _data.nodetest)) + ns.push_back(n, alloc); + break; + + case nodetest_all: + if (n.type() == node_element) + ns.push_back(n, alloc); + break; + + case nodetest_all_in_namespace: + if (n.type() == node_element && starts_with(n.name(), _data.nodetest)) + ns.push_back(n, alloc); + break; + + default: + assert(!"Unknown axis"); + } + } + + template void step_fill(xpath_node_set_raw& ns, const xml_node& n, xpath_allocator* alloc, T) + { + const axis_t axis = T::axis; + + switch (axis) + { + case axis_attribute: + { + for (xml_attribute a = n.first_attribute(); a; a = a.next_attribute()) + step_push(ns, a, n, alloc); + + break; + } + + case axis_child: + { + for (xml_node c = n.first_child(); c; c = c.next_sibling()) + step_push(ns, c, alloc); + + break; + } + + case axis_descendant: + case axis_descendant_or_self: + { + if (axis == axis_descendant_or_self) + step_push(ns, n, alloc); + + xml_node cur = n.first_child(); + + while (cur && cur != n) + { + step_push(ns, cur, alloc); + + if (cur.first_child()) + cur = cur.first_child(); + else if (cur.next_sibling()) + cur = cur.next_sibling(); + else + { + while (!cur.next_sibling() && cur != n) + cur = cur.parent(); + + if (cur != n) cur = cur.next_sibling(); + } + } + + break; + } + + case axis_following_sibling: + { + for (xml_node c = n.next_sibling(); c; c = c.next_sibling()) + step_push(ns, c, alloc); + + break; + } + + case axis_preceding_sibling: + { + for (xml_node c = n.previous_sibling(); c; c = c.previous_sibling()) + step_push(ns, c, alloc); + + break; + } + + case axis_following: + { + xml_node cur = n; + + // exit from this node so that we don't include descendants + while (cur && !cur.next_sibling()) cur = cur.parent(); + cur = cur.next_sibling(); + + for (;;) + { + step_push(ns, cur, alloc); + + if (cur.first_child()) + cur = cur.first_child(); + else if (cur.next_sibling()) + cur = cur.next_sibling(); + else + { + while (cur && !cur.next_sibling()) cur = cur.parent(); + cur = cur.next_sibling(); + + if (!cur) break; + } + } + + break; + } + + case axis_preceding: + { + xml_node cur = n; + + while (cur && !cur.previous_sibling()) cur = cur.parent(); + cur = cur.previous_sibling(); + + for (;;) + { + if (cur.last_child()) + cur = cur.last_child(); + else + { + // leaf node, can't be ancestor + step_push(ns, cur, alloc); + + if (cur.previous_sibling()) + cur = cur.previous_sibling(); + else + { + do + { + cur = cur.parent(); + if (!cur) break; + + if (!node_is_ancestor(cur, n)) step_push(ns, cur, alloc); + } + while (!cur.previous_sibling()); + + cur = cur.previous_sibling(); + + if (!cur) break; + } + } + } + + break; + } + + case axis_ancestor: + case axis_ancestor_or_self: + { + if (axis == axis_ancestor_or_self) + step_push(ns, n, alloc); + + xml_node cur = n.parent(); + + while (cur) + { + step_push(ns, cur, alloc); + + cur = cur.parent(); + } + + break; + } + + case axis_self: + { + step_push(ns, n, alloc); + + break; + } + + case axis_parent: + { + if (n.parent()) step_push(ns, n.parent(), alloc); + + break; + } + + default: + assert(!"Unimplemented axis"); + } + } + + template void step_fill(xpath_node_set_raw& ns, const xml_attribute& a, const xml_node& p, xpath_allocator* alloc, T v) + { + const axis_t axis = T::axis; + + switch (axis) + { + case axis_ancestor: + case axis_ancestor_or_self: + { + if (axis == axis_ancestor_or_self && _test == nodetest_type_node) // reject attributes based on principal node type test + step_push(ns, a, p, alloc); + + xml_node cur = p; + + while (cur) + { + step_push(ns, cur, alloc); + + cur = cur.parent(); + } + + break; + } + + case axis_descendant_or_self: + case axis_self: + { + if (_test == nodetest_type_node) // reject attributes based on principal node type test + step_push(ns, a, p, alloc); + + break; + } + + case axis_following: + { + xml_node cur = p; + + for (;;) + { + if (cur.first_child()) + cur = cur.first_child(); + else if (cur.next_sibling()) + cur = cur.next_sibling(); + else + { + while (cur && !cur.next_sibling()) cur = cur.parent(); + cur = cur.next_sibling(); + + if (!cur) break; + } + + step_push(ns, cur, alloc); + } + + break; + } + + case axis_parent: + { + step_push(ns, p, alloc); + + break; + } + + case axis_preceding: + { + // preceding:: axis does not include attribute nodes and attribute ancestors (they are the same as parent's ancestors), so we can reuse node preceding + step_fill(ns, p, alloc, v); + break; + } + + default: + assert(!"Unimplemented axis"); + } + } + + template xpath_node_set_raw step_do(const xpath_context& c, const xpath_stack& stack, T v) + { + const axis_t axis = T::axis; + bool attributes = (axis == axis_ancestor || axis == axis_ancestor_or_self || axis == axis_descendant_or_self || axis == axis_following || axis == axis_parent || axis == axis_preceding || axis == axis_self); + + xpath_node_set_raw ns; + ns.set_type((axis == axis_ancestor || axis == axis_ancestor_or_self || axis == axis_preceding || axis == axis_preceding_sibling) ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_sorted); + + if (_left) + { + xpath_node_set_raw s = _left->eval_node_set(c, stack); + + // self axis preserves the original order + if (axis == axis_self) ns.set_type(s.type()); + + for (const xpath_node* it = s.begin(); it != s.end(); ++it) + { + size_t size = ns.size(); + + // in general, all axes generate elements in a particular order, but there is no order guarantee if axis is applied to two nodes + if (axis != axis_self && size != 0) ns.set_type(xpath_node_set::type_unsorted); + + if (it->node()) + step_fill(ns, it->node(), stack.result, v); + else if (attributes) + step_fill(ns, it->attribute(), it->parent(), stack.result, v); + + apply_predicates(ns, size, stack); + } + } + else + { + if (c.n.node()) + step_fill(ns, c.n.node(), stack.result, v); + else if (attributes) + step_fill(ns, c.n.attribute(), c.n.parent(), stack.result, v); + + apply_predicates(ns, 0, stack); + } + + // child, attribute and self axes always generate unique set of nodes + // for other axis, if the set stayed sorted, it stayed unique because the traversal algorithms do not visit the same node twice + if (axis != axis_child && axis != axis_attribute && axis != axis_self && ns.type() == xpath_node_set::type_unsorted) + ns.remove_duplicates(); + + return ns; + } + + public: + xpath_ast_node(ast_type_t type, xpath_value_type rettype_, const char_t* value): + _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(0), _right(0), _next(0) + { + assert(type == ast_string_constant); + _data.string = value; + } + + xpath_ast_node(ast_type_t type, xpath_value_type rettype_, double value): + _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(0), _right(0), _next(0) + { + assert(type == ast_number_constant); + _data.number = value; + } + + xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_variable* value): + _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(0), _right(0), _next(0) + { + assert(type == ast_variable); + _data.variable = value; + } + + xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_ast_node* left = 0, xpath_ast_node* right = 0): + _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(left), _right(right), _next(0) + { + } + + xpath_ast_node(ast_type_t type, xpath_ast_node* left, axis_t axis, nodetest_t test, const char_t* contents): + _type(static_cast(type)), _rettype(xpath_type_node_set), _axis(static_cast(axis)), _test(static_cast(test)), _left(left), _right(0), _next(0) + { + _data.nodetest = contents; + } + + void set_next(xpath_ast_node* value) + { + _next = value; + } + + void set_right(xpath_ast_node* value) + { + _right = value; + } + + bool eval_boolean(const xpath_context& c, const xpath_stack& stack) + { + switch (_type) + { + case ast_op_or: + return _left->eval_boolean(c, stack) || _right->eval_boolean(c, stack); + + case ast_op_and: + return _left->eval_boolean(c, stack) && _right->eval_boolean(c, stack); + + case ast_op_equal: + return compare_eq(_left, _right, c, stack, equal_to()); + + case ast_op_not_equal: + return compare_eq(_left, _right, c, stack, not_equal_to()); + + case ast_op_less: + return compare_rel(_left, _right, c, stack, less()); + + case ast_op_greater: + return compare_rel(_right, _left, c, stack, less()); + + case ast_op_less_or_equal: + return compare_rel(_left, _right, c, stack, less_equal()); + + case ast_op_greater_or_equal: + return compare_rel(_right, _left, c, stack, less_equal()); + + case ast_func_starts_with: + { + xpath_allocator_capture cr(stack.result); + + xpath_string lr = _left->eval_string(c, stack); + xpath_string rr = _right->eval_string(c, stack); + + return starts_with(lr.c_str(), rr.c_str()); + } + + case ast_func_contains: + { + xpath_allocator_capture cr(stack.result); + + xpath_string lr = _left->eval_string(c, stack); + xpath_string rr = _right->eval_string(c, stack); + + return find_substring(lr.c_str(), rr.c_str()) != 0; + } + + case ast_func_boolean: + return _left->eval_boolean(c, stack); + + case ast_func_not: + return !_left->eval_boolean(c, stack); + + case ast_func_true: + return true; + + case ast_func_false: + return false; + + case ast_func_lang: + { + if (c.n.attribute()) return false; + + xpath_allocator_capture cr(stack.result); + + xpath_string lang = _left->eval_string(c, stack); + + for (xml_node n = c.n.node(); n; n = n.parent()) + { + xml_attribute a = n.attribute(PUGIXML_TEXT("xml:lang")); + + if (a) + { + const char_t* value = a.value(); + + // strnicmp / strncasecmp is not portable + for (const char_t* lit = lang.c_str(); *lit; ++lit) + { + if (tolower_ascii(*lit) != tolower_ascii(*value)) return false; + ++value; + } + + return *value == 0 || *value == '-'; + } + } + + return false; + } + + case ast_variable: + { + assert(_rettype == _data.variable->type()); + + if (_rettype == xpath_type_boolean) + return _data.variable->get_boolean(); + + // fallthrough to type conversion + } + + default: + { + switch (_rettype) + { + case xpath_type_number: + return convert_number_to_boolean(eval_number(c, stack)); + + case xpath_type_string: + { + xpath_allocator_capture cr(stack.result); + + return !eval_string(c, stack).empty(); + } + + case xpath_type_node_set: + { + xpath_allocator_capture cr(stack.result); + + return !eval_node_set(c, stack).empty(); + } + + default: + assert(!"Wrong expression for return type boolean"); + return false; + } + } + } + } + + double eval_number(const xpath_context& c, const xpath_stack& stack) + { + switch (_type) + { + case ast_op_add: + return _left->eval_number(c, stack) + _right->eval_number(c, stack); + + case ast_op_subtract: + return _left->eval_number(c, stack) - _right->eval_number(c, stack); + + case ast_op_multiply: + return _left->eval_number(c, stack) * _right->eval_number(c, stack); + + case ast_op_divide: + return _left->eval_number(c, stack) / _right->eval_number(c, stack); + + case ast_op_mod: + return fmod(_left->eval_number(c, stack), _right->eval_number(c, stack)); + + case ast_op_negate: + return -_left->eval_number(c, stack); + + case ast_number_constant: + return _data.number; + + case ast_func_last: + return static_cast(c.size); + + case ast_func_position: + return static_cast(c.position); + + case ast_func_count: + { + xpath_allocator_capture cr(stack.result); + + return static_cast(_left->eval_node_set(c, stack).size()); + } + + case ast_func_string_length_0: + { + xpath_allocator_capture cr(stack.result); + + return static_cast(string_value(c.n, stack.result).length()); + } + + case ast_func_string_length_1: + { + xpath_allocator_capture cr(stack.result); + + return static_cast(_left->eval_string(c, stack).length()); + } + + case ast_func_number_0: + { + xpath_allocator_capture cr(stack.result); + + return convert_string_to_number(string_value(c.n, stack.result).c_str()); + } + + case ast_func_number_1: + return _left->eval_number(c, stack); + + case ast_func_sum: + { + xpath_allocator_capture cr(stack.result); + + double r = 0; + + xpath_node_set_raw ns = _left->eval_node_set(c, stack); + + for (const xpath_node* it = ns.begin(); it != ns.end(); ++it) + { + xpath_allocator_capture cri(stack.result); + + r += convert_string_to_number(string_value(*it, stack.result).c_str()); + } + + return r; + } + + case ast_func_floor: + { + double r = _left->eval_number(c, stack); + + return r == r ? floor(r) : r; + } + + case ast_func_ceiling: + { + double r = _left->eval_number(c, stack); + + return r == r ? ceil(r) : r; + } + + case ast_func_round: + return round_nearest_nzero(_left->eval_number(c, stack)); + + case ast_variable: + { + assert(_rettype == _data.variable->type()); + + if (_rettype == xpath_type_number) + return _data.variable->get_number(); + + // fallthrough to type conversion + } + + default: + { + switch (_rettype) + { + case xpath_type_boolean: + return eval_boolean(c, stack) ? 1 : 0; + + case xpath_type_string: + { + xpath_allocator_capture cr(stack.result); + + return convert_string_to_number(eval_string(c, stack).c_str()); + } + + case xpath_type_node_set: + { + xpath_allocator_capture cr(stack.result); + + return convert_string_to_number(eval_string(c, stack).c_str()); + } + + default: + assert(!"Wrong expression for return type number"); + return 0; + } + + } + } + } + + xpath_string eval_string_concat(const xpath_context& c, const xpath_stack& stack) + { + assert(_type == ast_func_concat); + + xpath_allocator_capture ct(stack.temp); + + // count the string number + size_t count = 1; + for (xpath_ast_node* nc = _right; nc; nc = nc->_next) count++; + + // gather all strings + xpath_string static_buffer[4]; + xpath_string* buffer = static_buffer; + + // allocate on-heap for large concats + if (count > sizeof(static_buffer) / sizeof(static_buffer[0])) + { + buffer = static_cast(stack.temp->allocate(count * sizeof(xpath_string))); + assert(buffer); + } + + // evaluate all strings to temporary stack + xpath_stack swapped_stack = {stack.temp, stack.result}; + + buffer[0] = _left->eval_string(c, swapped_stack); + + size_t pos = 1; + for (xpath_ast_node* n = _right; n; n = n->_next, ++pos) buffer[pos] = n->eval_string(c, swapped_stack); + assert(pos == count); + + // get total length + size_t length = 0; + for (size_t i = 0; i < count; ++i) length += buffer[i].length(); + + // create final string + char_t* result = static_cast(stack.result->allocate((length + 1) * sizeof(char_t))); + assert(result); + + char_t* ri = result; + + for (size_t j = 0; j < count; ++j) + for (const char_t* bi = buffer[j].c_str(); *bi; ++bi) + *ri++ = *bi; + + *ri = 0; + + return xpath_string(result, true); + } + + xpath_string eval_string(const xpath_context& c, const xpath_stack& stack) + { + switch (_type) + { + case ast_string_constant: + return xpath_string_const(_data.string); + + case ast_func_local_name_0: + { + xpath_node na = c.n; + + return xpath_string_const(local_name(na)); + } + + case ast_func_local_name_1: + { + xpath_allocator_capture cr(stack.result); + + xpath_node_set_raw ns = _left->eval_node_set(c, stack); + xpath_node na = ns.first(); + + return xpath_string_const(local_name(na)); + } + + case ast_func_name_0: + { + xpath_node na = c.n; + + return xpath_string_const(qualified_name(na)); + } + + case ast_func_name_1: + { + xpath_allocator_capture cr(stack.result); + + xpath_node_set_raw ns = _left->eval_node_set(c, stack); + xpath_node na = ns.first(); + + return xpath_string_const(qualified_name(na)); + } + + case ast_func_namespace_uri_0: + { + xpath_node na = c.n; + + return xpath_string_const(namespace_uri(na)); + } + + case ast_func_namespace_uri_1: + { + xpath_allocator_capture cr(stack.result); + + xpath_node_set_raw ns = _left->eval_node_set(c, stack); + xpath_node na = ns.first(); + + return xpath_string_const(namespace_uri(na)); + } + + case ast_func_string_0: + return string_value(c.n, stack.result); + + case ast_func_string_1: + return _left->eval_string(c, stack); + + case ast_func_concat: + return eval_string_concat(c, stack); + + case ast_func_substring_before: + { + xpath_allocator_capture cr(stack.temp); + + xpath_stack swapped_stack = {stack.temp, stack.result}; + + xpath_string s = _left->eval_string(c, swapped_stack); + xpath_string p = _right->eval_string(c, swapped_stack); + + const char_t* pos = find_substring(s.c_str(), p.c_str()); + + return pos ? xpath_string(s.c_str(), pos, stack.result) : xpath_string(); + } + + case ast_func_substring_after: + { + xpath_allocator_capture cr(stack.temp); + + xpath_stack swapped_stack = {stack.temp, stack.result}; + + xpath_string s = _left->eval_string(c, swapped_stack); + xpath_string p = _right->eval_string(c, swapped_stack); + + const char_t* pos = find_substring(s.c_str(), p.c_str()); + if (!pos) return xpath_string(); + + const char_t* result = pos + p.length(); + + return s.uses_heap() ? xpath_string(result, stack.result) : xpath_string_const(result); + } + + case ast_func_substring_2: + { + xpath_allocator_capture cr(stack.temp); + + xpath_stack swapped_stack = {stack.temp, stack.result}; + + xpath_string s = _left->eval_string(c, swapped_stack); + size_t s_length = s.length(); + + double first = round_nearest(_right->eval_number(c, stack)); + + if (is_nan(first)) return xpath_string(); // NaN + else if (first >= s_length + 1) return xpath_string(); + + size_t pos = first < 1 ? 1 : static_cast(first); + assert(1 <= pos && pos <= s_length + 1); + + const char_t* rbegin = s.c_str() + (pos - 1); + + return s.uses_heap() ? xpath_string(rbegin, stack.result) : xpath_string_const(rbegin); + } + + case ast_func_substring_3: + { + xpath_allocator_capture cr(stack.temp); + + xpath_stack swapped_stack = {stack.temp, stack.result}; + + xpath_string s = _left->eval_string(c, swapped_stack); + size_t s_length = s.length(); + + double first = round_nearest(_right->eval_number(c, stack)); + double last = first + round_nearest(_right->_next->eval_number(c, stack)); + + if (is_nan(first) || is_nan(last)) return xpath_string(); + else if (first >= s_length + 1) return xpath_string(); + else if (first >= last) return xpath_string(); + else if (last < 1) return xpath_string(); + + size_t pos = first < 1 ? 1 : static_cast(first); + size_t end = last >= s_length + 1 ? s_length + 1 : static_cast(last); + + assert(1 <= pos && pos <= end && end <= s_length + 1); + const char_t* rbegin = s.c_str() + (pos - 1); + const char_t* rend = s.c_str() + (end - 1); + + return (end == s_length + 1 && !s.uses_heap()) ? xpath_string_const(rbegin) : xpath_string(rbegin, rend, stack.result); + } + + case ast_func_normalize_space_0: + { + xpath_string s = string_value(c.n, stack.result); + + normalize_space(s.data(stack.result)); + + return s; + } + + case ast_func_normalize_space_1: + { + xpath_string s = _left->eval_string(c, stack); + + normalize_space(s.data(stack.result)); + + return s; + } + + case ast_func_translate: + { + xpath_allocator_capture cr(stack.temp); + + xpath_stack swapped_stack = {stack.temp, stack.result}; + + xpath_string s = _left->eval_string(c, stack); + xpath_string from = _right->eval_string(c, swapped_stack); + xpath_string to = _right->_next->eval_string(c, swapped_stack); + + translate(s.data(stack.result), from.c_str(), to.c_str()); + + return s; + } + + case ast_variable: + { + assert(_rettype == _data.variable->type()); + + if (_rettype == xpath_type_string) + return xpath_string_const(_data.variable->get_string()); + + // fallthrough to type conversion + } + + default: + { + switch (_rettype) + { + case xpath_type_boolean: + return xpath_string_const(eval_boolean(c, stack) ? PUGIXML_TEXT("true") : PUGIXML_TEXT("false")); + + case xpath_type_number: + return convert_number_to_string(eval_number(c, stack), stack.result); + + case xpath_type_node_set: + { + xpath_allocator_capture cr(stack.temp); + + xpath_stack swapped_stack = {stack.temp, stack.result}; + + xpath_node_set_raw ns = eval_node_set(c, swapped_stack); + return ns.empty() ? xpath_string() : string_value(ns.first(), stack.result); + } + + default: + assert(!"Wrong expression for return type string"); + return xpath_string(); + } + } + } + } + + xpath_node_set_raw eval_node_set(const xpath_context& c, const xpath_stack& stack) + { + switch (_type) + { + case ast_op_union: + { + xpath_allocator_capture cr(stack.temp); + + xpath_stack swapped_stack = {stack.temp, stack.result}; + + xpath_node_set_raw ls = _left->eval_node_set(c, swapped_stack); + xpath_node_set_raw rs = _right->eval_node_set(c, stack); + + // we can optimize merging two sorted sets, but this is a very rare operation, so don't bother + rs.set_type(xpath_node_set::type_unsorted); + + rs.append(ls.begin(), ls.end(), stack.result); + rs.remove_duplicates(); + + return rs; + } + + case ast_filter: + case ast_filter_posinv: + { + xpath_node_set_raw set = _left->eval_node_set(c, stack); + + // either expression is a number or it contains position() call; sort by document order + if (_type == ast_filter) set.sort_do(); + + apply_predicate(set, 0, _right, stack); + + return set; + } + + case ast_func_id: + return xpath_node_set_raw(); + + case ast_step: + { + switch (_axis) + { + case axis_ancestor: + return step_do(c, stack, axis_to_type()); + + case axis_ancestor_or_self: + return step_do(c, stack, axis_to_type()); + + case axis_attribute: + return step_do(c, stack, axis_to_type()); + + case axis_child: + return step_do(c, stack, axis_to_type()); + + case axis_descendant: + return step_do(c, stack, axis_to_type()); + + case axis_descendant_or_self: + return step_do(c, stack, axis_to_type()); + + case axis_following: + return step_do(c, stack, axis_to_type()); + + case axis_following_sibling: + return step_do(c, stack, axis_to_type()); + + case axis_namespace: + // namespaced axis is not supported + return xpath_node_set_raw(); + + case axis_parent: + return step_do(c, stack, axis_to_type()); + + case axis_preceding: + return step_do(c, stack, axis_to_type()); + + case axis_preceding_sibling: + return step_do(c, stack, axis_to_type()); + + case axis_self: + return step_do(c, stack, axis_to_type()); + + default: + assert(!"Unknown axis"); + return xpath_node_set_raw(); + } + } + + case ast_step_root: + { + assert(!_right); // root step can't have any predicates + + xpath_node_set_raw ns; + + ns.set_type(xpath_node_set::type_sorted); + + if (c.n.node()) ns.push_back(c.n.node().root(), stack.result); + else if (c.n.attribute()) ns.push_back(c.n.parent().root(), stack.result); + + return ns; + } + + case ast_variable: + { + assert(_rettype == _data.variable->type()); + + if (_rettype == xpath_type_node_set) + { + const xpath_node_set& s = _data.variable->get_node_set(); + + xpath_node_set_raw ns; + + ns.set_type(s.type()); + ns.append(s.begin(), s.end(), stack.result); + + return ns; + } + + // fallthrough to type conversion + } + + default: + assert(!"Wrong expression for return type node set"); + return xpath_node_set_raw(); + } + } + + bool is_posinv() + { + switch (_type) + { + case ast_func_position: + return false; + + case ast_string_constant: + case ast_number_constant: + case ast_variable: + return true; + + case ast_step: + case ast_step_root: + return true; + + case ast_predicate: + case ast_filter: + case ast_filter_posinv: + return true; + + default: + if (_left && !_left->is_posinv()) return false; + + for (xpath_ast_node* n = _right; n; n = n->_next) + if (!n->is_posinv()) return false; + + return true; + } + } + + xpath_value_type rettype() const + { + return static_cast(_rettype); + } + }; + + struct xpath_parser + { + xpath_allocator* _alloc; + xpath_lexer _lexer; + + const char_t* _query; + xpath_variable_set* _variables; + + xpath_parse_result* _result; + + char_t _scratch[32]; + + #ifdef PUGIXML_NO_EXCEPTIONS + jmp_buf _error_handler; + #endif + + void throw_error(const char* message) + { + _result->error = message; + _result->offset = _lexer.current_pos() - _query; + + #ifdef PUGIXML_NO_EXCEPTIONS + longjmp(_error_handler, 1); + #else + throw xpath_exception(*_result); + #endif + } + + void throw_error_oom() + { + #ifdef PUGIXML_NO_EXCEPTIONS + throw_error("Out of memory"); + #else + throw std::bad_alloc(); + #endif + } + + void* alloc_node() + { + void* result = _alloc->allocate_nothrow(sizeof(xpath_ast_node)); + + if (!result) throw_error_oom(); + + return result; + } + + const char_t* alloc_string(const xpath_lexer_string& value) + { + if (value.begin) + { + size_t length = static_cast(value.end - value.begin); + + char_t* c = static_cast(_alloc->allocate_nothrow((length + 1) * sizeof(char_t))); + if (!c) throw_error_oom(); + assert(c); // workaround for clang static analysis + + memcpy(c, value.begin, length * sizeof(char_t)); + c[length] = 0; + + return c; + } + else return 0; + } + + xpath_ast_node* parse_function_helper(ast_type_t type0, ast_type_t type1, size_t argc, xpath_ast_node* args[2]) + { + assert(argc <= 1); + + if (argc == 1 && args[0]->rettype() != xpath_type_node_set) throw_error("Function has to be applied to node set"); + + return new (alloc_node()) xpath_ast_node(argc == 0 ? type0 : type1, xpath_type_string, args[0]); + } + + xpath_ast_node* parse_function(const xpath_lexer_string& name, size_t argc, xpath_ast_node* args[2]) + { + switch (name.begin[0]) + { + case 'b': + if (name == PUGIXML_TEXT("boolean") && argc == 1) + return new (alloc_node()) xpath_ast_node(ast_func_boolean, xpath_type_boolean, args[0]); + + break; + + case 'c': + if (name == PUGIXML_TEXT("count") && argc == 1) + { + if (args[0]->rettype() != xpath_type_node_set) throw_error("Function has to be applied to node set"); + return new (alloc_node()) xpath_ast_node(ast_func_count, xpath_type_number, args[0]); + } + else if (name == PUGIXML_TEXT("contains") && argc == 2) + return new (alloc_node()) xpath_ast_node(ast_func_contains, xpath_type_boolean, args[0], args[1]); + else if (name == PUGIXML_TEXT("concat") && argc >= 2) + return new (alloc_node()) xpath_ast_node(ast_func_concat, xpath_type_string, args[0], args[1]); + else if (name == PUGIXML_TEXT("ceiling") && argc == 1) + return new (alloc_node()) xpath_ast_node(ast_func_ceiling, xpath_type_number, args[0]); + + break; + + case 'f': + if (name == PUGIXML_TEXT("false") && argc == 0) + return new (alloc_node()) xpath_ast_node(ast_func_false, xpath_type_boolean); + else if (name == PUGIXML_TEXT("floor") && argc == 1) + return new (alloc_node()) xpath_ast_node(ast_func_floor, xpath_type_number, args[0]); + + break; + + case 'i': + if (name == PUGIXML_TEXT("id") && argc == 1) + return new (alloc_node()) xpath_ast_node(ast_func_id, xpath_type_node_set, args[0]); + + break; + + case 'l': + if (name == PUGIXML_TEXT("last") && argc == 0) + return new (alloc_node()) xpath_ast_node(ast_func_last, xpath_type_number); + else if (name == PUGIXML_TEXT("lang") && argc == 1) + return new (alloc_node()) xpath_ast_node(ast_func_lang, xpath_type_boolean, args[0]); + else if (name == PUGIXML_TEXT("local-name") && argc <= 1) + return parse_function_helper(ast_func_local_name_0, ast_func_local_name_1, argc, args); + + break; + + case 'n': + if (name == PUGIXML_TEXT("name") && argc <= 1) + return parse_function_helper(ast_func_name_0, ast_func_name_1, argc, args); + else if (name == PUGIXML_TEXT("namespace-uri") && argc <= 1) + return parse_function_helper(ast_func_namespace_uri_0, ast_func_namespace_uri_1, argc, args); + else if (name == PUGIXML_TEXT("normalize-space") && argc <= 1) + return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_normalize_space_0 : ast_func_normalize_space_1, xpath_type_string, args[0], args[1]); + else if (name == PUGIXML_TEXT("not") && argc == 1) + return new (alloc_node()) xpath_ast_node(ast_func_not, xpath_type_boolean, args[0]); + else if (name == PUGIXML_TEXT("number") && argc <= 1) + return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_number_0 : ast_func_number_1, xpath_type_number, args[0]); + + break; + + case 'p': + if (name == PUGIXML_TEXT("position") && argc == 0) + return new (alloc_node()) xpath_ast_node(ast_func_position, xpath_type_number); + + break; + + case 'r': + if (name == PUGIXML_TEXT("round") && argc == 1) + return new (alloc_node()) xpath_ast_node(ast_func_round, xpath_type_number, args[0]); + + break; + + case 's': + if (name == PUGIXML_TEXT("string") && argc <= 1) + return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_string_0 : ast_func_string_1, xpath_type_string, args[0]); + else if (name == PUGIXML_TEXT("string-length") && argc <= 1) + return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_string_length_0 : ast_func_string_length_1, xpath_type_number, args[0]); + else if (name == PUGIXML_TEXT("starts-with") && argc == 2) + return new (alloc_node()) xpath_ast_node(ast_func_starts_with, xpath_type_boolean, args[0], args[1]); + else if (name == PUGIXML_TEXT("substring-before") && argc == 2) + return new (alloc_node()) xpath_ast_node(ast_func_substring_before, xpath_type_string, args[0], args[1]); + else if (name == PUGIXML_TEXT("substring-after") && argc == 2) + return new (alloc_node()) xpath_ast_node(ast_func_substring_after, xpath_type_string, args[0], args[1]); + else if (name == PUGIXML_TEXT("substring") && (argc == 2 || argc == 3)) + return new (alloc_node()) xpath_ast_node(argc == 2 ? ast_func_substring_2 : ast_func_substring_3, xpath_type_string, args[0], args[1]); + else if (name == PUGIXML_TEXT("sum") && argc == 1) + { + if (args[0]->rettype() != xpath_type_node_set) throw_error("Function has to be applied to node set"); + return new (alloc_node()) xpath_ast_node(ast_func_sum, xpath_type_number, args[0]); + } + + break; + + case 't': + if (name == PUGIXML_TEXT("translate") && argc == 3) + return new (alloc_node()) xpath_ast_node(ast_func_translate, xpath_type_string, args[0], args[1]); + else if (name == PUGIXML_TEXT("true") && argc == 0) + return new (alloc_node()) xpath_ast_node(ast_func_true, xpath_type_boolean); + + break; + + default: + break; + } + + throw_error("Unrecognized function or wrong parameter count"); + + return 0; + } + + axis_t parse_axis_name(const xpath_lexer_string& name, bool& specified) + { + specified = true; + + switch (name.begin[0]) + { + case 'a': + if (name == PUGIXML_TEXT("ancestor")) + return axis_ancestor; + else if (name == PUGIXML_TEXT("ancestor-or-self")) + return axis_ancestor_or_self; + else if (name == PUGIXML_TEXT("attribute")) + return axis_attribute; + + break; + + case 'c': + if (name == PUGIXML_TEXT("child")) + return axis_child; + + break; + + case 'd': + if (name == PUGIXML_TEXT("descendant")) + return axis_descendant; + else if (name == PUGIXML_TEXT("descendant-or-self")) + return axis_descendant_or_self; + + break; + + case 'f': + if (name == PUGIXML_TEXT("following")) + return axis_following; + else if (name == PUGIXML_TEXT("following-sibling")) + return axis_following_sibling; + + break; + + case 'n': + if (name == PUGIXML_TEXT("namespace")) + return axis_namespace; + + break; + + case 'p': + if (name == PUGIXML_TEXT("parent")) + return axis_parent; + else if (name == PUGIXML_TEXT("preceding")) + return axis_preceding; + else if (name == PUGIXML_TEXT("preceding-sibling")) + return axis_preceding_sibling; + + break; + + case 's': + if (name == PUGIXML_TEXT("self")) + return axis_self; + + break; + + default: + break; + } + + specified = false; + return axis_child; + } + + nodetest_t parse_node_test_type(const xpath_lexer_string& name) + { + switch (name.begin[0]) + { + case 'c': + if (name == PUGIXML_TEXT("comment")) + return nodetest_type_comment; + + break; + + case 'n': + if (name == PUGIXML_TEXT("node")) + return nodetest_type_node; + + break; + + case 'p': + if (name == PUGIXML_TEXT("processing-instruction")) + return nodetest_type_pi; + + break; + + case 't': + if (name == PUGIXML_TEXT("text")) + return nodetest_type_text; + + break; + + default: + break; + } + + return nodetest_none; + } + + // PrimaryExpr ::= VariableReference | '(' Expr ')' | Literal | Number | FunctionCall + xpath_ast_node* parse_primary_expression() + { + switch (_lexer.current()) + { + case lex_var_ref: + { + xpath_lexer_string name = _lexer.contents(); + + if (!_variables) + throw_error("Unknown variable: variable set is not provided"); + + xpath_variable* var = get_variable_scratch(_scratch, _variables, name.begin, name.end); + + if (!var) + throw_error("Unknown variable: variable set does not contain the given name"); + + _lexer.next(); + + return new (alloc_node()) xpath_ast_node(ast_variable, var->type(), var); + } + + case lex_open_brace: + { + _lexer.next(); + + xpath_ast_node* n = parse_expression(); + + if (_lexer.current() != lex_close_brace) + throw_error("Unmatched braces"); + + _lexer.next(); + + return n; + } + + case lex_quoted_string: + { + const char_t* value = alloc_string(_lexer.contents()); + + xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_string_constant, xpath_type_string, value); + _lexer.next(); + + return n; + } + + case lex_number: + { + double value = 0; + + if (!convert_string_to_number_scratch(_scratch, _lexer.contents().begin, _lexer.contents().end, &value)) + throw_error_oom(); + + xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_number_constant, xpath_type_number, value); + _lexer.next(); + + return n; + } + + case lex_string: + { + xpath_ast_node* args[2] = {0}; + size_t argc = 0; + + xpath_lexer_string function = _lexer.contents(); + _lexer.next(); + + xpath_ast_node* last_arg = 0; + + if (_lexer.current() != lex_open_brace) + throw_error("Unrecognized function call"); + _lexer.next(); + + if (_lexer.current() != lex_close_brace) + args[argc++] = parse_expression(); + + while (_lexer.current() != lex_close_brace) + { + if (_lexer.current() != lex_comma) + throw_error("No comma between function arguments"); + _lexer.next(); + + xpath_ast_node* n = parse_expression(); + + if (argc < 2) args[argc] = n; + else last_arg->set_next(n); + + argc++; + last_arg = n; + } + + _lexer.next(); + + return parse_function(function, argc, args); + } + + default: + throw_error("Unrecognizable primary expression"); + + return 0; + } + } + + // FilterExpr ::= PrimaryExpr | FilterExpr Predicate + // Predicate ::= '[' PredicateExpr ']' + // PredicateExpr ::= Expr + xpath_ast_node* parse_filter_expression() + { + xpath_ast_node* n = parse_primary_expression(); + + while (_lexer.current() == lex_open_square_brace) + { + _lexer.next(); + + xpath_ast_node* expr = parse_expression(); + + if (n->rettype() != xpath_type_node_set) throw_error("Predicate has to be applied to node set"); + + bool posinv = expr->rettype() != xpath_type_number && expr->is_posinv(); + + n = new (alloc_node()) xpath_ast_node(posinv ? ast_filter_posinv : ast_filter, xpath_type_node_set, n, expr); + + if (_lexer.current() != lex_close_square_brace) + throw_error("Unmatched square brace"); + + _lexer.next(); + } + + return n; + } + + // Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep + // AxisSpecifier ::= AxisName '::' | '@'? + // NodeTest ::= NameTest | NodeType '(' ')' | 'processing-instruction' '(' Literal ')' + // NameTest ::= '*' | NCName ':' '*' | QName + // AbbreviatedStep ::= '.' | '..' + xpath_ast_node* parse_step(xpath_ast_node* set) + { + if (set && set->rettype() != xpath_type_node_set) + throw_error("Step has to be applied to node set"); + + bool axis_specified = false; + axis_t axis = axis_child; // implied child axis + + if (_lexer.current() == lex_axis_attribute) + { + axis = axis_attribute; + axis_specified = true; + + _lexer.next(); + } + else if (_lexer.current() == lex_dot) + { + _lexer.next(); + + return new (alloc_node()) xpath_ast_node(ast_step, set, axis_self, nodetest_type_node, 0); + } + else if (_lexer.current() == lex_double_dot) + { + _lexer.next(); + + return new (alloc_node()) xpath_ast_node(ast_step, set, axis_parent, nodetest_type_node, 0); + } + + nodetest_t nt_type = nodetest_none; + xpath_lexer_string nt_name; + + if (_lexer.current() == lex_string) + { + // node name test + nt_name = _lexer.contents(); + _lexer.next(); + + // was it an axis name? + if (_lexer.current() == lex_double_colon) + { + // parse axis name + if (axis_specified) throw_error("Two axis specifiers in one step"); + + axis = parse_axis_name(nt_name, axis_specified); + + if (!axis_specified) throw_error("Unknown axis"); + + // read actual node test + _lexer.next(); + + if (_lexer.current() == lex_multiply) + { + nt_type = nodetest_all; + nt_name = xpath_lexer_string(); + _lexer.next(); + } + else if (_lexer.current() == lex_string) + { + nt_name = _lexer.contents(); + _lexer.next(); + } + else throw_error("Unrecognized node test"); + } + + if (nt_type == nodetest_none) + { + // node type test or processing-instruction + if (_lexer.current() == lex_open_brace) + { + _lexer.next(); + + if (_lexer.current() == lex_close_brace) + { + _lexer.next(); + + nt_type = parse_node_test_type(nt_name); + + if (nt_type == nodetest_none) throw_error("Unrecognized node type"); + + nt_name = xpath_lexer_string(); + } + else if (nt_name == PUGIXML_TEXT("processing-instruction")) + { + if (_lexer.current() != lex_quoted_string) + throw_error("Only literals are allowed as arguments to processing-instruction()"); + + nt_type = nodetest_pi; + nt_name = _lexer.contents(); + _lexer.next(); + + if (_lexer.current() != lex_close_brace) + throw_error("Unmatched brace near processing-instruction()"); + _lexer.next(); + } + else + throw_error("Unmatched brace near node type test"); + + } + // QName or NCName:* + else + { + if (nt_name.end - nt_name.begin > 2 && nt_name.end[-2] == ':' && nt_name.end[-1] == '*') // NCName:* + { + nt_name.end--; // erase * + + nt_type = nodetest_all_in_namespace; + } + else nt_type = nodetest_name; + } + } + } + else if (_lexer.current() == lex_multiply) + { + nt_type = nodetest_all; + _lexer.next(); + } + else throw_error("Unrecognized node test"); + + xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_step, set, axis, nt_type, alloc_string(nt_name)); + + xpath_ast_node* last = 0; + + while (_lexer.current() == lex_open_square_brace) + { + _lexer.next(); + + xpath_ast_node* expr = parse_expression(); + + xpath_ast_node* pred = new (alloc_node()) xpath_ast_node(ast_predicate, xpath_type_node_set, expr); + + if (_lexer.current() != lex_close_square_brace) + throw_error("Unmatched square brace"); + _lexer.next(); + + if (last) last->set_next(pred); + else n->set_right(pred); + + last = pred; + } + + return n; + } + + // RelativeLocationPath ::= Step | RelativeLocationPath '/' Step | RelativeLocationPath '//' Step + xpath_ast_node* parse_relative_location_path(xpath_ast_node* set) + { + xpath_ast_node* n = parse_step(set); + + while (_lexer.current() == lex_slash || _lexer.current() == lex_double_slash) + { + lexeme_t l = _lexer.current(); + _lexer.next(); + + if (l == lex_double_slash) + n = new (alloc_node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0); + + n = parse_step(n); + } + + return n; + } + + // LocationPath ::= RelativeLocationPath | AbsoluteLocationPath + // AbsoluteLocationPath ::= '/' RelativeLocationPath? | '//' RelativeLocationPath + xpath_ast_node* parse_location_path() + { + if (_lexer.current() == lex_slash) + { + _lexer.next(); + + xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_step_root, xpath_type_node_set); + + // relative location path can start from axis_attribute, dot, double_dot, multiply and string lexemes; any other lexeme means standalone root path + lexeme_t l = _lexer.current(); + + if (l == lex_string || l == lex_axis_attribute || l == lex_dot || l == lex_double_dot || l == lex_multiply) + return parse_relative_location_path(n); + else + return n; + } + else if (_lexer.current() == lex_double_slash) + { + _lexer.next(); + + xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_step_root, xpath_type_node_set); + n = new (alloc_node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0); + + return parse_relative_location_path(n); + } + + // else clause moved outside of if because of bogus warning 'control may reach end of non-void function being inlined' in gcc 4.0.1 + return parse_relative_location_path(0); + } + + // PathExpr ::= LocationPath + // | FilterExpr + // | FilterExpr '/' RelativeLocationPath + // | FilterExpr '//' RelativeLocationPath + // UnionExpr ::= PathExpr | UnionExpr '|' PathExpr + // UnaryExpr ::= UnionExpr | '-' UnaryExpr + xpath_ast_node* parse_path_or_unary_expression() + { + // Clarification. + // PathExpr begins with either LocationPath or FilterExpr. + // FilterExpr begins with PrimaryExpr + // PrimaryExpr begins with '$' in case of it being a variable reference, + // '(' in case of it being an expression, string literal, number constant or + // function call. + + if (_lexer.current() == lex_var_ref || _lexer.current() == lex_open_brace || + _lexer.current() == lex_quoted_string || _lexer.current() == lex_number || + _lexer.current() == lex_string) + { + if (_lexer.current() == lex_string) + { + // This is either a function call, or not - if not, we shall proceed with location path + const char_t* state = _lexer.state(); + + while (PUGI__IS_CHARTYPE(*state, ct_space)) ++state; + + if (*state != '(') return parse_location_path(); + + // This looks like a function call; however this still can be a node-test. Check it. + if (parse_node_test_type(_lexer.contents()) != nodetest_none) return parse_location_path(); + } + + xpath_ast_node* n = parse_filter_expression(); + + if (_lexer.current() == lex_slash || _lexer.current() == lex_double_slash) + { + lexeme_t l = _lexer.current(); + _lexer.next(); + + if (l == lex_double_slash) + { + if (n->rettype() != xpath_type_node_set) throw_error("Step has to be applied to node set"); + + n = new (alloc_node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0); + } + + // select from location path + return parse_relative_location_path(n); + } + + return n; + } + else if (_lexer.current() == lex_minus) + { + _lexer.next(); + + // precedence 7+ - only parses union expressions + xpath_ast_node* expr = parse_expression_rec(parse_path_or_unary_expression(), 7); + + return new (alloc_node()) xpath_ast_node(ast_op_negate, xpath_type_number, expr); + } + else + return parse_location_path(); + } + + struct binary_op_t + { + ast_type_t asttype; + xpath_value_type rettype; + int precedence; + + binary_op_t(): asttype(ast_unknown), rettype(xpath_type_none), precedence(0) + { + } + + binary_op_t(ast_type_t asttype_, xpath_value_type rettype_, int precedence_): asttype(asttype_), rettype(rettype_), precedence(precedence_) + { + } + + static binary_op_t parse(xpath_lexer& lexer) + { + switch (lexer.current()) + { + case lex_string: + if (lexer.contents() == PUGIXML_TEXT("or")) + return binary_op_t(ast_op_or, xpath_type_boolean, 1); + else if (lexer.contents() == PUGIXML_TEXT("and")) + return binary_op_t(ast_op_and, xpath_type_boolean, 2); + else if (lexer.contents() == PUGIXML_TEXT("div")) + return binary_op_t(ast_op_divide, xpath_type_number, 6); + else if (lexer.contents() == PUGIXML_TEXT("mod")) + return binary_op_t(ast_op_mod, xpath_type_number, 6); + else + return binary_op_t(); + + case lex_equal: + return binary_op_t(ast_op_equal, xpath_type_boolean, 3); + + case lex_not_equal: + return binary_op_t(ast_op_not_equal, xpath_type_boolean, 3); + + case lex_less: + return binary_op_t(ast_op_less, xpath_type_boolean, 4); + + case lex_greater: + return binary_op_t(ast_op_greater, xpath_type_boolean, 4); + + case lex_less_or_equal: + return binary_op_t(ast_op_less_or_equal, xpath_type_boolean, 4); + + case lex_greater_or_equal: + return binary_op_t(ast_op_greater_or_equal, xpath_type_boolean, 4); + + case lex_plus: + return binary_op_t(ast_op_add, xpath_type_number, 5); + + case lex_minus: + return binary_op_t(ast_op_subtract, xpath_type_number, 5); + + case lex_multiply: + return binary_op_t(ast_op_multiply, xpath_type_number, 6); + + case lex_union: + return binary_op_t(ast_op_union, xpath_type_node_set, 7); + + default: + return binary_op_t(); + } + } + }; + + xpath_ast_node* parse_expression_rec(xpath_ast_node* lhs, int limit) + { + binary_op_t op = binary_op_t::parse(_lexer); + + while (op.asttype != ast_unknown && op.precedence >= limit) + { + _lexer.next(); + + xpath_ast_node* rhs = parse_path_or_unary_expression(); + + binary_op_t nextop = binary_op_t::parse(_lexer); + + while (nextop.asttype != ast_unknown && nextop.precedence > op.precedence) + { + rhs = parse_expression_rec(rhs, nextop.precedence); + + nextop = binary_op_t::parse(_lexer); + } + + if (op.asttype == ast_op_union && (lhs->rettype() != xpath_type_node_set || rhs->rettype() != xpath_type_node_set)) + throw_error("Union operator has to be applied to node sets"); + + lhs = new (alloc_node()) xpath_ast_node(op.asttype, op.rettype, lhs, rhs); + + op = binary_op_t::parse(_lexer); + } + + return lhs; + } + + // Expr ::= OrExpr + // OrExpr ::= AndExpr | OrExpr 'or' AndExpr + // AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr + // EqualityExpr ::= RelationalExpr + // | EqualityExpr '=' RelationalExpr + // | EqualityExpr '!=' RelationalExpr + // RelationalExpr ::= AdditiveExpr + // | RelationalExpr '<' AdditiveExpr + // | RelationalExpr '>' AdditiveExpr + // | RelationalExpr '<=' AdditiveExpr + // | RelationalExpr '>=' AdditiveExpr + // AdditiveExpr ::= MultiplicativeExpr + // | AdditiveExpr '+' MultiplicativeExpr + // | AdditiveExpr '-' MultiplicativeExpr + // MultiplicativeExpr ::= UnaryExpr + // | MultiplicativeExpr '*' UnaryExpr + // | MultiplicativeExpr 'div' UnaryExpr + // | MultiplicativeExpr 'mod' UnaryExpr + xpath_ast_node* parse_expression() + { + return parse_expression_rec(parse_path_or_unary_expression(), 0); + } + + xpath_parser(const char_t* query, xpath_variable_set* variables, xpath_allocator* alloc, xpath_parse_result* result): _alloc(alloc), _lexer(query), _query(query), _variables(variables), _result(result) + { + } + + xpath_ast_node* parse() + { + xpath_ast_node* result = parse_expression(); + + if (_lexer.current() != lex_eof) + { + // there are still unparsed tokens left, error + throw_error("Incorrect query"); + } + + return result; + } + + static xpath_ast_node* parse(const char_t* query, xpath_variable_set* variables, xpath_allocator* alloc, xpath_parse_result* result) + { + xpath_parser parser(query, variables, alloc, result); + + #ifdef PUGIXML_NO_EXCEPTIONS + int error = setjmp(parser._error_handler); + + return (error == 0) ? parser.parse() : 0; + #else + return parser.parse(); + #endif + } + }; + + struct xpath_query_impl + { + static xpath_query_impl* create() + { + void* memory = xml_memory::allocate(sizeof(xpath_query_impl)); + + return new (memory) xpath_query_impl(); + } + + static void destroy(void* ptr) + { + if (!ptr) return; + + // free all allocated pages + static_cast(ptr)->alloc.release(); + + // free allocator memory (with the first page) + xml_memory::deallocate(ptr); + } + + xpath_query_impl(): root(0), alloc(&block) + { + block.next = 0; + block.capacity = sizeof(block.data); + } + + xpath_ast_node* root; + xpath_allocator alloc; + xpath_memory_block block; + }; + + PUGI__FN xpath_string evaluate_string_impl(xpath_query_impl* impl, const xpath_node& n, xpath_stack_data& sd) + { + if (!impl) return xpath_string(); + + #ifdef PUGIXML_NO_EXCEPTIONS + if (setjmp(sd.error_handler)) return xpath_string(); + #endif + + xpath_context c(n, 1, 1); + + return impl->root->eval_string(c, sd.stack); + } +PUGI__NS_END + +namespace pugi +{ +#ifndef PUGIXML_NO_EXCEPTIONS + PUGI__FN xpath_exception::xpath_exception(const xpath_parse_result& result_): _result(result_) + { + assert(_result.error); + } + + PUGI__FN const char* xpath_exception::what() const throw() + { + return _result.error; + } + + PUGI__FN const xpath_parse_result& xpath_exception::result() const + { + return _result; + } +#endif + + PUGI__FN xpath_node::xpath_node() + { + } + + PUGI__FN xpath_node::xpath_node(const xml_node& node_): _node(node_) + { + } + + PUGI__FN xpath_node::xpath_node(const xml_attribute& attribute_, const xml_node& parent_): _node(attribute_ ? parent_ : xml_node()), _attribute(attribute_) + { + } + + PUGI__FN xml_node xpath_node::node() const + { + return _attribute ? xml_node() : _node; + } + + PUGI__FN xml_attribute xpath_node::attribute() const + { + return _attribute; + } + + PUGI__FN xml_node xpath_node::parent() const + { + return _attribute ? _node : _node.parent(); + } + + PUGI__FN static void unspecified_bool_xpath_node(xpath_node***) + { + } + + PUGI__FN xpath_node::operator xpath_node::unspecified_bool_type() const + { + return (_node || _attribute) ? unspecified_bool_xpath_node : 0; + } + + PUGI__FN bool xpath_node::operator!() const + { + return !(_node || _attribute); + } + + PUGI__FN bool xpath_node::operator==(const xpath_node& n) const + { + return _node == n._node && _attribute == n._attribute; + } + + PUGI__FN bool xpath_node::operator!=(const xpath_node& n) const + { + return _node != n._node || _attribute != n._attribute; + } + +#ifdef __BORLANDC__ + PUGI__FN bool operator&&(const xpath_node& lhs, bool rhs) + { + return (bool)lhs && rhs; + } + + PUGI__FN bool operator||(const xpath_node& lhs, bool rhs) + { + return (bool)lhs || rhs; + } +#endif + + PUGI__FN void xpath_node_set::_assign(const_iterator begin_, const_iterator end_) + { + assert(begin_ <= end_); + + size_t size_ = static_cast(end_ - begin_); + + if (size_ <= 1) + { + // deallocate old buffer + if (_begin != &_storage) impl::xml_memory::deallocate(_begin); + + // use internal buffer + if (begin_ != end_) _storage = *begin_; + + _begin = &_storage; + _end = &_storage + size_; + } + else + { + // make heap copy + xpath_node* storage = static_cast(impl::xml_memory::allocate(size_ * sizeof(xpath_node))); + + if (!storage) + { + #ifdef PUGIXML_NO_EXCEPTIONS + return; + #else + throw std::bad_alloc(); + #endif + } + + memcpy(storage, begin_, size_ * sizeof(xpath_node)); + + // deallocate old buffer + if (_begin != &_storage) impl::xml_memory::deallocate(_begin); + + // finalize + _begin = storage; + _end = storage + size_; + } + } + + PUGI__FN xpath_node_set::xpath_node_set(): _type(type_unsorted), _begin(&_storage), _end(&_storage) + { + } + + PUGI__FN xpath_node_set::xpath_node_set(const_iterator begin_, const_iterator end_, type_t type_): _type(type_), _begin(&_storage), _end(&_storage) + { + _assign(begin_, end_); + } + + PUGI__FN xpath_node_set::~xpath_node_set() + { + if (_begin != &_storage) impl::xml_memory::deallocate(_begin); + } + + PUGI__FN xpath_node_set::xpath_node_set(const xpath_node_set& ns): _type(ns._type), _begin(&_storage), _end(&_storage) + { + _assign(ns._begin, ns._end); + } + + PUGI__FN xpath_node_set& xpath_node_set::operator=(const xpath_node_set& ns) + { + if (this == &ns) return *this; + + _type = ns._type; + _assign(ns._begin, ns._end); + + return *this; + } + + PUGI__FN xpath_node_set::type_t xpath_node_set::type() const + { + return _type; + } + + PUGI__FN size_t xpath_node_set::size() const + { + return _end - _begin; + } + + PUGI__FN bool xpath_node_set::empty() const + { + return _begin == _end; + } + + PUGI__FN const xpath_node& xpath_node_set::operator[](size_t index) const + { + assert(index < size()); + return _begin[index]; + } + + PUGI__FN xpath_node_set::const_iterator xpath_node_set::begin() const + { + return _begin; + } + + PUGI__FN xpath_node_set::const_iterator xpath_node_set::end() const + { + return _end; + } + + PUGI__FN void xpath_node_set::sort(bool reverse) + { + _type = impl::xpath_sort(_begin, _end, _type, reverse); + } + + PUGI__FN xpath_node xpath_node_set::first() const + { + return impl::xpath_first(_begin, _end, _type); + } + + PUGI__FN xpath_parse_result::xpath_parse_result(): error("Internal error"), offset(0) + { + } + + PUGI__FN xpath_parse_result::operator bool() const + { + return error == 0; + } + + PUGI__FN const char* xpath_parse_result::description() const + { + return error ? error : "No error"; + } + + PUGI__FN xpath_variable::xpath_variable(): _type(xpath_type_none), _next(0) + { + } + + PUGI__FN const char_t* xpath_variable::name() const + { + switch (_type) + { + case xpath_type_node_set: + return static_cast(this)->name; + + case xpath_type_number: + return static_cast(this)->name; + + case xpath_type_string: + return static_cast(this)->name; + + case xpath_type_boolean: + return static_cast(this)->name; + + default: + assert(!"Invalid variable type"); + return 0; + } + } + + PUGI__FN xpath_value_type xpath_variable::type() const + { + return _type; + } + + PUGI__FN bool xpath_variable::get_boolean() const + { + return (_type == xpath_type_boolean) ? static_cast(this)->value : false; + } + + PUGI__FN double xpath_variable::get_number() const + { + return (_type == xpath_type_number) ? static_cast(this)->value : impl::gen_nan(); + } + + PUGI__FN const char_t* xpath_variable::get_string() const + { + const char_t* value = (_type == xpath_type_string) ? static_cast(this)->value : 0; + return value ? value : PUGIXML_TEXT(""); + } + + PUGI__FN const xpath_node_set& xpath_variable::get_node_set() const + { + return (_type == xpath_type_node_set) ? static_cast(this)->value : impl::dummy_node_set; + } + + PUGI__FN bool xpath_variable::set(bool value) + { + if (_type != xpath_type_boolean) return false; + + static_cast(this)->value = value; + return true; + } + + PUGI__FN bool xpath_variable::set(double value) + { + if (_type != xpath_type_number) return false; + + static_cast(this)->value = value; + return true; + } + + PUGI__FN bool xpath_variable::set(const char_t* value) + { + if (_type != xpath_type_string) return false; + + impl::xpath_variable_string* var = static_cast(this); + + // duplicate string + size_t size = (impl::strlength(value) + 1) * sizeof(char_t); + + char_t* copy = static_cast(impl::xml_memory::allocate(size)); + if (!copy) return false; + + memcpy(copy, value, size); + + // replace old string + if (var->value) impl::xml_memory::deallocate(var->value); + var->value = copy; + + return true; + } + + PUGI__FN bool xpath_variable::set(const xpath_node_set& value) + { + if (_type != xpath_type_node_set) return false; + + static_cast(this)->value = value; + return true; + } + + PUGI__FN xpath_variable_set::xpath_variable_set() + { + for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) _data[i] = 0; + } + + PUGI__FN xpath_variable_set::~xpath_variable_set() + { + for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) + { + xpath_variable* var = _data[i]; + + while (var) + { + xpath_variable* next = var->_next; + + impl::delete_xpath_variable(var->_type, var); + + var = next; + } + } + } + + PUGI__FN xpath_variable* xpath_variable_set::find(const char_t* name) const + { + const size_t hash_size = sizeof(_data) / sizeof(_data[0]); + size_t hash = impl::hash_string(name) % hash_size; + + // look for existing variable + for (xpath_variable* var = _data[hash]; var; var = var->_next) + if (impl::strequal(var->name(), name)) + return var; + + return 0; + } + + PUGI__FN xpath_variable* xpath_variable_set::add(const char_t* name, xpath_value_type type) + { + const size_t hash_size = sizeof(_data) / sizeof(_data[0]); + size_t hash = impl::hash_string(name) % hash_size; + + // look for existing variable + for (xpath_variable* var = _data[hash]; var; var = var->_next) + if (impl::strequal(var->name(), name)) + return var->type() == type ? var : 0; + + // add new variable + xpath_variable* result = impl::new_xpath_variable(type, name); + + if (result) + { + result->_type = type; + result->_next = _data[hash]; + + _data[hash] = result; + } + + return result; + } + + PUGI__FN bool xpath_variable_set::set(const char_t* name, bool value) + { + xpath_variable* var = add(name, xpath_type_boolean); + return var ? var->set(value) : false; + } + + PUGI__FN bool xpath_variable_set::set(const char_t* name, double value) + { + xpath_variable* var = add(name, xpath_type_number); + return var ? var->set(value) : false; + } + + PUGI__FN bool xpath_variable_set::set(const char_t* name, const char_t* value) + { + xpath_variable* var = add(name, xpath_type_string); + return var ? var->set(value) : false; + } + + PUGI__FN bool xpath_variable_set::set(const char_t* name, const xpath_node_set& value) + { + xpath_variable* var = add(name, xpath_type_node_set); + return var ? var->set(value) : false; + } + + PUGI__FN xpath_variable* xpath_variable_set::get(const char_t* name) + { + return find(name); + } + + PUGI__FN const xpath_variable* xpath_variable_set::get(const char_t* name) const + { + return find(name); + } + + PUGI__FN xpath_query::xpath_query(const char_t* query, xpath_variable_set* variables): _impl(0) + { + impl::xpath_query_impl* qimpl = impl::xpath_query_impl::create(); + + if (!qimpl) + { + #ifdef PUGIXML_NO_EXCEPTIONS + _result.error = "Out of memory"; + #else + throw std::bad_alloc(); + #endif + } + else + { + impl::buffer_holder impl_holder(qimpl, impl::xpath_query_impl::destroy); + + qimpl->root = impl::xpath_parser::parse(query, variables, &qimpl->alloc, &_result); + + if (qimpl->root) + { + _impl = static_cast(impl_holder.release()); + _result.error = 0; + } + } + } + + PUGI__FN xpath_query::~xpath_query() + { + impl::xpath_query_impl::destroy(_impl); + } + + PUGI__FN xpath_value_type xpath_query::return_type() const + { + if (!_impl) return xpath_type_none; + + return static_cast(_impl)->root->rettype(); + } + + PUGI__FN bool xpath_query::evaluate_boolean(const xpath_node& n) const + { + if (!_impl) return false; + + impl::xpath_context c(n, 1, 1); + impl::xpath_stack_data sd; + + #ifdef PUGIXML_NO_EXCEPTIONS + if (setjmp(sd.error_handler)) return false; + #endif + + return static_cast(_impl)->root->eval_boolean(c, sd.stack); + } + + PUGI__FN double xpath_query::evaluate_number(const xpath_node& n) const + { + if (!_impl) return impl::gen_nan(); + + impl::xpath_context c(n, 1, 1); + impl::xpath_stack_data sd; + + #ifdef PUGIXML_NO_EXCEPTIONS + if (setjmp(sd.error_handler)) return impl::gen_nan(); + #endif + + return static_cast(_impl)->root->eval_number(c, sd.stack); + } + +#ifndef PUGIXML_NO_STL + PUGI__FN string_t xpath_query::evaluate_string(const xpath_node& n) const + { + impl::xpath_stack_data sd; + + return impl::evaluate_string_impl(static_cast(_impl), n, sd).c_str(); + } +#endif + + PUGI__FN size_t xpath_query::evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const + { + impl::xpath_stack_data sd; + + impl::xpath_string r = impl::evaluate_string_impl(static_cast(_impl), n, sd); + + size_t full_size = r.length() + 1; + + if (capacity > 0) + { + size_t size = (full_size < capacity) ? full_size : capacity; + assert(size > 0); + + memcpy(buffer, r.c_str(), (size - 1) * sizeof(char_t)); + buffer[size - 1] = 0; + } + + return full_size; + } + + PUGI__FN xpath_node_set xpath_query::evaluate_node_set(const xpath_node& n) const + { + if (!_impl) return xpath_node_set(); + + impl::xpath_ast_node* root = static_cast(_impl)->root; + + if (root->rettype() != xpath_type_node_set) + { + #ifdef PUGIXML_NO_EXCEPTIONS + return xpath_node_set(); + #else + xpath_parse_result res; + res.error = "Expression does not evaluate to node set"; + + throw xpath_exception(res); + #endif + } + + impl::xpath_context c(n, 1, 1); + impl::xpath_stack_data sd; + + #ifdef PUGIXML_NO_EXCEPTIONS + if (setjmp(sd.error_handler)) return xpath_node_set(); + #endif + + impl::xpath_node_set_raw r = root->eval_node_set(c, sd.stack); + + return xpath_node_set(r.begin(), r.end(), r.type()); + } + + PUGI__FN const xpath_parse_result& xpath_query::result() const + { + return _result; + } + + PUGI__FN static void unspecified_bool_xpath_query(xpath_query***) + { + } + + PUGI__FN xpath_query::operator xpath_query::unspecified_bool_type() const + { + return _impl ? unspecified_bool_xpath_query : 0; + } + + PUGI__FN bool xpath_query::operator!() const + { + return !_impl; + } + + PUGI__FN xpath_node xml_node::select_single_node(const char_t* query, xpath_variable_set* variables) const + { + xpath_query q(query, variables); + return select_single_node(q); + } + + PUGI__FN xpath_node xml_node::select_single_node(const xpath_query& query) const + { + xpath_node_set s = query.evaluate_node_set(*this); + return s.empty() ? xpath_node() : s.first(); + } + + PUGI__FN xpath_node_set xml_node::select_nodes(const char_t* query, xpath_variable_set* variables) const + { + xpath_query q(query, variables); + return select_nodes(q); + } + + PUGI__FN xpath_node_set xml_node::select_nodes(const xpath_query& query) const + { + return query.evaluate_node_set(*this); + } +} + +#endif + +#ifdef __BORLANDC__ +# pragma option pop +#endif + +// Intel C++ does not properly keep warning state for function templates, +// so popping warning state at the end of translation unit leads to warnings in the middle. +#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) +# pragma warning(pop) +#endif + +// Undefine all local macros (makes sure we're not leaking macros in header-only mode) +#undef PUGI__NO_INLINE +#undef PUGI__UNLIKELY +#undef PUGI__STATIC_ASSERT +#undef PUGI__DMC_VOLATILE +#undef PUGI__MSVC_CRT_VERSION +#undef PUGI__NS_BEGIN +#undef PUGI__NS_END +#undef PUGI__FN +#undef PUGI__FN_NO_INLINE +#undef PUGI__IS_CHARTYPE_IMPL +#undef PUGI__IS_CHARTYPE +#undef PUGI__IS_CHARTYPEX +#undef PUGI__ENDSWITH +#undef PUGI__SKIPWS +#undef PUGI__OPTSET +#undef PUGI__PUSHNODE +#undef PUGI__POPNODE +#undef PUGI__SCANFOR +#undef PUGI__SCANWHILE +#undef PUGI__SCANWHILE_UNROLL +#undef PUGI__ENDSEG +#undef PUGI__THROW_ERROR +#undef PUGI__CHECK_ERROR + +#endif + +/** + * Copyright (c) 2006-2014 Arseny Kapoulkine + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ diff --git a/src/C++/pugixml.hpp b/src/C++/pugixml.hpp new file mode 100644 index 000000000..69b2cb252 --- /dev/null +++ b/src/C++/pugixml.hpp @@ -0,0 +1,1341 @@ +/** + * pugixml parser - version 1.4 + * -------------------------------------------------------- + * Copyright (C) 2006-2014, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) + * Report bugs and download new versions at http://pugixml.org/ + * + * This library is distributed under the MIT License. See notice at the end + * of this file. + * + * This work is based on the pugxml parser, which is: + * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) + */ + +#ifndef PUGIXML_VERSION +// Define version macro; evaluates to major * 100 + minor so that it's safe to use in less-than comparisons +# define PUGIXML_VERSION 140 +#endif + +// Include user configuration file (this can define various configuration macros) +#include "pugiconfig.hpp" + +#ifndef HEADER_PUGIXML_HPP +#define HEADER_PUGIXML_HPP + +// Include stddef.h for size_t and ptrdiff_t +#include + +// Include exception header for XPath +#if !defined(PUGIXML_NO_XPATH) && !defined(PUGIXML_NO_EXCEPTIONS) +# include +#endif + +// Include STL headers +#ifndef PUGIXML_NO_STL +# include +# include +# include +#endif + +// Macro for deprecated features +#ifndef PUGIXML_DEPRECATED +# if defined(__GNUC__) +# define PUGIXML_DEPRECATED __attribute__((deprecated)) +# elif defined(_MSC_VER) && _MSC_VER >= 1300 +# define PUGIXML_DEPRECATED __declspec(deprecated) +# else +# define PUGIXML_DEPRECATED +# endif +#endif + +// If no API is defined, assume default +#ifndef PUGIXML_API +# define PUGIXML_API +#endif + +// If no API for classes is defined, assume default +#ifndef PUGIXML_CLASS +# define PUGIXML_CLASS PUGIXML_API +#endif + +// If no API for functions is defined, assume default +#ifndef PUGIXML_FUNCTION +# define PUGIXML_FUNCTION PUGIXML_API +#endif + +// If the platform is known to have long long support, enable long long functions +#ifndef PUGIXML_HAS_LONG_LONG +# if defined(__cplusplus) && __cplusplus >= 201103 +# define PUGIXML_HAS_LONG_LONG +# elif defined(_MSC_VER) && _MSC_VER >= 1400 +# define PUGIXML_HAS_LONG_LONG +# endif +#endif + +// Character interface macros +#ifdef PUGIXML_WCHAR_MODE +# define PUGIXML_TEXT(t) L ## t +# define PUGIXML_CHAR wchar_t +#else +# define PUGIXML_TEXT(t) t +# define PUGIXML_CHAR char +#endif + +namespace pugi +{ + // Character type used for all internal storage and operations; depends on PUGIXML_WCHAR_MODE + typedef PUGIXML_CHAR char_t; + +#ifndef PUGIXML_NO_STL + // String type used for operations that work with STL string; depends on PUGIXML_WCHAR_MODE + typedef std::basic_string, std::allocator > string_t; +#endif +} + +// The PugiXML namespace +namespace pugi +{ + // Tree node types + enum xml_node_type + { + node_null, // Empty (null) node handle + node_document, // A document tree's absolute root + node_element, // Element tag, i.e. '' + node_pcdata, // Plain character data, i.e. 'text' + node_cdata, // Character data, i.e. '' + node_comment, // Comment tag, i.e. '' + node_pi, // Processing instruction, i.e. '' + node_declaration, // Document declaration, i.e. '' + node_doctype // Document type declaration, i.e. '' + }; + + // Parsing options + + // Minimal parsing mode (equivalent to turning all other flags off). + // Only elements and PCDATA sections are added to the DOM tree, no text conversions are performed. + const unsigned int parse_minimal = 0x0000; + + // This flag determines if processing instructions (node_pi) are added to the DOM tree. This flag is off by default. + const unsigned int parse_pi = 0x0001; + + // This flag determines if comments (node_comment) are added to the DOM tree. This flag is off by default. + const unsigned int parse_comments = 0x0002; + + // This flag determines if CDATA sections (node_cdata) are added to the DOM tree. This flag is on by default. + const unsigned int parse_cdata = 0x0004; + + // This flag determines if plain character data (node_pcdata) that consist only of whitespace are added to the DOM tree. + // This flag is off by default; turning it on usually results in slower parsing and more memory consumption. + const unsigned int parse_ws_pcdata = 0x0008; + + // This flag determines if character and entity references are expanded during parsing. This flag is on by default. + const unsigned int parse_escapes = 0x0010; + + // This flag determines if EOL characters are normalized (converted to #xA) during parsing. This flag is on by default. + const unsigned int parse_eol = 0x0020; + + // This flag determines if attribute values are normalized using CDATA normalization rules during parsing. This flag is on by default. + const unsigned int parse_wconv_attribute = 0x0040; + + // This flag determines if attribute values are normalized using NMTOKENS normalization rules during parsing. This flag is off by default. + const unsigned int parse_wnorm_attribute = 0x0080; + + // This flag determines if document declaration (node_declaration) is added to the DOM tree. This flag is off by default. + const unsigned int parse_declaration = 0x0100; + + // This flag determines if document type declaration (node_doctype) is added to the DOM tree. This flag is off by default. + const unsigned int parse_doctype = 0x0200; + + // This flag determines if plain character data (node_pcdata) that is the only child of the parent node and that consists only + // of whitespace is added to the DOM tree. + // This flag is off by default; turning it on may result in slower parsing and more memory consumption. + const unsigned int parse_ws_pcdata_single = 0x0400; + + // This flag determines if leading and trailing whitespace is to be removed from plain character data. This flag is off by default. + const unsigned int parse_trim_pcdata = 0x0800; + + // This flag determines if plain character data that does not have a parent node is added to the DOM tree, and if an empty document + // is a valid document. This flag is off by default. + const unsigned int parse_fragment = 0x1000; + + // The default parsing mode. + // Elements, PCDATA and CDATA sections are added to the DOM tree, character/reference entities are expanded, + // End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules. + const unsigned int parse_default = parse_cdata | parse_escapes | parse_wconv_attribute | parse_eol; + + // The full parsing mode. + // Nodes of all types are added to the DOM tree, character/reference entities are expanded, + // End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules. + const unsigned int parse_full = parse_default | parse_pi | parse_comments | parse_declaration | parse_doctype; + + // These flags determine the encoding of input data for XML document + enum xml_encoding + { + encoding_auto, // Auto-detect input encoding using BOM or < / class xml_object_range + { + public: + typedef It const_iterator; + typedef It iterator; + + xml_object_range(It b, It e): _begin(b), _end(e) + { + } + + It begin() const { return _begin; } + It end() const { return _end; } + + private: + It _begin, _end; + }; + + // Writer interface for node printing (see xml_node::print) + class PUGIXML_CLASS xml_writer + { + public: + virtual ~xml_writer() {} + + // Write memory chunk into stream/file/whatever + virtual void write(const void* data, size_t size) = 0; + }; + + // xml_writer implementation for FILE* + class PUGIXML_CLASS xml_writer_file: public xml_writer + { + public: + // Construct writer from a FILE* object; void* is used to avoid header dependencies on stdio + xml_writer_file(void* file); + + virtual void write(const void* data, size_t size); + + private: + void* file; + }; + + #ifndef PUGIXML_NO_STL + // xml_writer implementation for streams + class PUGIXML_CLASS xml_writer_stream: public xml_writer + { + public: + // Construct writer from an output stream object + xml_writer_stream(std::basic_ostream >& stream); + xml_writer_stream(std::basic_ostream >& stream); + + virtual void write(const void* data, size_t size); + + private: + std::basic_ostream >* narrow_stream; + std::basic_ostream >* wide_stream; + }; + #endif + + // A light-weight handle for manipulating attributes in DOM tree + class PUGIXML_CLASS xml_attribute + { + friend class xml_attribute_iterator; + friend class xml_node; + + private: + xml_attribute_struct* _attr; + + typedef void (*unspecified_bool_type)(xml_attribute***); + + public: + // Default constructor. Constructs an empty attribute. + xml_attribute(); + + // Constructs attribute from internal pointer + explicit xml_attribute(xml_attribute_struct* attr); + + // Safe bool conversion operator + operator unspecified_bool_type() const; + + // Borland C++ workaround + bool operator!() const; + + // Comparison operators (compares wrapped attribute pointers) + bool operator==(const xml_attribute& r) const; + bool operator!=(const xml_attribute& r) const; + bool operator<(const xml_attribute& r) const; + bool operator>(const xml_attribute& r) const; + bool operator<=(const xml_attribute& r) const; + bool operator>=(const xml_attribute& r) const; + + // Check if attribute is empty + bool empty() const; + + // Get attribute name/value, or "" if attribute is empty + const char_t* name() const; + const char_t* value() const; + + // Get attribute value, or the default value if attribute is empty + const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const; + + // Get attribute value as a number, or the default value if conversion did not succeed or attribute is empty + int as_int(int def = 0) const; + unsigned int as_uint(unsigned int def = 0) const; + double as_double(double def = 0) const; + float as_float(float def = 0) const; + + #ifdef PUGIXML_HAS_LONG_LONG + long long as_llong(long long def = 0) const; + unsigned long long as_ullong(unsigned long long def = 0) const; + #endif + + // Get attribute value as bool (returns true if first character is in '1tTyY' set), or the default value if attribute is empty + bool as_bool(bool def = false) const; + + // Set attribute name/value (returns false if attribute is empty or there is not enough memory) + bool set_name(const char_t* rhs); + bool set_value(const char_t* rhs); + + // Set attribute value with type conversion (numbers are converted to strings, boolean is converted to "true"/"false") + bool set_value(int rhs); + bool set_value(unsigned int rhs); + bool set_value(double rhs); + bool set_value(bool rhs); + + #ifdef PUGIXML_HAS_LONG_LONG + bool set_value(long long rhs); + bool set_value(unsigned long long rhs); + #endif + + // Set attribute value (equivalent to set_value without error checking) + xml_attribute& operator=(const char_t* rhs); + xml_attribute& operator=(int rhs); + xml_attribute& operator=(unsigned int rhs); + xml_attribute& operator=(double rhs); + xml_attribute& operator=(bool rhs); + + #ifdef PUGIXML_HAS_LONG_LONG + xml_attribute& operator=(long long rhs); + xml_attribute& operator=(unsigned long long rhs); + #endif + + // Get next/previous attribute in the attribute list of the parent node + xml_attribute next_attribute() const; + xml_attribute previous_attribute() const; + + // Get hash value (unique for handles to the same object) + size_t hash_value() const; + + // Get internal pointer + xml_attribute_struct* internal_object() const; + }; + +#ifdef __BORLANDC__ + // Borland C++ workaround + bool PUGIXML_FUNCTION operator&&(const xml_attribute& lhs, bool rhs); + bool PUGIXML_FUNCTION operator||(const xml_attribute& lhs, bool rhs); +#endif + + // A light-weight handle for manipulating nodes in DOM tree + class PUGIXML_CLASS xml_node + { + friend class xml_attribute_iterator; + friend class xml_node_iterator; + friend class xml_named_node_iterator; + + protected: + xml_node_struct* _root; + + typedef void (*unspecified_bool_type)(xml_node***); + + public: + // Default constructor. Constructs an empty node. + xml_node(); + + // Constructs node from internal pointer + explicit xml_node(xml_node_struct* p); + + // Safe bool conversion operator + operator unspecified_bool_type() const; + + // Borland C++ workaround + bool operator!() const; + + // Comparison operators (compares wrapped node pointers) + bool operator==(const xml_node& r) const; + bool operator!=(const xml_node& r) const; + bool operator<(const xml_node& r) const; + bool operator>(const xml_node& r) const; + bool operator<=(const xml_node& r) const; + bool operator>=(const xml_node& r) const; + + // Check if node is empty. + bool empty() const; + + // Get node type + xml_node_type type() const; + + // Get node name, or "" if node is empty or it has no name + const char_t* name() const; + + // Get node value, or "" if node is empty or it has no value + // Note: For text node.value() does not return "text"! Use child_value() or text() methods to access text inside nodes. + const char_t* value() const; + + // Get attribute list + xml_attribute first_attribute() const; + xml_attribute last_attribute() const; + + // Get children list + xml_node first_child() const; + xml_node last_child() const; + + // Get next/previous sibling in the children list of the parent node + xml_node next_sibling() const; + xml_node previous_sibling() const; + + // Get parent node + xml_node parent() const; + + // Get root of DOM tree this node belongs to + xml_node root() const; + + // Get text object for the current node + xml_text text() const; + + // Get child, attribute or next/previous sibling with the specified name + xml_node child(const char_t* name) const; + xml_attribute attribute(const char_t* name) const; + xml_node next_sibling(const char_t* name) const; + xml_node previous_sibling(const char_t* name) const; + + // Get child value of current node; that is, value of the first child node of type PCDATA/CDATA + const char_t* child_value() const; + + // Get child value of child with specified name. Equivalent to child(name).child_value(). + const char_t* child_value(const char_t* name) const; + + // Set node name/value (returns false if node is empty, there is not enough memory, or node can not have name/value) + bool set_name(const char_t* rhs); + bool set_value(const char_t* rhs); + + // Add attribute with specified name. Returns added attribute, or empty attribute on errors. + xml_attribute append_attribute(const char_t* name); + xml_attribute prepend_attribute(const char_t* name); + xml_attribute insert_attribute_after(const char_t* name, const xml_attribute& attr); + xml_attribute insert_attribute_before(const char_t* name, const xml_attribute& attr); + + // Add a copy of the specified attribute. Returns added attribute, or empty attribute on errors. + xml_attribute append_copy(const xml_attribute& proto); + xml_attribute prepend_copy(const xml_attribute& proto); + xml_attribute insert_copy_after(const xml_attribute& proto, const xml_attribute& attr); + xml_attribute insert_copy_before(const xml_attribute& proto, const xml_attribute& attr); + + // Add child node with specified type. Returns added node, or empty node on errors. + xml_node append_child(xml_node_type type = node_element); + xml_node prepend_child(xml_node_type type = node_element); + xml_node insert_child_after(xml_node_type type, const xml_node& node); + xml_node insert_child_before(xml_node_type type, const xml_node& node); + + // Add child element with specified name. Returns added node, or empty node on errors. + xml_node append_child(const char_t* name); + xml_node prepend_child(const char_t* name); + xml_node insert_child_after(const char_t* name, const xml_node& node); + xml_node insert_child_before(const char_t* name, const xml_node& node); + + // Add a copy of the specified node as a child. Returns added node, or empty node on errors. + xml_node append_copy(const xml_node& proto); + xml_node prepend_copy(const xml_node& proto); + xml_node insert_copy_after(const xml_node& proto, const xml_node& node); + xml_node insert_copy_before(const xml_node& proto, const xml_node& node); + + // Move the specified node to become a child of this node. Returns moved node, or empty node on errors. + xml_node append_move(const xml_node& moved); + xml_node prepend_move(const xml_node& moved); + xml_node insert_move_after(const xml_node& moved, const xml_node& node); + xml_node insert_move_before(const xml_node& moved, const xml_node& node); + + // Remove specified attribute + bool remove_attribute(const xml_attribute& a); + bool remove_attribute(const char_t* name); + + // Remove specified child + bool remove_child(const xml_node& n); + bool remove_child(const char_t* name); + + // Parses buffer as an XML document fragment and appends all nodes as children of the current node. + // Copies/converts the buffer, so it may be deleted or changed after the function returns. + // Note: append_buffer allocates memory that has the lifetime of the owning document; removing the appended nodes does not immediately reclaim that memory. + xml_parse_result append_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); + + // Find attribute using predicate. Returns first attribute for which predicate returned true. + template xml_attribute find_attribute(Predicate pred) const + { + if (!_root) return xml_attribute(); + + for (xml_attribute attrib = first_attribute(); attrib; attrib = attrib.next_attribute()) + if (pred(attrib)) + return attrib; + + return xml_attribute(); + } + + // Find child node using predicate. Returns first child for which predicate returned true. + template xml_node find_child(Predicate pred) const + { + if (!_root) return xml_node(); + + for (xml_node node = first_child(); node; node = node.next_sibling()) + if (pred(node)) + return node; + + return xml_node(); + } + + // Find node from subtree using predicate. Returns first node from subtree (depth-first), for which predicate returned true. + template xml_node find_node(Predicate pred) const + { + if (!_root) return xml_node(); + + xml_node cur = first_child(); + + while (cur._root && cur._root != _root) + { + if (pred(cur)) return cur; + + if (cur.first_child()) cur = cur.first_child(); + else if (cur.next_sibling()) cur = cur.next_sibling(); + else + { + while (!cur.next_sibling() && cur._root != _root) cur = cur.parent(); + + if (cur._root != _root) cur = cur.next_sibling(); + } + } + + return xml_node(); + } + + // Find child node by attribute name/value + xml_node find_child_by_attribute(const char_t* name, const char_t* attr_name, const char_t* attr_value) const; + xml_node find_child_by_attribute(const char_t* attr_name, const char_t* attr_value) const; + + #ifndef PUGIXML_NO_STL + // Get the absolute node path from root as a text string. + string_t path(char_t delimiter = '/') const; + #endif + + // Search for a node by path consisting of node names and . or .. elements. + xml_node first_element_by_path(const char_t* path, char_t delimiter = '/') const; + + // Recursively traverse subtree with xml_tree_walker + bool traverse(xml_tree_walker& walker); + + #ifndef PUGIXML_NO_XPATH + // Select single node by evaluating XPath query. Returns first node from the resulting node set. + xpath_node select_single_node(const char_t* query, xpath_variable_set* variables = 0) const; + xpath_node select_single_node(const xpath_query& query) const; + + // Select node set by evaluating XPath query + xpath_node_set select_nodes(const char_t* query, xpath_variable_set* variables = 0) const; + xpath_node_set select_nodes(const xpath_query& query) const; + #endif + + // Print subtree using a writer object + void print(xml_writer& writer, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const; + + #ifndef PUGIXML_NO_STL + // Print subtree to stream + void print(std::basic_ostream >& os, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const; + void print(std::basic_ostream >& os, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, unsigned int depth = 0) const; + #endif + + // Child nodes iterators + typedef xml_node_iterator iterator; + + iterator begin() const; + iterator end() const; + + // Attribute iterators + typedef xml_attribute_iterator attribute_iterator; + + attribute_iterator attributes_begin() const; + attribute_iterator attributes_end() const; + + // Range-based for support + xml_object_range children() const; + xml_object_range children(const char_t* name) const; + xml_object_range attributes() const; + + // Get node offset in parsed file/string (in char_t units) for debugging purposes + ptrdiff_t offset_debug() const; + + // Get hash value (unique for handles to the same object) + size_t hash_value() const; + + // Get internal pointer + xml_node_struct* internal_object() const; + }; + +#ifdef __BORLANDC__ + // Borland C++ workaround + bool PUGIXML_FUNCTION operator&&(const xml_node& lhs, bool rhs); + bool PUGIXML_FUNCTION operator||(const xml_node& lhs, bool rhs); +#endif + + // A helper for working with text inside PCDATA nodes + class PUGIXML_CLASS xml_text + { + friend class xml_node; + + xml_node_struct* _root; + + typedef void (*unspecified_bool_type)(xml_text***); + + explicit xml_text(xml_node_struct* root); + + xml_node_struct* _data_new(); + xml_node_struct* _data() const; + + public: + // Default constructor. Constructs an empty object. + xml_text(); + + // Safe bool conversion operator + operator unspecified_bool_type() const; + + // Borland C++ workaround + bool operator!() const; + + // Check if text object is empty + bool empty() const; + + // Get text, or "" if object is empty + const char_t* get() const; + + // Get text, or the default value if object is empty + const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const; + + // Get text as a number, or the default value if conversion did not succeed or object is empty + int as_int(int def = 0) const; + unsigned int as_uint(unsigned int def = 0) const; + double as_double(double def = 0) const; + float as_float(float def = 0) const; + + #ifdef PUGIXML_HAS_LONG_LONG + long long as_llong(long long def = 0) const; + unsigned long long as_ullong(unsigned long long def = 0) const; + #endif + + // Get text as bool (returns true if first character is in '1tTyY' set), or the default value if object is empty + bool as_bool(bool def = false) const; + + // Set text (returns false if object is empty or there is not enough memory) + bool set(const char_t* rhs); + + // Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false") + bool set(int rhs); + bool set(unsigned int rhs); + bool set(double rhs); + bool set(bool rhs); + + #ifdef PUGIXML_HAS_LONG_LONG + bool set(long long rhs); + bool set(unsigned long long rhs); + #endif + + // Set text (equivalent to set without error checking) + xml_text& operator=(const char_t* rhs); + xml_text& operator=(int rhs); + xml_text& operator=(unsigned int rhs); + xml_text& operator=(double rhs); + xml_text& operator=(bool rhs); + + #ifdef PUGIXML_HAS_LONG_LONG + xml_text& operator=(long long rhs); + xml_text& operator=(unsigned long long rhs); + #endif + + // Get the data node (node_pcdata or node_cdata) for this object + xml_node data() const; + }; + +#ifdef __BORLANDC__ + // Borland C++ workaround + bool PUGIXML_FUNCTION operator&&(const xml_text& lhs, bool rhs); + bool PUGIXML_FUNCTION operator||(const xml_text& lhs, bool rhs); +#endif + + // Child node iterator (a bidirectional iterator over a collection of xml_node) + class PUGIXML_CLASS xml_node_iterator + { + friend class xml_node; + + private: + mutable xml_node _wrap; + xml_node _parent; + + xml_node_iterator(xml_node_struct* ref, xml_node_struct* parent); + + public: + // Iterator traits + typedef ptrdiff_t difference_type; + typedef xml_node value_type; + typedef xml_node* pointer; + typedef xml_node& reference; + + #ifndef PUGIXML_NO_STL + typedef std::bidirectional_iterator_tag iterator_category; + #endif + + // Default constructor + xml_node_iterator(); + + // Construct an iterator which points to the specified node + xml_node_iterator(const xml_node& node); + + // Iterator operators + bool operator==(const xml_node_iterator& rhs) const; + bool operator!=(const xml_node_iterator& rhs) const; + + xml_node& operator*() const; + xml_node* operator->() const; + + const xml_node_iterator& operator++(); + xml_node_iterator operator++(int); + + const xml_node_iterator& operator--(); + xml_node_iterator operator--(int); + }; + + // Attribute iterator (a bidirectional iterator over a collection of xml_attribute) + class PUGIXML_CLASS xml_attribute_iterator + { + friend class xml_node; + + private: + mutable xml_attribute _wrap; + xml_node _parent; + + xml_attribute_iterator(xml_attribute_struct* ref, xml_node_struct* parent); + + public: + // Iterator traits + typedef ptrdiff_t difference_type; + typedef xml_attribute value_type; + typedef xml_attribute* pointer; + typedef xml_attribute& reference; + + #ifndef PUGIXML_NO_STL + typedef std::bidirectional_iterator_tag iterator_category; + #endif + + // Default constructor + xml_attribute_iterator(); + + // Construct an iterator which points to the specified attribute + xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent); + + // Iterator operators + bool operator==(const xml_attribute_iterator& rhs) const; + bool operator!=(const xml_attribute_iterator& rhs) const; + + xml_attribute& operator*() const; + xml_attribute* operator->() const; + + const xml_attribute_iterator& operator++(); + xml_attribute_iterator operator++(int); + + const xml_attribute_iterator& operator--(); + xml_attribute_iterator operator--(int); + }; + + // Named node range helper + class PUGIXML_CLASS xml_named_node_iterator + { + friend class xml_node; + + public: + // Iterator traits + typedef ptrdiff_t difference_type; + typedef xml_node value_type; + typedef xml_node* pointer; + typedef xml_node& reference; + + #ifndef PUGIXML_NO_STL + typedef std::bidirectional_iterator_tag iterator_category; + #endif + + // Default constructor + xml_named_node_iterator(); + + // Construct an iterator which points to the specified node + xml_named_node_iterator(const xml_node& node, const char_t* name); + + // Iterator operators + bool operator==(const xml_named_node_iterator& rhs) const; + bool operator!=(const xml_named_node_iterator& rhs) const; + + xml_node& operator*() const; + xml_node* operator->() const; + + const xml_named_node_iterator& operator++(); + xml_named_node_iterator operator++(int); + + const xml_named_node_iterator& operator--(); + xml_named_node_iterator operator--(int); + + private: + mutable xml_node _wrap; + xml_node _parent; + const char_t* _name; + + xml_named_node_iterator(xml_node_struct* ref, xml_node_struct* parent, const char_t* name); + }; + + // Abstract tree walker class (see xml_node::traverse) + class PUGIXML_CLASS xml_tree_walker + { + friend class xml_node; + + private: + int _depth; + + protected: + // Get current traversal depth + int depth() const; + + public: + xml_tree_walker(); + virtual ~xml_tree_walker(); + + // Callback that is called when traversal begins + virtual bool begin(xml_node& node); + + // Callback that is called for each node traversed + virtual bool for_each(xml_node& node) = 0; + + // Callback that is called when traversal ends + virtual bool end(xml_node& node); + }; + + // Parsing status, returned as part of xml_parse_result object + enum xml_parse_status + { + status_ok = 0, // No error + + status_file_not_found, // File was not found during load_file() + status_io_error, // Error reading from file/stream + status_out_of_memory, // Could not allocate memory + status_internal_error, // Internal error occurred + + status_unrecognized_tag, // Parser could not determine tag type + + status_bad_pi, // Parsing error occurred while parsing document declaration/processing instruction + status_bad_comment, // Parsing error occurred while parsing comment + status_bad_cdata, // Parsing error occurred while parsing CDATA section + status_bad_doctype, // Parsing error occurred while parsing document type declaration + status_bad_pcdata, // Parsing error occurred while parsing PCDATA section + status_bad_start_element, // Parsing error occurred while parsing start element tag + status_bad_attribute, // Parsing error occurred while parsing element attribute + status_bad_end_element, // Parsing error occurred while parsing end element tag + status_end_element_mismatch,// There was a mismatch of start-end tags (closing tag had incorrect name, some tag was not closed or there was an excessive closing tag) + + status_append_invalid_root, // Unable to append nodes since root type is not node_element or node_document (exclusive to xml_node::append_buffer) + + status_no_document_element // Parsing resulted in a document without element nodes + }; + + // Parsing result + struct PUGIXML_CLASS xml_parse_result + { + // Parsing status (see xml_parse_status) + xml_parse_status status; + + // Last parsed offset (in char_t units from start of input data) + ptrdiff_t offset; + + // Source document encoding + xml_encoding encoding; + + // Default constructor, initializes object to failed state + xml_parse_result(); + + // Cast to bool operator + operator bool() const; + + // Get error description + const char* description() const; + }; + + // Document class (DOM tree root) + class PUGIXML_CLASS xml_document: public xml_node + { + private: + char_t* _buffer; + + char _memory[192]; + + // Non-copyable semantics + xml_document(const xml_document&); + const xml_document& operator=(const xml_document&); + + void create(); + void destroy(); + + public: + // Default constructor, makes empty document + xml_document(); + + // Destructor, invalidates all node/attribute handles to this document + ~xml_document(); + + // Removes all nodes, leaving the empty document + void reset(); + + // Removes all nodes, then copies the entire contents of the specified document + void reset(const xml_document& proto); + + #ifndef PUGIXML_NO_STL + // Load document from stream. + xml_parse_result load(std::basic_istream >& stream, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); + xml_parse_result load(std::basic_istream >& stream, unsigned int options = parse_default); + #endif + + // Load document from zero-terminated string. No encoding conversions are applied. + xml_parse_result load(const char_t* contents, unsigned int options = parse_default); + + // Load document from file + xml_parse_result load_file(const char* path, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); + xml_parse_result load_file(const wchar_t* path, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); + + // Load document from buffer. Copies/converts the buffer, so it may be deleted or changed after the function returns. + xml_parse_result load_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); + + // Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data). + // You should ensure that buffer data will persist throughout the document's lifetime, and free the buffer memory manually once document is destroyed. + xml_parse_result load_buffer_inplace(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); + + // Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data). + // You should allocate the buffer with pugixml allocation function; document will free the buffer when it is no longer needed (you can't use it anymore). + xml_parse_result load_buffer_inplace_own(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); + + // Save XML document to writer (semantics is slightly different from xml_node::print, see documentation for details). + void save(xml_writer& writer, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; + + #ifndef PUGIXML_NO_STL + // Save XML document to stream (semantics is slightly different from xml_node::print, see documentation for details). + void save(std::basic_ostream >& stream, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; + void save(std::basic_ostream >& stream, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default) const; + #endif + + // Save XML to file + bool save_file(const char* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; + bool save_file(const wchar_t* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; + + // Get document element + xml_node document_element() const; + }; + +#ifndef PUGIXML_NO_XPATH + // XPath query return type + enum xpath_value_type + { + xpath_type_none, // Unknown type (query failed to compile) + xpath_type_node_set, // Node set (xpath_node_set) + xpath_type_number, // Number + xpath_type_string, // String + xpath_type_boolean // Boolean + }; + + // XPath parsing result + struct PUGIXML_CLASS xpath_parse_result + { + // Error message (0 if no error) + const char* error; + + // Last parsed offset (in char_t units from string start) + ptrdiff_t offset; + + // Default constructor, initializes object to failed state + xpath_parse_result(); + + // Cast to bool operator + operator bool() const; + + // Get error description + const char* description() const; + }; + + // A single XPath variable + class PUGIXML_CLASS xpath_variable + { + friend class xpath_variable_set; + + protected: + xpath_value_type _type; + xpath_variable* _next; + + xpath_variable(); + + // Non-copyable semantics + xpath_variable(const xpath_variable&); + xpath_variable& operator=(const xpath_variable&); + + public: + // Get variable name + const char_t* name() const; + + // Get variable type + xpath_value_type type() const; + + // Get variable value; no type conversion is performed, default value (false, NaN, empty string, empty node set) is returned on type mismatch error + bool get_boolean() const; + double get_number() const; + const char_t* get_string() const; + const xpath_node_set& get_node_set() const; + + // Set variable value; no type conversion is performed, false is returned on type mismatch error + bool set(bool value); + bool set(double value); + bool set(const char_t* value); + bool set(const xpath_node_set& value); + }; + + // A set of XPath variables + class PUGIXML_CLASS xpath_variable_set + { + private: + xpath_variable* _data[64]; + + // Non-copyable semantics + xpath_variable_set(const xpath_variable_set&); + xpath_variable_set& operator=(const xpath_variable_set&); + + xpath_variable* find(const char_t* name) const; + + public: + // Default constructor/destructor + xpath_variable_set(); + ~xpath_variable_set(); + + // Add a new variable or get the existing one, if the types match + xpath_variable* add(const char_t* name, xpath_value_type type); + + // Set value of an existing variable; no type conversion is performed, false is returned if there is no such variable or if types mismatch + bool set(const char_t* name, bool value); + bool set(const char_t* name, double value); + bool set(const char_t* name, const char_t* value); + bool set(const char_t* name, const xpath_node_set& value); + + // Get existing variable by name + xpath_variable* get(const char_t* name); + const xpath_variable* get(const char_t* name) const; + }; + + // A compiled XPath query object + class PUGIXML_CLASS xpath_query + { + private: + void* _impl; + xpath_parse_result _result; + + typedef void (*unspecified_bool_type)(xpath_query***); + + // Non-copyable semantics + xpath_query(const xpath_query&); + xpath_query& operator=(const xpath_query&); + + public: + // Construct a compiled object from XPath expression. + // If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on compilation errors. + explicit xpath_query(const char_t* query, xpath_variable_set* variables = 0); + + // Destructor + ~xpath_query(); + + // Get query expression return type + xpath_value_type return_type() const; + + // Evaluate expression as boolean value in the specified context; performs type conversion if necessary. + // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. + bool evaluate_boolean(const xpath_node& n) const; + + // Evaluate expression as double value in the specified context; performs type conversion if necessary. + // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. + double evaluate_number(const xpath_node& n) const; + + #ifndef PUGIXML_NO_STL + // Evaluate expression as string value in the specified context; performs type conversion if necessary. + // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. + string_t evaluate_string(const xpath_node& n) const; + #endif + + // Evaluate expression as string value in the specified context; performs type conversion if necessary. + // At most capacity characters are written to the destination buffer, full result size is returned (includes terminating zero). + // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. + // If PUGIXML_NO_EXCEPTIONS is defined, returns empty set instead. + size_t evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const; + + // Evaluate expression as node set in the specified context. + // If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on type mismatch and std::bad_alloc on out of memory errors. + // If PUGIXML_NO_EXCEPTIONS is defined, returns empty node set instead. + xpath_node_set evaluate_node_set(const xpath_node& n) const; + + // Get parsing result (used to get compilation errors in PUGIXML_NO_EXCEPTIONS mode) + const xpath_parse_result& result() const; + + // Safe bool conversion operator + operator unspecified_bool_type() const; + + // Borland C++ workaround + bool operator!() const; + }; + + #ifndef PUGIXML_NO_EXCEPTIONS + // XPath exception class + class PUGIXML_CLASS xpath_exception: public std::exception + { + private: + xpath_parse_result _result; + + public: + // Construct exception from parse result + explicit xpath_exception(const xpath_parse_result& result); + + // Get error message + virtual const char* what() const throw(); + + // Get parse result + const xpath_parse_result& result() const; + }; + #endif + + // XPath node class (either xml_node or xml_attribute) + class PUGIXML_CLASS xpath_node + { + private: + xml_node _node; + xml_attribute _attribute; + + typedef void (*unspecified_bool_type)(xpath_node***); + + public: + // Default constructor; constructs empty XPath node + xpath_node(); + + // Construct XPath node from XML node/attribute + xpath_node(const xml_node& node); + xpath_node(const xml_attribute& attribute, const xml_node& parent); + + // Get node/attribute, if any + xml_node node() const; + xml_attribute attribute() const; + + // Get parent of contained node/attribute + xml_node parent() const; + + // Safe bool conversion operator + operator unspecified_bool_type() const; + + // Borland C++ workaround + bool operator!() const; + + // Comparison operators + bool operator==(const xpath_node& n) const; + bool operator!=(const xpath_node& n) const; + }; + +#ifdef __BORLANDC__ + // Borland C++ workaround + bool PUGIXML_FUNCTION operator&&(const xpath_node& lhs, bool rhs); + bool PUGIXML_FUNCTION operator||(const xpath_node& lhs, bool rhs); +#endif + + // A fixed-size collection of XPath nodes + class PUGIXML_CLASS xpath_node_set + { + public: + // Collection type + enum type_t + { + type_unsorted, // Not ordered + type_sorted, // Sorted by document order (ascending) + type_sorted_reverse // Sorted by document order (descending) + }; + + // Constant iterator type + typedef const xpath_node* const_iterator; + + // We define non-constant iterator to be the same as constant iterator so that various generic algorithms (i.e. boost foreach) work + typedef const xpath_node* iterator; + + // Default constructor. Constructs empty set. + xpath_node_set(); + + // Constructs a set from iterator range; data is not checked for duplicates and is not sorted according to provided type, so be careful + xpath_node_set(const_iterator begin, const_iterator end, type_t type = type_unsorted); + + // Destructor + ~xpath_node_set(); + + // Copy constructor/assignment operator + xpath_node_set(const xpath_node_set& ns); + xpath_node_set& operator=(const xpath_node_set& ns); + + // Get collection type + type_t type() const; + + // Get collection size + size_t size() const; + + // Indexing operator + const xpath_node& operator[](size_t index) const; + + // Collection iterators + const_iterator begin() const; + const_iterator end() const; + + // Sort the collection in ascending/descending order by document order + void sort(bool reverse = false); + + // Get first node in the collection by document order + xpath_node first() const; + + // Check if collection is empty + bool empty() const; + + private: + type_t _type; + + xpath_node _storage; + + xpath_node* _begin; + xpath_node* _end; + + void _assign(const_iterator begin, const_iterator end); + }; +#endif + +#ifndef PUGIXML_NO_STL + // Convert wide string to UTF8 + std::basic_string, std::allocator > PUGIXML_FUNCTION as_utf8(const wchar_t* str); + std::basic_string, std::allocator > PUGIXML_FUNCTION as_utf8(const std::basic_string, std::allocator >& str); + + // Convert UTF8 to wide string + std::basic_string, std::allocator > PUGIXML_FUNCTION as_wide(const char* str); + std::basic_string, std::allocator > PUGIXML_FUNCTION as_wide(const std::basic_string, std::allocator >& str); +#endif + + // Memory allocation function interface; returns pointer to allocated memory or NULL on failure + typedef void* (*allocation_function)(size_t size); + + // Memory deallocation function interface + typedef void (*deallocation_function)(void* ptr); + + // Override default memory management functions. All subsequent allocations/deallocations will be performed via supplied functions. + void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate); + + // Get current memory management functions + allocation_function PUGIXML_FUNCTION get_memory_allocation_function(); + deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function(); +} + +#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC)) +namespace std +{ + // Workarounds for (non-standard) iterator category detection for older versions (MSVC7/IC8 and earlier) + std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_node_iterator&); + std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_attribute_iterator&); + std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_named_node_iterator&); +} +#endif + +#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC) +namespace std +{ + // Workarounds for (non-standard) iterator category detection + std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_node_iterator&); + std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_attribute_iterator&); + std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_named_node_iterator&); +} +#endif + +#endif + +/** + * Copyright (c) 2006-2014 Arseny Kapoulkine + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ From 0394394126a4369a5f2382cb4fe634013ebf9e75 Mon Sep 17 00:00:00 2001 From: akorobka Date: Fri, 25 Mar 2016 02:00:46 -0400 Subject: [PATCH 08/27] More MacOS X changes --- src/C++/Container.h | 4 ++++ src/C++/FileStore.cpp | 2 ++ src/C++/Message.cpp | 5 ++++- src/C++/Utility.h | 52 +++++++++++++++++++++++++++++++++---------- 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/src/C++/Container.h b/src/C++/Container.h index 036027586..e057f0003 100644 --- a/src/C++/Container.h +++ b/src/C++/Container.h @@ -707,7 +707,11 @@ class avlTree typedef BaseHook* node_ptr; typedef const BaseHook* const_node_ptr; +#ifdef __clang__ friend class TreeTraits::template Base; +#else + friend typename TreeTraits::template Base; +#endif public: typedef typename TreeTraits::template Algorithms algorithms; typedef typename TreeTraits::template Base base_type; diff --git a/src/C++/FileStore.cpp b/src/C++/FileStore.cpp index 19ffcc25d..2a834f020 100644 --- a/src/C++/FileStore.cpp +++ b/src/C++/FileStore.cpp @@ -20,7 +20,9 @@ #ifdef _MSC_VER #include "stdafx.h" #else +#ifndef __MACH__ #define _XOPEN_SOURCE 500 +#endif #define _LARGEFILE64_SOURCE #include "config.h" #endif diff --git a/src/C++/Message.cpp b/src/C++/Message.cpp index 96201f932..cb0fdf963 100644 --- a/src/C++/Message.cpp +++ b/src/C++/Message.cpp @@ -245,7 +245,10 @@ ALIGN_DECL_DEFAULT static const DataDictionary::FieldPresenceMap::key_type group ALIGN_DECL_DEFAULT static const DataDictionary::FieldPresenceMap::key_type group_key_trailer_ = DataDictionary::FieldPresenceMap::key_type("_trailer_"); -inline void HEAVYUSE +#ifndef __MACH__ +inline +#endif +void HEAVYUSE Message::setString( const char* data, std::size_t length, bool doValidation, const DataDictionary* pSessionDataDictionary, diff --git a/src/C++/Utility.h b/src/C++/Utility.h index 80f813151..b73c0c3ff 100644 --- a/src/C++/Utility.h +++ b/src/C++/Utility.h @@ -115,7 +115,11 @@ typedef int socklen_t; #endif #endif #if defined(__MACH__) +#include +#include +#include #include +#include #endif ///////////////////////////////////////////// #endif @@ -272,7 +276,11 @@ namespace FIX #define FILE_POSITION_CUR (SEEK_CUR) #define FILE_POSITION_END (SEEK_END) typedef off_t FILE_OFFSET_TYPE; -#define FILE_OFFSET_TYPE_MOD "L" +#ifdef __MACH__ +#define FILE_OFFSET_TYPE_MOD "ll" +#else +#define FILE_OFFSET_TYPE_MOD "L" +#endif #define FILE_OFFSET_TYPE_SET(offt, value) ((offt) = (value)) #define FILE_OFFSET_TYPE_VALUE(offt) ((long long)offt) #define FILE_OFFSET_TYPE_ADDR(offt) ((long long*)&(offt)) @@ -545,17 +553,17 @@ namespace FIX { return (double)m_data.tv_sec + (double)m_data.tv_nsec / 1.0E-9; } - }; + }; // TickCount #endif -#if defined(_MSC_VER) class Semaphore { - HANDLE m_sem; Semaphore( const Semaphore & ); Semaphore & operator = ( const Semaphore & ); +#if defined(_MSC_VER) + HANDLE m_sem; public: - Semaphore(int count = 0) + Semaphore(int count = 0) { m_sem = ::CreateSemaphore(NULL, (std::numeric_limits::max)(), count, NULL); } @@ -575,15 +583,35 @@ namespace FIX { return ::ReleaseSemaphore(m_sem, 1, NULL) != 0; } - }; + +#elif defined(__MACH__) + dispatch_semaphore_t m_sem; + public: + Semaphore( int count = 0 ) + { + m_sem = ::dispatch_semaphore_create( count ); + } + ~Semaphore() + { + ::dispatch_release( m_sem ); + } + bool wait() + { + return 0 == ::dispatch_semaphore_wait( m_sem, DISPATCH_TIME_FOREVER ); + } + bool try_wait() + { + return 0 == ::dispatch_semaphore_wait( m_sem, DISPATCH_TIME_NOW ); + } + bool post() + { + ::dispatch_semaphore_signal( m_sem ); + return true; + } #else - class Semaphore - { sem_t m_sem; - Semaphore( const Semaphore & ); - Semaphore & operator = ( const Semaphore & ); public: - Semaphore( int count = 0 ) + Semaphore( int count = 0 ) { ::sem_init( &m_sem, 0, count ); } @@ -603,8 +631,8 @@ namespace FIX { return 0 == ::sem_post( &m_sem ); } - }; #endif + }; // Semaphore #if defined(_MSC_VER) static inline void SchedYield() { ::SwitchToThread(); } From 29289f2aded5eec91fa96137dc131bb1177403e0 Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Sat, 26 Mar 2016 02:21:50 -0400 Subject: [PATCH 09/27] Performance improvements Increase SSO size to 24 bytes, serialize directly into the SSO storage, optimize integer serialization again, clean up type conversions. 10% throughput improvement. --- README | 70 +-- examples/executor/C++/Application.cpp | 9 +- examples/latency/Application.cpp | 4 +- examples/tradeclient/Application.cpp | 13 +- src/C++/Exceptions.h | 21 +- src/C++/Field.h | 122 ++-- src/C++/FieldConvertors.cpp | 20 +- src/C++/FieldConvertors.h | 563 +++++++++++++----- src/C++/FieldMap.h | 34 +- src/C++/FileLog.h | 3 +- src/C++/FixString.h | 183 ++++-- src/C++/ItemAllocator.h | 15 +- src/C++/Message.cpp | 10 +- src/C++/Message.h | 2 +- src/C++/MessageSorters.h | 2 +- src/C++/Mutex.h | 87 ++- src/C++/Session.cpp | 20 +- src/C++/Session.h | 25 +- src/C++/Utility.cpp | 106 ++-- src/C++/Utility.h | 815 ++++++++++++++++---------- src/C++/quickfix_vs11.vcxproj | 5 +- 21 files changed, 1405 insertions(+), 724 deletions(-) diff --git a/README b/README index 1830e7585..950433813 100644 --- a/README +++ b/README @@ -83,7 +83,7 @@ OPTIONAL DEPENDENCIES FOR EXTRA PERFORMANCE PLATFORM-SPECIFIC NOTES Use --with-sso configure option to enable short string optimization on platforms - which use GLIBC for extra 10-15% improvement. This does not apply to g++ versions + which use GLIBC for extra 15-20% improvement. This does not apply to g++ versions 5.2 and above or Visual Studio builds as string implementations shipped with them already employ this optimization. @@ -125,10 +125,10 @@ CODEC: Measures encoding and decoding performance for a NewOrderSingle message. Results (usec per message, lower is better): FIX8 Quickfix Quickfix quickerfix - 1.3.2 1.13.3 1.14.3 20160106 + 1.3.2 1.13.3 1.14.3 20160325 -to string 2.25516 8.17674 4.38878 0.940918 -from string 7.6158 25.7686 9.422 2.91121 +to string 2.25516 8.17674 4.38878 0.907742 +from string 7.6158 25.7686 9.422 2.59047 @@ -141,94 +141,94 @@ PT: Measures performance of various QuickFix subsystems Results (operations per second, higher is better): Quickfix Quickfix quickerfix - 1.13.3 1.14.3 20160106 + 1.13.3 1.14.3 20160325 -Converting integers to strings: 2.17391e+07 2.5e+07 2.58512e+07 +Converting integers to strings: 2.17391e+07 2.5e+07 2.14848e+07 -Converting strings to integers: 1.66667e+08 2.5e+08 3.0858e+08 +Converting strings to integers: 1.66667e+08 2.5e+08 3.11315e+08 -Converting doubles to strings: 1.10375e+06 1.04712e+06 8.69092e+06 +Converting doubles to strings: 1.10375e+06 1.04712e+06 1.01414e+07 -Converting strings to doubles: 4.6729e+06 5.26316e+07 1.05441e+08 +Converting strings to doubles: 4.6729e+06 5.26316e+07 8.98024e+07 -Creating Heartbeat messages: 1.00604e+06 1.54083e+06 4.82279e+06 +Creating Heartbeat messages: 1.00604e+06 1.54083e+06 5.18293e+06 -Identifying message types: 6.99301e+06 6.99301e+06 1.17918e+07 +Identifying message types: 6.99301e+06 6.99301e+06 1.17495e+07 Serializing Heartbeat messages -to strings: 847458 1.20627e+06 3.11025e+06 +to strings: 847458 1.20627e+06 3.29893e+06 Serializing Heartbeat messages -from strings: 392003 625391 2.40679e+06 +from strings: 392003 625391 2.30322e+06 Serializing Heartbeat messages -from strings and validation: - 541419 2.25198e+06 +from strings and validation: - 541419 2.221e+06 Creating NewOrderSingle -messages: 331785 406669 1.45719e+06 - (packed): - - 1.70535e+06 +messages: 331785 406669 1.67546e+06 + (packed): - - 2.02507e+06 Serializing NewOrderSingle -messages to strings: 652316 925069 2.2555e+06 +messages to strings: 652316 925069 2.41367e+06 Serializing NewOrderSingle -messages from strings: 152346 290698 1.10019e+06 +messages from strings: 152346 290698 1.08759e+06 Serializing NewOrderSingle messages from strings -and validation: - 261438 927520 +and validation: - 261438 947738 Creating QuoteRequest -messages: 13621.9 20406.5 57489.8 - (packed): - - 84028.4 - (packed, in place): - - 136460 +messages: 13621.9 20406.5 62066.7 + (packed): - - 92448 + (packed, in place): - - 145447 Serializing QuoteRequest -messages to strings: 174490 239292 507281 +messages to strings: 174490 239292 556848 Serializing QuoteRequest -messages from strings: 16942.8 32526.7 119041 +messages from strings: 16942.8 32526.7 110910 Serializing QuoteRequest messages from strings -and validation: - 30869 76585.5 +and validation: - 30869 77132.7 Reading fields -from QuoteRequest message: 28681.2 72695.6 131851 +from QuoteRequest message: 28681.2 72695.6 122932 Storing NewOrderSingle -messages: 299670 281057 346428 +messages: 299670 281057 347474 Validating NewOrderSingle messages without -data dictionary: 5.64972e+06 5.74713e+06 1.26488e+07 +data dictionary: 5.64972e+06 5.74713e+06 1.27609e+07 Validating NewOrderSingle -messages with data dictionary: 345901 457247 1.02659e+06 +messages with data dictionary: 345901 457247 997942 Validating QuoteRequest messages without -data dictionary: 9.80392e+06 9.34579e+06 1.95497e+07 +data dictionary: 9.80392e+06 9.34579e+06 1.99751e+07 Validating QuoteRequest -messages with data dictionary: 478240 548847 836525 +messages with data dictionary: 478240 548847 854805 Sending/Receiving NewOrderSingle/ExecutionReports -on Socket 59883.8 92489.8 289035 +on Socket 59883.8 92489.8 341965 Sending/Receiving NewOrderSingle/ExecutionReport -on ThreadedSocket 59862.3 92850.5 297311 +on ThreadedSocket 59862.3 92850.5 341662 Sending/Receiving NewOrderSingle/ExecutionReports -on Socket with data dictionary - 70681.4 207909 +on Socket with data dictionary - 70681.4 226732 Sending/Receiving NewOrderSingle/ExecutionReports on ThreadedSocket -with data dictionary - 73367.6 214496 +with data dictionary - 73367.6 231371 diff --git a/examples/executor/C++/Application.cpp b/examples/executor/C++/Application.cpp index cdacb5c9d..ab52432cc 100644 --- a/examples/executor/C++/Application.cpp +++ b/examples/executor/C++/Application.cpp @@ -147,13 +147,6 @@ void Application::onMessage( const FIX41::NewOrderSingle& message, catch ( FIX::SessionNotFound& ) {} } -static double get_timestamp() { - struct timespec ts; - ::clock_gettime( CLOCK_REALTIME, &ts ); - double v = (ts.tv_sec * 1000000 + ts.tv_nsec / 1000) % 1000000000; - return v; -} - void Application::onMessage( const FIX42::NewOrderSingle& message, const FIX::SessionID& sessionID ) { @@ -196,7 +189,7 @@ void Application::onMessage( const FIX42::NewOrderSingle& message, if( message.isSet(account) ) executionReport.setField( message.get(account) ); - executionReport.addField( FIX::DoubleField::Pack( 76767, get_timestamp() ) ); + executionReport.addField( FIX::DoubleField::Pack( 76767, (FIX::Util::Sys::TickCount::now() - FIX::Util::Sys::TickCount()).seconds() ) ); try { FIX::Session::sendToTarget( executionReport, sessionID ); diff --git a/examples/latency/Application.cpp b/examples/latency/Application.cpp index 6ed5c3f5c..396018fb7 100644 --- a/examples/latency/Application.cpp +++ b/examples/latency/Application.cpp @@ -29,8 +29,8 @@ #include "quickfix/fix42/ExecutionReport.h" Application::Application(std::size_t N) -: logonCount_(0), receiveCount_(0), ready_(1), - tick_(FIX::Util::Sys::TickCount::now()) +: tick_(FIX::Util::Sys::TickCount::now()), ready_(1), + logonCount_(0), receiveCount_(0) { totalSec_ = 0; spans_ = new double[N]; diff --git a/examples/tradeclient/Application.cpp b/examples/tradeclient/Application.cpp index 648949cbd..8d6c331cf 100644 --- a/examples/tradeclient/Application.cpp +++ b/examples/tradeclient/Application.cpp @@ -26,7 +26,6 @@ #endif #include -#include #include "Application.h" #include "quickfix/Mutex.h" @@ -99,12 +98,12 @@ FIX::Side last_Side(FIX::Side_BUY); std::auto_ptr last_order; std::queue q_out; -boost::mutex q_lock; -boost::condition_variable q_cond; +FIX::Mutex q_lock; +FIX::CondVar q_cond; long q_on_send() { gettimeofday(&last_out, NULL); - boost::unique_lock l(q_lock); + FIX::Locker l(q_lock); q_out.push(last_out); return ++rq_sent; } @@ -113,7 +112,7 @@ void q_on_receive( const FIX::Message& message ) { ::gettimeofday(&last_in, NULL); - boost::unique_lock l(q_lock); + FIX::Locker l(q_lock); if (!q_out.empty()) { timeval first_out = q_out.front(); @@ -146,7 +145,7 @@ void q_on_receive( const FIX::Message& message ) void show_buckets(unsigned long* buckets, std::size_t step, std::size_t sz) { - for (int i = 0; i <= sz; i++) + for (std::size_t i = 0; i <= sz; i++) { std::cout << " [" << i * step << " - "; if (i < sz) @@ -159,7 +158,7 @@ void show_buckets(unsigned long* buckets, std::size_t step, std::size_t sz) void wait_receive(long rq) { - boost::unique_lock l(q_lock); + FIX::Locker l(q_lock); while (rq > rp_matched) q_cond.wait(l); } diff --git a/src/C++/Exceptions.h b/src/C++/Exceptions.h index ce7fbe475..98331db92 100644 --- a/src/C++/Exceptions.h +++ b/src/C++/Exceptions.h @@ -248,23 +248,30 @@ struct IOException : public Exception struct SocketException : public Exception { SocketException() - : Exception( "Socket Error", errorToWhat() ) {} + : Exception( "Socket Error", errorToWhat() ), error( errorValue() ) {} SocketException( const std::string& what ) - : Exception( "Socket Error", what ) {} + : Exception( "Socket Error", what ), error( errorValue() ) {} - std::string errorToWhat() + static int errorValue() + { +#ifdef _MSC_VER + return WSAGetLastError(); +#else + return errno; +#endif + } + + static std::string errorToWhat() { #ifdef _MSC_VER - error = WSAGetLastError(); char buffer[2048]; - FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, + FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, 2048, NULL ); return buffer; #else - error = errno; - return strerror( error ); + return strerror( errno ); #endif } diff --git a/src/C++/Field.h b/src/C++/Field.h index a2cb444a8..a24d2b2cc 100644 --- a/src/C++/Field.h +++ b/src/C++/Field.h @@ -206,22 +206,24 @@ class FieldBase { return m_tag < field.m_tag; } /// Push the string representation of the Field into an abstract buffer - template S& pushValue(S& sink) const + template S& HEAVYUSE pushValue(S& sink) const { - return ( m_calculated & C_DATA) - ? sink.append(String::c_str(m_data), String::length(m_data)) - : sink.append(m_tag, m_tagLength - 1, + return +// (m_calculated & C_DATA) +// ? sink.append(String::c_str(m_data), String::length(m_data)) +// : + sink.append(m_tag, m_tagLength - 1, String::c_str(m_string), String::length(m_string)); } /// Push the string representation of the Field into a string buffer - std::string& pushValue(std::string& sink) const + std::string& HEAVYUSE pushValue(std::string& sink) const { - if( m_calculated & C_DATA) - sink.append(m_data); - else +// if (m_calculated & C_DATA) +// sink.append(m_data); +// else { - Util::Tag::generate(sink, m_tag, m_tagLength - 1); + Util::Tag::append(sink, m_tag, m_tagLength - 1); sink.push_back('='); String::append(sink, m_string); sink.push_back('\001'); @@ -294,9 +296,8 @@ class FieldBase { calculate_metrics(); - m_data.clear(); m_data.reserve(m_length); - Util::Tag::generate(m_data, m_tag, m_tagLength - 1); + Util::Tag::set(m_data, m_tag, m_tagLength - 1); m_data.push_back('='); String::append(m_data, m_string); m_data.push_back('\001'); @@ -618,10 +619,7 @@ class CharField : public FieldBase explicit Data(char data) : m_data(data) {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data); - } + { Convertor::set(s, m_data); } operator string_type() const { return Convertor::convert(m_data); } @@ -700,10 +698,7 @@ class DoubleField : public FieldBase {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data, m_padded, m_round); - } + { Convertor::set(s, m_data, m_padded, m_round); } operator string_type () const { return Convertor::convert(m_data, m_padded, m_round); } @@ -783,10 +778,7 @@ class IntField : public FieldBase Data(int data) : m_data(data) {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data); - } + { Convertor::set(s, m_data); } operator string_type () const { return Convertor::convert(m_data); } @@ -850,6 +842,65 @@ class IntField : public FieldBase }; +/// Non-standard field that contains a positive integer value +class PositiveIntField : public FieldBase +{ + struct Data + { + typedef PositiveIntConvertor Convertor; + + int m_data; + + Data(int data) : m_data(data) {} + + template void assign_to(S& s) const + { Convertor::set(s, m_data); } + + operator string_type () const + { return Convertor::convert(m_data); } + }; + +protected: + + template struct Packed : public Data + { + typedef PositiveIntField result_type; + + explicit Packed( int data ) + : Data( data ) {} + + static inline int getField() { return Tag; } + static inline char getTagLength() + { return FieldTag::Traits::length; } + static inline short getTagChecksum() + { return FieldTag::Traits::checksum; } + + private: + Packed() : Data(0) {} + }; +/* + template + explicit PositiveIntField( FieldTag::Traits t ) + : FieldBase( t ) {} + + template + explicit PositiveIntField( FieldTag::Traits, int value) + : FieldBase( Packed(value) ) {} +*/ +public: + + struct Pack : public FieldTag, public Data + { + typedef PositiveIntField result_type; + + explicit Pack( int field, int data ) + : FieldTag(field), Data( data ) {} + + private: + Pack() : FieldTag(0), Data(0) {} + }; +}; + /// Field that contains a boolean value class BoolField : public FieldBase { @@ -862,10 +913,7 @@ class BoolField : public FieldBase Data(bool data) : m_data(data) {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data); - } + { Convertor::set(s, m_data); } operator string_type () const { return Convertor::convert(m_data); } @@ -942,10 +990,7 @@ class UtcTimeStampField : public FieldBase : m_data(data), m_msec(showMilliseconds) {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data, m_msec); - } + { Convertor::set(s, m_data, m_msec); } operator string_type () const { return Convertor::convert(m_data, m_msec); } @@ -1031,10 +1076,7 @@ class UtcDateField : public FieldBase : m_data(data) {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data); - } + { Convertor::set(s, m_data); } operator string_type () const { return Convertor::convert(m_data); } @@ -1118,10 +1160,7 @@ class UtcTimeOnlyField : public FieldBase : m_data(data), m_msec(showMilliseconds) {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data, m_msec); - } + { Convertor::set(s, m_data, m_msec); } operator string_type () const { return Convertor::convert(m_data, m_msec); } @@ -1207,10 +1246,7 @@ class CheckSumField : public FieldBase : m_data(data) {} template void assign_to(S& s) const - { - s.clear(); - Convertor::generate(s, m_data); - } + { Convertor::set(s, m_data); } operator string_type () const { return Convertor::convert(m_data); } diff --git a/src/C++/FieldConvertors.cpp b/src/C++/FieldConvertors.cpp index 7c5955e48..b108ded35 100644 --- a/src/C++/FieldConvertors.cpp +++ b/src/C++/FieldConvertors.cpp @@ -27,20 +27,6 @@ namespace FIX { -ALIGN_DECL_DEFAULT IntConvertor::NumberRange IntConvertor::padded_numbers[100] = -{ -{ {'0','0'} }, { {'0','1'} }, { {'0','2'} }, { {'0','3'} }, { {'0','4'} }, { {'0','5'} }, { {'0','6'} }, { {'0','7'} }, { {'0','8'} }, { {'0','9'} }, -{ {'1','0'} }, { {'1','1'} }, { {'1','2'} }, { {'1','3'} }, { {'1','4'} }, { {'1','5'} }, { {'1','6'} }, { {'1','7'} }, { {'1','8'} }, { {'1','9'} }, -{ {'2','0'} }, { {'2','1'} }, { {'2','2'} }, { {'2','3'} }, { {'2','4'} }, { {'2','5'} }, { {'2','6'} }, { {'2','7'} }, { {'2','8'} }, { {'2','9'} }, -{ {'3','0'} }, { {'3','1'} }, { {'3','2'} }, { {'3','3'} }, { {'3','4'} }, { {'3','5'} }, { {'3','6'} }, { {'3','7'} }, { {'3','8'} }, { {'3','9'} }, -{ {'4','0'} }, { {'4','1'} }, { {'4','2'} }, { {'4','3'} }, { {'4','4'} }, { {'4','5'} }, { {'4','6'} }, { {'4','7'} }, { {'4','8'} }, { {'4','9'} }, -{ {'5','0'} }, { {'5','1'} }, { {'5','2'} }, { {'5','3'} }, { {'5','4'} }, { {'5','5'} }, { {'5','6'} }, { {'5','7'} }, { {'5','8'} }, { {'5','9'} }, -{ {'6','0'} }, { {'6','1'} }, { {'6','2'} }, { {'6','3'} }, { {'6','4'} }, { {'6','5'} }, { {'6','6'} }, { {'6','7'} }, { {'6','8'} }, { {'6','9'} }, -{ {'7','0'} }, { {'7','1'} }, { {'7','2'} }, { {'7','3'} }, { {'7','4'} }, { {'7','5'} }, { {'7','6'} }, { {'7','7'} }, { {'7','8'} }, { {'7','9'} }, -{ {'8','0'} }, { {'8','1'} }, { {'8','2'} }, { {'8','3'} }, { {'8','4'} }, { {'8','5'} }, { {'8','6'} }, { {'8','7'} }, { {'8','8'} }, { {'8','9'} }, -{ {'9','0'} }, { {'9','1'} }, { {'9','2'} }, { {'9','3'} }, { {'9','4'} }, { {'9','5'} }, { {'9','6'} }, { {'9','7'} }, { {'9','8'} }, { {'9','9'} } -}; - ALIGN_DECL_DEFAULT const double DoubleConvertor::m_mul1[8] = { 1E1, 1E2, 1E3, 1E4, 1E5, 1E6, 1E7, 1E8 }; ALIGN_DECL_DEFAULT const double DoubleConvertor::m_mul8[8] = { 1E8, 1E16, 1E24, 1E32, 1E40, 1E48, 1E56, 1E64 }; @@ -81,8 +67,8 @@ int HEAVYUSE DoubleConvertor::Proxy::generate(char* buf) const int64_t whole; uint64_t frac; double tmp, diff = 0.0; - int count, not_negative = 1; - int precision = m_padded; + std::size_t count, not_negative = 1; + std::size_t precision = m_padded; /* we'll work in positive values and deal with the negative sign issue later */ @@ -95,7 +81,7 @@ int HEAVYUSE DoubleConvertor::Proxy::generate(char* buf) const /* may have fractional part */ whole = (int64_t) value; - count = Util::Long::numDigits(whole) - (whole == 0); + count = Util::ULong::numDigits(whole) - (whole == 0); if (precision) { if (!m_round && value != 0) diff --git a/src/C++/FieldConvertors.h b/src/C++/FieldConvertors.h index 764b985d3..08e132045 100644 --- a/src/C++/FieldConvertors.h +++ b/src/C++/FieldConvertors.h @@ -43,14 +43,14 @@ struct StringConvertor static std::size_t RequiredSize(value_type v) { return ::strlen(v); } static std::size_t RequiredSize(const std::string& v) { return String::size(v); } - template static void generate(S& result, const S& value) + template static void set(S& result, const S& value) { - result += value; + result = value; } - template static void generate(S& result, const char* value, std::size_t size = 0) + template static void set(S& result, const char* value, std::size_t size = 0) { - result.append( value, size ? size : ::strlen(value) ); + result.assign( value, size ? size : ::strlen(value) ); } template static bool parse(const char* str, const char* end, S& result) @@ -75,6 +75,7 @@ struct StringConvertor { return true; } }; + /// Converts integer to/from a string struct IntConvertor { @@ -83,89 +84,57 @@ struct IntConvertor typedef int value_type; typedef unsigned int unsigned_value_type; - union NumberRange { - char c[2]; - uint16_t u; - }; - - static ALIGN_DECL_DEFAULT NumberRange padded_numbers[100]; /* string representations of "00" to "99" */ - static const std::size_t MaxValueSize = std::numeric_limits::digits10 + 2; + static const std::size_t BufferSize = MaxValueSize > 16 ? MaxValueSize : 16; static std::size_t RequiredSize(value_type v = 0) { return MaxValueSize; } class Proxy { value_type m_value; -#if defined(__INTEL_COMPILER) - inline int generate(char* buffer) const - { - union { char* pc; uint16_t* pu; } b = { buffer + MaxValueSize }; - value_type value = m_value; - unsigned_value_type u, v = value < 0 ? ~value + 1 : value; - do { *--b.pu = padded_numbers[v % 100].u; u = v; } while ( (v /= 100) ); - *(b.pc -= (u >= 10)) = '-'; - return b.pc - buffer + (value >= 0); - } -#elif defined(_MSC_VER) - inline int generate(char* buffer) const + public: + Proxy(value_type value) : m_value(value) {} + + // return length, buf has enough space for a longest representation + inline unsigned operator()(char* buf) { - char* p=buffer + MaxValueSize - 1; + *buf = '-'; value_type value = m_value; - unsigned_value_type v, u = value < 0 ? ~value + 1 : value; - do { v = u / 10; *p-- = (char)('0' + (u - v * 10)); } while( (u = v) ); - *p = '-'; - return p - buffer + (value >= 0); + bool neg = value < 0; + unsigned_value_type v = neg ? unsigned(~value) + 1 : value; + std::size_t len = Util::UInt::numDigits(v); + Util::UInt::generate(buf += neg, v, len); + buf[len] = '\0'; + return len + neg; } -#else - inline int generate(char* buffer) const - { - char* p=buffer; - value_type value = m_value; - unsigned_value_type v, u = value < 0 ? ~value + 1 : value; - do { v = u / 10; *p++ = (char)('0' + (u - v * 10)); } while( (u = v) ); - *p = '-'; - return ((p - buffer) + (value < 0)); - } -#endif - - public: - Proxy(value_type value) : m_value(value) {} template S convert_to() const { - char buf[MaxValueSize]; -#if defined(_MSC_VER) || defined(__INTEL_COMPILER) - int offt = generate(buf); - return S(buf + offt, MaxValueSize - offt); -#else -#ifdef HAVE_BOOST - return S(boost::rbegin(buf) + (MaxValueSize - generate(buf)), boost::rend(buf)); -#else - return S(Util::CharBuffer::reverse_iterator(buf + generate(buf)), - Util::CharBuffer::reverse_iterator((char*)buf)); -#endif -#endif + S s; + assign_to(s); + return s; } - template void append_to(S& s) const + template void assign_to(S& s) const { - char buf[MaxValueSize]; -#if defined(_MSC_VER) || defined(__INTEL_COMPILER) - int offt = generate(buf); - s.append(buf + offt, MaxValueSize - offt); -#else -#ifdef HAVE_BOOST - s.append(boost::rbegin(buf) + (MaxValueSize - generate(buf)), boost::rend(buf)); -#else - s.append(Util::CharBuffer::reverse_iterator(buf + generate(buf)), - Util::CharBuffer::reverse_iterator((char*)buf)); -#endif -#endif + value_type value = m_value; + bool neg = value < 0; + unsigned_value_type v = neg ? unsigned(~value) + 1 : value; + std::size_t len = Util::UInt::numDigits(v); + s.resize(len + neg); + char* buf = const_cast(String::data(s)); + *buf = '-'; + Util::UInt::generate(buf + neg, v, len); } }; - template static void generate(S& result, int value) + template static void set(S& result, int value) { - Proxy(value).append_to(result); + Proxy(value).assign_to(result); + } + + static std::string convert( int value ); + template static S convert( int value ) + { + return Proxy(value).convert_to(); } template @@ -220,16 +189,6 @@ struct IntConvertor return false; } - static std::string convert( int value ) - { - return Proxy(value).convert_to(); - } - - template static S convert( int value ) - { - return Proxy(value).convert_to(); - } - static inline int convert( const String::value_type& value ) throw( FieldConvertError ) { @@ -247,9 +206,93 @@ struct IntConvertor } }; +#ifdef ENABLE_SSO +template <> inline std::string IntConvertor::Proxy::convert_to() const +{ + char buf[16]; + buf[0] = '-'; + value_type value = m_value; + bool neg = value < 0; + unsigned_value_type v = neg ? unsigned(~value) + 1 : value; + std::size_t len = Util::UInt::numDigits(v); + Util::UInt::generate(buf + neg, v, len); + return std::string(buf, buf + neg + len); +} +template <> inline String::short_string_type HEAVYUSE +IntConvertor::convert( int value ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value)); +} +template <> inline void HEAVYUSE +IntConvertor::set(String::short_string_type& result, int value) +{ + result.short_assign(Proxy(value)); +} +#endif + +inline std::string IntConvertor::convert( int value ) +{ + return Proxy(value).convert_to(); +} + /// Converts positive integer -struct PositiveIntConvertor +struct PositiveIntConvertor { + public: + + typedef unsigned int value_type; + typedef unsigned int unsigned_value_type; + + static const std::size_t MaxValueSize = std::numeric_limits::digits10 + 2; + static const std::size_t BufferSize = MaxValueSize > 16 ? MaxValueSize : 16; + static std::size_t RequiredSize(value_type v = 0) { return MaxValueSize; } + + + class Proxy { + value_type m_value; + + public: + Proxy(value_type value) : m_value(value) {} + + unsigned operator()(char* buf) + { + value_type value = m_value; + std::size_t len = Util::UInt::numDigits(value); + Util::UInt::generate(buf, value, len); + buf[len] = '\0'; + return len; + } + + template S convert_to() const + { + S s; + assign_to(s); + return s; + } + template void assign_to(S& s) const + { + value_type value = m_value; + std::size_t len = Util::UInt::numDigits(value); + s.resize(len); + Util::UInt::generate(const_cast(String::data(s)), value, len); + } + }; + + template static void set(S& result, int value) + { + Proxy(value).assign_to(result); + } + + static std::string convert( int value ) + { + return Proxy(value).convert_to(); + } + + template static S convert( int value ) + { + return Proxy(value).convert_to(); + } + template static bool parse( const char* str, const char* end, T& result ) { @@ -300,6 +343,20 @@ struct PositiveIntConvertor } }; +#ifdef ENABLE_SSO +template <> inline String::short_string_type HEAVYUSE +PositiveIntConvertor::convert( int value ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value)); +} +template <> inline void HEAVYUSE +PositiveIntConvertor::set(String::short_string_type& result, int value) +{ + result.short_assign(Proxy(value)); +} +#endif + + /// Converts checksum to/from a string struct CheckSumConvertor { @@ -308,25 +365,36 @@ struct CheckSumConvertor static const std::size_t MaxValueSize = 3; static std::size_t RequiredSize(value_type v = 0) { return MaxValueSize; } - template static void generate(S& result, int value) - throw( FieldConvertError ) + class Proxy { + value_type m_value; + public: + Proxy( int value ) : m_value(value) {} + + unsigned operator()(uint32_t* buffer) + { + uint32_t b, n, v = (uint32_t)m_value; + n = v / 10; + b = (v -= n * 10) << 16; + v = n / 10; + *buffer = b | (0x303030 + v + ((n - v * 10) << 8)); + return 3; + } + }; + + template static void set(S& result, int value) { - unsigned char n, v = (unsigned char)value; - if ( (value - v) == 0 ) - { - n = v / 100; - result.push_back('0' + n); - v -= n * 100; - n = v / 10; - result.push_back('0' + n); - v -= n * 10; - result.push_back('0' + v); - return; - } - throw FieldConvertError(); + unsigned n, v = (unsigned)value; + result.clear(); + n = v / 100; + result.push_back('0' + n); + v -= n * 100; + n = v / 10; + result.push_back('0' + n); + v -= n * 10; + result.push_back('0' + v); } - static void generate(char* result, unsigned char v) + static inline void write(char* result, unsigned char v) { unsigned char n; n = v / 100; @@ -389,6 +457,27 @@ struct CheckSumConvertor } }; +#if defined(ENABLE_SSO) && (defined(__x86_64__) || defined(__i386__)) +template <> inline String::short_string_type HEAVYUSE +CheckSumConvertor::convert( int value ) +throw ( FieldConvertError ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value)); +} +template <> inline void HEAVYUSE +CheckSumConvertor::set(String::short_string_type& result, int value) +{ + Util::CharBuffer::Fixed<4> b; + uint32_t n, v = (uint32_t)value; + n = v / 10; + b.value = (v -= n * 10) << 16; + v = n / 10; + b.value |= 0x303030 + v + ((n - v * 10) << 8); + result.assign(b, 3); +} +#endif + + /// Converts double to/from a string struct DoubleConvertor { @@ -454,48 +543,40 @@ struct DoubleConvertor typedef double value_type; - static const int MaxPrecision = 15; + static const std::size_t MaxPrecision = 15; static const std::size_t MaxValueSize = /* std::log10((std::numeric_limits::max)()) + MaxPrecision + 3 */ 326; static std::size_t RequiredSize(value_type v = 0) { return MaxValueSize; } class Proxy { const value_type m_value; - const int m_padded; + const std::size_t m_padded; const bool m_round; int generate(char* buffer) const; public: - Proxy(value_type value, int padded, bool rounded) - : m_value(value), m_padded( (std::max)(0, (std::min)(padded, (int)MaxPrecision)) ), + Proxy(value_type value, std::size_t padded, bool rounded) + : m_value(value), m_padded( MaxPrecision > padded ? padded : MaxPrecision ), m_round(rounded) {} template S convert_to() const { char buf[MaxValueSize]; -#ifdef HAVE_BOOST - return S(boost::rbegin(buf) + (MaxValueSize - generate(buf)), boost::rend(buf)); -#else return S(Util::CharBuffer::reverse_iterator(buf + generate(buf)), Util::CharBuffer::reverse_iterator((char*)buf)); -#endif } - template void append_to(S& s) const + template void assign_to(S& s) const { char buf[MaxValueSize]; -#ifdef HAVE_BOOST - s.append(boost::rbegin(buf) + (MaxValueSize - generate(buf)), boost::rend(buf)); -#else - s.append(Util::CharBuffer::reverse_iterator(buf + generate(buf)), + s.assign(Util::CharBuffer::reverse_iterator(buf + generate(buf)), Util::CharBuffer::reverse_iterator((char*)buf)); -#endif } }; - template static void generate(S& result, double value, int padded = 0, bool rounded = false) + template static void set(S& result, double value, std::size_t padded = 0, bool rounded = false) { - Proxy(value, padded, rounded).append_to(result); + Proxy(value, padded, rounded).assign_to(result); } static bool NOTHROW parse( const char* str, const char* end, double& result) @@ -567,12 +648,12 @@ struct DoubleConvertor return false; } - static std::string convert( double value, int padded = 0, bool rounded = false ) + static std::string convert( double value, std::size_t padded = 0, bool rounded = false ) { return Proxy(value, padded, rounded).convert_to(); } - template static S convert( double value, int padded = 0, bool rounded = false ) + template static S convert( double value, std::size_t padded = 0, bool rounded = false ) { return Proxy(value, padded, rounded).convert_to(); } @@ -594,6 +675,7 @@ struct DoubleConvertor } }; + /// Converts character to/from a string struct CharConvertor { @@ -602,8 +684,21 @@ struct CharConvertor static const std::size_t MaxValueSize = 1; static std::size_t RequiredSize(value_type v = 0) { return MaxValueSize; } - template static void generate(S& result, char value) + class Proxy { + value_type m_value; + public: + Proxy( char value ) : m_value(value) {} + + unsigned operator()(uint16_t* buffer) + { + *buffer = m_value; + return m_value != '\0';; + } + }; + + template static void set(S& result, char value) { + result.clear(); if (value != '\0' ) result.push_back(value); } @@ -654,6 +749,22 @@ struct CharConvertor } }; +#if defined(ENABLE_SSO) && (defined(__x86_64__) || defined(__i386__)) +template <> inline String::short_string_type HEAVYUSE +CharConvertor::convert( char value ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value)); +} +template <> inline void HEAVYUSE +CharConvertor::set(String::short_string_type& result, char value) +{ + Util::CharBuffer::Fixed<2> b; + b.value = value; + result.assign( b, value != '\0' ); +} +#endif + + /// Converts boolean to/from a string struct BoolConvertor { @@ -662,8 +773,22 @@ struct BoolConvertor static const std::size_t MaxValueSize = 1; static std::size_t RequiredSize(value_type v = false) { return MaxValueSize; } - template static void generate(S& result, bool value) + class Proxy { + value_type m_value; + public: + Proxy( bool value ) : m_value(value) {} + + unsigned operator()(uint16_t* buffer) + { + *buffer = m_value ? 'Y' : 'N'; + return 1; + } + }; + + + template static void set(S& result, bool value) { + result.clear(); result.push_back( value ? 'Y' : 'N' ); } @@ -717,6 +842,21 @@ struct BoolConvertor } }; +#if defined(ENABLE_SSO) && (defined(__x86_64__) || defined(__i386__)) +template <> inline String::short_string_type HEAVYUSE +BoolConvertor::convert( bool value ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value)); +} +template <> inline void HEAVYUSE +BoolConvertor::set(String::short_string_type& result, bool value) +{ + Util::CharBuffer::Fixed<2> b; + b.value = value ? 'Y' : 'N'; + result.assign( b, 1 ); +} +#endif + struct UtcConvertorBase { static inline bool parse_date(const unsigned char*& p, int& year, int& mon, int& mday) @@ -806,6 +946,7 @@ struct UtcConvertorBase { } }; + /// Converts a UtcTimeStamp to/from a string struct UtcTimeStampConvertor : public UtcConvertorBase { @@ -814,10 +955,8 @@ struct UtcTimeStampConvertor : public UtcConvertorBase static const std::size_t MaxValueSize = 22; static std::size_t RequiredSize(value_type) { return MaxValueSize; } - template static void generate(S& result, const UtcTimeStamp& value, bool showMilliseconds = false) - throw( FieldConvertError ) + static inline unsigned write(char* buffer, const UtcTimeStamp& value, bool showMilliseconds = false) { - char buffer[ MaxValueSize ]; union { char* pc; uint16_t* pu; @@ -829,32 +968,50 @@ struct UtcTimeStampConvertor : public UtcConvertorBase if ( (unsigned)year < 10000 ) { - *b.pu++ = IntConvertor::padded_numbers[(unsigned)year / 100].u; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)year % 100].u; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)month].u; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)day].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)year / 100].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)year % 100].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)month].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)day].u; *b.pc++ = '-'; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)hour].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)hour].u; *b.pc++ = ':'; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)minute].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)minute].u; *b.pc++ = ':'; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)second].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)second].u; if (showMilliseconds) { *b.pc++ = '.'; *b.pc++ = '0' + (unsigned)millis / 100; - *b.pu = IntConvertor::padded_numbers[(unsigned)millis % 100 ].u; - result.append(buffer, 21); + *b.pu = Util::NumData::m_pairs[(unsigned)millis % 100 ].u; } - else - result.append(buffer, 17); - return; + return 17 + showMilliseconds * 4; } - throw FieldConvertError(); + return 0; + } + + class Proxy { + value_type m_value; + bool m_millis; + public: + Proxy(value_type value, bool showMilliseconds = false) + : m_value(value), m_millis(showMilliseconds) {} + + unsigned operator()(char* buf) + { + return write(buf, m_value, m_millis); + } + }; + + template static void set(S& result, const UtcTimeStamp& value, bool showMilliseconds = false) + throw( FieldConvertError ) + { + result.resize(17 + showMilliseconds * 4); + if ( !write((char*)String::data(result), value, showMilliseconds) ) + throw FieldConvertError(); } - static bool parse( const char* str, const char* end, UtcTimeStamp& utc ) + static inline bool parse( const char* str, const char* end, UtcTimeStamp& utc ) { std::size_t sz = end - str; bool haveMilliseconds = (sz == 21); @@ -889,7 +1046,7 @@ struct UtcTimeStampConvertor : public UtcConvertorBase throw( FieldConvertError ) { std::string result; - generate(result, value, showMilliseconds); + set(result, value, showMilliseconds); return result; } @@ -898,7 +1055,7 @@ struct UtcTimeStampConvertor : public UtcConvertorBase throw( FieldConvertError ) { S result; - generate(result, value, showMilliseconds); + set(result, value, showMilliseconds); return result; } @@ -933,6 +1090,24 @@ struct UtcTimeStampConvertor : public UtcConvertorBase } }; +#if defined(ENABLE_SSO) && (ENABLE_SSO > 1) && (defined(__x86_64__) || defined(__i386__)) +template <> inline String::short_string_type HEAVYUSE +UtcTimeStampConvertor::convert( const UtcTimeStamp& value, bool showMilliseconds ) + throw( FieldConvertError ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value, showMilliseconds)); +} +template <> inline void HEAVYUSE +UtcTimeStampConvertor::set(String::short_string_type& result, const UtcTimeStamp& value, bool showMilliseconds) + throw( FieldConvertError ) +{ + if ( LIKELY(0 != result.short_assign(Proxy(value, showMilliseconds))) ) + return; + throw FieldConvertError(); +} +#endif + + /// Converts a UtcTimeOnly to/from a string struct UtcTimeOnlyConvertor : public UtcConvertorBase { @@ -941,9 +1116,8 @@ struct UtcTimeOnlyConvertor : public UtcConvertorBase static const std::size_t MaxValueSize = 13; static std::size_t RequiredSize(value_type) { return MaxValueSize; } - template static void generate(S& result, const UtcTimeOnly& value, bool showMilliseconds = false) + static inline unsigned write(char* buffer, const UtcTimeOnly& value, bool showMilliseconds = false) { - char buffer[ MaxValueSize ]; union { char* pc; uint16_t* pu; @@ -952,21 +1126,41 @@ struct UtcTimeOnlyConvertor : public UtcConvertorBase value.getHMS( hour, minute, second, millis ); - *b.pu++ = IntConvertor::padded_numbers[(unsigned)hour].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)hour].u; *b.pc++ = ':'; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)minute].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)minute].u; *b.pc++ = ':'; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)second].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)second].u; if (showMilliseconds) { *b.pc++ = '.'; *b.pc++ = '0' + (unsigned)millis / 100; - *b.pu = IntConvertor::padded_numbers[(unsigned)millis % 100 ].u; - result.append(buffer, 12); - } else - result.append(buffer, 8); + *b.pu = Util::NumData::m_pairs[(unsigned)millis % 100 ].u; + return 12; + } + return 8; + } + + class Proxy { + value_type m_value; + bool m_millis; + public: + Proxy(value_type value, bool showMilliseconds = false) + : m_value(value), m_millis(showMilliseconds) {} + + unsigned operator()(char* buf) + { + return write(buf, m_value, m_millis); + } + }; + + template static void set(S& result, const UtcTimeOnly& value, bool showMilliseconds = false) + { + result.resize(8 + showMilliseconds * 4); + write((char*)String::data(result), value, showMilliseconds); } + static bool parse( const char* str, const char* end, UtcTimeOnly& utc ) { std::size_t sz = end - str; @@ -985,6 +1179,7 @@ struct UtcTimeOnlyConvertor : public UtcConvertorBase } return false; } + template static bool parse( const S& value, UtcTimeOnly& utc ) { const char* str = String::c_str(value); @@ -993,19 +1188,17 @@ struct UtcTimeOnlyConvertor : public UtcConvertorBase static std::string convert( const UtcTimeOnly& value, bool showMilliseconds = false) - throw( FieldConvertError ) { std::string result; - generate(result, value, showMilliseconds); + set(result, value, showMilliseconds); return result; } template static S convert( const UtcTimeOnly& value, bool showMilliseconds = false) - throw( FieldConvertError ) { S result; - generate(result, value, showMilliseconds); + set(result, value, showMilliseconds); return result; } @@ -1034,6 +1227,22 @@ struct UtcTimeOnlyConvertor : public UtcConvertorBase } }; +#if defined(ENABLE_SSO) && (defined(__x86_64__) || defined(__i386__)) +template <> inline String::short_string_type HEAVYUSE +UtcTimeOnlyConvertor::convert( const UtcTimeOnly& value, bool showMilliseconds ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value, showMilliseconds)); +} +template <> inline void HEAVYUSE +UtcTimeOnlyConvertor::set(String::short_string_type& result, const UtcTimeOnly& value, bool showMilliseconds) +{ + if ( LIKELY(0 != result.short_assign(Proxy(value, showMilliseconds))) ) + return; + throw FieldConvertError(); +} +#endif + + /// Converts a UtcDate to/from a string struct UtcDateConvertor : public UtcConvertorBase { @@ -1042,10 +1251,9 @@ struct UtcDateConvertor : public UtcConvertorBase static const std::size_t MaxValueSize = 9; static std::size_t RequiredSize(value_type) { return MaxValueSize; } - template static void generate(S& result, const UtcDate& value) + static inline unsigned write(char* buffer, const UtcDate& value) throw( FieldConvertError ) { - char buffer[ MaxValueSize ]; union { char* pc; uint16_t* pu; @@ -1056,15 +1264,35 @@ struct UtcDateConvertor : public UtcConvertorBase if ( (unsigned)year < 10000 ) { - *b.pu++ = IntConvertor::padded_numbers[(unsigned)year / 100].u; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)year % 100].u; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)month].u; - *b.pu++ = IntConvertor::padded_numbers[(unsigned)day].u; - result.append(buffer, 8); - return; + *b.pu++ = Util::NumData::m_pairs[(unsigned)year / 100].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)year % 100].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)month].u; + *b.pu++ = Util::NumData::m_pairs[(unsigned)day].u; + return 8; } - throw FieldConvertError(); + return 0; + } + + class Proxy { + value_type m_value; + public: + Proxy(value_type value) + : m_value(value) {} + + unsigned operator()(char* buf) + { + return write(buf, m_value); + } + }; + + template static void set(S& result, const UtcDate& value) + throw( FieldConvertError ) + { + result.resize(8); + if ( !write((char*)String::data(result), value) ) + throw FieldConvertError(); } + static bool parse( const char* str, const char* end, UtcDate& utc ) { std::size_t sz = end - str; @@ -1088,7 +1316,7 @@ struct UtcDateConvertor : public UtcConvertorBase throw( FieldConvertError ) { std::string result; - generate(result, value); + set(result, value); return result; } @@ -1096,7 +1324,7 @@ struct UtcDateConvertor : public UtcConvertorBase throw( FieldConvertError ) { S result; - generate(result, value); + set(result, value); return result; } @@ -1120,6 +1348,23 @@ struct UtcDateConvertor : public UtcConvertorBase typedef UtcDateConvertor UtcDateOnlyConvertor; +#if defined(ENABLE_SSO) && (defined(__x86_64__) || defined(__i386__)) +template <> inline String::short_string_type HEAVYUSE +UtcDateConvertor::convert( const UtcDate& value) + throw( FieldConvertError ) +{ + return String::short_string_type(String::short_string_type::TypeHolder(), Proxy(value)); +} +template <> inline void HEAVYUSE +UtcDateConvertor::set(String::short_string_type& result, const UtcDate& value) + throw( FieldConvertError ) +{ + if ( LIKELY(0 != result.short_assign(Proxy(value))) ) + return; + throw FieldConvertError(); +} +#endif + typedef StringConvertor STRING_CONVERTOR; typedef CharConvertor CHAR_CONVERTOR; typedef DoubleConvertor PRICE_CONVERTOR; diff --git a/src/C++/FieldMap.h b/src/C++/FieldMap.h index d66f501e2..36462ae4b 100644 --- a/src/C++/FieldMap.h +++ b/src/C++/FieldMap.h @@ -115,7 +115,7 @@ class FieldMap static inline store_type::const_iterator to_store_iterator(const field_iterator it) { return it; } static inline field_iterator link_next(const store_type::const_iterator it) { return it; } -#elif not defined(ENABLE_RELAXED_ORDERING) +#elif !defined(ENABLE_RELAXED_ORDERING) typedef ItemAllocator< stored_type > field_allocator_type; typedef Container::avlTree @@ -386,7 +386,7 @@ class FieldMap inline void HEAVYUSE f_clear() { m_fields.clear_and_dispose(stored_type::disposer_type(m_allocator)); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(); if (p) { @@ -401,7 +401,7 @@ class FieldMap const store_type& src = from.m_fields; for (store_type::const_iterator it = src.begin(), e = src.end(); it != e; ++it) m_fields.push_back( *new (m_allocator.allocate()) stored_type(*it) ); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(), *po = from.m_fields.list(); if (p) { @@ -420,7 +420,7 @@ class FieldMap m_fields.clone_from( from.m_fields, stored_type::cloner_type(m_allocator), stored_type::disposer_type(m_allocator)); m_order = from.m_order; -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(), *po = from.m_fields.list(); if (p) { @@ -439,7 +439,7 @@ class FieldMap } inline void erase(int tag) { -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) stored_type* f; NodeList* p = m_fields.list(); if (p && (f = static_cast(p->erase(tag)))) @@ -452,7 +452,7 @@ class FieldMap if ( it != m_fields.end() ) m_fields.erase_and_dispose(it, stored_type::disposer_type(m_allocator)); } inline store_type::iterator erase(store_type::iterator& it) { -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) stored_type* f,* n; NodeList* p = m_fields.list(); if (p && store_type::algorithms::is_enlisted((f = &*it)) && (f = static_cast(p->erase(f)))) @@ -477,19 +477,19 @@ class FieldMap } template stored_type& HEAVYUSE push_back(const Arg& arg) { stored_type* f = new (m_allocator.allocate()) stored_type( arg ); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(); if (p && p->push_back(f)) return *f; #endif m_fields.push_back(*f); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) if (p && f == &*m_fields.begin()) p->extend(f); #endif return *f; } inline field_iterator HEAVYUSE find(int tag) const { -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) store_type::tree_traits::node_type* f; NodeList* p = m_fields.list(); if (p && (f = p->find(tag))) return field_iterator(f); @@ -502,7 +502,7 @@ class FieldMap } template field_iterator HEAVYUSE add(const Arg& arg) { stored_type* f = new (m_allocator.allocate()) stored_type( arg ); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(); if (p && p->push_back(f)) return field_iterator(f); #endif @@ -510,7 +510,7 @@ class FieldMap } template field_iterator HEAVYUSE add(field_iterator hint, const Arg& arg) { stored_type* f = new (m_allocator.allocate()) stored_type( arg ); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(); if (p && p->push_back(f)) return field_iterator(f); #endif @@ -526,7 +526,7 @@ class FieldMap } template store_type::iterator HEAVYUSE assign(int tag, const Arg& arg) { store_type::insert_commit_data data; -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) store_type::tree_traits::node_type* f; NodeList* p = m_fields.list(); if (p && (f = p->find(tag))) @@ -540,7 +540,7 @@ class FieldMap if (r.second) { stored_type* f = new (m_allocator.allocate()) stored_type( tag, arg ); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) if (p && p->push_back(f)) return store_type::iterator(f); #endif link_next(r.first = m_fields.insert_unique_commit( *f, data )); @@ -615,7 +615,7 @@ class FieldMap FieldMap( const FieldMap& src ) : m_order( src.m_order ), m_fields( src.m_fields.value_comp() ) { -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) if (src.m_fields.list()) m_fields.attach(m_allocator.header()); #endif f_copy(src); g_copy(src); @@ -628,7 +628,7 @@ class FieldMap FieldMap( const allocator_type& a, const FieldMap& src ) : m_allocator( a ), m_order( src.m_order ), m_fields( src.m_fields.value_comp() ) { -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) if (src.m_fields.list()) m_fields.attach(m_allocator.header()); #endif f_copy(src); g_copy(src); @@ -757,7 +757,7 @@ class FieldMap if( tb < te ) { int tag, last = *(tb + ((te - tb) - 1)); -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(); if (p) { @@ -832,7 +832,7 @@ class FieldMap /// Check if map contains any fields bool isEmpty() { -#if not defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) +#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(); return (!p || p->empty()) && m_fields.empty(); #else diff --git a/src/C++/FileLog.h b/src/C++/FileLog.h index 02c543d58..e1e81c0c2 100644 --- a/src/C++/FileLog.h +++ b/src/C++/FileLog.h @@ -73,8 +73,7 @@ class FileLog : public Log void store( std::ofstream& s, Sg::sg_buf_ptr b, int n ) { std::filebuf* p = s.rdbuf(); - m_timeStamp.clear(); - UtcTimeStampConvertor::generate(m_timeStamp, UtcTimeStamp(), m_millisecondsInTimeStamp); + UtcTimeStampConvertor::set(m_timeStamp, UtcTimeStamp(), m_millisecondsInTimeStamp); p->sputn(m_timeStamp.c_str(), m_timeStamp.size()); p->sputn(" : ", 3); for (int i = 0; i < n; i++) p->sputn((char*)IOV_BUF(b[i]), IOV_LEN(b[i])); diff --git a/src/C++/FixString.h b/src/C++/FixString.h index 66d1f0a97..08096a64f 100644 --- a/src/C++/FixString.h +++ b/src/C++/FixString.h @@ -141,32 +141,40 @@ namespace FIX private: - typedef uint64_t buffer_type[2]; + static const std::size_t MaxQWord = ENABLE_SSO; + + typedef uint64_t qword_storage_type[MaxQWord + 1]; + typedef uint32_t dword_storage_type[2 * (MaxQWord + 1)]; + typedef uint16_t word_storage_type[4 * (MaxQWord + 1)]; typedef std::string string_type; - static const std::size_t MaxLocalCapacity = sizeof(buffer_type) - 1; + static const std::size_t MaxLocalCapacity = sizeof(qword_storage_type) - 1; static const unsigned char HaveString = 255; + template struct TypeHolder { typedef T type; }; + union Data { - buffer_type m_v; + qword_storage_type m_q; + dword_storage_type m_d; + word_storage_type m_w; struct { char m_data[MaxLocalCapacity]; // including '\0'! unsigned char m_length; }; + template T* storage_type(); + Data() - { m_length = 0; m_v[0] = 0; } + { m_length = 0; m_q[0] = 0; } Data(std::size_t n, char c) { if( LIKELY(n < MaxLocalCapacity) ) { - if ( n == 1 ) - m_data[0] = c; - else - ::memset(m_data, c, n); + uint64_t v = 0x0101010101010101ULL * (unsigned char)c; + for(std::size_t i = 0; i <= MaxQWord; i++) m_q[i] = v; m_data[n] = '\0'; m_length = n; } @@ -191,8 +199,8 @@ namespace FIX template Data( InputIterator first, InputIterator last ) { - typename InputIterator::difference_type sz = last - first; - if ( LIKELY((std::size_t)sz < MaxLocalCapacity) ) + std::size_t sz = last - first; + if ( LIKELY(sz < MaxLocalCapacity) ) { std::copy(first, last, m_data); m_data[sz] = '\0'; @@ -233,6 +241,12 @@ namespace FIX } } + template Data(TypeHolder, F f) + { + std::size_t l = f(storage_type()); + m_length = l; + } + ~Data() { destroy(); } inline bool PURE_DECL HEAVYUSE isLocal() const @@ -242,7 +256,27 @@ namespace FIX { destroy(); m_length = 0; - m_v[0] = 0; + } + + inline void resize(std::size_t sz) + { + if ( LIKELY(sz < MaxLocalCapacity) ) + { + if ( isLocal() ) + { +fin: + m_data[sz] = '\0'; + m_length = sz; + return; + } + string_type& s = asString(); + std::size_t l = String::size(s); + ::memcpy(m_data, String::c_str(s), l > MaxLocalCapacity ? MaxLocalCapacity : l); + s.~string_type(); + goto fin; + } + Data u = *this; + ( HaveString == m_length ? asString() : toString(u.m_data, u.m_length) ).resize(sz); } inline bool empty() const @@ -254,34 +288,77 @@ namespace FIX set(p, sz); } - inline void HEAVYUSE push_back( char c ) + template std::size_t HEAVYUSE short_assign(F f) { - if( LIKELY(m_length < (MaxLocalCapacity - 1)) ) + if ( isLocal() ) { - m_data[m_length++] = c; - m_data[m_length] = '\0'; +fin: + std::size_t l = f(storage_type()); + m_length = l; + return l; + } + asString().~string_type(); + goto fin; + } + + template void HEAVYUSE assign( const Util::CharBuffer::Fixed& buf, std::size_t l ) + { + if ( isLocal() ) + { +fin: + *storage_type::value_type>() = buf.value; + m_length = l; + return; + } + asString().~string_type(); + goto fin; + } + + template + void HEAVYUSE assign( InputIterator first, InputIterator last ) + { + if ( isLocal() ) + { + new (this) Data(first, last); + return; + } + if ( (std::size_t)(last - first) < MaxLocalCapacity ) + { + asString().~string_type(); + new (this) Data(first, last); } else + asString().assign(first, last); + } + + inline void HEAVYUSE push_back( char c ) + { + if( LIKELY(m_length < MaxLocalCapacity - 1) ) { - Data u = *this; - toString(u.m_data, u.m_length).push_back(c); + m_data[m_length++] = c; + m_data[m_length] = '\0'; + return; } + Data u = *this; + ( HaveString == m_length ? asString() : toString(u.m_data, u.m_length) ).push_back(c); } inline void HEAVYUSE append( const char* p, std::size_t sz ) { if( LIKELY(m_length + sz < MaxLocalCapacity) ) { - ::memcpy(m_data + m_length, p, sz); - m_length += (unsigned char)sz; + Sg::sg_buf_t d = IOV_BUF_INITIALIZER(m_data, m_length); + Sg::append(d, p, sz); + m_length = (unsigned char)IOV_LEN(d); m_data[m_length] = '\0'; + return; } - else if ( 0 == m_length ) + if ( 0 == m_length ) toString(p, sz); else { Data u = *this; - toString(u.m_data, u.m_length).append(p, sz); + ( HaveString == m_length ? asString() : toString(u.m_data, u.m_length) ).append(p, sz); } } @@ -294,13 +371,14 @@ namespace FIX std::copy(first, last, m_data + m_length); m_length += (unsigned char)sz; m_data[m_length] = '\0'; + return; } - else if ( 0 == m_length ) + if ( 0 == m_length ) toString(first, last); else { Data u = *this; - toString(u.m_data, u.m_length).append(first, last); + ( HaveString == m_length ? asString() : toString(u.m_data, u.m_length) ).append(first, last); } } @@ -323,8 +401,8 @@ namespace FIX inline void swap( Data& d ) { - std::swap(m_v[0], d.m_v[0]); - std::swap(m_v[1], d.m_v[1]); + for(std::size_t i = 0; i <= MaxQWord; i++) + std::swap(m_q[i], d.m_q[i]); } inline std::size_t HEAVYUSE size() const @@ -387,13 +465,8 @@ namespace FIX { if( LIKELY(sz < MaxLocalCapacity) ) { -#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) - m_v[0] = *reinterpret_cast(p); - m_v[1] = (sz > sizeof(uint64_t)) ? - *reinterpret_cast(p + sizeof(uint64_t)) : 0; -#else - ::memcpy(m_data, p, sz); -#endif + Sg::sg_buf_t d = IOV_BUF_INITIALIZER(m_data, 0); + Sg::append(d, p, sz); m_data[sz] = '\0'; m_length = (unsigned char)sz; } @@ -404,8 +477,8 @@ namespace FIX void HEAVYUSE set(const Data& d) { if (d.isLocal()) { - m_v[0] = d.m_v[0]; - m_v[1] = d.m_v[1]; + for(std::size_t i = 0; i <= MaxQWord; i++) + m_q[i] = d.m_q[i]; } else { m_length = HaveString; new (reinterpret_cast(m_data)) @@ -478,6 +551,11 @@ namespace FIX s_.clear(); } + inline void resize(std::size_t sz) + { + s_.resize(sz); + } + inline bool empty() const { return s_.empty(); @@ -489,6 +567,13 @@ namespace FIX return *this; } + template + short_string_type& assign(InputIterator first, InputIterator last) + { + s_.assign(first, last); + return *this; + } + inline void push_back(char c) { s_.push_back(c); @@ -590,6 +675,31 @@ namespace FIX private: mutable Data s_; + + // F writes a null terminated string that fits into the local storage and returns written size without the last '\0' + template explicit short_string_type(TypeHolder, F f) + : s_( TypeHolder(), f ) + {} + + template std::size_t HEAVYUSE short_assign(F f) + { + return s_.short_assign(f); + } + + // buffer must be null terminated at buf[l] + template void HEAVYUSE assign( const Util::CharBuffer::Fixed& buf, std::size_t l ) + { + s_.assign(buf, l); + } + + friend class IntConvertor; + friend class PositiveIntConvertor; + friend class CheckSumConvertor; + friend class CharConvertor; + friend class BoolConvertor; + friend class UtcTimeStampConvertor; + friend class UtcTimeOnlyConvertor; + friend class UtcDateConvertor; }; typedef short_string_type value_type; @@ -756,6 +866,11 @@ namespace FIX #ifdef ENABLE_SSO // provide SSO string overloads for common operations + template<> inline uint64_t* String::short_string_type::Data::storage_type() { return m_q; } + template<> inline uint32_t* String::short_string_type::Data::storage_type() { return m_d; } + template<> inline uint16_t* String::short_string_type::Data::storage_type() { return m_w; } + template<> inline char* String::short_string_type::Data::storage_type() { return m_data; } + static inline std::ostream& operator << ( std::ostream& out, const String::value_type& bs ) { return out.write( bs.data(), bs.size() ); diff --git a/src/C++/ItemAllocator.h b/src/C++/ItemAllocator.h index 480f6bf12..fd24b1288 100644 --- a/src/C++/ItemAllocator.h +++ b/src/C++/ItemAllocator.h @@ -27,19 +27,16 @@ namespace FIX { struct ItemAllocatorTraits - { - static const unsigned DefaultCapacity = 32; - }; + { static const unsigned DefaultCapacity = 32; }; + + struct ItemStoreBase + { template struct SizeOf { static const std::size_t value = sizeof(O); }; }; + template <> struct ItemStoreBase::SizeOf { static const std::size_t value = 0; }; // Cache-friendly allocator for node-based containers with optional aligned header area template - class ItemStore + class ItemStore : public ItemStoreBase { - template struct SizeOf { // 0 for void - static char f(void*); - template static char (&f(U*))[sizeof(U&) + 1]; - static const std::size_t value = sizeof(f((O*)0)) - 1; - }; static const std::size_t HeaderBytes = SizeOf
::value; template struct Options diff --git a/src/C++/Message.cpp b/src/C++/Message.cpp index cb0fdf963..7a3631223 100644 --- a/src/C++/Message.cpp +++ b/src/C++/Message.cpp @@ -132,7 +132,7 @@ namespace detail { } ProxyBuffer& append(int field, int sz, const char* src, std::size_t len) { char* dst = (char*)IOV_BUF(buf_) + IOV_LEN(buf_); - Util::Tag::generate(dst, field, sz); + Util::Tag::write(dst, field, sz); dst[sz++] = '='; IOV_LEN(buf_) += sz; Sg::append(buf_, src, len); @@ -157,10 +157,10 @@ Message::toString( const FieldCounter& c, std::string& str ) const const int checkSumField = c.getCheckSumTag(); const int bodyLengthField = c.getBodyLengthTag(); const int csumPayloadLength = CheckSumConvertor::MaxValueSize + 1; - const int csumTagLength = Util::PositiveInt::numDigits(checkSumField) + 1; + const unsigned csumTagLength = Util::UInt::numDigits(checkSumField) + 1; int l = c.getBodyLength(); - l += Sequence::set_in_ordered(m_header, IntField::Pack(bodyLengthField, l))->second.getLength() + l += Sequence::set_in_ordered(m_header, PositiveIntField::Pack(bodyLengthField, l))->second.getLength() + csumTagLength + csumPayloadLength + c.getBeginStringLength(); str.clear(); @@ -187,7 +187,7 @@ Message::toString( const FieldCounter& c, std::string& str ) const p = (char*)sbuf.data(); int32_t csum = Util::CharBuffer::checkSum( p, l - csumTagLength ) & 255; p += l; - CheckSumConvertor::generate(p, (unsigned char) csum ); + CheckSumConvertor::write(p, (unsigned char) csum ); f.setPacked( StringField::Pack( checkSumField, p, 3 ) ); } else @@ -245,7 +245,7 @@ ALIGN_DECL_DEFAULT static const DataDictionary::FieldPresenceMap::key_type group ALIGN_DECL_DEFAULT static const DataDictionary::FieldPresenceMap::key_type group_key_trailer_ = DataDictionary::FieldPresenceMap::key_type("_trailer_"); -#ifndef __MACH__ +#ifndef __clang__ inline #endif void HEAVYUSE diff --git a/src/C++/Message.h b/src/C++/Message.h index e8a5834ee..12716c228 100644 --- a/src/C++/Message.h +++ b/src/C++/Message.h @@ -345,7 +345,7 @@ class Message : public FieldMap { FieldCounter c( *this ); int bodyLength = c.getBodyLength() + c.getBeginStringLength() + - Sequence::set_in_ordered(m_header, BodyLength::Pack(c.getBodyLength()))->second.getLength(); + Sequence::set_in_ordered(m_header, PositiveIntField::Pack(FIELD::BodyLength, c.getBodyLength()))->second.getLength(); return m_trailer.serializeTo( FieldMap::serializeTo( m_header.serializeTo( diff --git a/src/C++/MessageSorters.h b/src/C++/MessageSorters.h index 8e1984d75..c9ba0e1ee 100644 --- a/src/C++/MessageSorters.h +++ b/src/C++/MessageSorters.h @@ -269,7 +269,7 @@ struct message_order return *this; } - inline bool PURE_DECL NOTHROW operator() ( const int x, const int y ) const + inline bool PURE_DECL NOTHROW HEAVYUSE operator() ( const int x, const int y ) const { if ( LIKELY(m_mode == normal) ) return x < y; diff --git a/src/C++/Mutex.h b/src/C++/Mutex.h index 5e370d58b..1fa0fa761 100644 --- a/src/C++/Mutex.h +++ b/src/C++/Mutex.h @@ -112,6 +112,8 @@ class Mutex pthread_t m_threadID; int m_count; #endif + + friend class CondVar; }; /// Locks/Unlocks a mutex using RAII. @@ -134,6 +136,8 @@ class Locker } private: Mutex& m_mutex; + + friend class CondVar; }; /// Locks/Unlocks a mutex using RAII, can be unlocked. @@ -161,9 +165,90 @@ class FlexLocker } private: Mutex* m_mutex; + + friend class CondVar; }; -#endif // HAVE_BOOST +#endif // !HAVE_BOOST + +class CondVar +{ +public: + CondVar() + { +#if !defined(HAVE_BOOST) +#ifdef _MSC_VER + InitializeConditionVariable(&m_cond); +#else + pthread_cond_init(&m_cond, NULL); +#endif +#endif + } + + void wait(Locker& lock) + { +#if defined(HAVE_BOOST) + m_cond.wait(lock); +#elif defined(_MSC_VER) + SleepConditionVariableCS(&m_cond,&lock.m_mutex.m_mutex, INFINITE); +#else + pthread_cond_wait(&m_cond, &lock.m_mutex.m_mutex); +#endif + } + + bool timed_wait(Locker& lock, unsigned long millis) + { +#if defined(HAVE_BOOST) + return m_cond.timed_wait(lock, boost::posix_time::milliseconds(millis)); +#elif defined(_MSC_VER) + return SleepConditionVariableCS(&m_cond,&lock.m_mutex.m_mutex, millis) != 0; +#else + struct timespec when; + clock_gettime(CLOCK_REALTIME, &when); + when.tv_sec += (millis + when.tv_nsec / 1000000) / 1000; + when.tv_nsec = (millis + when.tv_nsec / 1000000) % 1000 * 1000000 + when.tv_nsec % 1000000; + return 0 == pthread_cond_timedwait(&m_cond, &lock.m_mutex.m_mutex, &when); +#endif + } + + void notify_one() + { +#if defined(HAVE_BOOST) + m_cond.notify_one(); +#elif defined(_MSC_VER) + WakeConditionVariable(&m_cond); +#else + pthread_cond_signal(&m_cond); +#endif + } + + void notify_all() + { +#if defined(HAVE_BOOST) + m_cond.notify_all(); +#elif defined(_MSC_VER) + WakeAllConditionVariable(&m_cond); +#else + pthread_cond_broadcast(&m_cond); +#endif + } + + ~CondVar() + { +#if !defined(_MSC_VER) && !defined(HAVE_BOOST) + pthread_cond_destroy(&m_cond); +#endif + } + +private: +#if defined(HAVE_BOOST) + boost::condition_variable_any m_cond; +#elif defined(_MSC_VER) + CONDITION_VARIABLE m_cond; +#else + pthread_cond_t m_cond; +#endif +}; #ifdef HAVE_TBB diff --git a/src/C++/Session.cpp b/src/C++/Session.cpp index 0bab5873f..c50121894 100644 --- a/src/C++/Session.cpp +++ b/src/C++/Session.cpp @@ -95,10 +95,10 @@ Session::~Session() void Session::fill( Header& header, UtcTimeStamp now ) { m_state.lastSentTime( now ); - FieldMap::Sequence::set_in_ordered(header, m_sessionID.getBeginString() ); - FieldMap::Sequence::set_in_ordered(header, m_sessionID.getSenderCompID() ); - FieldMap::Sequence::set_in_ordered(header, m_sessionID.getTargetCompID() ); - FieldMap::Sequence::set_in_ordered(header, MsgSeqNum::Pack( getExpectedSenderNum() ) ); + Message::Sequence::set_in_ordered(header, m_sessionID.getBeginString() ); + Message::Sequence::set_in_ordered(header, m_sessionID.getSenderCompID() ); + Message::Sequence::set_in_ordered(header, m_sessionID.getTargetCompID() ); + Message::Sequence::set_in_ordered(header, MsgSeqNum::Pack( getExpectedSenderNum() ) ); insertSendingTime( header, now ); } @@ -111,7 +111,7 @@ Message::admin_trait Session::fill( Header& header, int num, UtcTimeStamp now ) if( it->first == FIX::FIELD::BeginString ) (FieldBase&)it->second = m_sessionID.getBeginString(); else - it = FieldMap::Sequence::push_front_to_ordered( header, m_sessionID.getBeginString() ); + it = Message::Sequence::push_front_to_ordered( header, m_sessionID.getBeginString() ); ++it; if ( it->first == FIX::FIELD::BodyLength ) @@ -123,9 +123,9 @@ Message::admin_trait Session::fill( Header& header, int num, UtcTimeStamp now ) if( msgType && p[1] == '\0' ) trait = Message::getAdminTrait( msgType ); } - FieldMap::Sequence::set_in_ordered(header, m_sessionID.getSenderCompID() ); - FieldMap::Sequence::set_in_ordered(header, m_sessionID.getTargetCompID() ); - FieldMap::Sequence::set_in_ordered(header, MsgSeqNum::Pack( num ? num : getExpectedSenderNum() ) ); + Message::Sequence::set_in_ordered(header, m_sessionID.getSenderCompID() ); + Message::Sequence::set_in_ordered(header, m_sessionID.getTargetCompID() ); + Message::Sequence::set_in_ordered(header, MsgSeqNum::Pack( num ? num : getExpectedSenderNum() ) ); insertSendingTime( header, now ); return trait; @@ -1469,8 +1469,8 @@ bool Session::sendToTarget const std::string& qualifier ) throw( SessionNotFound ) { - FieldMap::Sequence::set_in_ordered( message.getHeader(), senderCompID ); - FieldMap::Sequence::set_in_ordered( message.getHeader(), targetCompID ); + Message::Sequence::set_in_ordered( message.getHeader(), senderCompID ); + Message::Sequence::set_in_ordered( message.getHeader(), targetCompID ); return sendToTarget( message, qualifier ); } diff --git a/src/C++/Session.h b/src/C++/Session.h index 892795011..a75015916 100644 --- a/src/C++/Session.h +++ b/src/C++/Session.h @@ -260,14 +260,14 @@ class Session void insertSendingTime( Header& header, const UtcTimeStamp& now = UtcTimeStamp () ) { - FieldMap::Sequence::set_in_ordered(header, SendingTime::Pack(now, + Message::Sequence::set_in_ordered(header, SendingTime::Pack(now, m_millisecondsAllowed && m_millisecondsInTimeStamp) ); } void insertOrigSendingTime( Header& header, const UtcTimeStamp& when = UtcTimeStamp () ) { - FieldMap::Sequence::set_in_ordered(header, OrigSendingTime::Pack(when, + Message::Sequence::set_in_ordered(header, OrigSendingTime::Pack(when, m_millisecondsAllowed && m_millisecondsInTimeStamp) ); } @@ -438,16 +438,19 @@ class Session SgBuffer& append(const char* s, std::size_t l) { Sg::sg_buf_ptr e = sg_ + n_; - if (l < 32 || n_ >= (UIO_SIZE - 1)) { - char* p = (char*)IOV_BUF(*e); - p += IOV_LEN(*e); + if (l <= 32 || n_ >= (UIO_SIZE - 1)) { + uint64_t* dst = (uint64_t*)((char*)IOV_BUF(*e) + IOV_LEN(*e)); IOV_LEN(*e) += l; - std::size_t len = (l >> 3) + ((l & 7) != 0); - uint64_t* dst = (uint64_t*)p; + l = (l + 7) >> 3; const uint64_t* src = (const uint64_t*)s; - while (len-- > 0) { - *dst++ = *src++; - } + *dst++ = *src++; + if (LIKELY(--l)) { + *dst++ = *src++; + if (LIKELY(!--l)) return *this; + *dst++ = *src++; + if (LIKELY(!--l)) return *this; + *dst++ = *src++; + } } else { char* p = (char*)IOV_BUF(*e); IOV_BUF(sg_[++n_]) = (Sg::sg_ptr_t)s; @@ -462,7 +465,7 @@ class Session Sg::sg_buf_ptr e = sg_ + n_; char* p = (char*)IOV_BUF(*e); p += IOV_LEN(*e); - Util::Tag::generate(p, field, sz); + Util::Tag::write(p, field, sz); p[sz] = '='; IOV_LEN(*e) += sz + 1; append(s, l); diff --git a/src/C++/Utility.cpp b/src/C++/Utility.cpp index d08209f5f..1aff403ec 100644 --- a/src/C++/Utility.cpp +++ b/src/C++/Utility.cpp @@ -45,16 +45,10 @@ ALIGN_DECL_DEFAULT const int detail::bitop_base::Mod67Position[] = { 7, 48, 35, 6, 34, 33, 0 }; -#if defined(__GNUC__) && defined(__x86_64__) +#if (defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))) || defined(_MSC_VER) // cacheline aligned block of magic constants -ALIGN_DECL(64) Util::Tag::ConvBits Util::Tag::s_Bits = +ALIGN_DECL(64) Util::x86Data::ConvBits Util::x86Data::cbits = { - { // div_10000 - 0xd1b71759, 0xd1b71759 - }, - { // mul_10000 - 55536, 55536 - }, { // mul_10 10, 10, 10, 10, 10, 10, 10, 10 }, @@ -76,46 +70,58 @@ ALIGN_DECL(64) Util::Tag::ConvBits Util::Tag::s_Bits = '0', '0', '0', '0', '0', '0', '0', '0' } }; -#endif -#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) -ALIGN_DECL_DEFAULT Util::IntBase::Log2 Util::IntBase::m_digits[32] = -{ - { 9, 1 }, - { 9, 1 }, - { 9, 1 }, - { 9, 1 }, - { 99, 2 }, - { 99, 2 }, - { 99, 2 }, - { 999, 3 }, - { 999, 3 }, - { 999, 3 }, - { 9999, 4 }, - { 9999, 4 }, - { 9999, 4 }, - { 9999, 4 }, - { 99999, 5 }, - { 99999, 5 }, - { 99999, 5 }, - { 999999, 6 }, - { 999999, 6 }, - { 999999, 6 }, - { 9999999, 7 }, - { 9999999, 7 }, - { 9999999, 7 }, - { 9999999, 7 }, - { 99999999, 8 }, - { 99999999, 8 }, - { 99999999, 8 }, - { 999999999, 9 }, - { 999999999, 9 }, - { 999999999, 9 }, - { std::numeric_limits::max(), 10 }, - { std::numeric_limits::max(), 10 } +ALIGN_DECL_DEFAULT Util::x86Data::Log2 Util::x86Data::m_digits[32] = +{ + { { 1, 9 } }, + { { 1, 9 } }, + { { 1, 9 } }, + { { 1, 9 } }, + { { 2, 99 } }, + { { 2, 99 } }, + { { 2, 99 } }, + { { 3, 999 } }, + { { 3, 999 } }, + { { 3, 999 } }, + { { 4, 9999 } }, + { { 4, 9999 } }, + { { 4, 9999 } }, + { { 4, 9999 } }, + { { 5, 99999 } }, + { { 5, 99999 } }, + { { 5, 99999 } }, + { { 6, 999999 } }, + { { 6, 999999 } }, + { { 6, 999999 } }, + { { 7, 9999999 } }, + { { 7, 9999999 } }, + { { 7, 9999999 } }, + { { 7, 9999999 } }, + { { 8, 99999999 } }, + { { 8, 99999999 } }, + { { 8, 99999999 } }, + { { 9, 999999999 } }, + { { 9, 999999999 } }, + { { 9, 999999999 } }, + { { 10, (std::numeric_limits::max)() } }, + { { 10, (std::numeric_limits::max)() } } }; -ALIGN_DECL_DEFAULT Util::Long::Log2 Util::Long::m_digits[64] = +ALIGN_DECL_DEFAULT Util::NumData::DigitPair Util::NumData::m_pairs[100] = +{ +{ {'0','0'} }, { {'0','1'} }, { {'0','2'} }, { {'0','3'} }, { {'0','4'} }, { {'0','5'} }, { {'0','6'} }, { {'0','7'} }, { {'0','8'} }, { {'0','9'} }, +{ {'1','0'} }, { {'1','1'} }, { {'1','2'} }, { {'1','3'} }, { {'1','4'} }, { {'1','5'} }, { {'1','6'} }, { {'1','7'} }, { {'1','8'} }, { {'1','9'} }, +{ {'2','0'} }, { {'2','1'} }, { {'2','2'} }, { {'2','3'} }, { {'2','4'} }, { {'2','5'} }, { {'2','6'} }, { {'2','7'} }, { {'2','8'} }, { {'2','9'} }, +{ {'3','0'} }, { {'3','1'} }, { {'3','2'} }, { {'3','3'} }, { {'3','4'} }, { {'3','5'} }, { {'3','6'} }, { {'3','7'} }, { {'3','8'} }, { {'3','9'} }, +{ {'4','0'} }, { {'4','1'} }, { {'4','2'} }, { {'4','3'} }, { {'4','4'} }, { {'4','5'} }, { {'4','6'} }, { {'4','7'} }, { {'4','8'} }, { {'4','9'} }, +{ {'5','0'} }, { {'5','1'} }, { {'5','2'} }, { {'5','3'} }, { {'5','4'} }, { {'5','5'} }, { {'5','6'} }, { {'5','7'} }, { {'5','8'} }, { {'5','9'} }, +{ {'6','0'} }, { {'6','1'} }, { {'6','2'} }, { {'6','3'} }, { {'6','4'} }, { {'6','5'} }, { {'6','6'} }, { {'6','7'} }, { {'6','8'} }, { {'6','9'} }, +{ {'7','0'} }, { {'7','1'} }, { {'7','2'} }, { {'7','3'} }, { {'7','4'} }, { {'7','5'} }, { {'7','6'} }, { {'7','7'} }, { {'7','8'} }, { {'7','9'} }, +{ {'8','0'} }, { {'8','1'} }, { {'8','2'} }, { {'8','3'} }, { {'8','4'} }, { {'8','5'} }, { {'8','6'} }, { {'8','7'} }, { {'8','8'} }, { {'8','9'} }, +{ {'9','0'} }, { {'9','1'} }, { {'9','2'} }, { {'9','3'} }, { {'9','4'} }, { {'9','5'} }, { {'9','6'} }, { {'9','7'} }, { {'9','8'} }, { {'9','9'} } +}; + +ALIGN_DECL_DEFAULT Util::ULong::Log2 Util::ULong::m_digits[64] = { { 9, 1 }, { 9, 1 }, @@ -177,13 +183,11 @@ ALIGN_DECL_DEFAULT Util::Long::Log2 Util::Long::m_digits[64] = { 999999999999999999LL, 18 }, { 999999999999999999LL, 18 }, { 999999999999999999LL, 18 }, - { std::numeric_limits::max(), 19 }, - { std::numeric_limits::max(), 19 }, - { std::numeric_limits::max(), 19 }, - { std::numeric_limits::max(), 19 }, + { 9999999999999999999ULL, 19 }, + { 9999999999999999999ULL, 19 }, + { 9999999999999999999ULL, 19 }, + { 9999999999999999999ULL, 19 } }; - - #endif void string_replace( const std::string& oldValue, diff --git a/src/C++/Utility.h b/src/C++/Utility.h index b73c0c3ff..ef10a0cbb 100644 --- a/src/C++/Utility.h +++ b/src/C++/Utility.h @@ -108,7 +108,7 @@ typedef int socklen_t; #include #include #include -#if defined(__GNUC__) && defined(__x86_64__) +#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) #include #ifdef __AVX__ #include @@ -132,6 +132,8 @@ typedef int socklen_t; #include #ifdef HAVE_BOOST +#include +#include #include #include #include @@ -279,7 +281,7 @@ namespace FIX #ifdef __MACH__ #define FILE_OFFSET_TYPE_MOD "ll" #else -#define FILE_OFFSET_TYPE_MOD "L" +#define FILE_OFFSET_TYPE_MOD "L" #endif #define FILE_OFFSET_TYPE_SET(offt, value) ((offt) = (value)) #define FILE_OFFSET_TYPE_VALUE(offt) ((long long)offt) @@ -338,7 +340,7 @@ namespace FIX { static inline std::size_t bsf(W w) { - register const W notfound = (W)(S << 3); + const W notfound = (W)(S << 3); std::size_t v = Mod67Position[((1 + ~(uint64_t)w) & (uint64_t)w) % 67]; return (v != 64) ? v : notfound; } @@ -350,8 +352,8 @@ namespace FIX { static inline std::size_t PURE_DECL HEAVYUSE bsf(W w) { - register std::size_t v; - register const W notfound = 64; + std::size_t v; + const W notfound = 64; __asm__ __volatile__ ( "bsf %1, %0; " "cmovz %2, %0" @@ -366,8 +368,8 @@ namespace FIX { static inline std::size_t PURE_DECL HEAVYUSE bsf(W w) { - register unsigned v; - register const W notfound = 32; + unsigned v; + const W notfound = 32; __asm__ __volatile__ ( "bsf %1, %0; " "cmovz %2, %0" @@ -382,7 +384,7 @@ namespace FIX { static inline std::size_t PURE_DECL HEAVYUSE bsf(W w) { - register std::size_t v = __builtin_ffsll((uint64_t)w); + std::size_t v = __builtin_ffsll((uint64_t)w); return v ? (v - 1) : 64; } }; @@ -391,7 +393,7 @@ namespace FIX { static inline std::size_t PURE_DECL HEAVYUSE bsf(W w) { - register std::size_t v = __builtin_ffs((uint32_t)w); + std::size_t v = __builtin_ffs((uint32_t)w); return v ? (v - 1) : 32; } }; @@ -426,7 +428,7 @@ namespace FIX { unsigned long v; return _BitScanForward( &v, (unsigned long) w ) ? v - : _BitScanForward( &v, (unsigned long)(w >> 32) ) ? (v + 32) : 64; + : _BitScanForward( &v, (unsigned long)(w >> 32) ) ? v + 32 : 64; } }; @@ -472,26 +474,25 @@ namespace FIX ALIGN_DECL(16) LARGE_INTEGER m_data; TickCount(LARGE_INTEGER data) : m_data(data) {} - TickCount() - { - ::QueryPerformanceCounter(&m_data); - } + public: static inline TickCount now() - { return TickCount(); } + { LARGE_INTEGER data; ::QueryPerformanceCounter(&data); return data; } + + TickCount() { m_data.QuadPart = 0; } TickCount operator-(const TickCount& rhs) const { LARGE_INTEGER diff; - diff.QuadPart = m_data.QuadPart - rhs.m_data.QuadPart; - return diff; + diff.QuadPart = m_data.QuadPart - rhs.m_data.QuadPart; + return diff; } double seconds() const { - LARGE_INTEGER freq; - ::QueryPerformanceFrequency(&freq); - return (double)m_data.QuadPart/(double)freq.QuadPart; + LARGE_INTEGER freq; + ::QueryPerformanceFrequency(&freq); + return (double)m_data.QuadPart/(double)freq.QuadPart; } }; #elif defined(__MACH__) @@ -500,13 +501,12 @@ namespace FIX uint64_t m_data; TickCount(uint64_t data) : m_data(data) {} - TickCount() - { - m_data = ::mach_absolute_time(); - } + public: static inline TickCount now() - { return TickCount(); } + { return ::mach_absolute_time(); } + + TickCount() : m_data(0) {} TickCount operator-(const TickCount& rhs) const { @@ -527,13 +527,12 @@ namespace FIX struct timespec m_data; TickCount(struct timespec data) : m_data(data) {} - TickCount() - { - ::clock_gettime(CLOCK_REALTIME, &m_data); - } + public: static inline TickCount now() - { return TickCount(); } + { struct timespec data; ::clock_gettime(CLOCK_REALTIME, &m_data); return data; } + + TickCount() { m_data.tv_sec = 0; m_data.tv_nsec = 0; } TickCount operator-(const TickCount& rhs) const { @@ -563,7 +562,7 @@ namespace FIX #if defined(_MSC_VER) HANDLE m_sem; public: - Semaphore(int count = 0) + Semaphore(int count = 0) { m_sem = ::CreateSemaphore(NULL, (std::numeric_limits::max)(), count, NULL); } @@ -611,7 +610,7 @@ namespace FIX #else sem_t m_sem; public: - Semaphore( int count = 0 ) + Semaphore( int count = 0 ) { ::sem_init( &m_sem, 0, count ); } @@ -641,170 +640,439 @@ namespace FIX #endif }; // Sys -#if defined(__GNUC__) && defined(__x86_64__) - class IntBase { + struct NumData + { + union DigitPair + { + char c[2]; + uint16_t u; + }; + static ALIGN_DECL_DEFAULT DigitPair m_pairs[100]; /* string representations of "00" to "99" */ + }; + +#if (defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))) || defined(_MSC_VER) + class x86Data : public NumData { protected: - struct Log2 { - int32_t m_threshold; - int32_t m_count; + union Log2 { + struct { + int32_t m_count; + uint32_t m_threshold; + }; + uint64_t m_qword; }; - static Log2 m_digits[32]; + static ALIGN_DECL_DEFAULT Log2 m_digits[32]; + static struct ConvBits + { + uint16_t mul_10[8]; + uint16_t div_const[8]; + uint16_t shl_const[8]; + uint8_t to_ascii[16]; + } ALIGN_DECL(64) cbits; }; - class Int : public IntBase { + class UInt : public x86Data { public: - static inline int PURE_DECL HEAVYUSE numDigits( int32_t i ) + static inline std::size_t PURE_DECL HEAVYUSE numDigits( uint32_t i ) { - register int32_t z = 0; - register uint32_t log2; - if (i < 0) i = -i; + std::size_t l = i; +#ifdef __GNUC__ + #ifdef __x86_64__ __asm__ __volatile__ ( - "bsr %1, %0;" \ - "cmovz %2, %0;"\ - : "=r" (log2) \ - : "rm" (i), "r"(z)); - register const Log2& e = m_digits[log2]; + "bsrl %k0, %k0 \n\t" + "shlq $32, %q1 \n\t" + "movq (%2,%0,8), %0 \n\t" + "cmpq %0, %q1 \n\t" + "seta %b1 \n\t" + "addl %1, %k0 \n\t" + : "+r" (l), "+r"(i) + : "r"(m_digits) + : "cc" + ); + return l; + #else + __asm__ __volatile__ ( "bsrl %0, %0; " : "+r" (l) : : "cc" ); + const Log2& e = m_digits[l]; + return e.m_count + ( i > e.m_threshold ); + #endif +#else + l = _BitScanReverse((DWORD*)&l, i) ? l : 0; + const Log2& e = m_digits[l]; return e.m_count + ( i > e.m_threshold ); +#endif } - }; - class PositiveInt : public IntBase { - public: - static inline int PURE_DECL HEAVYUSE numDigits( int32_t i ) + + // serializer for an integer with a known length + static inline NOTHROW HEAVYUSE void generate(char* buf, uint32_t value, std::size_t len) { - register uint32_t log2; +#if defined(ENABLE_INT_SERIALIZER_BW) + uint32_t u = value; + switch(len) { + default: u = (value * 1374389535ULL) >> 37; *(uint16_t*)(buf + 8) = m_pairs[value -= 100 * u].u; + case 8: value = (u * 1374389535ULL) >> 37; *(uint16_t*)(buf + 6) = m_pairs[u -= 100 * value].u; + case 6: u = (value * 1374389535ULL) >> 37; *(uint16_t*)(buf + 4) = m_pairs[value -= 100 * u].u; + case 4: value = (u * 167773) >> 24; *(uint16_t*)(buf + 2) = m_pairs[u -= 100 * value].u; + case 2: *(uint16_t*)(buf) = m_pairs[value].u; + case 0: return; + case 9: u = (value * 1374389535ULL) >> 37; *(uint16_t*)(buf + 7) = m_pairs[value -= 100 * u].u; + case 7: value = (u * 1374389535ULL) >> 37; *(uint16_t*)(buf + 5) = m_pairs[u -= 100 * value].u; + case 5: u = (value * 1374389535ULL) >> 37; *(uint16_t*)(buf + 3) = m_pairs[value -= 100 * u].u; + case 3: value = (u * 167773) >> 24; *(uint16_t*)(buf + 1) = m_pairs[u -= 100 * value].u; + case 1: *buf = value + 0x30; + } +#elif defined(ENABLE_INT_SERIALIZER_BW_SHORT) + std::size_t odd = len & 1; + uint32_t u = value; + switch(len >> 1) { + default: u = (value * 1374389535ULL) >> 37; *(uint16_t*)(buffer + 8) = m_pairs[value - 100 * u].u; + case 4: value = (u * 1374389535ULL) >> 37; *(uint16_t*)(buffer + 6 + odd) = m_pairs[u - 100 * value].u; + case 3: u = (value * 1374389535ULL) >> 37; *(uint16_t*)(buffer + 4 + odd) = m_pairs[value - 100 * u].u; + case 2: value = (u * 1374389535ULL) >> 37; *(uint16_t*)(buffer + 2 + odd) = m_pairs[u - 100 * value].u; + case 1: u = (value * 6554) >> 16; *(uint16_t*)buffer = m_pairs[odd ? u : value].u; value -= 10 * u; len = -1; + case 0: buffer[odd - len] = value + 0x30; + } +#else + #if defined(__GNUC__) && defined(__x86_64__) + uint16_t w; + uint32_t u; __asm__ __volatile__ ( - "bsr %1, %0; " \ - : "=r" (log2) \ - : "rm" (i)); - register const Log2& e = m_digits[log2]; - return e.m_count + ( i > e.m_threshold ); + "leaq T%=(%%rip), %q1 \n\t" + "addq (%q1,%3,8), %q1 \n\t" + "jmp *%q1 \n\t" + "T%=: .quad L0%=-T%= \n\t" + " .quad L1%=-T%= \n\t" + " .quad L2%=-T%= \n\t" + " .quad L3%=-T%= \n\t" + " .quad L4%=-T%= \n\t" + " .quad L5%=-T%= \n\t" + " .quad L6%=-T%= \n\t" + " .quad L7%=-T%= \n\t" + " .quad L8%=-T%= \n\t" + " .quad L9%=-T%= \n\t" + " .quad L10%=-T%= \n\t" + "L10%=: \n\t" + " imulq $1441151881, %q0, %q1 \n\t" + " shrq $57, %q1 \n\t" + " movw (%5,%q1,2), %w2 \n\t" + " imull $100000000, %1, %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, (%4) \n\t" + "L8%=: \n\t" + " imulq $1125899907, %q0, %q1 \n\t" + " shrq $50, %q1 \n\t" + " movw (%5,%q1,2), %w2 \n\t" + " imull $1000000, %1, %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, -8(%4,%3) \n\t" + "L6%=: \n\t" + " imulq $429497, %q0, %q1 \n\t" + " shrq $32, %q1 \n\t" + " movw (%5,%q1,2), %w2 \n\t" + " imull $10000, %1, %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, -6(%4,%3) \n\t" + "L4%=: \n\t" + " imull $167773, %0, %1 \n\t" + " shrl $24, %1 \n\t" + " movw (%5,%q1,2), %w2 \n\t" + " imull $100, %1, %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, -4(%4,%3) \n\t" + "L2%=: \n\t" + " movw (%5,%q0,2), %w2 \n\t" + " movw %w2, -2(%4,%3) \n\t" + "L0%=: jmp 1f \n\t" + "L9%=: \n\t" + " imulq $1801439851, %q0, %q1 \n\t" + " shrq $54, %q1 \n\t" + " movw (%5,%q1,2), %w2 \n\t" + " imull $10000000, %1, %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, (%4) \n\t" + "L7%=: \n\t" + " imulq $43980466, %q0, %q1 \n\t" + " shrq $42, %q1 \n\t" + " movw (%5,%q1,2), %w2 \n\t" + " imull $100000, %1, %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, -7(%4,%3) \n\t" + "L5%=: \n\t" + " imulq $268436, %q0, %q1 \n\t" + " shrq $28, %q1 \n\t" + " movw (%5,%q1,2), %w2 \n\t" + " imull $1000, %1, %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, -5(%4,%3) \n\t" + "L3%=: \n\t" + " imull $6554, %0, %1 \n\t" + " shrl $15, %1 \n\t" + " andb $254, %b1 \n\t" + " movw (%5,%q1), %w2 \n\t" + " leal (%1,%1,4), %1 \n\t" + " subl %1, %0 \n\t" + " movw %w2, -3(%4,%3) \n\t" + "L1%=: \n\t" + " addl $48, %0 \n\t" + " movb %b0, -1(%4,%3) \n\t" + "1: \n\t" + : "+r"(value), "=&r"(u), "=&r"(w) + : "r"(len), "r"(buf), "r"(m_pairs) + : "memory", "cc" + ); + #elif defined(_MSC_VER) && defined(_M_X64) + uint32_t u; + switch(len) { + default: u = (value * 1441151881ULL) >> 57; *(uint16_t*)(buf) = m_pairs[u].u; value -= u * 100000000; + case 8: u = (value * 1125899907ULL) >> 50; *(uint16_t*)(buf + len - 8) = m_pairs[u].u; value -= u * 1000000; + case 6: u = (value * 429497ULL) >> 32; *(uint16_t*)(buf + len - 6) = m_pairs[u].u; value -= u * 10000; + case 4: u = (value * 167773) >> 24; *(uint16_t*)(buf + len - 4) = m_pairs[u].u; value -= u * 100; + case 2: *(uint16_t*)(buf + len - 2) = m_pairs[value].u; + case 0: return; + case 9: u = (value * 1801439851ULL) >> 54; *(uint16_t*)(buf) = m_pairs[u].u; value -= u * 10000000; + case 7: u = (value * 43980466ULL) >> 42; *(uint16_t*)(buf + len - 7) = m_pairs[u].u; value -= u * 100000; + case 5: u = (value * 268436ULL) >> 28; *(uint16_t*)(buf + len - 5) = m_pairs[u].u; value -= u * 1000; + case 3: u = (value * 6554) >> 16; *(uint16_t*)(buf + len - 3) = m_pairs[u].u; value -= u * 10; + case 1: *(buf + len - 1) = value + 0x30; + } + #else + uint32_t u; + switch(len) { + default: u = value / 100000000; *(uint16_t*)(buf) = m_pairs[u].u; value -= u * 100000000; + case 8: u = value / 1000000; *(uint16_t*)(buf + len - 8) = m_pairs[u].u; value -= u * 1000000; + case 6: u = value / 10000; *(uint16_t*)(buf + len - 6) = m_pairs[u].u; value -= u * 10000; + case 4: u = value / 100; *(uint16_t*)(buf + len - 4) = m_pairs[u].u; value -= u * 100; + case 2: *(uint16_t*)(buf + len - 2) = m_pairs[value].u; + case 0: return; + case 9: u = value / 10000000; *(uint16_t*)(buf) = m_pairs[u].u; value -= u * 10000000; + case 7: u = value / 100000; *(uint16_t*)(buf + len - 7) = m_pairs[u].u; value -= u * 100000; + case 5: u = value / 1000; *(uint16_t*)(buf + len - 5) = m_pairs[u].u; value -= u * 1000; + case 3: u = value / 10; *(uint16_t*)(buf + len - 3) = m_pairs[u].u; value -= u * 10; + case 1: *(buf + len - 1) = value + 0x30; + } + #endif +#endif } - static inline short PURE_DECL HEAVYUSE checkSum(int n) + + // serializer that calculates length, buffer must have space for any value including terminating '\0' + static inline unsigned NOTHROW HEAVYUSE generate(char* buf, uint32_t value) { - short csum = 0; - do - { + uint32_t x, y, l = 0; + + x = (value * 1374389535ULL) >> 37; + y = value; + if (x) { + uint32_t div_10000 = 0xd1b71759, mul_10000 = 55536; + __m128i z, m, a, o; + y -= 100 * x; + z = _mm_cvtsi32_si128(x); + m = _mm_load_si128((__m128i*)cbits.mul_10); + o = _mm_mul_epu32( z, _mm_cvtsi32_si128(div_10000)); + z = _mm_add_epi32( z, _mm_mul_epu32( _mm_cvtsi32_si128(mul_10000), _mm_srli_epi64( o, 45) ) ); + z = _mm_slli_epi64( _mm_shuffle_epi32( _mm_unpacklo_epi16(z, z), 5 ), 2 ); + a = _mm_load_si128((__m128i*)cbits.to_ascii); + z = _mm_mulhi_epu16( _mm_mulhi_epu16( z, *(__m128i*)cbits.div_const ), *(__m128i*)cbits.shl_const ); + z = _mm_sub_epi16( z, _mm_slli_epi64( _mm_mullo_epi16( m, z ), 16 ) ); + z = _mm_add_epi8( _mm_packus_epi16( z, _mm_xor_si128(o, o) ), a ); +#if defined(_MSC_VER) + _BitScanForward( (DWORD*)&x, ~_mm_movemask_epi8( _mm_cmpeq_epi8( a, z ) ) ); +#else + x = __builtin_ctz( ~_mm_movemask_epi8( _mm_cmpeq_epi8( a, z ) ) ); +#endif + l = 8 - x; +#if defined(__x86_84__) || defined(_M_X64) + uint64_t q = (uint64_t)_mm_cvtsi128_si64(z) >> (x * 8); + *(uint64_t*)buf = q; +#else + z = _mm_srli_epi64( z, x * 8 ); + _mm_storel_epi64( (__m128i*)buf, z ); +#endif + buf += l; + x = 1; + } + value = (y * 6554) >> 16; + l += 1 + (x | (value != 0)); + *(uint32_t*)buf = 0x30 + ((l > 1) ? ((0x30 + y - value * 10) << 8) + value : y); + return l; + } + + static inline short PURE_DECL HEAVYUSE checkSum(uint32_t n) + { + short csum = (int)'0' + n % 10; +#ifdef INTEL_COMPILER +#pragma loop count min(0) max(9) +#endif + for( n /= 10; n; n /= 10 ) csum += (int)'0' + n % 10; - } while ( (n /= 10) ); return csum; } }; - class Long { - struct Log2 { - int64_t m_threshold; - int64_t m_count; - }; - static Log2 m_digits[64]; + +#else // generics + + class UInt : public NumData { public: - static inline int PURE_DECL HEAVYUSE numDigits( int64_t i ) + static inline std::size_t PURE_DECL HEAVYUSE numDigits( uint32_t i ) { - register const int64_t z = 0; - register uint64_t log2; - if (i < 0) i = -i; - __asm__ __volatile__ ( - "bsr %1, %0;" \ - "cmovz %2, %0;"\ - : "=r" (log2) \ - : "rm" (i), "r"(z)); - - register const Log2& e = m_digits[log2]; - return e.m_count + ( i > e.m_threshold ); + if (i >= 100) + if (i < 1000000) + if (i < 10000) + return 3 + (i >= 1000); + else + return 5 + (i >= 100000); + else + if (x < 100000000) + return 7 + (i >= 10000000); + else + return 9 + (i >= 1000000000); + return 1 + (i > 9); } - }; -#else - class Int { - public: - static inline int PURE_DECL HEAVYUSE numDigits( int32_t i ) - { - if (i < 0) i = -i; - if (i < 100000) { - if (i < 1000) { - if (i < 10) return 1; - else if (i < 100) return 2; - else return 3; - } else { - if (i < 10000) return 4; - else return 5; - } - } else { - if (i < 10000000) { - if (i < 1000000) return 6; - else return 7; - } else { - if (i < 100000000) return 8; - else if (i < 1000000000) return 9; - else return 10; - } + // serializer for an integer of a known length + static inline NOTHROW HEAVYUSE void generate(char* buf, uint32_t value, std::size_t len) + { + for (int n = 1; len > n; n++) + { + uint32_t u = value / 10; + buf[len - n] = '0' + (value - u * 10); + value = u; } + *buf = '0' + value; } - }; - class PositiveInt { - public: - static inline int PURE_DECL HEAVYUSE numDigits( int32_t i ) - { - if (i < 100000) { - if (i < 1000) { - if (i < 10) return 1; - else if (i < 100) return 2; - else return 3; - } else { - if (i < 10000) return 4; - else return 5; - } - } else { - if (i < 10000000) { - if (i < 1000000) return 6; - else return 7; - } else { - if (i < 100000000) return 8; - else if (i < 1000000000) return 9; - else return 10; - } + // serializer that calculates length, buffer must have space for any value including terminating '\0' + static inline unsigned NOTHROW HEAVYUSE generate(char* buf, uint32_t value) + { + uint32_t u = value / 10; + uint32_t c0 = value - u * 10; + char* p = buf; + if (u) { + value = u / 10; + uint32_t c1 = u - value * 10; + if (value) { + u = value / 10; + uint32_t c2 = value - u * 10; + if (u) { + value = u / 10; + uint32_t c3 = u - value * 10; + if (value) { + u = value / 10; + uint32_t c4 = value - u * 10; + if (u) { + value = u / 10; + uint32_t c5 = u - value * 10; + if (value) { + u = value / 10; + uint32_t c6 = value - u * 10; + if (u) { + value = u / 10; + uint32_t c7 = u - value * 10; + if (value) { + u = value / 10; + uint32_t c8 = value - u * 10; + if (u) { + *p++ = '0' + u; + } + *p++ = '0' + c8; + } + *p++ = '0' + c7; + } + *p++ = '0' + c6; + } + *p++ = '0' + c5; + } + *p++ = '0' + c4; + } + *p++ = '0' + c3; + } + *p++ = '0' + c2; + } + *p++ = '0' + c1; } + *p++ = '0' + c0; + *p = '\0'; + return p - buf; } static inline short PURE_DECL HEAVYUSE checkSum(int n) { - short csum = 0; - do - { + short csum = (int)'0' + n % 10; + for( n /= 10; n; n /= 10 ) csum += (int)'0' + n % 10; - } while ( (n /= 10) ); return csum; } }; - class Long { +#endif + + class Int { public: - static inline int PURE_DECL HEAVYUSE numDigits( int64_t v ) + static inline std::size_t PURE_DECL HEAVYUSE numDigits( int32_t i ) { - int r = 1; - if (v < 0) v = -v; - if (v >= 10000000000000000LL) - { - r += 16; - v /= 10000000000000000LL; - } - if (v >= 100000000) - { - r += 8; - v /= 100000000; - } - - if (v >= 10000) { - r += 4; - v /= 10000; - } + return UInt::numDigits( (i < 0) ? uint32_t(~i) + 1 : i ); + } - if (v >= 100) { - r += 2; - v /= 100; - } - return r + (v >= 10); + static inline unsigned NOTHROW HEAVYUSE generate(char* buf, int32_t value) + { + *buf = '-'; + bool neg = value < 0; + return UInt::generate(buf + neg, neg ? uint32_t(~value) + 1 : value ) + neg; } }; -#endif + class ULong { +#if (defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))) || defined(_MSC_VER) + struct Log2 { + uint64_t m_threshold; + int64_t m_count; + }; + static ALIGN_DECL_DEFAULT Log2 m_digits[64]; public: - static inline int PURE_DECL HEAVYUSE numFractionDigits( uint64_t v ) + static inline std::size_t PURE_DECL HEAVYUSE numDigits( uint64_t i ) + { + uint64_t log2 = i; +#ifdef __x86_64__ + __asm__ __volatile__ ( "bsrq %0, %0; " : "+r" (log2) : : "cc" ); +#elif defined __i386__ + log2 = log2 ? __builtin_clzll(log2) : 0; +#elif defined _M_X64 + log2 = _BitScanReverse64(&log2, log2) ? log2 : 0; +#else // _M_IX86 + uint32_t v; + log2 = _BitScanReverse( (DWORD*)&v, (unsigned long)(log2 >> 32)) ? v + 32 + : _BitScanReverse( (DWORD*)&v, (unsigned long)(log2) ) ? v : 0; +#endif + const Log2& e = m_digits[log2]; + return (std::size_t)(e.m_count + ( i > e.m_threshold )); + } +#else + public: + static inline std::size_t PURE_DECL HEAVYUSE numDigits( uint64_t i ) + { + if (i >= 100) + if (i < 10000000000ULL) + if (i < 1000000) + if (i < 10000) + return 3 + (i >= 1000); + else + return 5 + (i >= 100000); + else + if (x < 100000000) + return 7 + (i >= 10000000); + else + return 9 + (i >= 1000000000); + else + if (i >= 1000000000000ULL) + if (i < 10000000000000000ULL) + if (i < 100000000000000ULL) + return 13 + (i >= 10000000000000ULL); + else + return 15 + (i >= 1000000000000000ULL); + else + if (x < 1000000000000000000ULL) + return 17 + (i >= 100000000000000000ULL); + else + return 19 + (i >= 10000000000000000000ULL); + else + return 11 + (i >= 100000000000ULL); + return 1 + (i > 9); + } +#endif + static inline std::size_t PURE_DECL HEAVYUSE numFractionDigits( uint64_t v ) { if ( v % 100000000 ) { if ( v % 10000 ) { @@ -862,7 +1130,7 @@ namespace FIX struct CharBuffer { - class reverse_iterator : public std::iterator + class reverse_iterator : public std::iterator { char* m_p; public: @@ -874,6 +1142,10 @@ namespace FIX { return m_p == it.m_p; } bool operator!=( reverse_iterator it) const { return m_p != it.m_p; } + bool operator <( reverse_iterator it) const + { return m_p > it.m_p; } + bool operator >( reverse_iterator it) const + { return m_p < it.m_p; } difference_type operator-( reverse_iterator it) const { return it.m_p - m_p; } }; @@ -902,11 +1174,11 @@ namespace FIX static inline int32_t PURE_DECL HEAVYUSE checkSum(const char* p, int size) { - register int32_t x = 0; + int32_t x = 0; #if defined(__GNUC__) && defined(__x86_64__) - register int32_t n = size; - register const uint8_t* pu = (const uint8_t*)p; - register const uint64_t mask = 0x0101010101010101ULL; + int32_t n = size; + const uint8_t* pu = (const uint8_t*)p; + const uint64_t mask = 0x0101010101010101ULL; if (n >= 8) __asm__ __volatile ( @@ -1048,14 +1320,18 @@ namespace FIX template <> union CharBuffer::Fixed<2> { + typedef uint16_t value_type; + char data[2]; - uint16_t value; + value_type value; }; template <> union CharBuffer::Fixed<4> { + typedef uint32_t value_type; + char data[4]; - uint32_t value; + value_type value; }; #if defined(__x86_64__) || defined(__i386__) || defined(_M_X64) || defined(_M_IX86) @@ -1084,8 +1360,10 @@ namespace FIX template <> union CharBuffer::Fixed<8> { + typedef uint64_t value_type; + char data[8]; - uint64_t value; + value_type value; }; #if defined(__GNUC__) && defined(__x86_64__) @@ -1093,7 +1371,7 @@ namespace FIX template<> inline std::size_t PURE_DECL CharBuffer::find<8>(int v, const CharBuffer::Fixed<8>& f) { - register unsigned at = 0; + unsigned at = 0; __asm__ __volatile ( #if defined(__AVX__) "vmovd %1, %%xmm1 \n\t" @@ -1129,142 +1407,64 @@ namespace FIX #endif class Tag +#if defined(_MSC_VER) || (defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))) + : public x86Data +#endif { /* NOTE: Allow for tag value range of 1-99999999. */ -#if defined(__GNUC__) && defined(__x86_64__) - static struct ConvBits - { - uint32_t div_10000[2]; - uint32_t mul_10000[2]; - uint16_t mul_10[8]; - uint16_t div_const[8]; - uint16_t shl_const[8]; - uint8_t to_ascii[16]; - } s_Bits; -#endif + static const std::size_t MaxValueSize = 8; // tag length limit - class Convertor + static inline void NOTHROW HEAVYUSE generate(char* buf, uint32_t x, int digits) { - static const std::size_t MaxValueSize = 8; // tag length limit - - uint32_t m_value; - - void NOTHROW HEAVYUSE generate(char* buf, int digits) const { - - uint32_t v, x = m_value; +#if defined(_MSC_VER) || (defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))) + uint32_t v; -#if defined(__GNUC__) && defined(__x86_64__) - - if( x <= 999 ) + if( LIKELY(x <= 999) ) + { + if ( LIKELY(x > 9) ) { - if (x > 99) { - uint32_t mul100 = 42949673; - __asm__ __volatile__ ( - "mull %2 \n" - : "=d"(v), "+a"(mul100) : "r"(x) : "cc" - ); - *buf++ = '0' + v; - x -= v * 100U; - } - uint32_t mul10 = 429496730; - __asm__ __volatile__ ( - "mull %2 \n" - : "=d"(v), "+a"(mul10) : "r"(x) : "cc" - ); - if (digits > 1) { - *(uint16_t*)buf = 0x3030 + ((x - v * 10) << 8) + v; - } else - *buf = '0' + x; + v = (x * 6554) >> 16; + *(uint16_t*)buf = m_pairs[(digits & 1) ? v : x].u; + x -= v * 10; } + buf[digits - 1] = x + 0x30; + } + else + { + uint32_t div_10000 = 0xd1b71759, mul_10000 = 55536; + + /* Based on utoa32_sse_2 routine by Wojciech Mula + * http://wm.ite.pl/articles/sse-itoa.html + */ + __m128i z, m, a, o; + z = _mm_cvtsi32_si128(x); + m = _mm_load_si128((__m128i*)cbits.mul_10); + o = _mm_mul_epu32( z, _mm_cvtsi32_si128(div_10000)); + z = _mm_add_epi32( z, _mm_mul_epu32( _mm_cvtsi32_si128(mul_10000), _mm_srli_epi64( o, 45) ) ); + z = _mm_slli_epi64( _mm_shuffle_epi32( _mm_unpacklo_epi16(z, z), 5 ), 2 ); + a = _mm_load_si128((__m128i*)cbits.to_ascii); + z = _mm_mulhi_epu16( _mm_mulhi_epu16( z, *(__m128i*)cbits.div_const ), *(__m128i*)cbits.shl_const ); + z = _mm_sub_epi16( z, _mm_slli_epi64( _mm_mullo_epi16( m, z ), 16 ) ); + z = _mm_add_epi8( _mm_packus_epi16( z, _mm_xor_si128(o, o) ), a ); +#if defined(__x86_64__) || defined(_M_X64) + uint64_t packed = (uint64_t)_mm_cvtsi128_si64(z) >> ((8 - digits) * 8); + if (LIKELY(digits <= 4)) + *(uint32_t*)buf = (uint32_t)packed; else - { - uint64_t packed; - /* Based on utoa32_sse_2 routine by Wojciech Mula - * http://wm.ite.pl/articles/sse-itoa.html - */ - __asm__ __volatile__ ( -#ifdef __AVX__ - "vmovd %1, %%xmm1 \n" - "vmovq %2, %%xmm0 \n" - "vmovq %3, %%xmm3 \n" - "vpmuludq %%xmm1, %%xmm0, %%xmm0 \n" - "vpsrlq $45, %%xmm0, %%xmm0 \n" - "vpmuludq %%xmm3, %%xmm0, %%xmm0 \n" - "vpaddd %%xmm1, %%xmm0, %%xmm0 \n" - "vpsllq $2, %%xmm0, %%xmm0 \n" - "vpunpcklwd %%xmm0, %%xmm0, %%xmm0 \n" - "vmovdqa %4, %%xmm1 \n" - "vpshufd $5, %%xmm0, %%xmm0 \n" - "vpmulhuw %5, %%xmm0, %%xmm0 \n" - "vpmulhuw %6, %%xmm0, %%xmm0 \n" - "vpmullw %%xmm0, %%xmm1, %%xmm1 \n" - "vpsllq $16, %%xmm1, %%xmm1 \n" - "vmovdqa %7, %%xmm3 \n" - "vpxor %%xmm2, %%xmm2, %%xmm2 \n" - "vpsubw %%xmm1, %%xmm0, %%xmm0 \n" - "vpackuswb %%xmm2, %%xmm0, %%xmm0 \n" - "vpaddb %%xmm3, %%xmm0, %%xmm0 \n" - "vmovq %%xmm0, %0 \n" + *(uint64_t*)buf = packed; // can overwrite space reserved for '=', '\001' and '\000' #else - "movd %1, %%xmm1 \n" - "movq %2, %%xmm0 \n" - "movq %3, %%xmm3 \n" - "pmuludq %%xmm1, %%xmm0 \n" - "psrlq $45, %%xmm0 \n" - "pmuludq %%xmm3, %%xmm0 \n" - "paddd %%xmm1, %%xmm0 \n" - "psllq $2, %%xmm0 \n" - "punpcklwd %%xmm0, %%xmm0 \n" - "movdqa %4, %%xmm1 \n" - "pshufd $5, %%xmm0, %%xmm0 \n" - "pmulhuw %5, %%xmm0 \n" - "pmulhuw %6, %%xmm0 \n" - "pmullw %%xmm0, %%xmm1 \n" - "psllq $16, %%xmm1 \n" - "movdqa %7, %%xmm3 \n" - "pxor %%xmm2, %%xmm2 \n" - "psubw %%xmm1, %%xmm0 \n" - "packuswb %%xmm2, %%xmm0 \n" - "paddb %%xmm3, %%xmm0 \n" - "movq %%xmm0, %0 \n" + z = _mm_srli_epi64( z, (8 - digits) * 8 ); + if (LIKELY(digits <= 4)) + *(uint32_t*)buf = _mm_cvtsi128_si32( z ); + else + _mm_storel_epi64( (__m128i*)buf, z ); #endif - : "=r"(packed) - : "r" (x), "m"(*s_Bits.div_10000), - "m"(*s_Bits.mul_10000), "m"(*s_Bits.mul_10), "m"(*s_Bits.div_const), - "m"(*s_Bits.shl_const), "m"(*s_Bits.to_ascii) - : "xmm0", "xmm1", "xmm2", "xmm3" - ); - packed >>= (8 - digits) << 3; - if (digits > 4) - *(uint64_t*)buf = packed; // can overwrite space reserved for '=', '\001' and '\000' - else - *(uint32_t*)buf = (uint32_t)packed; - } + } #else - buf += digits - 1; - do { - v = x / 10; - *buf-- = "0123456789" [x - v * 10]; - } while( (x = v) ); + UInt::generate(buf, x, digits); #endif - } - - public: - Convertor(int value) : m_value(value) {} - - void NOTHROW HEAVYUSE append_to(char* buf, int digits) const - { - generate(buf, digits); - } - - template void HEAVYUSE append_to(S& s, int digits) const - { - char buf[MaxValueSize]; - generate(buf, digits); - s.append(buf, digits); - } - }; + } public: @@ -1272,14 +1472,23 @@ namespace FIX inline std::size_t operator()(int tag) const { return tag; } }; - template static void generate(S& result, int value, int digits) + template static void append(S& result, int value, int digits) + { + char buf[MaxValueSize]; + generate(buf, (uint32_t)value, digits); + result.append(buf, digits); + } + + template static void set(S& result, int value, int digits) { - Convertor(value).append_to(result, digits); + char buf[MaxValueSize]; + generate(buf, (uint32_t)value, digits); + result.assign(buf, digits); } - static void NOTHROW HEAVYUSE generate(char* result, int value, int digits) + static void NOTHROW HEAVYUSE write(char* result, int value, int digits) { - Convertor(value).append_to(result, digits); + generate(result, (uint32_t)value, digits); } static inline const char NOTHROW_PRE * PURE_DECL HEAVYUSE NOTHROW_POST delimit(const char* p, unsigned len) @@ -1287,8 +1496,8 @@ namespace FIX #if defined(__GNUC__) && defined(__x86_64__) if ( LIKELY(len > 1) ) { - register uint64_t v = 0x3d3d3d3d3d3d3d3dULL; - register uint64_t pos = ~(uintptr_t)p; + uint64_t v = 0x3d3d3d3d3d3d3d3dULL; + uint64_t pos = ~(uintptr_t)p; __asm__ __volatile__ ( #ifdef __AVX__ "vmovq %0, %%xmm0 \n\t" @@ -1362,12 +1571,12 @@ namespace FIX static inline char NOTHROW length(int field) { - return Util::PositiveInt::numDigits(field) + 1; + return Util::UInt::numDigits((unsigned)field) + 1; } static inline short NOTHROW checkSum(int field) { - return Util::PositiveInt::checkSum(field) + (short)'='; + return Util::UInt::checkSum((unsigned)field) + (short)'='; } }; // Tag @@ -1491,7 +1700,7 @@ namespace FIX word_type rem = m_bits[src--] << shift; for ( ; src >= 0; dst--, src-- ) { - register word_type w = m_bits[src]; + word_type w = m_bits[src]; m_bits[dst] = rem | (w >> (word_size - shift)); rem = w << shift; } @@ -1517,7 +1726,7 @@ namespace FIX word_type rem = m_bits[src++] >> shift; for ( ; src < Width; dst++, src++ ) { - register word_type w = m_bits[src]; + word_type w = m_bits[src]; m_bits[dst] = rem | (w << (word_size - shift)); rem = w >> shift; } @@ -1890,7 +2099,7 @@ namespace FIX // optimize for short strings static inline void NOTHROW append(sg_buf_t& buf, const char* s, std::size_t len) { - register char* p = (char*)IOV_BUF(buf) + IOV_LEN(buf); + char* p = (char*)IOV_BUF(buf) + IOV_LEN(buf); IOV_LEN(buf) += len; #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) while (len > 3) @@ -1948,7 +2157,7 @@ namespace FIX static inline std::size_t NOTHROW send(int socket, sg_buf_ptr bufs, int n) { struct msghdr m = { NULL, 0, bufs, (std::size_t)n, NULL, 0, 0 }; - ssize_t sz = ::sendmsg(socket, &m, MSG_NOSIGNAL); + ssize_t sz = ::sendmsg(socket, &m, 0); return sz >= 0 ? (std::size_t)sz : 0; } diff --git a/src/C++/quickfix_vs11.vcxproj b/src/C++/quickfix_vs11.vcxproj index 34eaef261..b02edaa29 100644 --- a/src/C++/quickfix_vs11.vcxproj +++ b/src/C++/quickfix_vs11.vcxproj @@ -661,6 +661,8 @@ + + @@ -712,6 +714,7 @@ + @@ -967,4 +970,4 @@ del /F EXCLUDE - + \ No newline at end of file From 3f2c2d36ab9e5e54cd90f46af8f44149a3dcbec0 Mon Sep 17 00:00:00 2001 From: akorobka Date: Tue, 29 Mar 2016 11:53:09 -0400 Subject: [PATCH 10/27] Minor fixes Fix build with the flat field map container option and remove project files for old MS compilers --- quickfix_vs7.sln | 142 -- quickfix_vs8.sln | 306 --- src/C++/Container.h | 4 +- src/C++/FieldMap.h | 41 +- src/C++/Utility.h | 8 +- src/C++/quickfix_vs10a.vcxproj | 0 src/C++/quickfix_vs7.vcproj | 3034 ------------------------ src/C++/quickfix_vs8.vcproj | 4058 -------------------------------- src/C++/quickfix_vs9.vcproj | 84 + 9 files changed, 118 insertions(+), 7559 deletions(-) delete mode 100644 quickfix_vs7.sln delete mode 100644 quickfix_vs8.sln delete mode 100644 src/C++/quickfix_vs10a.vcxproj delete mode 100644 src/C++/quickfix_vs7.vcproj delete mode 100644 src/C++/quickfix_vs8.vcproj diff --git a/quickfix_vs7.sln b/quickfix_vs7.sln deleted file mode 100644 index 7574ff725..000000000 --- a/quickfix_vs7.sln +++ /dev/null @@ -1,142 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_vs7", "src\C++\quickfix_vs7.vcproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_net_vs7", "src\.NET\quickfix_net_vs7.vcproj", "{FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit_vs7", "src\test_unit_vs7.vcproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" - ProjectSection(ProjectDependencies) = postProject - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} = {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_vs7", "src\test_acceptance_vs7.vcproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance_vs7", "src\test_performance_vs7.vcproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp_vs7", "examples\executor\C++\example_executor_cpp_vs7.vcproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch_vs7", "examples\ordermatch\example_ordermatch_vs7.vcproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner_vs7", "test\atrun\test_acceptance_runner_vs7.vcproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" - ProjectSection(ProjectDependencies) = postProject - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} = {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient_vs7", "examples\tradeclient\example_tradeclient_vs7.vcproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quickfix_net_messages_vs7", "src\.NET\quickfix_net_messages_vs7.csproj", "{30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example_executor_csharp_vs7", "examples\executor\csharp\example_executor_csharp_vs7.csproj", "{BA234002-9F1A-4B01-98D6-DE05C7E78B58}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "example_executor_vbnet_vs7", "examples\executor\vbnet\example_executor_vbnet_vs7.vbproj", "{DA675460-F6E5-458C-BCEB-45B2986C90FC}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest++.vsnet2003", "UnitTest++\UnitTest++.vsnet2003.vcproj", "{7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_acceptance_net_vs7", "src\test_acceptance_net_vs7.csproj", "{49CDD4F8-96E0-4EBA-844F-E9AF580D7247}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_performance_net_vs7", "src\test_performance_net_vs7.csproj", "{F63B434A-8E9A-4673-A6C4-F96F3492BF80}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug.ActiveCfg = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug.Build.0 = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release.ActiveCfg = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release.Build.0 = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug.ActiveCfg = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug.Build.0 = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release.ActiveCfg = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release.Build.0 = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug.ActiveCfg = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug.Build.0 = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release.ActiveCfg = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release.Build.0 = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug.ActiveCfg = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug.Build.0 = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release.ActiveCfg = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release.Build.0 = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug.ActiveCfg = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug.Build.0 = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release.ActiveCfg = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release.Build.0 = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug.ActiveCfg = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug.Build.0 = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release.ActiveCfg = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release.Build.0 = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug.ActiveCfg = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug.Build.0 = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release.ActiveCfg = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release.Build.0 = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug.ActiveCfg = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug.Build.0 = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release.ActiveCfg = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release.Build.0 = Release|Win32 - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug.ActiveCfg = Debug|.NET - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug.Build.0 = Debug|.NET - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release.ActiveCfg = Release|.NET - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release.Build.0 = Release|.NET - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug.ActiveCfg = Debug|.NET - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug.Build.0 = Debug|.NET - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release.ActiveCfg = Release|.NET - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release.Build.0 = Release|.NET - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug.ActiveCfg = Debug|.NET - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug.Build.0 = Debug|.NET - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release.ActiveCfg = Release|.NET - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release.Build.0 = Release|.NET - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Debug.ActiveCfg = Debug|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Debug.Build.0 = Debug|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Release.ActiveCfg = Release|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Release.Build.0 = Release|Win32 - {49CDD4F8-96E0-4EBA-844F-E9AF580D7247}.Debug.ActiveCfg = Debug|.NET - {49CDD4F8-96E0-4EBA-844F-E9AF580D7247}.Debug.Build.0 = Debug|.NET - {49CDD4F8-96E0-4EBA-844F-E9AF580D7247}.Release.ActiveCfg = Release|.NET - {49CDD4F8-96E0-4EBA-844F-E9AF580D7247}.Release.Build.0 = Release|.NET - {F63B434A-8E9A-4673-A6C4-F96F3492BF80}.Debug.ActiveCfg = Debug|.NET - {F63B434A-8E9A-4673-A6C4-F96F3492BF80}.Debug.Build.0 = Debug|.NET - {F63B434A-8E9A-4673-A6C4-F96F3492BF80}.Release.ActiveCfg = Release|.NET - {F63B434A-8E9A-4673-A6C4-F96F3492BF80}.Release.Build.0 = Release|.NET - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/quickfix_vs8.sln b/quickfix_vs8.sln deleted file mode 100644 index 5fedb706d..000000000 --- a/quickfix_vs8.sln +++ /dev/null @@ -1,306 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quickfix_net_messages_vs8", "src\.NET\quickfix_net_messages_vs8.csproj", "{30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example_executor_csharp_vs8", "examples\executor\csharp\example_executor_csharp_vs8.csproj", "{BA234002-9F1A-4B01-98D6-DE05C7E78B58}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "example_executor_vbnet_vs8", "examples\executor\vbnet\example_executor_vbnet_vs8.vbproj", "{DA675460-F6E5-458C-BCEB-45B2986C90FC}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp_vs8", "examples\executor\C++\example_executor_cpp_vs8.vcproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch_vs8", "examples\ordermatch\example_ordermatch_vs8.vcproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient_vs8", "examples\tradeclient\example_tradeclient_vs8.vcproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_net_vs8", "src\.NET\quickfix_net_vs8.vcproj", "{FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_vs8", "src\C++\quickfix_vs8.vcproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_vs8", "src\test_acceptance_vs8.vcproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance_vs8", "src\test_performance_vs8.vcproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit_vs8", "src\test_unit_vs8.vcproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner_vs8", "test\atrun\test_acceptance_runner_vs8.vcproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" - ProjectSection(ProjectDependencies) = postProject - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} - EndProjectSection - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_performance_net_vs8", "src\test_performance_net_vs8.csproj", "{408B3028-1B7E-4CFA-802B-79C08901E88E}" - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_unit_net_vs8", "src\test_unit_net_vs8.csproj", "{41B1715C-D703-4383-AE28-DC542A38955F}" - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest++.vsnet2005", "UnitTest++\UnitTest++.vsnet2005.vcproj", "{64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}" - ProjectSection(WebsiteProperties) = preProject - Debug.AspNetCompiler.Debug = "True" - Release.AspNetCompiler.Debug = "False" - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_acceptance_net_vs8", "src\test_acceptance_net_vs8.csproj", "{4B063D0D-B606-44EE-A626-B9AB4D32418C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Win32.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Win32.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Win32.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Win32.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Win32.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Win32.ActiveCfg = Release|Any CPU - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Win32.ActiveCfg = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Win32.Build.0 = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Any CPU.ActiveCfg = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Mixed Platforms.Build.0 = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Win32.ActiveCfg = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Win32.Build.0 = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Win32.ActiveCfg = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Win32.Build.0 = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Any CPU.ActiveCfg = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Mixed Platforms.Build.0 = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Win32.ActiveCfg = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Win32.Build.0 = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Win32.ActiveCfg = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Win32.Build.0 = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Any CPU.ActiveCfg = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.Build.0 = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.ActiveCfg = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Any CPU.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.Build.0 = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Win32.ActiveCfg = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Win32.Build.0 = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Any CPU.ActiveCfg = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Mixed Platforms.Build.0 = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Win32.ActiveCfg = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Win32.Build.0 = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Win32.ActiveCfg = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Win32.Build.0 = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Any CPU.ActiveCfg = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Mixed Platforms.Build.0 = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Win32.ActiveCfg = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Win32.Build.0 = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Win32.ActiveCfg = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Win32.Build.0 = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Any CPU.ActiveCfg = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Win32.ActiveCfg = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Win32.Build.0 = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Win32.ActiveCfg = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Win32.Build.0 = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Any CPU.ActiveCfg = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Mixed Platforms.Build.0 = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Win32.ActiveCfg = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Win32.Build.0 = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Win32.ActiveCfg = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Win32.Build.0 = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Any CPU.ActiveCfg = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.Build.0 = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.ActiveCfg = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.Build.0 = Release|Win32 - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Win32.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Win32.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Win32.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Win32.ActiveCfg = Release|Any CPU - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Win32.ActiveCfg = Debug|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Win32.Build.0 = Debug|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Any CPU.ActiveCfg = Release|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Mixed Platforms.Build.0 = Release|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.ActiveCfg = Release|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.Build.0 = Release|Win32 - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Win32.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Win32.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/C++/Container.h b/src/C++/Container.h index e057f0003..66c61da30 100644 --- a/src/C++/Container.h +++ b/src/C++/Container.h @@ -707,10 +707,10 @@ class avlTree typedef BaseHook* node_ptr; typedef const BaseHook* const_node_ptr; -#ifdef __clang__ +#if defined(_MSC_VER) || defined(__clang__) friend class TreeTraits::template Base; #else - friend typename TreeTraits::template Base; + template friend class TreeTraits::Base; #endif public: typedef typename TreeTraits::template Algorithms algorithms; diff --git a/src/C++/FieldMap.h b/src/C++/FieldMap.h index 36462ae4b..27a2e05f8 100644 --- a/src/C++/FieldMap.h +++ b/src/C++/FieldMap.h @@ -465,28 +465,43 @@ class FieldMap return m_fields.erase_and_dispose( it, stored_type::disposer_type(m_allocator)); } - template stored_type& HEAVYUSE push_front_ordered(const Arg& arg) { +#if defined(ENABLE_FLAT_FIELDMAP) + template store_type::iterator HEAVYUSE push_front_ordered(const Arg& arg) { + m_fields.push_front(*new (m_allocator.allocate()) stored_type( arg )); + return m_fields.begin(); + } + template store_type::iterator HEAVYUSE push_back_ordered(const Arg& arg) { + m_fields.push_back(*new (m_allocator.allocate()) stored_type( arg )); + return --m_fields.end(); + } + template store_type::iterator HEAVYUSE push_back(const Arg& arg) { + m_fields.push_back(*new (m_allocator.allocate()) stored_type( arg )); + return --m_fields.end(); + } +#else + template stored_type* HEAVYUSE push_front_ordered(const Arg& arg) { stored_type* f = new (m_allocator.allocate()) stored_type( arg ); m_fields.push_front(*f); - return *f; + return f; } - template stored_type& HEAVYUSE push_back_ordered(const Arg& arg) { + template stored_type* HEAVYUSE push_back_ordered(const Arg& arg) { stored_type* f = new (m_allocator.allocate()) stored_type( arg ); m_fields.push_back(*f); - return *f; + return f; } - template stored_type& HEAVYUSE push_back(const Arg& arg) { + template stored_type* HEAVYUSE push_back(const Arg& arg) { stored_type* f = new (m_allocator.allocate()) stored_type( arg ); -#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + #if defined(ENABLE_RELAXED_ORDERING) NodeList* p = m_fields.list(); if (p && p->push_back(f)) return *f; -#endif + #endif m_fields.push_back(*f); -#if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) + #if defined(ENABLE_RELAXED_ORDERING) if (p && f == &*m_fields.begin()) p->extend(f); -#endif - return *f; + #endif + return f; } +#endif inline field_iterator HEAVYUSE find(int tag) const { #if !defined(ENABLE_FLAT_FIELDMAP) && defined(ENABLE_RELAXED_ORDERING) @@ -560,13 +575,13 @@ class FieldMap struct Sequence { template static inline field_iterator push_front_to_ordered( FieldMap& map, const Packed& packed ) // in sequence, ordered container - { return field_iterator(&map.push_front_ordered( packed )); } + { return field_iterator(map.push_front_ordered( packed )); } template static inline field_iterator push_back_to_ordered( FieldMap& map, const Packed& packed ) // in sequence, ordered container - { return field_iterator(&map.push_back_ordered( packed )); } + { return field_iterator(map.push_back_ordered( packed )); } template static inline field_iterator push_back_to( FieldMap& map, const Packed& packed ) // in sequence - { return field_iterator(&map.push_back( packed )); } + { return field_iterator(map.push_back( packed )); } template static inline const store_type::value_type* insert_into_ordered( FieldMap& map, const Packed& packed ) // out of sequence, ordered container diff --git a/src/C++/Utility.h b/src/C++/Utility.h index ef10a0cbb..4534597c6 100644 --- a/src/C++/Utility.h +++ b/src/C++/Utility.h @@ -1142,10 +1142,10 @@ namespace FIX { return m_p == it.m_p; } bool operator!=( reverse_iterator it) const { return m_p != it.m_p; } - bool operator <( reverse_iterator it) const - { return m_p > it.m_p; } - bool operator >( reverse_iterator it) const - { return m_p < it.m_p; } + bool operator <( reverse_iterator it) const + { return m_p > it.m_p; } + bool operator >( reverse_iterator it) const + { return m_p < it.m_p; } difference_type operator-( reverse_iterator it) const { return it.m_p - m_p; } }; diff --git a/src/C++/quickfix_vs10a.vcxproj b/src/C++/quickfix_vs10a.vcxproj deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/C++/quickfix_vs7.vcproj b/src/C++/quickfix_vs7.vcproj deleted file mode 100644 index ff9dea504..000000000 --- a/src/C++/quickfix_vs7.vcproj +++ /dev/null @@ -1,3034 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/C++/quickfix_vs8.vcproj b/src/C++/quickfix_vs8.vcproj deleted file mode 100644 index 616a855ad..000000000 --- a/src/C++/quickfix_vs8.vcproj +++ /dev/null @@ -1,4058 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/C++/quickfix_vs9.vcproj b/src/C++/quickfix_vs9.vcproj index c465f72c1..dd386717e 100644 --- a/src/C++/quickfix_vs9.vcproj +++ b/src/C++/quickfix_vs9.vcproj @@ -360,6 +360,10 @@ RelativePath=".\Initiator.cpp" > + + @@ -565,6 +569,86 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 50a588e159835e3d8774dd9143030d9a9fd2fecc Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Wed, 6 Apr 2016 20:22:25 -0400 Subject: [PATCH 11/27] Update autoconf script to set SSO option --- m4/ax_sso.m4 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/m4/ax_sso.m4 b/m4/ax_sso.m4 index 2c207dc5f..4dd6f98d0 100644 --- a/m4/ax_sso.m4 +++ b/m4/ax_sso.m4 @@ -17,15 +17,22 @@ AC_DEFUN([AX_SSO_CHECK], [ if test $has_sso = true then + sso_level=2 + sso_bytes=24 + if test "x$with_sso" == "x1" + then + sso_level=1 + sso_bytes=16 + fi AC_MSG_CHECKING(for short string optimization) AC_TRY_COMPILE( [#include #include template struct s{}; template <> struct s { typedef int type; };], - [s<(sizeof(std::string) <= 2 * sizeof(intptr_t))>::type v;], - AC_MSG_RESULT(yes), + [s<(sizeof(std::string) < 2 * sizeof(intptr_t))>::type v;], + AC_MSG_RESULT($sso_bytes bytes), AC_MSG_ERROR(no)) - AC_DEFINE_UNQUOTED(ENABLE_SSO, 1, Define to enable short string optimization) + AC_DEFINE_UNQUOTED(ENABLE_SSO, ${sso_level}, Define to set short string optimization width) fi ]) From 0be04efd89b6da47fbc84187d28e7692c4c3e07a Mon Sep 17 00:00:00 2001 From: Alexander Korobka Date: Thu, 7 Apr 2016 22:30:45 -0400 Subject: [PATCH 12/27] Merge pull request #1 from darrenlafreniere/v1.14.3-quickerfix-merge --- .gitignore | 33 +- .travis.yml | 11 + CONTRIBUTORS | 27 - COPYING | 1 - INSTALL | 1 - LICENSE | 3 +- Makefile.am | 4 + NEWS | 43 + OptionalSettings_vs9.vsprops | 35 - THANKS | 12 - UnitTest++/Makefile | 2 +- UnitTest++/UnitTest++_vs10.vcxproj | 4 +- UnitTest++/UnitTest++_vs11.vcxproj | 2 +- UnitTest++/UnitTest++_vs12.vcxproj | 122 + bin/run_executor_csharp.bat | 1 - bin/run_executor_csharp_debug.bat | 1 - bin/run_executor_vbnet.bat | 1 - bin/run_executor_vbnet_debug.bat | 1 - bootstrap | 5 +- build_java.bat | 9 - build_vs10.bat | 24 +- build_vs11.bat | 2 +- build_vs12.bat | 13 + build_vs7.bat | 8 - build_vs8.bat | 6 - build_vs9.bat | 16 - configure.ac | 41 +- doc/Doxyfile | 5 +- doc/document.bat | 2 + doc/document.sh | 3 + doc/doxygen.css | 952 + doc/html/.gitignore | 21 + doc/html/FAQ.html | 119 - doc/html/about.html | 33 - doc/html/acceptance_tests.html | 190 +- doc/html/application.html | 280 +- doc/html/building.html | 260 +- doc/html/configuration.html | 1886 +- doc/html/csharp/application_1.html | 17 - doc/html/csharp/application_2.html | 30 - doc/html/csharp/receiving_messages_1.html | 9 - doc/html/csharp/receiving_messages_2.html | 12 - doc/html/csharp/receiving_messages_3.html | 27 - doc/html/csharp/receiving_messages_4.html | 6 - doc/html/csharp/repeating_groups_1.html | 18 - doc/html/csharp/repeating_groups_2.html | 23 - doc/html/csharp/sending_messages_1.html | 11 - doc/html/csharp/sending_messages_2.html | 28 - doc/html/csharp/sending_messages_3.html | 21 - doc/html/csharp/sending_messages_4.html | 15 - doc/html/csharp/user_defined_1.html | 4 - doc/html/csharp/user_defined_2.html | 16 - doc/html/csharp/user_defined_3.html | 10 - doc/html/dependencies.html | 250 +- doc/html/doxygen.css | 441 - doc/html/examples.html | 58 +- doc/html/generating_databases.html | 117 +- doc/html/header.html | 31 +- doc/html/images/QuickFIX.jpg | Bin 2305 -> 950 bytes doc/html/images/outsideBottom.gif | Bin 46 -> 127 bytes doc/html/images/outsideBottomLeft.gif | Bin 121 -> 261 bytes doc/html/images/outsideBottomRight.gif | Bin 124 -> 253 bytes doc/html/images/outsideLeft.gif | Bin 51 -> 126 bytes doc/html/images/outsideRight.gif | Bin 44 -> 122 bytes doc/html/images/outsideTop.gif | Bin 46 -> 124 bytes doc/html/images/outsideTopLeft.gif | Bin 121 -> 259 bytes doc/html/images/outsideTopRight.gif | Bin 119 -> 245 bytes doc/html/images/titleTabLeft.gif | Bin 56 -> 150 bytes doc/html/images/titleTabRight.gif | Bin 79 -> 192 bytes doc/html/images/titleTabTop.gif | Bin 46 -> 125 bytes doc/html/installdox | 117 - doc/html/java/application_1.html | 16 - doc/html/java/application_2.html | 27 - doc/html/java/receiving_messages_1.html | 10 - doc/html/java/receiving_messages_2.html | 14 - doc/html/java/receiving_messages_3.html | 31 - doc/html/java/receiving_messages_4.html | 7 - doc/html/java/repeating_groups_1.html | 20 - doc/html/java/repeating_groups_2.html | 24 - doc/html/java/sending_messages_1.html | 20 - doc/html/java/sending_messages_2.html | 28 - doc/html/java/sending_messages_3.html | 23 - doc/html/java/sending_messages_4.html | 16 - doc/html/java/user_defined_1.html | 4 - doc/html/java/user_defined_2.html | 22 - doc/html/java/user_defined_3.html | 10 - doc/html/license.html | 159 +- doc/html/project.html | 188 +- doc/html/python/application_1.html | 31 +- doc/html/python/application_2.html | 37 +- doc/html/python/receiving_messages_1.html | 21 +- doc/html/python/receiving_messages_2.html | 25 +- doc/html/python/repeating_groups_1.html | 17 +- doc/html/python/repeating_groups_2.html | 19 +- doc/html/python/sending_messages_1.html | 17 +- doc/html/python/sending_messages_2.html | 57 +- doc/html/python/sending_messages_3.html | 41 +- doc/html/python/user_defined_1.html | 16 +- doc/html/python/user_defined_2.html | 41 +- doc/html/python/user_defined_3.html | 21 +- doc/html/quickfix.css | 95 +- doc/html/receiving_messages.html | 251 +- doc/html/repeating_groups.html | 87 +- doc/html/ruby/application_1.html | 45 +- doc/html/ruby/application_2.html | 39 +- doc/html/ruby/receiving_messages_1.html | 21 +- doc/html/ruby/receiving_messages_2.html | 25 +- doc/html/ruby/repeating_groups_1.html | 17 +- doc/html/ruby/repeating_groups_2.html | 19 +- doc/html/ruby/sending_messages_1.html | 17 +- doc/html/ruby/sending_messages_2.html | 57 +- doc/html/ruby/sending_messages_3.html | 41 +- doc/html/ruby/user_defined_1.html | 16 +- doc/html/ruby/user_defined_2.html | 48 +- doc/html/ruby/user_defined_3.html | 16 +- doc/html/sending_messages.html | 242 +- doc/html/testing.html | 159 +- doc/html/trailer.html | 23 +- doc/html/unit_tests.html | 109 +- doc/html/user_defined.html | 157 +- doc/html/vbnet/application_1.html | 13 - doc/html/vbnet/application_2.html | 29 - doc/html/vbnet/receiving_messages_1.html | 8 - doc/html/vbnet/receiving_messages_2.html | 11 - doc/html/vbnet/receiving_messages_3.html | 24 - doc/html/vbnet/receiving_messages_4.html | 7 - doc/html/vbnet/repeating_groups_1.html | 16 - doc/html/vbnet/repeating_groups_2.html | 22 - doc/html/vbnet/sending_messages_1.html | 11 - doc/html/vbnet/sending_messages_2.html | 27 - doc/html/vbnet/sending_messages_3.html | 20 - doc/html/vbnet/sending_messages_4.html | 11 - doc/html/vbnet/user_defined_1.html | 4 - doc/html/vbnet/user_defined_2.html | 24 - doc/html/vbnet/user_defined_3.html | 10 - doc/html/xmlschema.html | 134 +- doc/tidy.config | 4 + doc/tidy.sh | 6 + examples/executor/C++/Application.cpp | 2 +- examples/executor/C++/Application.h | 2 +- .../C++/example_executor_cpp_vs10.vcxproj | 6 +- .../C++/example_executor_cpp_vs11.vcxproj | 4 +- .../C++/example_executor_cpp_vs12.vcxproj | 141 + .../C++/example_executor_cpp_vs7.vcproj | 164 - .../C++/example_executor_cpp_vs8.vcproj | 232 - .../C++/example_executor_cpp_vs9.vcproj | 418 - examples/executor/C++/executor.cpp | 2 +- examples/executor/csharp/App.ico | Bin 1078 -> 0 bytes examples/executor/csharp/Application.cs | 328 - examples/executor/csharp/AssemblyInfo.cs | 58 - examples/executor/csharp/Executor.cs | 57 - .../example_executor_csharp_vs10.csproj | 156 - .../example_executor_csharp_vs11.vcxproj | 177 - .../csharp/example_executor_csharp_vs7.csproj | 121 - .../csharp/example_executor_csharp_vs8.csproj | 117 - .../csharp/example_executor_csharp_vs9.csproj | 140 - examples/executor/python/executor.py | 12 +- examples/executor/vbnet/Application.vb | 272 - examples/executor/vbnet/AssemblyInfo.vb | 31 - examples/executor/vbnet/Executor.vb | 30 - .../vbnet/example_executor_vbnet_vs10.vbproj | 163 - .../vbnet/example_executor_vbnet_vs11.vbproj | 185 - .../vbnet/example_executor_vbnet_vs7.vbproj | 114 - .../vbnet/example_executor_vbnet_vs8.vbproj | 123 - .../vbnet/example_executor_vbnet_vs9.vbproj | 128 - examples/ordermatch/Application.cpp | 5 +- examples/ordermatch/Application.h | 2 +- examples/ordermatch/IDGenerator.h | 2 +- examples/ordermatch/Market.cpp | 4 +- examples/ordermatch/Market.h | 2 +- examples/ordermatch/Order.h | 2 +- examples/ordermatch/OrderMatcher.h | 2 +- .../example_ordermatch_vs10.vcxproj | 6 +- .../example_ordermatch_vs11.vcxproj | 4 +- .../example_ordermatch_vs12.vcxproj | 147 + .../ordermatch/example_ordermatch_vs7.vcproj | 180 - .../ordermatch/example_ordermatch_vs8.vcproj | 253 - .../ordermatch/example_ordermatch_vs9.vcproj | 440 - examples/ordermatch/ordermatch.cpp | 2 +- examples/ordermatch/test/Market.cpp | 4 +- .../ordermatch/test/OrderMatcherTestCase.cpp | 22 +- .../ordermatch/test/OrderMatcherTestCase.h | 2 +- examples/ordermatch/test/TestSuite.h | 2 +- examples/ordermatch/test/ordermatch_ut.cpp | 2 +- examples/tradeclient/Application.cpp | 4 +- examples/tradeclient/Application.h | 2 +- .../example_tradeclient_vs10.vcxproj | 6 +- .../example_tradeclient_vs11.vcxproj | 4 +- .../example_tradeclient_vs12.vcxproj | 141 + .../example_tradeclient_vs7.vcproj | 163 - .../example_tradeclient_vs8.vcproj | 232 - .../example_tradeclient_vs9.vcproj | 418 - examples/tradeclient/tradeclient.cpp | 2 +- .../tradeclientgui/banzai/src/Banzai.java | 2 +- .../quickfix/banzai/BanzaiApplication.java | 2 +- .../banzai/DoubleNumberTextField.java | 2 +- .../banzai/src/quickfix/banzai/Execution.java | 2 +- .../quickfix/banzai/ExecutionTableModel.java | 2 +- .../banzai/IntegerNumberTextField.java | 2 +- .../src/quickfix/banzai/LogonEvent.java | 2 +- .../banzai/src/quickfix/banzai/Order.java | 2 +- .../banzai/src/quickfix/banzai/OrderSide.java | 2 +- .../banzai/src/quickfix/banzai/OrderTIF.java | 2 +- .../src/quickfix/banzai/OrderTableModel.java | 2 +- .../banzai/src/quickfix/banzai/OrderType.java | 2 +- .../banzai/src/quickfix/banzai/TwoWayMap.java | 2 +- .../src/quickfix/banzai/ui/BanzaiFrame.java | 2 +- .../src/quickfix/banzai/ui/BanzaiPanel.java | 2 +- .../banzai/ui/CancelReplacePanel.java | 2 +- .../quickfix/banzai/ui/ExecutionPanel.java | 2 +- .../quickfix/banzai/ui/ExecutionTable.java | 2 +- .../quickfix/banzai/ui/OrderEntryPanel.java | 2 +- .../src/quickfix/banzai/ui/OrderPanel.java | 2 +- .../src/quickfix/banzai/ui/OrderTable.java | 2 +- m4/ax_allocator.m4 | 2 + m4/ax_lib_postgresql.m4 | 2 +- m4/ax_python.m4 | 4 +- quickfix_vs10.sln | 119 +- quickfix_vs11.sln | 247 +- quickfix_vs12.sln | 133 + quickfix_vs9.sln | 458 - scripts/ubuntu_12/build_vanilla.sh | 12 + scripts/ubuntu_12/build_with_db.sh | 12 + scripts/ubuntu_12/build_with_generate.sh | 16 + scripts/ubuntu_12/env.rc | 18 + scripts/ubuntu_12/install_deps.sh | 10 + scripts/ubuntu_12/setup_db.sh | 38 + spec/COPYRIGHT.h | 2 +- spec/COPYRIGHT.rb | 2 +- spec/COPYRIGHT.xml | 2 +- spec/COPYRIGHT.xsl | 2 +- spec/MessageCracker.xsl | 2 +- spec/Values.xsl | 2 +- spec/generate.sh | 2 +- spec/net_MessageCracker.xsl | 2 +- spec/net_MessageFactory.xsl | 2 +- src/.NET/Acceptor.h | 40 - src/.NET/Application.h | 175 - src/.NET/AssemblyInfo.cpp | 58 - src/.NET/AssemblyInfo.cs | 59 - src/.NET/CPPLog.h | 95 - src/.NET/CPPMessageStore.cpp | 2 - src/.NET/CPPMessageStore.h | 166 - src/.NET/DataDictionary.h | 180 - src/.NET/DataDictionaryProvider.h | 88 - src/.NET/DefaultMessageFactory.cs | 79 - src/.NET/Dictionary.cpp | 0 src/.NET/Dictionary.h | 194 - src/.NET/Exceptions.h | 99 - src/.NET/FIX40_MessageCracker.cs | 176 - src/.NET/FIX40_MessageFactory.cs | 199 - src/.NET/FIX41_MessageCracker.cs | 181 - src/.NET/FIX41_MessageFactory.cs | 205 - src/.NET/FIX42_MessageCracker.cs | 271 - src/.NET/FIX42_MessageFactory.cs | 313 - src/.NET/FIX43_MessageCracker.cs | 381 - src/.NET/FIX43_MessageFactory.cs | 445 - src/.NET/FIX44_MessageCracker.cs | 506 - src/.NET/FIX44_MessageFactory.cs | 595 - src/.NET/FIX50SP1_MessageCracker.cs | 566 - src/.NET/FIX50SP1_MessageFactory.cs | 667 - src/.NET/FIX50SP2_MessageCracker.cs | 581 - src/.NET/FIX50SP2_MessageFactory.cs | 685 - src/.NET/FIX50_MessageCracker.cs | 506 - src/.NET/FIX50_MessageFactory.cs | 595 - src/.NET/FIXT11_MessageCracker.cs | 76 - src/.NET/FIXT11_MessageFactory.cs | 79 - src/.NET/Field.h | 225 - src/.NET/FieldMap.cpp | 334 - src/.NET/FieldMap.h | 131 - src/.NET/FieldNumbers.h | 172 - src/.NET/Fields.cpp | 2 - src/.NET/Fields.h | 15781 --------- src/.NET/FileLog.cpp | 2 - src/.NET/FileLog.h | 73 - src/.NET/FileMessageStore.cpp | 2 - src/.NET/FileMessageStore.h | 69 - src/.NET/Group.cpp | 387 - src/.NET/Group.h | 259 - src/.NET/Initiator.h | 40 - src/.NET/Log.h | 67 - src/.NET/LogFactory.h | 56 - src/.NET/MemoryMessageStore.cpp | 2 - src/.NET/MemoryMessageStore.h | 48 - src/.NET/Message.cpp | 952 - src/.NET/Message.h | 825 - src/.NET/MessageCracker.cpp | 2 - src/.NET/MessageCracker.cs | 80 - src/.NET/MessageFactory.h | 34 - src/.NET/MessageStore.cpp | 2 - src/.NET/MessageStore.h | 293 - src/.NET/MessageStoreFactory.cpp | 2 - src/.NET/MessageStoreFactory.h | 54 - src/.NET/Messages.h | 27 - src/.NET/MySQLLog.cpp | 2 - src/.NET/MySQLLog.h | 73 - src/.NET/MySQLStore.cpp | 2 - src/.NET/MySQLStore.h | 75 - src/.NET/OdbcLog.cpp | 2 - src/.NET/OdbcLog.h | 73 - src/.NET/OdbcStore.cpp | 2 - src/.NET/OdbcStore.h | 73 - src/.NET/PostgreSQLLog.cpp | 2 - src/.NET/PostgreSQLLog.h | 73 - src/.NET/PostgreSQLStore.cpp | 2 - src/.NET/PostgreSQLStore.h | 75 - src/.NET/ReadMe.txt | 31 - src/.NET/ScreenLog.cpp | 2 - src/.NET/ScreenLog.h | 115 - src/.NET/Session.cpp | 220 - src/.NET/Session.h | 96 - src/.NET/SessionID.h | 145 - src/.NET/SessionSettings.h | 139 - src/.NET/SocketAcceptor.h | 189 - src/.NET/SocketInitiator.h | 189 - src/.NET/Stdafx.cpp | 5 - src/.NET/Stdafx.h | 22 - src/.NET/ThreadedSocketAcceptor.h | 189 - src/.NET/ThreadedSocketInitiator.h | 189 - src/.NET/fix40/Advertisement.cs | 206 - src/.NET/fix40/Allocation.cs | 626 - src/.NET/fix40/AllocationInstructionAck.cs | 118 - src/.NET/fix40/DontKnowTrade.cs | 136 - src/.NET/fix40/Email.cs | 130 - src/.NET/fix40/ExecutionReport.cs | 619 - src/.NET/fix40/Heartbeat.cs | 24 - src/.NET/fix40/IOI.cs | 254 - src/.NET/fix40/ListCancelRequest.cs | 54 - src/.NET/fix40/ListExecute.cs | 54 - src/.NET/fix40/ListStatus.cs | 135 - src/.NET/fix40/ListStatusRequest.cs | 54 - src/.NET/fix40/Logon.cs | 68 - src/.NET/fix40/Logout.cs | 24 - src/.NET/fix40/Message.cs | 286 - src/.NET/fix40/NewOrderList.cs | 502 - src/.NET/fix40/NewOrderSingle.cs | 460 - src/.NET/fix40/News.cs | 104 - src/.NET/fix40/OrderCancelReject.cs | 104 - src/.NET/fix40/OrderCancelReplaceRequest.cs | 438 - src/.NET/fix40/OrderCancelRequest.cs | 220 - src/.NET/fix40/OrderStatusRequest.cs | 130 - src/.NET/fix40/Quote.cs | 178 - src/.NET/fix40/QuoteRequest.cs | 140 - src/.NET/fix40/Reject.cs | 42 - src/.NET/fix40/ResendRequest.cs | 44 - src/.NET/fix40/SequenceReset.cs | 42 - src/.NET/fix40/TestRequest.cs | 30 - src/.NET/fix41/Advertisement.cs | 326 - src/.NET/fix41/Allocation.cs | 866 - src/.NET/fix41/AllocationInstructionAck.cs | 118 - src/.NET/fix41/DontKnowTrade.cs | 286 - src/.NET/fix41/Email.cs | 320 - src/.NET/fix41/ExecutionReport.cs | 750 - src/.NET/fix41/Heartbeat.cs | 24 - src/.NET/fix41/IOI.cs | 379 - src/.NET/fix41/ListCancelRequest.cs | 54 - src/.NET/fix41/ListExecute.cs | 54 - src/.NET/fix41/ListStatus.cs | 147 - src/.NET/fix41/ListStatusRequest.cs | 54 - src/.NET/fix41/Logon.cs | 80 - src/.NET/fix41/Logout.cs | 24 - src/.NET/fix41/Message.cs | 334 - src/.NET/fix41/NewOrderList.cs | 670 - src/.NET/fix41/NewOrderSingle.cs | 638 - src/.NET/fix41/News.cs | 292 - src/.NET/fix41/OrderCancelReject.cs | 144 - src/.NET/fix41/OrderCancelReplaceRequest.cs | 628 - src/.NET/fix41/OrderCancelRequest.cs | 300 - src/.NET/fix41/OrderStatusRequest.cs | 238 - src/.NET/fix41/Quote.cs | 368 - src/.NET/fix41/QuoteRequest.cs | 272 - src/.NET/fix41/Reject.cs | 42 - src/.NET/fix41/ResendRequest.cs | 44 - src/.NET/fix41/SequenceReset.cs | 42 - src/.NET/fix41/SettlementInstructions.cs | 436 - src/.NET/fix41/TestRequest.cs | 30 - src/.NET/fix42/Advertisement.cs | 434 - src/.NET/fix42/Allocation.cs | 1022 - src/.NET/fix42/AllocationInstructionAck.cs | 142 - src/.NET/fix42/BidRequest.cs | 602 - src/.NET/fix42/BidResponse.cs | 233 - src/.NET/fix42/BusinessMessageReject.cs | 104 - src/.NET/fix42/DontKnowTrade.cs | 386 - src/.NET/fix42/Email.cs | 481 - src/.NET/fix42/ExecutionReport.cs | 1193 - src/.NET/fix42/Heartbeat.cs | 24 - src/.NET/fix42/IOI.cs | 528 - src/.NET/fix42/ListCancelRequest.cs | 80 - src/.NET/fix42/ListExecute.cs | 104 - src/.NET/fix42/ListStatus.cs | 285 - src/.NET/fix42/ListStatusRequest.cs | 66 - src/.NET/fix42/ListStrikePrice.cs | 385 - src/.NET/fix42/Logon.cs | 133 - src/.NET/fix42/Logout.cs | 48 - .../fix42/MarketDataIncrementalRefresh.cs | 713 - src/.NET/fix42/MarketDataRequest.cs | 368 - src/.NET/fix42/MarketDataRequestReject.cs | 78 - .../fix42/MarketDataSnapshotFullRefresh.cs | 671 - src/.NET/fix42/MassQuote.cs | 808 - src/.NET/fix42/Message.cs | 394 - src/.NET/fix42/NewOrderList.cs | 1105 - src/.NET/fix42/NewOrderSingle.cs | 926 - src/.NET/fix42/News.cs | 453 - src/.NET/fix42/OrderCancelReject.cs | 206 - src/.NET/fix42/OrderCancelReplaceRequest.cs | 916 - src/.NET/fix42/OrderCancelRequest.cs | 446 - src/.NET/fix42/OrderStatusRequest.cs | 322 - src/.NET/fix42/Quote.cs | 476 - src/.NET/fix42/QuoteAcknowledgement.cs | 640 - src/.NET/fix42/QuoteCancel.cs | 337 - src/.NET/fix42/QuoteRequest.cs | 419 - src/.NET/fix42/QuoteStatusRequest.cs | 282 - src/.NET/fix42/Reject.cs | 102 - src/.NET/fix42/ResendRequest.cs | 44 - src/.NET/fix42/SecurityDefinition.cs | 639 - src/.NET/fix42/SecurityDefinitionRequest.cs | 613 - src/.NET/fix42/SecurityStatus.cs | 450 - src/.NET/fix42/SecurityStatusRequest.cs | 298 - src/.NET/fix42/SequenceReset.cs | 42 - src/.NET/fix42/SettlementInstructions.cs | 462 - src/.NET/fix42/TestRequest.cs | 30 - src/.NET/fix42/TradingSessionStatus.cs | 200 - src/.NET/fix42/TradingSessionStatusRequest.cs | 80 - src/.NET/fix43/Advertisement.cs | 641 - src/.NET/fix43/Allocation.cs | 1469 - src/.NET/fix43/AllocationAck.cs | 195 - src/.NET/fix43/BidRequest.cs | 614 - src/.NET/fix43/BidResponse.cs | 269 - src/.NET/fix43/BusinessMessageReject.cs | 104 - .../fix43/CrossOrderCancelReplaceRequest.cs | 1721 - src/.NET/fix43/CrossOrderCancelRequest.cs | 797 - src/.NET/fix43/DerivativeSecurityList.cs | 1499 - .../fix43/DerivativeSecurityListRequest.cs | 565 - src/.NET/fix43/DontKnowTrade.cs | 617 - src/.NET/fix43/Email.cs | 678 - src/.NET/fix43/ExecutionReport.cs | 2760 -- src/.NET/fix43/Heartbeat.cs | 24 - src/.NET/fix43/IOI.cs | 783 - src/.NET/fix43/ListCancelRequest.cs | 92 - src/.NET/fix43/ListExecute.cs | 104 - src/.NET/fix43/ListStatus.cs | 309 - src/.NET/fix43/ListStatusRequest.cs | 66 - src/.NET/fix43/ListStrikePrice.cs | 594 - src/.NET/fix43/Logon.cs | 169 - src/.NET/fix43/Logout.cs | 48 - .../fix43/MarketDataIncrementalRefresh.cs | 970 - src/.NET/fix43/MarketDataRequest.cs | 630 - src/.NET/fix43/MarketDataRequestReject.cs | 78 - .../fix43/MarketDataSnapshotFullRefresh.cs | 922 - src/.NET/fix43/MassQuote.cs | 1399 - src/.NET/fix43/MassQuoteAcknowledgement.cs | 1411 - src/.NET/fix43/Message.cs | 447 - .../MultilegOrderCancelReplaceRequest.cs | 2043 -- src/.NET/fix43/NewOrderCross.cs | 1671 - src/.NET/fix43/NewOrderList.cs | 1833 - src/.NET/fix43/NewOrderMultileg.cs | 2005 -- src/.NET/fix43/NewOrderSingle.cs | 1652 - src/.NET/fix43/News.cs | 650 - src/.NET/fix43/OrderCancelReject.cs | 254 - src/.NET/fix43/OrderCancelReplaceRequest.cs | 1613 - src/.NET/fix43/OrderCancelRequest.cs | 754 - src/.NET/fix43/OrderMassCancelReport.cs | 1117 - src/.NET/fix43/OrderMassCancelRequest.cs | 1004 - src/.NET/fix43/OrderMassStatusRequest.cs | 1019 - src/.NET/fix43/OrderStatusRequest.cs | 582 - src/.NET/fix43/Quote.cs | 1036 - src/.NET/fix43/QuoteCancel.cs | 623 - src/.NET/fix43/QuoteRequest.cs | 885 - src/.NET/fix43/QuoteRequestReject.cs | 899 - src/.NET/fix43/QuoteStatusReport.cs | 1000 - src/.NET/fix43/QuoteStatusRequest.cs | 586 - src/.NET/fix43/RFQRequest.cs | 544 - src/.NET/fix43/RegistrationInstructions.cs | 450 - .../fix43/RegistrationInstructionsResponse.cs | 185 - src/.NET/fix43/Reject.cs | 102 - src/.NET/fix43/ResendRequest.cs | 44 - src/.NET/fix43/SecurityDefinition.cs | 1057 - src/.NET/fix43/SecurityDefinitionRequest.cs | 1031 - src/.NET/fix43/SecurityList.cs | 1086 - src/.NET/fix43/SecurityListRequest.cs | 553 - src/.NET/fix43/SecurityStatus.cs | 689 - src/.NET/fix43/SecurityStatusRequest.cs | 505 - src/.NET/fix43/SecurityTypeRequest.cs | 90 - src/.NET/fix43/SecurityTypes.cs | 195 - src/.NET/fix43/SequenceReset.cs | 42 - src/.NET/fix43/SettlementInstructions.cs | 635 - src/.NET/fix43/TestRequest.cs | 30 - src/.NET/fix43/TradeCaptureReport.cs | 1464 - src/.NET/fix43/TradeCaptureReportRequest.cs | 707 - src/.NET/fix43/TradingSessionStatus.cs | 224 - src/.NET/fix43/TradingSessionStatusRequest.cs | 92 - src/.NET/fix43/XMLnonFIX.cs | 12 - src/.NET/fix44/Advertisement.cs | 1786 - src/.NET/fix44/AllocationInstruction.cs | 3510 -- src/.NET/fix44/AllocationInstructionAck.cs | 397 - src/.NET/fix44/AllocationReport.cs | 3560 -- src/.NET/fix44/AllocationReportAck.cs | 411 - src/.NET/fix44/AssignmentReport.cs | 2142 -- src/.NET/fix44/BidRequest.cs | 626 - src/.NET/fix44/BidResponse.cs | 269 - src/.NET/fix44/BusinessMessageReject.cs | 104 - src/.NET/fix44/CollateralAssignment.cs | 2589 -- src/.NET/fix44/CollateralInquiry.cs | 2493 -- src/.NET/fix44/CollateralInquiryAck.cs | 2167 -- src/.NET/fix44/CollateralReport.cs | 2549 -- src/.NET/fix44/CollateralRequest.cs | 2503 -- src/.NET/fix44/CollateralResponse.cs | 2495 -- src/.NET/fix44/Confirmation.cs | 3107 -- src/.NET/fix44/ConfirmationAck.cs | 132 - src/.NET/fix44/ConfirmationRequest.cs | 373 - .../fix44/CrossOrderCancelReplaceRequest.cs | 3174 -- src/.NET/fix44/CrossOrderCancelRequest.cs | 1971 -- src/.NET/fix44/DerivativeSecurityList.cs | 1748 - .../fix44/DerivativeSecurityListRequest.cs | 680 - src/.NET/fix44/DontKnowTrade.cs | 1762 - src/.NET/fix44/Email.cs | 1811 - src/.NET/fix44/ExecutionReport.cs | 4179 --- src/.NET/fix44/Heartbeat.cs | 24 - src/.NET/fix44/IOI.cs | 2286 -- src/.NET/fix44/ListCancelRequest.cs | 104 - src/.NET/fix44/ListExecute.cs | 104 - src/.NET/fix44/ListStatus.cs | 321 - src/.NET/fix44/ListStatusRequest.cs | 66 - src/.NET/fix44/ListStrikePrice.cs | 1230 - src/.NET/fix44/Logon.cs | 181 - src/.NET/fix44/Logout.cs | 48 - .../fix44/MarketDataIncrementalRefresh.cs | 2103 -- src/.NET/fix44/MarketDataRequest.cs | 1787 - src/.NET/fix44/MarketDataRequestReject.cs | 107 - .../fix44/MarketDataSnapshotFullRefresh.cs | 2055 -- src/.NET/fix44/MassQuote.cs | 2131 -- src/.NET/fix44/MassQuoteAcknowledgement.cs | 2167 -- src/.NET/fix44/Message.cs | 382 - src/.NET/fix44/MultilegOrderCancelReplace.cs | 3324 -- .../NetworkCounterpartySystemStatusRequest.cs | 109 - ...NetworkCounterpartySystemStatusResponse.cs | 157 - src/.NET/fix44/NewOrderCross.cs | 3148 -- src/.NET/fix44/NewOrderList.cs | 2839 -- src/.NET/fix44/NewOrderMultileg.cs | 3286 -- src/.NET/fix44/NewOrderSingle.cs | 2716 -- src/.NET/fix44/News.cs | 1783 - src/.NET/fix44/OrderCancelReject.cs | 278 - src/.NET/fix44/OrderCancelReplaceRequest.cs | 2677 -- src/.NET/fix44/OrderCancelRequest.cs | 1527 - src/.NET/fix44/OrderMassCancelReport.cs | 1287 - src/.NET/fix44/OrderMassCancelRequest.cs | 1174 - src/.NET/fix44/OrderMassStatusRequest.cs | 1230 - src/.NET/fix44/OrderStatusRequest.cs | 1367 - src/.NET/fix44/PositionMaintenanceReport.cs | 2167 -- src/.NET/fix44/PositionMaintenanceRequest.cs | 2122 -- src/.NET/fix44/PositionReport.cs | 2172 -- src/.NET/fix44/Quote.cs | 2943 -- src/.NET/fix44/QuoteCancel.cs | 1905 - src/.NET/fix44/QuoteRequest.cs | 2708 -- src/.NET/fix44/QuoteRequestReject.cs | 2686 -- src/.NET/fix44/QuoteResponse.cs | 2969 -- src/.NET/fix44/QuoteStatusReport.cs | 2871 -- src/.NET/fix44/QuoteStatusRequest.cs | 1868 - src/.NET/fix44/RFQRequest.cs | 1677 - src/.NET/fix44/RegistrationInstructions.cs | 532 - .../fix44/RegistrationInstructionsResponse.cs | 226 - src/.NET/fix44/Reject.cs | 102 - src/.NET/fix44/RequestForPositions.cs | 1925 -- src/.NET/fix44/RequestForPositionsAck.cs | 1858 - src/.NET/fix44/ResendRequest.cs | 44 - src/.NET/fix44/SecurityDefinition.cs | 1748 - src/.NET/fix44/SecurityDefinitionRequest.cs | 1722 - src/.NET/fix44/SecurityList.cs | 2231 -- src/.NET/fix44/SecurityListRequest.cs | 1818 - src/.NET/fix44/SecurityStatus.cs | 1846 - src/.NET/fix44/SecurityStatusRequest.cs | 1662 - src/.NET/fix44/SecurityTypeRequest.cs | 126 - src/.NET/fix44/SecurityTypes.cs | 219 - src/.NET/fix44/SequenceReset.cs | 42 - .../fix44/SettlementInstructionRequest.cs | 282 - src/.NET/fix44/SettlementInstructions.cs | 517 - src/.NET/fix44/TestRequest.cs | 30 - src/.NET/fix44/TradeCaptureReport.cs | 3953 --- src/.NET/fix44/TradeCaptureReportAck.cs | 1884 - src/.NET/fix44/TradeCaptureReportRequest.cs | 2193 -- .../fix44/TradeCaptureReportRequestAck.cs | 1726 - src/.NET/fix44/TradingSessionStatus.cs | 224 - src/.NET/fix44/TradingSessionStatusRequest.cs | 92 - src/.NET/fix44/UserRequest.cs | 106 - src/.NET/fix44/UserResponse.cs | 68 - src/.NET/fix44/XMLnonFIX.cs | 12 - src/.NET/fix50/AdjustedPositionReport.cs | 993 - src/.NET/fix50/Advertisement.cs | 2086 -- src/.NET/fix50/AllocationInstruction.cs | 4063 --- src/.NET/fix50/AllocationInstructionAck.cs | 549 - src/.NET/fix50/AllocationInstructionAlert.cs | 4063 --- src/.NET/fix50/AllocationReport.cs | 4127 --- src/.NET/fix50/AllocationReportAck.cs | 609 - src/.NET/fix50/AssignmentReport.cs | 2460 -- src/.NET/fix50/BidRequest.cs | 626 - src/.NET/fix50/BidResponse.cs | 269 - src/.NET/fix50/BusinessMessageReject.cs | 104 - src/.NET/fix50/CollateralAssignment.cs | 2925 -- src/.NET/fix50/CollateralInquiry.cs | 2829 -- src/.NET/fix50/CollateralInquiryAck.cs | 2467 -- src/.NET/fix50/CollateralReport.cs | 2921 -- src/.NET/fix50/CollateralRequest.cs | 2839 -- src/.NET/fix50/CollateralResponse.cs | 2863 -- src/.NET/fix50/Confirmation.cs | 3443 -- src/.NET/fix50/ConfirmationAck.cs | 132 - src/.NET/fix50/ConfirmationRequest.cs | 373 - src/.NET/fix50/ContraryIntentionReport.cs | 1564 - .../fix50/CrossOrderCancelReplaceRequest.cs | 4053 --- src/.NET/fix50/CrossOrderCancelRequest.cs | 2377 -- src/.NET/fix50/DerivativeSecurityList.cs | 2048 -- .../fix50/DerivativeSecurityListRequest.cs | 812 - src/.NET/fix50/DontKnowTrade.cs | 2062 -- src/.NET/fix50/Email.cs | 2111 -- src/.NET/fix50/ExecutionAcknowledgement.cs | 2134 -- src/.NET/fix50/ExecutionReport.cs | 5219 --- src/.NET/fix50/IOI.cs | 2680 -- src/.NET/fix50/ListCancelRequest.cs | 198 - src/.NET/fix50/ListExecute.cs | 104 - src/.NET/fix50/ListStatus.cs | 321 - src/.NET/fix50/ListStatusRequest.cs | 66 - src/.NET/fix50/ListStrikePrice.cs | 1494 - .../fix50/MarketDataIncrementalRefresh.cs | 2754 -- src/.NET/fix50/MarketDataRequest.cs | 2159 -- src/.NET/fix50/MarketDataRequestReject.cs | 107 - .../fix50/MarketDataSnapshotFullRefresh.cs | 2742 -- src/.NET/fix50/MassQuote.cs | 2431 -- src/.NET/fix50/MassQuoteAcknowledgement.cs | 2467 -- src/.NET/fix50/Message.cs | 36 - src/.NET/fix50/MultilegOrderCancelReplace.cs | 4097 --- .../NetworkCounterpartySystemStatusRequest.cs | 109 - ...NetworkCounterpartySystemStatusResponse.cs | 157 - src/.NET/fix50/NewOrderCross.cs | 4015 --- src/.NET/fix50/NewOrderList.cs | 3670 -- src/.NET/fix50/NewOrderMultileg.cs | 4083 --- src/.NET/fix50/NewOrderSingle.cs | 3602 -- src/.NET/fix50/News.cs | 2083 -- src/.NET/fix50/OrderCancelReject.cs | 278 - src/.NET/fix50/OrderCancelReplaceRequest.cs | 3539 -- src/.NET/fix50/OrderCancelRequest.cs | 1791 - src/.NET/fix50/OrderMassCancelReport.cs | 1645 - src/.NET/fix50/OrderMassCancelRequest.cs | 1532 - src/.NET/fix50/OrderMassStatusRequest.cs | 1494 - src/.NET/fix50/OrderStatusRequest.cs | 1631 - src/.NET/fix50/PositionMaintenanceReport.cs | 2531 -- src/.NET/fix50/PositionMaintenanceRequest.cs | 2491 -- src/.NET/fix50/PositionReport.cs | 2609 -- src/.NET/fix50/Quote.cs | 3327 -- src/.NET/fix50/QuoteCancel.cs | 2203 -- src/.NET/fix50/QuoteRequest.cs | 3044 -- src/.NET/fix50/QuoteRequestReject.cs | 3022 -- src/.NET/fix50/QuoteResponse.cs | 3329 -- src/.NET/fix50/QuoteStatusReport.cs | 3195 -- src/.NET/fix50/QuoteStatusRequest.cs | 2168 -- src/.NET/fix50/RFQRequest.cs | 1977 -- src/.NET/fix50/RegistrationInstructions.cs | 532 - .../fix50/RegistrationInstructionsResponse.cs | 226 - src/.NET/fix50/RequestForPositions.cs | 2233 -- src/.NET/fix50/RequestForPositionsAck.cs | 2238 -- src/.NET/fix50/SecurityDefinition.cs | 2062 -- src/.NET/fix50/SecurityDefinitionRequest.cs | 2022 -- .../fix50/SecurityDefinitionUpdateReport.cs | 2045 -- src/.NET/fix50/SecurityList.cs | 2545 -- src/.NET/fix50/SecurityListRequest.cs | 2118 -- src/.NET/fix50/SecurityListUpdateReport.cs | 2552 -- src/.NET/fix50/SecurityStatus.cs | 2158 -- src/.NET/fix50/SecurityStatusRequest.cs | 1962 -- src/.NET/fix50/SecurityTypeRequest.cs | 126 - src/.NET/fix50/SecurityTypes.cs | 219 - .../fix50/SettlementInstructionRequest.cs | 294 - src/.NET/fix50/SettlementInstructions.cs | 529 - src/.NET/fix50/TradeCaptureReport.cs | 4958 --- src/.NET/fix50/TradeCaptureReportAck.cs | 4552 --- src/.NET/fix50/TradeCaptureReportRequest.cs | 2577 -- .../fix50/TradeCaptureReportRequestAck.cs | 2086 -- src/.NET/fix50/TradingSessionList.cs | 245 - src/.NET/fix50/TradingSessionListRequest.cs | 104 - src/.NET/fix50/TradingSessionStatus.cs | 848 - src/.NET/fix50/TradingSessionStatusRequest.cs | 104 - src/.NET/fix50/UserRequest.cs | 106 - src/.NET/fix50/UserResponse.cs | 68 - src/.NET/fix50sp1/AdjustedPositionReport.cs | 1202 - src/.NET/fix50sp1/Advertisement.cs | 2410 -- src/.NET/fix50sp1/AllocationInstruction.cs | 4387 --- src/.NET/fix50sp1/AllocationInstructionAck.cs | 549 - .../fix50sp1/AllocationInstructionAlert.cs | 4387 --- src/.NET/fix50sp1/AllocationReport.cs | 4451 --- src/.NET/fix50sp1/AllocationReportAck.cs | 609 - src/.NET/fix50sp1/ApplicationMessageReport.cs | 133 - .../fix50sp1/ApplicationMessageRequest.cs | 133 - .../fix50sp1/ApplicationMessageRequestAck.cs | 191 - src/.NET/fix50sp1/AssignmentReport.cs | 2832 -- src/.NET/fix50sp1/BidRequest.cs | 626 - src/.NET/fix50sp1/BidResponse.cs | 269 - src/.NET/fix50sp1/BusinessMessageReject.cs | 140 - src/.NET/fix50sp1/CollateralAssignment.cs | 3249 -- src/.NET/fix50sp1/CollateralInquiry.cs | 3153 -- src/.NET/fix50sp1/CollateralInquiryAck.cs | 2791 -- src/.NET/fix50sp1/CollateralReport.cs | 3245 -- src/.NET/fix50sp1/CollateralRequest.cs | 3163 -- src/.NET/fix50sp1/CollateralResponse.cs | 3187 -- src/.NET/fix50sp1/Confirmation.cs | 3767 -- src/.NET/fix50sp1/ConfirmationAck.cs | 132 - src/.NET/fix50sp1/ConfirmationRequest.cs | 373 - src/.NET/fix50sp1/ContraryIntentionReport.cs | 1864 - .../CrossOrderCancelReplaceRequest.cs | 4389 --- src/.NET/fix50sp1/CrossOrderCancelRequest.cs | 2701 -- src/.NET/fix50sp1/DerivativeSecurityList.cs | 2440 -- .../fix50sp1/DerivativeSecurityListRequest.cs | 1544 - .../DerivativeSecurityListUpdateReport.cs | 2458 -- src/.NET/fix50sp1/DontKnowTrade.cs | 2386 -- src/.NET/fix50sp1/Email.cs | 2435 -- src/.NET/fix50sp1/ExecutionAcknowledgement.cs | 2458 -- src/.NET/fix50sp1/ExecutionReport.cs | 6248 ---- src/.NET/fix50sp1/IOI.cs | 3052 -- src/.NET/fix50sp1/ListCancelRequest.cs | 198 - src/.NET/fix50sp1/ListExecute.cs | 104 - src/.NET/fix50sp1/ListStatus.cs | 357 - src/.NET/fix50sp1/ListStatusRequest.cs | 66 - src/.NET/fix50sp1/ListStrikePrice.cs | 1746 - .../fix50sp1/MarketDataIncrementalRefresh.cs | 3496 -- src/.NET/fix50sp1/MarketDataRequest.cs | 2577 -- src/.NET/fix50sp1/MarketDataRequestReject.cs | 201 - .../fix50sp1/MarketDataSnapshotFullRefresh.cs | 3419 -- src/.NET/fix50sp1/MarketDefinition.cs | 431 - src/.NET/fix50sp1/MarketDefinitionRequest.cs | 80 - .../fix50sp1/MarketDefinitionUpdateReport.cs | 443 - src/.NET/fix50sp1/MassQuote.cs | 2755 -- src/.NET/fix50sp1/MassQuoteAcknowledgement.cs | 2851 -- src/.NET/fix50sp1/Message.cs | 36 - .../fix50sp1/MultilegOrderCancelReplace.cs | 4513 --- .../NetworkCounterpartySystemStatusRequest.cs | 109 - ...NetworkCounterpartySystemStatusResponse.cs | 157 - src/.NET/fix50sp1/NewOrderCross.cs | 4351 --- src/.NET/fix50sp1/NewOrderList.cs | 3934 --- src/.NET/fix50sp1/NewOrderMultileg.cs | 4503 --- src/.NET/fix50sp1/NewOrderSingle.cs | 3854 --- src/.NET/fix50sp1/News.cs | 2455 -- src/.NET/fix50sp1/OrderCancelReject.cs | 276 - .../fix50sp1/OrderCancelReplaceRequest.cs | 3789 -- src/.NET/fix50sp1/OrderCancelRequest.cs | 2041 -- src/.NET/fix50sp1/OrderMassActionReport.cs | 1964 -- src/.NET/fix50sp1/OrderMassActionRequest.cs | 1822 - src/.NET/fix50sp1/OrderMassCancelReport.cs | 1976 -- src/.NET/fix50sp1/OrderMassCancelRequest.cs | 1808 - src/.NET/fix50sp1/OrderMassStatusRequest.cs | 1746 - src/.NET/fix50sp1/OrderStatusRequest.cs | 1881 - .../fix50sp1/PositionMaintenanceReport.cs | 2855 -- .../fix50sp1/PositionMaintenanceRequest.cs | 2815 -- src/.NET/fix50sp1/PositionReport.cs | 2981 -- src/.NET/fix50sp1/Quote.cs | 3687 -- src/.NET/fix50sp1/QuoteCancel.cs | 2539 -- src/.NET/fix50sp1/QuoteRequest.cs | 3498 -- src/.NET/fix50sp1/QuoteRequestReject.cs | 3464 -- src/.NET/fix50sp1/QuoteResponse.cs | 3701 -- src/.NET/fix50sp1/QuoteStatusReport.cs | 3561 -- src/.NET/fix50sp1/QuoteStatusRequest.cs | 2492 -- src/.NET/fix50sp1/RFQRequest.cs | 2407 -- src/.NET/fix50sp1/RegistrationInstructions.cs | 532 - .../RegistrationInstructionsResponse.cs | 226 - src/.NET/fix50sp1/RequestForPositions.cs | 2557 -- src/.NET/fix50sp1/RequestForPositionsAck.cs | 2562 -- src/.NET/fix50sp1/SecurityDefinition.cs | 2802 -- .../fix50sp1/SecurityDefinitionRequest.cs | 2579 -- .../SecurityDefinitionUpdateReport.cs | 2814 -- src/.NET/fix50sp1/SecurityList.cs | 3047 -- src/.NET/fix50sp1/SecurityListRequest.cs | 2466 -- src/.NET/fix50sp1/SecurityListUpdateReport.cs | 3083 -- src/.NET/fix50sp1/SecurityStatus.cs | 2590 -- src/.NET/fix50sp1/SecurityStatusRequest.cs | 2310 -- src/.NET/fix50sp1/SecurityTypeRequest.cs | 150 - src/.NET/fix50sp1/SecurityTypes.cs | 291 - .../fix50sp1/SettlementInstructionRequest.cs | 294 - src/.NET/fix50sp1/SettlementInstructions.cs | 529 - .../fix50sp1/SettlementObligationReport.cs | 1370 - src/.NET/fix50sp1/TradeCaptureReport.cs | 5869 ---- src/.NET/fix50sp1/TradeCaptureReportAck.cs | 5357 --- .../fix50sp1/TradeCaptureReportRequest.cs | 2901 -- .../fix50sp1/TradeCaptureReportRequestAck.cs | 2410 -- src/.NET/fix50sp1/TradingSessionList.cs | 329 - .../fix50sp1/TradingSessionListRequest.cs | 128 - .../TradingSessionListUpdateReport.cs | 341 - src/.NET/fix50sp1/TradingSessionStatus.cs | 1124 - .../fix50sp1/TradingSessionStatusRequest.cs | 128 - src/.NET/fix50sp1/UserNotification.cs | 78 - src/.NET/fix50sp1/UserRequest.cs | 166 - src/.NET/fix50sp1/UserResponse.cs | 68 - src/.NET/fix50sp2/AdjustedPositionReport.cs | 1358 - src/.NET/fix50sp2/Advertisement.cs | 2686 -- src/.NET/fix50sp2/AllocationInstruction.cs | 4716 --- src/.NET/fix50sp2/AllocationInstructionAck.cs | 549 - .../fix50sp2/AllocationInstructionAlert.cs | 4663 --- src/.NET/fix50sp2/AllocationReport.cs | 4780 --- src/.NET/fix50sp2/AllocationReportAck.cs | 607 - src/.NET/fix50sp2/ApplicationMessageReport.cs | 145 - .../fix50sp2/ApplicationMessageRequest.cs | 333 - .../fix50sp2/ApplicationMessageRequestAck.cs | 391 - src/.NET/fix50sp2/AssignmentReport.cs | 3120 -- src/.NET/fix50sp2/BidRequest.cs | 626 - src/.NET/fix50sp2/BidResponse.cs | 269 - src/.NET/fix50sp2/BusinessMessageReject.cs | 140 - src/.NET/fix50sp2/CollateralAssignment.cs | 3525 -- src/.NET/fix50sp2/CollateralInquiry.cs | 3435 -- src/.NET/fix50sp2/CollateralInquiryAck.cs | 3067 -- src/.NET/fix50sp2/CollateralReport.cs | 3521 -- src/.NET/fix50sp2/CollateralRequest.cs | 3439 -- src/.NET/fix50sp2/CollateralResponse.cs | 3463 -- src/.NET/fix50sp2/Confirmation.cs | 4043 --- src/.NET/fix50sp2/ConfirmationAck.cs | 132 - src/.NET/fix50sp2/ConfirmationRequest.cs | 373 - src/.NET/fix50sp2/ContraryIntentionReport.cs | 2116 -- .../CrossOrderCancelReplaceRequest.cs | 4665 --- src/.NET/fix50sp2/CrossOrderCancelRequest.cs | 2977 -- src/.NET/fix50sp2/DerivativeSecurityList.cs | 2758 -- .../fix50sp2/DerivativeSecurityListRequest.cs | 1664 - .../DerivativeSecurityListUpdateReport.cs | 2758 -- src/.NET/fix50sp2/DontKnowTrade.cs | 2662 -- src/.NET/fix50sp2/Email.cs | 2711 -- src/.NET/fix50sp2/ExecutionAcknowledgement.cs | 2734 -- src/.NET/fix50sp2/ExecutionReport.cs | 6589 ---- src/.NET/fix50sp2/IOI.cs | 3328 -- src/.NET/fix50sp2/ListCancelRequest.cs | 198 - src/.NET/fix50sp2/ListExecute.cs | 104 - src/.NET/fix50sp2/ListStatus.cs | 357 - src/.NET/fix50sp2/ListStatusRequest.cs | 66 - src/.NET/fix50sp2/ListStrikePrice.cs | 1998 -- .../fix50sp2/MarketDataIncrementalRefresh.cs | 3873 --- src/.NET/fix50sp2/MarketDataRequest.cs | 2865 -- src/.NET/fix50sp2/MarketDataRequestReject.cs | 201 - .../fix50sp2/MarketDataSnapshotFullRefresh.cs | 3808 -- src/.NET/fix50sp2/MarketDefinition.cs | 431 - src/.NET/fix50sp2/MarketDefinitionRequest.cs | 80 - .../fix50sp2/MarketDefinitionUpdateReport.cs | 443 - src/.NET/fix50sp2/MassQuote.cs | 3067 -- src/.NET/fix50sp2/MassQuoteAcknowledgement.cs | 3228 -- src/.NET/fix50sp2/Message.cs | 36 - .../fix50sp2/MultilegOrderCancelReplace.cs | 4789 --- .../NetworkCounterpartySystemStatusRequest.cs | 109 - ...NetworkCounterpartySystemStatusResponse.cs | 157 - src/.NET/fix50sp2/NewOrderCross.cs | 4627 --- src/.NET/fix50sp2/NewOrderList.cs | 4186 --- src/.NET/fix50sp2/NewOrderMultileg.cs | 4779 --- src/.NET/fix50sp2/NewOrderSingle.cs | 4106 --- src/.NET/fix50sp2/News.cs | 2832 -- src/.NET/fix50sp2/OrderCancelReject.cs | 276 - .../fix50sp2/OrderCancelReplaceRequest.cs | 4041 --- src/.NET/fix50sp2/OrderCancelRequest.cs | 2293 -- src/.NET/fix50sp2/OrderMassActionReport.cs | 2269 -- src/.NET/fix50sp2/OrderMassActionRequest.cs | 2127 -- src/.NET/fix50sp2/OrderMassCancelReport.cs | 2281 -- src/.NET/fix50sp2/OrderMassCancelRequest.cs | 2113 -- src/.NET/fix50sp2/OrderMassStatusRequest.cs | 2051 -- src/.NET/fix50sp2/OrderStatusRequest.cs | 2133 -- .../fix50sp2/PositionMaintenanceReport.cs | 3131 -- .../fix50sp2/PositionMaintenanceRequest.cs | 3091 -- src/.NET/fix50sp2/PositionReport.cs | 3281 -- src/.NET/fix50sp2/Quote.cs | 4052 --- src/.NET/fix50sp2/QuoteCancel.cs | 2880 -- src/.NET/fix50sp2/QuoteRequest.cs | 3863 --- src/.NET/fix50sp2/QuoteRequestReject.cs | 3740 -- src/.NET/fix50sp2/QuoteResponse.cs | 3977 --- src/.NET/fix50sp2/QuoteStatusReport.cs | 3926 --- src/.NET/fix50sp2/QuoteStatusRequest.cs | 2821 -- src/.NET/fix50sp2/RFQRequest.cs | 2683 -- src/.NET/fix50sp2/RegistrationInstructions.cs | 532 - .../RegistrationInstructionsResponse.cs | 226 - src/.NET/fix50sp2/RequestForPositions.cs | 2833 -- src/.NET/fix50sp2/RequestForPositionsAck.cs | 2838 -- src/.NET/fix50sp2/SecurityDefinition.cs | 3090 -- .../fix50sp2/SecurityDefinitionRequest.cs | 2855 -- .../SecurityDefinitionUpdateReport.cs | 3102 -- src/.NET/fix50sp2/SecurityList.cs | 3431 -- src/.NET/fix50sp2/SecurityListRequest.cs | 2778 -- src/.NET/fix50sp2/SecurityListUpdateReport.cs | 3467 -- src/.NET/fix50sp2/SecurityStatus.cs | 2866 -- src/.NET/fix50sp2/SecurityStatusRequest.cs | 2586 -- src/.NET/fix50sp2/SecurityTypeRequest.cs | 150 - src/.NET/fix50sp2/SecurityTypes.cs | 303 - .../fix50sp2/SettlementInstructionRequest.cs | 294 - src/.NET/fix50sp2/SettlementInstructions.cs | 529 - .../fix50sp2/SettlementObligationReport.cs | 1526 - src/.NET/fix50sp2/StreamAssignmentReport.cs | 1238 - .../fix50sp2/StreamAssignmentReportACK.cs | 92 - src/.NET/fix50sp2/StreamAssignmentRequest.cs | 1180 - src/.NET/fix50sp2/TradeCaptureReport.cs | 6301 ---- src/.NET/fix50sp2/TradeCaptureReportAck.cs | 5861 ---- .../fix50sp2/TradeCaptureReportRequest.cs | 3177 -- .../fix50sp2/TradeCaptureReportRequestAck.cs | 2686 -- src/.NET/fix50sp2/TradingSessionList.cs | 353 - .../fix50sp2/TradingSessionListRequest.cs | 128 - .../TradingSessionListUpdateReport.cs | 353 - src/.NET/fix50sp2/TradingSessionStatus.cs | 1280 - .../fix50sp2/TradingSessionStatusRequest.cs | 128 - src/.NET/fix50sp2/UserNotification.cs | 78 - src/.NET/fix50sp2/UserRequest.cs | 166 - src/.NET/fix50sp2/UserResponse.cs | 68 - src/.NET/fixt11/Heartbeat.cs | 24 - src/.NET/fixt11/Logon.cs | 219 - src/.NET/fixt11/Logout.cs | 48 - src/.NET/fixt11/Message.cs | 406 - src/.NET/fixt11/Reject.cs | 102 - src/.NET/fixt11/ResendRequest.cs | 44 - src/.NET/fixt11/SequenceReset.cs | 42 - src/.NET/fixt11/TestRequest.cs | 30 - src/.NET/quickfix_net.cpp | 65 - src/.NET/quickfix_net.h | 37 - src/.NET/quickfix_net.sln | 21 - src/.NET/quickfix_net.snk | Bin 79 -> 0 bytes src/.NET/quickfix_net_messages.snk | Bin 596 -> 0 bytes src/.NET/quickfix_net_messages_vs10.csproj | 1929 -- src/.NET/quickfix_net_messages_vs11.vcxproj | 1950 -- src/.NET/quickfix_net_messages_vs7.csproj | 3121 -- src/.NET/quickfix_net_messages_vs8.csproj | 1871 - src/.NET/quickfix_net_messages_vs9.csproj | 1901 - src/.NET/quickfix_net_vs10.vcxproj | 204 - src/.NET/quickfix_net_vs11.vcxproj | 312 - src/.NET/quickfix_net_vs7.vcproj | 334 - src/.NET/quickfix_net_vs8.vcproj | 487 - src/.NET/quickfix_net_vs9.vcproj | 659 - src/.NET/test/SessionSettingsTest.cs | 1 - src/C++/Acceptor.cpp | 2 +- src/C++/Acceptor.h | 2 +- src/C++/Application.h | 2 +- src/C++/AtomicCount.h | 2 +- src/C++/Container.h | 8 + src/C++/DOMDocument.h | 2 +- src/C++/DataDictionary.cpp | 18 +- src/C++/DataDictionary.h | 6 +- src/C++/DataDictionaryProvider.cpp | 6 +- src/C++/DataDictionaryProvider.h | 16 +- src/C++/DatabaseConnectionID.h | 2 +- src/C++/DatabaseConnectionPool.h | 2 +- src/C++/Dictionary.cpp | 2 +- src/C++/Dictionary.h | 8 +- src/C++/Event.h | 2 +- src/C++/Exceptions.h | 4 +- src/C++/Field.h | 6 +- src/C++/FieldConvertors.cpp | 2 +- src/C++/FieldConvertors.h | 34 +- src/C++/FieldMap.cpp | 14 +- src/C++/FieldMap.h | 11 +- src/C++/FieldNumbers.h | 2 +- src/C++/FieldTypes.cpp | 2 +- src/C++/FieldTypes.h | 14 +- src/C++/Fields.h | 2 +- src/C++/FileLog.cpp | 29 +- src/C++/FileLog.h | 3 +- src/C++/FileStore.cpp | 13 +- src/C++/FileStore.h | 2 +- src/C++/Group.cpp | 2 +- src/C++/Group.h | 2 +- src/C++/HtmlBuilder.h | 2 +- src/C++/HttpConnection.cpp | 14 +- src/C++/HttpConnection.h | 2 +- src/C++/HttpMessage.cpp | 2 +- src/C++/HttpMessage.h | 2 +- src/C++/HttpParser.cpp | 4 +- src/C++/HttpParser.h | 6 +- src/C++/HttpServer.cpp | 2 +- src/C++/HttpServer.h | 2 +- src/C++/Initiator.cpp | 2 +- src/C++/Initiator.h | 2 +- src/C++/Log.cpp | 10 +- src/C++/Log.h | 4 +- src/C++/Makefile.am | 8 +- src/C++/Message.cpp | 4 +- src/C++/Message.h | 14 +- src/C++/MessageCracker.h | 2 +- src/C++/MessageSorters.cpp | 2 +- src/C++/MessageSorters.h | 2 +- src/C++/MessageStore.cpp | 2 +- src/C++/MessageStore.h | 3 +- src/C++/Mutex.h | 2 +- src/C++/MySQLConnection.h | 2 +- src/C++/MySQLLog.cpp | 4 +- src/C++/MySQLLog.h | 2 +- src/C++/MySQLStore.cpp | 2 +- src/C++/MySQLStore.h | 2 +- src/C++/NullStore.cpp | 2 +- src/C++/NullStore.h | 2 +- src/C++/OdbcConnection.h | 4 +- src/C++/OdbcLog.cpp | 4 +- src/C++/OdbcLog.h | 2 +- src/C++/OdbcStore.cpp | 4 +- src/C++/OdbcStore.h | 2 +- src/C++/Parser.cpp | 2 +- src/C++/Parser.h | 13 +- src/C++/PostgreSQLConnection.h | 2 +- src/C++/PostgreSQLLog.cpp | 8 +- src/C++/PostgreSQLLog.h | 2 +- src/C++/PostgreSQLStore.cpp | 2 +- src/C++/PostgreSQLStore.h | 2 +- src/C++/Queue.h | 2 +- src/C++/Responder.h | 2 +- src/C++/Session.cpp | 13 +- src/C++/Session.h | 10 +- src/C++/SessionFactory.cpp | 53 +- src/C++/SessionFactory.h | 11 +- src/C++/SessionID.h | 2 +- src/C++/SessionSettings.cpp | 2 +- src/C++/SessionSettings.h | 4 +- src/C++/SessionState.h | 2 +- src/C++/Settings.cpp | 6 +- src/C++/Settings.h | 4 +- src/C++/SocketAcceptor.cpp | 12 +- src/C++/SocketAcceptor.h | 2 +- src/C++/SocketConnection.cpp | 6 +- src/C++/SocketConnection.h | 2 +- src/C++/SocketConnector.cpp | 2 +- src/C++/SocketConnector.h | 2 +- src/C++/SocketInitiator.cpp | 26 +- src/C++/SocketInitiator.h | 3 +- src/C++/SocketMonitor.cpp | 6 +- src/C++/SocketMonitor.h | 4 +- src/C++/SocketServer.cpp | 2 +- src/C++/SocketServer.h | 4 +- src/C++/ThreadedSocketAcceptor.cpp | 14 +- src/C++/ThreadedSocketAcceptor.h | 2 +- src/C++/ThreadedSocketConnection.cpp | 12 +- src/C++/ThreadedSocketConnection.h | 7 +- src/C++/ThreadedSocketInitiator.cpp | 22 +- src/C++/ThreadedSocketInitiator.h | 3 +- src/C++/TimeRange.cpp | 4 +- src/C++/TimeRange.h | 2 +- src/C++/Utility.cpp | 23 +- src/C++/Utility.h | 134 +- src/C++/Values.h | 2 +- src/C++/fix40/MessageCracker.h | 2 +- src/C++/fix41/MessageCracker.h | 2 +- src/C++/fix42/MessageCracker.h | 2 +- src/C++/fix43/MessageCracker.h | 2 +- src/C++/fix44/MessageCracker.h | 2 +- src/C++/fix50/MessageCracker.h | 2 +- src/C++/fix50sp1/MessageCracker.h | 2 +- src/C++/fix50sp2/MessageCracker.h | 2 +- src/C++/fixt11/MessageCracker.h | 2 +- src/C++/index.h | 73 +- src/C++/quickfix_vs10.vcxproj | 6 +- src/C++/quickfix_vs10.vcxproj.filters | 1488 +- src/C++/quickfix_vs11.vcxproj | 29 +- src/C++/quickfix_vs11.vcxproj.filters | 2210 ++ src/C++/quickfix_vs12.vcxproj | 840 + src/C++/quickfix_vs12.vcxproj.filters | 2181 ++ src/C++/quickfix_vs9.vcproj | 5261 --- src/C++/test/DataDictionaryTestCase.cpp | 2 +- src/C++/test/DictionaryTestCase.cpp | 20 +- src/C++/test/FieldBaseTestCase.cpp | 8 +- src/C++/test/FieldConvertorsTestCase.cpp | 97 +- src/C++/test/FileLogTestCase.cpp | 2 +- src/C++/test/FileStoreFactoryTestCase.cpp | 2 +- src/C++/test/FileStoreTestCase.cpp | 2 +- src/C++/test/FileUtilitiesTestCase.cpp | 2 +- src/C++/test/GroupTestCase.cpp | 2 +- src/C++/test/HttpMessageTestCase.cpp | 10 +- src/C++/test/HttpParserTestCase.cpp | 18 +- src/C++/test/MemoryStoreTestCase.cpp | 2 +- src/C++/test/MessageSortersTestCase.cpp | 2 +- src/C++/test/MessageStoreTestCase.h | 10 +- src/C++/test/MessagesTestCase.cpp | 2 +- src/C++/test/MySQLStoreTestCase.cpp | 2 +- src/C++/test/NullStoreTestCase.cpp | 10 +- src/C++/test/OdbcStoreTestCase.cpp | 2 +- src/C++/test/ParserTestCase.cpp | 18 +- src/C++/test/PostgreSQLStoreTestCase.cpp | 2 +- src/C++/test/SessionFactoryTestCase.cpp | 6 +- src/C++/test/SessionIDTestCase.cpp | 2 +- src/C++/test/SessionSettingsTestCase.cpp | 10 +- src/C++/test/SessionTestCase.cpp | 28 +- src/C++/test/SettingsTestCase.cpp | 18 +- src/C++/test/SocketAcceptorTestCase.cpp | 8 +- src/C++/test/SocketConnectorTestCase.cpp | 2 +- src/C++/test/SocketServerTestCase.cpp | 7 +- src/C++/test/StringUtilitiesTestCase.cpp | 2 +- src/C++/test/TimeRangeTestCase.cpp | 2 +- src/C++/test/UtcTimeOnlyTestCase.cpp | 2 +- src/C++/test/UtcTimeStampTestCase.cpp | 2 +- src/at.cpp | 2 +- src/at_application.cs | 2 +- src/at_application.h | 25 +- src/at_messagecracker.cs | 2 +- src/config_windows.h | 6 - src/pt.cpp | 19 +- src/pt.cs | 2 +- src/python/Makefile.am | 5 +- src/python/QuickfixPython.cpp | 21155 +++++++----- src/python/QuickfixPython.h | 23 +- src/python/quickfix.i | 53 +- src/python/quickfix.py | 28805 ++++++++++------ src/python/swig.sh | 2 +- src/python/test.sh | 4 +- src/python/test/DataDictionaryTestCase.py | 14 +- src/python/test/DictionaryTestCase.py | 18 +- src/python/test/MessageTestCase.py | 18 +- src/quickfix.i | 44 +- src/ruby/.gitignore | 1 + src/ruby/Makefile.am | 9 +- src/ruby/QuickfixRuby.cpp | 9531 ++--- src/ruby/QuickfixRuby.h | 10 +- src/ruby/extconf.rb | 14 +- src/ruby/make_ruby.sh | 6 +- src/ruby/quickfix.i | 16 +- src/ruby/swig.sh | 2 +- src/ruby/test.sh | 2 +- src/ruby/test/DataDictionaryTestCase.rb | 6 +- src/ruby/test/DictionaryTestCase.rb | 14 +- src/ruby/test/MessageTestCase.rb | 8 +- src/ruby/test/TestSuite.rb | 2 +- src/test_acceptance_net_vs10.csproj | 101 - src/test_acceptance_net_vs11.vcxproj | 119 - src/test_acceptance_net_vs7.csproj | 120 - src/test_acceptance_net_vs8.csproj | 61 - src/test_acceptance_net_vs9.csproj | 86 - src/test_acceptance_vs10.vcxproj | 6 +- src/test_acceptance_vs11.vcxproj | 4 +- src/test_acceptance_vs12.vcxproj | 145 + src/test_acceptance_vs7.vcproj | 168 - src/test_acceptance_vs8.vcproj | 238 - src/test_acceptance_vs9.vcproj | 418 - src/test_net_unit_vs8/Class1.cs | 10 - .../Properties/AssemblyInfo.cs | 35 - .../test_net_unit_vs8.csproj | 47 - src/test_performance_net_vs10.csproj | 151 - src/test_performance_net_vs11.vcxproj | 172 - src/test_performance_net_vs7.csproj | 110 - src/test_performance_net_vs8.csproj | 110 - src/test_performance_net_vs9.csproj | 136 - src/test_performance_vs10.vcxproj | 6 +- src/test_performance_vs11.vcxproj | 4 +- src/test_performance_vs12.vcxproj | 147 + src/test_performance_vs7.vcproj | 168 - src/test_performance_vs8.vcproj | 236 - src/test_performance_vs9.vcproj | 427 - src/test_unit_net_vs10.csproj | 117 - src/test_unit_net_vs11.vcxproj | 135 - src/test_unit_net_vs8.csproj | 74 - src/test_unit_net_vs9.csproj | 133 - src/test_unit_vs10.vcxproj | 4 +- src/test_unit_vs11.vcxproj | 4 +- src/test_unit_vs12.vcxproj | 181 + src/test_unit_vs7.vcproj | 357 - src/test_unit_vs8.vcproj | 371 - src/test_unit_vs9.vcproj | 674 - src/ut.cpp | 2 +- test/Comparator.rb | 2 +- test/ComparatorTestCase.rb | 2 +- test/FixParser.rb | 2 +- test/FixParserTestCase.rb | 4 +- test/Reflector.rb | 2 +- test/ReflectorClient.rb | 6 +- test/ReflectorClientTestCase.rb | 4 +- test/ReflectorServer.rb | 6 +- test/ReflectorServerTestCase.rb | 2 +- test/ReflectorTestCase.rb | 2 +- test/Runner.rb | 6 +- test/RunnerTestCase.rb | 2 +- test/SocketServer.rb | 2 +- test/SocketServerTestCase.rb | 2 +- test/atrun/test/ProcessTestCase.cpp | 2 +- .../atrun/test_acceptance_runner_vs10.vcxproj | 6 +- .../atrun/test_acceptance_runner_vs11.vcxproj | 4 +- .../atrun/test_acceptance_runner_vs12.vcxproj | 141 + test/check.sh | 2 +- .../server/fix40/AlreadyLoggedOn.def | 6 +- .../server/fix41/AlreadyLoggedOn.def | 6 +- .../server/fix42/AlreadyLoggedOn.def | 6 +- .../server/fix43/AlreadyLoggedOn.def | 6 +- .../server/fix44/AlreadyLoggedOn.def | 6 +- .../server/fix50/AlreadyLoggedOn.def | 6 +- .../server/fix50sp1/AlreadyLoggedOn.def | 6 +- .../server/fix50sp2/AlreadyLoggedOn.def | 6 +- test/runat.bat | 4 +- test/runat.sh | 21 +- test/runat_net.bat | 25 - test/runat_threaded.sh | 2 + test/runpt_net.bat | 24 - test/runut.sh | 2 + test/setup.bat | 35 +- test/setup.sh | 38 +- test/test.rb | 2 +- 1178 files changed, 49058 insertions(+), 961359 deletions(-) create mode 100644 .travis.yml delete mode 100644 CONTRIBUTORS delete mode 100644 COPYING delete mode 100644 INSTALL delete mode 100644 OptionalSettings_vs9.vsprops delete mode 100644 THANKS create mode 100644 UnitTest++/UnitTest++_vs12.vcxproj delete mode 100755 bin/run_executor_csharp.bat delete mode 100755 bin/run_executor_csharp_debug.bat delete mode 100755 bin/run_executor_vbnet.bat delete mode 100755 bin/run_executor_vbnet_debug.bat delete mode 100644 build_java.bat create mode 100644 build_vs12.bat delete mode 100755 build_vs7.bat delete mode 100755 build_vs8.bat delete mode 100644 build_vs9.bat create mode 100644 doc/doxygen.css create mode 100644 doc/html/.gitignore delete mode 100644 doc/html/FAQ.html delete mode 100644 doc/html/about.html delete mode 100644 doc/html/csharp/application_1.html delete mode 100644 doc/html/csharp/application_2.html delete mode 100644 doc/html/csharp/receiving_messages_1.html delete mode 100644 doc/html/csharp/receiving_messages_2.html delete mode 100644 doc/html/csharp/receiving_messages_3.html delete mode 100644 doc/html/csharp/receiving_messages_4.html delete mode 100644 doc/html/csharp/repeating_groups_1.html delete mode 100644 doc/html/csharp/repeating_groups_2.html delete mode 100644 doc/html/csharp/sending_messages_1.html delete mode 100644 doc/html/csharp/sending_messages_2.html delete mode 100644 doc/html/csharp/sending_messages_3.html delete mode 100644 doc/html/csharp/sending_messages_4.html delete mode 100644 doc/html/csharp/user_defined_1.html delete mode 100644 doc/html/csharp/user_defined_2.html delete mode 100644 doc/html/csharp/user_defined_3.html delete mode 100644 doc/html/doxygen.css delete mode 100644 doc/html/installdox delete mode 100644 doc/html/java/application_1.html delete mode 100644 doc/html/java/application_2.html delete mode 100644 doc/html/java/receiving_messages_1.html delete mode 100644 doc/html/java/receiving_messages_2.html delete mode 100644 doc/html/java/receiving_messages_3.html delete mode 100644 doc/html/java/receiving_messages_4.html delete mode 100644 doc/html/java/repeating_groups_1.html delete mode 100644 doc/html/java/repeating_groups_2.html delete mode 100644 doc/html/java/sending_messages_1.html delete mode 100644 doc/html/java/sending_messages_2.html delete mode 100644 doc/html/java/sending_messages_3.html delete mode 100644 doc/html/java/sending_messages_4.html delete mode 100644 doc/html/java/user_defined_1.html delete mode 100644 doc/html/java/user_defined_2.html delete mode 100644 doc/html/java/user_defined_3.html delete mode 100644 doc/html/vbnet/application_1.html delete mode 100644 doc/html/vbnet/application_2.html delete mode 100644 doc/html/vbnet/receiving_messages_1.html delete mode 100644 doc/html/vbnet/receiving_messages_2.html delete mode 100644 doc/html/vbnet/receiving_messages_3.html delete mode 100644 doc/html/vbnet/receiving_messages_4.html delete mode 100644 doc/html/vbnet/repeating_groups_1.html delete mode 100644 doc/html/vbnet/repeating_groups_2.html delete mode 100644 doc/html/vbnet/sending_messages_1.html delete mode 100644 doc/html/vbnet/sending_messages_2.html delete mode 100644 doc/html/vbnet/sending_messages_3.html delete mode 100644 doc/html/vbnet/sending_messages_4.html delete mode 100644 doc/html/vbnet/user_defined_1.html delete mode 100644 doc/html/vbnet/user_defined_2.html delete mode 100644 doc/html/vbnet/user_defined_3.html create mode 100644 doc/tidy.config create mode 100755 doc/tidy.sh create mode 100644 examples/executor/C++/example_executor_cpp_vs12.vcxproj delete mode 100644 examples/executor/C++/example_executor_cpp_vs7.vcproj delete mode 100644 examples/executor/C++/example_executor_cpp_vs8.vcproj delete mode 100644 examples/executor/C++/example_executor_cpp_vs9.vcproj delete mode 100644 examples/executor/csharp/App.ico delete mode 100644 examples/executor/csharp/Application.cs delete mode 100644 examples/executor/csharp/AssemblyInfo.cs delete mode 100644 examples/executor/csharp/Executor.cs delete mode 100644 examples/executor/csharp/example_executor_csharp_vs10.csproj delete mode 100644 examples/executor/csharp/example_executor_csharp_vs11.vcxproj delete mode 100644 examples/executor/csharp/example_executor_csharp_vs7.csproj delete mode 100644 examples/executor/csharp/example_executor_csharp_vs8.csproj delete mode 100644 examples/executor/csharp/example_executor_csharp_vs9.csproj delete mode 100644 examples/executor/vbnet/Application.vb delete mode 100644 examples/executor/vbnet/AssemblyInfo.vb delete mode 100644 examples/executor/vbnet/Executor.vb delete mode 100644 examples/executor/vbnet/example_executor_vbnet_vs10.vbproj delete mode 100644 examples/executor/vbnet/example_executor_vbnet_vs11.vbproj delete mode 100644 examples/executor/vbnet/example_executor_vbnet_vs7.vbproj delete mode 100644 examples/executor/vbnet/example_executor_vbnet_vs8.vbproj delete mode 100644 examples/executor/vbnet/example_executor_vbnet_vs9.vbproj create mode 100644 examples/ordermatch/example_ordermatch_vs12.vcxproj delete mode 100644 examples/ordermatch/example_ordermatch_vs7.vcproj delete mode 100644 examples/ordermatch/example_ordermatch_vs8.vcproj delete mode 100644 examples/ordermatch/example_ordermatch_vs9.vcproj create mode 100644 examples/tradeclient/example_tradeclient_vs12.vcxproj delete mode 100644 examples/tradeclient/example_tradeclient_vs7.vcproj delete mode 100644 examples/tradeclient/example_tradeclient_vs8.vcproj delete mode 100644 examples/tradeclient/example_tradeclient_vs9.vcproj create mode 100644 quickfix_vs12.sln delete mode 100644 quickfix_vs9.sln create mode 100755 scripts/ubuntu_12/build_vanilla.sh create mode 100755 scripts/ubuntu_12/build_with_db.sh create mode 100755 scripts/ubuntu_12/build_with_generate.sh create mode 100755 scripts/ubuntu_12/env.rc create mode 100755 scripts/ubuntu_12/install_deps.sh create mode 100755 scripts/ubuntu_12/setup_db.sh delete mode 100644 src/.NET/Acceptor.h delete mode 100644 src/.NET/Application.h delete mode 100644 src/.NET/AssemblyInfo.cpp delete mode 100644 src/.NET/AssemblyInfo.cs delete mode 100644 src/.NET/CPPLog.h delete mode 100644 src/.NET/CPPMessageStore.cpp delete mode 100644 src/.NET/CPPMessageStore.h delete mode 100644 src/.NET/DataDictionary.h delete mode 100644 src/.NET/DataDictionaryProvider.h delete mode 100644 src/.NET/DefaultMessageFactory.cs delete mode 100644 src/.NET/Dictionary.cpp delete mode 100644 src/.NET/Dictionary.h delete mode 100644 src/.NET/Exceptions.h delete mode 100644 src/.NET/FIX40_MessageCracker.cs delete mode 100644 src/.NET/FIX40_MessageFactory.cs delete mode 100644 src/.NET/FIX41_MessageCracker.cs delete mode 100644 src/.NET/FIX41_MessageFactory.cs delete mode 100644 src/.NET/FIX42_MessageCracker.cs delete mode 100644 src/.NET/FIX42_MessageFactory.cs delete mode 100644 src/.NET/FIX43_MessageCracker.cs delete mode 100644 src/.NET/FIX43_MessageFactory.cs delete mode 100644 src/.NET/FIX44_MessageCracker.cs delete mode 100644 src/.NET/FIX44_MessageFactory.cs delete mode 100644 src/.NET/FIX50SP1_MessageCracker.cs delete mode 100644 src/.NET/FIX50SP1_MessageFactory.cs delete mode 100644 src/.NET/FIX50SP2_MessageCracker.cs delete mode 100644 src/.NET/FIX50SP2_MessageFactory.cs delete mode 100644 src/.NET/FIX50_MessageCracker.cs delete mode 100644 src/.NET/FIX50_MessageFactory.cs delete mode 100644 src/.NET/FIXT11_MessageCracker.cs delete mode 100644 src/.NET/FIXT11_MessageFactory.cs delete mode 100644 src/.NET/Field.h delete mode 100644 src/.NET/FieldMap.cpp delete mode 100644 src/.NET/FieldMap.h delete mode 100644 src/.NET/FieldNumbers.h delete mode 100644 src/.NET/Fields.cpp delete mode 100644 src/.NET/Fields.h delete mode 100644 src/.NET/FileLog.cpp delete mode 100644 src/.NET/FileLog.h delete mode 100644 src/.NET/FileMessageStore.cpp delete mode 100644 src/.NET/FileMessageStore.h delete mode 100644 src/.NET/Group.cpp delete mode 100644 src/.NET/Group.h delete mode 100644 src/.NET/Initiator.h delete mode 100644 src/.NET/Log.h delete mode 100644 src/.NET/LogFactory.h delete mode 100644 src/.NET/MemoryMessageStore.cpp delete mode 100644 src/.NET/MemoryMessageStore.h delete mode 100644 src/.NET/Message.cpp delete mode 100644 src/.NET/Message.h delete mode 100644 src/.NET/MessageCracker.cpp delete mode 100644 src/.NET/MessageCracker.cs delete mode 100644 src/.NET/MessageFactory.h delete mode 100644 src/.NET/MessageStore.cpp delete mode 100644 src/.NET/MessageStore.h delete mode 100644 src/.NET/MessageStoreFactory.cpp delete mode 100644 src/.NET/MessageStoreFactory.h delete mode 100644 src/.NET/Messages.h delete mode 100644 src/.NET/MySQLLog.cpp delete mode 100644 src/.NET/MySQLLog.h delete mode 100644 src/.NET/MySQLStore.cpp delete mode 100644 src/.NET/MySQLStore.h delete mode 100644 src/.NET/OdbcLog.cpp delete mode 100644 src/.NET/OdbcLog.h delete mode 100644 src/.NET/OdbcStore.cpp delete mode 100644 src/.NET/OdbcStore.h delete mode 100644 src/.NET/PostgreSQLLog.cpp delete mode 100644 src/.NET/PostgreSQLLog.h delete mode 100644 src/.NET/PostgreSQLStore.cpp delete mode 100644 src/.NET/PostgreSQLStore.h delete mode 100644 src/.NET/ReadMe.txt delete mode 100644 src/.NET/ScreenLog.cpp delete mode 100644 src/.NET/ScreenLog.h delete mode 100644 src/.NET/Session.cpp delete mode 100644 src/.NET/Session.h delete mode 100644 src/.NET/SessionID.h delete mode 100644 src/.NET/SessionSettings.h delete mode 100644 src/.NET/SocketAcceptor.h delete mode 100644 src/.NET/SocketInitiator.h delete mode 100644 src/.NET/Stdafx.cpp delete mode 100644 src/.NET/Stdafx.h delete mode 100644 src/.NET/ThreadedSocketAcceptor.h delete mode 100644 src/.NET/ThreadedSocketInitiator.h delete mode 100644 src/.NET/fix40/Advertisement.cs delete mode 100644 src/.NET/fix40/Allocation.cs delete mode 100644 src/.NET/fix40/AllocationInstructionAck.cs delete mode 100644 src/.NET/fix40/DontKnowTrade.cs delete mode 100644 src/.NET/fix40/Email.cs delete mode 100644 src/.NET/fix40/ExecutionReport.cs delete mode 100644 src/.NET/fix40/Heartbeat.cs delete mode 100644 src/.NET/fix40/IOI.cs delete mode 100644 src/.NET/fix40/ListCancelRequest.cs delete mode 100644 src/.NET/fix40/ListExecute.cs delete mode 100644 src/.NET/fix40/ListStatus.cs delete mode 100644 src/.NET/fix40/ListStatusRequest.cs delete mode 100644 src/.NET/fix40/Logon.cs delete mode 100644 src/.NET/fix40/Logout.cs delete mode 100644 src/.NET/fix40/Message.cs delete mode 100644 src/.NET/fix40/NewOrderList.cs delete mode 100644 src/.NET/fix40/NewOrderSingle.cs delete mode 100644 src/.NET/fix40/News.cs delete mode 100644 src/.NET/fix40/OrderCancelReject.cs delete mode 100644 src/.NET/fix40/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix40/OrderCancelRequest.cs delete mode 100644 src/.NET/fix40/OrderStatusRequest.cs delete mode 100644 src/.NET/fix40/Quote.cs delete mode 100644 src/.NET/fix40/QuoteRequest.cs delete mode 100644 src/.NET/fix40/Reject.cs delete mode 100644 src/.NET/fix40/ResendRequest.cs delete mode 100644 src/.NET/fix40/SequenceReset.cs delete mode 100644 src/.NET/fix40/TestRequest.cs delete mode 100644 src/.NET/fix41/Advertisement.cs delete mode 100644 src/.NET/fix41/Allocation.cs delete mode 100644 src/.NET/fix41/AllocationInstructionAck.cs delete mode 100644 src/.NET/fix41/DontKnowTrade.cs delete mode 100644 src/.NET/fix41/Email.cs delete mode 100644 src/.NET/fix41/ExecutionReport.cs delete mode 100644 src/.NET/fix41/Heartbeat.cs delete mode 100644 src/.NET/fix41/IOI.cs delete mode 100644 src/.NET/fix41/ListCancelRequest.cs delete mode 100644 src/.NET/fix41/ListExecute.cs delete mode 100644 src/.NET/fix41/ListStatus.cs delete mode 100644 src/.NET/fix41/ListStatusRequest.cs delete mode 100644 src/.NET/fix41/Logon.cs delete mode 100644 src/.NET/fix41/Logout.cs delete mode 100644 src/.NET/fix41/Message.cs delete mode 100644 src/.NET/fix41/NewOrderList.cs delete mode 100644 src/.NET/fix41/NewOrderSingle.cs delete mode 100644 src/.NET/fix41/News.cs delete mode 100644 src/.NET/fix41/OrderCancelReject.cs delete mode 100644 src/.NET/fix41/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix41/OrderCancelRequest.cs delete mode 100644 src/.NET/fix41/OrderStatusRequest.cs delete mode 100644 src/.NET/fix41/Quote.cs delete mode 100644 src/.NET/fix41/QuoteRequest.cs delete mode 100644 src/.NET/fix41/Reject.cs delete mode 100644 src/.NET/fix41/ResendRequest.cs delete mode 100644 src/.NET/fix41/SequenceReset.cs delete mode 100644 src/.NET/fix41/SettlementInstructions.cs delete mode 100644 src/.NET/fix41/TestRequest.cs delete mode 100644 src/.NET/fix42/Advertisement.cs delete mode 100644 src/.NET/fix42/Allocation.cs delete mode 100644 src/.NET/fix42/AllocationInstructionAck.cs delete mode 100644 src/.NET/fix42/BidRequest.cs delete mode 100644 src/.NET/fix42/BidResponse.cs delete mode 100644 src/.NET/fix42/BusinessMessageReject.cs delete mode 100644 src/.NET/fix42/DontKnowTrade.cs delete mode 100644 src/.NET/fix42/Email.cs delete mode 100644 src/.NET/fix42/ExecutionReport.cs delete mode 100644 src/.NET/fix42/Heartbeat.cs delete mode 100644 src/.NET/fix42/IOI.cs delete mode 100644 src/.NET/fix42/ListCancelRequest.cs delete mode 100644 src/.NET/fix42/ListExecute.cs delete mode 100644 src/.NET/fix42/ListStatus.cs delete mode 100644 src/.NET/fix42/ListStatusRequest.cs delete mode 100644 src/.NET/fix42/ListStrikePrice.cs delete mode 100644 src/.NET/fix42/Logon.cs delete mode 100644 src/.NET/fix42/Logout.cs delete mode 100644 src/.NET/fix42/MarketDataIncrementalRefresh.cs delete mode 100644 src/.NET/fix42/MarketDataRequest.cs delete mode 100644 src/.NET/fix42/MarketDataRequestReject.cs delete mode 100644 src/.NET/fix42/MarketDataSnapshotFullRefresh.cs delete mode 100644 src/.NET/fix42/MassQuote.cs delete mode 100644 src/.NET/fix42/Message.cs delete mode 100644 src/.NET/fix42/NewOrderList.cs delete mode 100644 src/.NET/fix42/NewOrderSingle.cs delete mode 100644 src/.NET/fix42/News.cs delete mode 100644 src/.NET/fix42/OrderCancelReject.cs delete mode 100644 src/.NET/fix42/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix42/OrderCancelRequest.cs delete mode 100644 src/.NET/fix42/OrderStatusRequest.cs delete mode 100644 src/.NET/fix42/Quote.cs delete mode 100644 src/.NET/fix42/QuoteAcknowledgement.cs delete mode 100644 src/.NET/fix42/QuoteCancel.cs delete mode 100644 src/.NET/fix42/QuoteRequest.cs delete mode 100644 src/.NET/fix42/QuoteStatusRequest.cs delete mode 100644 src/.NET/fix42/Reject.cs delete mode 100644 src/.NET/fix42/ResendRequest.cs delete mode 100644 src/.NET/fix42/SecurityDefinition.cs delete mode 100644 src/.NET/fix42/SecurityDefinitionRequest.cs delete mode 100644 src/.NET/fix42/SecurityStatus.cs delete mode 100644 src/.NET/fix42/SecurityStatusRequest.cs delete mode 100644 src/.NET/fix42/SequenceReset.cs delete mode 100644 src/.NET/fix42/SettlementInstructions.cs delete mode 100644 src/.NET/fix42/TestRequest.cs delete mode 100644 src/.NET/fix42/TradingSessionStatus.cs delete mode 100644 src/.NET/fix42/TradingSessionStatusRequest.cs delete mode 100644 src/.NET/fix43/Advertisement.cs delete mode 100644 src/.NET/fix43/Allocation.cs delete mode 100644 src/.NET/fix43/AllocationAck.cs delete mode 100644 src/.NET/fix43/BidRequest.cs delete mode 100644 src/.NET/fix43/BidResponse.cs delete mode 100644 src/.NET/fix43/BusinessMessageReject.cs delete mode 100644 src/.NET/fix43/CrossOrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix43/CrossOrderCancelRequest.cs delete mode 100644 src/.NET/fix43/DerivativeSecurityList.cs delete mode 100644 src/.NET/fix43/DerivativeSecurityListRequest.cs delete mode 100644 src/.NET/fix43/DontKnowTrade.cs delete mode 100644 src/.NET/fix43/Email.cs delete mode 100644 src/.NET/fix43/ExecutionReport.cs delete mode 100644 src/.NET/fix43/Heartbeat.cs delete mode 100644 src/.NET/fix43/IOI.cs delete mode 100644 src/.NET/fix43/ListCancelRequest.cs delete mode 100644 src/.NET/fix43/ListExecute.cs delete mode 100644 src/.NET/fix43/ListStatus.cs delete mode 100644 src/.NET/fix43/ListStatusRequest.cs delete mode 100644 src/.NET/fix43/ListStrikePrice.cs delete mode 100644 src/.NET/fix43/Logon.cs delete mode 100644 src/.NET/fix43/Logout.cs delete mode 100644 src/.NET/fix43/MarketDataIncrementalRefresh.cs delete mode 100644 src/.NET/fix43/MarketDataRequest.cs delete mode 100644 src/.NET/fix43/MarketDataRequestReject.cs delete mode 100644 src/.NET/fix43/MarketDataSnapshotFullRefresh.cs delete mode 100644 src/.NET/fix43/MassQuote.cs delete mode 100644 src/.NET/fix43/MassQuoteAcknowledgement.cs delete mode 100644 src/.NET/fix43/Message.cs delete mode 100644 src/.NET/fix43/MultilegOrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix43/NewOrderCross.cs delete mode 100644 src/.NET/fix43/NewOrderList.cs delete mode 100644 src/.NET/fix43/NewOrderMultileg.cs delete mode 100644 src/.NET/fix43/NewOrderSingle.cs delete mode 100644 src/.NET/fix43/News.cs delete mode 100644 src/.NET/fix43/OrderCancelReject.cs delete mode 100644 src/.NET/fix43/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix43/OrderCancelRequest.cs delete mode 100644 src/.NET/fix43/OrderMassCancelReport.cs delete mode 100644 src/.NET/fix43/OrderMassCancelRequest.cs delete mode 100644 src/.NET/fix43/OrderMassStatusRequest.cs delete mode 100644 src/.NET/fix43/OrderStatusRequest.cs delete mode 100644 src/.NET/fix43/Quote.cs delete mode 100644 src/.NET/fix43/QuoteCancel.cs delete mode 100644 src/.NET/fix43/QuoteRequest.cs delete mode 100644 src/.NET/fix43/QuoteRequestReject.cs delete mode 100644 src/.NET/fix43/QuoteStatusReport.cs delete mode 100644 src/.NET/fix43/QuoteStatusRequest.cs delete mode 100644 src/.NET/fix43/RFQRequest.cs delete mode 100644 src/.NET/fix43/RegistrationInstructions.cs delete mode 100644 src/.NET/fix43/RegistrationInstructionsResponse.cs delete mode 100644 src/.NET/fix43/Reject.cs delete mode 100644 src/.NET/fix43/ResendRequest.cs delete mode 100644 src/.NET/fix43/SecurityDefinition.cs delete mode 100644 src/.NET/fix43/SecurityDefinitionRequest.cs delete mode 100644 src/.NET/fix43/SecurityList.cs delete mode 100644 src/.NET/fix43/SecurityListRequest.cs delete mode 100644 src/.NET/fix43/SecurityStatus.cs delete mode 100644 src/.NET/fix43/SecurityStatusRequest.cs delete mode 100644 src/.NET/fix43/SecurityTypeRequest.cs delete mode 100644 src/.NET/fix43/SecurityTypes.cs delete mode 100644 src/.NET/fix43/SequenceReset.cs delete mode 100644 src/.NET/fix43/SettlementInstructions.cs delete mode 100644 src/.NET/fix43/TestRequest.cs delete mode 100644 src/.NET/fix43/TradeCaptureReport.cs delete mode 100644 src/.NET/fix43/TradeCaptureReportRequest.cs delete mode 100644 src/.NET/fix43/TradingSessionStatus.cs delete mode 100644 src/.NET/fix43/TradingSessionStatusRequest.cs delete mode 100644 src/.NET/fix43/XMLnonFIX.cs delete mode 100644 src/.NET/fix44/Advertisement.cs delete mode 100644 src/.NET/fix44/AllocationInstruction.cs delete mode 100644 src/.NET/fix44/AllocationInstructionAck.cs delete mode 100644 src/.NET/fix44/AllocationReport.cs delete mode 100644 src/.NET/fix44/AllocationReportAck.cs delete mode 100644 src/.NET/fix44/AssignmentReport.cs delete mode 100644 src/.NET/fix44/BidRequest.cs delete mode 100644 src/.NET/fix44/BidResponse.cs delete mode 100644 src/.NET/fix44/BusinessMessageReject.cs delete mode 100644 src/.NET/fix44/CollateralAssignment.cs delete mode 100644 src/.NET/fix44/CollateralInquiry.cs delete mode 100644 src/.NET/fix44/CollateralInquiryAck.cs delete mode 100644 src/.NET/fix44/CollateralReport.cs delete mode 100644 src/.NET/fix44/CollateralRequest.cs delete mode 100644 src/.NET/fix44/CollateralResponse.cs delete mode 100644 src/.NET/fix44/Confirmation.cs delete mode 100644 src/.NET/fix44/ConfirmationAck.cs delete mode 100644 src/.NET/fix44/ConfirmationRequest.cs delete mode 100644 src/.NET/fix44/CrossOrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix44/CrossOrderCancelRequest.cs delete mode 100644 src/.NET/fix44/DerivativeSecurityList.cs delete mode 100644 src/.NET/fix44/DerivativeSecurityListRequest.cs delete mode 100644 src/.NET/fix44/DontKnowTrade.cs delete mode 100644 src/.NET/fix44/Email.cs delete mode 100644 src/.NET/fix44/ExecutionReport.cs delete mode 100644 src/.NET/fix44/Heartbeat.cs delete mode 100644 src/.NET/fix44/IOI.cs delete mode 100644 src/.NET/fix44/ListCancelRequest.cs delete mode 100644 src/.NET/fix44/ListExecute.cs delete mode 100644 src/.NET/fix44/ListStatus.cs delete mode 100644 src/.NET/fix44/ListStatusRequest.cs delete mode 100644 src/.NET/fix44/ListStrikePrice.cs delete mode 100644 src/.NET/fix44/Logon.cs delete mode 100644 src/.NET/fix44/Logout.cs delete mode 100644 src/.NET/fix44/MarketDataIncrementalRefresh.cs delete mode 100644 src/.NET/fix44/MarketDataRequest.cs delete mode 100644 src/.NET/fix44/MarketDataRequestReject.cs delete mode 100644 src/.NET/fix44/MarketDataSnapshotFullRefresh.cs delete mode 100644 src/.NET/fix44/MassQuote.cs delete mode 100644 src/.NET/fix44/MassQuoteAcknowledgement.cs delete mode 100644 src/.NET/fix44/Message.cs delete mode 100644 src/.NET/fix44/MultilegOrderCancelReplace.cs delete mode 100644 src/.NET/fix44/NetworkCounterpartySystemStatusRequest.cs delete mode 100644 src/.NET/fix44/NetworkCounterpartySystemStatusResponse.cs delete mode 100644 src/.NET/fix44/NewOrderCross.cs delete mode 100644 src/.NET/fix44/NewOrderList.cs delete mode 100644 src/.NET/fix44/NewOrderMultileg.cs delete mode 100644 src/.NET/fix44/NewOrderSingle.cs delete mode 100644 src/.NET/fix44/News.cs delete mode 100644 src/.NET/fix44/OrderCancelReject.cs delete mode 100644 src/.NET/fix44/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix44/OrderCancelRequest.cs delete mode 100644 src/.NET/fix44/OrderMassCancelReport.cs delete mode 100644 src/.NET/fix44/OrderMassCancelRequest.cs delete mode 100644 src/.NET/fix44/OrderMassStatusRequest.cs delete mode 100644 src/.NET/fix44/OrderStatusRequest.cs delete mode 100644 src/.NET/fix44/PositionMaintenanceReport.cs delete mode 100644 src/.NET/fix44/PositionMaintenanceRequest.cs delete mode 100644 src/.NET/fix44/PositionReport.cs delete mode 100644 src/.NET/fix44/Quote.cs delete mode 100644 src/.NET/fix44/QuoteCancel.cs delete mode 100644 src/.NET/fix44/QuoteRequest.cs delete mode 100644 src/.NET/fix44/QuoteRequestReject.cs delete mode 100644 src/.NET/fix44/QuoteResponse.cs delete mode 100644 src/.NET/fix44/QuoteStatusReport.cs delete mode 100644 src/.NET/fix44/QuoteStatusRequest.cs delete mode 100644 src/.NET/fix44/RFQRequest.cs delete mode 100644 src/.NET/fix44/RegistrationInstructions.cs delete mode 100644 src/.NET/fix44/RegistrationInstructionsResponse.cs delete mode 100644 src/.NET/fix44/Reject.cs delete mode 100644 src/.NET/fix44/RequestForPositions.cs delete mode 100644 src/.NET/fix44/RequestForPositionsAck.cs delete mode 100644 src/.NET/fix44/ResendRequest.cs delete mode 100644 src/.NET/fix44/SecurityDefinition.cs delete mode 100644 src/.NET/fix44/SecurityDefinitionRequest.cs delete mode 100644 src/.NET/fix44/SecurityList.cs delete mode 100644 src/.NET/fix44/SecurityListRequest.cs delete mode 100644 src/.NET/fix44/SecurityStatus.cs delete mode 100644 src/.NET/fix44/SecurityStatusRequest.cs delete mode 100644 src/.NET/fix44/SecurityTypeRequest.cs delete mode 100644 src/.NET/fix44/SecurityTypes.cs delete mode 100644 src/.NET/fix44/SequenceReset.cs delete mode 100644 src/.NET/fix44/SettlementInstructionRequest.cs delete mode 100644 src/.NET/fix44/SettlementInstructions.cs delete mode 100644 src/.NET/fix44/TestRequest.cs delete mode 100644 src/.NET/fix44/TradeCaptureReport.cs delete mode 100644 src/.NET/fix44/TradeCaptureReportAck.cs delete mode 100644 src/.NET/fix44/TradeCaptureReportRequest.cs delete mode 100644 src/.NET/fix44/TradeCaptureReportRequestAck.cs delete mode 100644 src/.NET/fix44/TradingSessionStatus.cs delete mode 100644 src/.NET/fix44/TradingSessionStatusRequest.cs delete mode 100644 src/.NET/fix44/UserRequest.cs delete mode 100644 src/.NET/fix44/UserResponse.cs delete mode 100644 src/.NET/fix44/XMLnonFIX.cs delete mode 100644 src/.NET/fix50/AdjustedPositionReport.cs delete mode 100644 src/.NET/fix50/Advertisement.cs delete mode 100644 src/.NET/fix50/AllocationInstruction.cs delete mode 100644 src/.NET/fix50/AllocationInstructionAck.cs delete mode 100644 src/.NET/fix50/AllocationInstructionAlert.cs delete mode 100644 src/.NET/fix50/AllocationReport.cs delete mode 100644 src/.NET/fix50/AllocationReportAck.cs delete mode 100644 src/.NET/fix50/AssignmentReport.cs delete mode 100644 src/.NET/fix50/BidRequest.cs delete mode 100644 src/.NET/fix50/BidResponse.cs delete mode 100644 src/.NET/fix50/BusinessMessageReject.cs delete mode 100644 src/.NET/fix50/CollateralAssignment.cs delete mode 100644 src/.NET/fix50/CollateralInquiry.cs delete mode 100644 src/.NET/fix50/CollateralInquiryAck.cs delete mode 100644 src/.NET/fix50/CollateralReport.cs delete mode 100644 src/.NET/fix50/CollateralRequest.cs delete mode 100644 src/.NET/fix50/CollateralResponse.cs delete mode 100644 src/.NET/fix50/Confirmation.cs delete mode 100644 src/.NET/fix50/ConfirmationAck.cs delete mode 100644 src/.NET/fix50/ConfirmationRequest.cs delete mode 100644 src/.NET/fix50/ContraryIntentionReport.cs delete mode 100644 src/.NET/fix50/CrossOrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix50/CrossOrderCancelRequest.cs delete mode 100644 src/.NET/fix50/DerivativeSecurityList.cs delete mode 100644 src/.NET/fix50/DerivativeSecurityListRequest.cs delete mode 100644 src/.NET/fix50/DontKnowTrade.cs delete mode 100644 src/.NET/fix50/Email.cs delete mode 100644 src/.NET/fix50/ExecutionAcknowledgement.cs delete mode 100644 src/.NET/fix50/ExecutionReport.cs delete mode 100644 src/.NET/fix50/IOI.cs delete mode 100644 src/.NET/fix50/ListCancelRequest.cs delete mode 100644 src/.NET/fix50/ListExecute.cs delete mode 100644 src/.NET/fix50/ListStatus.cs delete mode 100644 src/.NET/fix50/ListStatusRequest.cs delete mode 100644 src/.NET/fix50/ListStrikePrice.cs delete mode 100644 src/.NET/fix50/MarketDataIncrementalRefresh.cs delete mode 100644 src/.NET/fix50/MarketDataRequest.cs delete mode 100644 src/.NET/fix50/MarketDataRequestReject.cs delete mode 100644 src/.NET/fix50/MarketDataSnapshotFullRefresh.cs delete mode 100644 src/.NET/fix50/MassQuote.cs delete mode 100644 src/.NET/fix50/MassQuoteAcknowledgement.cs delete mode 100644 src/.NET/fix50/Message.cs delete mode 100644 src/.NET/fix50/MultilegOrderCancelReplace.cs delete mode 100644 src/.NET/fix50/NetworkCounterpartySystemStatusRequest.cs delete mode 100644 src/.NET/fix50/NetworkCounterpartySystemStatusResponse.cs delete mode 100644 src/.NET/fix50/NewOrderCross.cs delete mode 100644 src/.NET/fix50/NewOrderList.cs delete mode 100644 src/.NET/fix50/NewOrderMultileg.cs delete mode 100644 src/.NET/fix50/NewOrderSingle.cs delete mode 100644 src/.NET/fix50/News.cs delete mode 100644 src/.NET/fix50/OrderCancelReject.cs delete mode 100644 src/.NET/fix50/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix50/OrderCancelRequest.cs delete mode 100644 src/.NET/fix50/OrderMassCancelReport.cs delete mode 100644 src/.NET/fix50/OrderMassCancelRequest.cs delete mode 100644 src/.NET/fix50/OrderMassStatusRequest.cs delete mode 100644 src/.NET/fix50/OrderStatusRequest.cs delete mode 100644 src/.NET/fix50/PositionMaintenanceReport.cs delete mode 100644 src/.NET/fix50/PositionMaintenanceRequest.cs delete mode 100644 src/.NET/fix50/PositionReport.cs delete mode 100644 src/.NET/fix50/Quote.cs delete mode 100644 src/.NET/fix50/QuoteCancel.cs delete mode 100644 src/.NET/fix50/QuoteRequest.cs delete mode 100644 src/.NET/fix50/QuoteRequestReject.cs delete mode 100644 src/.NET/fix50/QuoteResponse.cs delete mode 100644 src/.NET/fix50/QuoteStatusReport.cs delete mode 100644 src/.NET/fix50/QuoteStatusRequest.cs delete mode 100644 src/.NET/fix50/RFQRequest.cs delete mode 100644 src/.NET/fix50/RegistrationInstructions.cs delete mode 100644 src/.NET/fix50/RegistrationInstructionsResponse.cs delete mode 100644 src/.NET/fix50/RequestForPositions.cs delete mode 100644 src/.NET/fix50/RequestForPositionsAck.cs delete mode 100644 src/.NET/fix50/SecurityDefinition.cs delete mode 100644 src/.NET/fix50/SecurityDefinitionRequest.cs delete mode 100644 src/.NET/fix50/SecurityDefinitionUpdateReport.cs delete mode 100644 src/.NET/fix50/SecurityList.cs delete mode 100644 src/.NET/fix50/SecurityListRequest.cs delete mode 100644 src/.NET/fix50/SecurityListUpdateReport.cs delete mode 100644 src/.NET/fix50/SecurityStatus.cs delete mode 100644 src/.NET/fix50/SecurityStatusRequest.cs delete mode 100644 src/.NET/fix50/SecurityTypeRequest.cs delete mode 100644 src/.NET/fix50/SecurityTypes.cs delete mode 100644 src/.NET/fix50/SettlementInstructionRequest.cs delete mode 100644 src/.NET/fix50/SettlementInstructions.cs delete mode 100644 src/.NET/fix50/TradeCaptureReport.cs delete mode 100644 src/.NET/fix50/TradeCaptureReportAck.cs delete mode 100644 src/.NET/fix50/TradeCaptureReportRequest.cs delete mode 100644 src/.NET/fix50/TradeCaptureReportRequestAck.cs delete mode 100644 src/.NET/fix50/TradingSessionList.cs delete mode 100644 src/.NET/fix50/TradingSessionListRequest.cs delete mode 100644 src/.NET/fix50/TradingSessionStatus.cs delete mode 100644 src/.NET/fix50/TradingSessionStatusRequest.cs delete mode 100644 src/.NET/fix50/UserRequest.cs delete mode 100644 src/.NET/fix50/UserResponse.cs delete mode 100644 src/.NET/fix50sp1/AdjustedPositionReport.cs delete mode 100644 src/.NET/fix50sp1/Advertisement.cs delete mode 100644 src/.NET/fix50sp1/AllocationInstruction.cs delete mode 100644 src/.NET/fix50sp1/AllocationInstructionAck.cs delete mode 100644 src/.NET/fix50sp1/AllocationInstructionAlert.cs delete mode 100644 src/.NET/fix50sp1/AllocationReport.cs delete mode 100644 src/.NET/fix50sp1/AllocationReportAck.cs delete mode 100644 src/.NET/fix50sp1/ApplicationMessageReport.cs delete mode 100644 src/.NET/fix50sp1/ApplicationMessageRequest.cs delete mode 100644 src/.NET/fix50sp1/ApplicationMessageRequestAck.cs delete mode 100644 src/.NET/fix50sp1/AssignmentReport.cs delete mode 100644 src/.NET/fix50sp1/BidRequest.cs delete mode 100644 src/.NET/fix50sp1/BidResponse.cs delete mode 100644 src/.NET/fix50sp1/BusinessMessageReject.cs delete mode 100644 src/.NET/fix50sp1/CollateralAssignment.cs delete mode 100644 src/.NET/fix50sp1/CollateralInquiry.cs delete mode 100644 src/.NET/fix50sp1/CollateralInquiryAck.cs delete mode 100644 src/.NET/fix50sp1/CollateralReport.cs delete mode 100644 src/.NET/fix50sp1/CollateralRequest.cs delete mode 100644 src/.NET/fix50sp1/CollateralResponse.cs delete mode 100644 src/.NET/fix50sp1/Confirmation.cs delete mode 100644 src/.NET/fix50sp1/ConfirmationAck.cs delete mode 100644 src/.NET/fix50sp1/ConfirmationRequest.cs delete mode 100644 src/.NET/fix50sp1/ContraryIntentionReport.cs delete mode 100644 src/.NET/fix50sp1/CrossOrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix50sp1/CrossOrderCancelRequest.cs delete mode 100644 src/.NET/fix50sp1/DerivativeSecurityList.cs delete mode 100644 src/.NET/fix50sp1/DerivativeSecurityListRequest.cs delete mode 100644 src/.NET/fix50sp1/DerivativeSecurityListUpdateReport.cs delete mode 100644 src/.NET/fix50sp1/DontKnowTrade.cs delete mode 100644 src/.NET/fix50sp1/Email.cs delete mode 100644 src/.NET/fix50sp1/ExecutionAcknowledgement.cs delete mode 100644 src/.NET/fix50sp1/ExecutionReport.cs delete mode 100644 src/.NET/fix50sp1/IOI.cs delete mode 100644 src/.NET/fix50sp1/ListCancelRequest.cs delete mode 100644 src/.NET/fix50sp1/ListExecute.cs delete mode 100644 src/.NET/fix50sp1/ListStatus.cs delete mode 100644 src/.NET/fix50sp1/ListStatusRequest.cs delete mode 100644 src/.NET/fix50sp1/ListStrikePrice.cs delete mode 100644 src/.NET/fix50sp1/MarketDataIncrementalRefresh.cs delete mode 100644 src/.NET/fix50sp1/MarketDataRequest.cs delete mode 100644 src/.NET/fix50sp1/MarketDataRequestReject.cs delete mode 100644 src/.NET/fix50sp1/MarketDataSnapshotFullRefresh.cs delete mode 100644 src/.NET/fix50sp1/MarketDefinition.cs delete mode 100644 src/.NET/fix50sp1/MarketDefinitionRequest.cs delete mode 100644 src/.NET/fix50sp1/MarketDefinitionUpdateReport.cs delete mode 100644 src/.NET/fix50sp1/MassQuote.cs delete mode 100644 src/.NET/fix50sp1/MassQuoteAcknowledgement.cs delete mode 100644 src/.NET/fix50sp1/Message.cs delete mode 100644 src/.NET/fix50sp1/MultilegOrderCancelReplace.cs delete mode 100644 src/.NET/fix50sp1/NetworkCounterpartySystemStatusRequest.cs delete mode 100644 src/.NET/fix50sp1/NetworkCounterpartySystemStatusResponse.cs delete mode 100644 src/.NET/fix50sp1/NewOrderCross.cs delete mode 100644 src/.NET/fix50sp1/NewOrderList.cs delete mode 100644 src/.NET/fix50sp1/NewOrderMultileg.cs delete mode 100644 src/.NET/fix50sp1/NewOrderSingle.cs delete mode 100644 src/.NET/fix50sp1/News.cs delete mode 100644 src/.NET/fix50sp1/OrderCancelReject.cs delete mode 100644 src/.NET/fix50sp1/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix50sp1/OrderCancelRequest.cs delete mode 100644 src/.NET/fix50sp1/OrderMassActionReport.cs delete mode 100644 src/.NET/fix50sp1/OrderMassActionRequest.cs delete mode 100644 src/.NET/fix50sp1/OrderMassCancelReport.cs delete mode 100644 src/.NET/fix50sp1/OrderMassCancelRequest.cs delete mode 100644 src/.NET/fix50sp1/OrderMassStatusRequest.cs delete mode 100644 src/.NET/fix50sp1/OrderStatusRequest.cs delete mode 100644 src/.NET/fix50sp1/PositionMaintenanceReport.cs delete mode 100644 src/.NET/fix50sp1/PositionMaintenanceRequest.cs delete mode 100644 src/.NET/fix50sp1/PositionReport.cs delete mode 100644 src/.NET/fix50sp1/Quote.cs delete mode 100644 src/.NET/fix50sp1/QuoteCancel.cs delete mode 100644 src/.NET/fix50sp1/QuoteRequest.cs delete mode 100644 src/.NET/fix50sp1/QuoteRequestReject.cs delete mode 100644 src/.NET/fix50sp1/QuoteResponse.cs delete mode 100644 src/.NET/fix50sp1/QuoteStatusReport.cs delete mode 100644 src/.NET/fix50sp1/QuoteStatusRequest.cs delete mode 100644 src/.NET/fix50sp1/RFQRequest.cs delete mode 100644 src/.NET/fix50sp1/RegistrationInstructions.cs delete mode 100644 src/.NET/fix50sp1/RegistrationInstructionsResponse.cs delete mode 100644 src/.NET/fix50sp1/RequestForPositions.cs delete mode 100644 src/.NET/fix50sp1/RequestForPositionsAck.cs delete mode 100644 src/.NET/fix50sp1/SecurityDefinition.cs delete mode 100644 src/.NET/fix50sp1/SecurityDefinitionRequest.cs delete mode 100644 src/.NET/fix50sp1/SecurityDefinitionUpdateReport.cs delete mode 100644 src/.NET/fix50sp1/SecurityList.cs delete mode 100644 src/.NET/fix50sp1/SecurityListRequest.cs delete mode 100644 src/.NET/fix50sp1/SecurityListUpdateReport.cs delete mode 100644 src/.NET/fix50sp1/SecurityStatus.cs delete mode 100644 src/.NET/fix50sp1/SecurityStatusRequest.cs delete mode 100644 src/.NET/fix50sp1/SecurityTypeRequest.cs delete mode 100644 src/.NET/fix50sp1/SecurityTypes.cs delete mode 100644 src/.NET/fix50sp1/SettlementInstructionRequest.cs delete mode 100644 src/.NET/fix50sp1/SettlementInstructions.cs delete mode 100644 src/.NET/fix50sp1/SettlementObligationReport.cs delete mode 100644 src/.NET/fix50sp1/TradeCaptureReport.cs delete mode 100644 src/.NET/fix50sp1/TradeCaptureReportAck.cs delete mode 100644 src/.NET/fix50sp1/TradeCaptureReportRequest.cs delete mode 100644 src/.NET/fix50sp1/TradeCaptureReportRequestAck.cs delete mode 100644 src/.NET/fix50sp1/TradingSessionList.cs delete mode 100644 src/.NET/fix50sp1/TradingSessionListRequest.cs delete mode 100644 src/.NET/fix50sp1/TradingSessionListUpdateReport.cs delete mode 100644 src/.NET/fix50sp1/TradingSessionStatus.cs delete mode 100644 src/.NET/fix50sp1/TradingSessionStatusRequest.cs delete mode 100644 src/.NET/fix50sp1/UserNotification.cs delete mode 100644 src/.NET/fix50sp1/UserRequest.cs delete mode 100644 src/.NET/fix50sp1/UserResponse.cs delete mode 100644 src/.NET/fix50sp2/AdjustedPositionReport.cs delete mode 100644 src/.NET/fix50sp2/Advertisement.cs delete mode 100644 src/.NET/fix50sp2/AllocationInstruction.cs delete mode 100644 src/.NET/fix50sp2/AllocationInstructionAck.cs delete mode 100644 src/.NET/fix50sp2/AllocationInstructionAlert.cs delete mode 100644 src/.NET/fix50sp2/AllocationReport.cs delete mode 100644 src/.NET/fix50sp2/AllocationReportAck.cs delete mode 100644 src/.NET/fix50sp2/ApplicationMessageReport.cs delete mode 100644 src/.NET/fix50sp2/ApplicationMessageRequest.cs delete mode 100644 src/.NET/fix50sp2/ApplicationMessageRequestAck.cs delete mode 100644 src/.NET/fix50sp2/AssignmentReport.cs delete mode 100644 src/.NET/fix50sp2/BidRequest.cs delete mode 100644 src/.NET/fix50sp2/BidResponse.cs delete mode 100644 src/.NET/fix50sp2/BusinessMessageReject.cs delete mode 100644 src/.NET/fix50sp2/CollateralAssignment.cs delete mode 100644 src/.NET/fix50sp2/CollateralInquiry.cs delete mode 100644 src/.NET/fix50sp2/CollateralInquiryAck.cs delete mode 100644 src/.NET/fix50sp2/CollateralReport.cs delete mode 100644 src/.NET/fix50sp2/CollateralRequest.cs delete mode 100644 src/.NET/fix50sp2/CollateralResponse.cs delete mode 100644 src/.NET/fix50sp2/Confirmation.cs delete mode 100644 src/.NET/fix50sp2/ConfirmationAck.cs delete mode 100644 src/.NET/fix50sp2/ConfirmationRequest.cs delete mode 100644 src/.NET/fix50sp2/ContraryIntentionReport.cs delete mode 100644 src/.NET/fix50sp2/CrossOrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix50sp2/CrossOrderCancelRequest.cs delete mode 100644 src/.NET/fix50sp2/DerivativeSecurityList.cs delete mode 100644 src/.NET/fix50sp2/DerivativeSecurityListRequest.cs delete mode 100644 src/.NET/fix50sp2/DerivativeSecurityListUpdateReport.cs delete mode 100644 src/.NET/fix50sp2/DontKnowTrade.cs delete mode 100644 src/.NET/fix50sp2/Email.cs delete mode 100644 src/.NET/fix50sp2/ExecutionAcknowledgement.cs delete mode 100644 src/.NET/fix50sp2/ExecutionReport.cs delete mode 100644 src/.NET/fix50sp2/IOI.cs delete mode 100644 src/.NET/fix50sp2/ListCancelRequest.cs delete mode 100644 src/.NET/fix50sp2/ListExecute.cs delete mode 100644 src/.NET/fix50sp2/ListStatus.cs delete mode 100644 src/.NET/fix50sp2/ListStatusRequest.cs delete mode 100644 src/.NET/fix50sp2/ListStrikePrice.cs delete mode 100644 src/.NET/fix50sp2/MarketDataIncrementalRefresh.cs delete mode 100644 src/.NET/fix50sp2/MarketDataRequest.cs delete mode 100644 src/.NET/fix50sp2/MarketDataRequestReject.cs delete mode 100644 src/.NET/fix50sp2/MarketDataSnapshotFullRefresh.cs delete mode 100644 src/.NET/fix50sp2/MarketDefinition.cs delete mode 100644 src/.NET/fix50sp2/MarketDefinitionRequest.cs delete mode 100644 src/.NET/fix50sp2/MarketDefinitionUpdateReport.cs delete mode 100644 src/.NET/fix50sp2/MassQuote.cs delete mode 100644 src/.NET/fix50sp2/MassQuoteAcknowledgement.cs delete mode 100644 src/.NET/fix50sp2/Message.cs delete mode 100644 src/.NET/fix50sp2/MultilegOrderCancelReplace.cs delete mode 100644 src/.NET/fix50sp2/NetworkCounterpartySystemStatusRequest.cs delete mode 100644 src/.NET/fix50sp2/NetworkCounterpartySystemStatusResponse.cs delete mode 100644 src/.NET/fix50sp2/NewOrderCross.cs delete mode 100644 src/.NET/fix50sp2/NewOrderList.cs delete mode 100644 src/.NET/fix50sp2/NewOrderMultileg.cs delete mode 100644 src/.NET/fix50sp2/NewOrderSingle.cs delete mode 100644 src/.NET/fix50sp2/News.cs delete mode 100644 src/.NET/fix50sp2/OrderCancelReject.cs delete mode 100644 src/.NET/fix50sp2/OrderCancelReplaceRequest.cs delete mode 100644 src/.NET/fix50sp2/OrderCancelRequest.cs delete mode 100644 src/.NET/fix50sp2/OrderMassActionReport.cs delete mode 100644 src/.NET/fix50sp2/OrderMassActionRequest.cs delete mode 100644 src/.NET/fix50sp2/OrderMassCancelReport.cs delete mode 100644 src/.NET/fix50sp2/OrderMassCancelRequest.cs delete mode 100644 src/.NET/fix50sp2/OrderMassStatusRequest.cs delete mode 100644 src/.NET/fix50sp2/OrderStatusRequest.cs delete mode 100644 src/.NET/fix50sp2/PositionMaintenanceReport.cs delete mode 100644 src/.NET/fix50sp2/PositionMaintenanceRequest.cs delete mode 100644 src/.NET/fix50sp2/PositionReport.cs delete mode 100644 src/.NET/fix50sp2/Quote.cs delete mode 100644 src/.NET/fix50sp2/QuoteCancel.cs delete mode 100644 src/.NET/fix50sp2/QuoteRequest.cs delete mode 100644 src/.NET/fix50sp2/QuoteRequestReject.cs delete mode 100644 src/.NET/fix50sp2/QuoteResponse.cs delete mode 100644 src/.NET/fix50sp2/QuoteStatusReport.cs delete mode 100644 src/.NET/fix50sp2/QuoteStatusRequest.cs delete mode 100644 src/.NET/fix50sp2/RFQRequest.cs delete mode 100644 src/.NET/fix50sp2/RegistrationInstructions.cs delete mode 100644 src/.NET/fix50sp2/RegistrationInstructionsResponse.cs delete mode 100644 src/.NET/fix50sp2/RequestForPositions.cs delete mode 100644 src/.NET/fix50sp2/RequestForPositionsAck.cs delete mode 100644 src/.NET/fix50sp2/SecurityDefinition.cs delete mode 100644 src/.NET/fix50sp2/SecurityDefinitionRequest.cs delete mode 100644 src/.NET/fix50sp2/SecurityDefinitionUpdateReport.cs delete mode 100644 src/.NET/fix50sp2/SecurityList.cs delete mode 100644 src/.NET/fix50sp2/SecurityListRequest.cs delete mode 100644 src/.NET/fix50sp2/SecurityListUpdateReport.cs delete mode 100644 src/.NET/fix50sp2/SecurityStatus.cs delete mode 100644 src/.NET/fix50sp2/SecurityStatusRequest.cs delete mode 100644 src/.NET/fix50sp2/SecurityTypeRequest.cs delete mode 100644 src/.NET/fix50sp2/SecurityTypes.cs delete mode 100644 src/.NET/fix50sp2/SettlementInstructionRequest.cs delete mode 100644 src/.NET/fix50sp2/SettlementInstructions.cs delete mode 100644 src/.NET/fix50sp2/SettlementObligationReport.cs delete mode 100644 src/.NET/fix50sp2/StreamAssignmentReport.cs delete mode 100644 src/.NET/fix50sp2/StreamAssignmentReportACK.cs delete mode 100644 src/.NET/fix50sp2/StreamAssignmentRequest.cs delete mode 100644 src/.NET/fix50sp2/TradeCaptureReport.cs delete mode 100644 src/.NET/fix50sp2/TradeCaptureReportAck.cs delete mode 100644 src/.NET/fix50sp2/TradeCaptureReportRequest.cs delete mode 100644 src/.NET/fix50sp2/TradeCaptureReportRequestAck.cs delete mode 100644 src/.NET/fix50sp2/TradingSessionList.cs delete mode 100644 src/.NET/fix50sp2/TradingSessionListRequest.cs delete mode 100644 src/.NET/fix50sp2/TradingSessionListUpdateReport.cs delete mode 100644 src/.NET/fix50sp2/TradingSessionStatus.cs delete mode 100644 src/.NET/fix50sp2/TradingSessionStatusRequest.cs delete mode 100644 src/.NET/fix50sp2/UserNotification.cs delete mode 100644 src/.NET/fix50sp2/UserRequest.cs delete mode 100644 src/.NET/fix50sp2/UserResponse.cs delete mode 100644 src/.NET/fixt11/Heartbeat.cs delete mode 100644 src/.NET/fixt11/Logon.cs delete mode 100644 src/.NET/fixt11/Logout.cs delete mode 100644 src/.NET/fixt11/Message.cs delete mode 100644 src/.NET/fixt11/Reject.cs delete mode 100644 src/.NET/fixt11/ResendRequest.cs delete mode 100644 src/.NET/fixt11/SequenceReset.cs delete mode 100644 src/.NET/fixt11/TestRequest.cs delete mode 100644 src/.NET/quickfix_net.cpp delete mode 100644 src/.NET/quickfix_net.h delete mode 100644 src/.NET/quickfix_net.sln delete mode 100644 src/.NET/quickfix_net.snk delete mode 100644 src/.NET/quickfix_net_messages.snk delete mode 100644 src/.NET/quickfix_net_messages_vs10.csproj delete mode 100644 src/.NET/quickfix_net_messages_vs11.vcxproj delete mode 100644 src/.NET/quickfix_net_messages_vs7.csproj delete mode 100644 src/.NET/quickfix_net_messages_vs8.csproj delete mode 100644 src/.NET/quickfix_net_messages_vs9.csproj delete mode 100644 src/.NET/quickfix_net_vs10.vcxproj delete mode 100644 src/.NET/quickfix_net_vs11.vcxproj delete mode 100644 src/.NET/quickfix_net_vs7.vcproj delete mode 100644 src/.NET/quickfix_net_vs8.vcproj delete mode 100644 src/.NET/quickfix_net_vs9.vcproj delete mode 100644 src/.NET/test/SessionSettingsTest.cs create mode 100644 src/C++/quickfix_vs11.vcxproj.filters create mode 100644 src/C++/quickfix_vs12.vcxproj create mode 100644 src/C++/quickfix_vs12.vcxproj.filters delete mode 100644 src/C++/quickfix_vs9.vcproj create mode 100644 src/ruby/.gitignore delete mode 100644 src/test_acceptance_net_vs10.csproj delete mode 100644 src/test_acceptance_net_vs11.vcxproj delete mode 100644 src/test_acceptance_net_vs7.csproj delete mode 100644 src/test_acceptance_net_vs8.csproj delete mode 100644 src/test_acceptance_net_vs9.csproj create mode 100644 src/test_acceptance_vs12.vcxproj delete mode 100644 src/test_acceptance_vs7.vcproj delete mode 100644 src/test_acceptance_vs8.vcproj delete mode 100644 src/test_acceptance_vs9.vcproj delete mode 100644 src/test_net_unit_vs8/Class1.cs delete mode 100644 src/test_net_unit_vs8/Properties/AssemblyInfo.cs delete mode 100644 src/test_net_unit_vs8/test_net_unit_vs8.csproj delete mode 100644 src/test_performance_net_vs10.csproj delete mode 100644 src/test_performance_net_vs11.vcxproj delete mode 100644 src/test_performance_net_vs7.csproj delete mode 100644 src/test_performance_net_vs8.csproj delete mode 100644 src/test_performance_net_vs9.csproj create mode 100644 src/test_performance_vs12.vcxproj delete mode 100644 src/test_performance_vs7.vcproj delete mode 100644 src/test_performance_vs8.vcproj delete mode 100644 src/test_performance_vs9.vcproj delete mode 100644 src/test_unit_net_vs10.csproj delete mode 100644 src/test_unit_net_vs11.vcxproj delete mode 100644 src/test_unit_net_vs8.csproj delete mode 100644 src/test_unit_net_vs9.csproj create mode 100644 src/test_unit_vs12.vcxproj delete mode 100644 src/test_unit_vs7.vcproj delete mode 100644 src/test_unit_vs8.vcproj delete mode 100644 src/test_unit_vs9.vcproj create mode 100644 test/atrun/test_acceptance_runner_vs12.vcxproj delete mode 100644 test/runat_net.bat delete mode 100644 test/runpt_net.bat diff --git a/.gitignore b/.gitignore index 8f490aa4a..4fe355a1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,11 @@ +debug +release +*.user +*.sdf +*.opensdf +*.suo *~ +*.lib *.lo *.in Makefile @@ -9,6 +16,10 @@ Makefile *.o *.d *.a +.libs +*.la +*.so +*.dylib ChangeLog UnitTest++/TestUnitTest++ aclocal.m4 @@ -25,4 +36,24 @@ m4/ltversion.m4 m4/lt~obsolete.m4 quickfix.pc stamp-h1 - +bin/executor +bin/ordermatch +bin/tradeclient +examples/executor/C++/executor +examples/ordermatch/ordermatch +examples/ordermatch/test/ordermatch_ut +examples/tradeclient/tradeclient +include/ +src/at +src/pt +src/ut +test/at +test/pt +test/ut +test/ut_debug +test/cfg +test/store +autom4te.cache/ +lib/python +COPYING +INSTALL \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..669f13781 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: cpp + +compiler: + - gcc + - clang + +before_script: + - sudo apt-get install libxml2-dev + - ./bootstrap + +script: ./configure && make && make check \ No newline at end of file diff --git a/CONTRIBUTORS b/CONTRIBUTORS deleted file mode 100644 index 3a5d9d41b..000000000 --- a/CONTRIBUTORS +++ /dev/null @@ -1,27 +0,0 @@ -Oren Miller -John Duncan -Bill Caputo -John Didion -Pat Gremo -Stancescu Constantin -Gene Gorokhovsky -Nicholas Palmer -Alex Hornby -Daniel May -Joerg Thoennes -Heri Steuer -Timothy Yates -Anne Lewis -Vladimir Arnost -Brendan B. Boerner -Robert Bill -Caleb Epstein -Kritstopher Peterson -Vladimir Arnost -Brian Erst -Alexey Zubko -Kyle Consalus -Mike Gatny -Rich Holm -Brian Crowell -Viktor Pogrebnyak \ No newline at end of file diff --git a/COPYING b/COPYING deleted file mode 100644 index 3e2c921eb..000000000 --- a/COPYING +++ /dev/null @@ -1 +0,0 @@ -See the LICENSE file. diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 36a10f68a..000000000 --- a/INSTALL +++ /dev/null @@ -1 +0,0 @@ -For installation instructions and documentation, refer to doc/html/index.html diff --git a/LICENSE b/LICENSE index 1c5ee7012..a67d5be5d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,6 @@ The QuickFIX Software License, Version 1.0 -Copyright (c) 2001-2010 quickfixengine.org All rights -reserved. +Copyright (c) 2001-2014 Oren Miller Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/Makefile.am b/Makefile.am index c768ccc83..6b5f39eda 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,3 +6,7 @@ ACLOCAL_AMFLAGS = -I m4 pkgconfdir=$(libdir)/pkgconfig pkgconf_DATA = quickfix.pc + +generate: + cd spec && bash generate.sh + diff --git a/NEWS b/NEWS index febf419ef..e6bcb621d 100644 --- a/NEWS +++ b/NEWS @@ -1,8 +1,39 @@ +1.14.3 +------ +Fixed buck in SocketConnection where recv result stored in signed value. + +Added ruby api to RubyGems. + +All Python and Ruby tests pass again. + +1.14.2 +------ +Test for std::shared_ptr and std::tr1::shared_ptr. Allows us to compile on +gcc 4.1-4.2, and with anaconda python. + +Distribute FIX specs with pip package. + +Use all detected compiler flags when building ruby native library. + +1.14.1 +------ +Replaced libxml2 and MSXML dependencies with embedded pugixml. + +Fixed all warnings from -Wshorten-64-to-32. + +Added python api to PyPi. Can be installed with 'pip install quickfix'. + +Fixed memory leak in SessionFactory when creating DataDictionaries. +shared_ptr is used to track the objects so we don't have to. + 1.14.0 ------ Major performance improvement sending/receiving messages. Thanks to Viktor Pogrebnyak for a great patch. +Added getFieldIfSet and getIfSet methods. No longer need to check for a +field and pull it out in two steps. + UseLocalTime=Y works again. Improvement in how DataDictionaries are initialized makes starting up with @@ -17,6 +48,12 @@ fields on incoming messages. Accept the message anyway. A wild free for all. Added FIX 5.0 sp1 and sp2 support to MessageCracker. +SocketReuseAddress, SocketNoDelay, SocketSendBufferSize, and SocketReceiveBufferSize +config settings can be overriden on a per session basis. + +Field containing number of groups will be removed if all instances of +a group are removed from the message. + SocketConnection would block other sessions if it was unable to connect immediately. Brian Crowell submitted a patch that makes the connection call non-blocking. @@ -73,6 +110,12 @@ Fixed/standardized various issues with python library deployment. If session is disabled, it will immediately disconnect without sending any messages. +Added support for visual studio 11 and 12. + +Removed C# library. Use QuickFIX/n. + +Ruby API works with ruby 1.9.x + 1.13.3 ------ Added support for FIX 5.0 sp1 and sp2 diff --git a/OptionalSettings_vs9.vsprops b/OptionalSettings_vs9.vsprops deleted file mode 100644 index 1dd982051..000000000 --- a/OptionalSettings_vs9.vsprops +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - diff --git a/THANKS b/THANKS deleted file mode 100644 index e43086be9..000000000 --- a/THANKS +++ /dev/null @@ -1,12 +0,0 @@ -Jim Downs -Chris Charlier -Jim Northey -Roy Singham -Dan Goodwin -Kyle Ragsdale -Pat Sarnacke -Lenny Shleymovich -Benjamin Blair -Pavel Zeldin -Bill Adelman -John Lopez \ No newline at end of file diff --git a/UnitTest++/Makefile b/UnitTest++/Makefile index b2a27f42e..ffea31ee8 100644 --- a/UnitTest++/Makefile +++ b/UnitTest++/Makefile @@ -1,5 +1,5 @@ CXX = g++ -CXXFLAGS ?= -g -O0 -Wall -W -Winline -ansi +CXXFLAGS ?= -g -O0 -Wall -W -Winline -Wno-unused-private-field -Wno-overloaded-virtual -ansi LDFLAGS ?= SED = sed MV = mv diff --git a/UnitTest++/UnitTest++_vs10.vcxproj b/UnitTest++/UnitTest++_vs10.vcxproj index 87eb9b859..e01412079 100644 --- a/UnitTest++/UnitTest++_vs10.vcxproj +++ b/UnitTest++/UnitTest++_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -12,7 +12,7 @@ {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} - UnitTestVS10 + UnitTest Win32Proj UnitTest++_vs10 diff --git a/UnitTest++/UnitTest++_vs11.vcxproj b/UnitTest++/UnitTest++_vs11.vcxproj index 1eb06d15c..a72d82c03 100644 --- a/UnitTest++/UnitTest++_vs11.vcxproj +++ b/UnitTest++/UnitTest++_vs11.vcxproj @@ -20,7 +20,7 @@ {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} - UnitTestVS10 + UnitTest Win32Proj UnitTest++_vs11 diff --git a/UnitTest++/UnitTest++_vs12.vcxproj b/UnitTest++/UnitTest++_vs12.vcxproj new file mode 100644 index 000000000..b3b7f1aa2 --- /dev/null +++ b/UnitTest++/UnitTest++_vs12.vcxproj @@ -0,0 +1,122 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} + UnitTest + Win32Proj + UnitTest++_vs12 + + + + StaticLibrary + Unicode + false + v120 + + + StaticLibrary + Unicode + v120 + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)lib\debug\ + obj\$(ProjectName)\$(Configuration)\ + $(SolutionDir)lib\ + obj\$(ProjectName)\$(Configuration)\ + + + + Disabled + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + Async + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + EditAndContinue + + + + + MinSpace + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + Async + MultiThreadedDLL + + + Level4 + ProgramDatabase + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/run_executor_csharp.bat b/bin/run_executor_csharp.bat deleted file mode 100755 index 728c50d73..000000000 --- a/bin/run_executor_csharp.bat +++ /dev/null @@ -1 +0,0 @@ -release\executor_csharp\executor_csharp.exe cfg\executor.cfg \ No newline at end of file diff --git a/bin/run_executor_csharp_debug.bat b/bin/run_executor_csharp_debug.bat deleted file mode 100755 index 11a926569..000000000 --- a/bin/run_executor_csharp_debug.bat +++ /dev/null @@ -1 +0,0 @@ -debug\executor_csharp\executor_csharp.exe cfg\executor.cfg \ No newline at end of file diff --git a/bin/run_executor_vbnet.bat b/bin/run_executor_vbnet.bat deleted file mode 100755 index e2e52ea1f..000000000 --- a/bin/run_executor_vbnet.bat +++ /dev/null @@ -1 +0,0 @@ -release\executor_vbnet\executor_vbnet.exe cfg\executor.cfg \ No newline at end of file diff --git a/bin/run_executor_vbnet_debug.bat b/bin/run_executor_vbnet_debug.bat deleted file mode 100755 index 68b4a1cd4..000000000 --- a/bin/run_executor_vbnet_debug.bat +++ /dev/null @@ -1 +0,0 @@ -debug\executor_vbnet\executor_vbnet.exe cfg\executor.cfg \ No newline at end of file diff --git a/bootstrap b/bootstrap index 72aba10da..3ccac1d7e 100755 --- a/bootstrap +++ b/bootstrap @@ -5,8 +5,9 @@ mkdir config touch README NEWS AUTHORS INSTALL ChangeLog set -ex -# work around issue where autoreconf on rhel/centos 5.7 does not always run this -case `uname` in Darwin*) glibtoolize ;; *) libtoolize ;; esac +case `uname` in Darwin*) glibtoolize --copy ;; + *) libtoolize --copy ;; esac + autoreconf -i -Wall,no-obsolete rm -rf autom4te.cache config.h.in~ set +ex diff --git a/build_java.bat b/build_java.bat deleted file mode 100644 index e0da913e6..000000000 --- a/build_java.bat +++ /dev/null @@ -1,9 +0,0 @@ -echo off -set COMMAND=%1 - -pushd examples\tradeclientgui\banzai -call build.bat %COMMAND% -popd -if ERRORLEVEL 1 goto quit - -:quit diff --git a/build_vs10.bat b/build_vs10.bat index 9974e13a3..a1d077ca7 100644 --- a/build_vs10.bat +++ b/build_vs10.bat @@ -1,15 +1,13 @@ -echo off -set COMMAND=%1 - -set PROFILE=%2 +echo off -set VSPATH=%3 - -if "%1" == "" set COMMAND=build - -if "%2" == "" set PROFILE=Release +set TARGET=%1 +set CONFIGURATION=%2 +set NET_VERSION=%3 -devenv quickfix_vs10.sln /%COMMAND% %PROFILE% - -if ERRORLEVEL 1 goto quit -:quit +if "%1" == "" set TARGET=Build +if "%2" == "" set CONFIGURATION=Release +if "%3" == "" set NET_VERSION=v4.5 + +set BUILD_CMD=MSBuild.exe quickfix_vs10.sln /t:%TARGET% /p:Configuration=%CONFIGURATION%;TargetFrameworkVersion=%NET_VERSION% +echo Build command: %BUILD_CMD% +%BUILD_CMD% \ No newline at end of file diff --git a/build_vs11.bat b/build_vs11.bat index b0a1c8dc4..b0d99a8d7 100644 --- a/build_vs11.bat +++ b/build_vs11.bat @@ -4,7 +4,7 @@ set TARGET=%1 set CONFIGURATION=%2 set NET_VERSION=%3 -if "%1" == "" set TARGET=Rebuild +if "%1" == "" set TARGET=Build if "%2" == "" set CONFIGURATION=Release if "%3" == "" set NET_VERSION=v4.5 diff --git a/build_vs12.bat b/build_vs12.bat new file mode 100644 index 000000000..1090adbe0 --- /dev/null +++ b/build_vs12.bat @@ -0,0 +1,13 @@ +echo off + +set TARGET=%1 +set CONFIGURATION=%2 +set NET_VERSION=%3 + +if "%1" == "" set TARGET=Build +if "%2" == "" set CONFIGURATION=Release +if "%3" == "" set NET_VERSION=v4.5 + +set BUILD_CMD=MSBuild.exe quickfix_vs12.sln /t:%TARGET% /p:Configuration=%CONFIGURATION%;TargetFrameworkVersion=%NET_VERSION% +echo Build command: %BUILD_CMD% +%BUILD_CMD% \ No newline at end of file diff --git a/build_vs7.bat b/build_vs7.bat deleted file mode 100755 index c0e469e7a..000000000 --- a/build_vs7.bat +++ /dev/null @@ -1,8 +0,0 @@ -echo off -set COMMAND=%1 -set PROFILE=%2 -if "%1" == "" set COMMAND=build -if "%2" == "" set PROFILE=Release -devenv quickfix_vs7.sln /%COMMAND% %PROFILE% -if ERRORLEVEL 1 goto quit -:quit \ No newline at end of file diff --git a/build_vs8.bat b/build_vs8.bat deleted file mode 100755 index 4913a78a5..000000000 --- a/build_vs8.bat +++ /dev/null @@ -1,6 +0,0 @@ -echo off -set COMMAND=%1 -set PROFILE=%2 -if "%1" == "" set COMMAND=build -if "%2" == "" set PROFILE=Release -devenv quickfix_vs8.sln /%COMMAND% %PROFILE% diff --git a/build_vs9.bat b/build_vs9.bat deleted file mode 100644 index 6c739bec8..000000000 --- a/build_vs9.bat +++ /dev/null @@ -1,16 +0,0 @@ -echo off -set COMMAND=%1 - -set PROFILE=%2 - -set VSPATH=%3 - -if "%1" == "" set COMMAND=build - -if "%2" == "" set PROFILE=Release - -devenv quickfix_vs9.sln /%COMMAND% %PROFILE% - -if ERRORLEVEL 1 goto quit - -:quit diff --git a/configure.ac b/configure.ac index 927594195..8b2631e34 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.59]) -AC_INIT([QuickFIX], [1.14.0], [ask@quickfixengine.org]) +AC_INIT([QuickFIX], [1.14.3], [ask@quickfixengine.org]) AC_CONFIG_MACRO_DIR([m4]) m4_include([m4/ax_sso.m4]) m4_include([m4/ax_lib_mysql.m4]) @@ -41,30 +41,13 @@ AX_PYTHON() AX_RUBY() AX_JAVA() -######################################## -# CALLSTACK -######################################## -use_callstack=no -AC_ARG_ENABLE(callstack, - [ --enable-callstack display c++ call stack after crashing], - [use_callstack=$enableval], - use_callstack=no -) - -if test $use_callstack = yes -then - AC_DEFINE(ENABLE_CALLSTACK, 1, - Define if you want a C++ callstack to be displayed after crashing) -fi -######################################## - # libs -LIBS="$STLPORT_LIBS $XML_LIBS $MYSQL_LIBS $POSTGRESQL_LIBS $TBB_LIBS $BOOST_LIBS $LIBS" +LIBS="$STLPORT_LIBS $XML_LIBS $MYSQL_LIBS $POSTGRESQL_LDFLAGS $TBB_LIBS $BOOST_LIBS $LIBS" # gcc flags if test `uname` == SunOS; then SHAREDFLAGS="$TBB_CFLAGS $BOOST_CFLAGS $STLPORT_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS $XML_CPPFLAGS $XML_CFLAGS $JAVA_CFLAGS $PYTHON_CFLAGS $RUBY_CFLAGS" else - SHAREDFLAGS="-Wall -ansi -Wpointer-arith -Wwrite-strings $TBB_CFLAGS $BOOST_CFLAGS $STLPORT_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS $XML_CPPFLAGS $XML_CFLAGS $PYTHON_CFLAGS $RUBY_CFLAGS" + SHAREDFLAGS="-Wall -ansi -Wpointer-arith -Wwrite-strings -Wno-overloaded-virtual $TBB_CFLAGS $BOOST_CFLAGS $STLPORT_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS $XML_CPPFLAGS $XML_CFLAGS $PYTHON_CFLAGS $RUBY_CFLAGS" fi CFLAGS="$CFLAGS $SHAREDFLAGS" @@ -204,6 +187,24 @@ AC_TRY_COMPILE( The system has gethostbyname_r which takes a result as a pass-in param), AC_MSG_RESULT(no)) +AC_MSG_CHECKING(for std::tr1::shared_ptr) +AC_TRY_COMPILE( + [#include ], + [std::tr1::shared_ptr ptr;], + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_STD_TR1_SHARED_PTR, 1, + The system supports std::tr1::shared_ptr), + AC_MSG_RESULT(no)) + +AC_MSG_CHECKING(for std::shared_ptr) +AC_TRY_COMPILE( + [#include ], + [std::shared_ptr ptr;], + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_STD_SHARED_PTR, 1, + The system supports std::shared_ptr), + AC_MSG_RESULT(no)) + # check for SSO AX_SSO_CHECK() diff --git a/doc/Doxyfile b/doc/Doxyfile index 6a4d411eb..43bd6954b 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -106,7 +106,7 @@ INLINE_INHERITED_MEMB = NO # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. -FULL_PATH_NAMES = YES +FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is @@ -378,7 +378,7 @@ SHOW_USED_FILES = YES # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. -SHOW_DIRECTORIES = YES +SHOW_DIRECTORIES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the @@ -489,6 +489,7 @@ EXCLUDE_PATTERNS = ConfigLexer.cpp \ FlexLexer.h \ FIX*.* \ stdafx.h \ + stdafx.cpp \ config.h \ strptime.h diff --git a/doc/document.bat b/doc/document.bat index 2b4a898ed..8e685c780 100755 --- a/doc/document.bat +++ b/doc/document.bat @@ -1,2 +1,4 @@ javadoc -D html\javadoc ..\src\java\src\quickfix\*.java doxygen + +copy doxygen.css html \ No newline at end of file diff --git a/doc/document.sh b/doc/document.sh index c9f528c72..f6be9a47d 100755 --- a/doc/document.sh +++ b/doc/document.sh @@ -1,5 +1,8 @@ #!/bin/bash + WHICH_DOXYGEN=$(which doxygen) if [ $? == 0 ] ; then doxygen fi + +cp doxygen.css html \ No newline at end of file diff --git a/doc/doxygen.css b/doc/doxygen.css new file mode 100644 index 000000000..aabfd886c --- /dev/null +++ b/doc/doxygen.css @@ -0,0 +1,952 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin-top: 30px; + margin-bottom: 30px; + margin-left: 100px; + margin-right: 100px; +} + +div.contents { + margin-top: 10px; + margin-left: 8px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } + pre.fragment + { + overflow: visible; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + } +} + diff --git a/doc/html/.gitignore b/doc/html/.gitignore new file mode 100644 index 000000000..7900b138e --- /dev/null +++ b/doc/html/.gitignore @@ -0,0 +1,21 @@ +*.js +*.map +*_*.html +index*.html +struct*.html +class_*.html +namespace*.html +functions*.html +annotated.html +classes.html +files.html +hierarchy.html +inherits.html +modules.html +globals.html +globals_defs.html +graph_legend.html +group__user.html +tabs.css +doxygen.css +installdox diff --git a/doc/html/FAQ.html b/doc/html/FAQ.html deleted file mode 100644 index 899d859a6..000000000 --- a/doc/html/FAQ.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - FAQ -

FAQ

- -

- Building -

-

-

- Running -

-

- -

Building

- - Why does my IDE mysteriously dissapear when I browse QuickFIX in MSDEV?
- Microsoft Visual Studio 6's Statement completion options do not play very well with C++ templates. - You can resolve this issues simply by turning this feature off. Do this by going to the - Tools->Options menu. Under the Editor tab, uncheck all the Statement completion - options. - -

-
- When building QuickFIX with gcc, the compiler complains it cannot find <sstream>
- Some earlier versions of gcc were not supplied with the sstream include file. You can get it -
here - -

- - After running make on *nix, I get an error that says libtool: ltconfig version `' does not match ltmain.sh version `1.3.5'
- Run the ./bootstrap script, then run ./configure and make again. - -

-
- During compilation, the compiler has errors in MessageValidator.cpp pertaining to the xml code.
- Older versions of QuickFIX did not search for libxml in the configure script. Check to make sure that libxml is installed - and that the correct include and library directories are being passed into the compiler. You may have to - modify the configure.in file to do this. - -

-
- Can I build quickfix on *nix with a compiler other than gcc?
- Probably. We have been able to compile it with icc as well. You can always verify your compilation - by running the suite of unit and acceptance tests against your build. - -

-
- The ./configure script fails or make fails.
- Run the ./bootstrap script, then run ./configure and make again. - -

Running

-
- When trying to connect to a FIX engine running on another machine, QuickFIX immediately drops the connection when it receives a logon.
- Chances are the clocks on the machines are not synchronized. Either synchronize the clocks - or use the CheckLatency and MaxLatency settings to allow the processing of older messages. - -

-
- QuickFIX seems very unstable on a multiprocessor machine.
- If you are using gcc 2.95.x, you need to use another STL library like -
STLport - -

- - When running my application under *nix, it crashes with a segmentation fault.
- Make sure you have exceptions enabled with the -fexceptions flag. Also make sure you - are catching any exceptions which need to be handled. QuickFIX does make use of the throw - specifier in all function definitions which throw exceptions. If you are still having problems, - verify that you are using the latest stable release of gcc. Some earlier versions have severe bugs - with exception handling. - -

-
- My QuickFIX application crashed immediately on startup when using a DataDictionary.
- Older versions of QuickFIX crash if the DataDictionary is poorly formed XML. Check for errors - in your data dictionary. This was fixed in 1.6. - -

-
- QuickFIX is dropping messages with repeating groups when not using a DataDictionary.
- Older versions of QuickFIX could not tell the difference between garbled messages and - these messages. Make sure you are using a DataDictionary if you intend on receiving - repeating groups. Newer versions will accept these messages and send proper rejects. - -

-
- Why does getGroup throw an exception? I know the group is there!
- Repeating groups are not 0 based, they are 1 based. Make sure you start with 1 when pulling - groups out of a message. - -

-
- How can I append fields to the Logon message?
- Before an administrative message is sent, it makes it's way through the toAdmin callback. This - gives you the opportunity to modify the message in any way you like. Here you can add things like - passwords or other fields a counterparty may require. This can be done for any message, including - application messages via the toApp callback. - - - diff --git a/doc/html/about.html b/doc/html/about.html deleted file mode 100644 index 0d6a63bdf..000000000 --- a/doc/html/about.html +++ /dev/null @@ -1,33 +0,0 @@ - - - About QuickFIX -

About QuickFIX

- - - -

- If you have downloaded this package, you are probably already aware of what FIX is. If not, - this simple explanation from the FIX protocol organizaion should give you enough background. - -

The Financial Information Exchange (FIX) Protocol is a message standard developed - to facilitate the electronic exchange of information related to securities transactions. - It is intended for use between trading partners wishing to automate communications.
- - That being said, the purpose of FIX is to make communication between financial vendors trivial, - leaving them to focus on their core business. The FIX organization also specifically cites that - openness has been key to their success. QuickFIX intends on expanding the openness of FIX into - not just the specification of, but also the implementation of the protocol. -

-

- So what is QuickFIX? Simple. QuickFIX is a free and open source implementation of the FIX - protocol. QuickFIX is not crippled, all of the source is open for all supported - versions of FIX. There is no upgrade to a commercial version. -

-

- It is our hope that the trading community will work together to help lower the barrier in doing - business with each other. QuickFIX is a step in that direction. -

- --Oren Miller oren@quickfixengine.org -

- - diff --git a/doc/html/acceptance_tests.html b/doc/html/acceptance_tests.html index 3ef961398..68369f1f9 100644 --- a/doc/html/acceptance_tests.html +++ b/doc/html/acceptance_tests.html @@ -1,87 +1,109 @@ - + - - Acceptance Tests -

Acceptance Tests

- - - -

- QuickFIX also has a scriptable test runner that comes with a series of automated acceptance test. - The basic tests that come with QuickFIX are based off of the - FIX Session-level Test Cases and Expected Behaviors document produced by the FIX protocol organization. - These tests verify that QuickFIX adheres to the FIX specifications. The automated nature of these tests - guarantees that future releases of QuickFIX will not break any current functionality. -

-

- Perhaps even more importantly is how these test are used to drive the development of QuickFIX. Before a - line of code is written in support of a protocol feature, one of these tests is written. This test - first approach sets up a goal for developers who will have objective verification that they correctly - implemented the standard. -

-

- Below is an example of a test script that tests the engines behavior when it receives a NewSeqNo value - that is less than the expected MsgSeqNum. -

-
-  iCONNECT
-  I8=FIX.4.235=A34=149=TW52=
-
-  # sequence reset without gap fill flag (default to N)
-  I8=FIX.4.235=434=049=TW52=
-
-  # sequence reset without gap fill flag (default to N)
-  I8=FIX.4.235=434=049=TW52=
-  
- - In these script there are two types of commands, action commands and messages commands. Action commands - begin with lowercase letters while message command begin with uppercase letters. - -

Action Commands

- i<ACTION> - initiates an action
- e<ACTION> - expect (wait for) an action

- - Supported actions are:

- - iCONNECT - initiate connection to a FIX acceptor
- eCONNECT - expect a connection from a FIX initiator
- iDISCONNECT - initiate a disconnect
- eDISCONNECT - expect a disconnect

- -

Message Commands

- I<MESSAGE> - initiate (send) a message
- E<MESSAGE> - expect (wait for) a message

- -

- When using the I command, you do not need to add the Length(9) or the CheckSum(10) fields, - they will be added for you with the correct values in the appropriate locations. The only time you - would add these fields is if you intentionally wish to make them incorrect. -

-

- The I command also provides a TIME macro for fields. By setting a field equal to <TIME>, - the current system time will be placed in the field. (i.e. 52=

-

The E command verifies that you have received the correct message. This command will compare - the values of each field to make sure they are correct. Some fields cannot be verified deterministically before - run-time such as the SendingTime and CheckSum fields. These fields can be added to the fields.fmt file - where a regular expression can be defined to at least verify the field is in the correct format. For example: -

- 10=\d{3}, checksum must be exactly three digits
- 52=\d{8}-\d{2}:\d{2}:\d{2}, sending time must be in the form of DDDDDDDD-DD:DD:DD where D is a digit. -

- Either command can contain a FILE macro which puts the contents of a file into a field (i.e. 58=<FILE:test.txt>) -

- + + + + Acceptance Tests + + + +
+
+ Acceptance Tests +
+
+ +
+

QuickFIX also has a scriptable test runner that comes with a + series of automated acceptance test. The basic tests that come + with QuickFIX are based off of the + FIX Session-level Test Cases and Expected Behaviors + document produced by the FIX protocol organization. These tests + verify that QuickFIX adheres to the FIX specifications. The + automated nature of these tests guarantees that future releases + of QuickFIX will not break any current functionality.

+ +

Perhaps even more importantly is how these test are used to + drive the development of QuickFIX. Before a line of code is + written in support of a protocol feature, one of these tests is + written. This test first approach sets up a goal for developers + who will have objective verification that they correctly + implemented the standard.

+ +

Below is an example of a test script that tests the engines + behavior when it receives a NewSeqNo value that is less than + the expected MsgSeqNum.

+
+iCONNECT
+I8=FIX.4.235=A34=149=TW52=>TIME>56=ISLD98=0108=30
+E8=FIX.4.29=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
+
+# sequence reset without gap fill flag (default to N)
+I8=FIX.4.235=434=049=TW52=>TIME>56=ISLD36=1
+E8=FIX.4.29=11235=334=249=ISLD52=00000000-00:00:0056=TW45=058=Value is incorrect (out of range) for this tag372=4373=510=0
+
+I8=FIX.4.235=134=249=TW52=>TIME>56=ISLD112=HELLO
+E8=FIX.4.29=5535=034=349=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
+
+# sequence reset without gap fill flag (default to N)
+I8=FIX.4.235=434=049=TW52=>TIME>56=ISLD36=1123=N
+E8=FIX.4.29=11235=334=449=ISLD52=00000000-00:00:0056=TW45=058=Value is incorrect (out of range) for this tag372=4373=510=0
+
+I8=FIX.4.235=134=349=TW52=>TIME>56=ISLD112=HELLO
+E8=FIX.4.29=5535=034=549=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
+iDISCONNECT
+
In these script there are two types of commands, action +commands and messages commands. Action commands begin with +lowercase letters while message command begin with uppercase +letters. + +

Action Commands

i<ACTION> - initiates an + action
+ e<ACTION> - expect (wait for) an action
+
+ Supported actions are:
+
+ iCONNECT - initiate connection to a FIX acceptor
+ eCONNECT - expect a connection from a FIX initiator
+ iDISCONNECT - initiate a disconnect
+ eDISCONNECT - expect a disconnect
+
+ +

Message Commands

I<MESSAGE> - initiate + (send) a message
+ E<MESSAGE> - expect (wait for) a message
+
+ +

When using the I command, you do not need to add the + Length(9) or the CheckSum(10) fields, they will + be added for you with the correct values in the appropriate + locations. The only time you would add these fields is if you + intentionally wish to make them incorrect.

+ +

The I command also provides a TIME macro for fields. + By setting a field equal to <TIME>, the current system + time will be placed in the field. (i.e. 52=>TIME>). You + can also use offsets such as 52=<TIME-120> or + 52=<TIME+15> in order to set the time plus or minus some + seconds from the current time.

+ +

The E command verifies that you have received the + correct message. This command will compare the values of each + field to make sure they are correct. Some fields cannot be + verified deterministically before run-time such as the + SendingTime and CheckSum fields. These fields can be added to + the fields.fmt file where a regular expression can be + defined to at least verify the field is in the correct format. + For example:

10=\d{3}, checksum must be exactly three + digits
+ 52=\d{8}-\d{2}:\d{2}:\d{2}, sending time must be in the form of + DDDDDDDD-DD:DD:DD where D is a digit. + +

Either command can contain a FILE macro which puts the + contents of a file into a field (i.e. + 58=<FILE:test.txt>)

+
+ diff --git a/doc/html/application.html b/doc/html/application.html index a11f3724e..f4e74da60 100644 --- a/doc/html/application.html +++ b/doc/html/application.html @@ -1,142 +1,154 @@ - + + - - Creating Your Application - - -

Creating Your Application

-

- Creating a FIX application is as easy as implementing the QuickFIX Application - interface. The C++ interface is defined in the following code segment: -

- See this code in C#, VB.NET, PYTHON, RUBY -
-  namespace FIX
+
+  
+
+  Creating Your Application
+
+
+
+  
+
+ Setting Up Your Project +
+
+ +
+

Creating a FIX application is as easy as implementing the + QuickFIX Application interface. The C++ interface is defined in + the following code segment:

See this code in PYTHON, RUBY +
+namespace FIX
+{
+  class Application
   {
-    class Application
-    {
-    public:
-      virtual ~Application() {};
-      virtual void onCreate( const SessionID& ) = 0;
-      virtual void onLogon( const SessionID& ) = 0;
-      virtual void onLogout( const SessionID& ) = 0;
-      virtual void toAdmin( Message&, const SessionID& ) = 0;
-      virtual void toApp( Message&, const SessionID& )
-        throw( DoNotSend ) = 0;
-      virtual void fromAdmin( const Message&, const SessionID& )
-        throw( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, RejectLogon ) = 0;
-      virtual void fromApp( const Message&, const SessionID& )
-        throw( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType ) = 0;
-    };
-  }
-  
-

- By implementing these functions in your derived class, you are requesting to be - notified of events that occur on the FIX engine. The function you that you - should be most aware of is fromApp. Also remember that everything is in - the FIX namespace, so when overloading your class, you must refer to - classes as FIX::Session, and FIX::Message etc... -
-
- Here are explanations of what these functions provide for you. -

    - onCreate gets called when quickfix creates a new session. A - session comes into and remains in existence for the life of the application. - Sessions exist whether or not a counter party is connected to it. As soon as a - session is created, you can begin sending messages to it. If no one is logged - on, the messages will be sent at the time a connection is established with the - counterparty. -
    -
    - onLogon notifies you when a valid logon has been established with - a counter party. This is called when a connection has been established and the - FIX logon process has completed with both parties exchanging valid logon - messages. -
    -
    - onLogout notifies you when an FIX session is no longer online. - This could happen during a normal logout exchange or because of a forced - termination or a loss of network connection. -
    -
    - toAdmin provides you with a peak at the administrative messages - that are being sent from your FIX engine to the counter party. This is normally - not useful for an application however it is provided for any logging you may - wish to do. Notice that the FIX::Message is not const. This allows you to add - fields before an adminstrative message before it is sent out. -
    -
    - toApp is a callback for application messages that you are being - sent to a counterparty. If you throw a DoNotSend exception in this - function, the application will not send the message. This is mostly useful if - the application has been asked to resend a message such as an order that is no - longer relevant for the current market. Messages that are being resent are - marked with the PossDupFlag in the header set to true; If a DoNotSend - exception is thrown and the flag is set to true, a sequence reset will be sent - in place of the message. If it is set to false, the message will simply not be - sent. Notice that the FIX::Message is not const. This allows you to add fields - before an application message before it is sent out. -
    -
    - fromAdmin notifies you when an administrative message is sent - from a counterparty to your FIX engine. This can be usefull for doing extra - validation on logon messages such as for checking passwords. Throwing a RejectLogon - exception will disconnect the counterparty. -
    -
    - fromApp is one of the core entry points for your FIX application. - Every application level request will come through here. If, for example, your - application is a sell-side OMS, this is where you will get your new order - requests. If you were a buy side, you would get your execution reports here. If - a FieldNotFound exception is thrown, the counterparty will receive a - reject indicating a conditionally required field is missing. The Message class - will throw this exception when trying to retrieve a missing field, so you will - rarely need the throw this explicitly. You can also throw an UnsupportedMessageType - exception. This will result in the counterparty getting a reject informing them - your application cannot process those types of messages. An IncorrectTagValue - can also be thrown if a field contains a value that is out of range or you do - not support. -
-

-

- The sample code below shows how you might start up a FIX acceptor which listens - on a socket. If you wanted an initiator, you would simply replace the acceptor - in this code fragment with a SocketInitiator. -

- See this code in C#, VB.NET, PYTHON, RUBY -
-  #include "quickfix/FileStore.h"
-  #include "quickfix/FileLog.h"
-  #include "quickfix/SocketAcceptor.h"
-  #include "quickfix/Session.h"
-  #include "quickfix/SessionSettings.h"
-  #include "quickfix/Application.h"
+  public:
+    virtual ~Application() {};
+    virtual void onCreate( const SessionID& ) = 0;
+    virtual void onLogon( const SessionID& ) = 0;
+    virtual void onLogout( const SessionID& ) = 0;
+    virtual void toAdmin( Message&, const SessionID& ) = 0;
+    virtual void toApp( Message&, const SessionID& )
+      throw( DoNotSend ) = 0;
+    virtual void fromAdmin( const Message&, const SessionID& )
+      throw( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, RejectLogon ) = 0;
+    virtual void fromApp( const Message&, const SessionID& )
+      throw( FieldNotFound, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType ) = 0;
+  };
+}
+
- int main( int argc, char** argv ) +

These methods act as callbacks from your FIX + sessions.

+ +
+ onCreate is called when quickfix creates a new + session. A session comes into and remains in existence for + the life of the application. Sessions exist whether or not a + counter party is connected to it. As soon as a session is + created, you can begin sending messages to it. If no one is + logged on, the messages will be sent at the time a connection + is established with the counterparty.
+
+ onLogon notifies you when a valid logon has + been established with a counter party. This is called when a + connection has been established and the FIX logon process has + completed with both parties exchanging valid logon + messages.
+
+ onLogout notifies you when an FIX session is no + longer online. This could happen during a normal logout + exchange or because of a forced termination or a loss of + network connection.
+
+ toAdmin provides you with a peak at the + administrative messages that are being sent from your FIX + engine to the counter party. This is normally not useful for + an application however it is provided for any logging you may + wish to do. Notice that the FIX::Message is not const. This + allows you to add fields to an adminstrative message before + it is sent out.
+
+ toApp is a callback for application messages + that you are being sent to a counterparty. If you throw a + DoNotSend exception in this function, the application + will not send the message. This is mostly useful if the + application has been asked to resend a message such as an + order that is no longer relevant for the current market. + Messages that are being resent are marked with the + PossDupFlag in the header set to true; If a + DoNotSend exception is thrown and the flag is set to + true, a sequence reset will be sent in place of the message. + If it is set to false, the message will simply not be sent. + Notice that the FIX::Message is not const. This allows you to + add fields to an application message before it is sent + out.
+
+ fromAdmin notifies you when an administrative + message is sent from a counterparty to your FIX engine. This + can be usefull for doing extra validation on logon messages + like validating passwords. Throwing a RejectLogon + exception will disconnect the counterparty.
+
+ fromApp receives application level request. If + your application is a sell-side OMS, this is where you will + get your new order requests. If you were a buy side, you + would get your execution reports here. If a + FieldNotFound exception is thrown, the counterparty + will receive a reject indicating a conditionally required + field is missing. The Message class will throw this exception + when trying to retrieve a missing field, so you will rarely + need the throw this explicitly. You can also throw an + UnsupportedMessageType exception. This will result in + the counterparty getting a reject informing them your + application cannot process those types of messages. An + IncorrectTagValue can also be thrown if a field + contains a value you do not support. +
+ +

The sample code below shows how you might start up a FIX + acceptor which listens on a socket. If you wanted an initiator, + you would replace the acceptor in this code fragment with a + SocketInitiator.

See this code in PYTHON, RUBY +
+#include "quickfix/FileStore.h"
+#include "quickfix/FileLog.h"
+#include "quickfix/SocketAcceptor.h"
+#include "quickfix/Session.h"
+#include "quickfix/SessionSettings.h"
+#include "quickfix/Application.h"
+
+int main( int argc, char** argv )
+{
+  try
   {
-    try
-    {
-      if(argc < 2) return 1;
-      std::string fileName = argv[1];
+    if(argc < 2) return 1;
+    std::string fileName = argv[1];
 
-      FIX::SessionSettings settings(fileName);
+    FIX::SessionSettings settings(fileName);
 
-      MyApplication application;
-      FIX::FileStoreFactory storeFactory(settings);
-      FIX::FileLogFactory logFactory(settings);
-      FIX::SocketAcceptor acceptor
-        (application, storeFactory, settings, logFactory /*optional*/);
-      acceptor.start();
-      // while( condition == true ) { do something; }
-      acceptor.stop();
-      return 0;
-    }
-    catch(FIX::ConfigError& e)
-    {
-      std::cout << e.what();
-      return 1;
-    }
+    MyApplication application;
+    FIX::FileStoreFactory storeFactory(settings);
+    FIX::FileLogFactory logFactory(settings);
+    FIX::SocketAcceptor acceptor
+      (application, storeFactory, settings, logFactory /*optional*/);
+    acceptor.start();
+    // while( condition == true ) { do something; }
+    acceptor.stop();
+    return 0;
+  }
+  catch(FIX::ConfigError& e)
+  {
+    std::cout << e.what();
+    return 1;
   }
-  
- +} +
+ + diff --git a/doc/html/building.html b/doc/html/building.html index 7f6ce6805..1a59bcf54 100644 --- a/doc/html/building.html +++ b/doc/html/building.html @@ -1,123 +1,143 @@ - + - - Building QuickFIX -

Building QuickFIX

- - - - - - -

Windows (C++)

-

- Solution and project files are provided for building under Visual Studio. QuickFIX supports Visual Studio 7 (2003), - Visual Studio 8 (2005), Visual Studio 9 (2008) and Visual Studio 10 (2010). The solution files - provided for these versions are quickfix_vs7.dsw, quickfix_vs8.sln, quickfix_vs9.sln, and quickfix_vs10.sln - respectively. -

-

- Simply open the appropriate solution file and do a batch build of all the projects. This will create - lib\quickfix.lib and lib\debug\quickfix.lib which can be linked into your - applications. The header files will also be copied to the include directory. -

-

- Since windows does not have a standard system for storing header and library files, you - should organize them however best suits your build environment. Leaving them in the lib - and include directories they are placed into by the build is one option. -

-

- Compile time options are controlled from the config_windows.h file in the src - directory. The following options are supported:

- #define HAVE_STLPORT 1 - Compile with stlport instead of standard visual c++ STL implementation.
- #define HAVE_JAVA 1 - Compiles JNI wrappers for QuickFIX library, allowing you to access QuickFIX from java.
- #define HAVE_ODBC 1 - Compiles ODBC support into QuickFIX.
- #define HAVE_MYSQL 1 - Compiles MySQL support into QuickFIX. If you enable this option, the mysql include and - library directories must be in the Visual Studio search paths.
- #define HAVE_POSTGRESQL 1 - Compiles PostgreSQL support into QuickFIX. If you enable this option, the postgres include and - library directories must be in the Visual Studio search paths.
- #define HAVE_LIBXML 1 - Compile and link XML parsing code against the libxml library instead of the default MSXML3.
- #define ENABLE_CALLSTACK 1 - Tells QuickFIX to keep track of a C++ callstack that will be printed out in the event of a the process crashing. Only use this when trying to track down a repeatable problem.
-

-
-

Windows (.NET)

-

- QuickFIX comes with a .NET wrapper written in managed C++. This enables any CLR based language (i.e., C#, VB.NET) - to access QuickFIX. -

-

- The instruction for building under .NET are the same as the instructions for windows listed above. - In addition to the quickfix lib files, DLLs named quickfix_net.dll and quickfix_net_messages.dll - will be placed into your lib and lib\debug directories. -

-
-

Windows (Java)

-

- The QuickFIX JNI wrapper for Java has been deprecated. It is now recommended that you use QuickFIX/J, - a native port of the QuickFIX engine. For those of you using the JNI interface, quickfixj.jar has - been provided for your convenience. -

- -

Linux / Solaris / FreeBSD / Mac OS X (C++/Java)

-

- QuickFIX uses GNU autotools (autoconf, automake, and libtool) in conjunction with make to - build on unix systems. If you also want to reuse our makefiles for developing your own application, - you will find it useful. Also note - that if your version of gcc does not come with sstream, you will need to download it from - the link above and put it in the correct include directory. Also please note for Solaris - you must use GNU make, the make that comes with Solaris will not work. -

-

- Building under *nix requires two steps. First, in the root quickfix directory, type - ./configure This will probe your system to find out what functionality it supports - for use in determining how to build QuickFIX. After ./configure completes succesfully, - simply type make to build. If you run into problems running configure, you may - need to run the ./bootstrap script first. -

-

- There are some options you can pass to ./configure to enable compile time features. - These are:

- --with-java - Build the Java examples against QuickFIX/J. JAVA_HOME will be used to find Java.
- --with-python=<include directory> - Build the Python API. Use directory which contains python headers.
- --with-ruby - Build the Ruby API. Ruby interpreter in your path will be used.
- --with-mysql=<base directory> - Compile in mysql support
- --with-postgresql=<base directory> - Compile in postgresql support
- --with-stlport=<base directory> - Compile with stlport instead of - standard gcc STL implementation (recommended for multiprocessor machines running gcc 2.95.x)
- --enable-callstack - Display C++ call stack after abnormal termination. Only use this when trying to track down a repeatable problem.
-

-

- If you are using the SUNPro compiler, you will need to set the following environment variables:

- CC=<full path to SUNPro CC binary>
- CFLAGS=-g -xs
- CXX=<full path to SUNPro CC binary>
- CXXFLAGS=-g -xs
- LD=<full path to SUNPro CC binary>
- LDFLAGS=-g -xs -lCstd
- AR=<full path to SUNPro CC binary>
- AR_FLAGS=-g -xs -xar -o
-

-

- After succesfully building QuickFIX, you should run make install as root. - This will place the library libquickfix.so and the quickfix header files into the appropriate directories. If you do not - have root access, you can also run configure with the - --prefix=<base directory> option, where the base directory - is some directory which your account has write - access. note: under Mac OS X, the library is named - called libquickfix.dylib -

- + + + + Building QuickFIX + + + +
+
+ Building QuickFIX +
+
+ +
+

Windows

+ +

Open quickfix_vs10.sln, quickfix_vs11.sln, or + quickfix_vs12.sln

+ +

Batch build all projects. lib\quickfix.lib and + lib\debug\quickfix.lib can be linked into your + application. Header files are copied to the include + directory.

+ +

Compile time options are controlled from the + config_windows.h file in the src directory. The + following options are supported:
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define HAVE_STLPORT + 1
Compile with stlport instead of standard visual c++ STL + implementation.
#define HAVE_ODBC 1
Compiles ODBC support into QuickFIX.
#define HAVE_MYSQL 1
Compiles MySQL support into QuickFIX. If you enable + this option, the mysql include and library directories must + be in the Visual Studio search paths.
#define HAVE_POSTGRESQL + 1
Compiles PostgreSQL support into QuickFIX. If you + enable this option, the postgres include and library + directories must be in the Visual Studio search paths.
+ +

Linux / Solaris / FreeBSD / Mac OS X

+
+./configure && ./make
+
+sudo make install
+
+ +

You can also run configure with the --prefix=<base directory> option to + install to a custom location.

+ +

./configure options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
--with-python
Build the Python API
--with-ruby
Build the Ruby API
--with-mysql
Compile in mysql support
--with-postgresql
Compile in postgresql support
--with-stlport=<base + directory>
Compile with stlport instead of standard gcc STL + implementation
+ +

When using the SUNPro compiler:
+
+ CC=<full path to SUNPro CC binary>
+ CFLAGS=-g -xs
+ CXX=<full path to SUNPro CC binary>
+ CXXFLAGS=-g -xs
+ LD=<full path to SUNPro CC binary>
+ LDFLAGS=-g -xs -lCstd
+ AR=<full path to SUNPro CC binary>
+ AR_FLAGS=-g -xs -xar -o

+
+ diff --git a/doc/html/configuration.html b/doc/html/configuration.html index 83f9e9209..1d1e15022 100644 --- a/doc/html/configuration.html +++ b/doc/html/configuration.html @@ -1,686 +1,1218 @@ - + - - Configuring QuickFIX -

Configuring QuickFIX

- - -

- A quickfix acceptor or initiator can maintain as many FIX sessions as you would like. A FIX - session is defined in QuickFIX as a unique combination of a BeginString (the FIX version number), - a SenderCompID (your ID), and a TargetCompID (the ID of your counterparty). A SessionQualifier - can also be use to disambiguate otherwise identical sessions. -

-

- Each of the sessions can have several settings associated with them. Some of these settings may - not be known at compile time and are therefore passed around in a class called SessionSettings - which acts as a data dictionary that can be queried. -

-

- The SessionSettings class has the ability to pull settings out of any c++ stream such as a file - stream. You can also simply pass it a filename. If you decide to write your own components, - (storage for a particular database, a new kind of connector etc...), you may also use this to - store settings. -

- -

- A settings file is set up with two types of heading, a [DEFAULT] and a [SESSION] heading. [SESSION] - tells QuickFIX that a new Session is being defined. [DEFAULT] is a place that you can define settings - which will be associated with sessions that don't explicitly define them. QuickFIX itself will not - define any default settings for you. If you do not provide a setting that QuickFIX needs, it will - throw a ConfigError telling you what setting is missing or improperly formatted. -

-

- These are the settings you can associate with a session based on the default - components provided with QuickFIX, followed by an example. -

- -

QuickFIX Settings

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDDescriptionValid ValuesDefault
Session
BeginString Version of FIX this session should use FIXT.1.1
FIX.4.4
FIX.4.3
FIX.4.2
FIX.4.1
FIX.4.0
SenderCompID Your ID as associated with this FIX session case-sensitive alpha-numeric string
TargetCompID Counter parties ID as associated with this FIX session case-sensitive alpha-numeric string
SessionQualifier Additional qualifier to disambiguate otherwise identical sessions case-sensitive alpha-numeric string
DefaultApplVerID Required only for FIXT 1.1 (and newer). Ignored for earlier transport versions. Specifies the default application version ID for the session. This can either be the ApplVerID enum (see the ApplVerID field) or the BeginString for the default version. FIX.5.0SP2
FIX.5.0SP1
FIX.5.0
FIX.4.4
FIX.4.3
FIX.4.2
FIX.4.1
FIX.4.0
9
8
7
6
5
4
3
2
-
ConnectionType Defines if session will act as an acceptor or an initiator initiator
acceptor
StartTime Time of day that this FIX session becomes activated time in the format of HH:MM:SS, time is represented in UTC
EndTime Time of day that this FIX session becomes deactivated time in the format of HH:MM:SS, time is represented in UTC
StartDay For week long sessions, the starting day of week for the session. Use in combination with StartTime. Day of week in English using any abbreviation (i.e. mo, mon, mond, monda, monday are all valid)
EndDay For week long sessions, the ending day of week for the session. Use in combination with EndTime. Day of week in English using any abbreviation (i.e. mo, mon, mond, monda, monday are all valid)
UseLocalTime Indicates StartTime and EndTime are expressed in localtime instead of UTC. Times in messages will still be set to UTC as this is required by the FIX specifications. Y
N
N
MillisecondsInTimeStamp Determines if milliseconds should be added to - timestamps. Only available for FIX.4.2 and greater. Y
N
Y
SendRedundantResendRequests If set to Y, QuickFIX will send all necessary resend requests, even if they appear redundant. Some systems will not certify the engine unless it does this. When set to N, QuickFIX will attempt to minimize resend requests. This is particularly useful on high volume systems. Y
N
N
ResetOnLogon Determines if sequence numbers should be reset when recieving a logon request. Acceptors only. Y
N
N
ResetOnLogout Determines if sequence numbers should be reset to 1 after a normal logout termination. Y
N
N
ResetOnDisconnect Determines if sequence numbers should be reset to 1 after an abnormal termination. Y
N
N
RefreshOnLogon Determines if session state should be restored from persistence layer when logging on. Useful for creating hot failover sessions. Y
N
N
Validation
UseDataDictionary Tell session whether or not to expect a data dictionary. You should always use a DataDictionary if you are using repeating groups. Y
N
Y
DataDictionary XML definition file for validating incoming FIX messages. If no DataDictionary is supplied, only basic message validation will be done

This setting should only be used with FIX transport versions older than FIXT.1.1. See TransportDataDictionary and AppDataDictionary for FIXT.1.1 settings.
valid XML data dictionary file, QuickFIX comes with the following defaults in the spec directory

FIX44.xml
FIX43.xml
FIX42.xml
FIX41.xml
FIX40.xml
TransportDataDictionary XML definition file for validating admin (transport) messages. This setting is only valid for FIXT.1.1 (or newer) sessions.

See DataDictionary for older transport versions (FIX.4.0 - FIX.4.4) for additional information.
valid XML data dictionary file, QuickFIX comes with the following defaults in the spec directory

FIXT1.1.xml
AppDataDictionary XML definition file for validating application messages. This setting is only valid for FIXT.1.1 (or newer) sessions.

See DataDictionary for older transport versions (FIX.4.0 - FIX.4.4) for additional information.

This setting supports the possibility of a custom application data dictionary for each session. This setting would only be used with FIXT 1.1 and new transport protocols. This setting can be used as a prefix to specify multiple application dictionaries for the FIXT transport. For example: -

+
+  
+
+  Configuring QuickFIX
+
+
+
+  
+
+ Configuring QuickFIX +
+
+ +
+

A quickfix acceptor or initiator can maintain multiple FIX + sessions. A FIX session is defined in QuickFIX as a unique + combination of a BeginString (the FIX version number), a + SenderCompID (your ID), and a TargetCompID (the + ID of your counterparty). A SessionQualifier can also be + use to disambiguate otherwise identical sessions.

+ +

The SessionSettings class has the ability to pull settings + out of any c++ stream such as a file stream. You can also pass + it a filename. If you decide to write your own components, + (storage for a particular database, a new kind of connector + etc...), you can also use this pass in settings.

+ +

A settings file is set up with two types of headings, a + [DEFAULT] and a [SESSION] heading. + [SESSION] tells QuickFIX that a new Session is being + defined. [DEFAULT] is a where you can define settings + that all sessions use by default. If you do not provide a + setting that QuickFIX needs, it will throw a ConfigError + telling you what setting is missing or improperly + formatted.

+ +

Sample Settings File

+
+# default settings for sessions
+[DEFAULT]
+ConnectionType=initiator
+ReconnectInterval=60
+SenderCompID=TW
+
+# session definition
+[SESSION]
+# inherit ConnectionType, ReconnectInterval and SenderCompID from default
+BeginString=FIX.4.1
+TargetCompID=ARCA
+StartTime=12:30:00
+EndTime=23:30:00
+HeartBtInt=20
+SocketConnectPort=9823
+SocketConnectHost=123.123.123.123
+DataDictionary=somewhere/FIX41.xml
+
+[SESSION]
+BeginString=FIX.4.0
+TargetCompID=ISLD
+StartTime=12:00:00
+EndTime=23:00:00
+HeartBtInt=30
+SocketConnectPort=8323
+SocketConnectHost=23.23.23.23
+DataDictionary=somewhere/FIX40.xml
+
+[SESSION]
+BeginString=FIX.4.2
+TargetCompID=INCA
+StartTime=12:30:00
+EndTime=21:30:00
+# overide default setting for RecconnectInterval
+ReconnectInterval=30
+HeartBtInt=30
+SocketConnectPort=6523
+SocketConnectHost=3.3.3.3
+# (optional) alternate connection ports and hosts to cycle through on failover
+SocketConnectPort1=8392
+SocketConnectHost1=8.8.8.8
+SocketConnectPort2=2932
+SocketConnectHost2=12.12.12.12
+DataDictionary=somewhere/FIX42.xml
+
+ +
+

QuickFIX Settings

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDDescriptionValid ValuesDefault
Session
BeginStringVersion of FIX this session should useFIXT.1.1
+ FIX.4.4
+ FIX.4.3
+ FIX.4.2
+ FIX.4.1
+ FIX.4.0
SenderCompIDYour ID as associated with this FIX sessioncase-sensitive alpha-numeric string
TargetCompIDCounter parties ID as associated with this FIX + sessioncase-sensitive alpha-numeric string
SessionQualifierAdditional qualifier to disambiguate otherwise + identical sessionscase-sensitive alpha-numeric string
DefaultApplVerIDRequired only for FIXT 1.1 (and newer). Ignored for + earlier transport versions. Specifies the default + application version ID for the session. This can either + be the ApplVerID enum (see the ApplVerID field) or the + BeginString for the default version.FIX.5.0SP2
+ FIX.5.0SP1
+ FIX.5.0
+ FIX.4.4
+ FIX.4.3
+ FIX.4.2
+ FIX.4.1
+ FIX.4.0
+ 9
+ 8
+ 7
+ 6
+ 5
+ 4
+ 3
+ 2
ConnectionTypeDefines if session will act as an acceptor or an + initiatorinitiator
+ acceptor
StartTimeTime of day that this FIX session becomes + activatedtime in the format of HH:MM:SS, time is represented + in UTC
EndTimeTime of day that this FIX session becomes + deactivatedtime in the format of HH:MM:SS, time is represented + in UTC
StartDayFor week long sessions, the starting day of week for + the session. Use in combination with StartTime.Day of week in English using any abbreviation (i.e. + mo, mon, mond, monda, monday are all valid)
EndDayFor week long sessions, the ending day of week for + the session. Use in combination with EndTime.Day of week in English using any abbreviation (i.e. + mo, mon, mond, monda, monday are all valid)
UseLocalTimeIndicates StartTime and EndTime are expressed in + localtime instead of UTC. Times in messages will still be + set to UTC as this is required by the FIX + specifications.Y
+ N
N
MillisecondsInTimeStampDetermines if milliseconds should be added to + timestamps. Only available for FIX.4.2 and greater.Y
+ N
Y
SendRedundantResendRequestsIf set to Y, QuickFIX will send all necessary resend + requests, even if they appear redundant. Some systems + will not certify the engine unless it does this. When set + to N, QuickFIX will attempt to minimize resend requests. + This is particularly useful on high volume systems.Y
+ N
N
ResetOnLogonDetermines if sequence numbers should be reset when + recieving a logon request. Acceptors only.Y
+ N
N
ResetOnLogoutDetermines if sequence numbers should be reset to 1 + after a normal logout termination.Y
+ N
N
ResetOnDisconnectDetermines if sequence numbers should be reset to 1 + after an abnormal termination.Y
+ N
N
RefreshOnLogonDetermines if session state should be restored from + persistence layer when logging on. Useful for creating + hot failover sessions.Y
+ N
N
Validation
UseDataDictionaryTell session whether or not to expect a data + dictionary. You should always use a DataDictionary if you + are using repeating groups.Y
+ N
Y
DataDictionaryXML definition file for validating incoming FIX + messages. If no DataDictionary is supplied, only basic + message validation will be done
+
+ This setting should only be used with FIX transport + versions older than FIXT.1.1. See TransportDataDictionary + and AppDataDictionary for FIXT.1.1 settings.
valid XML data dictionary file, QuickFIX comes with + the following defaults in the spec directory
+
+ FIX44.xml
+ FIX43.xml
+ FIX42.xml
+ FIX41.xml
+ FIX40.xml
TransportDataDictionaryXML definition file for validating admin (transport) + messages. This setting is only valid for FIXT.1.1 (or + newer) sessions.
+
+ See DataDictionary for older transport versions (FIX.4.0 + - FIX.4.4) for additional information.
valid XML data dictionary file, QuickFIX comes with + the following defaults in the spec directory
+
+ FIXT1.1.xml
AppDataDictionary + XML definition file for validating application + messages. This setting is only valid for FIXT.1.1 (or + newer) sessions.
+
+ See DataDictionary for older transport versions + (FIX.4.0 - FIX.4.4) for additional information.
+
+ This setting supports the possibility of a custom + application data dictionary for each session. This + setting would only be used with FIXT 1.1 and new + transport protocols. This setting can be used as a + prefix to specify multiple application dictionaries for + the FIXT transport. For example: +
 DefaultApplVerID=FIX.4.2
 # For default application version ID
 AppDataDictionary=FIX42.xml
 # For nondefault application version ID
 # Use BeginString suffix for app version
 AppDataDictionary.FIX.4.4=FIX44.xml
-
valid XML data dictionary file, QuickFIX comes with the following defaults in the spec directory

FIX50SP2.xml
FIX50SP1.xml
FIX50.xml
FIX44.xml
FIX43.xml
FIX42.xml
FIX41.xml
FIX40.xml
ValidateLengthAndChecksum If set to N, messages with incorrect length or checksum fields will not be rejected. You can also use this to force acceptance of repeating groups without a data dictionary. In this scenario you will not be able to access all repeating groups. Y
N
Y
ValidateFieldsOutOfOrder If set to N, fields that are out of order (i.e. body fields in the header, or header fields in the body) will not be rejected. Useful for connecting to systems which do not properly order fields. Y
N
Y
ValidateFieldsHaveValues If set to N, fields without values (empty) will not be rejected. Useful for connecting to systems which improperly send empty tags. Y
N
Y
ValidateUserDefinedFields If set to N, user defined fields will not be rejected if they are not defined in the data dictionary, or are present in messages they do not belong to. Y
N
Y
CheckCompID If set to Y, messages must be received from the counterparty with the correct SenderCompID and TargetCompID. Some systems will send you different CompIDs by design, so you must set this to N. Y
N
Y
CheckLatency If set to Y, messages must be received from the counterparty within a defined number of seconds (see MaxLatency). It is useful to turn this off if a system uses localtime for it's timestamps instead of GMT. Y
N
Y
MaxLatency If CheckLatency is set to Y, this defines the number of seconds latency allowed for a message to be processed. Default is 120. positive integer 120
Miscellaneous
HttpAcceptPort Port to listen to HTTP requests. Pointing a browser to this port will bring up a control panel. Must be in DEFAULT section. positive integer
Initiator
ReconnectInterval Time between reconnection attempts in seconds. Only used for initiators positive integer 30
HeartBtInt Heartbeat interval in seconds. Only used for initiators. positive integer
LogonTimeout Number of seconds to wait for a logon response before disconnecting. positive integer 10
LogoutTimeout Number of seconds to wait for a logout response before disconnecting. positive integer 2
SocketConnectPort Socket port for connecting to a session. Only used with a SocketInitiator positive integer
SocketConnectHost Host to connect to. Only used with a SocketInitiator valid IP address in the format of x.x.x.x or a domain name
SocketConnectPort<n> Alternate socket ports for connecting to a session for failover, where n is a - positive integer. (i.e.) SocketConnectPort1, SocketConnectPort2... must be consecutive - and have a matching SocketConnectHost[n] positive integer
SocketConnectHost<n> Alternate socket hosts for connecting to a session for failover, where n is a - positive integer. (i.e.) SocketConnectHost1, SocketConnectHost2... must be consecutive - and have a matching SocketConnectPort[n] valid IP address in the format of x.x.x.x or a domain name
SocketNodelay Indicates a socket should be created with TCP_NODELAY. Currently, this must be defined in the [DEFAULT] - section. Y
N
N
Acceptor
SocketAcceptPort Socket port for listening to incoming connections, Only used with a SocketAcceptor positive integer, valid open socket port. Currently, this must be defined in the [DEFAULT] - section.
SocketReuseAddress Indicates a socket should be created with SO_REUSADDR, Only used with a SocketAcceptor Y
N
Y
SocketNodelay Indicates a socket should be created with TCP_NODELAY. Currently, this must be defined in the [DEFAULT] - section. Y
N
N
Storage
PersistMessages If set to N, no messages will be persisted. This will force QuickFIX to always send GapFills instead of resending messages. Use this if you know you never want to resend a message. Useful for market data streams. Y
Y
N
FILE
FileStorePath Directory to store sequence number and message files. valid directory for storing files, must have write access
MYSQL
MySQLStoreDatabase Name of MySQL database to access for storing messages and session state. valid database for storing files, must have write access and correct DB shema quickfix
MySQLStoreUser User name logging in to MySQL database. valid user with read/write access to appropriate tables in database root
MySQLStorePassword Users password. correct MySQL password for user empty password
MySQLStoreHost Address of MySQL database. valid IP address in the format of x.x.x.x or a domain name localhost
MySQLStorePort Port of MySQL database. positive integer standard MySQL port
MySQLStoreUseConnectionPool Use database connection pools. - When possible, sessions will share a single database connection. Otherwise each session - gets its own connection. Y
N
N
POSTGRESQL
PostgreSQLStoreDatabase Name of PostgreSQL database to access for storing messages and session state. valid database for storing files, must have write access and correct DB shema quickfix
PostgreSQLStoreUser User name logging in to PostgreSQL database. valid user with read/write access to appropriate tables in database postgres
PostgreSQLStorePassword Users password. correct PostgreSQL password for user empty password
PostgreSQLStoreHost Address of MySQL database. valid IP address in the format of x.x.x.x or a domain name localhost
PostgreSQLStorePort Port of PostgreSQL database. positive integer standard PostgreSQL port
PostgreSQLStoreUseConnectionPool Use database connection pools. - When possible, sessions will share a single database connection. Otherwise each session - gets its own connection. Y
N
N
ODBC
OdbcStoreUser User name logging in to ODBC database. valid user with read/write access to appropriate tables in database. Ignored if UID is in the OdbcStoreConnectionString. sa
OdbcStorePassword Users password. correct ODBC password for user. Ignored if PWD is in the OdbcStoreConnectionString. empty password
OdbcStoreConnectionString ODBC connection string for database Valid ODBC connection string DATABASE=quickfix;DRIVER={SQL Server};SERVER=(local);
Logging
FILE
FileLogPath Directory to store logs. valid directory for storing files, must have write access
FileLogBackupPath Directory to store backup logs. valid directory for storing backup files, must have write access
MYSQL
MySQLLogDatabase Name of MySQL database to access for logging. valid database for storing files, must have write access and correct DB shema quickfix
MySQLLogUser User name logging in to MySQL database. valid user with read/write access to appropriate tables in database root
MySQLLogPassword Users password. correct MySQL password for user empty password
MySQLLogHost Address of MySQL database. valid IP address in the format of x.x.x.x or a domain name localhost
MySQLLogPort Port of MySQL database. positive integer standard MySQL port
MySQLLogUseConnectionPool Use database connection pools. - When possible, sessions will share a single database connection. Otherwise each session - gets its own connection. Y
N
N
MySQLLogIncomingTable Name of table where incoming messages will be logged. Valid table with correct schema. messages_log
MySQLLogOutgoingTable Name of table where outgoing messages will be logged. Valid table with correct schema. messages_log
MySQLLogEventTable Name of table where events will be logged. Valid table with correct schema. event_log
POSTGRESQL
PostgreSQLLogDatabase Name of PostgreSQL database to access for logging. valid database for storing files, must have write access and correct DB shema quickfix
PostgreSQLLogUser User name logging in to PostgreSQL database. valid user with read/write access to appropriate tables in database postgres
PostgreSQLLogPassword Users password. correct PostgreSQL password for user empty password
PostgreSQLLogHost Address of PostgreSQL database. valid IP address in the format of x.x.x.x or a domain name localhost
PostgreSQLLogPort Port of PostgreSQL database. positive integer standard PostgreSQL port
PostgreSQLLogUseConnectionPool Use database connection pools. - When possible, sessions will share a single database connection. Otherwise each session - gets its own connection. Y
N
N
PostgresSQLLogIncomingTable Name of table where incoming messages will be logged. Valid table with correct schema. messages_log
PostgresSQLLogOutgoingTable Name of table where outgoing messages will be logged. Valid table with correct schema. messages_log
PostgresSQLLogEventTable Name of table where events will be logged. Valid table with correct schema. event_log
ODBC
OdbcLogUser User name logging in to ODBC database. valid user with read/write access to appropriate tables in database sa
OdbcLogPassword Users password. correct ODBC password for user. Ignored if UID is in the OdbcLogConnectionString. empty password
OdbcLogConnectionString ODBC connection string for database Valid ODBC connection string. Ignored if PWD is in the OdbcStoreConnectionString. DATABASE=quickfix;DRIVER={SQL Server};SERVER=(local);
OdbcLogIncomingTable Name of table where incoming messages will be logged. Valid table with correct schema. messages_log
OdbcLogOutgoingTable Name of table where outgoing messages will be logged. Valid table with correct schema. messages_log
OdbcLogEventTable Name of table where events will be logged. Valid table with correct schema. event_log
- -

Sample Settings File

-

- Here is a typical settings file you might find in a firm that wants to connect to several ECNs. -

- -
-  # default settings for sessions
-  [DEFAULT]
-  ConnectionType=initiator
-  ReconnectInterval=60
-  SenderCompID=TW
-
-  # session definition
-  [SESSION]
-  # inherit ConnectionType, ReconnectInterval and SenderCompID from default
-  BeginString=FIX.4.1
-  TargetCompID=ARCA
-  StartTime=12:30:00
-  EndTime=23:30:00
-  HeartBtInt=20
-  SocketConnectPort=9823
-  SocketConnectHost=123.123.123.123
-  DataDictionary=somewhere/FIX41.xml
-
-  [SESSION]
-  BeginString=FIX.4.0
-  TargetCompID=ISLD
-  StartTime=12:00:00
-  EndTime=23:00:00
-  HeartBtInt=30
-  SocketConnectPort=8323
-  SocketConnectHost=23.23.23.23
-  DataDictionary=somewhere/FIX40.xml
-
-  [SESSION]
-  BeginString=FIX.4.2
-  TargetCompID=INCA
-  StartTime=12:30:00
-  EndTime=21:30:00
-  # overide default setting for RecconnectInterval
-  ReconnectInterval=30
-  HeartBtInt=30
-  SocketConnectPort=6523
-  SocketConnectHost=3.3.3.3
-  # (optional) alternate connection ports and hosts to cycle through on failover
-  SocketConnectPort1=8392
-  SocketConnectHost1=8.8.8.8
-  SocketConnectPort2=2932
-  SocketConnectHost2=12.12.12.12
-  DataDictionary=somewhere/FIX42.xml
-  
- +
+
valid XML data dictionary file, QuickFIX comes with + the following defaults in the spec directory
+
+ FIX50SP2.xml
+ FIX50SP1.xml
+ FIX50.xml
+ FIX44.xml
+ FIX43.xml
+ FIX42.xml
+ FIX41.xml
+ FIX40.xml
ValidateLengthAndChecksumIf set to N, messages with incorrect length or + checksum fields will not be rejected. You can also use + this to force acceptance of repeating groups without a + data dictionary. In this scenario you will not be able to + access all repeating groups.Y
+ N
Y
ValidateFieldsOutOfOrderIf set to N, fields that are out of order (i.e. body + fields in the header, or header fields in the body) will + not be rejected. Useful for connecting to systems which + do not properly order fields.Y
+ N
Y
ValidateFieldsHaveValuesIf set to N, fields without values (empty) will not + be rejected. Useful for connecting to systems which + improperly send empty tags.Y
+ N
Y
ValidateUserDefinedFieldsIf set to N, user defined fields will not be rejected + if they are not defined in the data dictionary, or are + present in messages they do not belong to.Y
+ N
Y
CheckCompIDIf set to Y, messages must be received from the + counterparty with the correct SenderCompID and + TargetCompID. Some systems will send you different + CompIDs by design, so you must set this to N.Y
+ N
Y
CheckLatencyIf set to Y, messages must be received from the + counterparty within a defined number of seconds (see + MaxLatency). It is useful to turn this off if a system + uses localtime for it's timestamps instead of GMT.Y
+ N
Y
MaxLatencyIf CheckLatency is set to Y, this defines the number + of seconds latency allowed for a message to be processed. + Default is 120.positive integer120
+ Miscellaneous
HttpAcceptPortPort to listen to HTTP requests. Pointing a browser + to this port will bring up a control panel. Must be in + DEFAULT section.positive integer
Initiator
ReconnectIntervalTime between reconnection attempts in seconds. Only + used for initiatorspositive integer30
HeartBtIntHeartbeat interval in seconds. Only used for + initiators.positive integer
LogonTimeoutNumber of seconds to wait for a logon response before + disconnecting.positive integer10
LogoutTimeoutNumber of seconds to wait for a logout response + before disconnecting.positive integer2
SocketConnectPortSocket port for connecting to a session. Only used + with a SocketInitiatorpositive integer
SocketConnectHostHost to connect to. Only used with a + SocketInitiatorvalid IP address in the format of x.x.x.x or a domain + name
SocketConnectPort<n>Alternate socket ports for connecting to a session + for failover, where n is a positive integer. + (i.e.) SocketConnectPort1, SocketConnectPort2... must be + consecutive and have a matching SocketConnectHost[n]positive integer
SocketConnectHost<n>Alternate socket hosts for connecting to a session + for failover, where n is a positive integer. + (i.e.) SocketConnectHost1, SocketConnectHost2... must be + consecutive and have a matching SocketConnectPort[n]valid IP address in the format of x.x.x.x or a domain + name
SocketNodelayIndicates a socket should be created with + TCP_NODELAY. Currently, this must be defined in the + [DEFAULT] section.Y
+ N
N
Acceptor
SocketAcceptPortSocket port for listening to incoming connections, + Only used with a SocketAcceptorpositive integer, valid open socket port. Currently, + this must be defined in the [DEFAULT] section.
SocketReuseAddressIndicates a socket should be created with + SO_REUSADDR, Only used with a SocketAcceptorY
+ N
Y
SocketNodelayIndicates a socket should be created with + TCP_NODELAY. Currently, this must be defined in the + [DEFAULT] section.Y
+ N
N
Storage
PersistMessagesIf set to N, no messages will be persisted. This will + force QuickFIX to always send GapFills instead of + resending messages. Use this if you know you never want + to resend a message. Useful for market data streams.Y
+ Y
N
FILE
FileStorePathDirectory to store sequence number and message + files.valid directory for storing files, must have write + access
MYSQL
MySQLStoreDatabaseName of MySQL database to access for storing messages + and session state.valid database for storing files, must have write + access and correct DB shemaquickfix
MySQLStoreUserUser name logging in to MySQL database.valid user with read/write access to appropriate + tables in databaseroot
MySQLStorePasswordUsers password.correct MySQL password for userempty password
MySQLStoreHostAddress of MySQL database.valid IP address in the format of x.x.x.x or a domain + namelocalhost
MySQLStorePortPort of MySQL database.positive integerstandard MySQL port
MySQLStoreUseConnectionPoolUse database connection pools. When possible, + sessions will share a single database connection. + Otherwise each session gets its own connection.Y
+ N
N
POSTGRESQL
PostgreSQLStoreDatabaseName of PostgreSQL database to access for storing + messages and session state.valid database for storing files, must have write + access and correct DB shemaquickfix
PostgreSQLStoreUserUser name logging in to PostgreSQL database.valid user with read/write access to appropriate + tables in databasepostgres
PostgreSQLStorePasswordUsers password.correct PostgreSQL password for userempty password
PostgreSQLStoreHostAddress of MySQL database.valid IP address in the format of x.x.x.x or a domain + namelocalhost
PostgreSQLStorePortPort of PostgreSQL database.positive integerstandard PostgreSQL port
PostgreSQLStoreUseConnectionPoolUse database connection pools. When possible, + sessions will share a single database connection. + Otherwise each session gets its own connection.Y
+ N
N
ODBC
OdbcStoreUserUser name logging in to ODBC database.valid user with read/write access to appropriate + tables in database. Ignored if UID is in the + OdbcStoreConnectionString.sa
OdbcStorePasswordUsers password.correct ODBC password for user. Ignored if PWD is in + the OdbcStoreConnectionString.empty password
OdbcStoreConnectionStringODBC connection string for databaseValid ODBC connection stringDATABASE=quickfix;DRIVER={SQL + Server};SERVER=(local);
Logging
FILE
FileLogPathDirectory to store logs.valid directory for storing files, must have write + access
FileLogBackupPathDirectory to store backup logs.valid directory for storing backup files, must have + write access
MYSQL
MySQLLogDatabaseName of MySQL database to access for logging.valid database for storing files, must have write + access and correct DB shemaquickfix
MySQLLogUserUser name logging in to MySQL database.valid user with read/write access to appropriate + tables in databaseroot
MySQLLogPasswordUsers password.correct MySQL password for userempty password
MySQLLogHostAddress of MySQL database.valid IP address in the format of x.x.x.x or a domain + namelocalhost
MySQLLogPortPort of MySQL database.positive integerstandard MySQL port
MySQLLogUseConnectionPoolUse database connection pools. When possible, + sessions will share a single database connection. + Otherwise each session gets its own connection.Y
+ N
N
MySQLLogIncomingTableName of table where incoming messages will be + logged.Valid table with correct schema.messages_log
MySQLLogOutgoingTableName of table where outgoing messages will be + logged.Valid table with correct schema.messages_log
MySQLLogEventTableName of table where events will be logged.Valid table with correct schema.event_log
POSTGRESQL
PostgreSQLLogDatabaseName of PostgreSQL database to access for + logging.valid database for storing files, must have write + access and correct DB shemaquickfix
PostgreSQLLogUserUser name logging in to PostgreSQL database.valid user with read/write access to appropriate + tables in databasepostgres
PostgreSQLLogPasswordUsers password.correct PostgreSQL password for userempty password
PostgreSQLLogHostAddress of PostgreSQL database.valid IP address in the format of x.x.x.x or a domain + namelocalhost
PostgreSQLLogPortPort of PostgreSQL database.positive integerstandard PostgreSQL port
PostgreSQLLogUseConnectionPoolUse database connection pools. When possible, + sessions will share a single database connection. + Otherwise each session gets its own connection.Y
+ N
N
PostgresSQLLogIncomingTableName of table where incoming messages will be + logged.Valid table with correct schema.messages_log
PostgresSQLLogOutgoingTableName of table where outgoing messages will be + logged.Valid table with correct schema.messages_log
PostgresSQLLogEventTableName of table where events will be logged.Valid table with correct schema.event_log
ODBC
OdbcLogUserUser name logging in to ODBC database.valid user with read/write access to appropriate + tables in databasesa
OdbcLogPasswordUsers password.correct ODBC password for user. Ignored if UID is in + the OdbcLogConnectionString.empty password
OdbcLogConnectionStringODBC connection string for databaseValid ODBC connection string. Ignored if PWD is in + the OdbcStoreConnectionString.DATABASE=quickfix;DRIVER={SQL + Server};SERVER=(local);
OdbcLogIncomingTableName of table where incoming messages will be + logged.Valid table with correct schema.messages_log
OdbcLogOutgoingTableName of table where outgoing messages will be + logged.Valid table with correct schema.messages_log
OdbcLogEventTableName of table where events will be logged.Valid table with correct schema.event_log
+ + + diff --git a/doc/html/csharp/application_1.html b/doc/html/csharp/application_1.html deleted file mode 100644 index 483c63b73..000000000 --- a/doc/html/csharp/application_1.html +++ /dev/null @@ -1,17 +0,0 @@ - -
-namespace QuickFix
-{
-  public interface Application
-  {
-    public void onCreate(SessionID sessionID);
-    public void onLogon(SessionID sessionID);
-    public void onLogout(SessionID sessionID);
-    public void toAdmin(Message message, SessionID sessionID);
-    public void toApp(Message message, SessionID sessionID);
-    public void fromAdmin(Message message, SessionID sessionID);
-    public void fromApp(Message message, SessionID sessionID);
-  }
-}
-
-
diff --git a/doc/html/csharp/application_2.html b/doc/html/csharp/application_2.html deleted file mode 100644 index 6fd1c42c5..000000000 --- a/doc/html/csharp/application_2.html +++ /dev/null @@ -1,30 +0,0 @@ -
-using QuickFix;
-
-class MyClass
-{
-  static void Main(string[] args)
-  {
-    if(args.Length != 1) return;
-    String fileName = args[0];
-
-    try
-    {
-      SessionSettings settings = new SessionSettings(fileName);
-      Application application = new MyApplication();
-      FileStoreFactory storeFactory = new FileStoreFactory(settings);
-      FileLogFactory logFactory = new FileLogFactory(settings);
-      MessageFactory messageFactory = new DefaultMessageFactory();
-      SocketAcceptor acceptor = new SocketAcceptor
-        (application, storeFactory, settings, logFactory /*optional*/, messageFactory);
-      acceptor.start();
-      // while( condition == true ) { do something; }
-      acceptor.stop();
-    }
-    catch(ConfigError e)
-    {
-      Console.WriteLine(e);
-    }
-  }
-}
-
diff --git a/doc/html/csharp/receiving_messages_1.html b/doc/html/csharp/receiving_messages_1.html deleted file mode 100644 index 0d6b8246f..000000000 --- a/doc/html/csharp/receiving_messages_1.html +++ /dev/null @@ -1,9 +0,0 @@ -
-using QuickFix;
-
-public void fromApp(Message message, SessionID sessionID)
-{
-  StringField field = new StringField(44);
-  message.getField(field);
-}
-
\ No newline at end of file diff --git a/doc/html/csharp/receiving_messages_2.html b/doc/html/csharp/receiving_messages_2.html deleted file mode 100644 index 309cb4df0..000000000 --- a/doc/html/csharp/receiving_messages_2.html +++ /dev/null @@ -1,12 +0,0 @@ -
-using QuickFix;
-
-public void fromApp(Message message, SessionID sessionID)
-{
-  Price price = new Price();
-  message.getField(price);
-
-  ClOrdID clOrdID = new ClOrdID();
-  message.getField(clOrdID);
-}
-
\ No newline at end of file diff --git a/doc/html/csharp/receiving_messages_3.html b/doc/html/csharp/receiving_messages_3.html deleted file mode 100644 index 0f6e87b3b..000000000 --- a/doc/html/csharp/receiving_messages_3.html +++ /dev/null @@ -1,27 +0,0 @@ -
-using QuickFix;
-
-public void fromApp(Message message, SessionID sessionID)
-{
-  crack(message, sessionID);
-}
-
-public override void onMessage(QuickFix42.NewOrderSingle message, QuickFix.SessionID sessionID)
-{
-  ClOrdID clOrdID = new ClOrdID;
-  message.get(clOrdID);
-
-  ClearingAccount clearingAccount = new ClearingAccount();
-  message.get(clearingAccount);
-}
-
-public override void onMessage(QuickFix42.OrderCancelRequest message, QuickFix.SessionID sessionID)
-{
-  ClOrdID clOrdID = new ClOrdID;
-  message.get(clOrdID);
-
-  // compile time error!! field not defined for OrderCancelRequest
-  ClearingAccount clearingAccount = new ClearingAccount();
-  message.get(clearingAccount);
-}
-
\ No newline at end of file diff --git a/doc/html/csharp/receiving_messages_4.html b/doc/html/csharp/receiving_messages_4.html deleted file mode 100644 index 7ae63455b..000000000 --- a/doc/html/csharp/receiving_messages_4.html +++ /dev/null @@ -1,6 +0,0 @@ -
-using QuickFix.Application;
-using QuickFix.MessageCracker;
-
-public class MyApplication:MessageCracker,Application
-
\ No newline at end of file diff --git a/doc/html/csharp/repeating_groups_1.html b/doc/html/csharp/repeating_groups_1.html deleted file mode 100644 index 5bdfa1d41..000000000 --- a/doc/html/csharp/repeating_groups_1.html +++ /dev/null @@ -1,18 +0,0 @@ -
-QuickFix42.MarketDataSnapshotFullRefresh message =
-  new QuickFix42.MarketDataSnapshotFullRefresh(new QuickFix.Symbol("QF"));
-QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries group =
-  new QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries();
-
-group.set(new QuickFix.MDEntryType('0'));
-group.set(new QuickFix.MDEntryPx(12.32));
-group.set(new QuickFix.MDEntrySize(100));
-group.set(new QuickFix.OrderID("ORDERID"));
-message.addGroup(group);
-
-group.set(new QuickFix.MDEntryType('1'));
-group.set(new QuickFix.MDEntryPx(12.32));
-group.set(new QuickFix.MDEntrySize(100));
-group.set(new QuickFix.OrderID("ORDERID"));
-message.addGroup(group);
-
\ No newline at end of file diff --git a/doc/html/csharp/repeating_groups_2.html b/doc/html/csharp/repeating_groups_2.html deleted file mode 100644 index 41e55b268..000000000 --- a/doc/html/csharp/repeating_groups_2.html +++ /dev/null @@ -1,23 +0,0 @@ -
-QuickFix.NoMDEntries noMDEntries = new QuickFix.NoMDEntries();
-message.get(noMDEntries);
-
-QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries group =
-new QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries();
-QuickFix.MDEntryType MDEntryType = new QuickFix.MDEntryType();
-QuickFix.MDEntryPx MDEntryPx = new QuickFix.MDEntryPx();
-QuickFix.MDEntrySize MDEntrySize = new QuickFix.MDEntrySize();
-QuickFix.OrderID orderID = new QuickFix.OrderID();
-
-message.getGroup(1, group);
-group.get(MDEntryType);
-group.get(MDEntryPx);
-group.get(MDEntrySize);
-group.get(orderID);
-
-message.getGroup(2, group);
-group.get(MDEntryType);
-group.get(MDEntryPx);
-group.get(MDEntrySize);
-group.get(orderID);
-
\ No newline at end of file diff --git a/doc/html/csharp/sending_messages_1.html b/doc/html/csharp/sending_messages_1.html deleted file mode 100644 index 2a49d035f..000000000 --- a/doc/html/csharp/sending_messages_1.html +++ /dev/null @@ -1,11 +0,0 @@ -
-public static bool sendToTarget(QuickFix.Message message)
-
-public static bool sendToTarget(QuickFix.Message message, String qualifier)
-
-public static bool sendToTarget(QuickFix.Message message, QuickFix.SessionID sessionID)
-
-public static bool sendToTarget(QuickFix.Message message, String senderCompID, String targetCompID)
-
-public static bool sendToTarget(QuickFix.Message message, String senderCompID, String targetCompID, String qualifier)
-
\ No newline at end of file diff --git a/doc/html/csharp/sending_messages_2.html b/doc/html/csharp/sending_messages_2.html deleted file mode 100644 index 6708f6f44..000000000 --- a/doc/html/csharp/sending_messages_2.html +++ /dev/null @@ -1,28 +0,0 @@ -
-using QuickFix;
-
-public void sendOrderCancelRequest()
-{
-  Message message = new Message();
-  // BeginString
-  message.getHeader().setField(new StringField(8, "FIX.4.2"));
-  // SenderCompID
-  message.getHeader().setField(new StringField(49, "TW"));
-  // TargetCompID, with enumeration
-  message.getHeader().setField(new StringField(56, "TARGET"));
-  // MsgType
-  message.getHeader().setField(new CharField(35, 'F'));
-  // OrigClOrdID
-  message.setField(new StringField(41, "123"));
-  // ClOrdID
-  message.setField(new StringField(11, "321"));
-  // Symbol
-  message.setField(new StringField(55, "LNUX"));
-  // Side, with value enumeration
-  message.setField(new CharField(54, QuickFix.Side_BUY));
-  // Text
-  message.setField(new StringField(58, "Cancel My Order!"));
-
-  Session.sendToTarget(message);
-}
-
\ No newline at end of file diff --git a/doc/html/csharp/sending_messages_3.html b/doc/html/csharp/sending_messages_3.html deleted file mode 100644 index 2848b5115..000000000 --- a/doc/html/csharp/sending_messages_3.html +++ /dev/null @@ -1,21 +0,0 @@ -
-using QuickFix;
-
-void sendOrderCancelRequest()
-{
-  Message message = new Message();
-  Message.Header header = message.getHeader();
-
-  header.setField(new BeginString("FIX.4.2"));
-  header.setField(new SenderCompID(TW));
-  header.setField(new TargetCompID("TARGET"));
-  header.setField(new MsgType("D"));
-  message.setField(new OrigClOrdID("123"));
-  message.setField(new ClOrdID("321"));
-  message.setField(new Symbol("LNUX"));
-  message.setField(new Side(Side.BUY));
-  message.setField(new Text("Cancel My Order!"));
-
-  Session.sendToTarget(message);
-}
-
diff --git a/doc/html/csharp/sending_messages_4.html b/doc/html/csharp/sending_messages_4.html deleted file mode 100644 index af3c56900..000000000 --- a/doc/html/csharp/sending_messages_4.html +++ /dev/null @@ -1,15 +0,0 @@ -
-using QuickFix;
-
-void sendOrderCancelRequest()
-{
-  QuickFix41.OrderCancelRequest message(
-	new ClOrdID("321"),
-	new Symbol("LNUX"),
-	new Side(Side.BUY));
-
-  message.set(new Text("Cancel My Order!"));
-
-  Session.sendToTarget(message, "TW", "TARGET");
-}
-
diff --git a/doc/html/csharp/user_defined_1.html b/doc/html/csharp/user_defined_1.html deleted file mode 100644 index 3b2c14c86..000000000 --- a/doc/html/csharp/user_defined_1.html +++ /dev/null @@ -1,4 +0,0 @@ -

-message.setField(new StringField(6123, "value"));
-StringField field = message.getField(new StringField(6123));
-
\ No newline at end of file diff --git a/doc/html/csharp/user_defined_2.html b/doc/html/csharp/user_defined_2.html deleted file mode 100644 index 1e8ccfc68..000000000 --- a/doc/html/csharp/user_defined_2.html +++ /dev/null @@ -1,16 +0,0 @@ -

-using QuickFix.StringField;
-using QuickFix.DoubleField;
-
-public class MyStringField:StringField
-{
-  public MyStringField() : base(6123) {}
-  public MyStringField(String data) : base(6123, data) {}
-}
-
-public class MyPriceField:DoubleField
-{
-  public MyPriceField() : base(8756) {}
-  public MyPriceField(double data) : base(8756, data) {}
-}
-
\ No newline at end of file diff --git a/doc/html/csharp/user_defined_3.html b/doc/html/csharp/user_defined_3.html deleted file mode 100644 index 30a9e9659..000000000 --- a/doc/html/csharp/user_defined_3.html +++ /dev/null @@ -1,10 +0,0 @@ -

-MyStringField stringField = new MyStringField("string");
-MyPriceField priceField = new MyPriceField(14.54);
-
-message.setField(stringField);
-message.setField(priceField);
-
-message.getField(stringField);
-message.getField(priceField);
-
\ No newline at end of file diff --git a/doc/html/dependencies.html b/doc/html/dependencies.html index 423124de6..0bf6c010a 100644 --- a/doc/html/dependencies.html +++ b/doc/html/dependencies.html @@ -1,140 +1,162 @@ - + - - QuickFIX Dependencies -

QuickFIX Dependencies

- - - - - - -

Required Dependencies

-

- Below is a list of tools that QuickFIX is dependent on for various uses. The uses - are split into Run, Build, and Test catagories. These respectively - refer to what is necessary to run a compiled QuickFIX application, what is required to - compile QuickFIX from the source, and the tools needed to use the automated testing - framework. -

-

- The Run category details what might be the setup of a deployment machine. The - Build category might be the setup of a development machine that uses the QuickFIX - library. All three should be installed for a developer intent on modifying the QuickFIX - library code itself. The testing framework, however, should be useful in any configuration. -

- + + + + QuickFIX Dependencies + + + +
+
+ QuickFIX Dependencies +
+
+ +
+

Required Dependencies

+ +
+ + + + + + + + + + + + + + + + + + + + - - + + - + - + + - - + + - + - + - - - - - - - - + - - - - - - - + + + + + + + + - - - - - - - + + + + + + +
RunBuildTest
Windows + Microsoft + Visual C++
+
+ Ruby
+
WindowsRunLinux - MSXML3 or libxml2 + + glibc
Build - Microsoft Visual C++
- MSXML3 or libxml2 + + gcc
+ + gcc-c++
+ + glibc-devel
+ gnu + make
+ + sstream
Test - Ruby
- RubyUnit + + Ruby
LinuxRunSolaris - glibc
- libxml2
+ glibc
Build - gcc
- gcc-c++
- glibc-devel
- libxml2-devel
- gnu make
- sstream
+ gcc + or SunPRO
+ gcc-c++
+ glibc-devel
+ + gnu + make
+ + sstream
Test - Ruby
- RubyUnit
-
SolarisRun - glibc
- libxml2
-
Build - gcc or SunPRO
- gcc-c++
- glibc-devel
- libxml2-devel
- gnu make
- sstream
-
Test - Ruby
- RubyUnit
+ Ruby
FreeBSDRun - libxml2
-
Build - libxml2
-
Test - Ruby
-
RubyUnit
-
FreeBSD + + + Ruby
+
Mac OS XRun - Max - OS X 10.3 (Panther)
-
Build - Xcode Tools
-
Test - Mac OS X + + Xcode + Tools
+
-
-

Optional Dependencies

-

- In addition to the required dependencies listed above, there are some dependencies if you would - like to take advantage of additional features. QuickFIX supports the following: - - MySQL - MSSQL - PostgreSQL - STLport -

- - \ No newline at end of file +

Optional Dependencies

+ + + + + diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css deleted file mode 100644 index 3767dc957..000000000 --- a/doc/html/doxygen.css +++ /dev/null @@ -1,441 +0,0 @@ -body, table, div, p, dl { - font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; - font-size: 12px; -} - -/* @group Heading Levels */ - -h1 { - text-align: center; - font-size: 150%; -} - -h2 { - font-size: 120%; -} - -h3 { - font-size: 100%; -} - -/* @end */ - -caption { - font-weight: bold; -} - -div.qindex, div.navtab{ - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - padding: 2px; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #153788; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #1b77c5; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #6666cc; - color: #ffffff; - border: 1px double #9295C2; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code { -} - -a.codeRef { -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -.fragment { - font-family: monospace, fixed; - font-size: 105%; -} - -pre.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - padding: 4px 6px; - margin: 4px 8px 4px 2px; -} - -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background: white; - color: black; - margin-right: 20px; - margin-left: 20px; -} - -td.indexkey { - background-color: #e8eef2; - font-weight: bold; - border: 1px solid #CCCCCC; - margin: 2px 0px 2px 0; - padding: 2px 10px; -} - -td.indexvalue { - background-color: #e8eef2; - border: 1px solid #CCCCCC; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #f0f0f0; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -/* @end */ - -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #84b0c7; -} - -th.dirtab { - background: #e8eef2; - font-weight: bold; -} - -hr { - height: 0; - border: none; - border-top: 1px solid #666; -} - -/* @group Member Descriptions */ - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #FAFAFA; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #ccc; -} - -.memTemplParams { - color: #606060; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #606060; - font-weight: normal; - margin-left: 3px; -} - -.memnav { - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.memitem { - padding: 0; -} - -.memname { - white-space: nowrap; - font-weight: bold; -} - -.memproto, .memdoc { - border: 1px solid #84b0c7; -} - -.memproto { - padding: 0; - background-color: #d5e1e8; - font-weight: bold; - -webkit-border-top-left-radius: 8px; - -webkit-border-top-right-radius: 8px; - -moz-border-radius-topleft: 8px; - -moz-border-radius-topright: 8px; -} - -.memdoc { - padding: 2px 5px; - background-color: #eef3f5; - border-top-width: 0; - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - -moz-border-radius-bottomleft: 8px; - -moz-border-radius-bottomright: 8px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} - -/* @end */ - -/* @group Directory (tree) */ - -/* for the tree view */ - -.ftvtree { - font-family: sans-serif; - margin: 0.5em; -} - -/* these are for tree view when used as main index */ - -.directory { - font-size: 9pt; - font-weight: bold; -} - -.directory h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -/* -The following two styles can be used to replace the root node title -with an image of your choice. Simply uncomment the next two styles, -specify the name of your image and be sure to set 'height' to the -proper pixel height of your image. -*/ - -/* -.directory h3.swap { - height: 61px; - background-repeat: no-repeat; - background-image: url("yourimage.gif"); -} -.directory h3.swap span { - display: none; -} -*/ - -.directory > h3 { - margin-top: 0; -} - -.directory p { - margin: 0px; - white-space: nowrap; -} - -.directory div { - display: none; - margin: 0px; -} - -.directory img { - vertical-align: -30%; -} - -/* these are for tree view when not used as main index */ - -.directory-alt { - font-size: 100%; - font-weight: bold; -} - -.directory-alt h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -.directory-alt > h3 { - margin-top: 0; -} - -.directory-alt p { - margin: 0px; - white-space: nowrap; -} - -.directory-alt div { - display: none; - margin: 0px; -} - -.directory-alt img { - vertical-align: -30%; -} - -/* @end */ - -address { - font-style: normal; - color: #333; -} diff --git a/doc/html/examples.html b/doc/html/examples.html index b242f8d7f..bd7bf0afc 100644 --- a/doc/html/examples.html +++ b/doc/html/examples.html @@ -1,27 +1,35 @@ - + - - Example Applications -

Example Applications

- - - -

- QuickFIX comes with several example applications. These application are in the quickfix/examples - directory. These applications are not meant to demonstrate good application design or meant - to be used in a real production system. They are merely provided as a tutorial on how to build an - application with QuickFIX. -

-

- The applications provided are ordermatch which is a c++ server that will match and execute limit - orders, and tradeclient is a little c++ console based trading client. Banzai is a Java GUI based - trading client. Finally there is executor. Executor is a server that simply fills every limit order that - it receives. Executor has been implemented in C++, Java, C#, VB.NET, Python and Ruby. This is a great example for demonstrating how - to do the same things in all of QuickFIX's supported API's. -

-

- Please study these examples to see a complete although minimal implementation of a FIX application. -

- - \ No newline at end of file + + + + Example Applications + + + +
+
+ Example Applications +
+
+ +
+

QuickFIX comes with several example applications in the + quickfix/examples directory.

+ +

ordermatch is a c++ server that will match and + execute limit orders

+ +

tradeclient is a little c++ console based trading + client.

+ +

banzai is a Java GUI based trading + client.

executor is a server that fills every + limit order it receives. + +

Executor has been implemented in C++, Python and + Ruby.

+
+ + diff --git a/doc/html/generating_databases.html b/doc/html/generating_databases.html index 5028dfb70..bbccb5c4e 100644 --- a/doc/html/generating_databases.html +++ b/doc/html/generating_databases.html @@ -1,68 +1,59 @@ - + - - Generating QuickFIX Databases -

Generating QuickFIX Databases

- + + - + Generating QuickFIX Databases + - -
- -

MySQL Database

-

- First, make sure you have compiled QuickFIX with MySQL support. If you have not done this, - go back to the build instructions for your system and follow the instructions. Also, make - sure you have installed MySQL and have the deamon running. -

-

- Everything needed to generate your MySQL database is in the src/sql/mysql directory. Here, - there are the script and batch files create.sh and create.bat. You must pass in a mysql - user with permissions to create a new database. -

-

- ./create.sh mysql -

-

- create.bat mysql -

-
-

MSSQL Database

-

- First, make sure you have compiled QuickFIX with MSSQL support. If you have not done this, - go back to the build instructions for your system and follow the instructions. Also, make - sure you have installed MSSQL and have the deamon running. -

-

- Everything needed to generate your MSSQL database is in the src/sql/mssql directory. Here, - there is the batch file create.bat. Pass in a user with permissions to create a new database. -

-

- create.bat sa -

-
-

PostgreSQL Database

-

- First, make sure you have compiled QuickFIX with PostgreSQL support. If you have not done this, - go back to the build instructions for your system and follow the instructions. Also, make - sure you have installed PostgreSQL and have the deamon running. -

-

- Everything needed to generate your PostgreSQL database is in the src/sql/postgresql directory. Here, - there are the script and batch files create.sh and create.bat. You must pass in a postgresql - user with permissions to create a new database. -

-

- ./create.sh postgres -

-

- create.bat postgres -

- + +
+
+ Generating QuickFIX Databases +
+
+ +
+

MySQL

+ +

You must have MySQL installed with the deamon running.

+ +

Run the create script in src/sql/mysql. You must pass + in a mysql user with permissions authorized to create a new + database.

+
+./create.sh mysql
+
+
+create.bat mysql
+
+ +

MSSQL

+ +

You must have MySQL installed with the deamon running.

+ +

Run the create script in src/sql/mssql. You must pass + in a mssql user with permissions authorized to create a new + database.

+
+create.bat sa
+
+ +

PostgreSQL

+ +

You must have PostgreSQL installed with the deamon + running.

+ +

Run the create script in src/sql/postgresql. You must + pass in a postgresql user with permissions authorized to create + a new database.

+
+./create.sh postgres
+
+
+create.bat postgres
+
+
+ diff --git a/doc/html/header.html b/doc/html/header.html index e2f5e17c4..b9b3f839b 100644 --- a/doc/html/header.html +++ b/doc/html/header.html @@ -1,19 +1,14 @@ - -$title - - - - - -
- -    - Index  - Source Files  - Annotated Class List  - Alphabetical Class List  - Class Hierarchy  - Graphical Class Hierarchy  -
- + + + + + + $title + + + + + + diff --git a/doc/html/images/QuickFIX.jpg b/doc/html/images/QuickFIX.jpg index df0753cf6d36e72fa71511cc878e1e02c6ef19e7..1007da0f90018e5ea22ca2046d20c3db00b6d588 100644 GIT binary patch literal 950 zcmZWoOD_Xa6yDEYm`z*Sun^-d?WBxW)vGUW5ivDQTW!^2gf1Gtz>c*Qv5;6;NQ79i zLLwFt3;#g;1>fnpIf&%kbH498ckVs++_|PVnv6^@q=r2Ow^9ykn#s{Dww?yQz-fwCK78n7!HAmYhx|z}27QQz473a2999_cIzmFvjxmQ*+b{7=26)c{^Y}vBVL+ao>KSy+G?V zq4Pj5x9Yw>&PQiClR}^heQ$>`R;V3x7&hw0GWB8^U`^yK(9h1a)(nl}5YM37|Ft)Z z?5P5E!_;oE;PWN$=kbLq5rmHaE7XCP=v1^iZLWSeb>k%{Fr0@5&5ZG$F(zT;AWj^Q!J#5=X}F^CjN}@Ra2zxqp^gwCdFM5y6PGY~ z#dVA~b1;>LIOLIVaw8O>&Xh+vqi*%N|K0EY?9X1G^<8_fwf0_n?TqjI39wccmKFd) z0N~9VVCNOUnTLA?L;(mO0RTsMsuiGQ;vMYi1H8L<8VCjiB#agi1^|`;0C^7pbRhtk zot;UL0MJMz5`{#gP-uQMZwg}2XpEqcfPkQYfDl&b6R<)eqF7N8Av|7O9FHeTOG^`F zzXIap;}aGV-iyWVl_KB>QeTPxSJ?R-;4nZ5_`whkAaD?jgLZmAD*y-t4DrJM0wf9n z0|?Cr?c$4acZC1~#sUZlAy6>t3jrZuBnk(xBr*JcwD^w%V|fL0Mc(-k0turq@PEyC zw}^w~G{um0@^}*}jip72%PKYvQ4qgWA20SlPIwzU@H|ft48y1|0YCsJht)KpP~&J> z#ow*gv4%*`)^?r%Azt7J9E{_|_EP6cGj^18mt#y8l+Y`7y~7DizuT)>YFGU@j8Pyq z?^0AOn{OfAjeKfDR+N@}Hs2_jYm@qq+vJya*_>P{dirK^(q^h`|7Q238pfVw(tEqDmzkO8)pl8501oih+SuR^4jW(N z>R@(&tMZD;E7r1T)54)wO)v6{GD%jxP4><QmmXW z5M0-N7!)Pdvb27ZG1N|pZJn;NbedZ@F{dvqKbB)ruyvr+K9RMOp;qE<=wA6#rg%!4 zXQf-iMz2$yW0j-7X=gscwKr%lHmdVeW{BO)CZ*WplSE3dw9LSZgvgms1g{u)gx?ZVyOr-$neE5im9YQW;<6(C>LZGk z7cOvOna`4g4a`eiNS4Zt2b(!Vq7k;-*NqY zx0{l01<+iYhNG$nYXrH;I>bsRLrsm0^4zu(EDh6Pw|qRRt!(y1G%}n!V)pZ9K4z*XZe2N=L>!=?r8!o?`-(Z8O=>ZmMU}Fjt7U zZ_{TrH88N|uTy%lnrm#`r^_=HeI^(C=tJ$ykY2z3ndPLQMxrKgI&?vm)o+4hP?vg` zY%G_4=O;`)QO+UMRdPeCV0t*TF>X8I_xHh}QCH$s`+XT_0<>MObI7IrX96tWCs%!X z9tehv}xtoOd>`Nljt2Vm0=o$%+F9A~rH+Xlr}=#~{5~te>LQtL21Zieo4<%X2;VMS zwPwAlRcugwTbV^}jM1LVeJ!DBocZcLs+#TJ{YJM-fy!*o;7Ew17|0v29%v$o86;ed zNtJ^*C9}bUksC{=rLYVbgaMcP6jgINj*{QSocsgg+U7_Pzw8#^T zdAwEb;ljo9YQ4p@&NrXG$nGYWvq_Zm>Tb`0sB1v5LpXo89Z!>(wkBIXv) z@>@T{q7u&3d_U+^JtDHA8X-Zb8O13R9g&ThP4@wJi;((t#M>_nUmrfN@><%zGNzh}x19d6fz>xOoAIpBV^t(&sK7gE`!k|`SaBH_9k_YJaFLJ?ty*_Q;wKdF$YtvvW$0lzIO)RA7`djA5))$ub_`=rWrB0&b2W<3fBhFmU8Ao^)c<8{(udjKPV|$!!#$w5 zrG$rV0w)6(%}a{n5od#&1?Bn3mm}F8Md4Zxk2{0y2d2%{HUsf|Sq79Hkk0nsS0IFP zqo&3jOWIJWZ|dGoD_K|AzFfead0zXMKuo4WDPm^!Td`pIDT7+dLkFz}d#Q|`ajWj0 zst%7?MR*U2iKZ8l`8&=g5|3Og*C1_O=z}G+Q`gXm@{U#o35=tsk_8n0fFjO{=j+o` zYs63b#D}C(=7mmUnikG{f%ez>!fpa=n!bF4h`aucvU%E}^wl6IrTfc8GiFy>f_z2k vtl3bNQ4i}-nT8;r-YeI|CbbIE`j*uk#dA@rCMMa*3wEBn@Uph{-1JV>_1JV>_zkodr08u!XtN;K2 literal 121 zcmZ?wbhEHbWM>dz*v!Ci=={x(U%owj@%HKK_g}vM*mC6J=EE0Wz5n#!`I~)buCG6E z?*IS)3`junCkvRT10q3YFtDfvtaM$urtHz~(y1=y37t#{O(he$8bcfv86OKxkx`uz N@&5mT1qMtE)&TsNG1JV>_Z0rG(aci>@^v%|Jb~1eB|zfZZny%^6Fa<&fIKe+Cm;!QlXGb- XL=r?50dawcn>Enw5H|z;0QM{Zeio2Z literal 124 zcmZ?wbhEHbWM>dz*v!E2@yoY|FWzoGeBsdfo9{n=J%0JltM{L_9J%=P_4|EiuCG6E z?*IS)3`junCkvRT10q3YFtBJAc&@y%X4FI@lHc9{h diff --git a/doc/html/images/outsideLeft.gif b/doc/html/images/outsideLeft.gif index edf2c7b79a82ea8dbd155692c4edeb4537f15113..e7c99129a85a390984699ecc0c1431ca04e874d5 100644 GIT binary patch literal 126 zcmcCfbn$l%i41U6$SBFpvE$;hfzUP?sfj6eTnY*{C7C5TsdhH{5Sq(IA0oqLla!xQ i2~y$i>1JV>_Ebj literal 51 zcmZ?wbhEHbWM^Pxn8?8J<@=BI2hRQf|DS<@LGdRGkYr%c0TCd11|}9C1x;24YXF~z B42%E( diff --git a/doc/html/images/outsideRight.gif b/doc/html/images/outsideRight.gif index 018dfb2e20e9cca204d1bb0447c8ff63b1d4c938..f6a0aca212275289479343ae25847ff8a2bb2f45 100644 GIT binary patch literal 122 zcmcCfbn$l%i41U6$SBFpvE$;hfzUP?sfj6eTnY*{C7C5TsdhH{5Sq(IA0oqLla!xQ i2~y$i>1JV>_1JV>_W3UDQCIJfK diff --git a/doc/html/images/outsideTopLeft.gif b/doc/html/images/outsideTopLeft.gif index a3fcc0828e540ad4481dadfeb9b03ae599aa11e9..c8b514830f81395ac81d5d24313918032df6ac0a 100644 GIT binary patch literal 259 zcmcCfbn$l%i41U6$SBFpvE$;hfzUP?sfj6eTnY*{C7C5TsdhH{5Sq(IA0oqLla!xQ z2~y$i>1JV>_FdmAT9^`1ngx1(=L>G literal 121 zcmZ?wbhEHbWM>dz*v!E2^!58g=WjlI@%H1FZx5co*>dFK=EE0Wz5n$7^VfZ6uCG6E z?*IS)3`junCkvRT10q3YFtDf1JV>_j8HfXc*jLpF=$KR> YD;|jbff$Iif!G@8W{6vXZU=i304sWl!Tdz*v!E2@WtCh=Wl-e@@>nJi?7~)+I;xJ&)>hFzJ9;&%=PsL&i()Y zp8*vp{$v3Q=zvI&84N5c0Vh3I@3pwxa=>qnf-Iv&NAkfymKVONPO=KASK?d!cVE$7 Iz`1JV>_dzSj52a@yoY|FWzoGd|~hDYx~Yz|NsC0`UB?}7#I|PvH(d21|1Lq IQp>;$0N{ufo&W#< diff --git a/doc/html/images/titleTabRight.gif b/doc/html/images/titleTabRight.gif index 5370e2a7c530f0f17b67874c336216ca67588ff7..a4d0594638b2f938aa8b63ae2d4297d93625fe29 100644 GIT binary patch literal 192 zcmcCfbn$l%i41U6$SBFpvE$;hfzUP?sfj6eTnY*{C7C5TsdhH{5Sq(IA0oqLla!xQ z2~y$i>1JV>_dzSj52a@yoY|FWzoGd|~hDYx~Yz|NsC0`UB?}7#I|PvH(d21|1Lq gQp>1JV>_ ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; - $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; -} - -while ( @ARGV ) { - $_ = shift @ARGV; - if ( s/^-// ) { - if ( /^l(.*)/ ) { - $v = ($1 eq "") ? shift @ARGV : $1; - ($v =~ /\/$/) || ($v .= "/"); - $_ = $v; - if ( /(.+)\@(.+)/ ) { - if ( exists $subst{$1} ) { - $subst{$1} = $2; - } else { - print STDERR "Unknown tag file $1 given with option -l\n"; - &usage(); - } - } else { - print STDERR "Argument $_ is invalid for option -l\n"; - &usage(); - } - } - elsif ( /^q/ ) { - $quiet = 1; - } - elsif ( /^\?|^h/ ) { - &usage(); - } - else { - print STDERR "Illegal option -$_\n"; - &usage(); - } - } - else { - push (@files, $_ ); - } -} - -foreach $sub (keys %subst) -{ - if ( $subst{$sub} eq "" ) - { - print STDERR "No substitute given for tag file `$sub'\n"; - &usage(); - } - elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) - { - print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; - } -} - -if ( ! @files ) { - if (opendir(D,".")) { - foreach $file ( readdir(D) ) { - $match = ".html"; - next if ( $file =~ /^\.\.?$/ ); - ($file =~ /$match/) && (push @files, $file); - ($file =~ "tree.js") && (push @files, $file); - } - closedir(D); - } -} - -if ( ! @files ) { - print STDERR "Warning: No input files given and none found!\n"; -} - -foreach $f (@files) -{ - if ( ! $quiet ) { - print "Editing: $f...\n"; - } - $oldf = $f; - $f .= ".bak"; - unless (rename $oldf,$f) { - print STDERR "Error: cannot rename file $oldf\n"; - exit 1; - } - if (open(F,"<$f")) { - unless (open(G,">$oldf")) { - print STDERR "Error: opening file $oldf for writing\n"; - exit 1; - } - if ($oldf ne "tree.js") { - while () { - s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; - print G "$_"; - } - } - else { - while () { - s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; - print G "$_"; - } - } - } - else { - print STDERR "Warning file $f does not exist\n"; - } - unlink $f; -} - -sub usage { - print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; - print STDERR "Options:\n"; - print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; - print STDERR " -q Quiet mode\n\n"; - exit 1; -} diff --git a/doc/html/java/application_1.html b/doc/html/java/application_1.html deleted file mode 100644 index 3e6e22501..000000000 --- a/doc/html/java/application_1.html +++ /dev/null @@ -1,16 +0,0 @@ -
-package quickfix;
-
-public interface Application {
-  void onCreate(SessionID sessionId);
-  void onLogon(SessionID sessionId);
-  void onLogout(SessionID sessionId);
-  void toAdmin(Message message, SessionID sessionId);
-  void toApp(Message message, SessionID sessionId)
-    throws DoNotSend;
-  void fromAdmin(Message message, SessionID sessionId)
-    throws FieldNotFound, IncorrectDataFormat, IncorrectTagValue, RejectLogon;
-  void fromApp(Message message, SessionID sessionId)
-    throws FieldNotFound, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType;
-}
-
\ No newline at end of file diff --git a/doc/html/java/application_2.html b/doc/html/java/application_2.html deleted file mode 100644 index d47c45299..000000000 --- a/doc/html/java/application_2.html +++ /dev/null @@ -1,27 +0,0 @@ -
-import quickfix.*;
-import java.io.FileInputStream;
-
-public class MyClass {
-
-  static {
-    System.loadLibrary("quickfix_jni");
-  }
-
-  public static void main(String args[]) throws Exception {
-    if(args.length != 1) return;
-    String fileName = args[0];
-
-    Application application = new Application();
-    SessionSettings settings = new SessionSettings(new FileInputStream(fileName));
-    MessageStoreFactory storeFactory = new FileStoreFactory(settings);
-    LogFactory logFactory = new FileLogFactory(settings);
-    MessageFactory messageFactory = new DefaultMessageFactory();
-    Acceptor acceptor = new SocketAcceptor
-      (application, storeFactory, settings, logFactory, messageFactory);
-    acceptor.start();
-    // while( condition == true ) { do something; }
-    acceptor.stop();
-  }
-}
-
diff --git a/doc/html/java/receiving_messages_1.html b/doc/html/java/receiving_messages_1.html deleted file mode 100644 index 543d4a623..000000000 --- a/doc/html/java/receiving_messages_1.html +++ /dev/null @@ -1,10 +0,0 @@ -
-import quickfix.*;
-
-public void fromApp(Message message, SessionID sessionID)
-  throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue {
-
-  StringField field = new StringField(44);
-  message.getField(field);
-}
-
\ No newline at end of file diff --git a/doc/html/java/receiving_messages_2.html b/doc/html/java/receiving_messages_2.html deleted file mode 100644 index c2c615257..000000000 --- a/doc/html/java/receiving_messages_2.html +++ /dev/null @@ -1,14 +0,0 @@ -
-import quickfix.*;
-import quickfix.field.*;
-
-public void fromApp(Message message, SessionID sessionID)
-  throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue {
-
-  Price price = new Price();
-  message.getField(price);
-
-  ClOrdID = new ClOrdID();
-  message.getField(clOrdID);
-}
-
\ No newline at end of file diff --git a/doc/html/java/receiving_messages_3.html b/doc/html/java/receiving_messages_3.html deleted file mode 100644 index 91a23b14a..000000000 --- a/doc/html/java/receiving_messages_3.html +++ /dev/null @@ -1,31 +0,0 @@ -
-import quickfix.*;
-import quickfix.field.*;
-
-public void fromApp(Message message, SessionID sessionID)
-  throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue {
-
-  crack(message, sessionID);
-}
-
-public void onMessage( quickfix.fix42.NewOrderSingle message, SessionID sessionID )
-  throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue {
-
-  ClOrdID clOrdID = new ClOrdID();
-  message.get(clOrdID);
-
-  ClearingAccount clearingAccount = new ClearingAccount();
-  message.get(clearingAccount);
-}
-
-public void onMessage( quickfix.fix42.OrderCancelRequest message, SessionID sessionID )
-  throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue {
-
-  ClOrdID clOrdID = new ClOrdID();
-  message.get(clOrdID);
-
-  // compile time error!! field not defined for OrderCancelRequest
-  ClearingAccount clearingAccount = new ClearingAccount();
-  message.get(clearingAccount);
-}
-
\ No newline at end of file diff --git a/doc/html/java/receiving_messages_4.html b/doc/html/java/receiving_messages_4.html deleted file mode 100644 index cc8f15dac..000000000 --- a/doc/html/java/receiving_messages_4.html +++ /dev/null @@ -1,7 +0,0 @@ -
-import quickfix.Application;
-import quickfix.MessageCracker;
-
-public class MyApplication
-  extends MessageCracker implements quickfix.Application
-
\ No newline at end of file diff --git a/doc/html/java/repeating_groups_1.html b/doc/html/java/repeating_groups_1.html deleted file mode 100644 index ea3565e41..000000000 --- a/doc/html/java/repeating_groups_1.html +++ /dev/null @@ -1,20 +0,0 @@ -
-package quickfix;
-
-quickfix.fix42.MarketDataSnapshotFullRefresh message =
-  new quickfix.fix42.MarketDataSnapshotFullRefresh(new Symbol("QF"));
-quickfix.fix42.MarketDataSnapshotFullRefresh.NoMDEntries group =
-  new quickfix.fix42.MarketDataSnapshotFullRefresh.NoMDEntries();
-
-group.set(new MDEntryType('0'));
-group.set(new MDEntryPx(12.32));
-group.set(new MDEntrySize(100));
-group.set(new OrderID("ORDERID"));
-message.addGroup(group);
-
-group.set(new MDEntryType('1'));
-group.set(new MDEntryPx(12.32));
-group.set(new MDEntrySize(100));
-group.set(new OrderID("ORDERID"));
-message.addGroup(group);
-
\ No newline at end of file diff --git a/doc/html/java/repeating_groups_2.html b/doc/html/java/repeating_groups_2.html deleted file mode 100644 index 1035639e8..000000000 --- a/doc/html/java/repeating_groups_2.html +++ /dev/null @@ -1,24 +0,0 @@ -
-package quickfix;
-
-NoMDEntries noMDEntries = new NoMDEntries();
-message.get(noMDEntries);
-
-quickfix.fix42.MarketDataSnapshotFullRefresh.NoMDEntries group =
-  new quickfix.fix42.MarketDataSnapshotFullRefresh.NoMDEntries();
-MDEntryType MDEntryType = new MDEntryType();
-MDEntryPx MDEntryPx = new MDEntryPx();
-MDEntrySize MDEntrySize = new MDEntrySize();
-OrderID orderID = new OrderID();
-
-message.getGroup(1, group);
-group.get(MDEntryType);
-group.get(MDEntryPx);
-group.get(MDEntrySize);
-group.get(orderID);
-
-message.getGroup(2, group);
-group.get(MDEntryType);
-group.get(MDEntryPx);
-group.get(MDEntrySize);
-
\ No newline at end of file diff --git a/doc/html/java/sending_messages_1.html b/doc/html/java/sending_messages_1.html deleted file mode 100644 index e6ef599e3..000000000 --- a/doc/html/java/sending_messages_1.html +++ /dev/null @@ -1,20 +0,0 @@ -
-package quickfix;
-
-public static boolean sendToTarget(Message message)
-  throws SessionNotFound
-
-public static boolean sendToTarget(Message message, String qualifier)
-  throws SessionNotFound
-
-public static boolean sendToTarget(Message message, SessionID sessionID)
-  throws SessionNotFound
-
-public static boolean sendToTarget
-  (Message message, String senderCompID, String targetCompID)
-  throws SessionNotFound
-
-public static boolean sendToTarget
-  (Message message, String senderCompID, String targetCompID, String qualifier)
-  throws SessionNotFound
-
\ No newline at end of file diff --git a/doc/html/java/sending_messages_2.html b/doc/html/java/sending_messages_2.html deleted file mode 100644 index 1d71f935b..000000000 --- a/doc/html/java/sending_messages_2.html +++ /dev/null @@ -1,28 +0,0 @@ -
-import quickfix.*;
-
-public void sendOrderCancelRequest()
-{
-  Message message = new Message();
-  // BeginString
-  message.getHeader().setField(new StringField(8, "FIX.4.2"));
-  // SenderCompID
-  message.getHeader().setField(new StringField(49, "TW"));
-  // TargetCompID, with enumeration
-  message.getHeader().setField(new StringField(56, "TARGET"));
-  // MsgType
-  message.getHeader().setField(new CharField(35, 'F'));
-  // OrigClOrdID
-  message.setField(new StringField(41, "123"));
-  // ClOrdID
-  message.setField(new StringField(11, "321"));
-  // Symbol
-  message.setField(new StringField(55, "LNUX"));
-  // Side, with value enumeration
-  message.setField(new CharField(54, FIX::Side_BUY));
-  // Text
-  message.setField(new StringField(58, "Cancel My Order!"));
-
-  Session.sendToTarget(message);
-}
-
\ No newline at end of file diff --git a/doc/html/java/sending_messages_3.html b/doc/html/java/sending_messages_3.html deleted file mode 100644 index 323f57e25..000000000 --- a/doc/html/java/sending_messages_3.html +++ /dev/null @@ -1,23 +0,0 @@ -
-import quickfix.*;
-import quickfix.field.*;
-
-void sendOrderCancelRequest()
-{
-  Message message = new Message();
-  Header header = message.getHeader();
-
-  header.setField(new BeginString("FIX.4.2"));
-  header.setField(new SenderCompID(TW));
-  header.setField(new TargetCompID("TARGET"));
-  header.setField(new MsgType("D"));
-  message.setField(new OrigClOrdID("123"));
-  message.setField(new ClOrdID("321"));
-  message.setField(new Symbol("LNUX"));
-  message.setField(new Side(Side.BUY));
-  message.setField(new Text("Cancel My Order!"));
-
-  Session.sendToTarget(message);
-}
-
-
\ No newline at end of file diff --git a/doc/html/java/sending_messages_4.html b/doc/html/java/sending_messages_4.html deleted file mode 100644 index 405423c97..000000000 --- a/doc/html/java/sending_messages_4.html +++ /dev/null @@ -1,16 +0,0 @@ -
-import quickfix.*;
-
-void sendOrderCancelRequest()
-{
-  quickfix.fix41.OrderCancelRequest message(
-	new OrigClOrdID("123"),
-	new ClOrdID("321"),
-	new Symbol("LNUX"),
-	new Side(Side.BUY));
-
-  message.set(new Text("Cancel My Order!"));
-
-  Session.sendToTarget(message, "TW", "TARGET");
-}
-
\ No newline at end of file diff --git a/doc/html/java/user_defined_1.html b/doc/html/java/user_defined_1.html deleted file mode 100644 index 3b2c14c86..000000000 --- a/doc/html/java/user_defined_1.html +++ /dev/null @@ -1,4 +0,0 @@ -

-message.setField(new StringField(6123, "value"));
-StringField field = message.getField(new StringField(6123));
-
\ No newline at end of file diff --git a/doc/html/java/user_defined_2.html b/doc/html/java/user_defined_2.html deleted file mode 100644 index 2ee92ed00..000000000 --- a/doc/html/java/user_defined_2.html +++ /dev/null @@ -1,22 +0,0 @@ -
-// MyStringField.java
-
-import quickfix.StringField;
-
-public class MyStringField extends StringField
-{
-  public MyStringField() { super(6123); }
-  public MyStringField(String data) { super(6123, data); }
-}
-
-// MyPriceField.java
-
-import quickfix.DoubleField;
-
-public class MyPriceField extends DoubleField
-{
-  public MyPriceField() { super(8756); }
-  public MyPriceField(double data) { super(8756, data); }
-}
-
-
\ No newline at end of file diff --git a/doc/html/java/user_defined_3.html b/doc/html/java/user_defined_3.html deleted file mode 100644 index 30a9e9659..000000000 --- a/doc/html/java/user_defined_3.html +++ /dev/null @@ -1,10 +0,0 @@ -

-MyStringField stringField = new MyStringField("string");
-MyPriceField priceField = new MyPriceField(14.54);
-
-message.setField(stringField);
-message.setField(priceField);
-
-message.getField(stringField);
-message.getField(priceField);
-
\ No newline at end of file diff --git a/doc/html/license.html b/doc/html/license.html index b54d2f44d..1ee18d275 100644 --- a/doc/html/license.html +++ b/doc/html/license.html @@ -1,114 +1,57 @@ - - - + - - - - QuickFIX License - - - - + + QuickFIX License + - -

QuickFIX License

- - - -The
QuickFIX Software License, Version 1.0
- -
- -Copyright (c) 2001-2010 quickfixengine.org All rights - -reserved.
- -
- -Redistribution and use in source and binary forms, with or without - -modification, are permitted provided that the following conditions - -are met:
- -
- -1. Redistributions of source code must retain the above copyright - - notice, this list of conditions and the following disclaimer.
- -
- -2. Redistributions in binary form must reproduce the above copyright - - notice, this list of conditions and the following disclaimer in - - the documentation and/or other materials provided with the - - distribution.
- -
- -3. The end-user documentation included with the redistribution, - - if any, must include the following acknowledgment: - - "This product includes software developed by - - quickfixengine.org http://www.quickfixengine.org/ - - Alternately, this acknowledgment may appear in the software itself, - - if and wherever such third-party acknowledgments normally appear.
- -
- -4. The names "QuickFIX" and "quickfixengine.org" must - - not be used to endorse or promote products derived from this - - software without prior written permission. For written - - permission, please contact quickfix-users@lists.sourceforge.net.
- -
- -5. Products derived from this software may not be called "QuickFIX", - - nor may "QuickFIX" appear in their name, without prior written - - permission of quickfixengine.org
- -
- -THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - -DISCLAIMED. IN NO EVENT SHALL QUICKFIXENGINE.ORG OR - -ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - -SUCH DAMAGE.
- +

QuickFIX License

The QuickFIX Software License, + Version 1.0
+
+ Copyright (c) 2001-2014 Oren Miller +
+ Redistribution and use in source and binary forms, with or + without modification, are permitted provided that the following + conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution.
+
+ 3. The end-user documentation included with the redistribution, + if any, must include the following acknowledgment: "This product + includes software developed by quickfixengine.org http://www.quickfixengine.org/ + Alternately, this acknowledgment may appear in the software + itself, if and wherever such third-party acknowledgments normally + appear.
+
+ 4. The names "QuickFIX" and "quickfixengine.org" must not be used + to endorse or promote products derived from this software without + prior written permission. For written permission, please contact + quickfix-users@lists.sourceforge.net.
+
+ 5. Products derived from this software may not be called + "QuickFIX", nor may "QuickFIX" appear in their name, without + prior written permission of quickfixengine.org
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL QUICKFIXENGINE.ORG OR ITS + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE.
- - diff --git a/doc/html/project.html b/doc/html/project.html index c86fb38c0..70b3822a6 100644 --- a/doc/html/project.html +++ b/doc/html/project.html @@ -1,129 +1,65 @@ - + - - Setting Up Your Project -

Setting Up Your Project

- - - -

- Before using quickfix, you must make sure that your project has build settings that - are compatible. Being a portable piece of code, some tradeoffs needed to be made concerning - the areas of portability, maintainability, performance, testability, and features. -

-

- QuickFIX makes use of many advanced features of C++ that help and hinder some of these - areas. We believe that for QuickFIX to be the best product it could be, the use of templates, - exceptions, and the STL were important in most elegantly expressing the logic and data of a FIX - engine. Therefore it is necessary that your compiler support these features. Most - modern compilers will have no problem however there are some caveats which will be listed - in the following sections. -

- -

-

-

- - -

Windows (C++)

-

- The following settings concerning quickfix can all be found under the project | properties - dialog box in Microsoft Visual Studio. All pages in this dialog box are organized by tabs - and catagories. When refering to a setting, the format tab | catagory | setting will be - used. -

-

-

    -
  • C/C++ | Optimization | Optimization, can be set to whatever you prefer. The quickfix - library by default is built with Maximize Speed but your project does not need - to use the same setting. -
  • C/C++ | Code Generation | Enable C++ Exceptions, should be Yes. -
  • C/C++ | Code Generation | Runtime Library, should be set to Multithreaded DLL - or Debug Multithreaded DLL. If you want to use a different setting, you must rebuild QuickFIX with - the same setting. QuickFIX cannot currently be built single threaded. -
  • C/C++ | General | Additional Include Directories, must have a directory - for accessing the QuickFIX header files. We reccomend setting this to a couple - directories above the header files so your includes can look like #include - <quickfix/Application.h>. This helps resolves ambiguities between your - application and other third party libraries. -
  • Linker | Input | Additional Dependencies, must contain the quickfix.lib - file. It must also have ws2_32.lib. This library links the winsock library into your - application. -
  • Linker | General | Additional Library Directories, must have the directory where quickfix.lib resides. -
-

- -
-

Windows (.NET)

-

- This couldn't be simpler. -

-
    -
  • Add the quickfix_net.dll and quickfix_net_message.dll to the references - section of your projects. -
-

- -
-

Linux/Solaris

-

- Linux/Solaris have several caveats. Using GCC you have to keep a couple things in mind. Support - for C++ is adequate but not great. The unix world is still primarily driven by C and therefore - the tools are more readily available and optimized for C. Although everything builds and works - correctly under Linux and Solaris, there are a few things to keep in mind. -

-

-

    -
  • Because GCC isn't particularly optimized for C++ code, GCC compiled code tends to be slower than code compiled - by some of the commercially available compilers. If you feel you need more performance, you may - want to try one of these compilers. If you do this, please run the unit tests and acceptance - tests to verify everything works as it should. We only currently do our testing with GCC. -
  • STL implementations that come with Versions of GCC 2.95.x, are not safe for use on - multi-processor machines. Use STLport or upgrade to a version - 3.x.x. STLport also tends to be faster then the - implementation that comes with GCC. -
-

-

- There are a lot of choices for how to build under a unix environment. We use GNU autotools, - however a lot of people don't. Instead of going over setting up an autotools project (a complex - topic that I could not do justice here), I will simply cover what parameters need to be passed - into your compiler and linker. -

-

-

    -
  • Exceptions must be enabled with -fexceptions -
  • The -finline-functions optimization is recommended. Much of quickfix is in templates - declared in header files. Allowing the compiler to inline some of these functions can - help to optimize many frequent calls. -
  • Quickfix library must be linked in with -lquickfix -
  • Quickfix makes use of pthreads and libxml. These must be linked in with -lpthread, - -lxml2 and -lz -
  • In addition to the above, on Solaris you must link with -lnsl and -lsocket -
    NB: GNU ld is a one-pass linker, so order is important. Put more generally - useful libraries (libsocket) last on the command line. -
- - The actual placement of the quickfix library and header files should have been done for you - when you ran make install after building quickfix. -

- - -
-

Java

-

- The QuickFIX/J jar file has been provided for your convenience. It is recommended you - download the full QuickFIX/J projects from www.quickfixj.org. -

-

-

    -
  • When compiling, make sure quickfixj.jar is in your classpath. -
-

+ + + + Setting Up Your Project + + + +
+
+ Setting Up Your Project +
+
+ +
+

Windows

+ +

Open project | properties in Microsoft Visual + Studio.

+ +
    +
  • C/C++ | Code Generation | Enable C++ + Exceptions, should be Yes.
  • + +
  • C/C++ | Code Generation | Runtime + Library, should be set to Multithreaded DLL or + Debug Multithreaded DLL.
  • + +
  • C/C++ | General | Additional Include + Directories add the root quickfix directory.
  • + +
  • Linker | Input | Additional + Dependencies, must contain quickfix.lib and + ws2_32.lib.
  • + +
  • Linker | General | Additional Library + Directories, add the quickfix/lib directory.
  • +
+ +

Linux/Solaris

+ +
    +
  • Exceptions must be enabled with -fexceptions
  • + +
  • The -finline-functions optimization is + recommended.
  • + +
  • Quickfix library must be linked in with + -lquickfix
  • + +
  • Quickfix makes use of pthreads and libxml. These must be + linked in with -lpthread, -lxml2 and + -lz
  • + +
  • On Solaris you must link with -lnsl and + -lsocket
  • + +
  • GNU ld is a one-pass linker. Put more generally + useful libraries (libsocket) last on the command line.
  • +
+
+ diff --git a/doc/html/python/application_1.html b/doc/html/python/application_1.html index e8edfd38c..cbe6a637b 100644 --- a/doc/html/python/application_1.html +++ b/doc/html/python/application_1.html @@ -1,10 +1,21 @@ -
-class Application(_object):
-	def onCreate(self, sessionID): return
-	def onLogon(self, sessionID): return
-	def onLogout(self, sessionID): return
-	def toAdmin(self, message, sessionID): return
-	def toApp(self, message, sessionID): return
-	def fromAdmin(self, message, sessionID): return
-	def fromApp(self, message, sessionID): return
-
+ + + + + + + + +
+class Application(_object):
+        def onCreate(self, sessionID): return
+        def onLogon(self, sessionID): return
+        def onLogout(self, sessionID): return
+        def toAdmin(self, message, sessionID): return
+        def toApp(self, message, sessionID): return
+        def fromAdmin(self, message, sessionID): return
+        def fromApp(self, message, sessionID): return
+
+
+ + diff --git a/doc/html/python/application_2.html b/doc/html/python/application_2.html index 9b24ef0ae..ec05de9ab 100644 --- a/doc/html/python/application_2.html +++ b/doc/html/python/application_2.html @@ -1,18 +1,29 @@ -
-import quickfix
+
 
-if len(sys.argv) < 2: return
+
+
+  
+
+
+
+  
+import quickfix
+
+if len(sys.argv) < 2: return
 fileName = sys.argv[1]
 
 try:
-	settings = quickfix.SessionSettings(fileName)
-	application = quickfix.MyApplication()
-	storeFactory = quickfix.FileStoreFactory(settings)
-	logFactory = quickfix.FileLogFactory(settings)
-	acceptor = quickfix.SocketAcceptor(application, storeFactory, settings, logFactory)
-	acceptor.start()
-	# while condition == true: do something
-	acceptor.stop()
+        settings = quickfix.SessionSettings(fileName)
+        application = quickfix.MyApplication()
+        storeFactory = quickfix.FileStoreFactory(settings)
+        logFactory = quickfix.FileLogFactory(settings)
+        acceptor = quickfix.SocketAcceptor(application, storeFactory, settings, logFactory)
+        acceptor.start()
+        # while condition == true: do something
+        acceptor.stop()
 except quickfix.ConfigError, e:
-	print e
-
+ print e +
+
+ + diff --git a/doc/html/python/receiving_messages_1.html b/doc/html/python/receiving_messages_1.html index a40018307..c037bf1dc 100644 --- a/doc/html/python/receiving_messages_1.html +++ b/doc/html/python/receiving_messages_1.html @@ -1,7 +1,18 @@ -
-import quickfix
+
+
+
+
+  
+
+
+
+  
+import quickfix
 
 def fromApp(self, message, sessionID):
-	field = quickfix.StringField(44)
-	message.getField(field)
-
\ No newline at end of file + field = quickfix.StringField(44) + message.getField(field) +
+
+ + diff --git a/doc/html/python/receiving_messages_2.html b/doc/html/python/receiving_messages_2.html index be5923023..28048f30e 100644 --- a/doc/html/python/receiving_messages_2.html +++ b/doc/html/python/receiving_messages_2.html @@ -1,10 +1,21 @@ -
-import quickfix
+
+
+
+
+  
+
+
+
+  
+import quickfix
 
 def fromApp(self, message, sessionID):
-	price = quickfix.Price()
-	message.getField(price)
+        price = quickfix.Price()
+        message.getField(price)
 
-	clOrdID = quickfix.ClOrdID()
-	message.getField(clOrdID)
-
\ No newline at end of file + clOrdID = quickfix.ClOrdID() + message.getField(clOrdID) +
+
+ + diff --git a/doc/html/python/repeating_groups_1.html b/doc/html/python/repeating_groups_1.html index 17c12822d..0c141d305 100644 --- a/doc/html/python/repeating_groups_1.html +++ b/doc/html/python/repeating_groups_1.html @@ -1,5 +1,13 @@ -
-import quickfix
+
+
+
+
+  
+
+
+
+  
+import quickfix
 import quickfix42
 
 message = quickfix42.MarketDataSnapshotFullRefresh()
@@ -16,4 +24,7 @@
 group.setField(quickfix.MDEntrySize(100))
 group.setField(quickfix.OrderID("ORDERID"))
 message.addGroup( group )
-
+
+
+ + diff --git a/doc/html/python/repeating_groups_2.html b/doc/html/python/repeating_groups_2.html index 0e247aa4f..090674b4a 100644 --- a/doc/html/python/repeating_groups_2.html +++ b/doc/html/python/repeating_groups_2.html @@ -1,11 +1,19 @@ -
-import quickfix
+
+
+
+
+  
+
+
+
+  
+import quickfix
 import quickfix42
 
 noMDEntries = quickfix.NoMDEntries()
 message.getField(noMDEntries)
 
-group = quickfix42.MarketDataSnapshotFillRefresh.NoMDEntries()
+group = quickfix42.MarketDataSnapshotFullRefresh.NoMDEntries()
 MDEntryType = quickfix.MDEntryType()
 MDEntryPx = quickfix.MDEntryPx()
 MDEntrySize = quickfix.MDEntrySize()
@@ -22,4 +30,7 @@
 group.getField(MDEntryPx);
 group.getField(MDEntrySize);
 group.getField(orderID);
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/python/sending_messages_1.html b/doc/html/python/sending_messages_1.html index 216b476bd..80b4fb964 100644 --- a/doc/html/python/sending_messages_1.html +++ b/doc/html/python/sending_messages_1.html @@ -1,5 +1,13 @@ -
-def sendToTarget(message):
+
+
+
+
+  
+
+
+
+  
+def sendToTarget(message):
 
 def sendToTarget(message, qualifier):
 
@@ -8,4 +16,7 @@
 def sendToTarget(message, senderCompID, targetCompID):
 
 def sendToTarget(message, senderCompID, targetCompID, qualifier):
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/python/sending_messages_2.html b/doc/html/python/sending_messages_2.html index a3043392f..aa898a4d3 100644 --- a/doc/html/python/sending_messages_2.html +++ b/doc/html/python/sending_messages_2.html @@ -1,26 +1,37 @@ -
-from quickfix import *
+
+
+
+
+  
+
+
+
+  
+from quickfix import *
 
 def sendOrderCancelRequest:
-	message = quickfix.Message()
-	# BeginString
-	message.getHeader().setField(quickfix.StringField(8, "FIX.4.2"))
-	# SenderCompID
-	message.getHeader().setField(quickfix.StringField(49, "TW"))
-	# TargetCompID, with enumeration
-	message.getHeader().setField(quickfix.StringField(56, "TARGET"))
-	# MsgType
-	message.getHeader().setField(quickfix.CharField(35, 'F'))
-	# OrigClOrdID
-	message.setField(quickfix.StringField(41, "123"))
-	# ClOrdID
-	message.setField(quickfix.StringField(11, "321"))
-	# Symbol
-	message.setField(quickfix.StringField(55, "LNUX"))
-	# Side, with value enumeration
-	message.setField(quickfix.CharField(54, quickfix.Side_BUY))
-	# Text
-	message.setField(quickfix.StringField(58, "Cancel My Order!"))
+        message = quickfix.Message()
+        # BeginString
+        message.getHeader().setField(quickfix.StringField(8, "FIX.4.2"))
+        # SenderCompID
+        message.getHeader().setField(quickfix.StringField(49, "TW"))
+        # TargetCompID, with enumeration
+        message.getHeader().setField(quickfix.StringField(56, "TARGET"))
+        # MsgType
+        message.getHeader().setField(quickfix.CharField(35, 'F'))
+        # OrigClOrdID
+        message.setField(quickfix.StringField(41, "123"))
+        # ClOrdID
+        message.setField(quickfix.StringField(11, "321"))
+        # Symbol
+        message.setField(quickfix.StringField(55, "LNUX"))
+        # Side, with value enumeration
+        message.setField(quickfix.CharField(54, quickfix.Side_BUY))
+        # Text
+        message.setField(quickfix.StringField(58, "Cancel My Order!"))
 
-	Session.sendToTarget(message);
-
+ Session.sendToTarget(message); +
+
+ + diff --git a/doc/html/python/sending_messages_3.html b/doc/html/python/sending_messages_3.html index 335504954..294ce3058 100644 --- a/doc/html/python/sending_messages_3.html +++ b/doc/html/python/sending_messages_3.html @@ -1,19 +1,30 @@ -
-from quickfix import *
+
+
+
+
+  
+
+
+
+  
+from quickfix import *
 
 def sendOrderCancelRequest:
-	message = quickfix.Message();
-	header = message.getHeader();
+        message = quickfix.Message();
+        header = message.getHeader();
 
-	header.setField(quickfix.BeginString("FIX.4.2"))
-	header.setField(quickfix.SenderCompID(TW))
-	header.setField(quickfix.TargetCompID("TARGET"))
-	header.setField(quickfix.MsgType("D"))
-	message.setField(quickfix.OrigClOrdID("123"))
-	message.setField(quickfix.ClOrdID("321"))
-	message.setField(quickfix.Symbol("LNUX"))
-	message.setField(quickfix.Side(Side_BUY))
-	message.setField(quickfix.Text("Cancel My Order!"))
+        header.setField(quickfix.BeginString("FIX.4.2"))
+        header.setField(quickfix.SenderCompID(TW))
+        header.setField(quickfix.TargetCompID("TARGET"))
+        header.setField(quickfix.MsgType("D"))
+        message.setField(quickfix.OrigClOrdID("123"))
+        message.setField(quickfix.ClOrdID("321"))
+        message.setField(quickfix.Symbol("LNUX"))
+        message.setField(quickfix.Side(Side_BUY))
+        message.setField(quickfix.Text("Cancel My Order!"))
 
-	Session.sendToTarget(message)
-
+ Session.sendToTarget(message) +
+
+ + diff --git a/doc/html/python/user_defined_1.html b/doc/html/python/user_defined_1.html index 48ebf1bcd..9096584ae 100644 --- a/doc/html/python/user_defined_1.html +++ b/doc/html/python/user_defined_1.html @@ -1,4 +1,16 @@ -

+
+
+
+
+  
+
+
+
+  
+
 message.setField(quickfix.StringField(6123, "value"))
 field = message.getField(quickfix.StringField(6123))
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/python/user_defined_2.html b/doc/html/python/user_defined_2.html index 8fa627bdc..2918d086c 100644 --- a/doc/html/python/user_defined_2.html +++ b/doc/html/python/user_defined_2.html @@ -1,17 +1,34 @@ -

+
+
+
+
+  
+
+
+
+  
+ +
+ +
+
 from quickfix import *
 
 class MyStringField(quickfix.StringField):
-	def __init__(self, data = None)
-		if data == None:
-			quickfix.StringField.__init__(self, 6123)
-		else:
-			quickfix.StringField.__init__(self, 6123, data)
+        def __init__(self, data = None)
+                if data == None:
+                        quickfix.StringField.__init__(self, 6123)
+                else:
+                        quickfix.StringField.__init__(self, 6123, data)
 
 class MyPriceField(quickfix.DoubleField):
-	def __init__(self, data = None)
-		if data == None:
-			quickfix.DoubleField.__init__(self, 8756)
-		else:
-			quickfix.DoubleField.__init__(self, 8756, data)
-
+ def __init__(self, data = None) + if data == None: + quickfix.DoubleField.__init__(self, 8756) + else: + quickfix.DoubleField.__init__(self, 8756, data) + +
+ + + diff --git a/doc/html/python/user_defined_3.html b/doc/html/python/user_defined_3.html index 8a58e9a14..3cad29f40 100644 --- a/doc/html/python/user_defined_3.html +++ b/doc/html/python/user_defined_3.html @@ -1,4 +1,17 @@ -

+
+
+
+
+  
+
+
+
+  
+ +
+ +
+
 stringField = MyStringField("string")
 priceField = MyPriceField(14.54)
 
@@ -7,4 +20,8 @@
 
 message.getField(stringField)
 message.getField(priceField)
-
\ No newline at end of file + +
+ + + diff --git a/doc/html/quickfix.css b/doc/html/quickfix.css index b02587744..84c3b89ee 100644 --- a/doc/html/quickfix.css +++ b/doc/html/quickfix.css @@ -1,67 +1,28 @@ -a:link { - color: rgb(144, 136, 206); - font-weight: bold; - font-family: arial; - font-size: 12; -} -a:visited { - color: rgb(144, 136, 206); - font-weight: bold; - font-family: arial; - font-size: 12; -} -a:hover { - color: black; - font-weight: bold; - font-family: arial; - font-size: 12; -} -hr { - color: rgb(144, 136, 206); - size: 2; -} -font { - color: black; - font-family: arial; - font-size: 12; -} -font.title { - color: white; - font-family: arial; - font-weight: bold; - font-size: 14; -} -font.header { - font-weight: bold; - font-size: 11; -} -font.header2 { - font-weight: bold; - font-size: 10; -} -font.hi { - color: black; - font-family: arial; - font-weight: bold; - font-size: 12; -} -td.outsideLeft { - background: url("images/outsideLeft.gif"); - background-repeat: repeat; -} -td.outsideRight { - background: url("images/outsideRight.gif"); - background-repeat: repeat; -} -td.outsideTop { - background: url("images/outsideTop.gif"); - background-repeat: repeat; -} -td.outsideBottom { - background: url("images/outsideBottom.gif"); - background-repeat: repeat; -} -td.titleTop { - background: url("images/titleTabTop.gif"); - background-repeat: repeat; -} + + + + + + + + + a:link { color: rgb(144, 136, 206); font-weight: bold; + font-family: arial; font-size: 12; } a:visited { color: rgb(144, + 136, 206); font-weight: bold; font-family: arial; font-size: 12; + } a:hover { color: black; font-weight: bold; font-family: arial; + font-size: 12; } hr { color: rgb(144, 136, 206); size: 2; } font + { color: black; font-family: arial; font-size: 12; } font.title { + color: white; font-family: arial; font-weight: bold; font-size: + 14; } font.header { font-weight: bold; font-size: 11; } + font.header2 { font-weight: bold; font-size: 10; } font.hi { + color: black; font-family: arial; font-weight: bold; font-size: + 12; } td.outsideLeft { background: url("images/outsideLeft.gif"); + background-repeat: repeat; } td.outsideRight { background: + url("images/outsideRight.gif"); background-repeat: repeat; } + td.outsideTop { background: url("images/outsideTop.gif"); + background-repeat: repeat; } td.outsideBottom { background: + url("images/outsideBottom.gif"); background-repeat: repeat; } + td.titleTop { background: url("images/titleTabTop.gif"); + background-repeat: repeat; } + + diff --git a/doc/html/receiving_messages.html b/doc/html/receiving_messages.html index 3548e6ed7..108dfc47c 100644 --- a/doc/html/receiving_messages.html +++ b/doc/html/receiving_messages.html @@ -1,133 +1,124 @@ - + - - Receiving Messages -

Receiving Messages

- - -

- Most of the messages you will be interested in looking at will be arriving in your overloaded - fromApp function of your application. You can get fields out of messages with different - degrees of type safety. The type in question here is the FIX message type. When the application - passes you a Message class, the C++ type checker has no idea what specific FIX message it is, you - must determine that dynamically. There is, however, a way we can make C++ aware of this type information. - First we will cover how to dynamically retreive fields from a message, then we will show you the - prefered type safe way. Keep in mind that all messages have a header and a trailer. If you want - to see fields in them, you must first call getHeader() or getTrailer() to get access - to them. Otherwise you use them just like the message. -

- -

Least Type Safe

-

- This method of retreiving data from messages is strongly discouraged and is generally only useful - for writing more low level interfaces for other languages and middleware. -

- Here is a sample code segment for this type of retrieval: -

- See this code in C#, VB.NET, PYTHON, RUBY -
-    void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
-      throw( FIX::FieldNotFound&, FIX::IncorrectDataFormat&, FIX::IncorrectTagValue&, FIX::UnsupportedMessageType& )
-    {
-      // retreive value into string with integer field ID
-      std::string value;
-      value = message.getField(44);
-
-      // retrieve value into a field base with integer field ID
-      FIX::FieldBase field(44, "");
-      message.getField(field);
-
-      // retreive value with an enumeration, a little better
-      message.getField(FIX::FIELD::Price);
-    }
-    
- -

More Type Safe

-

- A way to add some type safety to this is by using field classes that represent all the FIX - defined fields. This is sometimes useful in an application, but is generally only used within - code segments that need to be version independent (meaning versions of FIX). For example, our - Session class is implemented using mostly these. It is generally not recomended for most - applications. This will also get fields as their appropriate type, not just as strings. -

- See this code in C#, VB.NET, PYTHON, RUBY -
-    void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
-      throw( FIX::FieldNotFound&, FIX::IncorrectDataFormat&, FIX::IncorrectTagValue&, FIX::UnsupportedMessageType& )
-    {
-      // retreive value into field class
-      FIX::Price price;
-      message.getField(price);
-
-      // another field...
-      FIX::ClOrdID clOrdID;
-      message.getField(clOrdID);
-    }
-	
- -

Most Type Safe... DO THIS!

-

- Here is the most type safe and highly encouraged method for retreiving data from a message. - QuickFIX has message classes that correlate to all the messages defined in the spec. They are, just - like the field classes, generated directly off of the FIX specifications. To take advantage of this, - you must break the messages out with the supplied MessageCracker. Also notice we are no longer - using a generic Message class and we are now using get instead of getField. Keep - in mind you can still use getField as all of these classes derive from Message -

- See this code in C#, VB.NET, PYTHON(not supported), RUBY(not supported) -
-    void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
-      throw( FIX::FieldNotFound&, FIX::IncorrectDataFormat&, FIX::IncorrectTagValue&, FIX::UnsupportedMessageType& )
-    {
-      crack(message, sessionID);
-    }
-
-    void onMessage( const FIX42::NewOrderSingle& message, const FIX::SessionID& )
-    {
-      FIX::ClOrdID clOrdID;
-      message.get(clOrdID);
-
-      FIX::ClearingAccount clearingAccount;
-      message.get(clearingAccount);
-    }
-
-    void onMessage( const FIX41::NewOrderSingle& message, const FIX::SessionID& )
-    {
-      FIX::ClOrdID clOrdID;
-      message.get(clOrdID);
-
-      // compile time error!! field not defined in FIX41
-      FIX::ClearingAccount clearingAccount;
-      message.get(clearingAccount);
-    }
-
-    void onMessage( const FIX42::OrderCancelRequest& message, const FIX::SessionID& )
-    {
-      FIX::ClOrdID clOrdID;
-      message.get(clOrdID);
-
-      // compile time error!! field not defined for OrderCancelRequest
-      FIX::Price price;
-      message.get(price);
-    }
-    
- -

- In order to use this you must use the MessageCracker as a mixin to your application. - This will provide you with the crack function and allow you to overload specific message - functions. Any function you do not overload will by default throw an UnsupportedMessageType - exception

- Define your application like this: -

- See this code in C#, VB.NET, PYTHON(not supported), RUBY(not supported) -
-    #include "quickfix/Application.h"
-    #include "quickfix/MessageCracker.h"
-
-    class MyApplication
-    : public FIX::Application,
-      public FIX::MessageCracker
-    

-  
+
+  
+
+  Receiving Messages
+
+
+
+  
+
+ Receiving Messages +
+
+ +
+

Most of the messages you will be interested in looking at + will be arriving in your overloaded fromApp function of + your application. All messages have a header and a trailer. If + you want to see those fields, you must call getHeader() + or getTrailer() on the message to access them.

+ +

Type Safe Messages And Fields

+ +

QuickFIX has a class for all messages defined in the + standard spec.

+
+void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
+  throw( FIX::FieldNotFound&, FIX::IncorrectDataFormat&, FIX::IncorrectTagValue&, FIX::UnsupportedMessageType& )
+{
+  crack(message, sessionID);
+}
+
+void onMessage( const FIX42::NewOrderSingle& message, const FIX::SessionID& )
+{
+  FIX::ClOrdID clOrdID;
+  message.get(clOrdID);
+
+  FIX::ClearingAccount clearingAccount;
+  message.get(clearingAccount);
+}
+
+void onMessage( const FIX41::NewOrderSingle& message, const FIX::SessionID& )
+{
+  FIX::ClOrdID clOrdID;
+  message.get(clOrdID);
+
+  // compile time error!! field not defined in FIX41
+  FIX::ClearingAccount clearingAccount;
+  message.get(clearingAccount);
+}
+
+void onMessage( const FIX42::OrderCancelRequest& message, const FIX::SessionID& )
+{
+  FIX::ClOrdID clOrdID;
+  message.get(clOrdID);
+
+  // compile time error!! field not defined for OrderCancelRequest
+  FIX::Price price;
+  message.get(price);
+}
+
+ +

In order to use this you must use the MessageCracker + as a mixin to your application. This will provide you with the + crack function and allow you to overload specific + message functions. Any function you do not overload will by + default throw an UnsupportedMessageType exception
+
+ Define your application like this:

+
+#include "quickfix/Application.h"
+#include "quickfix/MessageCracker.h"
+
+class MyApplication
+: public FIX::Application,
+  public FIX::MessageCracker
+
+ +

Type Safe Fields Only

+ +

Use the getField method to get any field from any + message.

See this code in PYTHON, RUBY +
+void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
+  throw( FIX::FieldNotFound&, FIX::IncorrectDataFormat&, FIX::IncorrectTagValue&, FIX::UnsupportedMessageType& )
+{
+  // retrieve value into field class
+  FIX::Price price;
+  message.getField(price);
+
+  // another field...
+  FIX::ClOrdID clOrdID;
+  message.getField(clOrdID);
+}
+
+ +

No Type Safety

+ +

Create your own fields using tag numbers.

See this code + in PYTHON, + RUBY +
+void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID )
+  throw( FIX::FieldNotFound&, FIX::IncorrectDataFormat&, FIX::IncorrectTagValue&, FIX::UnsupportedMessageType& )
+{
+  // retreive value into string with integer field ID
+  std::string value;
+  value = message.getField(44);
+
+  // retrieve value into a field base with integer field ID
+  FIX::FieldBase field(44, "");
+  message.getField(field);
+
+  // retreive value with an enumeration, a little better
+  message.getField(FIX::FIELD::Price);
+}
+
+
+ diff --git a/doc/html/repeating_groups.html b/doc/html/repeating_groups.html index f6883227c..7d9b0c6e1 100644 --- a/doc/html/repeating_groups.html +++ b/doc/html/repeating_groups.html @@ -1,58 +1,67 @@ - + - - Repeating Groups -

Repeating Groups

- - - QuickFIX has the ability to send messages containing repeating groups and even recursive - repeating groups. All repeating groups begin with a field that indicates how many repeating - groups are in a set. A group can be created by referencing a class named after this field - scoped within the parent message or group. + + -

Creating Messages With Repeating Groups

+ Repeating Groups + -

- Here is an example of a message that distributes market data. When the message is created - the required field with the number of repeating groups is set to zero. This is because - QuickFIX will automatically set this field for you when you add groups. This way there is - never an inconsistancy between the number of entries in the field and in the message. -

+ +
+
+ Repeating Groups +
+
- See this code in C#, VB.NET, PYTHON, RUBY -
+  
+ QuickFIX has the ability to send messages containing repeating + groups and even recursive repeating groups. All repeating + groups begin with a field that indicates how many repeating + groups are in a set. A group can be created by referencing a + class named after this field scoped within the parent message + or group. + +

Creating Messages With Repeating Groups

+ +

When a message is created the required field declaring the + number of repeating groups is set to zero. QuickFIX will + automatically increment field for you as you add groups.

See + this code in PYTHON, RUBY +
     // create a market data message
-    FIX42::MarketDataSnapshotFullRefresh message(FIX::Symbol("QF"));
+    FIX42::MarketDataSnapshotFullRefresh message(FIX::Symbol("QF"));
 
     // repeating group in the form of MessageName::NoField
-    FIX42::MarketDataSnapshotFullRefresh::NoMDEntries group;
+    FIX42::MarketDataSnapshotFullRefresh::NoMDEntries group;
     group.set(FIX::MDEntryType('0'));
     group.set(FIX::MDEntryPx(12.32));
     group.set(FIX::MDEntrySize(100));
     group.set(FIX::OrderID("ORDERID"));
-    message.addGroup(group);
+    message.addGroup(group);
 
     // no need to create a new group class if we are reusing the fields
-    group.set(FIX::MDEntryType('1'));
+    group.set(FIX::MDEntryType('1'));
     group.set(FIX::MDEntryPx(12.32));
     group.set(FIX::MDEntrySize(100));
     group.set(FIX::OrderID("ORDERID"));
-    message.addGroup(group);
-    
+ message.addGroup(group); +
-

Reading Messages With Repeating Groups

+

Reading Messages With Repeating Groups

-

- To pull a group out of a message you need to supply the group you wish to pull out. You should - first inspect the number of entries field (which the group is named after) to get the total number - of groups. The message that was created above is now parsed back out below. -

- - See this code in C#, VB.NET, PYTHON, RUBY -
+    

To pull a group out of a message you need to supply the + group object you wish to pull out. You should first inspect the + number of entries field (which the group is named after) to get + the total number of groups. The message that was created above + is now parsed in this example.

See this code in PYTHON, RUBY +
     // should be 2
-    FIX::NoMDEntries noMDEntries;
+    FIX::NoMDEntries noMDEntries;
     message.get(noMDEntries);
 
     FIX42::MarketDataSnapshotFullRefresh::NoMDEntries group;
@@ -71,8 +80,8 @@ 

Reading Messages With Repeating Groups

group.get(MDEntryType); group.get(MDEntryPx); group.get(MDEntrySize); - group.get(orderID);
-
- - + group.get(orderID); +
+ + diff --git a/doc/html/ruby/application_1.html b/doc/html/ruby/application_1.html index cf552beca..4ac99be81 100644 --- a/doc/html/ruby/application_1.html +++ b/doc/html/ruby/application_1.html @@ -1,26 +1,37 @@ -
-class Application < Quickfix::Application
+
 
-	def onCreate(sessionID)
-	end
+
+
+  
+
 
-	def onLogon(sessionID)
-	end
+
+  
+class Application < Quickfix::Application
 
-	def onLogout(sessionID)
-	end
+        def onCreate(sessionID)
+        end
 
-	def toAdmin(sessionID, message)
-	end
+        def onLogon(sessionID)
+        end
 
-	def toApp(sessionID, message)
-	end
+        def onLogout(sessionID)
+        end
 
-	def fromAdmin(sessionID, message)
-	end
+        def toAdmin(sessionID, message)
+        end
 
-	def fromApp(sessionID, message)
-	end
+        def toApp(sessionID, message)
+        end
+
+        def fromAdmin(sessionID, message)
+        end
+
+        def fromApp(sessionID, message)
+        end
 
 end
-
+
+
+ + diff --git a/doc/html/ruby/application_2.html b/doc/html/ruby/application_2.html index 5703248bf..423d38165 100644 --- a/doc/html/ruby/application_2.html +++ b/doc/html/ruby/application_2.html @@ -1,20 +1,31 @@ -
-require 'quickfix_ruby'
+
 
-return if ARGV.length < 2
+
+
+  
+
+
+
+  
+require 'quickfix_ruby'
+
+return if ARGV.length < 2
 
 fileName = ARGV[0]
 
 begin
-	settings = Quickfix::SessionSettings.new( fileName )
-	application = MyApplication.new
-	storeFactory = Quickfix::FileStoreFactory.new( settings )
-	logFactory = Quickfix::ScreenLogFactory.new( settings )
-	acceptor = Quickfix::SocketAcceptor.new( application, storeFactory, settings, logFactory )
-	acceptor.start()
-	# while condition == true: do something
-	acceptor.stop()
-rescue Quickfix::ConfigError => e
-	print e
+        settings = Quickfix::SessionSettings.new( fileName )
+        application = MyApplication.new
+        storeFactory = Quickfix::FileStoreFactory.new( settings )
+        logFactory = Quickfix::ScreenLogFactory.new( settings )
+        acceptor = Quickfix::SocketAcceptor.new( application, storeFactory, settings, logFactory )
+        acceptor.start()
+        # while condition == true: do something
+        acceptor.stop()
+rescue Quickfix::ConfigError => e
+        print e
 end
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/receiving_messages_1.html b/doc/html/ruby/receiving_messages_1.html index 225247147..49afc5853 100644 --- a/doc/html/ruby/receiving_messages_1.html +++ b/doc/html/ruby/receiving_messages_1.html @@ -1,8 +1,19 @@ -
-require 'quickfix_ruby'
+
+
+
+
+  
+
+
+
+  
+require 'quickfix_ruby'
 
 def fromApp(message, sessionID):
-	field = Quickfix::StringField.new(44)
-	message.getField(field)
+        field = Quickfix::StringField.new(44)
+        message.getField(field)
 end
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/receiving_messages_2.html b/doc/html/ruby/receiving_messages_2.html index ddacae84e..c6b8bd045 100644 --- a/doc/html/ruby/receiving_messages_2.html +++ b/doc/html/ruby/receiving_messages_2.html @@ -1,11 +1,22 @@ -
-require 'quickfix_ruby'
+
+
+
+
+  
+
+
+
+  
+require 'quickfix_ruby'
 
 def fromApp(message, sessionID):
-	price = Quickfix::Price.new()
-	message.getField(price)
+        price = Quickfix::Price.new()
+        message.getField(price)
 
-	clOrdID = Quickfix::ClOrdID.new()
-	message.getField(clOrdID)
+        clOrdID = Quickfix::ClOrdID.new()
+        message.getField(clOrdID)
 end
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/repeating_groups_1.html b/doc/html/ruby/repeating_groups_1.html index 7f0d413e5..4107919b6 100644 --- a/doc/html/ruby/repeating_groups_1.html +++ b/doc/html/ruby/repeating_groups_1.html @@ -1,5 +1,13 @@ -
-require 'quickfix_ruby'
+
+
+
+
+  
+
+
+
+  
+require 'quickfix_ruby'
 require 'quickfix42'
 
 message = Quickfix42::MarketDataSnapshotFullRefresh.new()
@@ -16,4 +24,7 @@
 group.setField(Quickfix::MDEntrySize.new(100))
 group.setField(Quickfix::OrderID.new("ORDERID"))
 message.addGroup( group )
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/repeating_groups_2.html b/doc/html/ruby/repeating_groups_2.html index f596ee1ef..f2e0e56f6 100644 --- a/doc/html/ruby/repeating_groups_2.html +++ b/doc/html/ruby/repeating_groups_2.html @@ -1,11 +1,19 @@ -
-require 'quickfix_ruby'
+
+
+
+
+  
+
+
+
+  
+require 'quickfix_ruby'
 require 'quickfix42'
 
 noMDEntries = Quickfix::NoMDEntries.new()
 message.getField(noMDEntries)
 
-group = Quickfix42::MarketDataSnapshotFillRefresh.NoMDEntries.new()
+group = Quickfix42::MarketDataSnapshotFullRefresh.NoMDEntries.new()
 MDEntryType = Quickfix::MDEntryType.new()
 MDEntryPx = Quickfix::MDEntryPx.new()
 MDEntrySize = Quickfix::MDEntrySize.new()
@@ -22,4 +30,7 @@
 group.getField(MDEntryPx);
 group.getField(MDEntrySize);
 group.getField(orderID);
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/sending_messages_1.html b/doc/html/ruby/sending_messages_1.html index f1d6eea0e..07564cc38 100644 --- a/doc/html/ruby/sending_messages_1.html +++ b/doc/html/ruby/sending_messages_1.html @@ -1,5 +1,13 @@ -
-def sendToTarget(message)
+
+
+
+
+  
+
+
+
+  
+def sendToTarget(message)
 
 def sendToTarget(message, qualifier)
 
@@ -8,4 +16,7 @@
 def sendToTarget(message, senderCompID, targetCompID)
 
 def sendToTarget(message, senderCompID, targetCompID, qualifier)
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/sending_messages_2.html b/doc/html/ruby/sending_messages_2.html index 592203846..f5efc3838 100644 --- a/doc/html/ruby/sending_messages_2.html +++ b/doc/html/ruby/sending_messages_2.html @@ -1,27 +1,38 @@ -
-require 'quickfix_ruby'
+
+
+
+
+  
+
+
+
+  
+require 'quickfix_ruby'
 
 def sendOrderCancelRequest
-	message = Quickfix::Message.new()
-	# BeginString
-	message.getHeader().setField(Quickfix::StringField.new(8, "FIX.4.2"))
-	# SenderCompID
-	message.getHeader().setField(Quickfix::StringField.new(49, "TW"))
-	# TargetCompID, with enumeration
-	message.getHeader().setField(Quickfix::StringField.new(56, "TARGET"))
-	# MsgType
-	message.getHeader().setField(Quickfix::CharField.new(35, 'F'))
-	# OrigClOrdID
-	message.setField(Quickfix::StringField.new(41, "123"))
-	# ClOrdID
-	message.setField(Quickfix::StringField.new(11, "321"))
-	# Symbol
-	message.setField(Quickfix::StringField.new(55, "LNUX"))
-	# Side, with value enumeration
-	message.setField(Quickfix::CharField.new(54, quickfix.Side_BUY))
-	# Text
-	message.setField(Quickfix::StringField.new(58, "Cancel My Order!"))
+        message = Quickfix::Message.new()
+        # BeginString
+        message.getHeader().setField(Quickfix::StringField.new(8, "FIX.4.2"))
+        # SenderCompID
+        message.getHeader().setField(Quickfix::StringField.new(49, "TW"))
+        # TargetCompID, with enumeration
+        message.getHeader().setField(Quickfix::StringField.new(56, "TARGET"))
+        # MsgType
+        message.getHeader().setField(Quickfix::CharField.new(35, 'F'))
+        # OrigClOrdID
+        message.setField(Quickfix::StringField.new(41, "123"))
+        # ClOrdID
+        message.setField(Quickfix::StringField.new(11, "321"))
+        # Symbol
+        message.setField(Quickfix::StringField.new(55, "LNUX"))
+        # Side, with value enumeration
+        message.setField(Quickfix::CharField.new(54, quickfix.Side_BUY))
+        # Text
+        message.setField(Quickfix::StringField.new(58, "Cancel My Order!"))
 
-	Quickfix::Session.sendToTarget(message)
+        Quickfix::Session.sendToTarget(message)
 end
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/sending_messages_3.html b/doc/html/ruby/sending_messages_3.html index e715e0c9f..01132f02b 100644 --- a/doc/html/ruby/sending_messages_3.html +++ b/doc/html/ruby/sending_messages_3.html @@ -1,20 +1,31 @@ -
-require 'quickfix_ruby'
+
+
+
+
+  
+
+
+
+  
+require 'quickfix_ruby'
 
 def sendOrderCancelRequest
-	message = Quickfix::Message.new();
-	header = message.getHeader();
+        message = Quickfix::Message.new();
+        header = message.getHeader();
 
-	header.setField(Quickfix::BeginString.new("FIX.4.2"))
-	header.setField(Quickfix::SenderCompID.new(TW))
-	header.setField(Quickfix::TargetCompID.new("TARGET"))
-	header.setField(Quickfix::MsgType.new("D"))
-	message.setField(Quickfix::OrigClOrdID.new("123"))
-	message.setField(Quickfix::ClOrdID.new("321"))
-	message.setField(Quickfix::Symbol.new("LNUX"))
-	message.setField(Quickfix::Side.new(Side.BUY))
-	message.setField(Quickfix::Text.new("Cancel My Order!"))
+        header.setField(Quickfix::BeginString.new("FIX.4.2"))
+        header.setField(Quickfix::SenderCompID.new(TW))
+        header.setField(Quickfix::TargetCompID.new("TARGET"))
+        header.setField(Quickfix::MsgType.new("D"))
+        message.setField(Quickfix::OrigClOrdID.new("123"))
+        message.setField(Quickfix::ClOrdID.new("321"))
+        message.setField(Quickfix::Symbol.new("LNUX"))
+        message.setField(Quickfix::Side.new(Side.BUY))
+        message.setField(Quickfix::Text.new("Cancel My Order!"))
 
-	Quickfix::Session.sendToTarget(message)
+        Quickfix::Session.sendToTarget(message)
 end
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/user_defined_1.html b/doc/html/ruby/user_defined_1.html index e7b8ea37d..ed0752ce7 100644 --- a/doc/html/ruby/user_defined_1.html +++ b/doc/html/ruby/user_defined_1.html @@ -1,4 +1,16 @@ -

+
+
+
+
+  
+
+
+
+  
+
 message.setField(Quickfix::StringField.new(6123, "value"))
 field = message.getField(Quickfix::StringField(6123).new())
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/user_defined_2.html b/doc/html/ruby/user_defined_2.html index 18c1e6414..a76a0436b 100644 --- a/doc/html/ruby/user_defined_2.html +++ b/doc/html/ruby/user_defined_2.html @@ -1,23 +1,35 @@ -

+
+
+
+
+  
+
+
+
+  
+
 require 'quickfix_ruby'
 
-class MyStringField < Quickfix::StringField
-	def initialize( data = nil )
-		if( data == nil )
-			super(6123)
-		else
-			super(6123, data)
-		end
-	end
+class MyStringField < Quickfix::StringField
+        def initialize( data = nil )
+                if( data == nil )
+                        super(6123)
+                else
+                        super(6123, data)
+                end
+        end
 end
 
-class MyDoubleField < Quickfix::DoubleField
-	def initialize( data = nil )
-		if( data == nil )
-			super(8756)
-		else
-			super(8756, data)
-		end
-	end
+class MyDoubleField < Quickfix::DoubleField
+        def initialize( data = nil )
+                if( data == nil )
+                        super(8756)
+                else
+                        super(8756, data)
+                end
+        end
 end
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/ruby/user_defined_3.html b/doc/html/ruby/user_defined_3.html index a915df638..cef9c2ac4 100644 --- a/doc/html/ruby/user_defined_3.html +++ b/doc/html/ruby/user_defined_3.html @@ -1,4 +1,13 @@ -

+
+
+
+
+  
+
+
+
+  
+
 stringField = MyStringField.new("string")
 priceField = MyPriceField.new(14.54)
 
@@ -7,4 +16,7 @@
 
 message.getField(stringField)
 message.getField(priceField)
-
\ No newline at end of file +
+
+ + diff --git a/doc/html/sending_messages.html b/doc/html/sending_messages.html index edbf01d59..8a89da816 100644 --- a/doc/html/sending_messages.html +++ b/doc/html/sending_messages.html @@ -1,124 +1,124 @@ - + - - Sending Messages -

Sending Messages

- - -

- Messages can be sent to a counter party with the static Session::sendToTarget methods. - This method has several signatures. They are: -

- See this code in C#, VB.NET, PYTHON, RUBY -
-    // send a message that already contains a BeginString, SenderCompID, and a TargetCompID
-    static bool sendToTarget( Message&, const std::string& qualifier = "" )
-        throw(SessionNotFound&);
-
-    // send a message based on the sessionID, convenient for use
-    // in fromApp since it provides a session ID for incoming
-    // messages
-    static bool sendToTarget( Message&, const SessionID& )
-      throw(SessionNotFound&);
-
-    // append a SenderCompID and TargetCompID before sending
-    static bool sendToTarget( Message&, const SenderCompID&, const TargetCompID&, const std::string& qualifier = "" )
-      throw(SessionNotFound&);
-
-    // pass SenderCompID and TargetCompID in as strings
-    static bool sendToTarget( Message&, const std::string&, const std::string&, const std::string& qualifier = "" )
-      throw(SessionNotFound&);
-    
- -

Creating Messages

- As for creating messages, just like reading them, there are several levels of type safety. And - just like before, the recommended usage is the type safe method. -

- -

Least Type Safe

-

- Once again. This should only be used for low level interface to other languages and middleware. - do not use this for writing applications. -

- See this code in C#, VB.NET, PYTHON, RUBY -
-    void sendOrderCancelRequest()
-    {
-      FIX::Message message;
-      // BeginString
-      message.getHeader().setField(8, "FIX.4.2");
-      // SenderCompID
-      message.getHeader().setField(49, "TW");
-      // TargetCompID, with enumeration
-      message.getHeader().setField(FIX::FIELD::TargetCompID, "TARGET");
-      // MsgType
-      message.getHeader().setField(35, 'F');
-      // OrigClOrdID
-      message.setField(41, "123");
-      // ClOrdID
-      message.setField(11, "321");
-      // Symbol
-      message.setField(55, "LNUX");
-      // Side, with value enumeration
-      message.setField(54, FIX::Side_BUY);
-      // Text
-      message.setField(58, "Cancel My Order!");
-
-      FIX::Session::sendToTarget(message);
-    }
-    
- -

More Type Safe

-

- And here, by using field classes, we can clearify our code and add some type safety. Once again, this - is something you usually use for code that needs to work with multiple messages types or multiple - FIX versions. -

- See this code in C#, VB.NET, PYTHON, RUBY -

-    void sendOrderCancelRequest()
-    {
-      FIX::Message message;
-      FIX::Header header& = message.getHeader();
-
-      header.setField(FIX::BeginString("FIX.4.2"));
-      header.setField(FIX::SenderCompID(TW));
-      header.setField(FIX::TargetCompID("TARGET"));
-      header.setField(FIX::MsgType(FIX::MsgType_OrderCancelRequest));
-      message.setField(FIX::OrigClOrdID("123"));
-      message.setField(FIX::ClOrdID("321"));
-      message.setField(FIX::Symbol("LNUX"));
-      message.setField(FIX::Side(FIX::Side_BUY));
-      message.setField(FIX::Text("Cancel My Order!"));
-
-      FIX::Session::sendToTarget(message);
-    }
-    
- -

Most Type Safe... DO THIS!

-

- Finally, the highly recommended method is to use the type safe message classes. This - should typically be the only way you should ever have to create messages. Here the constructor - takes in all the required fields and adds the correct MsgType and BeginString for you. - What's more, by using the set method instead of setField, the compiler will not let - you add a field that is not a part of a OrderCancelRequest based on the FIX4.1 specs. Keep in - mind you can still use setField if you want to force any field you want into the message. -

- See this code in C#, VB.NET, PYTHON(not supported), RUBY(not supported) -
-    void sendOrderCancelRequest()
-    {
-      FIX41::OrderCancelRequest message(
-        FIX::OrigClOrdID("123"),
-        FIX::ClOrdID("321"),
-        FIX::Symbol("LNUX"),
-        FIX::Side(FIX::Side_BUY));
-
-      message.set(FIX::Text("Cancel My Order!"));
-
-      FIX::Session::sendToTarget(message, SenderCompID("TW"), TargetCompID("TARGET"));
-    }
-    
- + + + + Sending Messages + + + +
+
+ Sending Messages +
+
+ +
+

Messages can be sent to a counter party with the static + Session::sendToTarget methods.

See this code in + PYTHON, RUBY +
+// send a message that already contains a BeginString, SenderCompID, and a TargetCompID
+static bool sendToTarget( Message&, const std::string& qualifier = "" )
+  throw(SessionNotFound&);
+
+// send a message based on the sessionID, convenient for use
+// in fromApp since it provides a session ID for incoming
+// messages
+static bool sendToTarget( Message&, const SessionID& )
+  throw(SessionNotFound&);
+
+// append a SenderCompID and TargetCompID before sending
+static bool sendToTarget( Message&, const SenderCompID&, const TargetCompID&, const std::string& qualifier = "" )
+  throw(SessionNotFound&);
+
+// pass SenderCompID and TargetCompID in as strings
+static bool sendToTarget( Message&, const std::string&, const std::string&, const std::string& qualifier = "" )
+  throw(SessionNotFound&);
+
+ +

Type Safe Messages And Fields

+ +

Message constructors take in all required fields and adds + the correct MsgType and BeginString for you. With + the set method, the compiler will not let you add a + field that is not a part of a message as defined by the + spec.

+
+void sendOrderCancelRequest()
+{
+  FIX41::OrderCancelRequest message(
+    FIX::OrigClOrdID("123"),
+    FIX::ClOrdID("321"),
+    FIX::Symbol("LNUX"),
+    FIX::Side(FIX::Side_BUY));
+
+  message.set(FIX::Text("Cancel My Order!"));
+
+  FIX::Session::sendToTarget(message, SenderCompID("TW"), TargetCompID("TARGET"));
+}
+
+ +

Type Safe Field Only

+ +

The setField method allows you to add any field to + any message.

See this code in PYTHON, RUBY +
+void sendOrderCancelRequest()
+{
+  FIX::Message message;
+  FIX::Header header& = message.getHeader();
+
+  header.setField(FIX::BeginString("FIX.4.2"));
+  header.setField(FIX::SenderCompID(TW));
+  header.setField(FIX::TargetCompID("TARGET"));
+  header.setField(FIX::MsgType(FIX::MsgType_OrderCancelRequest));
+  message.setField(FIX::OrigClOrdID("123"));
+  message.setField(FIX::ClOrdID("321"));
+  message.setField(FIX::Symbol("LNUX"));
+  message.setField(FIX::Side(FIX::Side_BUY));
+  message.setField(FIX::Text("Cancel My Order!"));
+
+  FIX::Session::sendToTarget(message);
+}
+
+ +

No Type Safety

+ +

You can also use setField to pass in + primitives.

See this code in PYTHON, RUBY +
+void sendOrderCancelRequest()
+{
+  FIX::Message message;
+  // BeginString
+  message.getHeader().setField(8, "FIX.4.2");
+  // SenderCompID
+  message.getHeader().setField(49, "TW");
+  // TargetCompID, with enumeration
+  message.getHeader().setField(FIX::FIELD::TargetCompID, "TARGET");
+  // MsgType
+  message.getHeader().setField(35, 'F');
+  // OrigClOrdID
+  message.setField(41, "123");
+  // ClOrdID
+  message.setField(11, "321");
+  // Symbol
+  message.setField(55, "LNUX");
+  // Side, with value enumeration
+  message.setField(54, FIX::Side_BUY);
+  // Text
+  message.setField(58, "Cancel My Order!");
+
+  FIX::Session::sendToTarget(message);
+}
+
+
+ diff --git a/doc/html/testing.html b/doc/html/testing.html index de62fde57..5b7cd45ef 100644 --- a/doc/html/testing.html +++ b/doc/html/testing.html @@ -1,91 +1,74 @@ - + - - Testing QuickFIX -

Testing QuickFIX

- - - -

- The development of QuickFIX has been driven by a suite of functional acceptance tests - and unit tests. We have been working incrementally, functional test by functional test, - writing the unit tests before the code. If these tests pass, we're pretty confident - that the engine works as intended. -

-

- The developer unit tests are written in C++ and make direct calls into the code. The - functional acceptance tests are scripted FIX messages that are pumped into a running - FIX server. Most of these tests are based off of the - - FIX Session-level Test Cases and Expected Behaviors document -

-

- Two executable files are built that allow you to run tests. They are ut(.exe) and - at_server(.exe). Running the ut executable will run all the defined unit tests - against the quickfix library. The at_server executable is an implementation of a FIX server - application that simply echoes NewOrderSingle messages back to the client. It also ensures - a ClOrdID is not reused. It has just enough functionality to test the application-level - behavior of our implementation. -

-

- The output of the unit test runner is represented by a period if the test passes or a - letter 'F' if it fails. Failed tests will also display information regarding the failure. - This will usually be a test name, file name, and line number. -

-

- The output of the acceptance test runner will be an XML output that has a result field - with a sucess or failure. A failed test will also display information on why the test - has failed. Usually this will be a comparison of the expected result and the actual - result of a line. To run acceptance tests, ruby must be installed and in your path. -

- - - - -

Windows

- -
-

Unit Tests

-

- Enter the test directory under quickfix. All tests need to be run from this - directory. To run unit tests, either type runut debug [port] or runut release [port], - depending on if you want to test the debug or release version. The port is used to test - socket functionality. If you built QuickFIX with one of its supporting databases, you will - need to update cfg/ut.cfg to reflect your database settings. -

-

Acceptance Tests

-

- Go to the test directory under the root quickfix directory. Type either runat - debug [port] or runat release [port], depending on if you want to test the - debug or release version. The port is used to listen for connections on a socket server. - This should be a port that is not already in use on your system. runat_threaded.bat is - also provided if you want to test using threaded socket code. The parameters are the same. -

-
- -
-

Linux / Solaris / FreeBSD / Mac OS X

- -
-

Unit Tests

-

- Enter the test directory under quickfix. All tests need to be run from this - directory. To run unit tests, type ./runut.sh [port] where the port is used to test - the socket functionality. If you built QuickFIX with one of its supporting databases, you will - need to update cfg/ut.cfg to reflect your database settings. -

-

Acceptance Tests

-

- Go to the test directory under the root quickfix directory. Type ./runat.sh - [port]. The port is used to listen for connections on a socket server. - This should be a port that is not already in use on your system. runat_threaded.sh is - also provided if you want to test using threaded socket code. The parameters are the same. -

-
- - + + + + Testing QuickFIX + + + +
+
+ Testing QuickFIX +
+
+ +
+

The development of QuickFIX has been driven by a suite of + functional acceptance tests and unit tests.

+ +

Windows

+ +

Unit Tests

+ +

From the test directory:

+
+runut release [port]
+
+ +

The port is used to test socket functionality. If you built + QuickFIX with one of its supporting databases, you will need to + update cfg/ut.cfg to reflect your database settings.

+ +

Acceptance Tests

+ +

From the test directory:

+
+runat release [port]
+
+
+runat_threaded release [port]
+
+ +

The port is used to listen for connections on a socket + server.

+ +

Linux / Solaris / FreeBSD / Mac OS X

+ +

Unit Tests

+ +

From the test directory:

+
+./runut.sh [port]
+
+ +

The port is used to test socket functionality. If you built + QuickFIX with one of its supporting databases, you will need to + update cfg/ut.cfg to reflect your database settings.

+ +

Acceptance Tests

+ +

From the test directory:

+
+./runat.sh [port]
+
+
+./runat_threaded.sh [port]
+
+ +

The port is used to listen for connections on a socket + server.

+
+ diff --git a/doc/html/trailer.html b/doc/html/trailer.html index ff8b8b863..34290a3ca 100644 --- a/doc/html/trailer.html +++ b/doc/html/trailer.html @@ -1,7 +1,20 @@ -
-Generated on $datetime for $projectname by -doxygen - $doxygenversion written by Dimitri van Heesch, - © 1997-2001
+ + + + + + + + +
+ +
+ Generated on $datetime for $projectname by + $doxygenversion written by Dimitri van Heesch, + © 1997-2001 +
diff --git a/doc/html/unit_tests.html b/doc/html/unit_tests.html index 20c5ae7bf..91758295f 100644 --- a/doc/html/unit_tests.html +++ b/doc/html/unit_tests.html @@ -1,57 +1,64 @@ - + - - Unit Tests -

Unit Tests

- - - -

- QuickFIX comes with a comprehensive suite of automated unit tests. These tests are run by a - framework called UnitTest++. UnitTest++ allows developers to test - C++ code by writing code that calls functions on objects and asserting correct behavior. These - test verifies not only that the code works correctly, but also that it works the same on all - platforms. -

- -

- An example of one of the unit tests is provided below. This sample shows the setup and - execution of the test that verifies our Parser object can correctly extract messages from a stream. -

- -
-  struct readFixMessageFixture
-  {
-    readFixMessageFixture()
-    {
-      fixMsg1 = "8=FIX.4.2\0019=12\00135=A\001108=30\00110=31\001";
-      fixMsg2 = "8=FIX.4.2\0019=17\00135=4\00136=88\001123=Y\00110=34\001";
-      fixMsg3 = "8=FIX.4.2\0019=19\00135=A\001108=30\0019710=8\00110=31\001";
-
-      object.addToStream( fixMsg1 + fixMsg2 + fixMsg3 );
-    }
-
-    std::string fixMsg1;
-    std::string fixMsg2;
-    std::string fixMsg3;
-    Parser object;
-  };
-
-  TEST_FIXTURE(readFixMessageFixture, readFixMessage)
-  {
-    std::string readFixMsg1;
-    CHECK( object.readFixMessage( readFixMsg1 ) );
-    CHECK_EQUAL( fixMsg1, readFixMsg1 );
+
+  
+
+  Unit Tests
+
+
+
+  
+
+ Unit Tests +
+
+ +
+

QuickFIX comes with a comprehensive suite of automated unit + tests. These tests are run by a framework called UnitTest++. + UnitTest++ allows developers to test C++ code by writing code + that calls functions on objects and asserting correct behavior. + These test verifies not only that the code works correctly, but + also that it works the same on all platforms.

- std::string readFixMsg2; - CHECK( object.readFixMessage( readFixMsg2 ) ); - CHECK_EQUAL( fixMsg2, readFixMsg2 ); +

This sample shows the setup and execution of the test that + verifies the Parser object can correctly extract messages from + a stream.

+
+struct readFixMessageFixture
+{
+  readFixMessageFixture()
+  {
+    fixMsg1 = "8=FIX.4.2\0019=12\00135=A\001108=30\00110=31\001";
+    fixMsg2 = "8=FIX.4.2\0019=17\00135=4\00136=88\001123=Y\00110=34\001";
+    fixMsg3 = "8=FIX.4.2\0019=19\00135=A\001108=30\0019710=8\00110=31\001";
 
-    std::string readFixMsg3;
-    CHECK( object.readFixMessage( readFixMsg3 ) );
-    CHECK_EQUAL( fixMsg3, readFixMsg3 );
+    object.addToStream( fixMsg1 + fixMsg2 + fixMsg3 );
   }
-  
- + + std::string fixMsg1; + std::string fixMsg2; + std::string fixMsg3; + Parser object; +}; + +TEST_FIXTURE(readFixMessageFixture, readFixMessage) +{ + std::string readFixMsg1; + CHECK( object.readFixMessage( readFixMsg1 ) ); + CHECK_EQUAL( fixMsg1, readFixMsg1 ); + + std::string readFixMsg2; + CHECK( object.readFixMessage( readFixMsg2 ) ); + CHECK_EQUAL( fixMsg2, readFixMsg2 ); + + std::string readFixMsg3; + CHECK( object.readFixMessage( readFixMsg3 ) ); + CHECK_EQUAL( fixMsg3, readFixMsg3 ); +} +
+ + diff --git a/doc/html/user_defined.html b/doc/html/user_defined.html index 69792f093..5f5942028 100644 --- a/doc/html/user_defined.html +++ b/doc/html/user_defined.html @@ -1,84 +1,91 @@ - + - - User Defined Fields -

User Defined Fields

- - -

- FIX allows for users to define their own fields that do not belong to the spec. How can QuickFIX - be used to set and get user defined fields? Well one answer would be to use the non-type safe - set and get fields like so: -

- See this code in C#, VB.NET, PYTHON, RUBY -

-  message.setField(6123, "value");
-  message.getField(6123);
-  
+ + -

- But there is a better way. Instead of using this non type safe method, why not bring your own - user defined fields into the type system? QuickFIX provides you with a set of macros to do just - that. Now you can define your user defined fields in a separate file like this. -

- See this code in C#, VB.NET, PYTHON, RUBY -

-  #include "quickfix/Field.h"
+  User Defined Fields
+
 
-  namespace FIX
-  {
-    USER_DEFINE_STRING(MyStringField, 6123);
-    USER_DEFINE_PRICE(MyPriceField, 8756);
-  }
-  
+ +
+
+ User Defined Fields +
+
-

- User defined fields must be declared within the FIX namespace. - Now, elsewhere in your application, you can write code like this: -

- See this code in C#, VB.NET, PYTHON, RUBY -

-  MyStringField stringField("string");
-  MyPriceField priceField(14.54);
+  
+

FIX allows users to define fields not defined in the + specifications. How can QuickFIX be used to set and get user + defined fields? Well one answer would be to use the non-type + safe set and get fields like so:

See this code in PYTHON, RUBY +
+message.setField(6123, "value");
+message.getField(6123);
+
- message.setField(stringField); - message.setField(priceField); +

QuickFIX also provides supplies macros for creating typesafe + field objects.

See this code in PYTHON, RUBY +
+#include "quickfix/Field.h"
 
-  message.getField(stringField);
-  message.getField(priceField);
-  
+namespace FIX +{ + USER_DEFINE_STRING(MyStringField, 6123); + USER_DEFINE_PRICE(MyPriceField, 8756); +} +
-

- Here is a list of macros that allow you to define fields of all supported FIX types, but keep - in mind you can write fields of wildly different types if you supply a new macro and convertor - that can convert your type to and from a string. Here is the list of macros: -

-

-  USER_DEFINE_STRING( NAME, NUM )
-  USER_DEFINE_CHAR( NAME, NUM )
-  USER_DEFINE_PRICE( NAME, NUM )
-  USER_DEFINE_INT( NAME, NUM )
-  USER_DEFINE_AMT( NAME, NUM )
-  USER_DEFINE_QTY( NAME, NUM )
-  USER_DEFINE_CURRENCY( NAME, NUM )
-  USER_DEFINE_MULTIPLEVALUESTRING( NAME, NUM )
-  USER_DEFINE_EXCHANGE( NAME, NUM )
-  USER_DEFINE_UTCTIMESTAMP( NAME, NUM )
-  USER_DEFINE_BOOLEAN( NAME, NUM )
-  USER_DEFINE_LOCALMKTDATE( NAME, NUM )
-  USER_DEFINE_DATA( NAME, NUM )
-  USER_DEFINE_FLOAT( NAME, NUM )
-  USER_DEFINE_PRICEOFFSET( NAME, NUM )
-  USER_DEFINE_MONTHYEAR( NAME, NUM )
-  USER_DEFINE_DAYOFMONTH( NAME, NUM )
-  USER_DEFINE_UTCDATE( NAME, NUM )
-  USER_DEFINE_UTCTIMEONLY( NAME, NUM )
-  USER_DEFINE_NUMINGROUP( NAME, NUM )
-  USER_DEFINE_SEQNUM( NAME, NUM )
-  USER_DEFINE_LENGTH( NAME, NUM )
-  USER_DEFINE_PERCENTAGE( NAME, NUM )
-  USER_DEFINE_COUNTRY( NAME, NUM )
-  
- +

User defined fields must be declared within the FIX + namespace. Now, elsewhere in your application, you can write + code like this:

See this code in PYTHON, RUBY +
+MyStringField stringField("string");
+MyPriceField priceField(14.54);
+
+message.setField(stringField);
+message.setField(priceField);
+
+message.getField(stringField);
+message.getField(priceField);
+
+ +

These macros allow you to define fields of all supported FIX + types. Keep in mind you can write fields of any type types as + long as you supply a new macro and convertor that can convert + your type to and from a string.

+
+USER_DEFINE_STRING( NAME, NUM )
+USER_DEFINE_CHAR( NAME, NUM )
+USER_DEFINE_PRICE( NAME, NUM )
+USER_DEFINE_INT( NAME, NUM )
+USER_DEFINE_AMT( NAME, NUM )
+USER_DEFINE_QTY( NAME, NUM )
+USER_DEFINE_CURRENCY( NAME, NUM )
+USER_DEFINE_MULTIPLEVALUESTRING( NAME, NUM )
+USER_DEFINE_EXCHANGE( NAME, NUM )
+USER_DEFINE_UTCTIMESTAMP( NAME, NUM )
+USER_DEFINE_BOOLEAN( NAME, NUM )
+USER_DEFINE_LOCALMKTDATE( NAME, NUM )
+USER_DEFINE_DATA( NAME, NUM )
+USER_DEFINE_FLOAT( NAME, NUM )
+USER_DEFINE_PRICEOFFSET( NAME, NUM )
+USER_DEFINE_MONTHYEAR( NAME, NUM )
+USER_DEFINE_DAYOFMONTH( NAME, NUM )
+USER_DEFINE_UTCDATE( NAME, NUM )
+USER_DEFINE_UTCTIMEONLY( NAME, NUM )
+USER_DEFINE_NUMINGROUP( NAME, NUM )
+USER_DEFINE_SEQNUM( NAME, NUM )
+USER_DEFINE_LENGTH( NAME, NUM )
+USER_DEFINE_PERCENTAGE( NAME, NUM )
+USER_DEFINE_COUNTRY( NAME, NUM )
+
+ + diff --git a/doc/html/vbnet/application_1.html b/doc/html/vbnet/application_1.html deleted file mode 100644 index 6c9dbc80b..000000000 --- a/doc/html/vbnet/application_1.html +++ /dev/null @@ -1,13 +0,0 @@ -
-Namespace QuickFix
-  Public Interface Application
-    Public Sub onCreate(ByVal sessionID As SessionID)
-    Public Sub onLogon(ByVal sessionID As SessionID)
-    Public Sub onLogout(ByVal sessionID As SessionID)
-    Public Sub toAdmin(ByVal message As Message, ByVal sessionID As SessionID)
-    Public Sub toApp(ByVal message As Message, ByVal sessionID As SessionID)
-    Public Sub fromAdmin(ByVal message As Message, ByVal sessionID As SessionID)
-    Public Sub fromApp(ByVal message As Message, ByVal sessionID As SessionID)
-  End Interface
-End Namespace
-
diff --git a/doc/html/vbnet/application_2.html b/doc/html/vbnet/application_2.html deleted file mode 100644 index ecbec19f7..000000000 --- a/doc/html/vbnet/application_2.html +++ /dev/null @@ -1,29 +0,0 @@ -
-Imports QuickFix
-
-Module MyModule
-  Sub Main(ByVal CmdArgs() As String)
-    If(CmdArgs <> 1) Then
-      Return
-    End If
-
-    Dim fileName As String = CmdArgs(1)
-
-    Try
-      Dim settings As New SessionSettings(fileName)
-      Dim application As New MyApplication()
-      Dim storeFactory As New FileStoreFactory(settings)
-      Dim logFactory As New FileLogFactory(settings)
-      Dim messageFactory As New DefaultMessageFactory()
-      Dim acceptor As New SocketAcceptor(application, storeFactory, settings, logFactory, messageFactory)
-      acceptor.start()
-      'While( condition = True )
-      '  do something
-      'End While
-      acceptor.stop()
-    Catch e As ConfigError
-      Console.WriteLine(e)
-    End Try
-  End Sub
-End Module
-
diff --git a/doc/html/vbnet/receiving_messages_1.html b/doc/html/vbnet/receiving_messages_1.html deleted file mode 100644 index 87042660f..000000000 --- a/doc/html/vbnet/receiving_messages_1.html +++ /dev/null @@ -1,8 +0,0 @@ -
-Imports QuickFix
-
-Public Sub fromApp(ByVal message As Message, ByVal sessionID As SessionID)
-  Dim field As New StringField(44)
-  message.getField(field)
-End Sub
-
\ No newline at end of file diff --git a/doc/html/vbnet/receiving_messages_2.html b/doc/html/vbnet/receiving_messages_2.html deleted file mode 100644 index 01ba35406..000000000 --- a/doc/html/vbnet/receiving_messages_2.html +++ /dev/null @@ -1,11 +0,0 @@ -
-Imports QuickFix
-
-Public Sub fromApp(Dim message As Message, Dim sessionID As SessionID)
-  Dim price As New Price()
-  message.getField(price)
-
-  Dim clOrdID As New ClOrdID()
-  message.getField(clOrdID)
-End Sub
-
\ No newline at end of file diff --git a/doc/html/vbnet/receiving_messages_3.html b/doc/html/vbnet/receiving_messages_3.html deleted file mode 100644 index 1b1e80f0e..000000000 --- a/doc/html/vbnet/receiving_messages_3.html +++ /dev/null @@ -1,24 +0,0 @@ -
-Imports QuickFix
-
-Public Sub fromApp(Dim message As Message, Dim sessionID As SessionID) Implements Application.fromApp
-  crack(message, sessionID)
-End Sub
-
-Public Overloads Overrides Sub onMessage(ByVal message As QuickFix42.NewOrderSingle, ByVal sessionID As SessionID)
-  Dim clOrdID As New ClOrdID()
-  message.get(clOrdID)
-
-  Dim clearingAccount As New ClearingAccount()
-  message.get(clearingAccount)
-End Sum
-
-Public Overloads Overrides onMessage(ByVal message As QuickFix42.OrderCancelRequest, ByVal sessionID As QuickFix.SessionID)
-  Dim clOrdID As New ClOrdID()
-  message.get(clOrdID)
-
-  ' compile time error!! field not defined for OrderCancelRequest
-  Dim clearingAccount As new ClearingAccount()
-  message.get(clearingAccount)
-End Sub
-
\ No newline at end of file diff --git a/doc/html/vbnet/receiving_messages_4.html b/doc/html/vbnet/receiving_messages_4.html deleted file mode 100644 index 90cdb729c..000000000 --- a/doc/html/vbnet/receiving_messages_4.html +++ /dev/null @@ -1,7 +0,0 @@ -
-Imports QuickFix
-
-Public Class MyApplication
-  Inherits MessageCracker
-  Implements Application
-
\ No newline at end of file diff --git a/doc/html/vbnet/repeating_groups_1.html b/doc/html/vbnet/repeating_groups_1.html deleted file mode 100644 index 6a2078e35..000000000 --- a/doc/html/vbnet/repeating_groups_1.html +++ /dev/null @@ -1,16 +0,0 @@ -
-Dim message As New QuickFix42.MarketDataSnapshotFullRefresh(New QuickFix.Symbol("QF"))
-Dim group As New QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries()
-
-group.set(New QuickFix.MDEntryType('0'))
-group.set(New QuickFix.MDEntryPx(12.32))
-group.set(New QuickFix.MDEntrySize(100))
-group.set(New QuickFix.OrderID("ORDERID"))
-message.addGroup(group)
-
-group.set(New QuickFix.MDEntryType('1'))
-group.set(New QuickFix.MDEntryPx(12.32))
-group.set(New QuickFix.MDEntrySize(100))
-group.set(New QuickFix.OrderID("ORDERID"))
-message.addGroup(group)
-
\ No newline at end of file diff --git a/doc/html/vbnet/repeating_groups_2.html b/doc/html/vbnet/repeating_groups_2.html deleted file mode 100644 index e606ec457..000000000 --- a/doc/html/vbnet/repeating_groups_2.html +++ /dev/null @@ -1,22 +0,0 @@ -
-Dim noMDEntries As New QuickFix.NoMDEntries()
-message.get(noMDEntries)
-
-Dim group As New QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries()
-Dim MDEntryType As New QuickFix.MDEntryType()
-Dim MDEntryPx As New QuickFix.MDEntryPx()
-Dim MDEntrySize As New QuickFix.MDEntrySize()
-Dim orderID As New QuickFix.OrderID()
-
-message.getGroup(1, group)
-group.get(MDEntryType)
-group.get(MDEntryPx)
-group.get(MDEntrySize)
-group.get(orderID)
-
-message.getGroup(2, group)
-group.get(MDEntryType)
-group.get(MDEntryPx)
-group.get(MDEntrySize)
-group.get(orderID)
-
\ No newline at end of file diff --git a/doc/html/vbnet/sending_messages_1.html b/doc/html/vbnet/sending_messages_1.html deleted file mode 100644 index 3a49e31ae..000000000 --- a/doc/html/vbnet/sending_messages_1.html +++ /dev/null @@ -1,11 +0,0 @@ -
-Public Shared Function sendToTarget(ByVal message As QuickFix.Message) As Boolean
-
-Public Shared Function sendToTarget(ByVal message As QuickFix.Message, ByVal qualifier As String) As Boolean
-
-Public Shared Function sendToTarget(ByVal message As QuickFix.Message, ByVal sessionID As QuickFix.SessionID)
-
-Public Shared Function sendToTarget(ByVal message As QuickFix.Message, ByVal senderCompID As String, ByVal targetCompID As String)
-
-Public Shared Function sendToTarget(ByVal message As QuickFix.Message, ByVal senderCompID As String, ByVal targetCompID As String, ByVal qualifier As String)
-
\ No newline at end of file diff --git a/doc/html/vbnet/sending_messages_2.html b/doc/html/vbnet/sending_messages_2.html deleted file mode 100644 index a985204f1..000000000 --- a/doc/html/vbnet/sending_messages_2.html +++ /dev/null @@ -1,27 +0,0 @@ -
-Imports QuickFix
-
-Public Sub sendOrderCancelRequest()
-  Dim message As New Message();
-  ' BeginString
-  message.getHeader().setField(New StringField(8, "FIX.4.2"))
-  ' SenderCompID
-  message.getHeader().setField(New StringField(49, "TW"))
-  ' TargetCompID, with enumeration
-  message.getHeader().setField(New StringField(56, "TARGET"))
-  ' MsgType
-  message.getHeader().setField(New CharField(35, 'F'))
-  ' OrigClOrdID
-  message.setField(New StringField(41, "123"))
-  ' ClOrdID
-  message.setField(New StringField(11, "321"))
-  ' Symbol
-  message.setField(New StringField(55, "LNUX"))
-  ' Side, with value enumeration
-  message.setField(New CharField(54, QuickFix.Side_BUY))
-  ' Text
-  message.setField(New StringField(58, "Cancel My Order!"))
-
-  Session.sendToTarget(message)
-End Sub
-
\ No newline at end of file diff --git a/doc/html/vbnet/sending_messages_3.html b/doc/html/vbnet/sending_messages_3.html deleted file mode 100644 index 1d75e5da1..000000000 --- a/doc/html/vbnet/sending_messages_3.html +++ /dev/null @@ -1,20 +0,0 @@ -
-Imports QuickFix
-
-Public Sub sendOrderCancelRequest()
-  Dim message As New Message()
-  Dim header As Header = message.getHeader()
-
-  header.setField(New BeginString("FIX.4.2"))
-  header.setField(New SenderCompID(TW))
-  header.setField(New TargetCompID("TARGET"))
-  header.setField(New MsgType("D"))
-  message.setField(New OrigClOrdID("123"))
-  message.setField(New ClOrdID("321"))
-  message.setField(New Symbol("LNUX"))
-  message.setField(New Side(Side.BUY))
-  message.setField(New Text("Cancel My Order!"))
-
-  Session.sendToTarget(message)
-End Sub
-
\ No newline at end of file diff --git a/doc/html/vbnet/sending_messages_4.html b/doc/html/vbnet/sending_messages_4.html deleted file mode 100644 index ce2d7c4f8..000000000 --- a/doc/html/vbnet/sending_messages_4.html +++ /dev/null @@ -1,11 +0,0 @@ -
-Imports QuickFix
-
-Public Sub sendOrderCancelRequest()
-  Dim message As QuickFix41.OrderCancelRequest(New OrigClOrdID("123"), New ClOrdID("321"), New Symbol("LNUX"), New Side(Side.BUY))
-
-  message.set(new Text("Cancel My Order!"))
-
-  Session.sendToTarget(message, "TW", "TARGET")
-End Sub
-
\ No newline at end of file diff --git a/doc/html/vbnet/user_defined_1.html b/doc/html/vbnet/user_defined_1.html deleted file mode 100644 index aa6be68b2..000000000 --- a/doc/html/vbnet/user_defined_1.html +++ /dev/null @@ -1,4 +0,0 @@ -

-message.setField(New StringField(6123,"value"))
-Dim field As StringField = message.getField(New StringField(6123))
-
\ No newline at end of file diff --git a/doc/html/vbnet/user_defined_2.html b/doc/html/vbnet/user_defined_2.html deleted file mode 100644 index a187aff90..000000000 --- a/doc/html/vbnet/user_defined_2.html +++ /dev/null @@ -1,24 +0,0 @@ -

-Imports QuickFix.StringField
-Imports QuickFix.DoubleField
-
-Public Class MyStringField : Inherits StringField
-  Public Sub New()
-    MyBase.New(6123)
-  End Sub
-
-  Public Sub New(Dim data As String)
-    MyBase.New(6123, data)
-  End Sub
-End Class
-
-Public Class MyPriceField : Inherits DoubleField
-  Public Sub New()
-    MyBase(8756)
-  End Sub
-
-  Public Sub New(Dim data As Double)
-    MyBase(8756, data)
-  End Sub
-End Class
-
\ No newline at end of file diff --git a/doc/html/vbnet/user_defined_3.html b/doc/html/vbnet/user_defined_3.html deleted file mode 100644 index 68db82859..000000000 --- a/doc/html/vbnet/user_defined_3.html +++ /dev/null @@ -1,10 +0,0 @@ -

-Dim stringField As New MyStringField("string")
-Dim priceField As New MyPriceField(14.54)
-
-message.setField(stringField)
-message.setField(priceField)
-
-message.getField(stringField)
-message.getField(priceField)
-
\ No newline at end of file diff --git a/doc/html/xmlschema.html b/doc/html/xmlschema.html index c891f535b..5414fb33b 100644 --- a/doc/html/xmlschema.html +++ b/doc/html/xmlschema.html @@ -1,77 +1,67 @@ - + - - Validation -

Validation

- - -

- QuickFIX will validate and reject any messages that do not conform to the FIX specifications. - This means that it will reject any poorly formed messages without bothering you at the application - level. But there is an extra piece to validation. QuickFIX can also dynamically load an XML - definition file for each session which it will use to validate if a message is of the right type, - if it contains unsupported fields, if required fields are missing etc... And it will do this all without - you needing to do any extra work at the application level. -

-

- QuickFIX comes with several definition files. These are FIX40.xml, FIX41.xml, - FIX42.xml, FIX43.xml and FIX44.xml. These are directly generated off their respected fix specification documents. - But the power comes in modifying these documents or creating new ones for your specific needs. -

-

- If, for instance, you need to define a FIX spec for a sell side application. Why not define the - spec in XML and then just publish the XML file to your clients! Not only is your FIX spec fully documented - in a machine and human readable format, but you can guarantee that the documentation is 100% - accurate because it is actually defining and not just reflecting reality. -

-

- And if XYZ corp needs some special fields added to their session but you don't want to expose - them to anyone else, fine. Create XYZ.xml, load it up with the session and keep everyone else - using the normal definintion file. Now XYZ can send their user defined fields but they will be rejected - for anyone else. -

-

- The skeleton of a definition file looks like this. -

-

-  <fix type="FIX" major="4" minor="1">
-    <header>
-      <field name="BeginString" required="Y"/>
-      ...
-    </header>
-    <trailer>
-      <field name="CheckSum" required="Y"/>
-      ...
-    </trailer>
-    <messages>
-      <message name="Heartbeat" msgtype="0" msgcat="admin">
-        <field name="TestReqID" required="N"/>
-      </message>
-      ...
-      <message name="NewOrderSingle" msgtype="D" msgcat="app">
-        <field name="ClOrdID" required="Y"/>
-        ...
-      </message>
-      ...
-    </messages>
-    <fields>
-      <field number="1" name="Account" type="CHAR" />
+
+  
+
+  Validation
+
+
+
+  
+
+ Validation +
+
+ +
+

QuickFIX will validate and reject any poorly formed messages + before they can reach your application. An XML file defines + what messages, fields, and values a session supports.

+ +

Several standard files are in included in the spec + directory.

+ +

The skeleton of a definition file looks like this.

+
+<fix type="FIX" major="4" minor="1">
+  <header>
+    <field name="BeginString" required="Y"/>
+    ...
+  </header>
+  <trailer>
+    <field name="CheckSum" required="Y"/>
+    ...
+  </trailer>
+  <messages>
+    <message name="Heartbeat" msgtype="0" msgcat="admin">
+      <field name="TestReqID" required="N"/>
+    </message>
+    ...
+    <message name="NewOrderSingle" msgtype="D" msgcat="app">
+      <field name="ClOrdID" required="Y"/>
       ...
-      <field number="4" name="AdvSide" type="CHAR">
-       <value enum="B" description="BUY" />
-       <value enum="S" description="SELL" />
-       <value enum="X" description="CROSS" />
-       <value enum="T" description="TRADE" />
-     </field>
-     ...
-    </fields>
-  </fix>
-  
+ </message> + ... + </messages> + <fields> + <field number="1" name="Account" type="CHAR" /> + ... + <field number="4" name="AdvSide" type="CHAR"> + <value enum="B" description="BUY" /> + <value enum="S" description="SELL" /> + <value enum="X" description="CROSS" /> + <value enum="T" description="TRADE" /> + </field> + ... + </fields> +</fix> +
-

- The validator will not reject conditionally required fields because the rules for them are not - clearly defined and are often debatable. QuickFIX will reject a conditonally required field when - you try to pull it out in your fromApp function if you try to get a field that is not there. - +

The validator will not reject conditionally required fields + because the rules for them are not clearly defined. Using a + conditionally required field that is not preset will cause a + message to be rejected.

+ + diff --git a/doc/tidy.config b/doc/tidy.config new file mode 100644 index 000000000..82719fc71 --- /dev/null +++ b/doc/tidy.config @@ -0,0 +1,4 @@ +indent: auto +indent-spaces: 2 +quiet: yes +tidy-mark: no diff --git a/doc/tidy.sh b/doc/tidy.sh new file mode 100755 index 000000000..665b5e7e8 --- /dev/null +++ b/doc/tidy.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +WHICH_TIDY=$(which tidy) +if [ $? == 0 ] ; then + find html "*.html" | xargs -n1 tidy -config tidy.config -m +fi diff --git a/examples/executor/C++/Application.cpp b/examples/executor/C++/Application.cpp index ab52432cc..1958c782c 100644 --- a/examples/executor/C++/Application.cpp +++ b/examples/executor/C++/Application.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/executor/C++/Application.h b/examples/executor/C++/Application.h index 831410091..1ccbb42e0 100644 --- a/examples/executor/C++/Application.h +++ b/examples/executor/C++/Application.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/executor/C++/example_executor_cpp_vs10.vcxproj b/examples/executor/C++/example_executor_cpp_vs10.vcxproj index ea7d4c1d6..2277de9aa 100644 --- a/examples/executor/C++/example_executor_cpp_vs10.vcxproj +++ b/examples/executor/C++/example_executor_cpp_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -11,9 +11,9 @@ - example_executor_cpp_vs10 + example_executor_cpp {AC97D259-3231-4575-8CA5-BF9EF79B5A87} - example_executor_cpp_vs10 + example_executor_cpp diff --git a/examples/executor/C++/example_executor_cpp_vs11.vcxproj b/examples/executor/C++/example_executor_cpp_vs11.vcxproj index a61ebdfd4..4a21d9096 100644 --- a/examples/executor/C++/example_executor_cpp_vs11.vcxproj +++ b/examples/executor/C++/example_executor_cpp_vs11.vcxproj @@ -19,9 +19,9 @@ - example_executor_cpp_vs11 + example_executor_cpp {AC97D259-3231-4575-8CA5-BF9EF79B5A87} - example_executor_cpp_vs11 + example_executor_cpp diff --git a/examples/executor/C++/example_executor_cpp_vs12.vcxproj b/examples/executor/C++/example_executor_cpp_vs12.vcxproj new file mode 100644 index 000000000..c9e90b986 --- /dev/null +++ b/examples/executor/C++/example_executor_cpp_vs12.vcxproj @@ -0,0 +1,141 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + example_executor_cpp + {AC97D259-3231-4575-8CA5-BF9EF79B5A87} + example_executor_cpp + + + + Application + false + MultiByte + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)bin\debug\executor_cpp\ + debug\vs12\ + true + $(SolutionDir)bin\release\executor_cpp\ + release\vs12\ + false + executor_cpp + executor_cpp + + + + .\Debug/executor_cpp.tlb + + + Disabled + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + .\Debug/executor_cpp.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib\debug;%(AdditionalLibraryDirectories) + true + .\Debug/executor_cpp_debug.pdb + Console + + + + + .\Release/executor_cpp.tlb + + + OnlyExplicitInline + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + .\Release/executor_cpp.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib;%(AdditionalLibraryDirectories) + .\Release/executor_cpp.pdb + Console + + + + + + + + + + + + {d5d558ea-bbac-4862-a946-d3881bace3b7} + false + + + + + + \ No newline at end of file diff --git a/examples/executor/C++/example_executor_cpp_vs7.vcproj b/examples/executor/C++/example_executor_cpp_vs7.vcproj deleted file mode 100644 index bb731cfc6..000000000 --- a/examples/executor/C++/example_executor_cpp_vs7.vcproj +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/executor/C++/example_executor_cpp_vs8.vcproj b/examples/executor/C++/example_executor_cpp_vs8.vcproj deleted file mode 100644 index d1250a3b0..000000000 --- a/examples/executor/C++/example_executor_cpp_vs8.vcproj +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/executor/C++/example_executor_cpp_vs9.vcproj b/examples/executor/C++/example_executor_cpp_vs9.vcproj deleted file mode 100644 index 17ff46d92..000000000 --- a/examples/executor/C++/example_executor_cpp_vs9.vcproj +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/executor/C++/executor.cpp b/examples/executor/C++/executor.cpp index f6b731eda..9923b08e7 100644 --- a/examples/executor/C++/executor.cpp +++ b/examples/executor/C++/executor.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/executor/csharp/App.ico b/examples/executor/csharp/App.ico deleted file mode 100644 index 3a5525fd794f7a7c5c8e6187f470ea3af38cd2b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeHHJr05}7=1t!Hp3A*8IHkVf+j?-!eHY14Gtcw1Eb*_9>Bq^zETJ@GKj{_2j4$w zo9}xCh!8{T3=X##Skq>ikMjsvB|y%crWBM2iW(4pI}c%z6%lW!=~4v77#3{z!dmB1 z__&l)-{KUYR+|8|;wB^R|9ET$J@(@=#rd^=)qs85?vAy(PSF5CyNkus435LVkZ$rj zNw|JG-P7^hF<(;#o*Vk}5R#e|^13tBbQkeF?djULtvqyxd3<{9 diff --git a/examples/executor/csharp/Application.cs b/examples/executor/csharp/Application.cs deleted file mode 100644 index a96719b07..000000000 --- a/examples/executor/csharp/Application.cs +++ /dev/null @@ -1,328 +0,0 @@ -/**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. -** -** This file is part of the QuickFIX FIX Engine -** -** This file may be distributed under the terms of the quickfixengine.org -** license as defined by quickfixengine.org and appearing in the file -** LICENSE included in the packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.quickfixengine.org/LICENSE for licensing information. -** -** Contact ask@quickfixengine.org if any conditions of this licensing are -** not clear to you. -** -****************************************************************************/ - -using System; -using System.Threading; -using QuickFix; - -namespace executor_csharp -{ -public class Application: MessageCracker, QuickFix.Application -{ - public void onCreate( SessionID sessionID ) {} - public void onLogon( SessionID sessionID ) {} - public void onLogout( SessionID sessionID ) {} - public void toAdmin( Message message, SessionID sessionID ) {} - public void toApp( Message message, SessionID sessionID ) {} - public void fromAdmin( Message message, SessionID sessionID ) {} - public void fromApp( Message message, SessionID sessionID ) - { crack( message, sessionID ); } - - public override void onMessage( QuickFix40.NewOrderSingle order, SessionID sessionID ) - { - Symbol symbol = new Symbol(); - Side side = new Side(); - OrdType ordType = new OrdType(); - OrderQty orderQty = new OrderQty(); - Price price = new Price(); - ClOrdID clOrdID = new ClOrdID(); - - order.get( ordType ); - - if ( ordType.getValue() != OrdType.LIMIT ) - throw new IncorrectTagValue( ordType.getField() ); - - order.get( symbol ); - order.get( side ); - order.get( orderQty ); - order.get( price ); - order.get( clOrdID ); - - QuickFix40.ExecutionReport executionReport = new QuickFix40.ExecutionReport - ( genOrderID(), - genExecID(), - new ExecTransType( ExecTransType.NEW ), - new OrdStatus ( OrdStatus.FILLED ), - symbol, - side, - orderQty, - new LastShares ( orderQty.getValue() ), - new LastPx ( price.getValue() ), - new CumQty ( orderQty.getValue() ), - new AvgPx ( price.getValue() ) ); - - executionReport.set( clOrdID ); - - if( order.isSetAccount() ) - executionReport.set( order.getAccount() ); - - try - { - Session.sendToTarget( executionReport, sessionID ); - } - catch ( SessionNotFound ) {} - } - - public override void onMessage( QuickFix41.NewOrderSingle order, SessionID sessionID ) - { - Symbol symbol = new Symbol(); - Side side = new Side(); - OrdType ordType = new OrdType(); - OrderQty orderQty = new OrderQty(); - Price price = new Price(); - ClOrdID clOrdID = new ClOrdID(); - - order.get( ordType ); - - if ( ordType.getValue() != OrdType.LIMIT ) - throw new IncorrectTagValue( ordType.getField() ); - - order.get( symbol ); - order.get( side ); - order.get( orderQty ); - order.get( price ); - order.get( clOrdID ); - - QuickFix41.ExecutionReport executionReport = new QuickFix41.ExecutionReport - ( genOrderID(), - genExecID(), - new ExecTransType( ExecTransType.NEW ), - new ExecType( ExecType.FILL ), - new OrdStatus ( OrdStatus.FILLED ), - symbol, - side, - orderQty, - new LastShares ( orderQty.getValue() ), - new LastPx ( price.getValue() ), - new LeavesQty( 0 ), - new CumQty ( orderQty.getValue() ), - new AvgPx ( price.getValue() ) ); - - executionReport.set( clOrdID ); - - if( order.isSetAccount() ) - executionReport.set( order.getAccount() ); - - try - { - Session.sendToTarget( executionReport, sessionID ); - } - catch ( SessionNotFound ) {} - } - - public override void onMessage( QuickFix42.NewOrderSingle order, SessionID sessionID ) - { - Symbol symbol = new Symbol(); - Side side = new Side(); - OrdType ordType = new OrdType(); - OrderQty orderQty = new OrderQty(); - Price price = new Price(); - ClOrdID clOrdID = new ClOrdID(); - - order.get( ordType ); - - if ( ordType.getValue() != OrdType.LIMIT ) - throw new IncorrectTagValue( ordType.getField() ); - - order.get( symbol ); - order.get( side ); - order.get( orderQty ); - order.get( price ); - order.get( clOrdID ); - - QuickFix42.ExecutionReport executionReport = new QuickFix42.ExecutionReport - ( genOrderID(), - genExecID(), - new ExecTransType( ExecTransType.NEW ), - new ExecType( ExecType.FILL ), - new OrdStatus( OrdStatus.FILLED ), - symbol, - side, - new LeavesQty( 0 ), - new CumQty( orderQty.getValue() ), - new AvgPx( price.getValue() ) ); - - executionReport.set( clOrdID ); - executionReport.set( orderQty ); - executionReport.set( new LastShares( orderQty.getValue() ) ); - executionReport.set( new LastPx( price.getValue() ) ); - - if( order.isSetAccount() ) - executionReport.set( order.getAccount() ); - - try - { - Session.sendToTarget( executionReport, sessionID ); - } - catch ( SessionNotFound ) {} - } - - public override void onMessage( QuickFix43.NewOrderSingle order, SessionID sessionID ) - { - Symbol symbol = new Symbol(); - Side side = new Side(); - OrdType ordType = new OrdType(); - OrderQty orderQty = new OrderQty(); - Price price = new Price(); - ClOrdID clOrdID = new ClOrdID(); - - order.get( ordType ); - - if ( ordType.getValue() != OrdType.LIMIT ) - throw new IncorrectTagValue( ordType.getField() ); - - order.get( symbol ); - order.get( side ); - order.get( orderQty ); - order.get( price ); - order.get( clOrdID ); - - QuickFix43.ExecutionReport executionReport = new QuickFix43.ExecutionReport - ( genOrderID(), - genExecID(), - new ExecType ( ExecType.FILL ), - new OrdStatus ( OrdStatus.FILLED ), - side, - new LeavesQty ( 0 ), - new CumQty ( orderQty.getValue() ), - new AvgPx ( price.getValue() ) ); - - executionReport.set( clOrdID ); - executionReport.set( symbol ); - executionReport.set( orderQty ); - executionReport.set( new LastQty( orderQty.getValue() ) ); - executionReport.set( new LastPx( price.getValue() ) ); - - if( order.isSetAccount() ) - executionReport.set( order.getAccount() ); - - try - { - Session.sendToTarget( executionReport, sessionID ); - } - catch ( SessionNotFound ) {} - } - - - public override void onMessage( QuickFix44.NewOrderSingle order, SessionID sessionID ) - { - Symbol symbol = new Symbol(); - Side side = new Side(); - OrdType ordType = new OrdType(); - OrderQty orderQty = new OrderQty(); - Price price = new Price(); - ClOrdID clOrdID = new ClOrdID(); - - order.get( ordType ); - - if ( ordType.getValue() != OrdType.LIMIT ) - throw new IncorrectTagValue( ordType.getField() ); - - order.get( symbol ); - order.get( side ); - order.get( orderQty ); - order.get( price ); - order.get( clOrdID ); - - QuickFix44.ExecutionReport executionReport = new QuickFix44.ExecutionReport - ( genOrderID(), - genExecID(), - new ExecType ( ExecType.FILL ), - new OrdStatus ( OrdStatus.FILLED ), - side, - new LeavesQty ( 0 ), - new CumQty ( orderQty.getValue() ), - new AvgPx ( price.getValue() ) ); - - executionReport.set( clOrdID ); - executionReport.set( symbol ); - executionReport.set( orderQty ); - executionReport.set( new LastQty( orderQty.getValue() ) ); - executionReport.set( new LastPx( price.getValue() ) ); - - if( order.isSetAccount() ) - executionReport.setField( order.getAccount() ); - - try - { - Session.sendToTarget( executionReport, sessionID ); - } - catch ( SessionNotFound ) {} - } - - public override void onMessage(QuickFix50.NewOrderSingle order, SessionID sessionID) - { - Symbol symbol = new Symbol(); - Side side = new Side(); - OrdType ordType = new OrdType(); - OrderQty orderQty = new OrderQty(); - Price price = new Price(); - ClOrdID clOrdID = new ClOrdID(); - - order.get(ordType); - - if (ordType.getValue() != OrdType.LIMIT) - throw new IncorrectTagValue(ordType.getField()); - - order.get(symbol); - order.get(side); - order.get(orderQty); - order.get(price); - order.get(clOrdID); - - QuickFix50.ExecutionReport executionReport = new QuickFix50.ExecutionReport - (genOrderID(), - genExecID(), - new ExecType(ExecType.FILL), - new OrdStatus(OrdStatus.FILLED), - side, - new LeavesQty(0), - new CumQty(orderQty.getValue())); - - executionReport.set(clOrdID); - executionReport.set(symbol); - executionReport.set(orderQty); - executionReport.set(new LastQty(orderQty.getValue())); - executionReport.set(new LastPx(price.getValue())); - executionReport.set(new AvgPx(price.getValue())); - - if (order.isSetAccount()) - executionReport.setField(order.getAccount()); - - try - { - Session.sendToTarget(executionReport, sessionID); - } - catch (SessionNotFound) { } - } - - private OrderID genOrderID() - { - return new OrderID( ( ++m_orderID ).ToString() ); - } - - private ExecID genExecID() - { - return new ExecID( ( ++m_execID ).ToString() ); - } - - private int m_orderID; - private int m_execID; -} -} diff --git a/examples/executor/csharp/AssemblyInfo.cs b/examples/executor/csharp/AssemblyInfo.cs deleted file mode 100644 index 155d3efa9..000000000 --- a/examples/executor/csharp/AssemblyInfo.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[ assembly: AssemblyTitle( "" ) ] -[ assembly: AssemblyDescription( "" ) ] -[ assembly: AssemblyConfiguration( "" ) ] -[ assembly: AssemblyCompany( "" ) ] -[ assembly: AssemblyProduct( "" ) ] -[ assembly: AssemblyCopyright( "" ) ] -[ assembly: AssemblyTrademark( "" ) ] -[ assembly: AssemblyCulture( "" ) ] - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[ assembly: AssemblyVersion( "1.0.*" ) ] - -// -// In order to sign your assembly you must specify a key to use. Refer to the -// Microsoft .NET Framework documentation for more information on assembly signing. -// -// Use the attributes below to control which key is used for signing. -// -// Notes: -// (*) If no key is specified, the assembly is not signed. -// (*) KeyName refers to a key that has been installed in the Crypto Service -// Provider (CSP) on your machine. KeyFile refers to a file which contains -// a key. -// (*) If the KeyFile and the KeyName values are both specified, the -// following processing occurs: -// (1) If the KeyName can be found in the CSP, that key is used. -// (2) If the KeyName does not exist and the KeyFile does exist, the key -// in the KeyFile is installed into the CSP and used. -// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. -// When specifying the KeyFile, the location of the KeyFile should be -// relative to the project output directory which is -// %Project Directory%\obj\. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// -[ assembly: AssemblyDelaySign( false ) ] -[ assembly: AssemblyKeyFile( "" ) ] -[ assembly: AssemblyKeyName( "" ) ] diff --git a/examples/executor/csharp/Executor.cs b/examples/executor/csharp/Executor.cs deleted file mode 100644 index 3622ce85a..000000000 --- a/examples/executor/csharp/Executor.cs +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. -** -** This file is part of the QuickFIX FIX Engine -** -** This file may be distributed under the terms of the quickfixengine.org -** license as defined by quickfixengine.org and appearing in the file -** LICENSE included in the packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.quickfixengine.org/LICENSE for licensing information. -** -** Contact ask@quickfixengine.org if any conditions of this licensing are -** not clear to you. -** -****************************************************************************/ - -using System; -using QuickFix; - -namespace executor_csharp -{ -class Executor -{ - [ STAThread ] - static void Main( string[] args ) - { - if ( args.Length != 1 ) - { - Console.WriteLine( "usage: executor_csharp FILE." ); - return ; - } - - try - { - SessionSettings settings = new SessionSettings( args[ 0 ] ); - Application application = new Application(); - FileStoreFactory storeFactory = new FileStoreFactory( settings ); - ScreenLogFactory logFactory = new ScreenLogFactory( settings ); - MessageFactory messageFactory = new DefaultMessageFactory(); - SocketAcceptor acceptor - = new SocketAcceptor( application, storeFactory, settings, logFactory, messageFactory ); - - acceptor.start(); - Console.WriteLine("press to quit"); - Console.Read(); - acceptor.stop(); - } - catch ( Exception e ) - { - Console.WriteLine( e ); - } - } -} -} diff --git a/examples/executor/csharp/example_executor_csharp_vs10.csproj b/examples/executor/csharp/example_executor_csharp_vs10.csproj deleted file mode 100644 index 28cce8772..000000000 --- a/examples/executor/csharp/example_executor_csharp_vs10.csproj +++ /dev/null @@ -1,156 +0,0 @@ - - - - Local - 8.0.50727 - 2.0 - {BA234002-9F1A-4B01-98D6-DE05C7E78B58} - Debug - AnyCPU - App.ico - - - executor_csharp - - - JScript - Grid - IE50 - false - Exe - executor_csharp - OnBuildSuccess - - - - - - - v4.0 - 2.0 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - ..\..\..\bin\debug\executor_csharp\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\..\..\bin\release\executor_csharp\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - - System - - - System.Data - - - System.XML - - - - - - Code - - - Code - - - Code - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs10 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs10 - - - - - - - - - - \ No newline at end of file diff --git a/examples/executor/csharp/example_executor_csharp_vs11.vcxproj b/examples/executor/csharp/example_executor_csharp_vs11.vcxproj deleted file mode 100644 index c1f6d2e86..000000000 --- a/examples/executor/csharp/example_executor_csharp_vs11.vcxproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - Local - 8.0.50727 - 2.0 - {BA234002-9F1A-4B01-98D6-DE05C7E78B58} - Debug - AnyCPU - App.ico - - - executor_csharp - - - JScript - Grid - IE50 - false - Exe - executor_csharp - OnBuildSuccess - - - - - - - v4.0 - 2.0 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - ..\..\..\bin\debug\executor_csharp\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\..\..\bin\release\executor_csharp\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - true - bin\DebugBoost\ - DEBUG;TRACE - 285212672 - 4096 - full - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - bin\ReleaseBoost\ - TRACE - 285212672 - true - 4096 - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - - System - - - System.Data - - - System.XML - - - - - - Code - - - Code - - - Code - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs11 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs11 - - - - - - - - - - \ No newline at end of file diff --git a/examples/executor/csharp/example_executor_csharp_vs7.csproj b/examples/executor/csharp/example_executor_csharp_vs7.csproj deleted file mode 100644 index 292f69312..000000000 --- a/examples/executor/csharp/example_executor_csharp_vs7.csproj +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/executor/csharp/example_executor_csharp_vs8.csproj b/examples/executor/csharp/example_executor_csharp_vs8.csproj deleted file mode 100644 index 0e6de07d0..000000000 --- a/examples/executor/csharp/example_executor_csharp_vs8.csproj +++ /dev/null @@ -1,117 +0,0 @@ - - - Local - 8.0.50727 - 2.0 - {BA234002-9F1A-4B01-98D6-DE05C7E78B58} - Debug - AnyCPU - App.ico - - - executor_csharp - - - JScript - Grid - IE50 - false - Exe - executor_csharp - OnBuildSuccess - - - - - - - - - ..\..\..\bin\debug\executor_csharp\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\..\..\bin\release\executor_csharp\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - - System - - - System.Data - - - System.XML - - - - - - Code - - - Code - - - Code - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs8 - True - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs8 - True - - - - - - - - - - \ No newline at end of file diff --git a/examples/executor/csharp/example_executor_csharp_vs9.csproj b/examples/executor/csharp/example_executor_csharp_vs9.csproj deleted file mode 100644 index a4f76ad4c..000000000 --- a/examples/executor/csharp/example_executor_csharp_vs9.csproj +++ /dev/null @@ -1,140 +0,0 @@ - - - Local - 9.0.30729 - 2.0 - {BA234002-9F1A-4B01-98D6-DE05C7E78B58} - Debug - AnyCPU - App.ico - - - executor_csharp - - - JScript - Grid - IE50 - false - Exe - executor_csharp - OnBuildSuccess - executor_csharp.Executor - - - 0.0 - - - v3.5 - - - ..\..\..\bin\debug\executor_csharp\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\..\..\bin\release\executor_csharp\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - true - bin\DebugBoost\ - DEBUG;TRACE - 285212672 - 4096 - full - AnyCPU - prompt - - - bin\ReleaseBoost\ - TRACE - 285212672 - true - 4096 - AnyCPU - prompt - - - - System - - - 3.5 - - - System.Data - - - System.XML - - - quickfix_net_messages_vs9 - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - True - - - quickfix_net_vs9 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} - True - - - - - - Code - - - Code - - - Code - - - - - - - - - - \ No newline at end of file diff --git a/examples/executor/python/executor.py b/examples/executor/python/executor.py index 7b4f7f81d..c753c7b71 100644 --- a/examples/executor/python/executor.py +++ b/examples/executor/python/executor.py @@ -1,6 +1,5 @@ import sys import time -import thread import quickfix as fix class Application(fix.Application): @@ -27,7 +26,6 @@ def fromApp(self, message, sessionID): clOrdID = fix.ClOrdID() message.getField( ordType ) - print ordType if ordType.getValue() != fix.OrdType_LIMIT: raise fix.IncorrectTagValue( ordType.getField() ) @@ -62,15 +60,15 @@ def fromApp(self, message, sessionID): try: fix.Session.sendToTarget( executionReport, sessionID ) - except SessionNotFound, e: + except SessionNotFound as e: return def genOrderID(self): self.orderID = self.orderID+1 - return `self.orderID` + return self.orderID def genExecID(self): self.execID = self.execID+1 - return `self.execID` + return self.execID try: file = sys.argv[1] @@ -83,5 +81,5 @@ def genExecID(self): while 1: time.sleep(1) -except (fix.ConfigError, fix.RuntimeError), e: - print e +except (fix.ConfigError, fix.RuntimeError) as e: + print(e) diff --git a/examples/executor/vbnet/Application.vb b/examples/executor/vbnet/Application.vb deleted file mode 100644 index 9f41718e2..000000000 --- a/examples/executor/vbnet/Application.vb +++ /dev/null @@ -1,272 +0,0 @@ -Imports QuickFix - -Public Class Application - Inherits QuickFix.MessageCracker - Implements QuickFix.Application - - Public Sub onCreate(ByVal sessionID As QuickFix.SessionID) Implements QuickFix.Application.onCreate - End Sub - - Public Sub onLogon(ByVal sessionID As QuickFix.SessionID) Implements QuickFix.Application.onLogon - End Sub - - Public Sub onLogout(ByVal sessionID As QuickFix.SessionID) Implements QuickFix.Application.onLogout - End Sub - - Public Sub toAdmin(ByVal message As QuickFix.Message, ByVal sessionID As QuickFix.SessionID) Implements QuickFix.Application.toAdmin - End Sub - - Public Sub toApp(ByVal message As QuickFix.Message, ByVal sessionID As QuickFix.SessionID) Implements QuickFix.Application.toApp - End Sub - - Public Sub fromAdmin(ByVal message As QuickFix.Message, ByVal sessionID As QuickFix.SessionID) Implements QuickFix.Application.fromAdmin - End Sub - - Public Sub fromApp(ByVal message As QuickFix.Message, ByVal sessionID As QuickFix.SessionID) Implements QuickFix.Application.fromApp - crack(message, sessionID) - End Sub - - Public Overloads Overrides Sub onMessage(ByVal order As QuickFix40.NewOrderSingle, ByVal sessionID As QuickFix.SessionID) - Dim symbol As New Symbol - Dim side As New Side - Dim ordType As New OrdType - Dim orderQty As New OrderQty - Dim price As New Price - Dim clOrdID As New ClOrdID - - order.get(ordType) - - If ((ordType.getValue() <> ordType.LIMIT)) Then - Throw New IncorrectTagValue(ordType.getField()) - End If - - order.get(symbol) - order.get(side) - order.get(orderQty) - order.get(price) - order.get(clOrdID) - - Dim executionReport As New QuickFix40.ExecutionReport( _ - genOrderID(), _ - genExecID(), _ - New ExecTransType(ExecTransType.[NEW]), _ - New OrdStatus(OrdStatus.FILLED), _ - symbol, _ - side, _ - orderQty, _ - New LastShares(orderQty.getValue()), _ - New LastPx(price.getValue()), _ - New CumQty(orderQty.getValue()), _ - New AvgPx(price.getValue())) - - order.set(clOrdID) - - Try - Session.sendToTarget(executionReport, sessionID) - Catch e As SessionNotFound - End Try - End Sub - - Public Overloads Overrides Sub onMessage(ByVal order As QuickFix41.NewOrderSingle, ByVal sessionID As QuickFix.SessionID) - Dim symbol As New Symbol - Dim side As New Side - Dim ordType As New OrdType - Dim orderQty As New OrderQty - Dim price As New Price - Dim clOrdID As New ClOrdID - - order.get(ordType) - - If ((ordType.getValue() <> ordType.LIMIT)) Then - Throw New IncorrectTagValue(ordType.getField()) - End If - - order.get(symbol) - order.get(side) - order.get(orderQty) - order.get(price) - order.get(clOrdID) - - Dim executionReport As New QuickFix41.ExecutionReport( _ - genOrderID(), _ - genExecID(), _ - New ExecTransType(ExecTransType.[NEW]), _ - New ExecType(ExecType.FILL), _ - New OrdStatus(OrdStatus.FILLED), _ - symbol, side, orderQty, _ - New LastShares(orderQty.getValue()), _ - New LastPx(price.getValue()), _ - New LeavesQty(0), _ - New CumQty(orderQty.getValue()), _ - New AvgPx(price.getValue())) - - order.set(clOrdID) - - Try - Session.sendToTarget(executionReport, sessionID) - Catch e As SessionNotFound - End Try - End Sub - - Public Overloads Overrides Sub onMessage(ByVal order As QuickFix42.NewOrderSingle, ByVal sessionID As QuickFix.SessionID) - Dim symbol As New Symbol - Dim side As New Side - Dim ordType As New OrdType - Dim orderQty As New OrderQty - Dim price As New Price - Dim clOrdID As New ClOrdID - - order.get(ordType) - - If ((ordType.getValue() <> ordType.LIMIT)) Then - Throw New IncorrectTagValue(ordType.getField()) - End If - - order.get(symbol) - order.get(side) - order.get(orderQty) - order.get(price) - order.get(clOrdID) - - Dim executionReport As New QuickFix42.ExecutionReport( _ - genOrderID(), _ - genExecID(), _ - New ExecTransType(ExecTransType.[NEW]), _ - New ExecType(ExecType.FILL), _ - New OrdStatus(OrdStatus.FILLED), _ - symbol, _ - side, _ - New LeavesQty(0), _ - New CumQty(orderQty.getValue()), _ - New AvgPx(price.getValue())) - - executionReport.set(clOrdID) - executionReport.set(orderQty) - executionReport.set(New LastShares(orderQty.getValue())) - executionReport.set(New LastPx(price.getValue())) - - Try - Session.sendToTarget(executionReport, sessionID) - Catch e As SessionNotFound - End Try - End Sub - - Public Overloads Overrides Sub onMessage(ByVal order As QuickFix43.NewOrderSingle, ByVal sessionID As QuickFix.SessionID) - Dim symbol As New Symbol - Dim side As New Side - Dim ordType As New OrdType - Dim orderQty As New OrderQty - Dim price As New Price - Dim clOrdID As New ClOrdID - - order.get(ordType) - - If ((ordType.getValue() <> ordType.LIMIT)) Then - Throw New IncorrectTagValue(ordType.getField()) - End If - - order.get(symbol) - order.get(side) - order.get(orderQty) - order.get(price) - order.get(clOrdID) - - Dim executionReport As New QuickFix43.ExecutionReport( _ - genOrderID(), _ - genExecID(), _ - New ExecType(ExecType.FILL), _ - New OrdStatus(OrdStatus.FILLED), _ - side, _ - New LeavesQty(0), _ - New CumQty(orderQty.getValue()), _ - New AvgPx(price.getValue())) - - executionReport.set(clOrdID) - executionReport.set(orderQty) - executionReport.set(New LastQty(orderQty.getValue())) - executionReport.set(New LastPx(price.getValue())) - - Try - Session.sendToTarget(executionReport, sessionID) - Catch e As SessionNotFound - End Try - End Sub - - Public Overloads Overrides Sub onMessage(ByVal order As QuickFix44.NewOrderSingle, ByVal sessionID As QuickFix.SessionID) - Dim symbol As New Symbol - Dim side As New Side - Dim ordType As New OrdType - Dim orderQty As New OrderQty - Dim price As New Price - Dim clOrdID As New ClOrdID - - order.get(ordType) - - If ((ordType.getValue() <> ordType.LIMIT)) Then - Throw New IncorrectTagValue(ordType.getField()) - End If - - order.get(symbol) - order.get(side) - order.get(orderQty) - order.get(price) - order.get(clOrdID) - - Dim executionReport As New QuickFix44.ExecutionReport(genOrderID(), genExecID(), New ExecType(ExecType.FILL), New OrdStatus(OrdStatus.FILLED), side, New LeavesQty(0), New CumQty(orderQty.getValue()), New AvgPx(price.getValue())) - executionReport.set(clOrdID) - executionReport.set(orderQty) - executionReport.set(New LastQty(orderQty.getValue())) - executionReport.set(New LastPx(price.getValue())) - - Try - Session.sendToTarget(executionReport, sessionID) - Catch e As SessionNotFound - End Try - End Sub - - Public Overloads Overrides Sub onMessage(ByVal order As QuickFix50.NewOrderSingle, ByVal sessionID As QuickFix.SessionID) - Dim symbol As New Symbol - Dim side As New Side - Dim ordType As New OrdType - Dim orderQty As New OrderQty - Dim price As New Price - Dim clOrdID As New ClOrdID - - order.get(ordType) - - If ((ordType.getValue() <> ordType.LIMIT)) Then - Throw New IncorrectTagValue(ordType.getField()) - End If - - order.get(symbol) - order.get(side) - order.get(orderQty) - order.get(price) - order.get(clOrdID) - - Dim executionReport As New QuickFix50.ExecutionReport(genOrderID(), genExecID(), New ExecType(ExecType.FILL), New OrdStatus(OrdStatus.FILLED), side, New LeavesQty(0), New CumQty(orderQty.getValue())) - executionReport.set(clOrdID) - executionReport.set(orderQty) - executionReport.set(New LastQty(orderQty.getValue())) - executionReport.set(New LastPx(price.getValue())) - executionReport.set(New AvgPx(price.getValue())) - - Try - Session.sendToTarget(executionReport, sessionID) - Catch e As SessionNotFound - End Try - End Sub - - Private Function genOrderID() As OrderID - m_orderID += 1 - genOrderID = New OrderID(m_orderID) - End Function - - Private Function genExecID() As ExecID - m_execID += 1 - genExecID = New ExecID(m_execID) - End Function - - Private m_orderID As Int32 - Private m_execID As Int32 -End Class diff --git a/examples/executor/vbnet/AssemblyInfo.vb b/examples/executor/vbnet/AssemblyInfo.vb deleted file mode 100644 index 39cbcef5b..000000000 --- a/examples/executor/vbnet/AssemblyInfo.vb +++ /dev/null @@ -1,31 +0,0 @@ -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: - - diff --git a/examples/executor/vbnet/Executor.vb b/examples/executor/vbnet/Executor.vb deleted file mode 100644 index 7278dce24..000000000 --- a/examples/executor/vbnet/Executor.vb +++ /dev/null @@ -1,30 +0,0 @@ -Imports System -Imports QuickFix - -Module Executor - - Sub Main(ByVal CmdArgs() As String) - If (CmdArgs.Length() <> 1) Then - Console.WriteLine("usage: executor_vbnet FILE.") - Return - End If - - Try - Dim sessionSettings As New SessionSettings(CmdArgs(0)) - Dim application As New Application - Dim storeFactory As New FileStoreFactory(sessionSettings) - Dim logFactory As New ScreenLogFactory(sessionSettings) - Dim messageFactory As New DefaultMessageFactory - Dim acceptor As New SocketAcceptor _ - (application, storeFactory, sessionSettings, logFactory, messageFactory) - - acceptor.start() - Console.WriteLine("press to quit") - Console.Read() - acceptor.stop() - Catch e As System.Exception - Console.WriteLine(e) - End Try - End Sub - -End Module diff --git a/examples/executor/vbnet/example_executor_vbnet_vs10.vbproj b/examples/executor/vbnet/example_executor_vbnet_vs10.vbproj deleted file mode 100644 index 79d278831..000000000 --- a/examples/executor/vbnet/example_executor_vbnet_vs10.vbproj +++ /dev/null @@ -1,163 +0,0 @@ - - - - Local - 8.0.50727 - 2.0 - {DA675460-F6E5-458C-BCEB-45B2986C90FC} - Debug - AnyCPU - - - - - executor_vbnet - - - None - JScript - Grid - IE50 - false - Exe - Binary - On - Off - executor_vbnet - executor_vbnet.Executor - - - Console - - - v4.0 - 2.0 - false - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - ..\..\..\bin\debug\executor_vbnet\ - - - 285212672 - - - - - true - true - true - false - false - false - false - 1 - 42016,42017,42018,42019,42032 - full - - - ..\..\..\bin\release\executor_vbnet\ - - - 285212672 - - - - - false - true - false - true - false - false - false - 1 - 42016,42017,42018,42019,42032 - none - - - - System - - - System.Data - - - System.XML - - - - - - - - - - - - Code - - - Code - - - Code - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs10 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs10 - - - - - - - - - - \ No newline at end of file diff --git a/examples/executor/vbnet/example_executor_vbnet_vs11.vbproj b/examples/executor/vbnet/example_executor_vbnet_vs11.vbproj deleted file mode 100644 index 49e9e12bd..000000000 --- a/examples/executor/vbnet/example_executor_vbnet_vs11.vbproj +++ /dev/null @@ -1,185 +0,0 @@ - - - - Local - 8.0.50727 - 2.0 - {DA675460-F6E5-458C-BCEB-45B2986C90FC} - Debug - AnyCPU - - - - - executor_vbnet - - - None - JScript - Grid - IE50 - false - Exe - Binary - On - Off - executor_vbnet - executor_vbnet.Executor - - - Console - - - v4.0 - 2.0 - false - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - true - - - ..\..\..\bin\debug\executor_vbnet\ - - - 285212672 - - - - - true - true - true - false - false - false - false - 1 - 42016,42017,42018,42019,42032 - full - - - ..\..\..\bin\release\executor_vbnet\ - - - 285212672 - - - - - false - true - false - true - false - false - false - 1 - 42016,42017,42018,42019,42032 - none - - - true - true - true - bin\DebugBoost\ - 285212672 - 1 - 42016,42017,42018,42019,42032 - full - AnyCPU - ManagedMinimumRules.ruleset - - - true - bin\ReleaseBoost\ - 285212672 - true - 1 - 42016,42017,42018,42019,42032 - AnyCPU - ManagedMinimumRules.ruleset - - - - System - - - System.Data - - - System.XML - - - - - - - - - - - - Code - - - Code - - - Code - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs11 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs11 - - - - - - - - - - \ No newline at end of file diff --git a/examples/executor/vbnet/example_executor_vbnet_vs7.vbproj b/examples/executor/vbnet/example_executor_vbnet_vs7.vbproj deleted file mode 100644 index cced88fb5..000000000 --- a/examples/executor/vbnet/example_executor_vbnet_vs7.vbproj +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/executor/vbnet/example_executor_vbnet_vs8.vbproj b/examples/executor/vbnet/example_executor_vbnet_vs8.vbproj deleted file mode 100644 index 8fdf086c1..000000000 --- a/examples/executor/vbnet/example_executor_vbnet_vs8.vbproj +++ /dev/null @@ -1,123 +0,0 @@ - - - Local - 8.0.50727 - 2.0 - {DA675460-F6E5-458C-BCEB-45B2986C90FC} - Debug - AnyCPU - - - - - executor_vbnet - - - None - JScript - Grid - IE50 - false - Exe - Binary - On - Off - executor_vbnet - executor_vbnet.Executor - - - Console - - - - - ..\..\..\bin\debug\executor_vbnet\ - - - 285212672 - - - - - true - true - true - false - false - false - false - 1 - 42016,42017,42018,42019,42032 - full - - - ..\..\..\bin\release\executor_vbnet\ - - - 285212672 - - - - - false - true - false - true - false - false - false - 1 - 42016,42017,42018,42019,42032 - none - - - - System - - - System.Data - - - System.XML - - - quickfix_net_messages_vs8 - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - True - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs8 - True - - - - - - - - - - - - Code - - - Code - - - Code - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/executor/vbnet/example_executor_vbnet_vs9.vbproj b/examples/executor/vbnet/example_executor_vbnet_vs9.vbproj deleted file mode 100644 index cec1aea46..000000000 --- a/examples/executor/vbnet/example_executor_vbnet_vs9.vbproj +++ /dev/null @@ -1,128 +0,0 @@ - - - Local - 9.0.21022 - 2.0 - {DA675460-F6E5-458C-BCEB-45B2986C90FC} - Debug - AnyCPU - - - - - executor_vbnet - - - None - JScript - Grid - IE50 - false - Exe - Binary - On - Off - executor_vbnet - executor_vbnet.Executor - - - Console - 0.0 - - - v3.5 - - - ..\..\..\bin\debug\executor_vbnet\ - executor_vbnet.xml - 285212672 - - - - - true - true - true - false - false - false - false - 1 - 42016,42017,42018,42019,42032 - full - - - ..\..\..\bin\release\executor_vbnet\ - executor_vbnet.xml - 285212672 - - - - - false - true - false - true - false - false - false - 1 - 42016,42017,42018,42019,42032 - none - - - - System - - - 3.5 - - - System.Data - - - System.XML - - - quickfix_net_messages_vs9 - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - True - - - quickfix_net_vs9 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} - True - - - - - - - - - - - - - Code - - - Code - - - Code - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/ordermatch/Application.cpp b/examples/ordermatch/Application.cpp index d55cc21bd..331141876 100644 --- a/examples/ordermatch/Application.cpp +++ b/examples/ordermatch/Application.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** @@ -60,8 +60,7 @@ void Application::onMessage( const FIX42::NewOrderSingle& message, const FIX::Se if ( ordType == FIX::OrdType_LIMIT ) message.get( price ); message.get( orderQty ); - if ( message.isSetField( timeInForce ) ) - message.get( timeInForce ); + message.getFieldIfSet( timeInForce ); try { diff --git a/examples/ordermatch/Application.h b/examples/ordermatch/Application.h index 657d919c5..b36a7e72f 100644 --- a/examples/ordermatch/Application.h +++ b/examples/ordermatch/Application.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/IDGenerator.h b/examples/ordermatch/IDGenerator.h index 03c9ea9e0..2d40c5178 100644 --- a/examples/ordermatch/IDGenerator.h +++ b/examples/ordermatch/IDGenerator.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/Market.cpp b/examples/ordermatch/Market.cpp index 0aeb8c33e..029450b4e 100644 --- a/examples/ordermatch/Market.cpp +++ b/examples/ordermatch/Market.cpp @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** @@ -107,7 +107,7 @@ Order& Market::find( Order::Side side, std::string id ) void Market::match( Order& bid, Order& ask ) { double price = ask.getPrice(); - int quantity = 0; + long quantity = 0; if ( bid.getOpenQuantity() > ask.getOpenQuantity() ) quantity = ask.getOpenQuantity(); diff --git a/examples/ordermatch/Market.h b/examples/ordermatch/Market.h index 4db829551..bbe09f9e2 100644 --- a/examples/ordermatch/Market.h +++ b/examples/ordermatch/Market.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/Order.h b/examples/ordermatch/Order.h index bbf6a1056..6df5ce296 100644 --- a/examples/ordermatch/Order.h +++ b/examples/ordermatch/Order.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/OrderMatcher.h b/examples/ordermatch/OrderMatcher.h index 2e51ec82f..2b2bd41fe 100644 --- a/examples/ordermatch/OrderMatcher.h +++ b/examples/ordermatch/OrderMatcher.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/example_ordermatch_vs10.vcxproj b/examples/ordermatch/example_ordermatch_vs10.vcxproj index 356102b33..731b00b9a 100644 --- a/examples/ordermatch/example_ordermatch_vs10.vcxproj +++ b/examples/ordermatch/example_ordermatch_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -11,9 +11,9 @@ - example_ordermatch_vs10 + example_ordermatch {CBFECC67-2F3D-49F9-8450-BF47FBB766DF} - example_ordermatch_vs10 + example_ordermatch diff --git a/examples/ordermatch/example_ordermatch_vs11.vcxproj b/examples/ordermatch/example_ordermatch_vs11.vcxproj index e5637f042..b1e512199 100644 --- a/examples/ordermatch/example_ordermatch_vs11.vcxproj +++ b/examples/ordermatch/example_ordermatch_vs11.vcxproj @@ -19,9 +19,9 @@ - example_ordermatch_vs11 + example_ordermatch {CBFECC67-2F3D-49F9-8450-BF47FBB766DF} - example_ordermatch_vs11 + example_ordermatch diff --git a/examples/ordermatch/example_ordermatch_vs12.vcxproj b/examples/ordermatch/example_ordermatch_vs12.vcxproj new file mode 100644 index 000000000..cc05bc8e3 --- /dev/null +++ b/examples/ordermatch/example_ordermatch_vs12.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + example_ordermatch + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF} + example_ordermatch + + + + Application + false + MultiByte + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)bin\release\ordermatch\ + release\vs12\ + false + $(SolutionDir)bin\debug\ordermatch\ + debug\vs12\ + true + ordermatch + ordermatch + + + + .\Release/ordermatch.tlb + + + OnlyExplicitInline + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + + + .\Release/ordermatch.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib;%(AdditionalLibraryDirectories) + .\Release/ordermatch.pdb + Console + + + + + .\Debug/ordermatch.tlb + + + Disabled + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + .\Debug/ordermatch.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib\debug;%(AdditionalLibraryDirectories) + true + .\Debug/ordermatch_debug.pdb + Console + + + + + + + + + + + + + + + + + {d5d558ea-bbac-4862-a946-d3881bace3b7} + false + + + + + + \ No newline at end of file diff --git a/examples/ordermatch/example_ordermatch_vs7.vcproj b/examples/ordermatch/example_ordermatch_vs7.vcproj deleted file mode 100644 index 913018e2a..000000000 --- a/examples/ordermatch/example_ordermatch_vs7.vcproj +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/ordermatch/example_ordermatch_vs8.vcproj b/examples/ordermatch/example_ordermatch_vs8.vcproj deleted file mode 100644 index 341f34c4b..000000000 --- a/examples/ordermatch/example_ordermatch_vs8.vcproj +++ /dev/null @@ -1,253 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/ordermatch/example_ordermatch_vs9.vcproj b/examples/ordermatch/example_ordermatch_vs9.vcproj deleted file mode 100644 index cdc36fb46..000000000 --- a/examples/ordermatch/example_ordermatch_vs9.vcproj +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/ordermatch/ordermatch.cpp b/examples/ordermatch/ordermatch.cpp index c1cfe0f58..8ce1269d6 100644 --- a/examples/ordermatch/ordermatch.cpp +++ b/examples/ordermatch/ordermatch.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/test/Market.cpp b/examples/ordermatch/test/Market.cpp index 0aeb8c33e..029450b4e 100755 --- a/examples/ordermatch/test/Market.cpp +++ b/examples/ordermatch/test/Market.cpp @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** @@ -107,7 +107,7 @@ Order& Market::find( Order::Side side, std::string id ) void Market::match( Order& bid, Order& ask ) { double price = ask.getPrice(); - int quantity = 0; + long quantity = 0; if ( bid.getOpenQuantity() > ask.getOpenQuantity() ) quantity = ask.getOpenQuantity(); diff --git a/examples/ordermatch/test/OrderMatcherTestCase.cpp b/examples/ordermatch/test/OrderMatcherTestCase.cpp index 3f35c71a4..6e96b27b4 100644 --- a/examples/ordermatch/test/OrderMatcherTestCase.cpp +++ b/examples/ordermatch/test/OrderMatcherTestCase.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** @@ -39,7 +39,7 @@ TEST( matchFull ) std::queue orders; CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(1, orders.size()); + CHECK_EQUAL(1U, orders.size()); Order matchedOrder1 = orders.front(); orders.pop(); @@ -80,7 +80,7 @@ TEST( matchPartial ) std::queue orders; CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(2, orders.size()); + CHECK_EQUAL(2U, orders.size()); Order matchedOrder1 = orders.front(); orders.pop(); @@ -107,7 +107,7 @@ TEST( matchPartial ) CHECK(object.insert(order3)); CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(2, orders.size()); + CHECK_EQUAL(2U, orders.size()); matchedOrder1 = orders.front(); orders.pop(); @@ -148,12 +148,12 @@ TEST( matchTimePriority ) std::queue orders; CHECK(!object.match("LNUX", orders)); - CHECK_EQUAL(0, orders.size()); + CHECK_EQUAL(0U, orders.size()); CHECK(object.insert(order3)); CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(2, orders.size()); + CHECK_EQUAL(2U, orders.size()); Order matchedOrder3 = orders.front(); orders.pop(); @@ -179,12 +179,12 @@ TEST( matchPricePriority ) std::queue orders; CHECK(!object.match("LNUX", orders)); - CHECK_EQUAL(0, orders.size()); + CHECK_EQUAL(0U, orders.size()); CHECK(object.insert(order3)); CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(2, orders.size()); + CHECK_EQUAL(2U, orders.size()); Order matchedOrder3 = orders.front(); orders.pop(); @@ -211,7 +211,7 @@ TEST( matchMultiple ) std::queue orders; CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(4, orders.size()); + CHECK_EQUAL(4U, orders.size()); Order matchedOrder3_1 = orders.front(); orders.pop(); @@ -274,7 +274,7 @@ TEST( overMatch ) std::queue orders; CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(2, orders.size()); + CHECK_EQUAL(2U, orders.size()); Order matchedOrder1 = orders.front(); orders.pop(); @@ -301,7 +301,7 @@ TEST( overMatch ) CHECK(object.insert(order3)); CHECK(object.match("LNUX", orders)); - CHECK_EQUAL(2, orders.size()); + CHECK_EQUAL(2U, orders.size()); Order matchedOrder3 = orders.front(); orders.pop(); diff --git a/examples/ordermatch/test/OrderMatcherTestCase.h b/examples/ordermatch/test/OrderMatcherTestCase.h index 2dfbeeee1..ceeb6d7e1 100644 --- a/examples/ordermatch/test/OrderMatcherTestCase.h +++ b/examples/ordermatch/test/OrderMatcherTestCase.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/test/TestSuite.h b/examples/ordermatch/test/TestSuite.h index 3a8288b3d..a3ea555e6 100644 --- a/examples/ordermatch/test/TestSuite.h +++ b/examples/ordermatch/test/TestSuite.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/ordermatch/test/ordermatch_ut.cpp b/examples/ordermatch/test/ordermatch_ut.cpp index ecb27bf76..0478d7929 100644 --- a/examples/ordermatch/test/ordermatch_ut.cpp +++ b/examples/ordermatch/test/ordermatch_ut.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclient/Application.cpp b/examples/tradeclient/Application.cpp index 8d6c331cf..978b72bbb 100644 --- a/examples/tradeclient/Application.cpp +++ b/examples/tradeclient/Application.cpp @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** @@ -126,7 +126,7 @@ void q_on_receive( const FIX::Message& message ) const FIX::FieldBase* p = message.getFieldPtrIfSet( 76767 ); if ( p ) { - double d; + double d = 0.0; FIX::DoubleConvertor::parse(p->getString(), d); l = (last_in.tv_sec * 1000000 + last_in.tv_usec) % 1000000000; l = l >= d ? (l - d) : (l + (1000000000 - d)); diff --git a/examples/tradeclient/Application.h b/examples/tradeclient/Application.h index f43f94a03..cb2172d43 100644 --- a/examples/tradeclient/Application.h +++ b/examples/tradeclient/Application.h @@ -1,7 +1,7 @@ /* -*- C++ -*- */ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclient/example_tradeclient_vs10.vcxproj b/examples/tradeclient/example_tradeclient_vs10.vcxproj index 98be0bf57..329e968a6 100644 --- a/examples/tradeclient/example_tradeclient_vs10.vcxproj +++ b/examples/tradeclient/example_tradeclient_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -11,9 +11,9 @@ - example_tradeclient_vs10 + example_tradeclient {760375AB-01FD-4E38-A778-FAA2A27F8C41} - example_tradeclient_vs10 + example_tradeclient diff --git a/examples/tradeclient/example_tradeclient_vs11.vcxproj b/examples/tradeclient/example_tradeclient_vs11.vcxproj index 4de855dcd..2a43268f9 100644 --- a/examples/tradeclient/example_tradeclient_vs11.vcxproj +++ b/examples/tradeclient/example_tradeclient_vs11.vcxproj @@ -19,9 +19,9 @@ - example_tradeclient_vs11 + example_tradeclient {760375AB-01FD-4E38-A778-FAA2A27F8C41} - example_tradeclient_vs11 + example_tradeclient diff --git a/examples/tradeclient/example_tradeclient_vs12.vcxproj b/examples/tradeclient/example_tradeclient_vs12.vcxproj new file mode 100644 index 000000000..e7b556f43 --- /dev/null +++ b/examples/tradeclient/example_tradeclient_vs12.vcxproj @@ -0,0 +1,141 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + example_tradeclient + {760375AB-01FD-4E38-A778-FAA2A27F8C41} + example_tradeclient + + + + Application + false + MultiByte + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)bin\release\tradeclient\ + release\vs12\ + false + $(SolutionDir)bin\debug\tradeclient\ + debug\vs12\ + true + tradeclient + tradeclient + + + + .\Release/tradeclient.tlb + + + OnlyExplicitInline + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + .\Release/tradeclient.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib;%(AdditionalLibraryDirectories) + .\Release/tradeclient.pdb + Console + + + + + .\Debug/tradeclient.tlb + + + Disabled + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + .\Debug/tradeclient.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib\debug;%(AdditionalLibraryDirectories) + true + .\Debug/tradeclient_debug.pdb + Console + + + + + + + + + + + + {d5d558ea-bbac-4862-a946-d3881bace3b7} + false + + + + + + \ No newline at end of file diff --git a/examples/tradeclient/example_tradeclient_vs7.vcproj b/examples/tradeclient/example_tradeclient_vs7.vcproj deleted file mode 100644 index 0847e6cb0..000000000 --- a/examples/tradeclient/example_tradeclient_vs7.vcproj +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/tradeclient/example_tradeclient_vs8.vcproj b/examples/tradeclient/example_tradeclient_vs8.vcproj deleted file mode 100644 index 2020514b4..000000000 --- a/examples/tradeclient/example_tradeclient_vs8.vcproj +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/tradeclient/example_tradeclient_vs9.vcproj b/examples/tradeclient/example_tradeclient_vs9.vcproj deleted file mode 100644 index baa5a3b8d..000000000 --- a/examples/tradeclient/example_tradeclient_vs9.vcproj +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/tradeclient/tradeclient.cpp b/examples/tradeclient/tradeclient.cpp index a43dda1c1..8c290ce0c 100644 --- a/examples/tradeclient/tradeclient.cpp +++ b/examples/tradeclient/tradeclient.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/Banzai.java b/examples/tradeclientgui/banzai/src/Banzai.java index 6cc4587d8..804150c32 100644 --- a/examples/tradeclientgui/banzai/src/Banzai.java +++ b/examples/tradeclientgui/banzai/src/Banzai.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/BanzaiApplication.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/BanzaiApplication.java index e82fc66b1..9d04baec0 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/BanzaiApplication.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/BanzaiApplication.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/DoubleNumberTextField.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/DoubleNumberTextField.java index 3d5998845..911adad00 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/DoubleNumberTextField.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/DoubleNumberTextField.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/Execution.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/Execution.java index 3577bbaf3..51c761a91 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/Execution.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/Execution.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ExecutionTableModel.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ExecutionTableModel.java index 55345f4ec..d5ae95edd 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ExecutionTableModel.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ExecutionTableModel.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/IntegerNumberTextField.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/IntegerNumberTextField.java index 8e08d48ce..7348ab160 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/IntegerNumberTextField.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/IntegerNumberTextField.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/LogonEvent.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/LogonEvent.java index 0474264e4..80b95f162 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/LogonEvent.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/LogonEvent.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/Order.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/Order.java index dd3dbbb97..54c221091 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/Order.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/Order.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderSide.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderSide.java index f2c8fc485..a3fed1f6f 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderSide.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderSide.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTIF.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTIF.java index 32c9c7877..4f16e06ce 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTIF.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTIF.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTableModel.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTableModel.java index 780417078..cfbef78fb 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTableModel.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderTableModel.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderType.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderType.java index 79c1ac8ff..ca4fb92be 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderType.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/OrderType.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/TwoWayMap.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/TwoWayMap.java index db0826b74..907b1c255 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/TwoWayMap.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/TwoWayMap.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiFrame.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiFrame.java index 061da5b17..0411aff80 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiFrame.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiFrame.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiPanel.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiPanel.java index bf3f93ec1..75e25e21b 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiPanel.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/BanzaiPanel.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/CancelReplacePanel.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/CancelReplacePanel.java index 76451583b..28ae8f149 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/CancelReplacePanel.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/CancelReplacePanel.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionPanel.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionPanel.java index bce101cae..d62ef5393 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionPanel.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionPanel.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionTable.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionTable.java index 57400ac51..87fa77c88 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionTable.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/ExecutionTable.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderEntryPanel.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderEntryPanel.java index b7ff90797..81f0a634d 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderEntryPanel.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderEntryPanel.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderPanel.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderPanel.java index 90349ca4f..709fbcd50 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderPanel.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderPanel.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderTable.java b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderTable.java index 92354e8d3..3f8117163 100644 --- a/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderTable.java +++ b/examples/tradeclientgui/banzai/src/quickfix/banzai/ui/OrderTable.java @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/m4/ax_allocator.m4 b/m4/ax_allocator.m4 index edc04caaa..f6a53b0ec 100644 --- a/m4/ax_allocator.m4 +++ b/m4/ax_allocator.m4 @@ -12,6 +12,8 @@ AC_ARG_WITH(allocator, ) ALLOCATOR=$with_allocator +AC_LANG_CPLUSPLUS + # check for debug allocator if test "x$with_allocator" == "xdebug" then diff --git a/m4/ax_lib_postgresql.m4 b/m4/ax_lib_postgresql.m4 index 327158f73..ec1ab6d2d 100644 --- a/m4/ax_lib_postgresql.m4 +++ b/m4/ax_lib_postgresql.m4 @@ -49,7 +49,7 @@ AC_DEFUN([AX_LIB_POSTGRESQL], PG_CONFIG="$withval" fi ], - [want_postgresql="yes"] + [want_postgresql="no"] ) POSTGRESQL_CFLAGS="" diff --git a/m4/ax_python.m4 b/m4/ax_python.m4 index 6e9ad9d63..08f9dac11 100644 --- a/m4/ax_python.m4 +++ b/m4/ax_python.m4 @@ -18,10 +18,10 @@ AC_SUBST(PYTHON_PREFIX) if test $has_python = true then - PYTHON_INCLUDE_PATH=[`$PYTHON -c 'from distutils import sysconfig; print sysconfig.get_python_inc(1)'`] + PYTHON_INCLUDE_PATH=[`$PYTHON -c 'from distutils import sysconfig; print( sysconfig.get_python_inc(1) )'`] PYTHON_CFLAGS="-I${PYTHON_INCLUDE_PATH}" AC_SUBST(PYTHON_CFLAGS) - PYTHON_SITE_PACKAGES=[`$PYTHON -c 'from distutils import sysconfig; print sysconfig.get_python_lib(1)'`] + PYTHON_SITE_PACKAGES=[`$PYTHON -c 'from distutils import sysconfig; print( sysconfig.get_python_lib(1) )'`] AC_SUBST(PYTHON_SITE_PACKAGES) AC_DEFINE(HAVE_PYTHON, 1, Define if you have python) fi diff --git a/quickfix_vs10.sln b/quickfix_vs10.sln index 21b176887..d0055896e 100644 --- a/quickfix_vs10.sln +++ b/quickfix_vs10.sln @@ -1,51 +1,28 @@ Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quickfix_net_messages_vs10", "src\.NET\quickfix_net_messages_vs10.csproj", "{30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example_executor_csharp_vs10", "examples\executor\csharp\example_executor_csharp_vs10.csproj", "{BA234002-9F1A-4B01-98D6-DE05C7E78B58}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "example_executor_vbnet_vs10", "examples\executor\vbnet\example_executor_vbnet_vs10.vbproj", "{DA675460-F6E5-458C-BCEB-45B2986C90FC}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp", "examples\executor\C++\example_executor_cpp_vs10.vcxproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp_vs10", "examples\executor\C++\example_executor_cpp_vs10.vcxproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch", "examples\ordermatch\example_ordermatch_vs10.vcxproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch_vs10", "examples\ordermatch\example_ordermatch_vs10.vcxproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient", "examples\tradeclient\example_tradeclient_vs10.vcxproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient_vs10", "examples\tradeclient\example_tradeclient_vs10.vcxproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix", "src\C++\quickfix_vs10.vcxproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_net_vs10", "src\.NET\quickfix_net_vs10.vcxproj", "{FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance", "src\test_acceptance_vs10.vcxproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_vs10", "src\C++\quickfix_vs10.vcxproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance", "src\test_performance_vs10.vcxproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_vs10", "src\test_acceptance_vs10.vcxproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance_vs10", "src\test_performance_vs10.vcxproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit_vs10", "src\test_unit_vs10.vcxproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner_vs10", "test\atrun\test_acceptance_runner_vs10.vcxproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit", "src\test_unit_vs10.vcxproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" ProjectSection(ProjectDependencies) = postProject {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_performance_net_vs10", "src\test_performance_net_vs10.csproj", "{408B3028-1B7E-4CFA-802B-79C08901E88E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_unit_net_vs10", "src\test_unit_net_vs10.csproj", "{41B1715C-D703-4383-AE28-DC542A38955F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest++_vs10", "UnitTest++\UnitTest++_vs10.vcxproj", "{64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner", "test\atrun\test_acceptance_runner_vs10.vcxproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" + ProjectSection(ProjectDependencies) = postProject + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} + EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_acceptance_net_vs10", "src\test_acceptance_net_vs10.csproj", "{4B063D0D-B606-44EE-A626-B9AB4D32418C}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest++", "UnitTest++\UnitTest++_vs10.vcxproj", "{64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -57,36 +34,6 @@ Global Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Win32.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Win32.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Win32.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Win32.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Win32.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Win32.ActiveCfg = Release|Any CPU {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Any CPU.ActiveCfg = Debug|Win32 {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.Build.0 = Debug|Win32 @@ -117,16 +64,6 @@ Global {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.Build.0 = Release|Win32 {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.ActiveCfg = Release|Win32 {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Any CPU.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.Build.0 = Release|Win32 {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 @@ -177,26 +114,6 @@ Global {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.Build.0 = Release|Win32 {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.ActiveCfg = Release|Win32 {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.Build.0 = Release|Win32 - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Win32.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Win32.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Win32.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Win32.ActiveCfg = Release|Any CPU {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Any CPU.ActiveCfg = Debug|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 @@ -207,16 +124,6 @@ Global {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Mixed Platforms.Build.0 = Release|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.ActiveCfg = Release|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.Build.0 = Release|Win32 - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Win32.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Win32.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/quickfix_vs11.sln b/quickfix_vs11.sln index 15588814b..0b6556f5b 100644 --- a/quickfix_vs11.sln +++ b/quickfix_vs11.sln @@ -1,65 +1,29 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Express 2012 for Windows Desktop -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quickfix_net_messages_vs11", "src\.NET\quickfix_net_messages_vs11.vcxproj", "{30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example_executor_csharp_vs11", "examples\executor\csharp\example_executor_csharp_vs11.vcxproj", "{BA234002-9F1A-4B01-98D6-DE05C7E78B58}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "example_executor_vbnet_vs11", "examples\executor\vbnet\example_executor_vbnet_vs11.vbproj", "{DA675460-F6E5-458C-BCEB-45B2986C90FC}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp_vs11", "examples\executor\C++\example_executor_cpp_vs11.vcxproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch_vs11", "examples\ordermatch\example_ordermatch_vs11.vcxproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp", "examples\executor\C++\example_executor_cpp_vs11.vcxproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient_vs11", "examples\tradeclient\example_tradeclient_vs11.vcxproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch", "examples\ordermatch\example_ordermatch_vs11.vcxproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_net_vs11", "src\.NET\quickfix_net_vs11.vcxproj", "{FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient", "examples\tradeclient\example_tradeclient_vs11.vcxproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_vs11", "src\C++\quickfix_vs11.vcxproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix", "src\C++\quickfix_vs11.vcxproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_vs11", "src\test_acceptance_vs11.vcxproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance", "src\test_acceptance_vs11.vcxproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance_vs11", "src\test_performance_vs11.vcxproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance", "src\test_performance_vs11.vcxproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit_vs11", "src\test_unit_vs11.vcxproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit", "src\test_unit_vs11.vcxproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" ProjectSection(ProjectDependencies) = postProject {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner_vs11", "test\atrun\test_acceptance_runner_vs11.vcxproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner", "test\atrun\test_acceptance_runner_vs11.vcxproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" ProjectSection(ProjectDependencies) = postProject {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_performance_net_vs11", "src\test_performance_net_vs11.vcxproj", "{408B3028-1B7E-4CFA-802B-79C08901E88E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_unit_net_vs11", "src\test_unit_net_vs11.vcxproj", "{41B1715C-D703-4383-AE28-DC542A38955F}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest++_vs11", "UnitTest++\UnitTest++_vs11.vcxproj", "{64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_acceptance_net_vs11", "src\test_acceptance_net_vs11.vcxproj", "{4B063D0D-B606-44EE-A626-B9AB4D32418C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_codec_vs11", "examples\codec\example_codec_vs11.vcxproj", "{D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_latency_vs11", "examples\latency\example_latency_vs11.vcxproj", "{943E98F0-3B44-4046-8B2D-7FAF506FD391}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -76,66 +40,6 @@ Global ReleaseBoost|Win32 = ReleaseBoost|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Win32.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Win32.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Win32.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Win32.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Win32.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Win32.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Any CPU.ActiveCfg = Debug|Win32 {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.Build.0 = Debug|Win32 @@ -191,31 +95,6 @@ Global {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.Build.0 = Release|Win32 {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.ActiveCfg = Release|Win32 {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.Build.0 = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Any CPU.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 @@ -311,51 +190,6 @@ Global {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.Build.0 = Release|Win32 {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.ActiveCfg = Release|Win32 {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.Build.0 = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Win32.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Win32.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Win32.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Win32.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Any CPU.ActiveCfg = Debug|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 @@ -371,71 +205,6 @@ Global {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Mixed Platforms.Build.0 = Release|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.ActiveCfg = Release|Win32 {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.Build.0 = Release|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Win32.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Win32.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Debug|Win32.ActiveCfg = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Debug|Win32.Build.0 = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.DebugBoost|Any CPU.ActiveCfg = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.DebugBoost|Win32.ActiveCfg = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.DebugBoost|Win32.Build.0 = Debug|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Release|Any CPU.ActiveCfg = Release|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Release|Mixed Platforms.Build.0 = Release|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Release|Win32.ActiveCfg = Release|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.Release|Win32.Build.0 = Release|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.ReleaseBoost|Any CPU.ActiveCfg = Release|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.ReleaseBoost|Win32.ActiveCfg = Release|Win32 - {D7DF9A4D-1E2A-4AE6-9DCF-844F9A32C4E8}.ReleaseBoost|Win32.Build.0 = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Debug|Win32.ActiveCfg = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Debug|Win32.Build.0 = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.DebugBoost|Any CPU.ActiveCfg = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.DebugBoost|Win32.ActiveCfg = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.DebugBoost|Win32.Build.0 = Debug|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Release|Any CPU.ActiveCfg = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Release|Mixed Platforms.Build.0 = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Release|Win32.ActiveCfg = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.Release|Win32.Build.0 = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.ReleaseBoost|Any CPU.ActiveCfg = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.ReleaseBoost|Win32.ActiveCfg = Release|Win32 - {943E98F0-3B44-4046-8B2D-7FAF506FD391}.ReleaseBoost|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/quickfix_vs12.sln b/quickfix_vs12.sln new file mode 100644 index 000000000..f081de954 --- /dev/null +++ b/quickfix_vs12.sln @@ -0,0 +1,133 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2013 for Windows Desktop +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp", "examples\executor\C++\example_executor_cpp_vs12.vcxproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch", "examples\ordermatch\example_ordermatch_vs12.vcxproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient", "examples\tradeclient\example_tradeclient_vs12.vcxproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix", "src\C++\quickfix_vs12.vcxproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance", "src\test_acceptance_vs12.vcxproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance", "src\test_performance_vs12.vcxproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit", "src\test_unit_vs12.vcxproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" + ProjectSection(ProjectDependencies) = postProject + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner", "test\atrun\test_acceptance_runner_vs12.vcxproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" + ProjectSection(ProjectDependencies) = postProject + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} = {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest++_vs12", "UnitTest++\UnitTest++_vs12.vcxproj", "{64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Win32.ActiveCfg = Debug|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Win32.Build.0 = Debug|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Any CPU.ActiveCfg = Release|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Mixed Platforms.Build.0 = Release|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Win32.ActiveCfg = Release|Win32 + {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Win32.Build.0 = Release|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Win32.Build.0 = Debug|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Any CPU.ActiveCfg = Release|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Mixed Platforms.Build.0 = Release|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Win32.ActiveCfg = Release|Win32 + {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Win32.Build.0 = Release|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Win32.ActiveCfg = Debug|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Win32.Build.0 = Debug|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Any CPU.ActiveCfg = Release|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.Build.0 = Release|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.ActiveCfg = Release|Win32 + {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.Build.0 = Release|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Win32.ActiveCfg = Debug|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Win32.Build.0 = Debug|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Any CPU.ActiveCfg = Release|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Mixed Platforms.Build.0 = Release|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Win32.ActiveCfg = Release|Win32 + {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Win32.Build.0 = Release|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Win32.ActiveCfg = Debug|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Win32.Build.0 = Debug|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Any CPU.ActiveCfg = Release|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Mixed Platforms.Build.0 = Release|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Win32.ActiveCfg = Release|Win32 + {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Win32.Build.0 = Release|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Win32.ActiveCfg = Debug|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Win32.Build.0 = Debug|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Any CPU.ActiveCfg = Release|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Mixed Platforms.Build.0 = Release|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Win32.ActiveCfg = Release|Win32 + {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Win32.Build.0 = Release|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Win32.ActiveCfg = Debug|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Win32.Build.0 = Debug|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Any CPU.ActiveCfg = Release|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Mixed Platforms.Build.0 = Release|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Win32.ActiveCfg = Release|Win32 + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Win32.Build.0 = Release|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Win32.ActiveCfg = Debug|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Win32.Build.0 = Debug|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Any CPU.ActiveCfg = Release|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.Build.0 = Release|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.ActiveCfg = Release|Win32 + {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.Build.0 = Release|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Win32.ActiveCfg = Debug|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Debug|Win32.Build.0 = Debug|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Any CPU.ActiveCfg = Release|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Mixed Platforms.Build.0 = Release|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.ActiveCfg = Release|Win32 + {64A4FEFE-0461-4E95-8CC1-91EF5F57DBC6}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/quickfix_vs9.sln b/quickfix_vs9.sln deleted file mode 100644 index 842abec5e..000000000 --- a/quickfix_vs9.sln +++ /dev/null @@ -1,458 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "quickfix_net_messages_vs9", "src\.NET\quickfix_net_messages_vs9.csproj", "{30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "example_executor_csharp_vs9", "examples\executor\csharp\example_executor_csharp_vs9.csproj", "{BA234002-9F1A-4B01-98D6-DE05C7E78B58}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "example_executor_vbnet_vs9", "examples\executor\vbnet\example_executor_vbnet_vs9.vbproj", "{DA675460-F6E5-458C-BCEB-45B2986C90FC}" - ProjectSection(ProjectDependencies) = postProject - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} = {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} = {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_executor_cpp_vs9", "examples\executor\C++\example_executor_cpp_vs9.vcproj", "{AC97D259-3231-4575-8CA5-BF9EF79B5A87}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_ordermatch_vs9", "examples\ordermatch\example_ordermatch_vs9.vcproj", "{CBFECC67-2F3D-49F9-8450-BF47FBB766DF}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_tradeclient_vs9", "examples\tradeclient\example_tradeclient_vs9.vcproj", "{760375AB-01FD-4E38-A778-FAA2A27F8C41}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_net_vs9", "src\.NET\quickfix_net_vs9.vcproj", "{FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quickfix_vs9", "src\C++\quickfix_vs9.vcproj", "{D5D558EA-BBAC-4862-A946-D3881BACE3B7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_vs9", "src\test_acceptance_vs9.vcproj", "{63CC102A-A3CD-43CC-9535-A91E67256360}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_performance_vs9", "src\test_performance_vs9.vcproj", "{4E6CE474-47A1-4AC8-8161-9CD214664EBB}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_unit_vs9", "src\test_unit_vs9.vcproj", "{CD58A1FF-0F7A-4490-B9B4-944326C48A5A}" - ProjectSection(ProjectDependencies) = postProject - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} = {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_acceptance_runner_vs9", "test\atrun\test_acceptance_runner_vs9.vcproj", "{A58C8BD5-3602-4886-80A0-CD4FFED42144}" - ProjectSection(ProjectDependencies) = postProject - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} = {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_performance_net_vs9", "src\test_performance_net_vs9.csproj", "{408B3028-1B7E-4CFA-802B-79C08901E88E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest++_vs9", "UnitTest++\UnitTest++_vs9.vcproj", "{7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_unit_net_vs9", "src\test_unit_net_vs9.csproj", "{41B1715C-D703-4383-AE28-DC542A38955F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_acceptance_net_vs9", "src\test_acceptance_net_vs9.csproj", "{4B063D0D-B606-44EE-A626-B9AB4D32418C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_codec_vs9", "examples\codec\example_codec_vs9.vcproj", "{4D448C39-A010-4343-A4E7-48579E653FEC}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_latency_vs9", "examples\latency\example_latency_vs9.vcproj", "{53540904-FCB2-444A-BCE9-49B772BA6126}" - ProjectSection(ProjectDependencies) = postProject - {D5D558EA-BBAC-4862-A946-D3881BACE3B7} = {D5D558EA-BBAC-4862-A946-D3881BACE3B7} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - DebugBoost|Any CPU = DebugBoost|Any CPU - DebugBoost|Mixed Platforms = DebugBoost|Mixed Platforms - DebugBoost|Win32 = DebugBoost|Win32 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - ReleaseBoost|Any CPU = ReleaseBoost|Any CPU - ReleaseBoost|Mixed Platforms = ReleaseBoost|Mixed Platforms - ReleaseBoost|Win32 = ReleaseBoost|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Debug|Win32.ActiveCfg = Debug|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Any CPU.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.Release|Win32.ActiveCfg = Release|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Debug|Win32.ActiveCfg = Debug|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Any CPU.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.Release|Win32.ActiveCfg = Release|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {BA234002-9F1A-4B01-98D6-DE05C7E78B58}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Debug|Win32.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Any CPU.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.DebugBoost|Win32.ActiveCfg = Debug|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Any CPU.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.Release|Win32.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Any CPU.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Mixed Platforms.ActiveCfg = Release|Any CPU - {DA675460-F6E5-458C-BCEB-45B2986C90FC}.ReleaseBoost|Win32.ActiveCfg = Release|Any CPU - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Win32.ActiveCfg = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Debug|Win32.Build.0 = Debug|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Any CPU.ActiveCfg = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Mixed Platforms.Build.0 = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Win32.ActiveCfg = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.Release|Win32.Build.0 = Release|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {AC97D259-3231-4575-8CA5-BF9EF79B5A87}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Win32.ActiveCfg = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Debug|Win32.Build.0 = Debug|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Any CPU.ActiveCfg = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Mixed Platforms.Build.0 = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Win32.ActiveCfg = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.Release|Win32.Build.0 = Release|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {CBFECC67-2F3D-49F9-8450-BF47FBB766DF}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Win32.ActiveCfg = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Debug|Win32.Build.0 = Debug|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Any CPU.ActiveCfg = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Mixed Platforms.Build.0 = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.ActiveCfg = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.Release|Win32.Build.0 = Release|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {760375AB-01FD-4E38-A778-FAA2A27F8C41}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.ActiveCfg = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Debug|Win32.Build.0 = Debug|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Any CPU.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Mixed Platforms.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.ActiveCfg = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.Release|Win32.Build.0 = Release|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Win32.ActiveCfg = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Debug|Win32.Build.0 = Debug|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Any CPU.ActiveCfg = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Mixed Platforms.Build.0 = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Win32.ActiveCfg = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.Release|Win32.Build.0 = Release|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {D5D558EA-BBAC-4862-A946-D3881BACE3B7}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Win32.ActiveCfg = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Debug|Win32.Build.0 = Debug|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Any CPU.ActiveCfg = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Mixed Platforms.Build.0 = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Win32.ActiveCfg = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.Release|Win32.Build.0 = Release|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {63CC102A-A3CD-43CC-9535-A91E67256360}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Win32.ActiveCfg = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Debug|Win32.Build.0 = Debug|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Any CPU.ActiveCfg = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Win32.ActiveCfg = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.Release|Win32.Build.0 = Release|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {4E6CE474-47A1-4AC8-8161-9CD214664EBB}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Win32.ActiveCfg = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Debug|Win32.Build.0 = Debug|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Any CPU.ActiveCfg = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Mixed Platforms.Build.0 = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Win32.ActiveCfg = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.Release|Win32.Build.0 = Release|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {CD58A1FF-0F7A-4490-B9B4-944326C48A5A}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Win32.ActiveCfg = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Debug|Win32.Build.0 = Debug|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Any CPU.ActiveCfg = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Mixed Platforms.Build.0 = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.ActiveCfg = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.Release|Win32.Build.0 = Release|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {A58C8BD5-3602-4886-80A0-CD4FFED42144}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Debug|Win32.ActiveCfg = Debug|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Any CPU.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.Release|Win32.ActiveCfg = Release|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {408B3028-1B7E-4CFA-802B-79C08901E88E}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Debug|Win32.ActiveCfg = Debug|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Debug|Win32.Build.0 = Debug|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Release|Any CPU.ActiveCfg = Release|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Release|Mixed Platforms.Build.0 = Release|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Release|Win32.ActiveCfg = Release|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.Release|Win32.Build.0 = Release|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {7E5DD804-EC63-4FA5-BB6D-53DA86806EF5}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Debug|Win32.ActiveCfg = Debug|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Any CPU.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.Release|Win32.ActiveCfg = Release|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {41B1715C-D703-4383-AE28-DC542A38955F}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Debug|Win32.ActiveCfg = Debug|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Any CPU.Build.0 = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.DebugBoost|Win32.ActiveCfg = DebugBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Any CPU.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.Release|Win32.ActiveCfg = Release|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Any CPU.Build.0 = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Any CPU - {4B063D0D-B606-44EE-A626-B9AB4D32418C}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Any CPU - {4D448C39-A010-4343-A4E7-48579E653FEC}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Debug|Win32.ActiveCfg = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Debug|Win32.Build.0 = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.DebugBoost|Any CPU.ActiveCfg = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.DebugBoost|Win32.ActiveCfg = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.DebugBoost|Win32.Build.0 = Debug|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Release|Any CPU.ActiveCfg = Release|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Release|Mixed Platforms.Build.0 = Release|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Release|Win32.ActiveCfg = Release|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.Release|Win32.Build.0 = Release|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.ReleaseBoost|Any CPU.ActiveCfg = Release|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.ReleaseBoost|Win32.ActiveCfg = Release|Win32 - {4D448C39-A010-4343-A4E7-48579E653FEC}.ReleaseBoost|Win32.Build.0 = Release|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Debug|Win32.ActiveCfg = Debug|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Debug|Win32.Build.0 = Debug|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.DebugBoost|Any CPU.ActiveCfg = DebugBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.DebugBoost|Mixed Platforms.ActiveCfg = DebugBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.DebugBoost|Mixed Platforms.Build.0 = DebugBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.DebugBoost|Win32.ActiveCfg = DebugBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.DebugBoost|Win32.Build.0 = DebugBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Release|Any CPU.ActiveCfg = Release|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Release|Mixed Platforms.Build.0 = Release|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Release|Win32.ActiveCfg = Release|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.Release|Win32.Build.0 = Release|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.ReleaseBoost|Any CPU.ActiveCfg = ReleaseBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.ReleaseBoost|Mixed Platforms.ActiveCfg = ReleaseBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.ReleaseBoost|Mixed Platforms.Build.0 = ReleaseBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.ReleaseBoost|Win32.ActiveCfg = ReleaseBoost|Win32 - {53540904-FCB2-444A-BCE9-49B772BA6126}.ReleaseBoost|Win32.Build.0 = ReleaseBoost|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/scripts/ubuntu_12/build_vanilla.sh b/scripts/ubuntu_12/build_vanilla.sh new file mode 100755 index 000000000..817d46983 --- /dev/null +++ b/scripts/ubuntu_12/build_vanilla.sh @@ -0,0 +1,12 @@ +#!/bin/bash -l + +source $(dirname $0)/env.rc + +set -ex + +echo "vanilla build:" +./bootstrap +./configure +make -j3 +make check + diff --git a/scripts/ubuntu_12/build_with_db.sh b/scripts/ubuntu_12/build_with_db.sh new file mode 100755 index 000000000..cbf7546a2 --- /dev/null +++ b/scripts/ubuntu_12/build_with_db.sh @@ -0,0 +1,12 @@ +#!/bin/bash -l + +source $(dirname $0)/env.rc + +set -ex + +echo "build with db support:" +./bootstrap +./configure --with-mysql --with-postgresql # --with-ruby --with-python +make -j3 +make check + diff --git a/scripts/ubuntu_12/build_with_generate.sh b/scripts/ubuntu_12/build_with_generate.sh new file mode 100755 index 000000000..24085ca83 --- /dev/null +++ b/scripts/ubuntu_12/build_with_generate.sh @@ -0,0 +1,16 @@ +#!/bin/bash -l + +source $(dirname $0)/env.rc + +set -ex + +./bootstrap +./configure + +echo "run code generator:" +make generate + +echo "build with re-generated code:" +make -j3 +make check + diff --git a/scripts/ubuntu_12/env.rc b/scripts/ubuntu_12/env.rc new file mode 100755 index 000000000..643e483d6 --- /dev/null +++ b/scripts/ubuntu_12/env.rc @@ -0,0 +1,18 @@ +#!/bin/bash -l + +set +e + +# avoiding using any customizations in /usr/local on our buildslave +export PATH=/usr/bin:$PATH # prevent use of incompatible stuff in /usr/local on our buildslave + +echo "debug info:" +cat /etc/issue +uname -a +id +rvm list + +# prefer ruby-1.8 because we get 'Unable to send message because connection was dropped' errors with ruby-1.9 +rvm use system || /bin/true +which ruby +ruby --version + diff --git a/scripts/ubuntu_12/install_deps.sh b/scripts/ubuntu_12/install_deps.sh new file mode 100755 index 000000000..1ad38ee36 --- /dev/null +++ b/scripts/ubuntu_12/install_deps.sh @@ -0,0 +1,10 @@ +#!/bin/bash -l + +source $(dirname $0)/env.rc + +set -ex + +echo "installing deps" +sudo apt-get -y install g++ automake libtool libxml2 libxml2-dev xsltproc jruby ruby ruby-dev libmysqlclient-dev libpq-dev mysql-server postgresql +sudo dpkg --list | egrep -i "mysql|pgsql|pq|postgres|ruby|java|xslt" + diff --git a/scripts/ubuntu_12/setup_db.sh b/scripts/ubuntu_12/setup_db.sh new file mode 100755 index 000000000..a2aa057c7 --- /dev/null +++ b/scripts/ubuntu_12/setup_db.sh @@ -0,0 +1,38 @@ +#!/bin/bash -l + +source $(dirname $0)/env.rc + +set -ex + +echo "postgres setup" +psql --version +sudo localedef -i en_US -f UTF-8 en_US.UTF-8 +sudo service postgresql start || /bin/true +sudo service postgresql stop || /bin/true +sudo find /etc/postgresql/ -name "pg_hba.conf" -exec /usr/bin/perl -p -i -e 's/ident/trust/g' {} \; +sudo find /etc/postgresql/ -name "pg_hba.conf" -exec cat {} \; +sudo service postgresql start + +echo "mysql setup" +sudo service mysql start || /bin/true + +echo "set mysql and postgres passwords" +sudo netstat -ltpn +sudo mysqladmin -u root password password || /bin/true +echo "ALTER USER postgres WITH PASSWORD 'password'" | sudo -u postgres -i psql + +echo "create mysql db and tables" +pushd src/sql/mysql + ./create.sh root password +popd + +echo "create postgres db and tables" +pushd src/sql/postgresql + mkdir -p /tmp/quickfix-postgres + cp * /tmp/quickfix-postgres/ + sudo chown -R postgres /tmp/quickfix-postgres/ + pushd /tmp/quickfix-postgres/ + sudo -u postgres ./create.sh postgres + popd +popd + diff --git a/spec/COPYRIGHT.h b/spec/COPYRIGHT.h index 145230b6b..b6bed1a74 100644 --- a/spec/COPYRIGHT.h +++ b/spec/COPYRIGHT.h @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/spec/COPYRIGHT.rb b/spec/COPYRIGHT.rb index b941ccf9e..f1462d7b7 100644 --- a/spec/COPYRIGHT.rb +++ b/spec/COPYRIGHT.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # diff --git a/spec/COPYRIGHT.xml b/spec/COPYRIGHT.xml index 0665792d5..998510aed 100644 --- a/spec/COPYRIGHT.xml +++ b/spec/COPYRIGHT.xml @@ -1,6 +1,6 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/spec/COPYRIGHT.xsl b/spec/COPYRIGHT.xsl index ef05ed9ef..f4105cdc2 100644 --- a/spec/COPYRIGHT.xsl +++ b/spec/COPYRIGHT.xsl @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/src/test_acceptance_net_vs11.vcxproj b/src/test_acceptance_net_vs11.vcxproj deleted file mode 100644 index 53075f5a6..000000000 --- a/src/test_acceptance_net_vs11.vcxproj +++ /dev/null @@ -1,119 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {4B063D0D-B606-44EE-A626-B9AB4D32418C} - Exe - Properties - at_net - at_net - - - 3.5 - - - v4.0 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - ..\test\debug\at\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\test\release\at\ - TRACE - prompt - 4 - - - true - bin\DebugBoost\ - DEBUG;TRACE - full - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - bin\ReleaseBoost\ - TRACE - true - pdbonly - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs11 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs11 - - - - - \ No newline at end of file diff --git a/src/test_acceptance_net_vs7.csproj b/src/test_acceptance_net_vs7.csproj deleted file mode 100644 index 5cab339db..000000000 --- a/src/test_acceptance_net_vs7.csproj +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_acceptance_net_vs8.csproj b/src/test_acceptance_net_vs8.csproj deleted file mode 100644 index 2fbfe23c5..000000000 --- a/src/test_acceptance_net_vs8.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {4B063D0D-B606-44EE-A626-B9AB4D32418C} - Exe - Properties - at_net - at_net - - - true - full - false - ..\test\debug\at\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\test\release\at\ - TRACE - prompt - 4 - - - - - - - - - - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs8 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs8 - - - - - - - - \ No newline at end of file diff --git a/src/test_acceptance_net_vs9.csproj b/src/test_acceptance_net_vs9.csproj deleted file mode 100644 index 1af886c31..000000000 --- a/src/test_acceptance_net_vs9.csproj +++ /dev/null @@ -1,86 +0,0 @@ - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {4B063D0D-B606-44EE-A626-B9AB4D32418C} - Exe - Properties - at_net - at_net - - - 2.0 - - - v3.5 - - - true - full - false - ..\test\debug\at\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\test\release\at\ - TRACE - prompt - 4 - - - true - bin\DebugBoost\ - DEBUG;TRACE - full - AnyCPU - prompt - - - bin\ReleaseBoost\ - TRACE - true - pdbonly - AnyCPU - prompt - - - - - 3.5 - - - - - - - - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs9 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs9 - - - - - - - - \ No newline at end of file diff --git a/src/test_acceptance_vs10.vcxproj b/src/test_acceptance_vs10.vcxproj index e2f694992..ae4ae4df4 100644 --- a/src/test_acceptance_vs10.vcxproj +++ b/src/test_acceptance_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -11,9 +11,9 @@ - test_acceptance_vs10 + test_acceptance {63CC102A-A3CD-43CC-9535-A91E67256360} - test_acceptance_vs10 + test_acceptance diff --git a/src/test_acceptance_vs11.vcxproj b/src/test_acceptance_vs11.vcxproj index af0d892fc..20232eea0 100644 --- a/src/test_acceptance_vs11.vcxproj +++ b/src/test_acceptance_vs11.vcxproj @@ -19,9 +19,9 @@ - test_acceptance_vs11 + test_acceptance {63CC102A-A3CD-43CC-9535-A91E67256360} - test_acceptance_vs11 + test_acceptance diff --git a/src/test_acceptance_vs12.vcxproj b/src/test_acceptance_vs12.vcxproj new file mode 100644 index 000000000..85f446655 --- /dev/null +++ b/src/test_acceptance_vs12.vcxproj @@ -0,0 +1,145 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + test_acceptance + {63CC102A-A3CD-43CC-9535-A91E67256360} + test_acceptance + + + + Application + false + MultiByte + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)test\release\at\ + release\vs12\ + false + $(SolutionDir)test\debug\at\ + debug\vs12\ + false + at + at + + + + .\Release/at.tlb + + + OnlyExplicitInline + $(SolutionDir)/src;$(SolutionDir)/src/c++;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + stdafx.h + .\Release/at.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + /FS %(AdditionalOptions) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)lib;%(AdditionalLibraryDirectories) + .\Release/at.pdb + Console + + + + + .\Debug/at.tlb + + + Disabled + $(SolutionDir)/src;$(SolutionDir)/src/c++;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + stdafx.h + .\Debug/at.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + ProgramDatabase + Default + /FS %(AdditionalOptions) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)lib\debug;%(AdditionalLibraryDirectories) + true + .\Debug/at.pdb + Console + + + + + + + + + + + + + {d5d558ea-bbac-4862-a946-d3881bace3b7} + + + + + + \ No newline at end of file diff --git a/src/test_acceptance_vs7.vcproj b/src/test_acceptance_vs7.vcproj deleted file mode 100644 index cb637bc25..000000000 --- a/src/test_acceptance_vs7.vcproj +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_acceptance_vs8.vcproj b/src/test_acceptance_vs8.vcproj deleted file mode 100644 index 82045d70b..000000000 --- a/src/test_acceptance_vs8.vcproj +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_acceptance_vs9.vcproj b/src/test_acceptance_vs9.vcproj deleted file mode 100644 index ec348ca1c..000000000 --- a/src/test_acceptance_vs9.vcproj +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_net_unit_vs8/Class1.cs b/src/test_net_unit_vs8/Class1.cs deleted file mode 100644 index 0afe88225..000000000 --- a/src/test_net_unit_vs8/Class1.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace test_net_unit_vs8 -{ - public class Class1 - { - } -} diff --git a/src/test_net_unit_vs8/Properties/AssemblyInfo.cs b/src/test_net_unit_vs8/Properties/AssemblyInfo.cs deleted file mode 100644 index 4262c9578..000000000 --- a/src/test_net_unit_vs8/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle( "test_net_unit_vs8" )] -[assembly: AssemblyDescription( "" )] -[assembly: AssemblyConfiguration( "" )] -[assembly: AssemblyCompany( "" )] -[assembly: AssemblyProduct( "test_net_unit_vs8" )] -[assembly: AssemblyCopyright( "Copyright © 2008" )] -[assembly: AssemblyTrademark( "" )] -[assembly: AssemblyCulture( "" )] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible( false )] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid( "9dbc5c9f-d56f-42f7-80cc-32273927d973" )] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: -[assembly: AssemblyVersion( "1.0.0.0" )] -[assembly: AssemblyFileVersion( "1.0.0.0" )] diff --git a/src/test_net_unit_vs8/test_net_unit_vs8.csproj b/src/test_net_unit_vs8/test_net_unit_vs8.csproj deleted file mode 100644 index 6c20a439b..000000000 --- a/src/test_net_unit_vs8/test_net_unit_vs8.csproj +++ /dev/null @@ -1,47 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {D31D9382-EC9A-4CA5-90E4-EE6AFAE0DEBB} - Library - Properties - test_net_unit_vs8 - test_net_unit_vs8 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test_performance_net_vs10.csproj b/src/test_performance_net_vs10.csproj deleted file mode 100644 index 8bbdac8db..000000000 --- a/src/test_performance_net_vs10.csproj +++ /dev/null @@ -1,151 +0,0 @@ - - - - Local - 8.0.50727 - 2.0 - {408B3028-1B7E-4CFA-802B-79C08901E88E} - Debug - AnyCPU - App.ico - - - pt_net - - - JScript - Grid - IE50 - false - Exe - pt_net - OnBuildSuccess - - - - - - - v4.0 - 2.0 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - ..\test\debug\pt\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\test\release\pt\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - - System - - - System.Data - - - System.XML - - - - - - Code - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs10 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs10 - - - - - - - - - - \ No newline at end of file diff --git a/src/test_performance_net_vs11.vcxproj b/src/test_performance_net_vs11.vcxproj deleted file mode 100644 index b9d9519c0..000000000 --- a/src/test_performance_net_vs11.vcxproj +++ /dev/null @@ -1,172 +0,0 @@ - - - - Local - 8.0.50727 - 2.0 - {408B3028-1B7E-4CFA-802B-79C08901E88E} - Debug - AnyCPU - App.ico - - - pt_net - - - JScript - Grid - IE50 - false - Exe - pt_net - OnBuildSuccess - - - - - - - v4.0 - 2.0 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - ..\test\debug\pt\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\test\release\pt\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - true - bin\DebugBoost\ - DEBUG;TRACE - 285212672 - 4096 - full - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - bin\ReleaseBoost\ - TRACE - 285212672 - true - 4096 - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - - System - - - System.Data - - - System.XML - - - - - - Code - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs11 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs11 - - - - - - - - - - \ No newline at end of file diff --git a/src/test_performance_net_vs7.csproj b/src/test_performance_net_vs7.csproj deleted file mode 100644 index c3d36b40d..000000000 --- a/src/test_performance_net_vs7.csproj +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_performance_net_vs8.csproj b/src/test_performance_net_vs8.csproj deleted file mode 100644 index b9e5045df..000000000 --- a/src/test_performance_net_vs8.csproj +++ /dev/null @@ -1,110 +0,0 @@ - - - Local - 8.0.50727 - 2.0 - {408B3028-1B7E-4CFA-802B-79C08901E88E} - Debug - AnyCPU - App.ico - - - pt_net - - - JScript - Grid - IE50 - false - Exe - pt_net - OnBuildSuccess - - - - - - - - - ..\test\debug\pt\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\test\release\pt\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - - System - - - System.Data - - - System.XML - - - quickfix_net_messages_vs8 - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - quickfix_net_vs8 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} - - - - - - Code - - - - - - - - - - - \ No newline at end of file diff --git a/src/test_performance_net_vs9.csproj b/src/test_performance_net_vs9.csproj deleted file mode 100644 index adc3f7fe2..000000000 --- a/src/test_performance_net_vs9.csproj +++ /dev/null @@ -1,136 +0,0 @@ - - - Local - 9.0.30729 - 2.0 - {408B3028-1B7E-4CFA-802B-79C08901E88E} - Debug - AnyCPU - App.ico - - - pt_net - - - JScript - Grid - IE50 - false - Exe - pt_net - OnBuildSuccess - - - - - 0.0 - - - v3.5 - - - ..\test\debug\pt\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - ..\test\release\pt\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - true - bin\DebugBoost\ - DEBUG;TRACE - 285212672 - 4096 - full - AnyCPU - prompt - - - bin\ReleaseBoost\ - TRACE - 285212672 - true - 4096 - AnyCPU - prompt - - - - System - - - 3.5 - - - System.Data - - - System.XML - - - quickfix_net_messages_vs9 - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - quickfix_net_vs9 - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942} - - - - - - Code - - - Code - - - - - - - - - - \ No newline at end of file diff --git a/src/test_performance_vs10.vcxproj b/src/test_performance_vs10.vcxproj index 88e8284d0..b8fb4fcba 100644 --- a/src/test_performance_vs10.vcxproj +++ b/src/test_performance_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -11,9 +11,9 @@ - test_performance_vs10 + test_performance {4E6CE474-47A1-4AC8-8161-9CD214664EBB} - test_performance_vs10 + test_performance diff --git a/src/test_performance_vs11.vcxproj b/src/test_performance_vs11.vcxproj index a5d0f4775..5d1fedeb8 100644 --- a/src/test_performance_vs11.vcxproj +++ b/src/test_performance_vs11.vcxproj @@ -19,9 +19,9 @@ - test_performance_vs11 + test_performance {4E6CE474-47A1-4AC8-8161-9CD214664EBB} - test_performance_vs11 + test_performance diff --git a/src/test_performance_vs12.vcxproj b/src/test_performance_vs12.vcxproj new file mode 100644 index 000000000..2b4e63643 --- /dev/null +++ b/src/test_performance_vs12.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + test_performance + {4E6CE474-47A1-4AC8-8161-9CD214664EBB} + test_performance + + + + Application + false + MultiByte + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)test\debug\pt\ + debug\vs12\ + false + $(SolutionDir)test\release\pt\ + release\vs12\ + false + pt + pt + + + + .\Debug/pt.tlb + + + Disabled + Neither + $(SolutionDir)/src;$(SolutionDir)/src/c++;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + stdafx.h + .\Debug/pt.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + ProgramDatabase + Default + /FS %(AdditionalOptions) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib\debug;%(AdditionalLibraryDirectories) + true + .\Debug/pt.pdb + Console + + + + + .\Release/pt.tlb + + + OnlyExplicitInline + Neither + $(SolutionDir)/src;$(SolutionDir)/src/c++;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + stdafx.h + .\Release/pt.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + /FS %(AdditionalOptions) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib;%(AdditionalLibraryDirectories) + .\Release/pt.pdb + Console + + + + + + + + + + + + {d5d558ea-bbac-4862-a946-d3881bace3b7} + false + + + + + + \ No newline at end of file diff --git a/src/test_performance_vs7.vcproj b/src/test_performance_vs7.vcproj deleted file mode 100644 index 0729c41f1..000000000 --- a/src/test_performance_vs7.vcproj +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_performance_vs8.vcproj b/src/test_performance_vs8.vcproj deleted file mode 100644 index d7e22a43c..000000000 --- a/src/test_performance_vs8.vcproj +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_performance_vs9.vcproj b/src/test_performance_vs9.vcproj deleted file mode 100644 index fcd16b299..000000000 --- a/src/test_performance_vs9.vcproj +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_unit_net_vs10.csproj b/src/test_unit_net_vs10.csproj deleted file mode 100644 index ed946ce85..000000000 --- a/src/test_unit_net_vs10.csproj +++ /dev/null @@ -1,117 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {41B1715C-D703-4383-AE28-DC542A38955F} - Library - Properties - quickfix_test - quickfix_net_test - v4.0 - - - 2.0 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - debug\vs10\test\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - debug\vs10\test\ - TRACE - prompt - 4 - - - - ..\lib\nunit.framework.dll - - - - - - - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs10 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs10 - - - - - - set CONFIGURATION_NAME=$(ConfigurationName) -if "%25CONFIGURATION_NAME%25" == "Release" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib" -if "%25CONFIGURATION_NAME%25" == "Debug" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib\debug" - - \ No newline at end of file diff --git a/src/test_unit_net_vs11.vcxproj b/src/test_unit_net_vs11.vcxproj deleted file mode 100644 index dc963f6f8..000000000 --- a/src/test_unit_net_vs11.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {41B1715C-D703-4383-AE28-DC542A38955F} - Library - Properties - quickfix_test - quickfix_net_test - v4.0 - - - 2.0 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - debug\vs11\test\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - debug\vs11\test\ - TRACE - prompt - 4 - - - true - bin\DebugBoost\ - DEBUG;TRACE - full - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - bin\ReleaseBoost\ - TRACE - true - pdbonly - AnyCPU - prompt - ManagedMinimumRules.ruleset - - - - ..\lib\nunit.framework.dll - - - - - - - - - - - - - - - - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Microsoft Visual Basic PowerPacks 10.0 - true - - - False - Windows Installer 3.1 - true - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs11 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs11 - - - - - - set CONFIGURATION_NAME=$(ConfigurationName) -if "%25CONFIGURATION_NAME%25" == "Release" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib" -if "%25CONFIGURATION_NAME%25" == "Debug" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib\debug" - - \ No newline at end of file diff --git a/src/test_unit_net_vs8.csproj b/src/test_unit_net_vs8.csproj deleted file mode 100644 index 2d56bb157..000000000 --- a/src/test_unit_net_vs8.csproj +++ /dev/null @@ -1,74 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {41B1715C-D703-4383-AE28-DC542A38955F} - Library - Properties - quickfix_test - quickfix_net_test - - - true - full - false - debug\vs8\test\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - debug\vs8\test\ - TRACE - prompt - 4 - - - - False - ..\lib\nunit.framework.dll - - - - - - - - - - - - - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs8 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs8 - - - - - - - - - set CONFIGURATION_NAME=$(ConfigurationName) -if "%25CONFIGURATION_NAME%25" == "Release" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib" -if "%25CONFIGURATION_NAME%25" == "Debug" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib\debug" - - \ No newline at end of file diff --git a/src/test_unit_net_vs9.csproj b/src/test_unit_net_vs9.csproj deleted file mode 100644 index e82f7f027..000000000 --- a/src/test_unit_net_vs9.csproj +++ /dev/null @@ -1,133 +0,0 @@ - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {41B1715C-D703-4383-AE28-DC542A38955F} - Library - Properties - quickfix_test - quickfix_net_test - - - 2.0 - - - v3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - debug\vs9\test\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - debug\vs9\test\ - TRACE - prompt - 4 - - - true - bin\DebugBoost\ - DEBUG;TRACE - full - AnyCPU - prompt - - - bin\ReleaseBoost\ - TRACE - true - pdbonly - AnyCPU - prompt - - - - False - ..\lib\nunit.framework.dll - - - - 3.5 - - - - - - - - - - - - - - - - {30A02EEB-AF70-4B20-8B97-0AFF2485EFB9} - quickfix_net_messages_vs9 - - - {FCE44FC5-2E80-4F7B-A11F-2974C0FAFC8C} - quickfix_net_vs9 - - - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - - - - - - - set CONFIGURATION_NAME=$(ConfigurationName) -if "%25CONFIGURATION_NAME%25" == "Release" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib" -if "%25CONFIGURATION_NAME%25" == "Debug" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib\debug" -if "%25CONFIGURATION_NAME%25" == "ReleaseBoost" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib\release.boost" -if "%25CONFIGURATION_NAME%25" == "DebugBoost" xcopy "$(TargetPath)" /Y "$(SolutionDir)lib\debug.boost" - - \ No newline at end of file diff --git a/src/test_unit_vs10.vcxproj b/src/test_unit_vs10.vcxproj index e7c8044a8..d83c506ba 100644 --- a/src/test_unit_vs10.vcxproj +++ b/src/test_unit_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -11,7 +11,7 @@ - test_unit_vs10 + test_unit {CD58A1FF-0F7A-4490-B9B4-944326C48A5A} ut_vc10 diff --git a/src/test_unit_vs11.vcxproj b/src/test_unit_vs11.vcxproj index 19f43d8e1..5403a5c46 100644 --- a/src/test_unit_vs11.vcxproj +++ b/src/test_unit_vs11.vcxproj @@ -19,9 +19,9 @@ - test_unit_vs11 + test_unit {CD58A1FF-0F7A-4490-B9B4-944326C48A5A} - ut_vc10 + ut diff --git a/src/test_unit_vs12.vcxproj b/src/test_unit_vs12.vcxproj new file mode 100644 index 000000000..81759d077 --- /dev/null +++ b/src/test_unit_vs12.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + test_unit + {CD58A1FF-0F7A-4490-B9B4-944326C48A5A} + ut_vc12 + + + + Application + false + MultiByte + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)test\release\ut\ + release\vs12\ + false + $(SolutionDir)test\debug\ut\ + debug\vs12\ + false + ut + ut + + + + .\Release/ut.tlb + + + " /I /src/socket" " /I /src/socket" " /I /src/socket" " /I /src/socket" /FS %(AdditionalOptions) + OnlyExplicitInline + $(SolutionDir);$(SolutionDir)\src\C++;$(SolutionDir)\src\C++\test;$(SolutionDir)\UnitTest++\src;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + + + stdafx.h + .\Release/ut.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;UnitTest++_vs12.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)\lib;%(AdditionalLibraryDirectories) + .\Release/ut.pdb + Console + + + + + .\Debug/ut.tlb + + + " /I /src/socket" " /I /src/socket" " /I /src/socket" " /I /src/socket" /FS %(AdditionalOptions) + Disabled + $(SolutionDir);$(SolutionDir)\src\C++;$(SolutionDIr)\src\C++\test;$(SolutionDir)\UnitTest++\src;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + + + stdafx.h + .\Debug/ut.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + ProgramDatabase + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + quickfix.lib;UnitTest++_vs12.lib;ws2_32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)lib\debug;%(AdditionalLibraryDirectories) + true + .\Debug/ut.pdb + Console + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {d5d558ea-bbac-4862-a946-d3881bace3b7} + false + + + + + + \ No newline at end of file diff --git a/src/test_unit_vs7.vcproj b/src/test_unit_vs7.vcproj deleted file mode 100644 index f4c7541b5..000000000 --- a/src/test_unit_vs7.vcproj +++ /dev/null @@ -1,357 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_unit_vs8.vcproj b/src/test_unit_vs8.vcproj deleted file mode 100644 index 40361d0d1..000000000 --- a/src/test_unit_vs8.vcproj +++ /dev/null @@ -1,371 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test_unit_vs9.vcproj b/src/test_unit_vs9.vcproj deleted file mode 100644 index 5b60e3d68..000000000 --- a/src/test_unit_vs9.vcproj +++ /dev/null @@ -1,674 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/ut.cpp b/src/ut.cpp index c794015e7..42de6ec58 100644 --- a/src/ut.cpp +++ b/src/ut.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/test/Comparator.rb b/test/Comparator.rb index c9710900f..4887a0ed5 100644 --- a/test/Comparator.rb +++ b/test/Comparator.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # diff --git a/test/ComparatorTestCase.rb b/test/ComparatorTestCase.rb index d60ba24b7..6990adafa 100644 --- a/test/ComparatorTestCase.rb +++ b/test/ComparatorTestCase.rb @@ -1,4 +1,4 @@ -require 'Comparator' +require './Comparator' require 'runit/testcase' class ComparatorTestCase < RUNIT::TestCase diff --git a/test/FixParser.rb b/test/FixParser.rb index c9e828b7c..0b904616e 100644 --- a/test/FixParser.rb +++ b/test/FixParser.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # diff --git a/test/FixParserTestCase.rb b/test/FixParserTestCase.rb index 84b15a8be..5dc49fecc 100644 --- a/test/FixParserTestCase.rb +++ b/test/FixParserTestCase.rb @@ -1,7 +1,7 @@ -require 'FixParser' +require './FixParser' require 'runit/testcase' require "thread" -require 'SocketServer' +require './SocketServer' class FixParserTestCase < RUNIT::TestCase diff --git a/test/Reflector.rb b/test/Reflector.rb index 0c85fb040..8a1e1881b 100644 --- a/test/Reflector.rb +++ b/test/Reflector.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # diff --git a/test/ReflectorClient.rb b/test/ReflectorClient.rb index 8a054bf65..5f39fdf2f 100644 --- a/test/ReflectorClient.rb +++ b/test/ReflectorClient.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # @@ -16,8 +16,8 @@ # not clear to you. #**************************************************************************** -require 'Reflector' -require 'FixParser' +require './Reflector' +require './FixParser' require "socket" class ReflectorClient diff --git a/test/ReflectorClientTestCase.rb b/test/ReflectorClientTestCase.rb index 7170ad233..e8ff87023 100644 --- a/test/ReflectorClientTestCase.rb +++ b/test/ReflectorClientTestCase.rb @@ -1,6 +1,6 @@ -require 'ReflectorClient' +require './ReflectorClient' require 'runit/testcase' -require 'ReflectorServer' +require './ReflectorServer' require "thread" class ReflectorClientTestCase < RUNIT::TestCase diff --git a/test/ReflectorServer.rb b/test/ReflectorServer.rb index 490386859..d13982792 100644 --- a/test/ReflectorServer.rb +++ b/test/ReflectorServer.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # @@ -16,8 +16,8 @@ # not clear to you. #**************************************************************************** -require 'SocketServer' -require 'Reflector' +require './SocketServer' +require './Reflector' class ReflectorServer < SocketServer diff --git a/test/ReflectorServerTestCase.rb b/test/ReflectorServerTestCase.rb index 7e7762c61..458270826 100644 --- a/test/ReflectorServerTestCase.rb +++ b/test/ReflectorServerTestCase.rb @@ -1,4 +1,4 @@ -require 'ReflectorServer' +require './ReflectorServer' require 'runit/testcase' require "thread" diff --git a/test/ReflectorTestCase.rb b/test/ReflectorTestCase.rb index e3c533874..0dcc91b96 100644 --- a/test/ReflectorTestCase.rb +++ b/test/ReflectorTestCase.rb @@ -1,4 +1,4 @@ -require 'Reflector' +require './Reflector' class MockReflector < Reflector def getTime diff --git a/test/Runner.rb b/test/Runner.rb index 5727729b1..e89292380 100644 --- a/test/Runner.rb +++ b/test/Runner.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # @@ -16,8 +16,8 @@ # not clear to you. #**************************************************************************** -require 'ReflectorClient' -require 'Comparator' +require './ReflectorClient' +require './Comparator' def extendProcess(c) diff --git a/test/RunnerTestCase.rb b/test/RunnerTestCase.rb index 16a40b0ce..f13eb8612 100644 --- a/test/RunnerTestCase.rb +++ b/test/RunnerTestCase.rb @@ -1,4 +1,4 @@ -require 'Runner' +require './Runner' require 'runit/testcase' class RunnerTestCase < RUNIT::TestCase diff --git a/test/SocketServer.rb b/test/SocketServer.rb index 35489c6e7..5bcb4ff29 100644 --- a/test/SocketServer.rb +++ b/test/SocketServer.rb @@ -1,5 +1,5 @@ #**************************************************************************** -# Copyright (c) quickfixengine.org All rights reserved. +# Copyright (c) 2001-2014 # # This file is part of the QuickFIX FIX Engine # diff --git a/test/SocketServerTestCase.rb b/test/SocketServerTestCase.rb index 49d79eb3d..72a1dd331 100644 --- a/test/SocketServerTestCase.rb +++ b/test/SocketServerTestCase.rb @@ -1,4 +1,4 @@ -require 'SocketServer' +require './SocketServer' require 'runit/testcase' require "thread" diff --git a/test/atrun/test/ProcessTestCase.cpp b/test/atrun/test/ProcessTestCase.cpp index d125deb2f..0f790f5ae 100644 --- a/test/atrun/test/ProcessTestCase.cpp +++ b/test/atrun/test/ProcessTestCase.cpp @@ -1,5 +1,5 @@ /**************************************************************************** -** Copyright (c) quickfixengine.org All rights reserved. +** Copyright (c) 2001-2014 ** ** This file is part of the QuickFIX FIX Engine ** diff --git a/test/atrun/test_acceptance_runner_vs10.vcxproj b/test/atrun/test_acceptance_runner_vs10.vcxproj index e6641f005..7cca8bef9 100644 --- a/test/atrun/test_acceptance_runner_vs10.vcxproj +++ b/test/atrun/test_acceptance_runner_vs10.vcxproj @@ -1,4 +1,4 @@ - + @@ -11,9 +11,9 @@ - test_acceptance_runner_vs10 + test_acceptance_runner {A58C8BD5-3602-4886-80A0-CD4FFED42144} - atrun_vs10 + atrun diff --git a/test/atrun/test_acceptance_runner_vs11.vcxproj b/test/atrun/test_acceptance_runner_vs11.vcxproj index ceb97d646..76be0a5be 100644 --- a/test/atrun/test_acceptance_runner_vs11.vcxproj +++ b/test/atrun/test_acceptance_runner_vs11.vcxproj @@ -19,9 +19,9 @@ - test_acceptance_runner_vs11 + test_acceptance_runner {A58C8BD5-3602-4886-80A0-CD4FFED42144} - atrun_vs11 + atrun diff --git a/test/atrun/test_acceptance_runner_vs12.vcxproj b/test/atrun/test_acceptance_runner_vs12.vcxproj new file mode 100644 index 000000000..d01b5976a --- /dev/null +++ b/test/atrun/test_acceptance_runner_vs12.vcxproj @@ -0,0 +1,141 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + test_acceptance_runner + {A58C8BD5-3602-4886-80A0-CD4FFED42144} + atrun + + + + Application + false + MultiByte + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)test\debug\at\ + debug\vs12\ + false + $(SolutionDir)test\release\at\ + release\vs12\ + false + atrun + atrun + + + + .\Debug/atrun.tlb + + + Disabled + ..\..;..\..\..;$(SolutionDir)\UnitTest++\src;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + + + .\Debug/atrun.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + odbc32.lib;odbccp32.lib;UnitTest++_vs12.lib;%(AdditionalDependencies) + $(OutDir)$(TargetFileName) + true + $(SolutionDir)lib\debug;%(AdditionalLibraryDirectories) + true + .\Debug/atrun.pdb + Console + + + + + .\Release/atrun.tlb + + + OnlyExplicitInline + ..\..;..\..\..;$(SolutionDir)\UnitTest++\src;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + + + .\Release/atrun.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + odbc32.lib;odbccp32.lib;UnitTest++_vs12.lib;%(AdditionalDependencies) + $(OutDir)atrun.exe + true + $(SolutionDir)lib;%(AdditionalLibraryDirectories) + .\Release/atrun.pdb + Console + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/check.sh b/test/check.sh index e0c52e9c9..28a0a258e 100755 --- a/test/check.sh +++ b/test/check.sh @@ -1,7 +1,7 @@ #!/bin/sh sleep 1 -QUICKFIX_TEST_PORT=5001 +QUICKFIX_TEST_PORT=11111 ./runut.sh $QUICKFIX_TEST_PORT RESULT=$? diff --git a/test/definitions/server/fix40/AlreadyLoggedOn.def b/test/definitions/server/fix40/AlreadyLoggedOn.def index 95e23e22c..fc068b4a3 100644 --- a/test/definitions/server/fix40/AlreadyLoggedOn.def +++ b/test/definitions/server/fix40/AlreadyLoggedOn.def @@ -9,6 +9,6 @@ I2,8=FIX.4.035=A34=149=TW52=