musicxml 1.1.2

MusicXML parsing, manipulation, and export library
Documentation
use crate::datatypes::{NmToken, Token, YesNo};
use alloc::{string::String, vec::Vec};
use musicxml_internal::*;
use musicxml_macros::*;

/// Attributes pertaining to the [Supports] element.
#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
pub struct SupportsAttributes {
  /// Indicates the element that is supported or not by the encoding.
  pub element: NmToken,
  /// If yes, the absence of a particular element with a specified attribute or value is meaningful. It indicates that this information is not present in the score.
  /// If no, the absence is not meaningful because the encoding does not include this type of information.
  pub r#type: YesNo,
  /// Indicates a specific element attribute that is supported or not by the encoding.
  pub attribute: Option<NmToken>,
  /// Indicates a specific attribute value that is supported or not by the encoding. Only used together with the `attribute` attribute.
  pub value: Option<Token>,
}

/// The [Supports] element indicates if a MusicXML encoding supports a particular MusicXML element.
///
/// This is recommended for elements like [Beam][super::Beam], [Stem][super::Stem], and [Accidental][super::Accidental], where the absence
/// of an element is ambiguous if you do not know if the encoding supports that element. It also allows programs to indicate support for
/// specific attributes, or specific attributes with specific values. This lets applications communicate, for example, that all system and/or
/// page breaks are contained in the MusicXML file.
#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
pub struct Supports {
  /// Element-specific attributes
  pub attributes: SupportsAttributes,
  /// Element-specific content
  pub content: (),
}