1. C++ / Говнокод #12989

    +22

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    // поверка наличия указазанного флага в набора флагов
    bool __fastcall TfrmFieldsEditor::HasFlag(int nAFlag, int nAFlagsCollection)
    {
        bool bRetVal = false;
        std::bitset<8> bsFlagBits;
        bsFlagBits.reset();
        bsFlagBits = nAFlagsCollection;
        int nBitsCount = bsFlagBits.size();
        for(int i= 0 ; i < nBitsCount; ++i)
            {
            if(bsFlagBits[i]==1)
                {
                bsFlagBits.reset();
                bsFlagBits[i] = 1;
                if (bsFlagBits.to_ulong() == nAFlag)
                    {
                    bRetVal = true;
                    break;
                    }
                else
                    bsFlagBits = nAFlagsCollection;
                }
     
     
     
            }
        return bRetVal;
    }

    Запостил: Ulysses, 13 Мая 2013

    Комментарии (8) RSS

    • Главное, что про __fastcall не забыл.
      Ответить
      • Если не писать фастколл у каждого метода - будет медленно работать...
        Ответить
        • А чтобы работало ещё быстрее, нужно каждую строчку кода завернуть в функцию с фастколлом.
          Ответить
    • Давно такого эпичного говна не видел. Подскажите, куда идти работать, чтобы научили так писать?
      Ответить
    • Это автор так пошутил, надеюсь?
      Ответить
      • Ну, автор был несколько своеобразный человек, но это код из работающего проекта. Там еще были похожие функции для установки и сброса флага, но они не столь впечатляющи.
        Ответить

    Добавить комментарий