BashSpark
Loading...
Searching...
No Matches
command_math.cpp File Reference

Implements command bb::command_math. More...

#include "BashSpark/command/command_math.h"
#include <map>
#include <optional>
#include <boost/safe_numerics/safe_integer.hpp>
#include "BashSpark/tools/shell_def.h"
Include dependency graph for command_math.cpp:

Classes

struct  bs::math_error
 Exception representing a math-related error during expression evaluation. More...
 
struct  bs::math_parser
 Structure to help class command_math parse it's parameters. More...
 
struct  bs::math_parser::expvar
 Structure to hold variable information in sequence functions. More...
 
struct  bs::math_parser::depth_guard
 Manages depth of a math_parser instance during its lifetime. More...
 

Namespaces

namespace  bs
 BashSpark main namespace.
 

Typedefs

using bs::safe_int = boost::safe_numerics::safe< std::int64_t >
 Sugar syntax: typedef of boost::safe_numerics::safe<std::int64_t>
 

Enumerations

enum class  bs::math_operator {
  bs::MO_NONE , bs::MO_PLUS , bs::MO_MINUS , bs::MO_MULT ,
  bs::MO_DIV , bs::MO_MOD , bs::MO_POW , bs::MO_EOF ,
  bs::MO_FACTORIAL , bs::MO_SIGN , bs::MO_ABS , bs::MO_SUM ,
  bs::MO_PRODUCT , bs::MO_FUNC_ARG_SEP , bs::MO_OPEN_PARENTHESIS , bs::MO_CLOSE_PARENTHESIS
}
 Enumeration of all supported mathematical operators. More...
 

Detailed Description

Implements command bb::command_math.

Date
Created on 2/11/25
Author
Dante Doménech Martínez

This file is part of BashBabel. Copyright (C) 2025 Dante Doménech Martínez

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program 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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.