]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | Copyright Rene Rivera 2011-2015 | |
3 | Distributed under the Boost Software License, Version 1.0. | |
4 | (See accompanying file LICENSE_1_0.txt or copy at | |
5 | http://www.boost.org/LICENSE_1_0.txt) | |
6 | */ | |
7 | #include <boost/predef.h> | |
8 | ||
9 | #define BOOST_PREDEF_INTERNAL_GENERATE_TESTS | |
10 | ||
11 | void * add_predef_entry(const char * name, const char * description, unsigned value); | |
12 | #undef BOOST_PREDEF_DECLARE_TEST | |
13 | #define BOOST_PREDEF_DECLARE_TEST(x,s) void predef_entry_##x() { add_predef_entry(#x, s, x); } | |
14 | #include <boost/predef.h> | |
15 | ||
16 | #undef BOOST_PREDEF_DECLARE_TEST | |
17 | #define BOOST_PREDEF_DECLARE_TEST(x,s) predef_entry_##x(); | |
18 | void create_predef_entries() | |
19 | { | |
20 | #include <boost/predef.h> | |
21 | } | |
22 | ||
23 | #ifdef __cplusplus | |
24 | #include <cstring> | |
25 | #include <cstdio> | |
26 | #include <cstdlib> | |
27 | using namespace std; | |
28 | #else | |
29 | #include <string.h> | |
30 | #include <stdio.h> | |
31 | #include <stdlib.h> | |
32 | #endif | |
33 | ||
34 | typedef struct predef_info | |
35 | { | |
36 | const char * name; | |
37 | const char * description; | |
38 | unsigned value; | |
39 | } predef_info; | |
40 | ||
41 | #ifdef __cplusplus | |
42 | using namespace std; | |
43 | #endif | |
44 | ||
45 | unsigned generated_predef_info_count = 0; | |
46 | predef_info* generated_predef_info = 0; | |
47 | void * add_predef_entry(const char * name, const char * description, unsigned value) | |
48 | { | |
49 | if (0 == generated_predef_info_count) | |
50 | { | |
51 | generated_predef_info_count = 1; | |
52 | generated_predef_info = (predef_info*)malloc(sizeof(predef_info)); | |
53 | } | |
54 | else | |
55 | { | |
56 | generated_predef_info_count += 1; | |
57 | generated_predef_info = (predef_info*)realloc(generated_predef_info, | |
58 | generated_predef_info_count*sizeof(predef_info)); | |
59 | } | |
60 | generated_predef_info[generated_predef_info_count-1].name = name; | |
61 | generated_predef_info[generated_predef_info_count-1].description = description; | |
62 | generated_predef_info[generated_predef_info_count-1].value = value; | |
63 | return 0; | |
64 | } | |
65 | ||
66 | int predef_info_compare(const void * a, const void * b) | |
67 | { | |
68 | const predef_info * i = (const predef_info *)a; | |
69 | const predef_info * j = (const predef_info *)b; | |
70 | return strcmp(i->name,j->name); | |
71 | } |