1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/// Extensions to Yin archetypes.
pub mod archetype;
/// Callbacks that should be triggered upon certain conditions in Yin being met.
pub mod callbacks;
/// Yang-specific relations that link any number of nodes together
pub mod relation {
    /// Unary relations.
    pub mod flag {
        mod newly_defined_form;
        mod own_module_form;
        mod uses_attribute_logic_form;
        mod uses_data_logic_form;
        mod uses_root_node_logic_form;

        pub use newly_defined_form::NewlyDefined;
        pub use own_module_form::OwnModule;
        pub use uses_attribute_logic_form::UsesAttributeLogic;
        pub use uses_data_logic_form::UsesDataLogic;
        pub use uses_root_node_logic_form::UsesRootNodeLogic;
        pub use zamm_yin::tao::relation::flag::*;
    }

    /// Binary relations.
    pub mod attribute {
        mod concept_id_form;
        mod crate_form;
        mod documentation_form;
        mod implementation_name_form;
        mod import_path_form;
        mod rust_primitive_form;
        mod target_form;

        pub use concept_id_form::ConceptId;
        pub use crate_form::Crate;
        pub use documentation_form::Documentation;
        pub use implementation_name_form::ImplementationName;
        pub use import_path_form::ImportPath;
        pub use rust_primitive_form::RustPrimitive;
        pub use target_form::Target;
        pub use zamm_yin::tao::relation::attribute::*;
    }

    pub use zamm_yin::tao::relation::*;
}
/// Form-related attributes.
pub mod form {
    /// Concepts that exist explicitly as bits.
    pub mod data {
        mod data_extension;

        pub use data_extension::DataExtension;
        pub use zamm_yin::tao::form::data::*;
    }

    mod build_info_extension;
    mod build_info_form;
    mod defined_marker;

    pub use build_info_extension::BuildInfoExtension;
    pub use build_info_form::BuildInfo;
    #[allow(deprecated)]
    pub use defined_marker::DefinedMarker;
    pub use zamm_yin::tao::form::*;
}
mod implement_extension;
/// Command to implement something.
mod implement_form;
mod lens_form;

use form::BuildInfo;
pub use implement_extension::ImplementExtension;
pub use implement_form::Implement;
pub use lens_form::Lens;
use relation::attribute::{
    ConceptId, Crate, Documentation, ImplementationName, ImportPath, RustPrimitive, Target,
};
use relation::flag::{
    NewlyDefined, OwnModule, UsesAttributeLogic, UsesDataLogic, UsesRootNodeLogic,
};
use zamm_yin::graph::{Graph, InjectionGraph};
use zamm_yin::initialize_type;
use zamm_yin::tao::archetype::ArchetypeTrait;
use zamm_yin::tao::relation::attribute::Inherits;
pub use zamm_yin::tao::*;

/// Only here for backwards compatibility reasons.
#[deprecated(
    since = "0.1.1",
    note = "Please use the Implement.document and Implement.set_implementation_id functions \
    instead."
)]
pub struct ImplementConfig;

/// Initialize Yin, including with Yang-specific concepts.
pub fn initialize_kb() {
    zamm_yin::tao::initialize_kb();
    let mut ig = InjectionGraph::new();
    initialize_type!(
        ig,
        (
            Implement,
            Target,
            UsesAttributeLogic,
            NewlyDefined,
            OwnModule,
            UsesDataLogic,
            ImportPath,
            BuildInfo,
            Lens,
            Crate,
            ImplementationName,
            RustPrimitive,
            UsesRootNodeLogic,
            ConceptId,
            Documentation
        )
    );
}