// This file is part of fityk program. Copyright (C) Marcin Wojdyr // Licence: GNU General Public License version 2 // $Id: datatrans.h 270 2007-03-11 03:08:01Z wojdyr $ #ifndef FITYK__DATATRANS__H__ #define FITYK__DATATRANS__H__ #include #include "common.h" #include "data.h" //Point using namespace boost::spirit; class Data; std::vector transform_data(std::string const& str, std::vector const& old_points); bool validate_transformation(std::string const& str); bool validate_data_expression(std::string const& str); bool is_data_dependent_expression(std::string const& s); fp get_transform_expression_value(std::string const &s, Data const* data); fp get_transform_expr_value(std::vector& code_, std::vector const& points); std::vector get_all_point_expressions(std::string const &s, Data const* data, bool only_active=true); bool get_dt_code(std::string const& s, std::vector& code_, std::vector& numbers_); fp get_value_for_point(std::vector const& code_, std::vector const& numbers_, fp x, fp y); /// a part of data expression grammar struct DataExpressionGrammar : public grammar { template struct definition { definition(DataExpressionGrammar const& /*self*/); rule rprec1, rbool_or, rbool_and, rbool_not, rbool, rprec2, rprec3, rprec4, rprec5; rule const& start() const { return rprec1; } }; }; extern DataExpressionGrammar DataExpressionG; /// data transformation grammar struct DataTransformGrammar : public grammar { template struct definition { definition(DataTransformGrammar const& /*self*/); rule assignment, statement, range, order; rule const& start() const { return statement; } }; }; extern DataTransformGrammar DataTransformG; #endif