FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
strong_id.hpp File Reference

Strongly typed identifiers. More...

#include "fastmm/core/config_macros.hpp"
#include "fastmm/core/fixed_string.hpp"
#include "fastmm/core/hex.hpp"
#include <compare>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <functional>
#include <limits>
#include <optional>
#include <string_view>
#include <type_traits>

Go to the source code of this file.

Classes

struct  fastmm::StrongId< Tag, Rep, kInvalid >
 
struct  fastmm::Handle< T >
 
struct  std::hash< fastmm::StrongId< Tag, Rep, I > >
 

Namespaces

namespace  fastmm
 

Typedefs

using fastmm::InstrumentId = StrongId< struct InstrumentTag, std::uint32_t >
 Dense index into the engine's instrument table.
 
using fastmm::VenueId = StrongId< struct VenueTag, std::uint8_t >
 
using fastmm::ClientOrderId = StrongId< struct ClientOrderTag, std::uint64_t, 0 >
 48-bit: session_epoch(16) << 32 | seq(32). 0 is never issued.
 
using fastmm::VenueOrderId = FixedString< 40 >
 
using fastmm::TimerId = StrongId< struct TimerTag, std::uint32_t >
 
using fastmm::ExecId = FixedString< 40 >
 

Functions

FASTMM_FORCE_INLINE void fastmm::write_cl_ord_id (char *dst, ClientOrderId id) noexcept
 Writes the kClOrdIdChars characters of the wire form to dst (no terminator) with two 8-byte stores.
 
FixedString< 16 > fastmm::encode_cl_ord_id (ClientOrderId id) noexcept
 
std::optional< ClientOrderId > fastmm::decode_cl_ord_id (std::string_view s) noexcept
 
constexpr ClientOrderId fastmm::make_cl_ord_id (std::uint16_t epoch, std::uint32_t seq) noexcept
 
constexpr std::uint16_t fastmm::cl_ord_id_epoch (ClientOrderId id) noexcept
 
constexpr std::uint32_t fastmm::cl_ord_id_seq (ClientOrderId id) noexcept
 

Variables

constexpr std::uint32_t fastmm::kNullHandle = std::numeric_limits<std::uint32_t>::max()
 32-bit pool index handle.
 
constexpr std::size_t fastmm::kClOrdIdChars = 14
 "fm" + 12 lowercase hex digits (48 bits) = 14 chars. Fits Binance (36) and Bybit (36).
 

Detailed Description

Strongly typed identifiers.

Mixing an InstrumentId with a VenueId is a compile error.