1. Список говнокодов пользователя Artur

    Всего: 4

  2. C++ / Говнокод #13152

    +12

    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
    template <class ToPtr,class From>
    ToPtr DynamicCast (From f)
    {
      // static check if *ToPtr is derived from f
      (void)sizeof (static_cast<From> ((ToPtr)NULL));
      // lazy precalculation
      static bool castable = dynamic_cast<ToPtr> (f)!=NULL;
      static int offset =
        int ((char *)dynamic_cast<ToPtr> (f)-(char *)f);
      return castable? (ToPtr)((char *)f+offset) : NULL;
    }
    
    // usage: TBase *ptr1 = ...; TDerived *ptr2 = DynamicCast<TDerived *> (ptr1);

    Performance oriented dynamic_cast

    Artur, 11 Июня 2013

    Комментарии (13)
  3. C++ / Говнокод #12993

    +20

    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
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    #include <iostream>
    #include <cstring>
    
    const char tag[] = "Secret tag!";
    const size_t tagSize = sizeof(tag);
    const size_t nameSize = 32;
    
    template<class T>
    struct Value
    {
        Value(const char* name, const T& data) :
    data(data)
    {
        std::strncpy(this->tag, ::tag, tagSize);
        std::strncpy(this->name, name, nameSize);
    }
    char tag[tagSize];
    char name[nameSize];
    T data;
    };
    
    int getStackDir()
    {
        char a;
        char b;
        return &b > &a ? 1 : -1;
    }
    
    template<class T>
    T getValue(const char* name)
    {
        static const size_t stackSize = 1024 * 1024;
        const int stackDir = getStackDir();
        char begin;
        for(char* p = &begin, *end = &begin - stackSize * stackDir; p != end; p -= stackDir)
        {
            Value<T>* value = (Value<T>*)p;
            if(std::strcmp(value->tag, tag) != 0) continue;
            if(std::strcmp(value->name, name) != 0) continue;
            return value->data;
        }
        return T();
    }
    
    #define SET(type, name, value) Value<type> name(#name, value)
    #define GET(type, name) getValue<type>(#name)
    
    //-----------------------------------------------------------
    
    void test()
    {
        std::cout << GET(int, x) << std::endl;
    }
    
    int main()
    {
        SET(int, x, 13);
        test();
    }

    Отсюда http://www.rsdn.ru/forum/cpp/5163916.flat#5163916

    Artur, 13 Мая 2013

    Комментарии (19)
  4. C++ / Говнокод #11814

    +20

    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
    class CRenderWindow
    {
    public:
    	/***/
    	bool IsWindow(); 
    	/***/
    };
    
    
    class CWindow : public CRenderWindow
    {
    	/***/
    };

    Код для работы с окнами. Лишнее я убрал (весь код занимает больше 500 строк).
    О чем думал человек, который это проектировал? О_о

    Artur, 21 Сентября 2012

    Комментарии (8)
  5. C++ / Говнокод #9281

    +1012

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    void Transponse()                                       // Транспонировать матрицу
       {
          m12 = m21; m13 = m31; m14 = m41;
          m21 = m12; m23 = m32; m24 = m42;
          m31 = m13; m32 = m23; m34 = m43;
          m41 = m14; m42 = m24; m43 = m34;
       }

    Artur, 31 Января 2012

    Комментарии (22)