Войти
ПрограммированиеФорумОбщее

C++, enum reflection (enum.hpp) (4 стр)

Страницы: 1 2 3 4
#45
14:20, 19 дек. 2020

forwhile
> нет, налил воды на ровном месте
Нет, не воды. Нет, не на ровном)

forwhile
> смешиваешь макросы и шаблоны

С удовольствием узнаю варианты сделать такое иначе без кодогенерации

#46
10:14, 21 дек. 2020

MATov
я правильно понял, весь этот код
https://github.com/BlackMATov/enum.hpp/blob/main/headers/enum.hpp… _bitflags.hpp

чтобы сделать:

DWORD attr = flag1 | flag2;
artr |= flag3;

if (attr & flag2) {
...
}
и еще парочка операций

?

#47
10:35, 21 дек. 2020

forwhile
> я правильно понял, весь этот код
Так говоришь, будто там не 300 строчек, а 3к.

Но да, чтобы сделать именно это и ещё парочка операций. Только в моём случае ты не сможешь подставить не тот енум или опечататься делая очередной &= ~flag или (attr & flags) == flags.

#48
(Правка: 4:25) 4:24, 22 дек. 2020

Эпиковский вариант уже был?

namespace ETestTypes
{
  enum Type
  {
    Type1,
    Type2,
    Type3,
  };

  inline const TCHAR* ToString(ETestTypes::Type EnumVal)
  {
    switch (EnumVal)
    {
    case Type1:
      return TEXT("Type1");
    case Type2:
      return TEXT("Type2");
    case Type3:
      return TEXT("Type3");
    default:
      return TEXT("");
    }    
  }
}
#49
12:46, 22 дек. 2020

gamedeveloper01
>Эпиковский вариант уже был?
Смищно )
Можно подумать, что это их гениальное открытие - возвращать строку по перечислению...

#50
12:53, 22 дек. 2020

gamedeveloper01
> Эпиковский вариант уже был?
Ну вот мне надоело эти свитчи поддерживать и не забывать обновлять)

Придумать бы ещё что-то с маппингом енум на енум или енум на значение какое-то, а-то эти таблички тоже запарило постоянно поддерживать и их может быть не одна, а несколько.

#51
16:19, 22 дек. 2020

MATov
Не хватает наследования енумов, странно как эти старперы в комитете еще не догадались до этого.

#52
(Правка: 1:59) 1:55, 23 дек. 2020

nes
> Не хватает наследования енумов, странно как эти старперы в комитете еще не
> догадались до этого.

struct EBase
{
  enum Type
  {
    Type1,
    Type2,
    Max,
  };
};

struct EDerived : public EBase
{
  enum Type
  {
    Type3 = EBase::Type::Max,
    Type4,
    Max,
  };
};
#53
10:59, 23 дек. 2020

gamedeveloper01
Костыльненько.

Страницы: 1 2 3 4
ПрограммированиеФорумОбщее