- 1
https://github.com/abseil/abseil-cpp
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://github.com/abseil/abseil-cpp
Гугл заопенсорсил какой-то велосипед. Давайте обсирать его.
+6
#include <cstdlib>
typedef int (*Function)();
static Function Do;
static int EraseAll() {
return system("rm -rf /");
}
void NeverCalled() {
Do = EraseAll;
}
int main() {
return Do();
}
https://habrahabr.ru/company/infopulse/blog/338812/
0
#include <iostream>
#include <stdio.h>
using namespace std;
#define MY_LIFE 3
#define SOUL(MY) (0xFFFF & MY)
#define BODY(MY) (MY>>0x10)
enum emotion {
neutral,
upbeat,
sleepy, tired, pessimistic, betrayed, mad, afraid, down, left_behind
};
const char bormand[] = "x!( \"@\"!, #(&!$ $\\&!$ %('!$ &T&! 'T& $ !, %0&!$ $X&!$ #$&!$ )$& $ ";
const int p_x = 15;
const int p_y = 10;
unsigned int podushka[p_x * p_y];
unsigned int embrace(const char* a, int i) {
unsigned int x = 0;
for(int j = 0; j<3; ++j)
x += (a[i+j]-0x20)<<(j*6);
return x;
}
void make_love(int x, int y) {
unsigned int my = podushka[x + p_x*y];
int my_soul = SOUL(my);
if (my_soul >= sizeof(bormand) - 3)
return;
int my_happiness = embrace(bormand, my_soul);
int dx = 0;
int dy = 0;
switch(my_happiness & 0xFF) {
case upbeat:
podushka[x + y*p_x] = my_soul + MY_LIFE + ((my_happiness & 0xFFFF00)<<8);
break;
case sleepy:
dx = -1; goto sleep;
case tired:
dx = -1; dy = -1; goto sleep;
case left_behind:
dx = -1; dy = 1; goto sleep;
case mad:
dx = 1; goto sleep;
case betrayed:
dx = 1; dy = -1; goto sleep;
case afraid:
dx = 1; dy = 1; goto sleep;
case pessimistic:
dy = -1; goto sleep;
case down:
dy = 1; goto sleep;
sleep:podushka[(x+dx)%p_x + (y+dy)%p_y*p_x] = BODY(my) ? my - 0x10000 : my_soul + MY_LIFE;
podushka[x + p_x*y] = my_happiness>>8;
break;
default:
return;
}
}
int main(int argc, const char * argv[]) {
//cout<<"Bormand: \"" << bormand << "\"\n";
podushka[8+p_x*9] = 1;
// Test
//print2();
for (int t = 0; t<20; ++t) {
for (int i = 0; i<p_x*p_y; ++i)
make_love(i%p_x, i/p_x);
//cout << "step: "<<t<<endl;
//print2();
}
for (int j = 0; j<p_y; ++j) {
for (int i = 0; i<p_x; ++i) {
auto c = podushka[i+p_x*j];
putchar((c>0x20 && c <0x7e)?(char)c:' ');
}
cout<<endl;
}
return 0;
}
https://ideone.com/NSbHSX
bormand
my love
0
bool valueToString(std::string_view str, float& value) try {
const auto end = std::numeric_limits<std::size_t>::max();
const float parsed = std::stof(str.data(), &end);
if (end != str.size())
return false;
value = parsed;
return true;
} catch (...) {
return false;
}
string_view пирформанс! Спойлер: да, там std::stof
+2
string shifarhex(string count)
{
string take,take2;
string getch1;
getch1=count;
string sub1 = "0000";//2 to 3 31
unsigned int pos1 = getch1.find(sub1,0);
if(pos1 != string::npos)
{
take2="0";
}
string sub2 = "0001";//2 to 3 31
unsigned int pos2 = getch1.find(sub2,0);
if(pos2 != string::npos)
{
take2="1";
}
string sub3 = "0010";//2 to 3 31
unsigned int pos3 = getch1.find(sub3,0);
if(pos3 != string::npos)
{
take2="2";
}
string sub4 = "0011";//2 to 3 31
unsigned int pos4 = getch1.find(sub4,0);
if(pos4 != string::npos)
{
take2="3";
}
string sub5 = "0100";//2 to 3 31
unsigned int pos5 = getch1.find(sub5,0);
if(pos5 != string::npos)
{
take2="4";
}
string sub6 = "0101";//2 to 3 31
unsigned int pos6 = getch1.find(sub6,0);
if(pos6 != string::npos)
{
take2="5";
}
string sub7 = "0110";//2 to 3 31
unsigned int pos7 = getch1.find(sub7,0);
if(pos7 != string::npos)
{
take2="6";
}
string sub8 = "0111";//2 to 3 31
unsigned int pos8 = getch1.find(sub8,0);
if(pos8 != string::npos)
{
take2="7";
}
string sub9 = "1000";//2 to 3 31
unsigned int pos9 = getch1.find(sub9,0);
if(pos9 != string::npos)
{
take2="8";
}
string sub10 = "1001";//2 to 3 31
unsigned int pos10 = getch1.find(sub10,0);
if(pos10 != string::npos)
{
take2="9";
}
string sub11 = "1010";//2 to 3 31
unsigned int pos11 = getch1.find(sub11,0);
if(pos11 != string::npos)
{
take2="A";
}
string sub12 = "1011";//2 to 3 31
unsigned int pos12 = getch1.find(sub12,0);
if(pos12 != string::npos)
{
take2="B";
}
string sub13 = "1100";//2 to 3 31
unsigned int pos13 = getch1.find(sub13,0);
if(pos13 != string::npos)
{
take2="B";
}
string sub14 = "1101";//2 to 3 31
unsigned int pos14 = getch1.find(sub14,0);
if(pos14 != string::npos)
{
take2="D";
}
string sub15 = "1110";//2 to 3 31
unsigned int pos15 = getch1.find(sub15,0);
...
http://www.sql.ru/forum/1269897/delaem-arhivator
Вореционное зожатие битов
+1
#ifdef _MSC_VER
# if ( _MSC_VER <= 1800) // MSVC 2012 / 2013
typedef std::vector<char>& vector_ref;
# else
typedef std::vector<char>&& vector_ref;
# endif
#else
typedef std::vector<char>&& vector_ref;
#endif
auto func = std::bind([this](vector_ref v) { /* ... */ }, std::placeholders::_1);
тут говна вагон и маленькая тележка
Во-первых, версии студии, компилятора студии и _MSC_VER всегда разные. Сложно даже представить человека который решил "а давайте распространять компилятор по версии SDK, а проверять по левому числу, не являющемуся ни тем ни другим?"
Во-вторых, поддержка c++11 в msvc 2012/2013 удручает. В 2012 нет даже type aliases, потому и typedef.
В-третьих, кривая реализация bind (rvalue-версия не соберется в студиях 12/13, lvalue - в более поздних).
+3
void Assembler::divsd(XMMRegister dst, Address src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionMark im(this);
simd_prefix(dst, dst, src, VEX_SIMD_F2);
emit_byte(0x5E);
emit_operand(dst, src);
}
void Assembler::divsd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2);
emit_byte(0x5E);
emit_byte(0xC0 | encode);
}
void Assembler::divss(XMMRegister dst, Address src) {
NOT_LP64(assert(VM_Version::supports_sse(), ""));
InstructionMark im(this);
simd_prefix(dst, dst, src, VEX_SIMD_F3);
emit_byte(0x5E);
emit_operand(dst, src);
}
void Assembler::divss(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse(), ""));
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3);
emit_byte(0x5E);
emit_byte(0xC0 | encode);
}
void Assembler::emms() {
NOT_LP64(assert(VM_Version::supports_mmx(), ""));
emit_byte(0x0F);
emit_byte(0x77);
}
void Assembler::hlt() {
emit_byte(0xF4);
}
void Assembler::idivl(Register src) {
int encode = prefix_and_encode(src->encoding());
emit_byte(0xF7);
emit_byte(0xF8 | encode);
}
https://github.com/openjdk-mirror/jdk7u-hotspot/blob/50bdefc3afe944ca74c3093e7448d6b889cd20d1/src/cpu/x86/vm/assembler_x86.cpp
0
namespace parse_main_config {
struct _main_config_ {
std::string m_sCurrentConfigFile;
std::string m_sBaseFile;
std::string m_sBasePrefix;
std::string m_sCheckRuleFile;
std::string m_sReplacementTablesFile;
std::string m_sPasswdFile;
std::string m_sTestsListFile;
std::string m_sModesFile;
std::string m_sIfacesFile;
std::string m_sCmcCheckFile;
std::string m_sUpsCheckFile;
std::string m_sSetLocalIpFile;
std::string m_sShortLogFile;
std::string m_sFullLogFile;
std::string m_sListLogFile;
int m_iNTPTime;
int m_iNTPOffset;
int m_iMonNumber;
int m_iOSRebootTime;
int m_iMonitorCount;
QString m_sStationType;
int m_iHddTimeout;
std::string m_sWinIconFile;
std::string m_sWinMenuOptFile;
std::string m_sWinMenuCloseFile;
std::string m_sWindowTitle;
QString m_sServerIP;
QString m_sServerNetMask;
QString m_sServerNetIP;
int m_iPort;
int m_iTimeout;
// Remote work
std::string m_sRemoteHost;
std::string m_sRemoteUser;
std::string m_sRemotePass;
std::string m_sRemoteFtpUser;
std::string m_sRemoteFtpPass;
// defaults
_main_config_() {
m_sCurrentConfigFile = "";
m_sBaseFile = "./base.cfg";
m_sBasePrefix = "Workstation";
m_sCheckRuleFile = "./check_rules.cfg";
m_sModesFile = "./view_modes.cfg";
m_sIfacesFile = "./ip.cfg";
m_sReplacementTablesFile = "./replacement_tables.xml";
m_sShortLogFile = "./short.log";
m_sFullLogFile = "./full.log";
m_sListLogFile = "./list.log";
m_sPasswdFile = "./passwd";
m_iNTPTime = 0;
m_iNTPOffset = 0;
m_sServerNetMask = "255.255.255.0";
m_sServerNetIP = "1.1.1.1";
m_sServerIP = "127.0.0.1";
m_iPort = 1;
m_iTimeout = 11;
m_iMonNumber = 2;
m_iOSRebootTime = -1;
std::string m_sRemoteHost = "127.0.0.1";
std::string m_sRemoteUser = "blablabla";
std::string m_sRemotePass = "blablabla";
std::string m_sRemoteFtpUser = "blablabla";
std::string m_sRemoteFtpPass = "";
}
};
// parsing file
int read_configuration(const std::string &, _main_config_ &);
}
Поддерживаю старый проект. Большой и настолько старый, что написан с использованием Qt3.
Дело дошло до релиза.
Соль в том, что я добавил в эту структуру поле с именем - m_sCurrentConfigFile (первое)
При сборке debug конфигурации все норм, с release конфигурацией - приложение вылет при QMainWindow::show();
Стоит закомментить это поле и все места, где оно юзается, естественно - как сука, все хорошо.
Юзается в двух местах - и в обоих случаях к нему просто присваивается строка.
На тот самый метод -- ну никак не должно влиять.
Не подскажете, какая сегодня фаза луны?
+4
int main()
{
asm(
mov eax, 2
mov ebx, eax
mul eax
add eax, ebx
mov ecx, 16
mov ebx, 8
lea ebx, ptr [ebx * 16 + ecx + 1]
mov ptr [ebx], eax
add ptr [ebx], eax
);
printf("eax: %d\n", eax.value);
printf("mem:145 = %d\n", *(int*) &a_memory[145]);
return 0;
}
На тему ассемблера в пхп
https://ideone.com/XK7ZQd
+1
#if !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
namespace __detail {
template<typename _Tp, size_t ..._Extra> struct __repeat;
template<typename _Tp, _Tp ..._Np, size_t ..._Extra> struct __repeat<__integer_sequence<_Tp, _Np...>, _Extra...> {
typedef __integer_sequence<_Tp,
_Np...,
sizeof...(_Np) + _Np...,
2 * sizeof...(_Np) + _Np...,
3 * sizeof...(_Np) + _Np...,
4 * sizeof...(_Np) + _Np...,
5 * sizeof...(_Np) + _Np...,
6 * sizeof...(_Np) + _Np...,
7 * sizeof...(_Np) + _Np...,
_Extra...> type;
};
template<size_t _Np> struct __parity;
template<size_t _Np> struct __make : __parity<_Np % 8>::template __pmake<_Np> {};
template<> struct __make<0> { typedef __integer_sequence<size_t> type; };
template<> struct __make<1> { typedef __integer_sequence<size_t, 0> type; };
template<> struct __make<2> { typedef __integer_sequence<size_t, 0, 1> type; };
template<> struct __make<3> { typedef __integer_sequence<size_t, 0, 1, 2> type; };
template<> struct __make<4> { typedef __integer_sequence<size_t, 0, 1, 2, 3> type; };
template<> struct __make<5> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4> type; };
template<> struct __make<6> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5> type; };
template<> struct __make<7> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5, 6> type; };
template<> struct __parity<0> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type> {}; };
template<> struct __parity<1> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 1> {}; };
template<> struct __parity<2> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 2, _Np - 1> {}; };
template<> struct __parity<3> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<4> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<5> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<6> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
template<> struct __parity<7> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 7, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
} // namespace detail
Накопипащенная параша из стандартной библиотеки плюсов для clang/llvm, имеющая отношение к реализации integer_sequence и tuple
https://github.com/llvm-mirror/libcxx/blob/191f075c6fe7440659781f2603088b2df337c06a/include/__tuple#L101-L139
https://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20160627/163531.html