pub mod datasets;
pub mod environment;
pub mod graphs;
pub mod quads;
pub mod sources;
pub mod terms;
pub mod triples;

pub const SYSTEM_AUTHORITY: &str = "http://ns.taganak.net";

// Needed for things that deserialize usize-like targets from RDF,
// which does not know platform-specific types
#[cfg(target_pointer_width = "16")]
pub type USizeAlias = u16;
#[cfg(target_pointer_width = "32")]
pub type USizeAlias = u32;
#[cfg(target_pointer_width = "64")]
pub type USizeAlias = u64;

pub const DEFAULT_TRIPLE_SIZE_HINT: usize = 512;
pub const DEFAULT_BUF_SIZE_HINT: usize = 8192;

pub mod prelude {
    // Important constants
    pub use super::SYSTEM_AUTHORITY;

    // Traits
    //    pub use super::graphs::actions::TripleCallback;
    pub use super::datasets::{Dataset, DatasetError};
    pub use super::environment::profile::{PrefixMap, Profile, TermMap};
    pub use super::graphs::{Graph, GraphError, GraphView};
    pub use super::terms::BlankNodeInterface;
    pub use super::triples::filters::TripleFilter;

    // Regularly used types
    pub use super::environment::profile::{BasicPrefixMap, BasicProfile, BasicTermMap};
    pub use super::sources::parsers::TripleParser;
    pub use super::sources::SourceError;
    pub use super::terms::{BlankNode, Iri, Literal, Term};
    pub use super::triples::{Triple, TripleError, TripleRef};

    // Regularly used standard library types
    pub use std::sync::Arc;
}
