//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Создание скалярных функций. \en Creation of scalar functions. \~ */ //////////////////////////////////////////////////////////////////////////////// #ifndef __FUNCTION_FACTORY_H #define __FUNCTION_FACTORY_H #include #include #include #include #include class MbFunction; class MbListVars; class MbMathematicalNode; //------------------------------------------------------------------------------ /** \brief \ru Фабрика функций. \en Factory of functions. \~ \details \ru Фабрика функций. \n \en Factory of functions. \n \~ \ingroup Functions */ // --- class MATH_CLASS MbFunctionFactory : public MbSyncItem { private: mutable MbResultType status; ///< \ru Результат создания. \en The result of creation. public : /// \ru Конструктор. \en Constructor. MbFunctionFactory(); virtual ~MbFunctionFactory(); public: MbResultType Status() const; ///< \ru Получить статус создания. \en Get the state of creation. public: /** \brief \ru Создать символьную функцию. \en Create a symbolic function. \~ \details \ru Создать символьную функцию из ее строкового представления.\n \en Create symbolic function from its string representation.\n \~ \param[in] data - \ru Строковое представление функции. \en String representation of a function. \~ \param[in] argument - \ru Признак замкнутости. \en String representation of a function argument. \~ \param[in] tmin - \ru Минимальное значение функции. \en Minimum function value. \~ \param[in] tmax - \ru Максимальное значение функции. \en Maximum function value. \~ \param[in] useFirstVar - \ru Флаг выбора используемой аналитической функции: при useFirstVar = true используется MdAnalyticalFunction; при useFirstVar = false используется MdCharacterFunction. \en Flag for selecting the analytical function to use: if useFirstVar = true, MdAnalyticalFunction is used; when useFirstVar = false, MdCharacterFunction is used. \~ */ MbFunction * CreateAnalyticalFunction ( const c3d::string_t & data, const c3d::string_t & argument, double tmin, double tmax, bool useFirstVar = false ) const; /// \ru Создать постоянную функцию. \en Create a constant function. MbFunction * CreateConstFunction ( double value ) const; /// \ru Создать линейную функцию. \en Create a linear function. MbFunction * CreateLineFunction ( double v1, double v2, double t1, double t2 ) const; /// \ru Создать кубическую функцию. \en Create a cubic function. MbFunction * CreateCubicFunction ( const SArray & values, bool closed ) const; /// \ru Создать кубическую функцию. \en Create a cubic function. MbFunction * CreateCubicFunction ( const SArray & values, const SArray & params, bool closed ) const; /// \ru Создать кубическую функцию. \en Create a cubic function. MbFunction * CreateCubicFunction ( const SArray & values, const SArray & firsts, const SArray & params, bool closed ) const; /* MbFunction * CreateCubicSplineFunction( const SArray & values, bool closed ) const; MbFunction * CreateCubicSplineFunction( const SArray & values, const SArray & params, bool closed ) const; */ OBVIOUS_PRIVATE_COPY( MbFunctionFactory ) }; //------------------------------------------------------------------------------ // \ru Найти в строке переменные \en Find variables in string // --- const MbMathematicalNode * GetVarListForAnalyticalFunc( const c3d::string_t & data, MbListVars & vars ); #endif // __FUNCTION_FACTORY_H