/*
 * This file is part of the Cforall project
 *
 * $Id: FindFunction.h,v 1.4 2005/08/29 20:14:13 rcbilson Exp $
 *
 */

#ifndef FINDFUNCTION_H
#define FINDFUNCTION_H

#include "SynTree/SynTree.h"
#include "GenPoly.h"

namespace GenPoly {

typedef bool (*FindFunctionPredicate)( FunctionType*, const TyVarMap& );

void findFunction( Type *type, std::list< FunctionType* > &functions, const TyVarMap &tyVars, FindFunctionPredicate predicate );
void findAndReplaceFunction( Type *&type, std::list< FunctionType* > &functions, const TyVarMap &tyVars, FindFunctionPredicate predicate );

} // namespace GenPoly

#endif /* #ifndef FINDFUNCTION_H */
