![]() |
User Guide
|
TODO. More...
TODO.
Definition at line 38 of file unary_operator.hpp.
#include <unary_operator.hpp>
Public Member Functions | |
bool | is_unary_operator () const noexcept override |
Check if the ast node is an instance of ast::UnaryOperator. More... | |
UnaryOperator * | clone () const override |
Return a copy of the current node. More... | |
std::string | eval () const |
Return enum value in string form. More... | |
Ctor & dtor | |
UnaryOperator (UnaryOp value) | |
UnaryOperator (const UnaryOperator &obj) | |
copy constructor implementation More... | |
UnaryOperator ()=default | |
virtual | ~UnaryOperator ()=default |
Getters | |
AstNodeType | get_node_type () const noexcept override |
Return type (ast::AstNodeType) of ast node. More... | |
std::string | get_node_type_name () const noexcept override |
Return type (ast::AstNodeType) of ast node as std::string. More... | |
std::shared_ptr< Ast > | get_shared_ptr () override |
Get std::shared_ptr from this pointer of the current ast node. More... | |
std::shared_ptr< const Ast > | get_shared_ptr () const override |
Get std::shared_ptr from this pointer of the current ast node. More... | |
const ModToken * | get_token () const noexcept override |
Return associated token for the current ast node. More... | |
UnaryOp | get_value () const noexcept |
Getter for member variable UnaryOperator::value. More... | |
Setters | |
void | set_token (const ModToken &tok) |
Set token for the current ast node. More... | |
void | set_value (UnaryOp value) |
Setter for member variable UnaryOperator::value. More... | |
Visitor | |
void | visit_children (visitor::Visitor &v) override |
visit children i.e. More... | |
void | visit_children (visitor::ConstVisitor &v) const override |
visit children i.e. More... | |
void | accept (visitor::Visitor &v) override |
accept (or visit) the current AST node using provided visitor More... | |
void | accept (visitor::ConstVisitor &v) const override |
accept (or visit) the current AST node using provided visitor More... | |
![]() | |
bool | is_expression () const noexcept override |
Check if the ast node is an instance of ast::Expression. More... | |
virtual | ~Expression ()=default |
![]() | |
bool | is_node () const noexcept override |
Check if the ast node is an instance of ast::Node. More... | |
virtual | ~Node ()=default |
![]() | |
virtual bool | is_ast () const noexcept |
Check if the ast node is an instance of ast::Ast. More... | |
virtual bool | is_statement () const noexcept |
Check if the ast node is an instance of ast::Statement. More... | |
virtual bool | is_block () const noexcept |
Check if the ast node is an instance of ast::Block. More... | |
virtual bool | is_identifier () const noexcept |
Check if the ast node is an instance of ast::Identifier. More... | |
virtual bool | is_number () const noexcept |
Check if the ast node is an instance of ast::Number. More... | |
virtual bool | is_string () const noexcept |
Check if the ast node is an instance of ast::String. More... | |
virtual bool | is_integer () const noexcept |
Check if the ast node is an instance of ast::Integer. More... | |
virtual bool | is_float () const noexcept |
Check if the ast node is an instance of ast::Float. More... | |
virtual bool | is_double () const noexcept |
Check if the ast node is an instance of ast::Double. More... | |
virtual bool | is_boolean () const noexcept |
Check if the ast node is an instance of ast::Boolean. More... | |
virtual bool | is_name () const noexcept |
Check if the ast node is an instance of ast::Name. More... | |
virtual bool | is_prime_name () const noexcept |
Check if the ast node is an instance of ast::PrimeName. More... | |
virtual bool | is_indexed_name () const noexcept |
Check if the ast node is an instance of ast::IndexedName. More... | |
virtual bool | is_var_name () const noexcept |
Check if the ast node is an instance of ast::VarName. More... | |
virtual bool | is_argument () const noexcept |
Check if the ast node is an instance of ast::Argument. More... | |
virtual bool | is_react_var_name () const noexcept |
Check if the ast node is an instance of ast::ReactVarName. More... | |
virtual bool | is_read_ion_var () const noexcept |
Check if the ast node is an instance of ast::ReadIonVar. More... | |
virtual bool | is_write_ion_var () const noexcept |
Check if the ast node is an instance of ast::WriteIonVar. More... | |
virtual bool | is_nonspecific_cur_var () const noexcept |
Check if the ast node is an instance of ast::NonspecificCurVar. More... | |
virtual bool | is_electrode_cur_var () const noexcept |
Check if the ast node is an instance of ast::ElectrodeCurVar. More... | |
virtual bool | is_range_var () const noexcept |
Check if the ast node is an instance of ast::RangeVar. More... | |
virtual bool | is_global_var () const noexcept |
Check if the ast node is an instance of ast::GlobalVar. More... | |
virtual bool | is_pointer_var () const noexcept |
Check if the ast node is an instance of ast::PointerVar. More... | |
virtual bool | is_random_var () const noexcept |
Check if the ast node is an instance of ast::RandomVar. More... | |
virtual bool | is_bbcore_pointer_var () const noexcept |
Check if the ast node is an instance of ast::BbcorePointerVar. More... | |
virtual bool | is_extern_var () const noexcept |
Check if the ast node is an instance of ast::ExternVar. More... | |
virtual bool | is_param_block () const noexcept |
Check if the ast node is an instance of ast::ParamBlock. More... | |
virtual bool | is_independent_block () const noexcept |
Check if the ast node is an instance of ast::IndependentBlock. More... | |
virtual bool | is_assigned_block () const noexcept |
Check if the ast node is an instance of ast::AssignedBlock. More... | |
virtual bool | is_state_block () const noexcept |
Check if the ast node is an instance of ast::StateBlock. More... | |
virtual bool | is_initial_block () const noexcept |
Check if the ast node is an instance of ast::InitialBlock. More... | |
virtual bool | is_constructor_block () const noexcept |
Check if the ast node is an instance of ast::ConstructorBlock. More... | |
virtual bool | is_destructor_block () const noexcept |
Check if the ast node is an instance of ast::DestructorBlock. More... | |
virtual bool | is_statement_block () const noexcept |
Check if the ast node is an instance of ast::StatementBlock. More... | |
virtual bool | is_derivative_block () const noexcept |
Check if the ast node is an instance of ast::DerivativeBlock. More... | |
virtual bool | is_linear_block () const noexcept |
Check if the ast node is an instance of ast::LinearBlock. More... | |
virtual bool | is_non_linear_block () const noexcept |
Check if the ast node is an instance of ast::NonLinearBlock. More... | |
virtual bool | is_discrete_block () const noexcept |
Check if the ast node is an instance of ast::DiscreteBlock. More... | |
virtual bool | is_function_table_block () const noexcept |
Check if the ast node is an instance of ast::FunctionTableBlock. More... | |
virtual bool | is_function_block () const noexcept |
Check if the ast node is an instance of ast::FunctionBlock. More... | |
virtual bool | is_procedure_block () const noexcept |
Check if the ast node is an instance of ast::ProcedureBlock. More... | |
virtual bool | is_net_receive_block () const noexcept |
Check if the ast node is an instance of ast::NetReceiveBlock. More... | |
virtual bool | is_solve_block () const noexcept |
Check if the ast node is an instance of ast::SolveBlock. More... | |
virtual bool | is_breakpoint_block () const noexcept |
Check if the ast node is an instance of ast::BreakpointBlock. More... | |
virtual bool | is_before_block () const noexcept |
Check if the ast node is an instance of ast::BeforeBlock. More... | |
virtual bool | is_after_block () const noexcept |
Check if the ast node is an instance of ast::AfterBlock. More... | |
virtual bool | is_ba_block () const noexcept |
Check if the ast node is an instance of ast::BABlock. More... | |
virtual bool | is_for_netcon () const noexcept |
Check if the ast node is an instance of ast::ForNetcon. More... | |
virtual bool | is_kinetic_block () const noexcept |
Check if the ast node is an instance of ast::KineticBlock. More... | |
virtual bool | is_unit_block () const noexcept |
Check if the ast node is an instance of ast::UnitBlock. More... | |
virtual bool | is_constant_block () const noexcept |
Check if the ast node is an instance of ast::ConstantBlock. More... | |
virtual bool | is_neuron_block () const noexcept |
Check if the ast node is an instance of ast::NeuronBlock. More... | |
virtual bool | is_unit () const noexcept |
Check if the ast node is an instance of ast::Unit. More... | |
virtual bool | is_double_unit () const noexcept |
Check if the ast node is an instance of ast::DoubleUnit. More... | |
virtual bool | is_local_var () const noexcept |
Check if the ast node is an instance of ast::LocalVar. More... | |
virtual bool | is_limits () const noexcept |
Check if the ast node is an instance of ast::Limits. More... | |
virtual bool | is_number_range () const noexcept |
Check if the ast node is an instance of ast::NumberRange. More... | |
virtual bool | is_constant_var () const noexcept |
Check if the ast node is an instance of ast::ConstantVar. More... | |
virtual bool | is_binary_operator () const noexcept |
Check if the ast node is an instance of ast::BinaryOperator. More... | |
virtual bool | is_reaction_operator () const noexcept |
Check if the ast node is an instance of ast::ReactionOperator. More... | |
virtual bool | is_paren_expression () const noexcept |
Check if the ast node is an instance of ast::ParenExpression. More... | |
virtual bool | is_binary_expression () const noexcept |
Check if the ast node is an instance of ast::BinaryExpression. More... | |
virtual bool | is_diff_eq_expression () const noexcept |
Check if the ast node is an instance of ast::DiffEqExpression. More... | |
virtual bool | is_unary_expression () const noexcept |
Check if the ast node is an instance of ast::UnaryExpression. More... | |
virtual bool | is_non_lin_equation () const noexcept |
Check if the ast node is an instance of ast::NonLinEquation. More... | |
virtual bool | is_lin_equation () const noexcept |
Check if the ast node is an instance of ast::LinEquation. More... | |
virtual bool | is_function_call () const noexcept |
Check if the ast node is an instance of ast::FunctionCall. More... | |
virtual bool | is_watch () const noexcept |
Check if the ast node is an instance of ast::Watch. More... | |
virtual bool | is_ba_block_type () const noexcept |
Check if the ast node is an instance of ast::BABlockType. More... | |
virtual bool | is_unit_def () const noexcept |
Check if the ast node is an instance of ast::UnitDef. More... | |
virtual bool | is_factor_def () const noexcept |
Check if the ast node is an instance of ast::FactorDef. More... | |
virtual bool | is_valence () const noexcept |
Check if the ast node is an instance of ast::Valence. More... | |
virtual bool | is_unit_state () const noexcept |
Check if the ast node is an instance of ast::UnitState. More... | |
virtual bool | is_local_list_statement () const noexcept |
Check if the ast node is an instance of ast::LocalListStatement. More... | |
virtual bool | is_model () const noexcept |
Check if the ast node is an instance of ast::Model. More... | |
virtual bool | is_define () const noexcept |
Check if the ast node is an instance of ast::Define. More... | |
virtual bool | is_include () const noexcept |
Check if the ast node is an instance of ast::Include. More... | |
virtual bool | is_param_assign () const noexcept |
Check if the ast node is an instance of ast::ParamAssign. More... | |
virtual bool | is_assigned_definition () const noexcept |
Check if the ast node is an instance of ast::AssignedDefinition. More... | |
virtual bool | is_conductance_hint () const noexcept |
Check if the ast node is an instance of ast::ConductanceHint. More... | |
virtual bool | is_expression_statement () const noexcept |
Check if the ast node is an instance of ast::ExpressionStatement. More... | |
virtual bool | is_protect_statement () const noexcept |
Check if the ast node is an instance of ast::ProtectStatement. More... | |
virtual bool | is_from_statement () const noexcept |
Check if the ast node is an instance of ast::FromStatement. More... | |
virtual bool | is_while_statement () const noexcept |
Check if the ast node is an instance of ast::WhileStatement. More... | |
virtual bool | is_if_statement () const noexcept |
Check if the ast node is an instance of ast::IfStatement. More... | |
virtual bool | is_else_if_statement () const noexcept |
Check if the ast node is an instance of ast::ElseIfStatement. More... | |
virtual bool | is_else_statement () const noexcept |
Check if the ast node is an instance of ast::ElseStatement. More... | |
virtual bool | is_watch_statement () const noexcept |
Check if the ast node is an instance of ast::WatchStatement. More... | |
virtual bool | is_mutex_lock () const noexcept |
Check if the ast node is an instance of ast::MutexLock. More... | |
virtual bool | is_mutex_unlock () const noexcept |
Check if the ast node is an instance of ast::MutexUnlock. More... | |
virtual bool | is_conserve () const noexcept |
Check if the ast node is an instance of ast::Conserve. More... | |
virtual bool | is_compartment () const noexcept |
Check if the ast node is an instance of ast::Compartment. More... | |
virtual bool | is_lon_diffuse () const noexcept |
Check if the ast node is an instance of ast::LonDiffuse. More... | |
virtual bool | is_reaction_statement () const noexcept |
Check if the ast node is an instance of ast::ReactionStatement. More... | |
virtual bool | is_lag_statement () const noexcept |
Check if the ast node is an instance of ast::LagStatement. More... | |
virtual bool | is_constant_statement () const noexcept |
Check if the ast node is an instance of ast::ConstantStatement. More... | |
virtual bool | is_table_statement () const noexcept |
Check if the ast node is an instance of ast::TableStatement. More... | |
virtual bool | is_suffix () const noexcept |
Check if the ast node is an instance of ast::Suffix. More... | |
virtual bool | is_useion () const noexcept |
Check if the ast node is an instance of ast::Useion. More... | |
virtual bool | is_nonspecific () const noexcept |
Check if the ast node is an instance of ast::Nonspecific. More... | |
virtual bool | is_electrode_current () const noexcept |
Check if the ast node is an instance of ast::ElectrodeCurrent. More... | |
virtual bool | is_range () const noexcept |
Check if the ast node is an instance of ast::Range. More... | |
virtual bool | is_global () const noexcept |
Check if the ast node is an instance of ast::Global. More... | |
virtual bool | is_random_var_list () const noexcept |
Check if the ast node is an instance of ast::RandomVarList. More... | |
virtual bool | is_pointer () const noexcept |
Check if the ast node is an instance of ast::Pointer. More... | |
virtual bool | is_bbcore_pointer () const noexcept |
Check if the ast node is an instance of ast::BbcorePointer. More... | |
virtual bool | is_external () const noexcept |
Check if the ast node is an instance of ast::External. More... | |
virtual bool | is_thread_safe () const noexcept |
Check if the ast node is an instance of ast::ThreadSafe. More... | |
virtual bool | is_verbatim () const noexcept |
Check if the ast node is an instance of ast::Verbatim. More... | |
virtual bool | is_line_comment () const noexcept |
Check if the ast node is an instance of ast::LineComment. More... | |
virtual bool | is_block_comment () const noexcept |
Check if the ast node is an instance of ast::BlockComment. More... | |
virtual bool | is_ontology_statement () const noexcept |
Check if the ast node is an instance of ast::OntologyStatement. More... | |
virtual bool | is_program () const noexcept |
Check if the ast node is an instance of ast::Program. More... | |
virtual bool | is_nrn_state_block () const noexcept |
Check if the ast node is an instance of ast::NrnStateBlock. More... | |
virtual bool | is_eigen_newton_solver_block () const noexcept |
Check if the ast node is an instance of ast::EigenNewtonSolverBlock. More... | |
virtual bool | is_eigen_linear_solver_block () const noexcept |
Check if the ast node is an instance of ast::EigenLinearSolverBlock. More... | |
virtual bool | is_cvode_block () const noexcept |
Check if the ast node is an instance of ast::CvodeBlock. More... | |
virtual bool | is_longitudinal_diffusion_block () const noexcept |
Check if the ast node is an instance of ast::LongitudinalDiffusionBlock. More... | |
virtual bool | is_wrapped_expression () const noexcept |
Check if the ast node is an instance of ast::WrappedExpression. More... | |
virtual bool | is_derivimplicit_callback () const noexcept |
Check if the ast node is an instance of ast::DerivimplicitCallback. More... | |
virtual bool | is_solution_expression () const noexcept |
Check if the ast node is an instance of ast::SolutionExpression. More... | |
virtual bool | is_update_dt () const noexcept |
Check if the ast node is an instance of ast::UpdateDt. More... | |
virtual Ast * | get_parent () const |
Parent getter. More... | |
virtual void | set_parent (Ast *p) |
Parent setter. More... | |
Ast ()=default | |
virtual | ~Ast ()=default |
virtual std::string | get_nmodl_name () const |
Return NMODL statement of ast node as std::string. More... | |
virtual std::string | get_node_name () const |
Return name of of the node. More... | |
virtual symtab::SymbolTable * | get_symbol_table () const |
Return associated symbol table for the AST node. More... | |
virtual std::shared_ptr< StatementBlock > | get_statement_block () const |
Return associated statement block for the AST node. More... | |
virtual void | set_symbol_table (symtab::SymbolTable *symtab) |
Set symbol table for the AST node. More... | |
virtual void | set_name (const std::string &name) |
Set name for the AST node. More... | |
virtual void | negate () |
Negate the value of AST node. More... | |
Private Member Functions | |
void | set_parent_in_children () |
Set this object as parent for all the children. More... | |
Private Attributes | |
UnaryOp | value |
TODO. More... | |
std::shared_ptr< ModToken > | token |
token with location information More... | |
|
explicit |
nmodl::ast::UnaryOperator::UnaryOperator | ( | const UnaryOperator & | obj | ) |
|
default |
|
virtualdefault |
|
overridevirtual |
accept (or visit) the current AST node using provided visitor
Instead of visiting children of AST node, like Ast::visit_children, accept allows to visit the current node itself using provided concrete visitor.
v | Concrete visitor that will be used to recursively visit node |
Reimplemented from nmodl::ast::Expression.
|
overridevirtual |
accept (or visit) the current AST node using provided visitor
Instead of visiting children of AST node, like Ast::visit_children, accept allows to visit the current node itself using provided concrete visitor.
v | Concrete visitor that will be used to recursively visit node |
Reimplemented from nmodl::ast::Expression.
|
inlineoverridevirtual |
Return a copy of the current node.
Recursively make a new copy/clone of the current node including all members and return a pointer to the node. This is used for passes like nmodl::visitor::InlineVisitor where nodes are cloned in the ast.
Reimplemented from nmodl::ast::Expression.
Definition at line 73 of file unary_operator.hpp.
|
inline |
Return enum value in string form.
Enum variables (e.g. ast::BinaryOp, ast::UnitStateType) have string representation when they are converted from AST back to NMODL. This method is used to return corresponding string representation.
Definition at line 214 of file unary_operator.hpp.
|
inlineoverridevirtualnoexcept |
Return type (ast::AstNodeType) of ast node.
Every node in the ast has a type defined in ast::AstNodeType and this function is used to retrieve the same.
Reimplemented from nmodl::ast::Expression.
Definition at line 91 of file unary_operator.hpp.
|
inlineoverridevirtualnoexcept |
Return type (ast::AstNodeType) of ast node as std::string.
Every node in the ast has a type defined in ast::AstNodeType. This type name can be returned as a std::string for printing node to text/json form.
Reimplemented from nmodl::ast::Expression.
Definition at line 106 of file unary_operator.hpp.
|
inlineoverridevirtual |
Get std::shared_ptr from this
pointer of the current ast node.
Reimplemented from nmodl::ast::Expression.
Definition at line 121 of file unary_operator.hpp.
|
inlineoverridevirtual |
Get std::shared_ptr from this
pointer of the current ast node.
Reimplemented from nmodl::ast::Expression.
Definition at line 114 of file unary_operator.hpp.
|
inlineoverridevirtualnoexcept |
Return associated token for the current ast node.
Not all ast nodes have token information. For example, nmodl::visitor::NeuronSolveVisitor can insert new nodes in the ast as a solution of ODEs. In this case, we return nullptr to store in the nmodl::symtab::SymbolTable.
Reimplemented from nmodl::ast::Ast.
Definition at line 134 of file unary_operator.hpp.
|
inlinenoexcept |
Getter for member variable UnaryOperator::value.
Definition at line 143 of file unary_operator.hpp.
|
inlineoverridevirtualnoexcept |
Check if the ast node is an instance of ast::UnaryOperator.
Reimplemented from nmodl::ast::Ast.
Definition at line 58 of file unary_operator.hpp.
|
private |
Set this object as parent for all the children.
set this parent in the children
This should be called in every object (with children) constructor to set parents. Since it is called only in the constructors it should not be virtual to avoid ambiguities (issue #295).
|
inline |
Set token for the current ast node.
Definition at line 153 of file unary_operator.hpp.
void nmodl::ast::UnaryOperator::set_value | ( | UnaryOp | value | ) |
Setter for member variable UnaryOperator::value.
|
overridevirtual |
visit children i.e.
member variables of current node using provided visitor
Different nodes in the AST have different members (i.e. children). This method recursively visits children using provided visitor.
v | Concrete constant visitor that will be used to recursively visit children |
Reimplemented from nmodl::ast::Expression.
|
overridevirtual |
visit children i.e.
UnaryOperator member functions definition.
member variables of current node using provided visitor
Different nodes in the AST have different members (i.e. children). This method recursively visits children using provided visitor.
v | Concrete visitor that will be used to recursively visit children |
Reimplemented from nmodl::ast::Expression.
|
private |
token with location information
Definition at line 43 of file unary_operator.hpp.
|
private |
TODO.
Definition at line 41 of file unary_operator.hpp.