Здравствуйте, Marty, Вы писали:
M>В общем, пинайте на здоровие — https://github.com/al-martyn1/marty_format
Посмотрел код а не саму идею, замечания:
defs.h
MARTY_ARG_USED — не используется в примерах, и похоже в проекте не использует, а без этого макроса сам файл не нужен
dummy.cpp — удалить
enums.h — не соберется, где вся директория marty_cpp
и сразу по виду использования, а макрос MARTY_CPP_ENUM_FLAGS_DESERIALIZE_ITEM точно нужен? Это не аналог
static inline std::map<FormattingFlags, std::string> = {
{FormattingFlags::unknow, "unknown"},
// ...
};
exceptions.h
MARTY_FORMAT_DECLARE_EXCEPTION_CLASS — непонятно для чего нужен, но ладно, внутри одного using clsBase::clsBase для наследования всех конструкторов разве не достаточно будет?
В class base_error тоже самое, ну или хотя бы default используй.
base_error(const base_error &e) = default;
base_error& operator=(const base_error& e) = default;
Похоже была мысль что есть иерархия исключений с разным m_offset, но по виду везде одинаковый и поле не используется.
marty_format.h
if ((formattingFlags&FormattingFlags::ignoreFillIndirectErrors)==0)

не читается без пробелов вокруг &
Сама идея странная, зачем имея флаг ignoreFormattingErrors всегда кидать исключения, потом ловить, потом перепрокидывать, не проще исключение просто не кидать?
utils.h
Для примера isFormatTypeChar, а почему не через switch/case, и читать и поддерживать, проще же.
removePrefix, removeSuffix, если срабатывает граничное условие, то зачем действие делать, можно сразу пустую строку вернуть
if (n>str.size())
return "";