mmCEsim 0.3.0
mmWave Channel Estimation Simulation
alg.cpp File Reference

Implementation of class Alg. More...

#include "export/alg.h"
Include dependency graph for alg.cpp:

Macros

#define SWITCH_FUNC   if (false) {
 
#define CASE(_func_name__)
 
#define DEFAULT
 
#define END_SWITCH   }
 
#define LANG_CPP   if (lang == "cpp") {
 
#define LANG_PY
 
#define LANG_M
 
#define END_LANG
 
#define ERROR(msg)   _errors.push_back({ msg, _raw_strings[i], _line_nos[i] })
 
#define WARNING(msg)   _warnings.push_back({ msg, _raw_strings[i], _line_nos[i] })
 
#define INDENT   _indent(_indent_size)
 
#define _m(_str__)   _macro.replaceMacro(_str__, _job_cnt, _alg_cnt)
 
#define _mi(_i__)   _m(line.params(_i__).value)
 
#define _ms(_s__)   _m(line[_s__])
 
#define APPLY_KEYS(_func_name__)
 
#define RECOVER_PROCESS
 

Detailed Description

Implementation of class Alg.

Author
Wuqiong Zhao (wqzha.nosp@m.o@se.nosp@m.u.edu.nosp@m..cn)
Version
0.3.0
Date
2024-01-21

Macro Definition Documentation

◆ _m

#define _m (   _str__)    _macro.replaceMacro(_str__, _job_cnt, _alg_cnt)

◆ _mi

#define _mi (   _i__)    _m(line.params(_i__).value)

◆ _ms

#define _ms (   _s__)    _m(line[_s__])

◆ APPLY_KEYS

#define APPLY_KEYS (   _func_name__)
Value:
if (!_applyKey(line, keys)) ERROR("More parameters than expected in '"s + _func_name__ + "'."); \
if (line.hasRepeatedKey()) ERROR("Repeated key in '"s + _func_name__ + "'."); \
if (line.hasUnknownKey(keys, unknown_key)) \
ERROR("Unknown key '"s + unknown_key + "' in Function '"s + _func_name__ + "'.");
#define ERROR(msg)
Definition: alg.cpp:74

◆ CASE

#define CASE (   _func_name__)
Value:
} \
else if (func == _func_name__) {

◆ DEFAULT

#define DEFAULT
Value:
} \
else {

◆ END_LANG

#define END_LANG
Value:
} \
else throw("Unknown language " + lang + ".");

◆ END_SWITCH

#define END_SWITCH   }

◆ ERROR

#define ERROR (   msg)    _errors.push_back({ msg, _raw_strings[i], _line_nos[i] })

◆ INDENT

#define INDENT   _indent(_indent_size)

◆ LANG_CPP

#define LANG_CPP   if (lang == "cpp") {

◆ LANG_M

#define LANG_M
Value:
} \
else if (lang == "matlab" || lang == "octave") {

◆ LANG_PY

#define LANG_PY
Value:
} \
else if (lang == "py") {

◆ RECOVER_PROCESS

#define RECOVER_PROCESS
Value:
if (_recover_cnt == 0 && _recover_cnt_var.empty()) { \
WARNING( \
fmt::format("No 'RECOVER' function found in estimation (Job: {}, Alg: {}).", _job_cnt + 1, _alg_cnt + 1)); \
_log.war() << "No 'RECOVER' function found in estimation (Job: " << _job_cnt + 1 << ", Alg: " << _alg_cnt \
<< ")." << std::endl; \
} else { \
std::string recover_cnt = std::to_string(_recover_cnt); \
if (!_recover_cnt_var.empty()) { \
/* add each element inside _recover_cnt_var to recover_cnt, with a pair of parentheses */ \
recover_cnt = \
std::accumulate(_recover_cnt_var.begin(), _recover_cnt_var.end(), recover_cnt, \
[](const std::string& a, const std::string& b) { return a + " + (" + b + ")"; }); \
} \
_log.info() << "Found " << recover_cnt << " 'RECOVER' function(s) in estimation (Job: " << _job_cnt + 1 \
<< ", Alg: " << _alg_cnt << ")." << std::endl; \
\
LANG_CPP \
if (recover_cnt != "1") { \
f << "NMSE" << _job_cnt << "(ii, " << _alg_cnt - 1 << ") /= (" << recover_cnt << ");\n"; \
} \
f << "}"; \
END_LANG \
} \
_recover_cnt = 0; \
_recover_cnt_var.clear();
static std::string to_string(const T &x)
Change a number to string.
Definition: utils.h:203

◆ SWITCH_FUNC

#define SWITCH_FUNC   if (false) {

◆ WARNING

#define WARNING (   msg)    _warnings.push_back({ msg, _raw_strings[i], _line_nos[i] })