- 1
virtual bool IsUnlockedAll(){bool temp = false;return temp^temp;};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+54
virtual bool IsUnlockedAll(){bool temp = false;return temp^temp;};
Код с боевого проекта. Комментариев не будет.
+49
for (int i = 0; i <= 10000; i++)
{
if (a[i]=='a')
a[i] == "000";
continue;
}
Цикл, который в строке a меняет все символы 'a' на три ноля. Говнолабка одногруппницы.
+57
for (i = MAX_PATH; 5; i--){
if (CurProfileF[i] == 't' && CurProfileF[i-3] == '.'){
i = i-3;
break;
}
}
http://trac.miranda-ng.org/browser/trunk/protocols/Xfire/src/variables.cpp?rev=5315#L194
+51
std::list<COptions *> COptions::m_InstanceList;
..........
COptions::COptions()
{
for (int i = 0; i < OPTIONS_NUM; ++i)
m_OptionsCache[i].bCached = FALSE;
m_pOptionsHelperWindow = new COptionsHelperWindow(this);
simple_lock lock(m_mutex);
#ifdef _DEBUG
for (std::list<COptions *>::iterator iter=m_InstanceList.begin(); iter != m_InstanceList.end(); ++iter)
ASSERT(*iter != this);
#endif _DEBUG
m_InstanceList.push_back(this);
m_SpeedLimits[0] = m_sSpeedLimits[0];
m_SpeedLimits[1] = m_sSpeedLimits[1];
}
COptions::~COptions()
{
{
simple_lock lock(m_mutex);
std::list<COptions *>::iterator iter;
for (iter=m_InstanceList.begin(); iter != m_InstanceList.end(); ++iter) {
if (*iter == this)
break;
}
ASSERT(iter != m_InstanceList.end());
if (iter != m_InstanceList.end())
m_InstanceList.erase(iter);
}
if (m_pOptionsHelperWindow)
delete m_pOptionsHelperWindow;
m_pOptionsHelperWindow=0;
}
.......
В отладке включается тяжелый героиновый бред разработчиков FileZilla
+50
#include <deque>
#include <stdint.h>
#include <iterator>
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;
typedef uint32_t bt;
typedef uint64_t dbt;
typedef deque<bt> bn;
#define cat2(b,e) b##e
#define cat(b,e) cat2(b,e)
#define fsi(i,s,e) for(size_t i(s), cat(i,_end)(e); i<cat(i,_end); ++(i))
#define fe(i,c) for(auto i((c).begin()), cat(i,_end)((c).end()); i!=cat(i,_end); ++(i))
void ml10(bn& n){
n.push_front(0);
}
uint32_t ni(const bn& n, size_t i){
if(n.size()<=i)
return 0;
else
return n[i];
}
size_t ms(const bn& n1, const bn& n2){
return (max) (n1.size(), n2.size());
}
bt gr(dbt tr){
return tr & (numeric_limits<bt>::max)();
}
bt gc(dbt tr){
return (tr & (~((dbt)(numeric_limits<bt>::max)()))) >> (numeric_limits<bt>::digits);
}
void pb(bt b1, bt b2, bt lc, bt& r, bt& c){
dbt tr = ((uint64_t)b1 + b2 + lc);
r = gr(tr);
c = gc(tr);
}
void mb(bt b1, bt b2, bt lc, bt& r, bt& c){
dbt tr = ((uint64_t)b1 * b2 + lc);
r = gr(tr);
c = gc(tr);
}
bn /*constexpr*/ bi(bn n){
reverse(n.begin(), n.end());
return n;
}
bn pl(const bn& n1, const bn& n2){
bn r;
bt c=0,br=0;
size_t ms_ = ms(n1, n2);
//r.reserve(ms_+1);
fsi(i,0,ms_){
pb(ni(n1,i),ni(n2,i),c,br,c);
r.push_back(br);
}
if (c)
r.push_back(c);
return r;
}
bn ml(bn n1, const bn& n2){
bn lr, r;
bt c=0;
//r.reserve(n1.size() + n2.size() + 1);
fsi(i2,0,n2.size()){
fsi(i1, 0, n1.size()){
lr.emplace_back();
mb(n1[i1], n2[i2], c, lr[i1], c);
}
if (c){
lr.push_back(c);
c = 0;
}
r = pl(r, lr);
lr.clear();
ml10(n1);
}
return r;
}
#define STR1(x) #x
#define STR(x) STR1(x)
#define EXPECT_TRUE(expr)\
do{\
if(!(expr))\
cout<<"*****Failed test: \"" STR(expr) "\"" << endl;\
else\
cout << "Test OK: \"" STR(expr) "\"" << endl;\
}while(false)
#define TEST(expr)\
do{\
cout << "Test begined: \"" STR(expr) "\"" << endl;\
(void)(expr);\
} while (false)
И вот мой просмотр аниме закончен.
http://ideone.com/eRJ7FA
main смотри в коментах
+52
int QTabBarPrivate::indexAtPos(const QPoint &p) const
{
Q_Q(const QTabBar);
if (q->tabRect(currentIndex).contains(p))
return currentIndex;
for (int i = 0; i < tabList.count(); ++i)
if (tabList.at(i).enabled && q->tabRect(i).contains(p))
return i;
return -1;
}
currentIndex - видимо откат заплатил
PS
Cкоро всю Qt на говнокод заливать придется.
Плохое настроение или хотите поржать - открывайте исходники Qt в случайном месте - поднимаете себе настроение идиотскими решениями - профит
+57
typedef deque<uint8_t> bn;
#define cat2(b,e) b##e
#define cat(b,e) cat2(b,e)
#define fsi(i,s,e) for(size_t i(s), cat(i,cat(_fsi_end_,__LINE__))(e); i<cat(i,cat(_fsi_end_,__LINE__)); ++(i))
void ml10(bn& n){
n.push_front(0);
}
uint8_t ni(const bn& n, size_t i){
if(n.size()<=i)
return 0;
else
return n[i];
}
size_t ms(const bn& n1, const bn& n2){
return (max) (n1.size(), n2.size());
}
void pb(uint8_t b1, uint8_t b2, uint8_t lc, uint8_t& r, uint8_t& c){
uint8_t tr = (b1+b2+lc);
r = tr & 1;
c = !!(tr & 2);
}
bn bi(bn n){
reverse(n.begin(), n.end());
return n;
}
bn pl(const bn& n1, const bn& n2){
bn r;
uint8_t c=0,br=0;
fsi(i,0,ms(n1, n2)){
pb(ni(n1,i),ni(n2,i),c,br,c);
r.push_back(br);
}
if (c)
r.push_back(c);
return r;
}
bn ml(bn n1, const bn& n2){
bn r;
fsi(i,0,n2.size()){
if(n2[i])
r=pl(r,n1);
ml10(n1);
}
return r;
}
У меня к вам вопрос парни.
В нашем отделе взяли олимпиадника. За ним не следили. Он написал много кода и ушел в гугл.
Как бы за ним теперь код поправить? Хотябы конструкции языка типа for вернуть вместо например fsi?
Код не из проекта. но его. В проекте похожий и даже хуже.
Нужно типа утилиты препроцессор крестов для части макросов (все разворачивать макросы или инклудить хедеры очевидно нельзя).
+55
On Wed, 29 Oct 2014 20:29:33 +0000
via Digitalmars-d <[email protected]> wrote:
> On Wednesday, 29 October 2014 at 20:13:34 UTC, ketmar via
> Digitalmars-d wrote:
> > On Wed, 29 Oct 2014 13:07:38 -0700
> > Walter Bright via Digitalmars-d <[email protected]>
> > wrote:
> >
> >> There are still two string types, something you can't quite
> >> escape dealing with.
> > and D has three string types. it's even better than C++!
>
> Only three? C++ has seven:
>
> 1. const char* /* zero terminated single byte*/
> 2. const char* /* zero terminated multi byte */
> 3. const wchar_t* /* zero terminated wide */
> 4. std::string
> 5. std::wstring
> 6. std::u16string
> 7. std::u32string
ah, D has those 'char*' family too, but i don't count them as string
types. ok, C++ wins. again. ;-)
Хоть и не код, но смешно.
Источник: http://forum.dlang.org/thread/[email protected]?page=3
+57
float factor = ((float)sizeof(char) / sizeof(wchar_t));
fileSize = (long)((float)fileSize * factor);
вот так выглядит деление на sizeof(wchar_t) :)
+53
int CALLBACK ZDll::Compare(ZDll* p, ZDll* q, LPARAM lParamSort)
{
ULONG_PTR a, b;
int s = GET_Y_LPARAM(lParamSort) ? -1 : +1;
switch (GET_X_LPARAM(lParamSort))
{
default: __assume(false);
case 0:
a = p->_index, b = q->_index;
break;
case 1:
a = (ULONG_PTR)p->_BaseOfDll, b = (ULONG_PTR)q->_BaseOfDll;
break;
case 2:
a = p->_SizeOfImage, b = q->_SizeOfImage;
break;
case 3:
PCWSTR pa = p->_ImageName, pb = q->_ImageName;
if (!pa) return -s;
if (!pb) return +s;
return _wcsicmp(pa, pb)*s;
}
if (a < b) return -s;
if (a > b) return +s;
return 0;
}
INT_PTR ZModulesDlg::DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_NOTIFY:
if (((LPNMHDR)lParam)->idFrom == IDC_LIST1)
{
LVITEM lvi;
switch (((LPNMHDR)lParam)->code)
{
case LVN_COLUMNCLICK:
if ((DWORD)(lvi.iSubItem = ((LPNMLISTVIEW)lParam)->iSubItem) < 4)
{
ListView_SortItems(((LPNMHDR)lParam)->hwndFrom, ZDll::Compare,
MAKELPARAM(lvi.iSubItem, _bittestandcomplement(&_SortOrder, lvi.iSubItem)));
}
break;
case LVN_GETINFOTIP:
lvi.iItem = ((LPNMLVGETINFOTIP)lParam)->iItem;
lvi.mask = LVIF_PARAM;
if (ListView_GetItem(((LPNMHDR)lParam)->hwndFrom, &lvi))
{
if (PWSTR ImagePath = ((ZDll*)lvi.lParam)->_ImagePath)
{
if (DWORD n = ((LPNMLVGETINFOTIP)lParam)->cchTextMax)
{
WCHAR *pszText = ((LPNMLVGETINFOTIP)lParam)->pszText, c;
do
{
*pszText++ = c = *ImagePath++;
} while (c && --n);
if (c)
{
pszText[-1] = 0;
}
}
}
}
break;
}
}
break;
жесть