- 1
- 2
- 3
- 4
- 5
- 6
QByteArray icqMessage::convertToByteArray(const quint8 &d)
{
QByteArray packet;
packet[0] = d;
return packet;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+59
QByteArray icqMessage::convertToByteArray(const quint8 &d)
{
QByteArray packet;
packet[0] = d;
return packet;
}
Обнаружено в сорцах qutim'а. Про memcpy разработчики, видимо, не слышали, также, как и про метод append() в классе QByteArray.
А еще не совсем понятно, зачем функции для конвертирования байт-эррэев в цифры и обратно объявлены и реализованы В КАЖДОМ файле, где используются. Про #include файла, в котором один раз можно реализовать все функции, разработчики, наверное, тоже слышали мельком.
+65.5
BOOL needToCenter = NO;
float touchedDistance = [self getTouchedDistance];
if(movedFromX < movedToX)
{
if(!isIncreased)
{
needToCenter = YES;
}
}
else
{
if(!isIncreased)
{
needToCenter = YES;
}
}
+69.5
#include <iostream>
using namespace std;
class MyException
{
public:
MyException(char *msg) { m_msg = msg; }
~MyException(){}
char *GetError(){return m_msg;}
protected:
char *m_msg;
};
int main()
{
int *buffer;
try
{
buffer = new int[255];
if (buffer == NULL)
{
MyException *exception =
new MyException("Memory allocation failed!");
throw exception;
}
else
delete buffer;
}
catch (MyException *exception)
{
char *msg = exception->GetError();
cout << msg << endl;
}
return 0;
}
Книга "Использование Viusal C++" Кейт Грегори. Глава 24 о предотвращении утечек памяти и работе с исключениями.
+65.7
template <class T>
struct SLinkedListNode
{
public:
SLinkedListNode* m_pPrev; ///< Pointer to previous node.
SLinkedListNode* m_pNext; ///< Pointer to next node.
int Initialize();
int Finalize();
};
...
struct SWaiterNode : public SLinkedListNode<SContainerNode>, public SLinkedListNode<SWaiterListNode>
{
...
// container node
struct SContainerNode
{
// no members needed yet (just for masking SLinkedListNode type)
};
// container
struct SContainer
{
public:
SLinkedListNode<SContainerNode>* m_pObjects;
сначала делаем тимплейтный класс, параметр которого никому не нужен, а потом делаем заглушку для этого параметра.
нормально.
+66.9
// Компилировать: g++ -o test reghead.cpp object1.cpp regtail.cpp main.cpp
//================== object.h: ==================
struct Object {
const char *name;
unsigned char props[0];
};
extern Object *head, *tail;
enum {PROPTYPE_BYTE = 0x40, PROPTYPE_WORD = 0x80};
enum {PROP_DESC = 1, PROP_LASTSTRING, PROP_COLOR, PROP_MASS, PROP_END = 0};
#define DECLARE_OBJECT(name) \
extern Object Object_##name, *name##_reg; \
Object *name##_reg __attribute__((section("oreg"))) = &Object_##name;\
Object Object_##name = {#name}; \
namespace name##_props {
#define PROP_BYTE(id, value) unsigned char id##_1 = id | PROPTYPE_BYTE, id##_2 = value;
#define PROP_WORD(id, value) unsigned char id##_1 = id | PROPTYPE_WORD, id##_2[2] = {value & 0xff, value >> 8};
#define PROP_STRING(id, value) unsigned char id##_1 = id; unsigned char id##_2[] = value;
#define END_PROPS unsigned char final = PROP_END; }
//================== reghead.cpp: ==================
#include "object.h"
Object *head __attribute__((section("oreg"))) = 0;
//================== regtail.cpp: ==================
#include "object.h"
Object *tail __attribute__((section("oreg"))) = 0;
//================== object1.cpp: ==================
#include "object.h"
DECLARE_OBJECT(object1)
PROP_BYTE(PROP_COLOR, 14)
PROP_WORD(PROP_MASS, 300)
PROP_STRING(PROP_DESC, "description")
END_PROPS
//================== main.cpp: ==================
#include <stdio.h>
#include <string.h>
#include "object.h"
int main()
{
Object **obj = &head;
while (++obj <= &tail) {
if (*obj == NULL)
continue;
printf("Object: %s\n", (*obj)->name);
unsigned char *props = (*obj)->props;
int id;
while ((id = *props) != PROP_END) {
if (id < PROP_LASTSTRING) {
char *value = (char *)props+1;
props = (unsigned char *)value + strlen(value) + 1;
switch (id) {
case PROP_DESC:
printf(" Description: %s\n", value);
break;
}
} else {
int value;
switch (id >> 6) {
case 1:
value = *((unsigned char *)(props+1));
props += 2;
break;
case 2:
value = *((unsigned short *)(props+1));
props += 3;
break;
}
switch (id & 63) {
case PROP_COLOR:
printf(" Color: %d\n", value);
break;
case PROP_MASS:
printf(" Mass:%d\n", value);
break;
}
}
}
}
}
Прошу прощения за длинный пример, но не мог не поделиться. Написано по мотивом кода из того же ZDaemon – примерно так там задаются и обрабатываются свойства объектов. Работает только с компилятором GCC. Если вы поняли, как это работает, а также почему подобный говнокод работает с gcc версии 3.2 и может зависать с более поздними версиями – можете по праву гордиться собой.
+68.1
void TInputTID::AvWnd(GtkWidget* w, char* name, int bOut, void (*cb) (int wnd, int data))
{
// Тут объявления локальных переменных и не относящиеся к делу манипуляции
if(((int)cb) != -1) // Шедевр
{
gtk_signal_connect ((GtkObject*)hButOK,
"clicked",GTK_SIGNAL_FUNC(cb),hOutWndBox);
}
}
Вечное сияние чистого разума. Новое слово в арифметике указателей.
+63.6
struct window_t
{
int Frame;
int Window;
int Title;
};
int TWindowTID::CreateWindow(int width,int height,int posX,int posY,int WindowType,int &win)
{
GtkWidget* fixed;
fixed = get_new_fixed()
window_t* w0 = new window_t;
// здесь всякие разные манипуляции разной степени бессмысленности
w0->Window=reinterpret_cast<int>(fixed);
return static_cast<int>(w0->Window);
}
Буйство кастов
+929.1
page_t* make_page()
{
page_t* p = new page_t;
// заполнение
return p;
delete(p);
}
я в шоке... не знаю что хотел сказать аффтар (недоступен)... не могу даже прокомментировать ЭТО %)
+53.4
void __fastcall TUsers::DBG2DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
const int iIsChecked[2] = {DFCS_BUTTONCHECK | DFCS_FLAT, DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_FLAT};
int DrawState;
TRect DrawRect;
if (State.Contains(gdFocused) == true)
{
if (Column->Field->FieldName == dbchkApplyDoc2->DataField)
{
ShowMessage("Зацикливает :( ");
ShowMessage("Эта надпись будет повторяться бесконечно - почему ???");
}
}
else
{
if (Column->Field->FieldName == dbchkApplyDoc2->DataField)
{
DrawRect = Rect;
InflateRect(&DrawRect, -2, -2); // Matters ?
DrawState = iIsChecked[Column->Field->AsBoolean];
DBG2->Canvas->FillRect(Rect);
DrawFrameControl(DBG2->Canvas->Handle, &DrawRect, DFC_BUTTON, DrawState);
}
}
}
Почему
+68.6
// I'VE SO FUCKED CONVERTING THOSE FUCKING TYPES OF STUPID DATA
// TAKE IT, FUCKING STRAUSTRUP AND K&R!!!!!!!!!!!
if (text[i]=='1') (intarray[i]=1);
if (text[i]=='2') (intarray[i]=2);
if (text[i]=='3') (intarray[i]=3);
if (text[i]=='4') (intarray[i]=4);
if (text[i]=='5') (intarray[i]=5);
if (text[i]=='6') (intarray[i]=6);
if (text[i]=='7') (intarray[i]=7);
if (text[i]=='8') (intarray[i]=8);
if (text[i]=='9') (intarray[i]=9);
if (text[i]=='0') (intarray[i]=0);