move ParseMode to mode

This commit is contained in:
AF 2023-07-30 18:55:46 +00:00
parent c91e34b04a
commit 1b54cd4ae8
8 changed files with 25 additions and 26 deletions

View File

@ -103,3 +103,21 @@ pub trait Mode {
ab2t: impl FnOnce(A, B) -> Result<AB, E>,
) -> Self::ExtensionResult<AB, E>;
}
/// Type that a [`Mode`] associated with it.
pub trait ParseMode {
/// Associated [`Mode`].
type Mode: ?Sized + Mode;
}
/// [`ParseMode`] equivalent of [`ParseSuccess`].
pub type ParseSuccessP<F, A, I> = ParseSuccess<<F as ParseMode>::Mode, A, I>;
/// [`ParseMode`] equivalent of [`ExtensionResult`].
pub type ExtensionResultP<F, A, E> = ExtensionResult<<F as ParseMode>::Mode, A, E>;
/// [`ParseMode`] equivalent of [`ExtensionSource`].
pub type ExtensionSourceP<F, A> = ExtensionSource<<F as ParseMode>::Mode, A>;
/// [`ParseMode`] equivalent of [`ModeResult`].
pub type ModeResultP<F, A, E, I> = ModeResult<<F as ParseMode>::Mode, A, E, I>;

View File

@ -23,6 +23,7 @@ use std::{error::Error, rc::Rc};
use crate::func::context::*;
use crate::func::*;
use crate::mode::*;
use self::addresses::{Addresses, InliningAddresses};
pub use self::context::Context;
@ -33,9 +34,8 @@ pub use self::hashing::{Hash, HASH_SIZE, HASH_ZEROS};
pub use self::inctx::InCtx;
pub use self::inlining::{Inlining, InliningExt, InliningResultExt};
pub use self::modes::{
CRegularFactory, ExtensionResultM, ExtensionResultP, ExtensionSourceM, ExtensionSourceP,
FactoryModeParse, FactoryModeProxy, ImplMode, ModeResultM, ModeResultP, ParseMode,
ParseModeExt, ParseSuccessP, RegularFactory, RegularMode, WithMode, WithParseMode,
CRegularFactory, ExtensionResultM, ExtensionSourceM, FactoryModeParse, FactoryModeProxy,
ImplMode, ModeResultM, ParseModeExt, RegularFactory, RegularMode, WithMode, WithParseMode,
};
pub use self::origin::{OFctr, Origin};
pub use self::point::Point;

View File

@ -1,27 +1,7 @@
use std::marker::PhantomData;
use crate::mode::*;
use super::*;
/// Type that a [`Mode`] associated with it.
pub trait ParseMode {
/// Associated [`Mode`].
type Mode: ?Sized + Mode;
}
/// [`ParseMode`] equivalent of [`ParseSuccess`].
pub type ParseSuccessP<F, A, I> = ParseSuccess<<F as ParseMode>::Mode, A, I>;
/// [`ParseMode`] equivalent of [`ExtensionResult`].
pub type ExtensionResultP<F, A, E> = ExtensionResult<<F as ParseMode>::Mode, A, E>;
/// [`ParseMode`] equivalent of [`ExtensionSource`].
pub type ExtensionSourceP<F, A> = ExtensionSource<<F as ParseMode>::Mode, A>;
/// [`ParseMode`] equivalent of [`ParseResult`].
pub type ModeResultP<F, A, E, I> = ModeResult<<F as ParseMode>::Mode, A, E, I>;
/// Extension trait for all [`ParseMode`] types, re-exporting [`Mode`] traits.
pub trait ParseModeExt: ParseMode {
/// [`Mode::bind`].

View File

@ -10,6 +10,7 @@ pub mod plain;
use std::marker::PhantomData;
use crate::mode::*;
use crate::rcore::*;
use super::*;

View File

@ -1,6 +1,3 @@
#[cfg(doc)]
use crate::mode::*;
use super::*;
impl<A: AtomicModeParse> Atomic for A {

View File

@ -3,6 +3,7 @@
use std::error::Error;
use std::fmt::Display;
use crate::mode::*;
use crate::rcore::*;
use crate::rstd::inlining::{static_pair::*, *};

View File

@ -1,6 +1,7 @@
//! Basic implementation of a stack/linked list.
use crate::func::{context::*, controlflow::ControlFlow};
use crate::mode::*;
use crate::rcore::*;
use crate::rstd::{inlining::*, nullable::*, point::*, *};

View File

@ -3,6 +3,7 @@
mod modes;
pub mod static_pair;
use crate::mode::*;
use crate::rcore::*;
use super::{