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

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    inline ~Scene() {
        while( boxList.size() > 0 ) {
          boxList.erase( boxList.begin() );
        }
        while( sphereList.size() > 0 ) {
          sphereList.erase( sphereList.begin() );
        }
        while( lightList.size() > 0 ) {
          lightList.erase( lightList.begin() );
        }
      }

    http://www.gamedev.ru/code/forum/?id=136478&page=6#m82

    CPPGovno, 21 Сентября 2011

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

    +144

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    А я люблю обмазываться не свежим С++ и дрочить. 
    Каждый день я программирую на С++. 
    На две полных проги целый день уходит. 
    Зато, когда после тяжёлого дня я прихожу домой, 
        иду на геймдев...ммм и сру в каменты про С++. 
    И дрочу, представляя, что меня поглотил единый организм С++. 
    Мне вообще кажется, что С++, умеет думать,
        у него есть своя семья, город, чувства, не удаляйте его с харда,
        лучше приютите у себя, говорите с ним, ласкайте С++.... 
    А вчера, мне преснился чудный сон, как будто я зашел на геймдев, 
        и он превратился в сайт про С++, странички, каменты, все из С++, даже небо, 
        даже Аллах!

    http://www.gamedev.ru/flame/forum/?id=152618#m9

    C_Plus_Plus_Govno, 21 Сентября 2011

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

    +171

    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
    static void tm_to_systemtime(const tm* pTime, LPSYSTEMTIME pSysTime )
    {
    	time_t timeT = mktime((tm*)pTime);
    	FILETIME fTime = {0},lTime = {0};
    	LONGLONG ll = Int32x32To64(timeT, 10000000) + 116444736000000000;
    	fTime.dwLowDateTime = (DWORD) ll;
    	fTime.dwHighDateTime = ll >>32;
    	FileTimeToLocalFileTime(&fTime,&lTime);
    	FileTimeToSystemTime(&lTime,pSysTime);
    }
    
    static std::string GetDateTimeString(const tm& activ)
    {
    	SYSTEMTIME sysTime = {0};
    	tm_to_systemtime(&activ,&sysTime);
    	char str[256];
    	//format to <YYYYMMDDHHMMSS>
    	sprintf_s(str,sizeof(str),"%04d%02d%02d%02d%02d%02d",sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wHour,sysTime.wMinute,sysTime.wSecond);
    	return std::string(str);
    }

    далеко не самый скучный способ отформатировать ::tm в виде YYYYMMDDHHmmss

    defecate-plusplus, 20 Сентября 2011

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

    +162

    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
    for (DWORD CurItem=0; CurItem<dwNumItems; CurItem++)
    	{
    		switch (CurItem) 
    
    		{
    		case 0:
    			description.LoadString(IDS_OPC_PROP_CDT);	
    			pPropertyIDs[CurItem]	=	OPC_PROP_CDT;
    			pDescriptions[CurItem]	=	OpcStrDup(description);
    			pDataTypes[CurItem]		=	VT_I2;
    			break;
    		case 1:
    			description.LoadString(IDS_OPC_PROP_VALUE);	
    			pPropertyIDs[CurItem]	=	OPC_PROP_VALUE;
    			pDescriptions[CurItem]	=	OpcStrDup(description);
    			pDataTypes[CurItem]		=	pDATag->m_value.vt;
    			break;
    		case 2:
    			description.LoadString(IDS_OPC_PROP_QUALITY);	//Item Quality
    			pPropertyIDs[CurItem]	=	OPC_PROP_QUALITY;
    			pDescriptions[CurItem]	=	OpcStrDup(description);
    			pDataTypes[CurItem]		=	VT_I2;
    			break;
    		case 3:
    			description.LoadString(IDS_OPC_PROP_TIME);		//Item Timestamp
    			pPropertyIDs[CurItem]	=	OPC_PROP_TIME;
    			pDescriptions[CurItem]	=	OpcStrDup(description);
    			pDataTypes[CurItem]		=	VT_DATE;
    			break;
    		case 4:
    			description.LoadString(IDS_OPC_PROP_RIGHTS);	//Item Access Rights
    			pPropertyIDs[CurItem]	=	OPC_PROP_RIGHTS;
    			pDescriptions[CurItem]	=	OpcStrDup (description);
    			pDataTypes[CurItem]		=	VT_I4;
    			break;
    		case 5:
    			description.LoadString(IDS_OPC_PROP_DESC);		//Item Description
    			pPropertyIDs[CurItem]	=	OPC_PROP_DESC;
    			pDescriptions[CurItem]	=	OpcStrDup(description);
    			pDataTypes[CurItem]		=	VT_BSTR;
    			break;
    		case 6:
    			description.LoadString(IDS_OPC_PROP_SCANRATE);		//Item ScanRate
    			pPropertyIDs[CurItem]	=	OPC_PROP_SCANRATE;
    			pDescriptions[CurItem]	=	OpcStrDup(description);
    			pDataTypes[CurItem]		=	VT_R4;
    			break;
    		/////////////////////////////////////////////////////////////////////////
    		
    		}
    	}

    azote, 20 Сентября 2011

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    void crash()
    {
        (( void(*)() )0)();
    }

    Crash ;]

    petersvp, 19 Сентября 2011

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

    +149

    1. 1
    Ваще без понта языкю

    alexoy, 18 Сентября 2011

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

    +162

    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
    #ifdef _WIN32
    #define BEGIN_ASM
    #define END_ASM
    #define _DB(a) __asm _emit a
    #define _STR(a) a
    #else
    #define BEGIN_ASM asm (
    #define END_ASM );
    #define _DB(a) ".byte "#a";"
    #define _STR(a) a" \n\t"
    #endif
    
    #define PARAMETERS_ESP_VOID_VOID_VOID BEGIN_ASM _STR(_DB(0x8B) _DB(0x44) _DB(0x24) _DB(0x04)) _STR(_DB(0x8B) _DB(0x54) _DB(0x24) _DB(0x08)) \
     _STR(_DB(0x8B) _DB(0x4C) _DB(0x24) _DB(0x0C)) END_ASM
    #define SAVE_3_PARAMETERS BEGIN_ASM _STR(_DB(0x89) _DB(0x44) _DB(0x24) _DB(0xE4)) _STR(_DB(0x89) _DB(0x54) _DB(0x24) _DB(0xEC)) \
    _STR(_DB(0x89) _DB(0x4C) _DB(0x24) _DB(0xE8)) END_ASM
    #define LOAD_3_PARAMETERS BEGIN_ASM _STR(_DB(0x8B) _DB(0x44) _DB(0x24) _DB(0xE4)) _STR(_DB(0x8B) _DB(0x54) _DB(0x24) _DB(0xEC)) \
    _STR(_DB(0x8B) _DB(0x4C) _DB(0x24) _DB(0xE8)) END_ASM
    
    int rdtc()
    {
      _asm RDTSC
    }
    
    #pragma optimize( "gtp", on )
    #define VECTORP2DADDFPU \
    BEGIN_ASM \
     _STR(_DB(0xD9) _DB(0x00)) \
     _STR(_DB(0xD8) _DB(0x02)) \
     _STR(_DB(0xD9) _DB(0x19)) \
     _STR(_DB(0xD9) _DB(0x40) _DB(0x04)) \
     _STR(_DB(0xD8) _DB(0x42) _DB(0x04)) \
     _STR(_DB(0xD9) _DB(0x59) _DB(0x04)) \
    END_ASM
    
    void __stdcall __VectorP2DAddFPU() {
      VECTORP2DADDFPU;
    }
    
    // для даной функции компилятор сам зделает так чтобы использовались другие регистры процессора в место eax edx ecx и сохранения не понадобится
    #define Vector2DAdd(x,y,z) _asm lea eax,x _asm lea edx,y _asm lea ecx,z _asm call __VectorP2DAddFPU;
    
    void __stdcall _VectorP2DAddFPU(void *,void *,void *) {
    // сохранение в данном случае вызывается в ручную так как сам компилятор этого не зделает что приведет к не предвиденниму результату или к подению
      SAVE_3_PARAMETERS;
      PARAMETERS_ESP_VOID_VOID_VOID;
      VECTORP2DADDFPU;
      LOAD_3_PARAMETERS;
    }

    http://www.gamedev.ru/code/forum/?id=152492#m3

    >стоит ли писать велосипед, реализующий математику подобным образом?

    CPPGovno, 18 Сентября 2011

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

    +158

    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
    std::ostringstream str;
    str << "Русский текст" << std::endl;
    Print(str.c_str());
    //Оттуда же:
    void ConsoleCout(const char* _text)
    {
        char* buffer=0;
        unsigned int bufferSize=0;
    
        if(!_text) return;
        while(_text[bufferSize]) bufferSize++;
    
        buffer=new (std::nothrow) char[bufferSize+1];
        if(!buffer) return;
        buffer[bufferSize]=0;
    
        if(!CharToOemA(_text,buffer))
        {
            delete[] buffer;
            return;
        }
    
        std::cout<<buffer;
        delete[] buffer;
    }

    [code]http://www.gamedev.ru/code/forum/?id=152499[\code]

    CPPGovno, 18 Сентября 2011

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

    +149

    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
    for(int i=0;i<size1;i+=4)
          {
            float4 boxMax(plist[i+0].Box().vmax[axis], plist[i+1].Box().vmax[axis], plist[i+2].Box().vmax[axis], plist[i+3].Box().vmax[axis]);
            float4 boxMin(plist[i+0].Box().vmin[axis], plist[i+1].Box().vmin[axis], plist[i+2].Box().vmin[axis], plist[i+3].Box().vmin[axis]);
    
            register __m128 a = _mm_and_ps(_mm_cmplt_ps(boxMax, vSplit), one);
            register __m128 b = _mm_and_ps(_mm_cmpgt_ps(boxMin, vSplit), one);
            
            register __m128 left  = _mm_sub_ps(one, b); // left  = 1 - b; same as not(b) 
            register __m128 right = _mm_sub_ps(one, a); // right = 1 - a; same as not(a) 
    
            summLeft += (left.m128_i32[0] + left.m128_i32[1] + left.m128_i32[2] + left.m128_i32[3]);
            summRight+= (right.m128_i32[0] + right.m128_i32[1] + right.m128_i32[2] + right.m128_i32[3]);
          }

    http://www.gamedev.ru/code/forum/?id=141592
    История про то, как Пятачок оптимизировал простой цикл:

    for(int i=0;i<plist.size();i++)
    {
    if(plist[i].Box().vmax[axis] < split)
    summLeft++;
    else if(plist[i].Box().vmin[axis] > split)
    summRight++;
    else
    {
    summLeft++;
    summRight++;
    }
    }

    CPPGovno, 18 Сентября 2011

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

    +157

    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
    class SOME_CLASS
    {
    public:
    
      struct
      {
        inline uintb operator = (uintb newValue )
        {
           (reinterpret_cast<SOME_CLASS*>(static_cast<char*>(this)-offsetof(SOME_CLASS,SOME_CLASS::i)))->_setI( newValue  );
        }
        inline operator uintb ()
        {
           return (reinterpret_cast<SOME_CLASS*>(static_cast<char*>(this)-offsetof(SOME_CLASS,SOME_CLASS::i)))->_i;
        }
        ...
        ...
      } i;
    
     ...
    private:
      void _setI( uintb newValue );
      uintb _i;
    }

    http://www.gamedev.ru/code/forum/?id=152459#m1

    >P.S. обязательно поставить + на govnokod.ru.

    CPPGovno, 16 Сентября 2011

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