Здравствуйте, Igore, Вы писали:
I>Да, не увидел при беглом просмотре, просто заметил что в example_*.cpp не используется
I>I>int main(int argc, char* argv[])
I>{
I> (void)(argc);
I> (void)(argv);
I>
Уже не помню, как так получилось, вероятно, что примеры начал накидывать до того, как присунул defs.h в проект, когда оно понадобилось в других местах
M>>M>>#define MARTY_CPP_ENUM_DESERIALIZE_ITEM( val, valStr ) \
M>> _m[lowerCaseConvert ? marty_cpp::toLower(std::string(valStr)) : std::string(valStr)] = val
M>>
I>Ух, так же не разобрался, но лучше в явном виде, а не через макросы
Не вижу криминала в адекватном использовании макросов, тем более, что это вообще автогенерённый код, и там нечего смотреть и отлаживать
I>а в обработке
I>I>if ((formattingFlags&FormattingFlags::ignoreFormattingErrors)==0)
I> throw; // Прокидываем исключение выше
I>
I>по виду что то лишнее, или логика такая, если ignoreErrors кидаем исключение прерывая обработку, выше ловим исключение, если ignoreErrors установлено то продолжаем обработку?
Надо приглядеться, похоже просто тупой баг, забыл отрицание
I>Нет, я про другое, вопрос про форматирование, почему
I>I>inline constexpr bool isFormatSignMarker(utf32_char_t ch)
I>{
I> return ch==utf32_char_t('-') || ch==utf32_char_t('+') /* || ch==utf32_char_t(' ') */ ;
I>}
I>
I>а не
I>I>inline constexpr bool isFormatSignMarker(utf32_char_t ch)
I>{
I> swith(ch) {
I> case '-':
I> case '+':
I> //case ' ':
I> return true;
I> default:
I> return false;
I> }
I>}
I>
Свич длиннее писать, а в чем его преимущества?
I>или вообще в декларативном виде
I>I>static inline std::set<utf32_char_t> formatSignMarker = {
I> {'-'},
I> {'+'},
I>// {' '},
I>}
I>inline bool isFormatSignMarker(utf32_char_t ch) {
I> return formatSignMarker.contains(ch);
I>}
I>
Можно бы и так, да, но это лишняя сущность — set, и наверное будет толще по генерируемому коду, медленнее в работе, лишние аллокации при инициализации...
Я вообще планирую потом отполировать либу и перетащить в микроконтроллеры, там лишний раз всё это использовать не стоит