- 1
- 2
const size_t longstring_size = 1000500; // TODO: O RLY magic constant? => Can't load edges >= 1Mbp
char longstring[longstring_size];
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
const size_t longstring_size = 1000500; // TODO: O RLY magic constant? => Can't load edges >= 1Mbp
char longstring[longstring_size];
Орфография комментариев сохранена.
+1
auto getMaxSize = [](const auto &vec) {
if (vec.size() == 0)
return 0;
const auto &max = *std::max_element(
vec.begin(),
vec.end(),
[](const auto &lhs, const auto &rhs){
return lhs.size() < rhs.size();
});
return max.size();
};
Раньше я не понимал актуальность шутки:
In C++14, you just write auto auto(auto auto) { auto; } The compiler infers the rest from context
+10
http://i.imgur.com/g5MswBc.png
Emotive programming in XCode
+2
#define QVERIFY2(statement, description) \
do {\
if (statement) {\
if (!QTest::qVerify(true, #statement, (description), __FILE__, __LINE__))\
return;\
} else {\
if (!QTest::qVerify(false, #statement, (description), __FILE__, __LINE__))\
return;\
}\
} while (0)
Код из QTest либы Qt4.
+4
data[idata].io_data[i % 4].data
Когда процессишь данные данных для данных
0
void Canvas::drawText(const char* text, SDL_Color sdlColor, int x, int y) const noexcept
{
if (!font)
throw std::runtime_error{"TTF_Font* is null"};
SDL_Surface* const sdlSurface =
::TTF_RenderText_Solid(const_cast<TTF_Font*>(font->getTtfFont()), text, sdlColor);
if (!sdlSurface)
throw std::runtime_error{"SDL_Surface* is null"};
SDL_Texture* const sdlTexture =
::SDL_CreateTextureFromSurface(const_cast<SDL_Renderer*>(renderer->getSdlRenderer()), sdlSurface);
if (!sdlTexture)
throw std::runtime_error{"SDL_Texture* is null"};
const SDL_Rect srcrect{0, 0, sdlSurface->w, sdlSurface->h};
const SDL_Rect dstrect{x, y, sdlSurface->w, sdlSurface->h};
::SDL_FreeSurface(sdlSurface);
::SDL_RenderCopy(const_cast<SDL_Renderer*>(renderer->getSdlRenderer()), sdlTexture,
&srcrect, &dstrect);
::SDL_DestroyTexture(sdlTexture);
}
+5
template<typename T>
T* sanitize(T* p)
{
return reinterpret_cast<T*>(
reinterpret_cast<uintptr_t>(p) & ~(alignof(T)-1));
}
template<typename T>
constexpr size_t avaliable_width()
{
switch(alignof(T))
{
case 1: return 0;
case 2: return 1;
case 4: return 2;
case 8: return 3;
case 16: return 4;
case 32: return 5;
case 64: return 6;
case 128: return 7;
case 256: return 8;
default: return 0;
}
}
template<size_t bit, typename T>
T* set_tag(T* p, bool tagged = true)
{
static_assert(bit < avaliable_width<T>(), "bad_width");
if(tagged) {
return reinterpret_cast<T*>(
reinterpret_cast<uintptr_t>(p) | 1 << bit);
}
return reinterpret_cast<T*>(
reinterpret_cast<uintptr_t>(p) & ~(uintptr_t(1) << bit));
}
template<size_t bit, typename T>
bool get_tag(T* p)
{
static_assert(bit < avaliable_width<T>(), "bad_width");
return reinterpret_cast<uintptr_t>(p) >> bit & 1;
}
Младшие биты указателей на выравненные типы всегда нулевые. Из за этого (по формуле Шеннона) указатель несёт в себе меньше информации, оставаясь того же размера. Битоёбов это расстраивает.
+3
#define ROOSTER "?"
#define CONDENSED_MILK "."
string kokoko = string(ROOSTER, 1) + string(CONDENSED_MILK);
ЧТО блять мешает написать
string kudkudah(".?");
ЧТО?
+9
if(buf_modem[cntfrommodem] == 'S')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem ] == 'R')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'I')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'N')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'G')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == ':')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == ' ')
{
cnt_comma = 0;
while(cnt_comma < 2)
{
cntfrommodem = cntfrommodem + 1;
if(buf_modem[cntfrommodem] == ',')
cnt_comma = cnt_comma + 1;
}
cntfrommodem = cntfrommodem + 1 ;
}
}
}else
cntfrommodem -= 4;
}else cntfrommodem -= 3;
}else cntfrommodem -= 2;
}else cntfrommodem--;
}
buf_modem[tmpcntr] = buf_modem[cntfrommodem];
cntfrommodem++;
tmpcntr++;
}
cntfrommodem = 0;
while(1)
{
/// ищем мэдэ5
if(buf_modem[cntfrommodem] == '#')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'S')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem ] == 'E')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'R')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'V')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'A')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'N')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'S')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == 'W')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == ':')
{
cntfrommodem = cntfrommodem + 1 ;
if(buf_modem[cntfrommodem] == ' ')
{
Парсинг ответа от GSM-модема. Код из реального проекта для STM32.
+3
void CRenderer::renderToTexture(CTexture &dest, CTexture &src, TRANSFORM tr)
{
int w = src.width();
Concurrency::parallel_for(0, w, [&] (int i)
{
int h = src.height();
for(int j = 0; j < h; j++)
{
COLOR temp = src.pixel(i, j);
if(temp == TRANSPARENT_COLOR) continue;
//scale
float dx = (i-(w/2) + 0.5f)*tr.scale[0];
float dy = (j-(h/2) + 0.5f)*tr.scale[1];
//rotate
float dx2 = dx*tr.cosRot - dy*tr.sinRot;
float dy2 = dx*tr.sinRot + dy*tr.cosRot;
//translate
dx2 += tr.trans[0];
dy2 += tr.trans[1];
//update pixels
float xMin = dx2 - 0.5f*tr.scale[0] + w/2; if(xMin < 0) xMin = 0;
float yMin = dy2 - 0.5f*tr.scale[1] + w/2; if(yMin < 0) yMin = 0;
float xMax = xMin + tr.scale[0]; if(xMax-(int)xMax > 0) xMax++; if(xMax >= dest.width()) xMax = dest.width()-1;
float yMax = yMin + tr.scale[1]; if(yMax-(int)yMax > 0) yMax++; if(yMax >= dest.height()) yMax = dest.height()-1;
for(float ki = xMin; ki <= xMax; ki++) for(float kj = yMin; kj <= yMax; kj++) dest.pixel(ki, kj) = temp;
}
});
}
Писал ручками трансформацию картинок в 2д, вышло без искажений пропорций, но с дырками, уродливо, и просадило фпс в самую жопень!