Bitcoin Core 28.99.0
P2P Digital Currency
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
miniscript::Type Class Reference

This type encapsulates the miniscript type system properties. More...

#include <miniscript.h>

Public Member Functions

constexpr Type operator| (Type x) const
 Compute the type with the union of properties. More...
 
constexpr Type operator& (Type x) const
 Compute the type with the intersection of properties. More...
 
constexpr bool operator<< (Type x) const
 Check whether the left hand's properties are superset of the right's (= left is a subtype of right). More...
 
constexpr bool operator< (Type x) const
 Comparison operator to enable use in sets/maps (total ordering incompatible with <<). More...
 
constexpr bool operator== (Type x) const
 Equality operator. More...
 
constexpr Type If (bool x) const
 The empty type if x is false, itself otherwise. More...
 

Static Public Member Functions

static consteval Type Make (uint32_t flags) noexcept
 Construction function used by the ""_mst operator. More...
 

Private Member Functions

constexpr Type (uint32_t flags) noexcept
 Internal constructor. More...
 

Private Attributes

uint32_t m_flags
 Internal bitmap of properties (see ""_mst operator for details). More...
 

Detailed Description

This type encapsulates the miniscript type system properties.

Every miniscript expression is one of 4 basic types, and additionally has a number of boolean type properties.

The basic types are:

There are type properties that help reasoning about correctness:

Additional type properties help reasoning about nonmalleability:

One type property is an implementation detail:

Five more type properties for representing timelock information. Spend paths in miniscripts containing conflicting timelocks and heightlocks cannot be spent together. This helps users detect if miniscript does not match the semantic behaviour the user expects.

Definition at line 126 of file miniscript.h.

Constructor & Destructor Documentation

◆ Type()

constexpr miniscript::Type::Type ( uint32_t  flags)
inlineexplicitconstexprprivatenoexcept

Internal constructor.

Definition at line 131 of file miniscript.h.

Here is the caller graph for this function:

Member Function Documentation

◆ If()

constexpr Type miniscript::Type::If ( bool  x) const
inlineconstexpr

The empty type if x is false, itself otherwise.

Definition at line 153 of file miniscript.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Make()

static consteval Type miniscript::Type::Make ( uint32_t  flags)
inlinestaticnoexcept

Construction function used by the ""_mst operator.

Definition at line 135 of file miniscript.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator&()

constexpr Type miniscript::Type::operator& ( Type  x) const
inlineconstexpr

Compute the type with the intersection of properties.

Definition at line 141 of file miniscript.h.

Here is the call graph for this function:

◆ operator<()

constexpr bool miniscript::Type::operator< ( Type  x) const
inlineconstexpr

Comparison operator to enable use in sets/maps (total ordering incompatible with <<).

Definition at line 147 of file miniscript.h.

◆ operator<<()

constexpr bool miniscript::Type::operator<< ( Type  x) const
inlineconstexpr

Check whether the left hand's properties are superset of the right's (= left is a subtype of right).

Definition at line 144 of file miniscript.h.

◆ operator==()

constexpr bool miniscript::Type::operator== ( Type  x) const
inlineconstexpr

Equality operator.

Definition at line 150 of file miniscript.h.

◆ operator|()

constexpr Type miniscript::Type::operator| ( Type  x) const
inlineconstexpr

Compute the type with the union of properties.

Definition at line 138 of file miniscript.h.

Here is the call graph for this function:

Member Data Documentation

◆ m_flags

uint32_t miniscript::Type::m_flags
private

Internal bitmap of properties (see ""_mst operator for details).

Definition at line 128 of file miniscript.h.


The documentation for this class was generated from the following file: