/*
 * Copyright (c) 1999 Johnny C. Lam.
 * All rights reserved.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  The author makes no representations
 * about the suitability of this software for any purpose.  It is
 * provided "as is" without express or implied warranty.
 */

#include "path_criterion_factory.h"

INITIALIZE_SINGLETON_BASE(PathCriterionFactory);

const PathCriterionFactory::choice_type
PathCriterionFactory::AVERAGE = "average";

const PathCriterionFactory::choice_type
PathCriterionFactory::MIN = "min";

const PathCriterionFactory::choice_type
PathCriterionFactory::MAX = "max";

auto_ptr<PathCriterion>
PathCriterionFactory::Make(choice_type criterion) const
{
    if (criterion == AVERAGE) {
	return auto_ptr<PathCriterion>(new AveragePathCriterion());
    } else if (criterion == MIN) {
	return auto_ptr<PathCriterion>(new MinPathCriterion());
    } else if (criterion == MAX) {
	return auto_ptr<PathCriterion>(new MaxPathCriterion());
    } else {
	return auto_ptr<PathCriterion>(0);
    }
}
