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

    +55

    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
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    uint8_t const Q_ROM QF_div8Lkup[65] = {
        static_cast<uint8_t>(0), // unused location
        static_cast<uint8_t>(0), static_cast<uint8_t>(0), static_cast<uint8_t>(0),
        static_cast<uint8_t>(0), static_cast<uint8_t>(0), static_cast<uint8_t>(0),
        static_cast<uint8_t>(0), static_cast<uint8_t>(0),
        static_cast<uint8_t>(1), static_cast<uint8_t>(1), static_cast<uint8_t>(1),
        static_cast<uint8_t>(1), static_cast<uint8_t>(1), static_cast<uint8_t>(1),
        static_cast<uint8_t>(1), static_cast<uint8_t>(1),
        static_cast<uint8_t>(2), static_cast<uint8_t>(2), static_cast<uint8_t>(2),
        static_cast<uint8_t>(2), static_cast<uint8_t>(2), static_cast<uint8_t>(2),
        static_cast<uint8_t>(2), static_cast<uint8_t>(2),
        static_cast<uint8_t>(3), static_cast<uint8_t>(3), static_cast<uint8_t>(3),
        static_cast<uint8_t>(3), static_cast<uint8_t>(3), static_cast<uint8_t>(3),
        static_cast<uint8_t>(3), static_cast<uint8_t>(3),
        static_cast<uint8_t>(4), static_cast<uint8_t>(4), static_cast<uint8_t>(4),
        static_cast<uint8_t>(4), static_cast<uint8_t>(4), static_cast<uint8_t>(4),
        static_cast<uint8_t>(4), static_cast<uint8_t>(4),
        static_cast<uint8_t>(5), static_cast<uint8_t>(5), static_cast<uint8_t>(5),
        static_cast<uint8_t>(5), static_cast<uint8_t>(5), static_cast<uint8_t>(5),
        static_cast<uint8_t>(5), static_cast<uint8_t>(5),
        static_cast<uint8_t>(6), static_cast<uint8_t>(6), static_cast<uint8_t>(6),
        static_cast<uint8_t>(6), static_cast<uint8_t>(6), static_cast<uint8_t>(6),
        static_cast<uint8_t>(6), static_cast<uint8_t>(6),
        static_cast<uint8_t>(7), static_cast<uint8_t>(7), static_cast<uint8_t>(7),
        static_cast<uint8_t>(7), static_cast<uint8_t>(7), static_cast<uint8_t>(7),
        static_cast<uint8_t>(7), static_cast<uint8_t>(7)
    };
    
    // ....
    
        //! the function evaluates to TRUE if the priority set has the element n.
        bool hasElement(uint_fast8_t const n) const {
            uint_fast8_t const m =
                static_cast<uint_fast8_t>(Q_ROM_BYTE(QF_div8Lkup[n]));
            return ((m_bits[m]
                      & static_cast<uint_fast8_t>(Q_ROM_BYTE(QF_pwr2Lkup[n])))
                   != static_cast<uint_fast8_t>(0));
        }
    
        //! insert element \a n into the set, n = 1..64
        void insert(uint_fast8_t const n) {
            uint_fast8_t m =
                static_cast<uint_fast8_t>(Q_ROM_BYTE(QF_div8Lkup[n]));
            m_bits[m] |= static_cast<uint_fast8_t>(Q_ROM_BYTE(QF_pwr2Lkup[n]));
            m_bytes   |=
                static_cast<uint_fast8_t>(Q_ROM_BYTE(QF_pwr2Lkup[m
                                              + static_cast<uint_fast8_t>(1)]));
        }

    делим на 8 в индустриальном С++. это такой специальный вариант крестов где пользователям сначала лоботомию делают.

    из реализации bitset'а. insert() приведен в качестве примера.

    Запостил: Dummy00001, 11 Февраля 2015

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

    • нашел полные (и официальные) сырцы на сети:

      http://sourceforge.net/p/qpc/qpcpp/ci/master/tree/include/qpset.h

      http://sourceforge.net/p/qpc/qpcpp/ci/master/tree/qf/source/qf_pwr2.cpp
      Ответить
    • Пиздец. Неужели на этом контроллере быстрее сделать лукап из таблички чем 3 шифта вправо?
      Ответить
      • это для обычных армов и прочего.

        ирония в том что на арме шифт даже обычный мув умеет делать. только в тамбе это должно быть отдельной инструкцией.
        Ответить
    • > uint8_t const Q_ROM QF_div8Lkup[65]

      АХАХАХА Пиздец нубасы я так ржал что под стол упал, долбоёбики-параноики, везде статик касты, куча хуиты всякой типа безопасной шоб нидайбог хацкерский шифт не сделать, но при этом... СЫРОЙ МАССИВ!!!!! ААААААААА ЛОЛИЩЕЕЕЕЕЕЕЕЕ
      Ответить
      • Заметь, массив на 65 элементов, с запасом под нулябрь unused location потому что у них элементы нумеруются с единицы... В крестах. С единицы.
        Ответить
        • >> В крестах. С единицы

          А я вот наоборот в реальной жизни начал считать с ноля)
          Ответить
          • разумеется, ведь нуль - это натуральное число.
            Ответить
            • Только у пиндосов да гейропейцев. Настоящий Русский человек никогда не назовёт нуль натуральным.
              Ответить
              • Я вот вижу перед собой ровно нуль оранжевых крылатых крокодилов. Ой, я использовал нуль в счёте... O SHI~
                Ответить
                • не кроков 1, но нулевой смотри странно
                  Ответить
              • http://shad.yandex.ru/lectures/probability_1.xml
                шестая минута
                Ответить
    • вот еще красоты из хидера:
      uint8_t const u8_0 = static_cast<uint8_t>(0);
      uint8_t const u8_1 = static_cast<uint8_t>(1);
      uint8_t const u8_0x80 = static_cast<uint8_t>(0x80);
      uint8_t const u8_0x7F = static_cast<uint8_t>(0x7F);
      uint16_t const u16_0 = static_cast<uint16_t>(0);
      uint_fast8_t const uf8_0 = static_cast<uint_fast8_t>(0);
      uint_fast8_t const uf8_1 = static_cast<uint_fast8_t>(1);
      uint_fast16_t const uf16_0 = static_cast<uint_fast16_t>(0);
      uint_fast16_t const uf16_1 = static_cast<uint_fast16_t>(1);
      QTimeEvtCtr const tc_0 = static_cast<QTimeEvtCtr>(0);
      
      void       * const null_void = static_cast<void *>(0);
      QEvt const * const null_evt  = static_cast<QEvt const *>(0);
      QTimeEvt   * const null_tevt = static_cast<QTimeEvt *>(0);
      QActive    * const null_act  = static_cast<QActive *>(0);

      особая любовь у чудаков, заметил, нуллы типизированые на всё подряд заводить, а потом все reinterpret_cast'ами обвешать:
      #define QM_TRAN(tatbl_) \
          (me->qm_tran_(reinterpret_cast<QP::QMTranActTable const *>(tatbl_)))
      
      #define QM_TRAN_INIT(tatbl_) \
          (me->qm_tran_init_(reinterpret_cast<QP::QMTranActTable const *>(tatbl_)))
          
      #define QM_TRAN_HIST(history_, tatbl_) \
          (me->qm_tran_hist_((history_), \
           reinterpret_cast<QP::QMTranActTable const *>(tatbl_)))
      
      #define QM_TRAN_EP(tatbl_) \
          (me->qm_tran_ep_(reinterpret_cast<QP::QMTranActTable const *>(tatbl_)))
      
      #define QM_TRAN_XP(xp_, tatbl_) \
          (me->qm_tran_xp_((xp_), \
              reinterpret_cast<QP::QMTranActTable const *>(tatbl_)))
      Ответить

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