use crate::blob::encodings::longstring::LongString;
use crate::blob::encodings::wasmcode::WasmCode;
use crate::id::Id;
use crate::id_hex;
use crate::prelude::inlineencodings;
use crate::trible::Fragment;
use core::marker::PhantomData;
use triblespace_core_macros::attributes;
pub trait Describe {
fn describe(&self) -> Fragment;
fn id(&self) -> Id {
self.describe()
.root()
.expect("describe returns a rooted fragment")
}
}
pub trait MetaDescribe {
fn describe() -> Fragment;
fn id() -> Id {
<Self as MetaDescribe>::describe()
.root()
.expect("describe returns a rooted fragment")
}
}
impl<S> Describe for PhantomData<S>
where
S: MetaDescribe,
{
fn describe(&self) -> Fragment {
<S as MetaDescribe>::describe()
}
}
pub const KIND_MULTI: Id = id_hex!("C36D9C16B34729D855BD6C36A624E1BF");
pub const KIND_INLINE_ENCODING: Id = id_hex!("9A169BF2383E7B1A3E019808DFE3C2EB");
pub const KIND_BLOB_ENCODING: Id = id_hex!("CE488DB0C494C7FDBF3DF1731AED68A6");
pub const KIND_ATTRIBUTE_USAGE: Id = id_hex!("45759727A79C28D657EC06D5C6013649");
pub const KIND_PROTOCOL: Id = id_hex!("A04AD649FA28DC5904385532E9C8EF74");
pub const KIND_TAG: Id = id_hex!("452584B4C1CAE0B77F44408E6F194A31");
attributes! {
"AE94660A55D2EE3C428D2BB299E02EC3" as description: inlineencodings::Handle<LongString>;
"213F89E3F49628A105B3830BD3A6612C" as value_encoding: inlineencodings::GenId;
"43C134652906547383054B1E31E23DF4" as blob_encoding: inlineencodings::GenId;
"56C43BEE48BE99521886D99BE9026A3B" as array_item_schema: inlineencodings::GenId;
"51C08CFABB2C848CE0B4A799F0EFE5EA" as hash_schema: inlineencodings::GenId;
"1A3D520FEDA9E1A4051EBE96E43ABAC7" as value_formatter: inlineencodings::Handle<WasmCode>;
"7FB28C0B48E1924687857310EE230414" as name: inlineencodings::Handle<LongString>;
"325F05DB88184B4540AAEEFAE1E9667F" as iri: inlineencodings::Handle<LongString>;
"F10DE6D8E60E0E86013F1B867173A85C" as attribute: inlineencodings::GenId;
"A56350FD00EC220B4567FE15A5CD68B8" as source: inlineencodings::Handle<LongString>;
"BCB94C7439215641A3E9760CE3F4F432" as source_module: inlineencodings::Handle<LongString>;
"A7AFC8C0FAD017CE7EC19587AF682CFF" as json_kind: inlineencodings::ShortString;
"91C50E9FBB1F73E892EBD5FFDE46C251" as tag: inlineencodings::GenId;
"9B1E79DFD065F643954141593CD8B9E0" as created_at: inlineencodings::NsTAIInterval;
"93B7372E3443063392CD801B03A8D390" as updated_at: inlineencodings::NsTAIInterval;
"06973030ACA83A7B2B4FC8BEBB31F77A" as started_at: inlineencodings::NsTAIInterval;
"9B06AA4060EF9928A923FC7E6A6B6438" as finished_at: inlineencodings::NsTAIInterval;
"89FEC3B560336BA88B10759DECD3155F" as expires_at: inlineencodings::NsTAIInterval;
}