Mxx_ru 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. data/COPYING +26 -0
  2. data/NEWS +52 -0
  3. data/README +21 -0
  4. data/Rakefile +32 -0
  5. data/examples/exe_and_lib/main.cpp +15 -0
  6. data/examples/exe_and_lib/prj.rb +11 -0
  7. data/examples/exe_and_lib/say.cpp +13 -0
  8. data/examples/exe_and_lib/say.hpp +11 -0
  9. data/examples/exe_and_lib/say.rb +7 -0
  10. data/examples/exe_dll_lib/inout.cpp +15 -0
  11. data/examples/exe_dll_lib/inout.hpp +26 -0
  12. data/examples/exe_dll_lib/inout.rb +18 -0
  13. data/examples/exe_dll_lib/main.cpp +23 -0
  14. data/examples/exe_dll_lib/prj.rb +11 -0
  15. data/examples/exe_dll_lib/say.cpp +13 -0
  16. data/examples/exe_dll_lib/say.hpp +12 -0
  17. data/examples/exe_dll_lib/say.rb +9 -0
  18. data/examples/exe_dll_lib_2/build.rb +7 -0
  19. data/examples/exe_dll_lib_2/inout/inout.cpp +15 -0
  20. data/examples/exe_dll_lib_2/inout/inout.hpp +26 -0
  21. data/examples/exe_dll_lib_2/inout/prj.rb +16 -0
  22. data/examples/exe_dll_lib_2/main/main.cpp +23 -0
  23. data/examples/exe_dll_lib_2/main/prj.rb +9 -0
  24. data/examples/exe_dll_lib_2/say/prj.rb +8 -0
  25. data/examples/exe_dll_lib_2/say/say.cpp +13 -0
  26. data/examples/exe_dll_lib_2/say/say.hpp +12 -0
  27. data/examples/simple_exe/main.cpp +26 -0
  28. data/examples/simple_exe/prj.rb +7 -0
  29. data/lib/mxx_ru/abstract_target.rb +283 -0
  30. data/lib/mxx_ru/binary_target.rb +89 -0
  31. data/lib/mxx_ru/binary_unittest.rb +130 -0
  32. data/lib/mxx_ru/cpp/analyzer.rb +230 -0
  33. data/lib/mxx_ru/cpp/composite.rb +106 -0
  34. data/lib/mxx_ru/cpp/detect_toolset.rb +122 -0
  35. data/lib/mxx_ru/cpp/mode.rb +85 -0
  36. data/lib/mxx_ru/cpp/obj_placement.rb +321 -0
  37. data/lib/mxx_ru/cpp/qt.rb +333 -0
  38. data/lib/mxx_ru/cpp/rucodegen.rb +114 -0
  39. data/lib/mxx_ru/cpp/source_file.rb +71 -0
  40. data/lib/mxx_ru/cpp/target.rb +1371 -0
  41. data/lib/mxx_ru/cpp/toolset.rb +1029 -0
  42. data/lib/mxx_ru/cpp/toolsets/bcc_win32_5.rb +52 -0
  43. data/lib/mxx_ru/cpp/toolsets/bcc_win32_family.rb +451 -0
  44. data/lib/mxx_ru/cpp/toolsets/c89_etk_nsk.rb +56 -0
  45. data/lib/mxx_ru/cpp/toolsets/c89_nsk.rb +56 -0
  46. data/lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb +273 -0
  47. data/lib/mxx_ru/cpp/toolsets/gcc_cygwin.rb +54 -0
  48. data/lib/mxx_ru/cpp/toolsets/gcc_family.rb +382 -0
  49. data/lib/mxx_ru/cpp/toolsets/gcc_linux.rb +60 -0
  50. data/lib/mxx_ru/cpp/toolsets/gcc_mingw.rb +144 -0
  51. data/lib/mxx_ru/cpp/toolsets/gcc_sparc_solaris.rb +87 -0
  52. data/lib/mxx_ru/cpp/toolsets/vc7.rb +62 -0
  53. data/lib/mxx_ru/cpp/toolsets/vc8.rb +452 -0
  54. data/lib/mxx_ru/cpp/toolsets/vc_family.rb +428 -0
  55. data/lib/mxx_ru/cpp.rb +36 -0
  56. data/lib/mxx_ru/ex.rb +134 -0
  57. data/lib/mxx_ru/makestyle_generator.rb +138 -0
  58. data/lib/mxx_ru/textfile_unittest.rb +284 -0
  59. data/lib/mxx_ru/util.rb +258 -0
  60. data/tests/c/pcre/chartables.c +183 -0
  61. data/tests/c/pcre/config.h +99 -0
  62. data/tests/c/pcre/dftables.c +167 -0
  63. data/tests/c/pcre/get.c +349 -0
  64. data/tests/c/pcre/internal.h +677 -0
  65. data/tests/c/pcre/maketables.c +140 -0
  66. data/tests/c/pcre/pcre.c +8304 -0
  67. data/tests/c/pcre/pcre.h +193 -0
  68. data/tests/c/pcre/pcre.rb +14 -0
  69. data/tests/c/pcre/pcredemo.c +316 -0
  70. data/tests/c/pcre/pcregrep.c +642 -0
  71. data/tests/c/pcre/pcreposix.c +305 -0
  72. data/tests/c/pcre/pcreposix.h +88 -0
  73. data/tests/c/pcre/pcretest.c +1483 -0
  74. data/tests/c/pcre/perltest +211 -0
  75. data/tests/c/pcre/printint.c +360 -0
  76. data/tests/c/pcre/study.c +472 -0
  77. data/tests/cpp/mswin_res_dll/build.rb +14 -0
  78. data/tests/cpp/mswin_res_dll/dll.cpp +17 -0
  79. data/tests/cpp/mswin_res_dll/dll.rb +30 -0
  80. data/tests/cpp/mswin_res_dll/dll.rc +48 -0
  81. data/tests/cpp/mswin_res_dll/h/dll.hpp +8 -0
  82. data/tests/cpp/mswin_res_dll/h/res.h +3 -0
  83. data/tests/cpp/mswin_res_dll/main.cpp +13 -0
  84. data/tests/cpp/mswin_res_dll/main.rb +20 -0
  85. data/tests/cpp/mswin_res_dll/res/tree_fol.bmp +0 -0
  86. data/tests/cpp/mswin_res_dll/res/tree_state_1.bmp +0 -0
  87. data/tests/cpp/mswin_res_dll/res/tree_state_2.bmp +0 -0
  88. data/tests/cpp/mswin_res_exe/build.rb +23 -0
  89. data/tests/cpp/mswin_res_exe/h/res.h +3 -0
  90. data/tests/cpp/mswin_res_exe/main.cpp +17 -0
  91. data/tests/cpp/mswin_res_exe/main.rc +48 -0
  92. data/tests/cpp/mswin_res_exe/res/tree_fol.bmp +0 -0
  93. data/tests/cpp/mswin_res_exe/res/tree_state_1.bmp +0 -0
  94. data/tests/cpp/mswin_res_exe/res/tree_state_2.bmp +0 -0
  95. data/tests/cpp/rucodegen/host_config.cpp +20 -0
  96. data/tests/cpp/rucodegen/host_config.rb +14 -0
  97. data/tests/cpp/rucodegen/impl/conn_params.cpp +7 -0
  98. data/tests/cpp/rucodegen/impl/conn_params.rb +14 -0
  99. data/tests/cpp/rucodegen/impl/h/conn_params.hpp +10 -0
  100. data/tests/cpp/rucodegen/prj.rb +17 -0
  101. data/tests/cpp/textfile_unittest/build.rb +8 -0
  102. data/tests/cpp/textfile_unittest/etalons/out_0.txt +0 -0
  103. data/tests/cpp/textfile_unittest/etalons/out_1.txt +1 -0
  104. data/tests/cpp/textfile_unittest/etalons/out_128.txt +128 -0
  105. data/tests/cpp/textfile_unittest/main.cpp +89 -0
  106. data/tests/cpp/textfile_unittest/prj.rb +8 -0
  107. data/tests/cpp/textfile_unittest/prj.ut.rb +18 -0
  108. data/tests/cpp/toolset_name.rb +6 -0
  109. data/tests/cpp/vc_cleanup/cout.log +72 -0
  110. data/tests/cpp/vc_cleanup/dll_hi.cpp +5 -0
  111. data/tests/cpp/vc_cleanup/exe_hi.cpp +10 -0
  112. data/tests/cpp/vc_cleanup/lib_hi.cpp +5 -0
  113. data/tests/cpp/vc_cleanup/prj_dll_no_implib.rb +10 -0
  114. data/tests/cpp/vc_cleanup/prj_dll_no_implib_simple_target_root.rb +11 -0
  115. data/tests/cpp/vc_cleanup/prj_dll_with_implib.rb +11 -0
  116. data/tests/cpp/vc_cleanup/prj_dll_with_implib_simple_target_root.rb +14 -0
  117. data/tests/cpp/vc_cleanup/prj_exe_no_implib.rb +10 -0
  118. data/tests/cpp/vc_cleanup/prj_exe_no_implib_simple_target_root.rb +11 -0
  119. data/tests/cpp/vc_cleanup/prj_lib.rb +10 -0
  120. data/tests/cpp/vc_cleanup/prj_lib_with_simple_target_root.rb +11 -0
  121. data/tests/cpp/vc_cleanup/tc_vc_cleanup.rb +60 -0
  122. data/tests/mxx_ru/change_default_value/ignoring_by_build_root/build.rb +8 -0
  123. data/tests/mxx_ru/change_default_value/ignoring_by_build_root/child_1.rb +5 -0
  124. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/build.rb +7 -0
  125. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/child_1.rb +5 -0
  126. data/tests/mxx_ru/change_default_value/ignoring_by_child_1/child_2.rb +5 -0
  127. data/tests/mxx_ru/change_default_value/ok/build.rb +8 -0
  128. data/tests/mxx_ru/change_default_value/ok/child_1.rb +8 -0
  129. data/tests/mxx_ru/tc_makestyle_generator.rb +117 -0
  130. data/tests/mxx_ru/vc8/tc_actual_manifest.rb +230 -0
  131. data/tests/mxx_ru/vc8/tc_append_mt_commands.rb +104 -0
  132. data/tests/mxx_ru/vc8/tc_default_manifest.rb +17 -0
  133. data/tests/mxx_ru/vc8/tc_define_manifest.rb +173 -0
  134. data/tests/mxx_ru/vc8/tc_drop_default_manifest.rb +16 -0
  135. data/tests/mxx_ru/vc8/tc_invalid_params.rb +81 -0
  136. data/tests/mxx_ru/vc8/ts_vc8.rb +10 -0
  137. data/tests/qt/aclock/aclock.cpp +148 -0
  138. data/tests/qt/aclock/aclock.h +45 -0
  139. data/tests/qt/aclock/main.cpp +28 -0
  140. data/tests/qt/aclock/prj.rb +21 -0
  141. data/tests/qt/iconview/main.cpp +76 -0
  142. data/tests/qt/iconview/prj.rb +21 -0
  143. data/tests/qt/toplevel/main.cpp +9 -0
  144. data/tests/qt/toplevel/options.ui +587 -0
  145. data/tests/qt/toplevel/options.ui.h +98 -0
  146. data/tests/qt/toplevel/prj.rb +21 -0
  147. metadata +241 -0
