#include <sx.utils/utils.hpp>
const asset quantity = asset{10000, symbol{"EOS", 4}};
const double amount = sx::utils::asset_to_double( quantity );
// => 1.0
- STATIC
double_to_asset
- STATIC
asset_to_double
- STATIC
sort_tokens
- STATIC
parse_name
- STATIC
parse_symbol_code
- STATIC
parse_symbol
- STATIC
parse_asset
- STATIC
parse_extended_symbol
- STATIC
parse_extended_asset
- STATIC
get_balance
- STATIC
get_supply
Convert double to asset
{double} amount
- amount{symbol} symbol
- symbol
{asset}
- token
const double amount = 1.0;
const symbol sym = symbol{"EOS", 4};
const asset token = sx::utils::double_to_asset( amount, sym );
// => "1.0000 EOS"
Convert asset to double
{asset} quantity
- quantity
{double}
- amount
const asset quantity = asset{10000, symbol{"EOS", 4}};
const double amount = sx::utils::asset_to_double( quantity );
// => 1.0
Returns sorted token assets, used to handle return values from pairs sorted in this order
{asset} a
- token A{asset} b
- token B
{pair<asset, asset>}
- sorted tokens
// Inputs
const asset a = asset{10000, symbol{"USDT", 4}};
const asset b = asset{10000, symbol{"EOS", 4}};
// Sort
const auto[ token0, token1 ] = sx::utils::sort_tokens( a, b );
// token0 => "1.0000 EOS"
// token1 => "1.0000 USDT"
Split string into tokens
{string} str
- string to split{string} delim
- delimiter (ex: ",")
{vector<string>}
- tokenized strings
const auto[ token0, token1 ] = sx::utils::split( "foo,bar", "," );
// token0 => "foo"
// token1 => "bar"
Parse string for account name without failing
{string} str
- string to parse
{name}
- converted name,name{}
if invalid
const auto contract = sx::utils::parse_name( "test.sx" );
eosio::check(contract.is_valid(), "Invalid contract name");
// => "test_sx"_n
Parse string for symbol code without failing
{string} str
- string to parse
{symbol_code}
- converted symbol code,symbol_code{}
if invalid
const auto symcode = sx::utils::parse_symbol_code( "SXEOS" );
eosio::check(symcode.is_valid(), "Invalid symbol code");
Parse string for symbol without failing
{string} str
- string to parse
{symbol}
- converted symbol,symbol{}
if invalid
const auto sym = sx::utils::parse_symbol( "4,SXEOS" );
eosio::check(sym.is_valid(), "Invalid symbol");
Parse string for asset without failing
{string} str
- string to parse
{asset}
- converted asset,asset{}
if invalid
const auto quantity = sx::utils::parse_asset( "20.0000 SXEOS" );
eosio::check(quantity.symbol.is_valid(), "Invalid asset");
Parse string for extended_symbol without failing
{string} str
- string to parse
{extended_symbol}
- converted extended symbol,extended_symbol{}
if invalid
const auto ext_sym = sx::utils::parse_extended_symbol( "4,SXEOS@token.sx" );
eosio::check(ext_sym.get_symbol().is_valid(), "Invalid extended symbol");
Parse string for extended_asset without failing
{string} str
- string to parse
{extended_asset}
- converted extended asset,extended_asset{}
if invalid
const auto ext_quantity = sx::utils::parse_extended_asset( "20.0000 SXEOS@token.sx" );
eosio::check(ext_quantity.quantity.is_valid(), "Invalid extended asset");
Parse string for extended_asset without failing
{string} str
- string to parse
{extended_asset}
- converted extended asset,extended_asset{}
if invalid
const auto ext_quantity = sx::utils::parse_extended_asset( "20.0000 SXEOS@token.sx" );
eosio::check(ext_quantity.quantity.is_valid(), "Invalid extended asset");
Get account balance without failing to avoid assert errors for accounts with unopened balance
eosio.token::get_balance
alternative
{extended_symbol} ext_sym
- extended symbol to query{name} owner
- account to query balance for
{extended_asset}
- account balance,extended_asset{}
if no opened account
const extended_symbol ext_sym { symbol{"USDT", 4}, "tethertether"_n };
const auto balance = sx::utils::get_balance(ext_sym).quantity;
eosio::check(balance.is_valid(), "Balance not opened");
Get token supply without failing to avoid assert errors for non-existing tokens
eosio.token::get_supply
alternative
{extended_symbol} ext_sym
- extended symbol to query
{asset}
- token supply,asset{}
if token doesn't exist
const extended_symbol ext_sym { symbol{"USDT", 4}, "tethertether"_n };
const auto supply = sx::utils::get_supply(ext_sym);
eosio::check(balance.is_valid(), "Token doesn't exist on this contract");