8 #include <morphio/mut/modifiers.h>
9 #include <morphio/mut/section.h>
16 void set_raise_warnings(
bool is_raise);
17 void set_ignored_warning(Warning warning,
bool ignore =
true);
18 void set_ignored_warning(
const std::vector<Warning>& warning,
bool ignore =
true);
20 void printError(Warning warning,
const std::string& msg);
23 enum ErrorLevel { INFO, WARNING, ERROR };
28 : _filename(filename) {}
30 void setLineNumber(uint32_t sectionId,
unsigned int line) {
31 _lineNumbers[sectionId] =
static_cast<int>(line);
34 int32_t getLineNumber(uint32_t sectionId)
const {
36 return _lineNumbers.at(sectionId);
37 }
catch (
const std::out_of_range&) {
41 std::string _filename;
44 std::map<unsigned int, int> _lineNumbers;
47 static std::set<Warning> _ignoredWarnings;
52 , type(SECTION_UNDEFINED)
56 explicit Sample(
const char* line,
unsigned int lineNumber_)
57 : lineNumber(lineNumber_) {
60 #ifdef MORPHIO_USE_DOUBLE
61 const auto format =
"%20u%20d%20lg%20lg%20lg%20lg%20d";
63 const auto format =
"%20u%20d%20f%20f%20f%20f%20d";
75 type =
static_cast<SectionType
>(int_type);
76 diameter = radius * 2;
85 unsigned int lineNumber;
100 std::string errorLink(
long unsigned int lineNumber, ErrorLevel errorLevel)
const {
101 std::map<ErrorLevel, std::string> SEVERITY{{ErrorLevel::INFO,
"info"},
102 {ErrorLevel::WARNING,
"warning"},
103 {ErrorLevel::ERROR,
"error"}};
105 const std::map<ErrorLevel, std::string> COLOR{{ErrorLevel::INFO,
"\033[1;34m"},
106 {ErrorLevel::WARNING,
"\033[1;33m"},
107 {ErrorLevel::ERROR,
"\033[1;31m"}};
109 const std::string COLOR_END(
"\033[0m");
111 return COLOR.at(errorLevel) + _uri +
":" + std::to_string(lineNumber) +
":" +
112 SEVERITY.at(errorLevel) + COLOR_END;
115 std::string errorMsg(
long unsigned int lineNumber,
116 ErrorLevel errorLevel,
117 std::string msg =
"")
const;
123 std::string ERROR_OPENING_FILE()
const;
125 std::string ERROR_LINE_NON_PARSABLE(
long unsigned int lineNumber)
const;
127 std::string ERROR_UNSUPPORTED_SECTION_TYPE(
long unsigned int lineNumber,
128 const SectionType& type)
const;
130 std::string ERROR_UNSUPPORTED_VASCULATURE_SECTION_TYPE(
long unsigned int lineNumber,
131 const VascularSectionType& type)
const;
133 std::string ERROR_MULTIPLE_SOMATA(
const std::vector<Sample>& somata)
const;
135 std::string ERROR_MISSING_PARENT(
const Sample& sample)
const;
137 std::string ERROR_SOMA_BIFURCATION(
const Sample& sample,
138 const std::vector<Sample>& children)
const;
140 std::string ERROR_SOMA_WITH_NEURITE_PARENT(
const Sample& sample)
const;
142 std::string ERROR_REPEATED_ID(
const Sample& originalSample,
const Sample& newSample)
const;
144 std::string ERROR_SELF_PARENT(
const Sample& sample)
const;
146 std::string ERROR_NOT_IMPLEMENTED_UNDEFINED_SOMA(
const std::string&)
const;
148 std::string ERROR_MISSING_MITO_PARENT(
int mitoParentId)
const;
153 std::string ERROR_SOMA_ALREADY_DEFINED(
long unsigned int lineNumber)
const;
155 std::string ERROR_PARSING_POINT(
long unsigned int lineNumber,
const std::string& point)
const;
157 std::string ERROR_UNKNOWN_TOKEN(
long unsigned int lineNumber,
const std::string& token)
const;
159 std::string ERROR_UNEXPECTED_TOKEN(
long unsigned int lineNumber,
160 const std::string& expected,
161 const std::string& got,
162 const std::string& msg)
const;
164 std::string ERROR_EOF_REACHED(
long unsigned int lineNumber)
const;
166 std::string ERROR_EOF_IN_NEURITE(
long unsigned int lineNumber)
const;
168 std::string ERROR_EOF_UNBALANCED_PARENS(
long unsigned int lineNumber)
const;
170 std::string ERROR_UNCOMPATIBLE_FLAGS(morphio::Option flag1, morphio::Option flag2)
const;
176 std::string ERROR_WRONG_EXTENSION(
const std::string& filename)
const;
178 std::string ERROR_VECTOR_LENGTH_MISMATCH(
const std::string& vec1,
180 const std::string& vec2,
181 size_t length2)
const;
183 std::string ERROR_PERIMETER_DATA_NOT_WRITABLE();
184 std::string ERROR_ONLY_CHILD_SWC_WRITER(
unsigned int parentId)
const;
191 std::string WARNING_MITOCHONDRIA_WRITE_NOT_SUPPORTED()
const;
192 std::string WARNING_WRITE_NO_SOMA()
const;
193 std::string WARNING_WRITE_EMPTY_MORPHOLOGY()
const;
194 std::string WARNING_NO_SOMA_FOUND()
const;
195 std::string WARNING_ZERO_DIAMETER(
const Sample& sample)
const;
196 std::string WARNING_DISCONNECTED_NEURITE(
const Sample& sample)
const;
197 std::string WARNING_WRONG_DUPLICATE(
const std::shared_ptr<morphio::mut::Section>& current,
198 const std::shared_ptr<morphio::mut::Section>& parent)
const;
199 std::string WARNING_APPENDING_EMPTY_SECTION(std::shared_ptr<morphio::mut::Section>);
200 std::string WARNING_ONLY_CHILD(
const DebugInfo& info,
201 unsigned int parentId,
202 unsigned int childId)
const;
204 std::string WARNING_NEUROMORPHO_SOMA_NON_CONFORM(
const Sample& root,
205 const Sample& child1,
206 const Sample& child2);
208 std::string WARNING_WRONG_ROOT_POINT(
const std::vector<Sample>& children)
const;
Definition: errorMessages.h:89
static bool isIgnored(Warning warning)
Definition: endoplasmic_reticulum.h:5
void set_maximum_warnings(int n_warnings)
Definition: errorMessages.h:25
Definition: errorMessages.h:49