Skip to content

Commit

Permalink
Add new recipe_subset ctor, use it to clean up filter functions
Browse files Browse the repository at this point in the history
  • Loading branch information
OrenAudeles committed Jan 9, 2019
1 parent 74604c1 commit a9cea01
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 19 deletions.
25 changes: 6 additions & 19 deletions src/recipe_dictionary.cpp
Expand Up @@ -168,43 +168,30 @@ std::vector<const recipe *> recipe_subset::search( const std::string &txt,

return res;
}
static void insert_vector( const recipe_subset &src, recipe_subset &dst,
const std::vector<const recipe *> &recipes )
{

recipe_subset::recipe_subset( const recipe_subset &src, const std::vector<const recipe *> &recipes ) {
for( const auto elem : recipes ) {
dst.include( elem, src.get_custom_difficulty( elem ) );
include( elem, src.get_custom_difficulty( elem ) );
}
}

recipe_subset recipe_subset::reduce( const std::string &txt, const search_type key ) const
{
recipe_subset result;

insert_vector( *this, result, search( txt, key ) );

return result;
return recipe_subset( *this, search( txt, key ) );
}
recipe_subset recipe_subset::intersection( const recipe_subset &subset ) const
{
recipe_subset result;

std::vector<const recipe *> intersection_result;
std::set_intersection( this->begin(), this->end(), subset.begin(), subset.end(),
std::back_inserter( intersection_result ) );
insert_vector( *this, result, intersection_result );

return result;
return recipe_subset( *this, intersection_result );
}
recipe_subset recipe_subset::difference( const recipe_subset &subset ) const
{
recipe_subset result;

std::vector<const recipe *> difference_result;
std::set_difference( this->begin(), this->end(), subset.begin(), subset.end(),
std::back_inserter( difference_result ) );
insert_vector( *this, result, difference_result );

return result;
return recipe_subset( *this, difference_result );
}

std::vector<const recipe *> recipe_subset::search_result( const itype_id &item ) const
Expand Down
2 changes: 2 additions & 0 deletions src/recipe_dictionary.h
Expand Up @@ -66,6 +66,8 @@ extern recipe_dictionary recipe_dict;
class recipe_subset
{
public:
recipe_subset( void ) = default;
recipe_subset( const recipe_subset &src, const std::vector<const recipe *> &recipes );
/**
* Include a recipe to the subset.
* @param r recipe to include
Expand Down

0 comments on commit a9cea01

Please sign in to comment.