@@ -0,0 +1,349 @@
1
+ /*************************************************
2
+ * Perl-Compatible Regular Expressions *
3
+ *************************************************/
4
+
5
+ /*
6
+ This is a library of functions to support regular expressions whose syntax
7
+ and semantics are as close as possible to those of the Perl 5 language. See
8
+ the file Tech.Notes for some information on the internals.
9
+
10
+ Written by: Philip Hazel <ph10@cam.ac.uk>
11
+
12
+ Copyright (c) 1997-2003 University of Cambridge
13
+
14
+ -----------------------------------------------------------------------------
15
+ Permission is granted to anyone to use this software for any purpose on any
16
+ computer system, and to redistribute it freely, subject to the following
17
+ restrictions:
18
+
19
+ 1. This software is distributed in the hope that it will be useful,
20
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
22
+
23
+ 2. The origin of this software must not be misrepresented, either by
24
+ explicit claim or by omission.
25
+
26
+ 3. Altered versions must be plainly marked as such, and must not be
27
+ misrepresented as being the original software.
28
+
29
+ 4. If PCRE is embedded in any software that is released under the GNU
30
+ General Purpose Licence (GPL), then the terms of that licence shall
31
+ supersede any condition above with which it is incompatible.
32
+ -----------------------------------------------------------------------------
33
+ */
34
+
35
+ /* This module contains some convenience functions for extracting substrings
36
+ from the subject string after a regex match has succeeded. The original idea
37
+ for these functions came from Scott Wimer <scottw@cgibuilder.com>. */
38
+
39
+
40
+ /* Include the internals header, which itself includes Standard C headers plus
41
+ the external pcre header. */
42
+
43
+ #include "internal.h"
44
+
45
+
46
+ /*************************************************
47
+ * Find number for named string *
48
+ *************************************************/
49
+
50
+ /* This function is used by the two extraction functions below, as well
51
+ as being generally available.
52
+
53
+ Arguments:
54
+ code the compiled regex
55
+ stringname the name whose number is required
56
+
57
+ Returns: the number of the named parentheses, or a negative number
58
+ (PCRE_ERROR_NOSUBSTRING) if not found
59
+ */
60
+
61
+ int
62
+ pcre_get_stringnumber(const pcre *code, const char *stringname)
63
+ {
64
+ int rc;
65
+ int entrysize;
66
+ int top, bot;
67
+ uschar *nametable;
68
+
69
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
70
+ return rc;
71
+ if (top <= 0) return PCRE_ERROR_NOSUBSTRING;
72
+
73
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)
74
+ return rc;
75
+ if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)
76
+ return rc;
77
+
78
+ bot = 0;
79
+ while (top > bot)
80
+ {
81
+ int mid = (top + bot) / 2;
82
+ uschar *entry = nametable + entrysize*mid;
83
+ int c = strcmp(stringname, (char *)(entry + 2));
84
+ if (c == 0) return (entry[0] << 8) + entry[1];
85
+ if (c > 0) bot = mid + 1; else top = mid;
86
+ }
87
+
88
+ return PCRE_ERROR_NOSUBSTRING;
89
+ }
90
+
91
+
92
+
93
+ /*************************************************
94
+ * Copy captured string to given buffer *
95
+ *************************************************/
96
+
97
+ /* This function copies a single captured substring into a given buffer.
98
+ Note that we use memcpy() rather than strncpy() in case there are binary zeros
99
+ in the string.
100
+
101
+ Arguments:
102
+ subject the subject string that was matched
103
+ ovector pointer to the offsets table
104
+ stringcount the number of substrings that were captured
105
+ (i.e. the yield of the pcre_exec call, unless
106
+ that was zero, in which case it should be 1/3
107
+ of the offset table size)
108
+ stringnumber the number of the required substring
109
+ buffer where to put the substring
110
+ size the size of the buffer
111
+
112
+ Returns: if successful:
113
+ the length of the copied string, not including the zero
114
+ that is put on the end; can be zero
115
+ if not successful:
116
+ PCRE_ERROR_NOMEMORY (-6) buffer too small
117
+ PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
118
+ */
119
+
120
+ int
121
+ pcre_copy_substring(const char *subject, int *ovector, int stringcount,
122
+ int stringnumber, char *buffer, int size)
123
+ {
124
+ int yield;
125
+ if (stringnumber < 0 || stringnumber >= stringcount)
126
+ return PCRE_ERROR_NOSUBSTRING;
127
+ stringnumber *= 2;
128
+ yield = ovector[stringnumber+1] - ovector[stringnumber];
129
+ if (size < yield + 1) return PCRE_ERROR_NOMEMORY;
130
+ memcpy(buffer, subject + ovector[stringnumber], yield);
131
+ buffer[yield] = 0;
132
+ return yield;
133
+ }
134
+
135
+
136
+
137
+ /*************************************************
138
+ * Copy named captured string to given buffer *
139
+ *************************************************/
140
+
141
+ /* This function copies a single captured substring into a given buffer,
142
+ identifying it by name.
143
+
144
+ Arguments:
145
+ code the compiled regex
146
+ subject the subject string that was matched
147
+ ovector pointer to the offsets table
148
+ stringcount the number of substrings that were captured
149
+ (i.e. the yield of the pcre_exec call, unless
150
+ that was zero, in which case it should be 1/3
151
+ of the offset table size)
152
+ stringname the name of the required substring
153
+ buffer where to put the substring
154
+ size the size of the buffer
155
+
156
+ Returns: if successful:
157
+ the length of the copied string, not including the zero
158
+ that is put on the end; can be zero
159
+ if not successful:
160
+ PCRE_ERROR_NOMEMORY (-6) buffer too small
161
+ PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
162
+ */
163
+
164
+ int
165
+ pcre_copy_named_substring(const pcre *code, const char *subject, int *ovector,
166
+ int stringcount, const char *stringname, char *buffer, int size)
167
+ {
168
+ int n = pcre_get_stringnumber(code, stringname);
169
+ if (n <= 0) return n;
170
+ return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size);
171
+ }
172
+
173
+
174
+
175
+ /*************************************************
176
+ * Copy all captured strings to new store *
177
+ *************************************************/
178
+
179
+ /* This function gets one chunk of store and builds a list of pointers and all
180
+ of the captured substrings in it. A NULL pointer is put on the end of the list.
181
+
182
+ Arguments:
183
+ subject the subject string that was matched
184
+ ovector pointer to the offsets table
185
+ stringcount the number of substrings that were captured
186
+ (i.e. the yield of the pcre_exec call, unless
187
+ that was zero, in which case it should be 1/3
188
+ of the offset table size)
189
+ listptr set to point to the list of pointers
190
+
191
+ Returns: if successful: 0
192
+ if not successful:
193
+ PCRE_ERROR_NOMEMORY (-6) failed to get store
194
+ */
195
+
196
+ int
197
+ pcre_get_substring_list(const char *subject, int *ovector, int stringcount,
198
+ const char ***listptr)
199
+ {
200
+ int i;
201
+ int size = sizeof(char *);
202
+ int double_count = stringcount * 2;
203
+ char **stringlist;
204
+ char *p;
205
+
206
+ for (i = 0; i < double_count; i += 2)
207
+ size += sizeof(char *) + ovector[i+1] - ovector[i] + 1;
208
+
209
+ stringlist = (char **)(pcre_malloc)(size);
210
+ if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;
211
+
212
+ *listptr = (const char **)stringlist;
213
+ p = (char *)(stringlist + stringcount + 1);
214
+
215
+ for (i = 0; i < double_count; i += 2)
216
+ {
217
+ int len = ovector[i+1] - ovector[i];
218
+ memcpy(p, subject + ovector[i], len);
219
+ *stringlist++ = p;
220
+ p += len;
221
+ *p++ = 0;
222
+ }
223
+
224
+ *stringlist = NULL;
225
+ return 0;
226
+ }
227
+
228
+
229
+
230
+ /*************************************************
231
+ * Free store obtained by get_substring_list *
232
+ *************************************************/
233
+
234
+ /* This function exists for the benefit of people calling PCRE from non-C
235
+ programs that can call its functions, but not free() or (pcre_free)() directly.
236
+
237
+ Argument: the result of a previous pcre_get_substring_list()
238
+ Returns: nothing
239
+ */
240
+
241
+ void
242
+ pcre_free_substring_list(const char **pointer)
243
+ {
244
+ (pcre_free)((void *)pointer);
245
+ }
246
+
247
+
248
+
249
+ /*************************************************
250
+ * Copy captured string to new store *
251
+ *************************************************/
252
+
253
+ /* This function copies a single captured substring into a piece of new
254
+ store
255
+
256
+ Arguments:
257
+ subject the subject string that was matched
258
+ ovector pointer to the offsets table
259
+ stringcount the number of substrings that were captured
260
+ (i.e. the yield of the pcre_exec call, unless
261
+ that was zero, in which case it should be 1/3
262
+ of the offset table size)
263
+ stringnumber the number of the required substring
264
+ stringptr where to put a pointer to the substring
265
+
266
+ Returns: if successful:
267
+ the length of the string, not including the zero that
268
+ is put on the end; can be zero
269
+ if not successful:
270
+ PCRE_ERROR_NOMEMORY (-6) failed to get store
271
+ PCRE_ERROR_NOSUBSTRING (-7) substring not present
272
+ */
273
+
274
+ int
275
+ pcre_get_substring(const char *subject, int *ovector, int stringcount,
276
+ int stringnumber, const char **stringptr)
277
+ {
278
+ int yield;
279
+ char *substring;
280
+ if (stringnumber < 0 || stringnumber >= stringcount)
281
+ return PCRE_ERROR_NOSUBSTRING;
282
+ stringnumber *= 2;
283
+ yield = ovector[stringnumber+1] - ovector[stringnumber];
284
+ substring = (char *)(pcre_malloc)(yield + 1);
285
+ if (substring == NULL) return PCRE_ERROR_NOMEMORY;
286
+ memcpy(substring, subject + ovector[stringnumber], yield);
287
+ substring[yield] = 0;
288
+ *stringptr = substring;
289
+ return yield;
290
+ }
291
+
292
+
293
+
294
+ /*************************************************
295
+ * Copy named captured string to new store *
296
+ *************************************************/
297
+
298
+ /* This function copies a single captured substring, identified by name, into
299
+ new store.
300
+
301
+ Arguments:
302
+ code the compiled regex
303
+ subject the subject string that was matched
304
+ ovector pointer to the offsets table
305
+ stringcount the number of substrings that were captured
306
+ (i.e. the yield of the pcre_exec call, unless
307
+ that was zero, in which case it should be 1/3
308
+ of the offset table size)
309
+ stringname the name of the required substring
310
+ stringptr where to put the pointer
311
+
312
+ Returns: if successful:
313
+ the length of the copied string, not including the zero
314
+ that is put on the end; can be zero
315
+ if not successful:
316
+ PCRE_ERROR_NOMEMORY (-6) couldn't get memory
317
+ PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
318
+ */
319
+
320
+ int
321
+ pcre_get_named_substring(const pcre *code, const char *subject, int *ovector,
322
+ int stringcount, const char *stringname, const char **stringptr)
323
+ {
324
+ int n = pcre_get_stringnumber(code, stringname);
325
+ if (n <= 0) return n;
326
+ return pcre_get_substring(subject, ovector, stringcount, n, stringptr);
327
+ }
328
+
329
+
330
+
331
+
332
+ /*************************************************
333
+ * Free store obtained by get_substring *
334
+ *************************************************/
335
+
336
+ /* This function exists for the benefit of people calling PCRE from non-C
337
+ programs that can call its functions, but not free() or (pcre_free)() directly.
338
+
339
+ Argument: the result of a previous pcre_get_substring()
340
+ Returns: nothing
341
+ */
342
+
343
+ void
344
+ pcre_free_substring(const char *pointer)
345
+ {
346
+ (pcre_free)((void *)pointer);
347
+ }
348
+
349
+ /* End of get.c */