forked from libre-chip/fayalite
108 lines
2.8 KiB
Rust
108 lines
2.8 KiB
Rust
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
// See Notices.txt for copyright information
|
|
|
|
// TODO: enable:
|
|
// #![warn(missing_docs)]
|
|
|
|
//! [Main Documentation][_docs]
|
|
|
|
extern crate self as fayalite;
|
|
|
|
#[doc(hidden)]
|
|
pub use std as __std;
|
|
|
|
#[doc(hidden)]
|
|
#[macro_export]
|
|
macro_rules! __cfg_expansion_helper {
|
|
(
|
|
[
|
|
$($evaluated_cfgs:ident($($evaluated_exprs:tt)*) = $evaluated_results:ident,)*
|
|
]
|
|
[
|
|
$cfg:ident($($expr:tt)*),
|
|
$($unevaluated_cfgs:ident($($unevaluated_exprs:tt)*),)*
|
|
]
|
|
// pass as tt so we get right span for attribute
|
|
$after_evaluation_attr:tt $after_evaluation_body:tt
|
|
) => {
|
|
#[$cfg($($expr)*)]
|
|
$crate::__cfg_expansion_helper! {
|
|
[
|
|
$($evaluated_cfgs($($evaluated_exprs)*) = $evaluated_results,)*
|
|
$cfg($($expr)*) = true,
|
|
]
|
|
[
|
|
$($unevaluated_cfgs($($unevaluated_exprs)*),)*
|
|
]
|
|
$after_evaluation_attr $after_evaluation_body
|
|
}
|
|
#[$cfg(not($($expr)*))]
|
|
$crate::__cfg_expansion_helper! {
|
|
[
|
|
$($evaluated_cfgs($($evaluated_exprs)*) = $evaluated_results,)*
|
|
$cfg($($expr)*) = false,
|
|
]
|
|
[
|
|
$($unevaluated_cfgs($($unevaluated_exprs)*),)*
|
|
]
|
|
$after_evaluation_attr $after_evaluation_body
|
|
}
|
|
};
|
|
(
|
|
[
|
|
$($evaluated_cfgs:ident($($evaluated_exprs:tt)*) = $evaluated_results:ident,)*
|
|
]
|
|
[]
|
|
// don't use #[...] so we get right span for `#` and `[]` of attribute
|
|
{$($after_evaluation_attr:tt)*} {$($after_evaluation_body:tt)*}
|
|
) => {
|
|
$($after_evaluation_attr)*
|
|
#[__evaluated_cfgs([
|
|
$($evaluated_cfgs($($evaluated_exprs)*) = $evaluated_results,)*
|
|
])]
|
|
$($after_evaluation_body)*
|
|
};
|
|
}
|
|
|
|
#[doc(inline)]
|
|
/// The `#[hdl_module]` attribute is applied to a Rust function so that that function creates
|
|
/// a [`Module`][`::fayalite::module::Module`] when called.
|
|
/// In the function body it will implicitly create a
|
|
/// variable [`m: ModuleBuilder`][`module::ModuleBuilder`].
|
|
///
|
|
/// See [Fayalite Modules][crate::_docs::modules]
|
|
pub use fayalite_proc_macros::hdl_module;
|
|
|
|
#[doc(inline)]
|
|
pub use fayalite_proc_macros::hdl;
|
|
|
|
/// struct used as a placeholder when applying defaults
|
|
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
|
|
pub struct __;
|
|
|
|
#[cfg(feature = "unstable-doc")]
|
|
pub mod _docs;
|
|
|
|
pub mod annotations;
|
|
pub mod array;
|
|
pub mod bundle;
|
|
pub mod cli;
|
|
pub mod clock;
|
|
pub mod enum_;
|
|
pub mod expr;
|
|
pub mod firrtl;
|
|
pub mod formal;
|
|
pub mod int;
|
|
pub mod intern;
|
|
pub mod memory;
|
|
pub mod module;
|
|
pub mod prelude;
|
|
pub mod reg;
|
|
pub mod reset;
|
|
pub mod sim;
|
|
pub mod source_location;
|
|
pub mod testing;
|
|
pub mod ty;
|
|
pub mod util;
|
|
pub mod wire;
|