Skip to content

Commit

Permalink
former : making subforming more friendly
Browse files Browse the repository at this point in the history
  • Loading branch information
Wandalen committed Mar 21, 2024
1 parent 4916885 commit 6655ef8
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ impl Struct1
// generated by former
pub struct Struct1FormerStorage
{
pub vec_1 : core::option::Option< Vec< String > >,
pub hashmap_strings_1 : core::option::Option< std::collections::HashMap< String, String > >,
pub hashset_strings_1 : core::option::Option< std::collections::HashSet< String > >,
pub vec_1 : ::core::option::Option< Vec< String > >,
pub hashmap_strings_1 : ::core::option::Option< std::collections::HashMap< String, String > >,
pub hashset_strings_1 : ::core::option::Option< std::collections::HashSet< String > >,
}

impl Default for Struct1FormerStorage
Expand Down Expand Up @@ -54,8 +54,8 @@ where
FormerEnd : the_module::FormingEnd< Struct1, FormerContext >,
{
storage : Struct1FormerStorage,
context : core::option::Option< FormerContext >,
on_end : core::option::Option< FormerEnd >,
context : ::core::option::Option< FormerContext >,
on_end : ::core::option::Option< FormerEnd >,
}

impl< FormerContext, FormerEnd > Struct1Former< FormerContext, FormerEnd >
Expand Down Expand Up @@ -126,14 +126,19 @@ where
#[ inline( always ) ]
pub fn begin
(
context : core::option::Option< FormerContext >,
mut storage : ::core::option::Option< Struct1FormerStorage >,
context : ::core::option::Option< FormerContext >,
on_end : FormerEnd,
) -> Self
{
if storage.is_none()
{
storage = Some( Default::default() );
}
Self
{
storage : core::default::Default::default(),
context : context,
storage : storage.unwrap(),
context,
on_end : ::core::option::Option::Some( on_end ),
}
}
Expand All @@ -153,7 +158,7 @@ where
where
Former2 : former::FormerBegin< Vec< String >, Self, End = former::FormingEndWrapper< Vec< String >, Self > >,
{
let on_end = | formed : Vec< String >, super_former : core::option::Option< Self > | -> Self
let on_end = | formed : Vec< String >, super_former : ::core::option::Option< Self > | -> Self
{
let mut super_former = super_former.unwrap();
if let Some( ref mut field ) = super_former.storage.vec_1
Expand Down Expand Up @@ -190,7 +195,7 @@ where
// >
// {
// let formed = self.storage.vec_1.take();
// let on_end = | formed : Vec< String >, super_former : core::option::Option< Self > | -> Self
// let on_end = | formed : Vec< String >, super_former : ::core::option::Option< Self > | -> Self
// {
// let mut super_former = super_former.unwrap();
// super_former.storage.vec_1 = Some( formed );
Expand All @@ -209,7 +214,7 @@ where
>
{
let formed = self.storage.hashmap_strings_1.take();
let on_end = | formed : std::collections::HashMap< String, String >, super_former : core::option::Option< Self > | -> Self
let on_end = | formed : std::collections::HashMap< String, String >, super_former : ::core::option::Option< Self > | -> Self
{
let mut super_former = super_former.unwrap();
super_former.storage.hashmap_strings_1 = Some( formed );
Expand All @@ -227,7 +232,7 @@ where
>
{
let formed = self.storage.hashset_strings_1.take();
let on_end = | formed : std::collections::HashSet< String >, super_former : core::option::Option< Self > | -> Self
let on_end = | formed : std::collections::HashSet< String >, super_former : ::core::option::Option< Self > | -> Self
{
let mut super_former = super_former.unwrap();
super_former.storage.hashset_strings_1 = Some( formed );
Expand All @@ -248,11 +253,38 @@ impl Struct1Former< Struct1, the_module::ReturnFormed >
#[ inline( always ) ]
pub fn new() -> Self
{
Self::begin(None, the_module::ReturnFormed)
Self::begin( None, None, the_module::ReturnFormed )
}

}

//

// impl< FormerContext, FormerEnd > Struct1Former< FormerContext, FormerEnd >
// where
// FormerEnd : the_module::FormingEnd< Struct1, FormerContext >,

// impl< FormerContext, FormerEnd > former::FormerBegin< Struct1, FormerContext >
// for Struct1Former< FormerContext, FormerEnd >
// where
// End : the_module::FormingEnd< Struct1, FormerContext >,
// {
// type End = End;
//
// #[ inline( always ) ]
// fn _begin
// (
// storage : core::option::Option< Struct1FormerStorage >, /* xxx2 : that should be storage */
// context : core::option::Option< FormerContext >,
// on_end : End,
// ) -> Self
// {
// debug_assert!( storage.is_none() );
// Self::begin( None, context, on_end )
// }
//
// }

//

include!( "../only_test/containers_with_runtime.rs" );
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ pub struct TemplateParameters

}


impl< Context, End > former::FormerBegin< TemplateParameterDescriptor, Context >
for TemplateParameterDescriptorFormer< Context, End >
where
Expand Down
23 changes: 0 additions & 23 deletions module/core/former_meta/src/derive/former.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1037,29 +1037,8 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
#fields_setter
)*

// ///
// /// Construct new instance of former with default parameters.
// ///
// #[ inline( always ) ]
// pub fn new_() -> #former_name_ident < #generics_params #name_ident #generics_ty, former::ReturnFormed >
// {
// #former_name_ident :: < #generics_params #name_ident #generics_ty, former::ReturnFormed > :: begin
// (
// None,
// former::ReturnFormed,
// )
// }
// // xxx : should be stand-alone. look VectorSubformer

}

// pub struct #former_storage_name_ident #generics_ty
// #generics_where
// let ( generics_impl, generics_ty, generics_where ) = generics.split_for_impl();

// impl #generics_of_former_impl #former_name_ident #generics_of_former_ty
// #generics_of_former_where

#[ automatically_derived ]
impl #generics_impl #former_name_ident < #generics_params #name_ident #generics_ty, former::ReturnFormed >
#generics_where
Expand All @@ -1069,7 +1048,6 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
/// Construct new instance of former with default parameters.
///
#[ inline( always ) ]
// pub fn new() -> #former_name_ident < #generics_params #name_ident #generics_ty, former::ReturnFormed >
pub fn new() -> Self
{
// #former_name_ident :: < #generics_params #name_ident #generics_ty, former::ReturnFormed > :: begin
Expand All @@ -1080,7 +1058,6 @@ pub fn former( input : proc_macro::TokenStream ) -> Result< TokenStream >
former::ReturnFormed,
)
}
// xxx : should be stand-alone. look VectorSubformer

}

Expand Down

0 comments on commit 6655ef8

Please sign in to comment.