- 1
- 2
- 3
- 4
- 5
- 6
- 7
template<typename T>
static json_string _itoa(T val) json_nothrow {
/*...*/
long value = (long)val;
/*...*/
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 17
+19
template<typename T>
static json_string _itoa(T val) json_nothrow {
/*...*/
long value = (long)val;
/*...*/
}
Продолжаю бороться с поддержкой 64-битных чисел в libjson :/
+132
Было:
typedef struct {
int range; /*enabled flag*/
union {
struct {
unsigned str_length;
};
struct {
long i_min;
long i_max;
};
struct {
double d_min;
double d_max;
};
/* ... */
};
} wlp_range_t;
#define WLP_NO_RANGE() { .range = FALSE }
#define WLP_STRING_LENGTH(length) { .range = TRUE, .str_length = length}
#define WLP_INT_RANGE(min, max) { .range = TRUE, .i_min = min, .i_max = max }
#define WLP_FLOAT_RANGE(min, max) { .range = TRUE, .d_min = min, .d_max = max }
Стало:
typedef struct {
int range; /*enabled flag*/
struct {
struct {
unsigned str_length;
};
struct {
long i_min;
long i_max;
};
struct {
double d_min;
double d_max;
};
/* ... */
};
} wlp_range_t;
#define WLP_NO_RANGE() { B_FALSE, { {0} } }
#define WLP_STRING_LENGTH(length) { B_TRUE, { {length} } }
#define WLP_INT_RANGE(min, max) { B_TRUE, { {0}, {min, max} } }
#define WLP_FLOAT_RANGE(min, max) { B_TRUE, { {0}, {0, 0}, {min, max} } }
#define WLP_SIZE_RANGE(min, max) { B_TRUE, { {0}, {0, 0}, {0.0, 0.0}, {min, max} } }
/* ... */
Такая вот бяка получилась при портировании проекта с GCC на Visual C. А все потому, что:
1. ISO C++03 8.5.1[dcl.init.aggr]/15:
| When a union is initialized with a brace-enclosed initializer,
| the braces shall only contain an initializer for the first member of the union.
2. Visual C не поддерживает designated initializers
+18
/*
* The use of singletons for globals makes globals not
* actually be initialized until it is first needed, this
* makes the library faster to load, and have a smaller
* memory footprint
*/
#define json_global_decl(TYPE, NAME, VALUE) \
class jsonSingleton ## NAME { \
public: \
inline static TYPE & getValue() json_nothrow { \
static jsonSingleton ## NAME single; \
return single.val; \
} \
protected: \
inline jsonSingleton ## NAME() json_nothrow : val(VALUE) {} \
TYPE val; \
}
#define json_global(NAME) jsonSingleton ## NAME::getValue() \
json_global_decl(json_string, CONST_TRUE, JSON_TEXT("true"));
json_global_decl(json_string, CONST_FALSE, JSON_TEXT("false"));
json_global_decl(json_string, CONST_NULL, JSON_TEXT("null"));
/* Использование */
json_global(ERROR_NULL_IN_CHILDREN)
Наткнулся на утечку памяти, отловленную Valgrind'ом
А внутри вот это. И главное, совершенно непонятно, зачем воротить эту свистопляску, если линкеры умеют распознавать "true" по всюду (читаем про ROMability тут: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1396.pdf )
http://stackoverflow.com/questions/690176/c-c-optimization-of-pointers-to-string-constants
Сам код отсюда: http://code.google.com/p/wot-replay-parser/source/browse/libjson/Source/JSONGlobals.h
+123
val ret = method.invoke(this, args:_*)
Превращаем Array[Any] в жабовый Object[] в Scala.
+33
class Chatter : public QListBoxItem {
[...]
private:
static ChatterRef *chatters[MAX_NUM_CHATTERS];
[...]
friend int main(int, char *argv[]); // to destroy chatters[]
};
Сам проект: http://www.qtchat.org/qtchat/
Пример дается в этой книге: http://books.google.ru/books?id=8lYbNfsAVT4C&dq=qtchat&source=g bs_navlinks_s как пример friend-функций
+128
#ifndef __KERNEL__
/* Multicast groups - backwards compatiblility for userspace */
#define SELNL_GRP_NONE 0x00000000
#define SELNL_GRP_AVC 0x00000001 /* AVC notifications */
#define SELNL_GRP_ALL 0xffffffff
#endif
enum selinux_nlgroups {
SELNLGRP_NONE,
#define SELNLGRP_NONE SELNLGRP_NONE
SELNLGRP_AVC,
#define SELNLGRP_AVC SELNLGRP_AVC
__SELNLGRP_MAX
};
#define SELNLGRP_MAX (__SELNLGRP_MAX - 1)
Linux 3.3.0
include/linux/selinux_netlink.h
+161
void convert_bglfile(std::string infile, std::string source_charset, std::string target_charset)
{
std::string outfile;
const char *p = infile.c_str();
const char *p1 = strrchr(p, '.');
if (p1) {
outfile.assign(p, p1-p);
} else {
outfile = infile;
}
...
Из опенсорсного словаря StarDict. Товарисч на форуме написал, что не комилируется - не иклюдился cstring. А там такое :o