Re[4]: Библиотека форматирования marty::format
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 16.04.25 11:01
Оценка:
Здравствуйте, 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, и наверное будет толще по генерируемому коду, медленнее в работе, лишние аллокации при инициализации...

Я вообще планирую потом отполировать либу и перетащить в микроконтроллеры, там лишний раз всё это использовать не стоит
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.