Skip to content

Instantly share code, notes, and snippets.

@niXman
Created September 2, 2022 11:15
Show Gist options
  • Save niXman/1e3ce68d59206041a029e2f9d71f9b98 to your computer and use it in GitHub Desktop.
Save niXman/1e3ce68d59206041a029e2f9d71f9b98 to your computer and use it in GitHub Desktop.
binance permissions
#include <iostream>
#include <array>
#include <cstdint>
enum e_permissions: std::size_t {
NONE = 0
,SPOT = 1u << 0
,MARGIN = 1u << 1
,LEVERAGED = 1u << 2
,TRD_GRP_002 = 1u << 3
,TRD_GRP_003 = 1u << 4
,TRD_GRP_004 = 1u << 5
,TRD_GRP_005 = 1u << 6
};
constexpr auto enum_vals = std::array<std::pair<std::size_t, const char *>, 7>{{
{SPOT, "SPOT"}
,{MARGIN, "MARGIN"}
,{LEVERAGED, "LEVERAGED"}
,{TRD_GRP_002, "TRD_GRP_002"}
,{TRD_GRP_003, "TRD_GRP_003"}
,{TRD_GRP_004, "TRD_GRP_004"}
,{TRD_GRP_005, "TRD_GRP_005"}
}};
void binary(unsigned int num) {
for(int i = 256; i > 0; i = i/2) {
if(num & i)
std::cout << "1 ";
else
std::cout << "0 ";
}
std::cout << std::endl;
}
int main() {
std::cout << "NONE : " << static_cast<unsigned>(NONE) << " : "; binary(NONE);
std::cout << "SPOT : " << static_cast<unsigned>(SPOT) << " : "; binary(SPOT);
std::cout << "MARGIN : " << static_cast<unsigned>(MARGIN) << " : "; binary(MARGIN);
std::cout << "LEVERAGED : " << static_cast<unsigned>(LEVERAGED) << " : "; binary(LEVERAGED);
std::cout << "TRD_GRP_002: " << static_cast<unsigned>(TRD_GRP_002) << " : "; binary(TRD_GRP_002);
std::cout << "TRD_GRP_003: " << static_cast<unsigned>(TRD_GRP_003) << ", "; binary(TRD_GRP_003);
std::cout << "TRD_GRP_004: " << static_cast<unsigned>(TRD_GRP_004) << ", "; binary(TRD_GRP_004);
std::cout << "TRD_GRP_005: " << static_cast<unsigned>(TRD_GRP_005) << ", "; binary(TRD_GRP_005);
{
auto v = SPOT | MARGIN | LEVERAGED | TRD_GRP_002 | TRD_GRP_003 | TRD_GRP_004 | TRD_GRP_005;
for (const auto &it: enum_vals) {
if ( v & it.first ) {
std::cout << it.second << ' ';
}
}
std::cout << std::endl;
}
{
auto v = SPOT|MARGIN|TRD_GRP_004;
for (const auto &it: enum_vals) {
if ( v & it.first ) {
std::cout << it.second << ' ';
}
}
std::cout << std::endl;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment