#ifndef INCLUDE_CCAPI_CPP_BTS_SESSION_OPTIONS_H_ #define INCLUDE_CCAPI_CPP_BTS_SESSION_OPTIONS_H_ #include namespace ccapi { enum class BtsVenues { NONE = 0, BINANCE = 1, BINANCE_COIN_FUTURES = 1 << 1, BINANCE_US = 1 << 2, BINANCE_USDS_FUTURES = 1 << 3, COINBASE = 1 << 4, DERIBIT = 1 << 5, FTX = 1 << 6, OKX = 1 << 7, }; constexpr BtsVenues operator&(BtsVenues lhs, BtsVenues rhs) { using IntT = std::underlying_type::type; return static_cast( static_cast(lhs) & static_cast(rhs)); } class BtsSessionOptions { public: BtsVenues venues = BtsVenues::NONE; #define BTS_VENUE_ENABLED(v) (venues & BtsVenues::v) == BtsVenues::v constexpr bool enableBinance() { return BTS_VENUE_ENABLED(BINANCE); } constexpr bool enableBinanceCoinFutures() { return BTS_VENUE_ENABLED(BINANCE_COIN_FUTURES); } constexpr bool enableBinanceUs() { return BTS_VENUE_ENABLED(BINANCE_US); } constexpr bool enableBinanceUsdsFutures() { return BTS_VENUE_ENABLED(BINANCE_USDS_FUTURES); } constexpr bool enableCoinbase() { return BTS_VENUE_ENABLED(COINBASE); } constexpr bool enableDeribit() { return BTS_VENUE_ENABLED(DERIBIT); } constexpr bool enableFtx() { return BTS_VENUE_ENABLED(FTX); } constexpr bool enableOkx() { return BTS_VENUE_ENABLED(OKX); } #undef BTS_VENUE_ENABLED }; } // namespace ccapi #endif