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

    +14

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void ThumbnailAdapter::clearCache(size_t index) {
        if ((size_t)-1 == index) {
            mImages.clear();
        } else {
            ImagesMap::iterator it = mImages.find (index);
            if (mImages.end() != it) {
                mImages.erase(it);
            }
        }
    }

    годная очистка map'ы

    shomeser, 12 Марта 2013

    Комментарии (26)
  2. C++ / Говнокод #12716

    +16

    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
    class Context;
    
    class AbstractState
    {
    	Context * m_context;
    
    protected:
    	Context * context() const { return m_context; }
    
    public:
    	AbstractState(Context * context) : m_context(context) { };
    	virtual ~AbstractState() { }
    	virtual void doSomething() = 0;
    };
    
    class Context
    {
    	std::unique_ptr<AbstractState> m_state;
    
    public:
    	enum State
    	{
    		State1,
    		State2,
    	};
    	Context() { switchToState(State1); }
    	void switchToState(State newState);
    	void doSomething() { m_state->doSomething(); }
    	void someCleanup() { }
    };
    
    class ConcreteState1 : public AbstractState
    {
    public:
    	ConcreteState1(Context * context) : AbstractState(context) { }
    	virtual void doSomething()
    	{
    		context()->switchToState(Context::State2);
    		context()->someCleanup();
    	}
    };
    
    class ConcreteState2 : public AbstractState
    {
    public:
    	ConcreteState2(Context * context) : AbstractState(context) { }
    	virtual void doSomething()
    	{
    		context()->switchToState(Context::State1);
    		context()->someCleanup();
    	}
    };
    
    void Context::switchToState(State newState)
    {
    	switch(newState)
    	{
    	case State1:
    		m_state.reset(new ConcreteState1(this));
    		return;
    	case State2:
    		m_state.reset(new ConcreteState2(this));
    		return;
    	}
    }

    Бывает, на меня находит состояние "сначала делай, потом думай", благо результат был быстро обнаружен отладчиком.

    Xom94ok, 10 Марта 2013

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

    +14

    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
    struct base {
       template <class Foo>
    	base() {}
    };
    
    struct derived {
    	derived()
    		: base::base<int>()		// why not?? WHHYYYY?
    	{}
    };
    
    base b1 = base::base<int>();
    base b2<int>();

    долбанный комитет
    им проще запретить, чем продумать нормальный способ вызова шаблонного конструктора

    defecate-plusplus, 09 Марта 2013

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

    +12

    1. 1
    http://pastebin.com/kG05YmBX

    Поиск подстроки в строке, написано однокурсником

    jQuery, 09 Марта 2013

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

    +21

    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
    BOOL Space::SetShattle(Shattle* sh)
    {
    	if(!sh)
    		return 1;
    
    	if(!dynamic_cast<Shattle*>(sh) )
    		return 2;
    
    	if(shattle)
    		delete shattle;
    	shattle=sh;
    
    	return 0;
    }

    Как освоить и закрепить знания о приведении типов? Скажем, вот так...

    Bart, 09 Марта 2013

    Комментарии (12)
  6. C++ / Говнокод #12707

    +21

    1. 1
    2. 2
    3. 3
    4. 4
    if (g_bCanAcceptUnderScore)
    			SetIgnoreChars("№@`$%#^&*()~[]{}:;,.!?><|\\//-=+'\" \n");
    		else
    			SetIgnoreChars("№@`$%#^&*()~[]{}:;,.!?><|\\//-=+'\" \n_");

    lifemaker, 08 Марта 2013

    Комментарии (9)
  7. C++ / Говнокод #12704

    +10

    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
    {//НАЧАЛО ВРЕМЕННОГО БЛОКА ПОЛУЧЕНИЯ КОДА
    try
    {
    	int q=quan-pos;
    	char* temp=new char[q+1];//Временный буфер под код.
    	for(int i=0;i<q;temp[i]=buf_temp[pos+(i++)]);
    	//В цикле копируем в этот буфер символы кода.
    	temp[q]=0;//Завершаем строку буфера нулём.
    	code=atoi(temp);
    	delete[]temp;
    }
    catch(...)
    {
    	//Проверка на вшивость, учитывая возможный размер кода, излишня, но всё же не помешает, поскольку не тормозит систему.
    	code=0;
    }
    }//КОНЕЦ ВРЕМЕННОГО БЛОКА ПОЛУЧЕНИЯ КОДА

    Когда-то давно (школопериод) выпало изучать обмен данными по сети на С++.
    В задании выше - кусок функции ListenSockets(), которая принимала по сети форматированную строку и парсила.
    В те годы про strtok() я еще не слыхал...

    Bart, 08 Марта 2013

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

    +23

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    class ANameCreator
    {
    public:
                virtual void Create(const std::string& /*name*/)
                {
                    throw std::runtime_error("<ANameCreator::Create()> : abstract method stub call");
                }
    };

    odeni, 06 Марта 2013

    Комментарии (49)
  9. C++ / Говнокод #12694

    +18

    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
    //main.cpp:
    #define THREAD_COUNT 2
    #include "winparallel.h"
    
    main1()
    {
        lock(1);
        int i=0; while(i++<10)
        printf("1: %d\n", i);
        unlock(1);
    }
    
    main2()
    {
        lock(1);
        int i=0; while(i++<10)
        printf("2: %d\n", i);
        unlock(1);
    }
    
    main3(){};
    main4(){};
    main5(){};
    main6(){};
    main7(){};
    main8(){};
    
    
    
    //=====================================================================================
    //winparallels.h:
    #include <windows.h>
    #define _MAX_CORES 8
    LPVOID _void;
    #define main1() DWORD WINAPI _main1(LPVOID lpParam)
    #define main2() DWORD WINAPI _main2(LPVOID lpParam)
    #define main3() DWORD WINAPI _main3(LPVOID lpParam)
    #define main4() DWORD WINAPI _main4(LPVOID lpParam)
    #define main5() DWORD WINAPI _main5(LPVOID lpParam)
    #define main6() DWORD WINAPI _main6(LPVOID lpParam)
    #define main7() DWORD WINAPI _main7(LPVOID lpParam)
    #define main8() DWORD WINAPI _main8(LPVOID lpParam)
    DWORD WINAPI _main1(LPVOID);
    DWORD WINAPI _main2(LPVOID);
    DWORD WINAPI _main3(LPVOID);
    DWORD WINAPI _main4(LPVOID);
    DWORD WINAPI _main5(LPVOID);
    DWORD WINAPI _main6(LPVOID);
    DWORD WINAPI _main7(LPVOID);
    DWORD WINAPI _main8(LPVOID);
    HANDLE _locks[_MAX_CORES];
    int _argc; char **_argv;
    void lock(int n) { DWORD res = WaitForSingleObject(_locks[n], INFINITE); }
    void unlock(int n) { ReleaseMutex(_locks[n]); }
    int main(int argc,char **argv) {
        HANDLE threads[_MAX_CORES];
        DWORD id;
        int THREADS = THREAD_COUNT;
        if (THREADS<=0) {
            SYSTEM_INFO sysinfo;
            GetSystemInfo(&sysinfo);
            THREADS = sysinfo.dwNumberOfProcessors;
            if (THREADS>_MAX_CORES) THREADS = _MAX_CORES;
        }
        _argc = argc; _argv = argv;    
        _locks[0] = CreateMutex(NULL,FALSE,NULL);
        _locks[1] = CreateMutex(NULL,FALSE,NULL);
        _locks[2] = CreateMutex(NULL,FALSE,NULL);
        _locks[3] = CreateMutex(NULL,FALSE,NULL);
        _locks[4] = CreateMutex(NULL,FALSE,NULL);
        _locks[5] = CreateMutex(NULL,FALSE,NULL);
        _locks[6] = CreateMutex(NULL,FALSE,NULL);
        _locks[7] = CreateMutex(NULL,FALSE,NULL);    
        threads[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main1,NULL,0,&id);
        if (THREADS>=2) 
        threads[1]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main2,NULL,0,&id);
        if (THREADS>=3) 
        threads[2]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main3,NULL,0,&id);
        if (THREADS>=4) 
        threads[3]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main4,NULL,0,&id);
        if (THREADS>=5) 
        threads[4]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main5,NULL,0,&id);
        if (THREADS>=6) 
        threads[5]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main6,NULL,0,&id);
        if (THREADS>=7) 
        threads[6]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main7,NULL,0,&id);
        if (THREADS>=8) 
        threads[7]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)_main8,NULL,0,&id);
        WaitForMultipleObjects(THREADS, threads, TRUE, INFINITE);
        return 0;
    }

    >После этого всё что нужно освоить про потоки - работу с локами. Локи - это скандинавский бог приостановки потока.

    LispGovno, 05 Марта 2013

    Комментарии (62)
  10. C++ / Говнокод #12693

    +7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class Pa || Ra || Ll || El
    {  
       int f || o || o; // четвертое ядро простаивает - надо длиннее переменные заводить
       int b || a || r;
    }
    
    int m || a || i || n(int argc, CHAR* argv[])
    { 
        Parallel parallel = new Pa() || Ra() || Ll() || El ();
    }

    LispGovno, 05 Марта 2013

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