MNX Document Model
Loading...
Searching...
No Matches
mnx::global::Measure Class Reference

Represents a single global measure instance within an MNX document. More...

#include <Global.h>

+ Inheritance diagram for mnx::global::Measure:

Public Member Functions

 MNX_OPTIONAL_CHILD (Barline, barline,(BarlineType, barlineType))
 optional barline for this measure
 
 MNX_OPTIONAL_CHILD (Ending, ending,(int, duration))
 optional ending ("volta bracket") for this measure
 
 MNX_OPTIONAL_CHILD (Fine, fine,(const FractionValue &, position))
 optional fine direction for this measure
 
 MNX_OPTIONAL_CHILD (Jump, jump,(JumpType, jumpType),(const FractionValue &, position))
 optional jump direction for this measure
 
 MNX_OPTIONAL_CHILD (KeySignature, key,(int, fifths))
 optional key signature/key change for this measure
 
 MNX_OPTIONAL_PROPERTY (int, number)
 
 MNX_OPTIONAL_CHILD (RepeatEnd, repeatEnd)
 if present, indicates that there is backwards repeat
 
 MNX_OPTIONAL_CHILD (RepeatStart, repeatStart)
 if present, indicates that a repeated section starts here
 
 MNX_OPTIONAL_CHILD (Segno, segno,(const FractionValue &, position))
 if present, indicates that a segno marker is here
 
 MNX_OPTIONAL_CHILD (Array< Tempo >, tempos)
 the tempo changes within the measure, if any
 
 MNX_OPTIONAL_CHILD (TimeSignature, time,(int, count),(TimeSignatureUnit, unit))
 if present, indicates a meter change
 
BarlineType calcBarlineType () const
 Calculates the barline type for this measure.
 
int calcVisibleNumber () const
 Calculates the visible measure number for this measure.
 
std::optional< TimeSignaturecalcCurrentTime () const
 Calculates the current time signature by searching backwards.
 
std::optional< KeySignaturecalcCurrentKey () const
 Calculates the current key signature by searching backwards.
 
KeySignature::Required calcCurrentKeyFields () const
 Get the fields of the current key signature.
 
- Public Member Functions inherited from mnx::ArrayElementObject
size_t calcArrayIndex () const
 Calculates the array index of the current instance within the array.
 
template<typename ContainerType >
ContainerType container () const
 Returns the object that owns the content array this element belongs to wrapped as the specified template type.
 
 Object (const std::shared_ptr< json > &root, json_pointer pointer)
 Wraps an Object class around an existing JSON object node.
 
 Object (Base &parent, std::string_view key)
 Creates a new Object class as a child of a JSON node.
 
- Public Member Functions inherited from mnx::Object
 Object (const std::shared_ptr< json > &root, json_pointer pointer)
 Wraps an Object class around an existing JSON object node.
 
 Object (Base &parent, std::string_view key)
 Creates a new Object class as a child of a JSON node.
 
 MNX_OPTIONAL_PROPERTY (std::string, _c)
 An optional comment. This serves a similar function as XML or HTML comments.
 
 MNX_OPTIONAL_CHILD (Object, _x)
 Vendor-defined dictionary.
 
 MNX_OPTIONAL_PROPERTY (std::string, id)
 Uniquely identifies the object.
 
void setExtension (const std::string &key, const json &value)
 Sets a vendor extension value in _x, creating _x when needed.
 
std::optional< jsongetExtension (const std::string &key) const
 Gets a vendor extension value from _x.
 
- Public Member Functions inherited from mnx::Base
 Base (const Base &src)
 Copy constructor.
 
 Base (Base &&src) noexcept
 Move constructor.
 
Baseoperator= (const Base &src)
 Copy assignment operator.
 
Baseoperator= (Base &&src)
 Move assignment operator.
 
std::string dump (int indents=-1) const
 Dumps the branch to a string. Useful in debugging.
 
template<typename T >
parent () const
 Returns the parent object for this node.
 
template<typename T , typename Scope = scope::Default>
std::optional< T > getEnclosingElement () const
 Returns the enclosing array element for this instance. If T is a type that can be nested (e.g. ContentObject), the highest level instance is returned. (To get the lowest level immediate container, use ContentObject::container.)
 
json_pointer pointer () const
 Returns the json_pointer for this node.
 
Document document () const
 Returns the document root.
 

Static Public Attributes

static constexpr std::string_view JsonSchemaTypeName = "measure-global"
 required for mapping
 

Additional Inherited Members

- Protected Member Functions inherited from mnx::Base
jsonref () const
 Convert this node for retrieval.
 
jsonref ()
 Access the JSON node for modification.
 
const std::shared_ptr< json > & root () const
 Returns the root.
 
 Base (const std::shared_ptr< json > &root, json_pointer pointer)
 Wrap a Base instance around a specific JSON reference using a json_pointer.
 
 Base (json &&jsonRef, Base &parent, std::string_view key)
 Construct a Base reference as a child inside a parent node.
 
template<typename T >
getChild (std::string_view key) const
 Retrieves and validates a required child node.
 
template<typename T >
setChild (std::string_view key, const T &value)
 Sets a child node.
 
template<typename T >
std::optional< T > getOptionalChild (std::string_view key) const
 Retrieves an optional child node.
 

Detailed Description

Represents a single global measure instance within an MNX document.

Member Function Documentation

◆ calcBarlineType()

BarlineType mnx::global::Measure::calcBarlineType ( ) const

Calculates the barline type for this measure.

Returns
barline().type() if barline() has a value. Otherwise the default (as defined in the MNX specification.)

◆ calcCurrentKey()

std::optional< KeySignature > mnx::global::Measure::calcCurrentKey ( ) const

Calculates the current key signature by searching backwards.

Returns
The current key signature or or std::nullopt if none found.

◆ calcCurrentKeyFields()

KeySignature::Required mnx::global::Measure::calcCurrentKeyFields ( ) const

Get the fields of the current key signature.

Returns
The current key fields if found, otherwise the fields for key with no accidentals.

◆ calcCurrentTime()

std::optional< TimeSignature > mnx::global::Measure::calcCurrentTime ( ) const

Calculates the current time signature by searching backwards.

Returns
The current time signature or std::nullopt if none found.

◆ calcVisibleNumber()

int mnx::global::Measure::calcVisibleNumber ( ) const

Calculates the visible measure number for this measure.

Returns
The visible measure number. MNX currenty does not provide a mechanism to exclude a measure from numbering.

◆ MNX_OPTIONAL_PROPERTY()

mnx::global::Measure::MNX_OPTIONAL_PROPERTY ( int  ,
number   
)

visible measure number. Use calcVisibleNumber to get the correct value, as defined in the MNX specification, since it may be omitted here.