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

    Всего: 26

  2. Си / Говнокод #15828

    +133

    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
    ...
    int
    (mblen)(const char *s, size_t n)
    {
    	if (s == (const char *)NULL) return 0;	/* no state dependent codings */
    	if (n <= 0) return 0;
    	return (*s != 0);
    }
    ...
     int
    mbtowc(wchar_t *pwc, register const char *s, size_t n)
    {
    	if (s == (const char *)NULL) return 0;
    	if (n <= 0) return 0;
    	if (pwc) *pwc = *s;
    	return (*s != 0);
    }
    ...
     int
    wctomb(char *s, wchar_t wchar)
    {
    	if (!s) return 0;		/* no state dependent codings */
    
    	*s = wchar;
    	return 1;
    }

    THE AMSTERDAM COMPILER KIT V6.0pre4
    ===================================

    © 1987-2005 Vrije Universiteit, Amsterdam
    2010-08-08

    ...

    SUPPORT
    =======

    Languages:

    ANSI C, Pascal, Modula 2. K&R is supported via the ANSI C compiler.



    А где здесь, собсно, ANSI C?

    Pythoner, 23 Апреля 2014

    Комментарии (8)
  3. Си / Говнокод #15734

    +133

    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
    #ifndef _TOGGLE_H_
    #define _TOGGLE_H_
    
    #include <winbase.h>
    #include "Python.h"
    
    #define ID(X) "id(" #X ")"
    
    #define SET_OBJ_POINTER(OBJ, NAME)\
        OBJ = (PyObject *)PyLong_AsLong\    
        (PyRun_String(ID(NAME), Py_eval_input,\
        PyEval_GetGlobals(), PyEval_GetLocals()))
    
    //////////////////////////////////////////////////////
    
    PyObject * __Py_None__;
    PyObject * __Py_True__;
    PyObject * __Py_False__;
    PyObject * __Py_NotImplemented__;
    
    #undef  Py_None
    #undef  Py_True
    #undef  Py_False
    #undef  Py_NotImplemented
    
    #define Py_None __Py_None__
    #define Py_True __Py_True__
    #define Py_False __Py_False__
    #define Py_NotImplemented __Py_NotImplemented__
    
    //////////////////////////////////////////////////////
    
    static void initToggle(void) {
        SET_OBJ_POINTER(Py_None, None);
        SET_OBJ_POINTER(Py_True, True);
        SET_OBJ_POINTER(Py_False, False);
        SET_OBJ_POINTER(Py_NotImplemented, NotImplemented);
    }
    
    int WINAPI DllMain(HANDLE hinstDLL, DWORD dwReason, LPVOID lpvReserved) {
        initToggle();
        return 1;
    }
    
    #endif

    Раскопал на старой флешке костыль, позволяющий компилить сишные модули для питона прям на кпк под WinMobile с помощью портанутой gcc. Была там бага - не видел собранный модуль Py_None, Py_True и т.д из python.dll. При помощи макроса SET_OBJ_POINTER приходилось вытаскивать указатели на них.

    Pythoner, 12 Апреля 2014

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

    +3

    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
    #include <iostream>
    
    using namespace std;
    
    class Base {
    public:
           Base() {
                  cout << "Base construct\n";
           }
           virtual  ~Base() {
                  cout << "Base destruct\n";
           }
    };
    
    class Child: public Base {
    public:
           Child() {
                  cout << "Child construct\n";
           }
           ~Child() {
                  cout << "Child destruct\n";
           }
    };
    
    int main() {
           Base *base = new Child();
           delete base;
    }

    Hy нe oчeвиднo жe! Для тoгo, чтoб вызывaлиcь вce дecтpyктopы, нyжнo oбъявить eгo виpтyaльным. B тo вpeмя кaк кoнcтpyктop бeз мoдификaтopa virtual paбoтaeт тaк жe, кaк виpтyaльный дecтpyктop.
    И зaчeм вoбщe ocтaвлять вoзмoжнocть нe виpтyaльнoгo дecтpyктopa - нe мoгy пpeдcтaвить ceбe cлyчaя, кoгдa пpи yдaлeнии oбъeктa нyжeн вызoв дecтpyктopa тoлькo бaзoвoгo клacca.

    Pythoner, 18 Марта 2014

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

    +13

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    if (axis[0] == vector[0] && axis[1] == vector[1] && axis[2] == vector[2])
       {
          this->anglex = 0.0f;
       }
       else if (vector[1] >= 0.0f)
       {
          this->anglex = 360.0f*(GLfloat)acos(VectorMathf::dotProductf(axis, vector))/(2.0f*PIf);
       }
       else
       {
          this->anglex = -360.0f*(GLfloat)acos(VectorMathf::dotProductf(axis, vector))/(2.0f*PIf);
       }

    Часть либы ES3D (http://sourceforge.net/projects/es3d/).
    Кто не понял в чем прикол - все переменные имеют тип float.

    Pythoner, 23 Декабря 2013

    Комментарии (11)
  6. Python / Говнокод #13919

    −101

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    def Find(dir):
            def walk(a,b,files):
                t1=0
                for i in files:
                    t1+=1
                    if i[-4:]==".sis" or i[-4:]==".Sis" or i[-4:]==".SIs" or i[-4:]==".SIS" or i[-4:]==".SiS" or i[-4:]==".sIS" or i[-4:]==".siS" or i[-5:]==".sisx" or i[-5:]==".Sisx" or i[-5:]==".SIsx" or i[-5:]==".SISx" or i[-5:]==".SISX" or i[-5:]==".sISX" or i[-5:]==".siSX" or i[-5:]==".sisX" or i[-5:]==".SisX" or i[-5:]==".SIsX" or i[-5:]==".SiSX" :
                        list1.append(cn(i))
                        list2.append(cn("%s\%s"%(b,i)))

    Когда еще была жива симба, под нее был интерпретатор питона. Этот отрывок - творение некоего китайского товарища под PyS60.

    Pythoner, 09 Октября 2013

    Комментарии (59)
  7. Си / Говнокод #13918

    +128

    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
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    #include "unpacker.h"
    
    Unpacker::Unpacker(char *name) {
        _splitString = new char*[16];
        _ctx = SDL_RWFromFile(name, "rb");
    }
    
    Unpacker::~Unpacker() {
        delete _splitString;
        SDL_RWclose(_ctx);
        SDL_FreeRW(_ctx);
    }
    
    Dir *Unpacker::getDir(char *path) {;
        int index = 1;
        char pth[256];
        char name[80];
        char *str = "";
        if (!path)
            return NULL;
        _split(path);
        SDL_RWseek(_ctx, 2, SEEK_SET);
        pth[0] = '/'; pth[1] = '\0';
        while (_splitString[index]) {    
            Uint16 count;
            Uint32 hash;
            str = _splitString[index];
            hash = _hash(str);
            count = SDL_ReadLE16(_ctx);
            for (int i=0; i<count; i++) {
                Uint32 h;
                Uint32 offset;
                h = SDL_ReadLE32(_ctx);
                offset = SDL_ReadLE32(_ctx);
                if (hash == h) {
                    Uint8 size;
                    Uint32 curPos = SDL_RWtell(_ctx);
                    SDL_RWseek(_ctx, offset, SEEK_SET);
                    SDL_RWread(_ctx, &size, 1, 1);
                    SDL_RWread(_ctx, name, size, 1);
                    name[size] = '\0';
                    if (!strcmp(str, name)) {
                        if (_splitString[index+1]) {
                             strcat(pth, str);
                             strcat(pth, "/");
                        }
                        break;
                    } else {
                        if (i == count-1)
                            return NULL;
                        SDL_RWseek(_ctx, curPos, SEEK_SET);
                    }
                }
            }
            index++;
        }
        Dir *dir = new Dir;
        strcpy(dir->name,  str);
        strcpy(dir->path, pth);
        dir->dirsCount = SDL_ReadLE16(_ctx);
        dir->dirsOffset = SDL_RWtell(_ctx);
        SDL_RWseek(_ctx, dir->dirsCount*8, SEEK_CUR);
        dir->filesCount = SDL_ReadLE16(_ctx);;
        dir->filesOffset = SDL_RWtell(_ctx);
        return dir;
    }
    
    File *Unpacker::getFile(char *path) {
        char pth[256];
        char nm[80];
        int index = 2;
        _split(path);
        if (!_splitString[1])
            return NULL;
        if (_splitString[2]) {
            strcpy(pth, "/");
            strcpy(pth, _splitString[1]);
            strcat(pth, "/");
        } else {
            Dir *dir = getDir("/");
            return getFile(dir, _splitString[1]);
        }
        while (1) {
            if (_splitString[index+1]) {;
                strcat(pth, _splitString[index]);
                strcat(pth, "/");
            } else {
                strcpy(nm, _splitString[index]);
                break;
            }
            index++;
        }

    Нашел у себя на диске - старое творенье, когда я был мал и глуп... Распаковщик архива на своего формата на основе zlib.

    Pythoner, 09 Октября 2013

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