#include <boost/date_time/posix_time/posix_time.hpp>
#include <iostream>
#include <fstream>
#include <ctime>
#include <sstream>
#include <string>
#include <map>
#include <list>
#include <unordered_map>
#include <csignal>
#include <unistd.h>
#include <mutex>
#include <algorithm>
#include <atomic>
#include <thread>
//#define DISABLE_NCURSES
//Uncomment the one you want to use. Only one must be uncommented
//#define ENABLE_MUTEX
//#define ENABLE_ATOMIC_LOADSTORE
#define ENABLE_ATOMIC_WAITFREE
#if defined ENABLE_MUTEX || defined ENABLE_ATOMIC_WAITFREE
//#define MAP_BASED_ORDERBOOK
//#define ITERATOR_BASED_ORDERBOOK
#endif
//#define ASSERT_ON_TOP_OF_BOOK_CROSSING
#if defined(__arm__)
#define CACHE_LINE_SYS_SIZE 64
#elif defined(__aarch64__)
#define CACHE_LINE_SYS_SIZE 64
#elif defined(__x86_64__)
#define CACHE_LINE_SYS_SIZE 64
#else
#define CACHE_LINE_SYS_SIZE 32
#endif