diff options
Diffstat (limited to 'src/datablocks/ingredientlist.h')
-rw-r--r-- | src/datablocks/ingredientlist.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/datablocks/ingredientlist.h b/src/datablocks/ingredientlist.h new file mode 100644 index 0000000..bfd07db --- /dev/null +++ b/src/datablocks/ingredientlist.h @@ -0,0 +1,61 @@ +/*************************************************************************** +* Copyright (C) 2003 by * +* * +* Unai Garro ([email protected]) * +* Cyril Bosselut ([email protected]) * +* Jason Kivlighn ([email protected]) * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +***************************************************************************/ +#ifndef INGREDIENTLIST_H +#define INGREDIENTLIST_H + +#include <tqvaluelist.h> +#include <tqregexp.h> + +#include "datablocks/ingredient.h" + +class RecipeDB; + +/** +@author Unai Garro +*/ +class IngredientList: public TQValueList <Ingredient> +{ +public: + IngredientList(); + ~IngredientList(); + bool contains( const Ingredient &ing, bool compareAmount = false, RecipeDB *database = 0 ) const; + bool containsSubSet( IngredientList &il, IngredientList &missing, bool compareAmount = false, RecipeDB *database = 0 ); + bool containsSubSet( IngredientList &il ) const; + bool containsAny( const IngredientList &, bool compareAmount = false, RecipeDB *database = 0 ); + + IngredientList groupMembers( int id, IngredientList::const_iterator begin ) const; + + void move( int index1, int index2 ); + void move( int index1, int count, int index2 ); + void empty( void ); + int find( int id ) const; + Ingredient findByName( const TQString & ) const; + Ingredient findByName( const TQRegExp & ) const; + IngredientList::const_iterator find( IngredientList::const_iterator, int id ) const; + IngredientList::iterator find( IngredientList::iterator, int id ); + + /** Warning, returns an invalid reference if no ingredient is found. Must check prior + * to calling this function if the ingredient exists. + */ + IngredientData& findSubstitute( const Ingredient & ); + void removeSubstitute( const Ingredient & ); + + IngredientList firstGroup(); + IngredientList nextGroup(); + +private: + TQValueList<IngredientList::const_iterator> _groupMembers( int id, IngredientList::const_iterator begin ) const; + TQValueList<IngredientList::const_iterator> usedGroups; +}; + +#endif |