pub(crate) mod core;
#[cfg(any(
feature = "utilmd",
feature = "mscons",
feature = "aperak",
feature = "contrl",
feature = "invoic",
feature = "remadv",
feature = "orders",
feature = "iftsta",
feature = "insrpt",
feature = "reqote",
feature = "partin",
feature = "ordchg",
feature = "ordrsp",
feature = "quotes",
feature = "comdis",
feature = "pricat",
feature = "utilts",
))]
macro_rules! impl_edi_energy_message {
($ty:ty) => {
impl crate::EdiEnergyMessage for $ty {
fn try_message_type(&self) -> Option<crate::MessageType> {
Some(self.core.message_type())
}
fn detect_release(&self) -> Result<&crate::Release, crate::Error> {
self.core.detect_release()
}
fn message_ref(&self) -> &str {
&self.core.message_ref
}
fn detect_pruefidentifikator(&self) -> Result<crate::Pruefidentifikator, crate::Error> {
self.core.detect_pruefidentifikator()
}
fn validate(&self) -> Result<crate::EdiEnergyReport, crate::Error> {
let release = self.core.detect_release()?;
self.core.validate_against_with_semantic(&release, None)
}
fn validate_against(
&self,
release: &crate::Release,
) -> Result<crate::EdiEnergyReport, crate::Error> {
self.core.validate_against_with_semantic(release, None)
}
fn validate_with_pack(
&self,
extra: crate::CustomRulePack,
) -> Result<crate::EdiEnergyReport, crate::Error> {
self.core.validate_with_extra_pack(None, extra.into_inner())
}
fn validate_on_date(
&self,
reference_date: time::Date,
) -> Result<crate::EdiEnergyReport, crate::Error> {
let release = self.core.detect_release()?;
self.core
.validate_against_with_semantic_and_registry_on_date(
&release,
None,
crate::registry::ReleaseRegistry::global(),
Some(reference_date),
)
}
fn serialize(&self) -> Result<Vec<u8>, crate::Error> {
self.core.serialize()
}
fn segments(&self) -> &[edifact_rs::OwnedSegment] {
&self.core.segments
}
}
};
($ty:ty, sem = $pack:expr) => {
impl crate::EdiEnergyMessage for $ty {
fn try_message_type(&self) -> Option<crate::MessageType> {
Some(self.core.message_type())
}
fn detect_release(&self) -> Result<&crate::Release, crate::Error> {
self.core.detect_release()
}
fn message_ref(&self) -> &str {
&self.core.message_ref
}
fn detect_pruefidentifikator(&self) -> Result<crate::Pruefidentifikator, crate::Error> {
self.core.detect_pruefidentifikator()
}
fn validate(&self) -> Result<crate::EdiEnergyReport, crate::Error> {
let release = self.core.detect_release()?;
self.core
.validate_against_with_semantic(&release, Some($pack))
}
fn validate_against(
&self,
release: &crate::Release,
) -> Result<crate::EdiEnergyReport, crate::Error> {
self.core
.validate_against_with_semantic(release, Some($pack))
}
fn validate_with_pack(
&self,
extra: crate::CustomRulePack,
) -> Result<crate::EdiEnergyReport, crate::Error> {
self.core
.validate_with_extra_pack(Some($pack), extra.into_inner())
}
fn validate_on_date(
&self,
reference_date: time::Date,
) -> Result<crate::EdiEnergyReport, crate::Error> {
let release = self.core.detect_release()?;
self.core
.validate_against_with_semantic_and_registry_on_date(
&release,
Some($pack),
crate::registry::ReleaseRegistry::global(),
Some(reference_date),
)
}
fn serialize(&self) -> Result<Vec<u8>, crate::Error> {
self.core.serialize()
}
fn segments(&self) -> &[edifact_rs::OwnedSegment] {
&self.core.segments
}
}
};
}
#[cfg(any(
feature = "utilmd",
feature = "mscons",
feature = "aperak",
feature = "contrl",
feature = "invoic",
feature = "remadv",
feature = "orders",
feature = "iftsta",
feature = "insrpt",
feature = "reqote",
feature = "partin",
feature = "ordchg",
feature = "ordrsp",
feature = "quotes",
feature = "comdis",
feature = "pricat",
feature = "utilts",
))]
pub mod segments;
#[cfg(feature = "aperak")]
pub mod aperak;
#[cfg(feature = "comdis")]
pub mod comdis;
#[cfg(feature = "contrl")]
pub mod contrl;
#[cfg(feature = "iftsta")]
pub mod iftsta;
#[cfg(feature = "insrpt")]
pub mod insrpt;
#[cfg(feature = "invoic")]
pub mod invoic;
#[cfg(feature = "mscons")]
pub mod mscons;
#[cfg(feature = "ordchg")]
pub mod ordchg;
#[cfg(feature = "orders")]
pub mod orders;
#[cfg(feature = "ordrsp")]
pub mod ordrsp;
#[cfg(feature = "partin")]
pub mod partin;
#[cfg(feature = "pricat")]
pub mod pricat;
#[cfg(feature = "quotes")]
pub mod quotes;
#[cfg(feature = "remadv")]
pub mod remadv;
#[cfg(feature = "reqote")]
pub mod reqote;
#[cfg(feature = "utilmd")]
pub mod utilmd;
#[cfg(feature = "utilts")]
pub mod utilts;