Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lower printing of VERBATIM code. #1543

Merged
merged 1 commit into from
Oct 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/codegen/codegen_coreneuron_cpp_visitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,21 @@ std::string CodegenCoreneuronCppVisitor::process_verbatim_token(const std::strin
return get_variable_name(token, use_instance);
}

void CodegenCoreneuronCppVisitor::visit_verbatim(const Verbatim& node) {
const auto& text = node.get_statement()->eval();
printer->add_line("// VERBATIM");
const auto& result = process_verbatim_text(text);

const auto& statements = stringutils::split_string(result, '\n');
for (const auto& statement: statements) {
const auto& trimed_stmt = stringutils::trim_newline(statement);
if (trimed_stmt.find_first_not_of(' ') != std::string::npos) {
printer->add_line(trimed_stmt);
}
}
printer->add_line("// ENDVERBATIM");
}


/**
* \details This can be override in the backend. For example, parameters can be constant
Expand Down
3 changes: 2 additions & 1 deletion src/codegen/codegen_coreneuron_cpp_visitor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,7 @@ class CodegenCoreneuronCppVisitor: public CodegenCppVisitor {
* \param text The verbatim code to be processed
* \return The code with all variables renamed as needed
*/
std::string process_verbatim_text(std::string const& text) override;
std::string process_verbatim_text(std::string const& text);


/**
Expand Down Expand Up @@ -964,6 +964,7 @@ class CodegenCoreneuronCppVisitor: public CodegenCppVisitor {

void visit_derivimplicit_callback(const ast::DerivimplicitCallback& node) override;
void visit_for_netcon(const ast::ForNetcon& node) override;
void visit_verbatim(const ast::Verbatim& node) override;
void visit_watch_statement(const ast::WatchStatement& node) override;

ParamVector functor_params() override;
Expand Down
16 changes: 0 additions & 16 deletions src/codegen/codegen_cpp_visitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1049,22 +1049,6 @@ void CodegenCppVisitor::visit_function_call(const FunctionCall& node) {
}


void CodegenCppVisitor::visit_verbatim(const Verbatim& node) {
const auto& text = node.get_statement()->eval();
printer->add_line("// VERBATIM");
const auto& result = process_verbatim_text(text);

const auto& statements = stringutils::split_string(result, '\n');
for (const auto& statement: statements) {
const auto& trimed_stmt = stringutils::trim_newline(statement);
if (trimed_stmt.find_first_not_of(' ') != std::string::npos) {
printer->add_line(trimed_stmt);
}
}
printer->add_line("// ENDVERBATIM");
}


void CodegenCppVisitor::visit_update_dt(const ast::UpdateDt& node) {
// dt change statement should be pulled outside already
}
Expand Down
9 changes: 0 additions & 9 deletions src/codegen/codegen_cpp_visitor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1033,14 +1033,6 @@ class CodegenCppVisitor: public visitor::ConstAstVisitor {
*/
virtual std::string nrn_thread_internal_arguments() = 0;

/**
* Process a verbatim block for possible variable renaming
* \param text The verbatim code to be processed
* \return The code with all variables renamed as needed
*/
virtual std::string process_verbatim_text(std::string const& text) = 0;


/**
* Arguments for register_mech or point_register_mech function
*/
Expand Down Expand Up @@ -1480,7 +1472,6 @@ class CodegenCppVisitor: public visitor::ConstAstVisitor {
void visit_unary_operator(const ast::UnaryOperator& node) override;
void visit_unit(const ast::Unit& node) override;
void visit_var_name(const ast::VarName& node) override;
void visit_verbatim(const ast::Verbatim& node) override;
void visit_while_statement(const ast::WhileStatement& node) override;
void visit_update_dt(const ast::UpdateDt& node) override;
void visit_protect_statement(const ast::ProtectStatement& node) override;
Expand Down
6 changes: 3 additions & 3 deletions src/codegen/codegen_neuron_cpp_visitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -631,9 +631,9 @@ CodegenNeuronCppVisitor::function_table_parameters(const ast::FunctionTableBlock
return {params, {}};
}

/// TODO: Write for NEURON
std::string CodegenNeuronCppVisitor::process_verbatim_text(std::string const& text) {
return {};

void CodegenNeuronCppVisitor::visit_verbatim(const Verbatim& node) {
// Not implemented yet.
}


Expand Down
11 changes: 1 addition & 10 deletions src/codegen/codegen_neuron_cpp_visitor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,14 +358,6 @@ class CodegenNeuronCppVisitor: public CodegenCppVisitor {
const ast::FunctionTableBlock& /* node */) override;


/**
* Process a verbatim block for possible variable renaming
* \param text The verbatim code to be processed
* \return The code with all variables renamed as needed
*/
std::string process_verbatim_text(std::string const& text) override;


/**
* Arguments for register_mech or point_register_mech function
*/
Expand Down Expand Up @@ -768,13 +760,12 @@ class CodegenNeuronCppVisitor: public CodegenCppVisitor {
/* Overloaded visitor routines */
/****************************************************************************************/


void visit_verbatim(const ast::Verbatim& node) override;
void visit_watch_statement(const ast::WatchStatement& node) override;
void visit_for_netcon(const ast::ForNetcon& node) override;
void visit_longitudinal_diffusion_block(const ast::LongitudinalDiffusionBlock& node) override;
void visit_lon_diffuse(const ast::LonDiffuse& node) override;


public:
/****************************************************************************************/
/* Public printing routines for code generation for use in unit tests */
Expand Down
Loading