#[macro_export]
macro_rules! reflect_graph_impl {
() => {
pub fn any_match(
&self,
pattern: Triple<
Option<&<Self as $crate::Graph>::Subject>,
Option<&<Self as $crate::Graph>::Predicate>,
Option<&<Self as $crate::Graph>::Object>,
>,
) -> Option<
Triple<
&<Self as $crate::Graph>::Subject,
&<Self as $crate::Graph>::Predicate,
&<Self as $crate::Graph>::Object,
>,
> {
$crate::Graph::any_match(self, pattern)
}
};
}
#[macro_export]
macro_rules! reflect_dataset_impl {
() => {
#[inline(always)]
pub fn default_graph(&self) -> &<Self as $crate::Dataset>::Graph {
$crate::Dataset::default_graph(self)
}
#[inline(always)]
pub fn subjects<'a>(
&'a self,
id: Option<&<Self as $crate::Dataset>::GraphLabel>,
) -> Option<<<Self as $crate::Dataset>::Graph as $crate::Graph>::Subjects<'a>>
where
<Self as $crate::Dataset>::Graph: 'a,
<Self as $crate::Dataset>::Subject: 'a,
<Self as $crate::Dataset>::Predicate: 'a,
<Self as $crate::Dataset>::Object: 'a,
{
$crate::Dataset::subjects(self, id)
}
#[inline(always)]
pub fn predicates<'a>(
&'a self,
id: Option<&<Self as $crate::Dataset>::GraphLabel>,
subject: &<Self as $crate::Dataset>::Subject,
) -> Option<<<Self as $crate::Dataset>::Graph as $crate::Graph>::Predicates<'a>>
where
<Self as $crate::Dataset>::Graph: 'a,
<Self as $crate::Dataset>::Predicate: 'a,
<Self as $crate::Dataset>::Object: 'a,
{
$crate::Dataset::predicates(self, id, subject)
}
#[inline(always)]
pub fn objects<'a>(
&'a self,
id: Option<&<Self as $crate::Dataset>::GraphLabel>,
subject: &<Self as $crate::Dataset>::Subject,
predicate: &<Self as $crate::Dataset>::Predicate,
) -> Option<<<Self as $crate::Dataset>::Graph as $crate::Graph>::Objects<'a>>
where
<Self as $crate::Dataset>::Graph: 'a,
<Self as $crate::Dataset>::Object: 'a,
{
$crate::Dataset::objects(self, id, subject, predicate)
}
};
}
#[macro_export]
macro_rules! reflect_sized_dataset_impl {
() => {
#[inline(always)]
pub fn into_default_graph(self) -> <Self as $crate::Dataset>::Graph {
$crate::SizedDataset::into_default_graph(self)
}
#[inline(always)]
pub fn into_subjects(
self,
id: Option<&<Self as $crate::Dataset>::GraphLabel>,
) -> Option<<<Self as $crate::Dataset>::Graph as $crate::SizedGraph>::IntoSubjects> {
$crate::SizedDataset::into_subjects(self, id)
}
#[inline(always)]
pub fn into_predicates(
self,
id: Option<&<Self as $crate::Dataset>::GraphLabel>,
subject: &<Self as $crate::Dataset>::Subject,
) -> Option<<<Self as $crate::Dataset>::Graph as $crate::SizedGraph>::IntoPredicates> {
$crate::SizedDataset::into_predicates(self, id, subject)
}
#[inline(always)]
pub fn into_objects(
self,
id: Option<&<Self as $crate::Dataset>::GraphLabel>,
subject: &<Self as $crate::Dataset>::Subject,
predicate: &<Self as $crate::Dataset>::Predicate,
) -> Option<<<Self as $crate::Dataset>::Graph as $crate::SizedGraph>::IntoObjects> {
$crate::SizedDataset::into_objects(self, id, subject, predicate)
}
};
}
#[macro_export]
macro_rules! reflect_mutable_dataset_impl {
() => {
#[inline(always)]
pub fn default_graph_mut(&mut self) -> &mut <Self as $crate::Dataset>::Graph {
$crate::MutableDataset::default_graph_mut(self)
}
};
}
pub use reflect_dataset_impl;
pub use reflect_graph_impl;
pub use reflect_mutable_dataset_impl;
pub use reflect_sized_dataset_impl;