mapnik/src/function_call.cpp

93 lines
2.5 KiB
C++
Raw Normal View History

/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2014 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#include <mapnik/function_call.hpp>
namespace mapnik {
// functions
// exp
inline value_type exp_impl (value_type const& val)
{
return std::exp(val.to_double());
}
// sin
inline value_type sin_impl (value_type const& val)
{
return std::sin(val.to_double());
}
// cos
inline value_type cos_impl (value_type const& val)
{
return std::cos(val.to_double());
}
// tan
inline value_type tan_impl (value_type const& val)
{
return std::tan(val.to_double());
}
// atan
inline value_type atan_impl (value_type const& val)
{
return std::atan(val.to_double());
}
unary_function_types::unary_function_types()
{
add
("sin", unary_function_impl(sin_impl))
("cos", unary_function_impl(cos_impl))
("tan", unary_function_impl(tan_impl))
("atan", unary_function_impl(atan_impl))
("exp", unary_function_impl(exp_impl))
;
}
// binary functions
// min
inline value_type min_impl(value_type const& arg1, value_type const& arg2)
{
return std::min(arg1.to_double(), arg2.to_double());
}
// max
inline value_type max_impl(value_type const& arg1, value_type const& arg2)
{
return std::max(arg1.to_double(), arg2.to_double());
}
// pow
inline value_type pow_impl(value_type const& arg1, value_type const& arg2)
{
return std::pow(arg1.to_double(), arg2.to_double());
}
binary_function_types::binary_function_types()
{
add
("min", binary_function_impl(min_impl))
("max", binary_function_impl(max_impl))
("pow", binary_function_impl(pow_impl))
;
}
}