adlint 2.6.14 → 3.0.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 (401) hide show
  1. data/AUTHORS +1 -3
  2. data/ChangeLog +511 -0
  3. data/INSTALL +1 -1
  4. data/MANIFEST +57 -37
  5. data/NEWS +36 -7
  6. data/README +2 -2
  7. data/Rakefile +6 -6
  8. data/TODO +1 -1
  9. data/bin/adlint +25 -16
  10. data/bin/adlint_chk +22 -12
  11. data/bin/adlint_cma +17 -12
  12. data/bin/adlint_sma +22 -12
  13. data/bin/adlintize +98 -17
  14. data/etc/conf.d/fallback/cinit.erb +1 -1
  15. data/etc/conf.d/fallback/traits.erb +37 -37
  16. data/etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb +1 -1
  17. data/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb +41 -41
  18. data/etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb +1 -1
  19. data/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb +40 -40
  20. data/etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb +1 -1
  21. data/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb +40 -40
  22. data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
  23. data/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb +40 -40
  24. data/etc/conf.d/noarch/GNUmakefile.erb +1 -1
  25. data/etc/conf.d/noarch/adlint_all_bat.erb +1 -1
  26. data/etc/conf.d/noarch/adlint_all_sh.erb +1 -1
  27. data/etc/conf.d/noarch/pinit.erb +1 -1
  28. data/etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb +1 -1
  29. data/etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb +42 -42
  30. data/etc/mesg.d/c_builtin/en_US/messages.yml +33 -33
  31. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +5 -5
  32. data/etc/mesg.d/core/en_US/messages.yml +2 -2
  33. data/etc/mesg.d/core/ja_JP/messages.yml +2 -2
  34. data/features/code_check/W0018.feature +197 -0
  35. data/features/code_check/W0019.feature +79 -0
  36. data/features/code_check/W0021.feature +81 -0
  37. data/features/code_check/W0023.feature +203 -0
  38. data/features/code_check/W0024.feature +226 -0
  39. data/features/code_check/W0025.feature +5 -0
  40. data/features/code_check/W0088.feature +2 -2
  41. data/features/code_check/W0109.feature +2 -2
  42. data/features/code_check/W0477.feature +0 -3
  43. data/features/code_check/W0478.feature +0 -1
  44. data/features/code_check/W0582.feature +3 -3
  45. data/features/code_check/W0583.feature +4 -7
  46. data/features/code_check/W0646.feature +0 -1
  47. data/features/code_check/W0695.feature +0 -1
  48. data/features/code_check/W0705.feature +8 -0
  49. data/features/code_check/W0723.feature +0 -1
  50. data/features/code_check/W0745.feature +1 -0
  51. data/features/code_check/W0781.feature +1 -0
  52. data/features/code_check/W1057.feature +141 -0
  53. data/features/code_check/W1058.feature +93 -0
  54. data/features/code_check/W1059.feature +86 -0
  55. data/features/code_check/W1060.feature +77 -0
  56. data/features/code_check/W1061.feature +143 -0
  57. data/features/code_check/W1062.feature +162 -0
  58. data/features/code_check/W1063.feature +123 -0
  59. data/features/code_check/W1064.feature +83 -0
  60. data/features/code_check/W1065.feature +82 -0
  61. data/features/code_check/W9003.feature +2 -0
  62. data/features/step_definitions/code_check_steps.rb +1 -0
  63. data/features/support/env.rb +16 -13
  64. data/lib/adlint.rb +7 -4
  65. data/lib/adlint/analyzer.rb +131 -157
  66. data/lib/adlint/annot.rb +149 -0
  67. data/lib/adlint/cc1.rb +57 -0
  68. data/lib/adlint/{c → cc1}/branch.rb +74 -62
  69. data/lib/adlint/{c → cc1}/builtin.rb +21 -21
  70. data/lib/adlint/{c → cc1}/const.rb +119 -117
  71. data/lib/adlint/{c → cc1}/conv.rb +76 -78
  72. data/lib/adlint/{c → cc1}/ctrlexpr.rb +69 -86
  73. data/lib/adlint/cc1/domain.rb +8103 -0
  74. data/lib/adlint/{c → cc1}/enum.rb +3 -3
  75. data/lib/adlint/{c → cc1}/environ.rb +21 -21
  76. data/lib/adlint/{c → cc1}/expr.rb +232 -218
  77. data/lib/adlint/{c → cc1}/format.rb +305 -342
  78. data/lib/adlint/{c → cc1}/interp.rb +269 -220
  79. data/lib/adlint/cc1/lexer.rb +246 -0
  80. data/lib/adlint/{c → cc1}/mediator.rb +78 -84
  81. data/lib/adlint/{c → cc1}/object.rb +261 -264
  82. data/lib/adlint/{c → cc1}/operator.rb +7 -7
  83. data/lib/adlint/{c → cc1}/option.rb +4 -3
  84. data/lib/adlint/{c → cc1}/parser.rb +274 -506
  85. data/lib/adlint/{c → cc1}/parser.y +69 -301
  86. data/lib/adlint/cc1/phase.rb +138 -0
  87. data/lib/adlint/{c → cc1}/resolver.rb +66 -78
  88. data/lib/adlint/{c → cc1}/scanner.rb +57 -49
  89. data/lib/adlint/{c → cc1}/scope.rb +3 -3
  90. data/lib/adlint/{c → cc1}/seqp.rb +13 -5
  91. data/lib/adlint/{c → cc1}/syntax.rb +819 -1122
  92. data/lib/adlint/{c → cc1}/type.rb +1498 -1479
  93. data/lib/adlint/{c → cc1}/util.rb +20 -12
  94. data/lib/adlint/{c → cc1}/value.rb +699 -642
  95. data/lib/adlint/code.rb +163 -164
  96. data/lib/adlint/cpp.rb +2 -2
  97. data/lib/adlint/cpp/asm.rb +13 -14
  98. data/lib/adlint/cpp/constexpr.rb +42 -38
  99. data/lib/adlint/cpp/constexpr.y +44 -40
  100. data/lib/adlint/cpp/eval.rb +435 -435
  101. data/lib/adlint/cpp/lexer.rb +343 -340
  102. data/lib/adlint/cpp/macro.rb +188 -190
  103. data/lib/adlint/cpp/phase.rb +66 -45
  104. data/lib/adlint/cpp/scanner.rb +14 -17
  105. data/lib/adlint/cpp/source.rb +49 -55
  106. data/lib/adlint/cpp/subst.rb +65 -65
  107. data/lib/adlint/cpp/syntax.rb +155 -275
  108. data/lib/adlint/cpp/util.rb +22 -19
  109. data/lib/adlint/driver.rb +86 -93
  110. data/lib/adlint/error.rb +33 -52
  111. data/lib/adlint/exam.rb +158 -24
  112. data/lib/adlint/exam/c_builtin.rb +7 -7
  113. data/lib/adlint/exam/c_builtin/cc1_check.rb +20522 -0
  114. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +957 -0
  115. data/lib/adlint/exam/c_builtin/cc1_code.rb +459 -0
  116. data/lib/adlint/exam/c_builtin/cc1_metric.rb +794 -0
  117. data/lib/adlint/exam/c_builtin/cpp_check.rb +486 -441
  118. data/lib/adlint/exam/c_builtin/cpp_check_shima.rb +36 -39
  119. data/lib/adlint/exam/c_builtin/cpp_code.rb +63 -65
  120. data/lib/adlint/exam/c_builtin/ld_check.rb +136 -129
  121. data/lib/adlint/exam/c_builtin/ld_metric.rb +11 -11
  122. data/lib/adlint/lang.rb +25 -25
  123. data/lib/adlint/ld.rb +2 -2
  124. data/lib/adlint/ld/object.rb +220 -188
  125. data/lib/adlint/ld/phase.rb +94 -63
  126. data/lib/adlint/ld/typedef.rb +22 -11
  127. data/lib/adlint/ld/util.rb +43 -35
  128. data/lib/adlint/lexer.rb +59 -56
  129. data/lib/adlint/location.rb +140 -0
  130. data/lib/adlint/memo.rb +157 -0
  131. data/lib/adlint/message.rb +207 -156
  132. data/lib/adlint/metric.rb +139 -217
  133. data/lib/adlint/monitor.rb +45 -43
  134. data/lib/adlint/phase.rb +56 -29
  135. data/lib/adlint/prelude.rb +66 -54
  136. data/lib/adlint/report.rb +253 -332
  137. data/lib/adlint/source.rb +26 -27
  138. data/lib/adlint/supp.rb +131 -0
  139. data/lib/adlint/symbol.rb +14 -16
  140. data/lib/adlint/token.rb +19 -91
  141. data/lib/adlint/traits.rb +242 -226
  142. data/lib/adlint/util.rb +116 -205
  143. data/lib/adlint/version.rb +8 -8
  144. data/share/HEADER +2 -2
  145. data/share/doc/developers_guide_ja.html +148 -19
  146. data/share/doc/developers_guide_ja.texi +141 -11
  147. data/share/doc/samples/GNUmakefile +1 -1
  148. data/share/doc/samples/adlint_traits.yml +45 -36
  149. data/share/doc/users_guide_en.html +1321 -1252
  150. data/share/doc/users_guide_en.texi +475 -408
  151. data/share/doc/users_guide_ja.html +1932 -1878
  152. data/share/doc/users_guide_ja.texi +324 -273
  153. data/share/sample/bison-2.5/adlint/GNUmakefile +5 -1
  154. data/share/sample/bison-2.5/adlint/adlint_traits.yml +38 -38
  155. data/share/sample/bison-2.5/adlint/lib/GNUmakefile +1 -1
  156. data/share/sample/bison-2.5/adlint/lib/adlint_cinit.h +1 -1
  157. data/share/sample/bison-2.5/adlint/lib/adlint_pinit.h +1 -1
  158. data/share/sample/bison-2.5/adlint/lib/adlint_traits.yml +50 -42
  159. data/share/sample/bison-2.5/adlint/src/GNUmakefile +1 -1
  160. data/share/sample/bison-2.5/adlint/src/adlint_cinit.h +1 -1
  161. data/share/sample/bison-2.5/adlint/src/adlint_pinit.h +1 -1
  162. data/share/sample/bison-2.5/adlint/src/adlint_traits.yml +50 -42
  163. data/share/sample/ctags-5.8/adlint/GNUmakefile +1 -1
  164. data/share/sample/ctags-5.8/adlint/adlint_cinit.h +1 -1
  165. data/share/sample/ctags-5.8/adlint/adlint_pinit.h +1 -1
  166. data/share/sample/ctags-5.8/adlint/adlint_traits.yml +50 -42
  167. data/share/sample/flex-2.5.35/adlint/GNUmakefile +1 -1
  168. data/share/sample/flex-2.5.35/adlint/adlint_cinit.h +1 -1
  169. data/share/sample/flex-2.5.35/adlint/adlint_pinit.h +1 -1
  170. data/share/sample/flex-2.5.35/adlint/adlint_traits.yml +50 -42
  171. data/share/sample/ruby-1.9.3-p0/adlint/GNUmakefile +1 -1
  172. data/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml +46 -38
  173. data/share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile +1 -1
  174. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h +1 -1
  175. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h +1 -1
  176. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml +50 -42
  177. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile +1 -1
  178. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h +1 -1
  179. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h +1 -1
  180. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml +50 -42
  181. data/share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile +1 -1
  182. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h +1 -1
  183. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h +1 -1
  184. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml +50 -42
  185. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile +1 -1
  186. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h +1 -1
  187. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h +1 -1
  188. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml +50 -42
  189. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile +1 -1
  190. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h +1 -1
  191. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h +1 -1
  192. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml +50 -42
  193. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile +1 -1
  194. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h +1 -1
  195. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h +1 -1
  196. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml +50 -42
  197. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile +1 -1
  198. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h +1 -1
  199. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h +1 -1
  200. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml +50 -42
  201. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile +1 -1
  202. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h +1 -1
  203. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h +1 -1
  204. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml +50 -42
  205. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile +1 -1
  206. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h +1 -1
  207. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h +1 -1
  208. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml +50 -42
  209. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile +1 -1
  210. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h +1 -1
  211. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h +1 -1
  212. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml +50 -42
  213. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile +1 -1
  214. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h +1 -1
  215. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h +1 -1
  216. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml +50 -42
  217. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile +1 -1
  218. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h +1 -1
  219. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h +1 -1
  220. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml +50 -42
  221. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile +1 -1
  222. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h +1 -1
  223. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h +1 -1
  224. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml +50 -42
  225. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile +1 -1
  226. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h +1 -1
  227. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h +1 -1
  228. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml +50 -42
  229. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile +1 -1
  230. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h +1 -1
  231. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h +1 -1
  232. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml +50 -42
  233. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile +1 -1
  234. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h +1 -1
  235. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h +1 -1
  236. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml +50 -42
  237. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile +1 -1
  238. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h +1 -1
  239. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h +1 -1
  240. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml +50 -42
  241. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile +1 -1
  242. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h +1 -1
  243. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h +1 -1
  244. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml +50 -42
  245. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile +1 -1
  246. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h +1 -1
  247. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h +1 -1
  248. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml +50 -42
  249. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile +1 -1
  250. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h +1 -1
  251. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h +1 -1
  252. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml +50 -42
  253. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile +1 -1
  254. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h +1 -1
  255. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h +1 -1
  256. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml +50 -42
  257. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile +1 -1
  258. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h +1 -1
  259. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h +1 -1
  260. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml +50 -42
  261. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile +1 -1
  262. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h +1 -1
  263. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h +1 -1
  264. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml +50 -42
  265. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile +1 -1
  266. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h +1 -1
  267. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h +1 -1
  268. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml +50 -42
  269. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile +1 -1
  270. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h +1 -1
  271. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h +1 -1
  272. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml +50 -42
  273. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile +1 -1
  274. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h +1 -1
  275. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h +1 -1
  276. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml +50 -42
  277. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile +1 -1
  278. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h +1 -1
  279. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h +1 -1
  280. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml +50 -42
  281. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile +1 -1
  282. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h +1 -1
  283. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h +1 -1
  284. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml +50 -42
  285. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile +1 -1
  286. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h +1 -1
  287. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h +1 -1
  288. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml +50 -42
  289. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile +1 -1
  290. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h +1 -1
  291. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h +1 -1
  292. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml +50 -42
  293. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile +1 -1
  294. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h +1 -1
  295. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h +1 -1
  296. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml +50 -42
  297. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile +1 -1
  298. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h +1 -1
  299. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h +1 -1
  300. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml +50 -42
  301. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile +1 -1
  302. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h +1 -1
  303. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h +1 -1
  304. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml +50 -42
  305. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile +1 -1
  306. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h +1 -1
  307. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h +1 -1
  308. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml +50 -42
  309. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile +1 -1
  310. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h +1 -1
  311. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h +1 -1
  312. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml +50 -42
  313. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile +1 -1
  314. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h +1 -1
  315. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h +1 -1
  316. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml +50 -42
  317. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile +1 -1
  318. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h +1 -1
  319. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h +1 -1
  320. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml +50 -42
  321. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile +1 -1
  322. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h +1 -1
  323. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h +1 -1
  324. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml +50 -42
  325. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile +1 -1
  326. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h +1 -1
  327. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h +1 -1
  328. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml +50 -42
  329. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile +1 -1
  330. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h +1 -1
  331. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h +1 -1
  332. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml +50 -42
  333. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile +1 -1
  334. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h +1 -1
  335. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h +1 -1
  336. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml +50 -42
  337. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile +1 -1
  338. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h +1 -1
  339. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h +1 -1
  340. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml +50 -42
  341. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile +1 -1
  342. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h +1 -1
  343. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h +1 -1
  344. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml +50 -42
  345. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile +1 -1
  346. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h +1 -1
  347. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h +1 -1
  348. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml +50 -42
  349. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile +1 -1
  350. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h +1 -1
  351. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h +1 -1
  352. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml +50 -42
  353. data/share/sample/screen-4.0.3/adlint/GNUmakefile +1 -1
  354. data/share/sample/screen-4.0.3/adlint/adlint_cinit.h +1 -1
  355. data/share/sample/screen-4.0.3/adlint/adlint_pinit.h +1 -1
  356. data/share/sample/screen-4.0.3/adlint/adlint_traits.yml +50 -42
  357. data/share/sample/vim-7.3/adlint/vim/GNUmakefile +1 -1
  358. data/share/sample/vim-7.3/adlint/vim/adlint_cinit.h +1 -1
  359. data/share/sample/vim-7.3/adlint/vim/adlint_pinit.h +1 -1
  360. data/share/sample/vim-7.3/adlint/vim/adlint_traits.yml +50 -42
  361. data/share/sample/vim-7.3/adlint/xxd/GNUmakefile +1 -1
  362. data/share/sample/vim-7.3/adlint/xxd/adlint_cinit.h +1 -1
  363. data/share/sample/vim-7.3/adlint/xxd/adlint_pinit.h +1 -1
  364. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +49 -41
  365. data/share/sample/zsh-4.3.15/adlint/GNUmakefile +1 -1
  366. data/share/sample/zsh-4.3.15/adlint/adlint_traits.yml +46 -38
  367. data/share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile +1 -1
  368. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h +1 -1
  369. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h +1 -1
  370. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml +50 -42
  371. data/share/sample/zsh-4.3.15/adlint/core/GNUmakefile +1 -1
  372. data/share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h +1 -1
  373. data/share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h +1 -1
  374. data/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml +50 -42
  375. data/share/sample/zsh-4.3.15/adlint/modules/GNUmakefile +1 -1
  376. data/share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h +1 -1
  377. data/share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h +1 -1
  378. data/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml +50 -42
  379. data/share/sample/zsh-4.3.15/adlint/zle/GNUmakefile +1 -1
  380. data/share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h +1 -1
  381. data/share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h +1 -1
  382. data/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml +50 -42
  383. data/spec/adlint/{c → cc1}/ctrlexpr_spec.rb +51 -49
  384. data/spec/adlint/{c → cc1}/domain_spec.rb +210 -179
  385. data/spec/adlint/{c → cc1}/operator_spec.rb +3 -3
  386. data/spec/adlint/{c → cc1}/syntax_spec.rb +10 -12
  387. data/spec/adlint/{c → cc1}/type_spec.rb +61 -68
  388. data/{lib/adlint/c.rb → spec/adlint/location_spec.rb} +24 -29
  389. data/spec/conf.d/default_traits.yml +38 -37
  390. data/spec/conf.d/empty_cinit.h +1 -1
  391. data/spec/conf.d/empty_pinit.h +1 -1
  392. data/spec/conf.d/project/foo.c +0 -0
  393. data/spec/spec_helper.rb +2 -2
  394. metadata +60 -40
  395. data/lib/adlint/c/domain.rb +0 -7931
  396. data/lib/adlint/c/lexer.rb +0 -252
  397. data/lib/adlint/c/phase.rb +0 -135
  398. data/lib/adlint/exam/c_builtin/c_check.rb +0 -20745
  399. data/lib/adlint/exam/c_builtin/c_check_shima.rb +0 -983
  400. data/lib/adlint/exam/c_builtin/c_code.rb +0 -477
  401. data/lib/adlint/exam/c_builtin/c_metric.rb +0 -818
@@ -1,7 +1,7 @@
1
1
  # Format of the formatted input/output functions.
2
2
  #
3
3
  # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
- # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
4
+ # Copyright:: Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
5
5
  # License:: GPLv3+: GNU General Public License version 3 or later
6
6
  #
7
7
  # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
@@ -11,7 +11,7 @@
11
11
  # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
12
  # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
13
  # / __ |/ /_/ / /___/ / /| / / /
14
- # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
15
15
  #
16
16
  # This file is part of AdLint.
17
17
  #
@@ -29,15 +29,15 @@
29
29
  #
30
30
  #++
31
31
 
32
- require "adlint/c/mediator"
32
+ require "adlint/cc1/mediator"
33
33
 
34
34
  module AdLint #:nodoc:
35
- module C #:nodoc:
35
+ module Cc1 #:nodoc:
36
36
 
37
37
  class PrintfFormat
38
- def initialize(format_str, location, trailing_args, environment)
39
- @location = location
40
- @directives = create_directives(format_str, trailing_args, environment)
38
+ def initialize(fmt_str, loc, trailing_args, env)
39
+ @location = loc
40
+ @directives = create_directives(fmt_str, trailing_args, env)
41
41
  @extra_arguments = trailing_args
42
42
  end
43
43
 
@@ -46,65 +46,65 @@ module C #:nodoc:
46
46
  attr_reader :extra_arguments
47
47
 
48
48
  def conversion_specifiers
49
- @directives.select { |directive| directive.conversion_specifier? }
49
+ @directives.select { |dire| dire.conversion_specifier? }
50
50
  end
51
51
 
52
52
  def min_length
53
- @directives.reduce(0) { |len, directive| len + directive.min_length }
53
+ @directives.reduce(0) { |len, dire| len + dire.min_length }
54
54
  end
55
55
 
56
56
  def max_length
57
- @directives.reduce(0) { |len, directive| len + directive.max_length }
57
+ @directives.reduce(0) { |len, dire| len + dire.max_length }
58
58
  end
59
59
 
60
60
  private
61
- def create_directives(format_str, trailing_args, environment)
62
- directives = []
63
- str = format_str.dup
61
+ def create_directives(fmt_str, trailing_args, env)
62
+ dires = []
63
+ str = fmt_str.dup
64
64
  until str.empty?
65
- directives.push(Directive.guess(str, trailing_args, environment))
65
+ dires.push(Directive.guess(str, trailing_args, env))
66
66
  end
67
- directives
67
+ dires
68
68
  end
69
69
 
70
70
  # == DESCRIPTION
71
71
  # === Directive class hierarchy
72
72
  # Directive
73
- # <--- Ordinary
74
- # <--- ConversionSpecifier
75
- # <--- CompleteConversionSpecifier
76
- # <--- NumberConversionSpecifier
77
- # <--- Conversion_d
78
- # <--- Conversion_i
79
- # <--- Conversion_o
80
- # <--- Conversion_u
81
- # <--- Conversion_x
82
- # <--- Conversion_X
83
- # <--- Conversion_f
84
- # <--- Conversion_F
85
- # <--- Conversion_e
86
- # <--- Conversion_E
87
- # <--- Conversion_g
88
- # <--- Conversion_G
89
- # <--- Conversion_a
90
- # <--- Conversion_A
91
- # <--- Conversion_p
92
- # <--- CharacterConversionSpecifier
93
- # <--- Conversion_c
94
- # <--- StringConversionSpecifier
95
- # <--- Conversion_s
96
- # <--- Conversion_n
97
- # <--- Conversion_percent
98
- # <--- UndefinedConversionSpecifier
99
- # <--- IncompleteConversionSpecifier
73
+ # <-- Ordinary
74
+ # <-- ConversionSpecifier
75
+ # <-- CompleteConversionSpecifier
76
+ # <-- NumberConversionSpecifier
77
+ # <-- Conversion_d
78
+ # <-- Conversion_i
79
+ # <-- Conversion_o
80
+ # <-- Conversion_u
81
+ # <-- Conversion_x
82
+ # <-- Conversion_X
83
+ # <-- Conversion_f
84
+ # <-- Conversion_F
85
+ # <-- Conversion_e
86
+ # <-- Conversion_E
87
+ # <-- Conversion_g
88
+ # <-- Conversion_G
89
+ # <-- Conversion_a
90
+ # <-- Conversion_A
91
+ # <-- Conversion_p
92
+ # <-- CharacterConversionSpecifier
93
+ # <-- Conversion_c
94
+ # <-- StringConversionSpecifier
95
+ # <-- Conversion_s
96
+ # <-- Conversion_n
97
+ # <-- Conversion_percent
98
+ # <-- UndefinedConversionSpecifier
99
+ # <-- IncompleteConversionSpecifier
100
100
  class Directive
101
- def self.guess(format_str, trailing_args, environ)
102
- try_to_create_ordinary(format_str) or
103
- try_to_create_conversion_specifier(format_str, trailing_args, environ)
101
+ def self.guess(fmt_str, trailing_args, env)
102
+ try_to_create_ordinary(fmt_str) or
103
+ try_to_create_conversion_specifier(fmt_str, trailing_args, env)
104
104
  end
105
105
 
106
- def initialize(format, consume_args)
107
- @format = format
106
+ def initialize(fmt, consume_args)
107
+ @format = fmt
108
108
  @consume_arguments = consume_args
109
109
  end
110
110
 
@@ -205,26 +205,25 @@ module C #:nodoc:
205
205
  subclass_responsibility
206
206
  end
207
207
 
208
- def self.try_to_create_ordinary(format_str)
209
- (format = Ordinary.scan(format_str)) ? Ordinary.new(format) : nil
208
+ def self.try_to_create_ordinary(fmt_str)
209
+ (fmt = Ordinary.scan(fmt_str)) ? Ordinary.new(fmt) : nil
210
210
  end
211
211
  private_class_method :try_to_create_ordinary
212
212
 
213
- def self.try_to_create_conversion_specifier(format_str,
214
- trailing_args, environment)
215
- format, flags, field_width, precision, length_modifier, cs_char =
216
- ConversionSpecifier.scan(format_str)
213
+ def self.try_to_create_conversion_specifier(fmt_str, trailing_args, env)
214
+ fmt, flags, field_width, prec, len_mod, cs_char =
215
+ ConversionSpecifier.scan(fmt_str)
217
216
 
218
217
  case
219
218
  when cs_char.nil?
220
- IncompleteConversionSpecifier.new(format, flags, field_width,
221
- precision, length_modifier)
219
+ IncompleteConversionSpecifier.new(fmt, flags, field_width, prec,
220
+ len_mod)
222
221
  when cs_class = CONVERSION_SPECIFIER_TBL[cs_char]
223
- cs_class.new(format, trailing_args, environment,
224
- flags, field_width, precision, length_modifier, cs_char)
222
+ cs_class.new(fmt, trailing_args, env, flags, field_width, prec,
223
+ len_mod, cs_char)
225
224
  else
226
- UndefinedConversionSpecifier.new(format, flags, field_width,
227
- precision, length_modifier, cs_char)
225
+ UndefinedConversionSpecifier.new(fmt, flags, field_width, prec,
226
+ len_mod, cs_char)
228
227
  end
229
228
  end
230
229
  private_class_method :try_to_create_conversion_specifier
@@ -232,7 +231,7 @@ module C #:nodoc:
232
231
  private_constant :Directive
233
232
 
234
233
  class Ordinary < Directive
235
- def self.scan(format_str)
234
+ def self.scan(fmt_str)
236
235
  # NOTE: The ISO C99 standard says;
237
236
  #
238
237
  # 7.19.6.1 The fprintf function
@@ -245,11 +244,11 @@ module C #:nodoc:
245
244
  # subsequent arguments, converting them, if applicable, according to
246
245
  # the corresponding conversion specifier, and then writing the result
247
246
  # to the output stream.
248
- format_str.slice!(/\A[^%]+/)
247
+ fmt_str.slice!(/\A[^%]+/)
249
248
  end
250
249
 
251
- def initialize(format)
252
- super(format, false)
250
+ def initialize(fmt)
251
+ super(fmt, false)
253
252
  end
254
253
 
255
254
  def conversion_specifier?
@@ -337,7 +336,7 @@ module C #:nodoc:
337
336
  include TypeTableMediator
338
337
  include MemoryPoolMediator
339
338
 
340
- def self.scan(format_str)
339
+ def self.scan(fmt_str)
341
340
  # NOTE: The ISO C99 standard says;
342
341
  #
343
342
  # 7.19.6.1 The fprintf function
@@ -369,51 +368,50 @@ module C #:nodoc:
369
368
  # -- A conversion specifier character that specifies the type of
370
369
  # conversion to be applied.
371
370
 
372
- if header = format_str.slice!(/\A%/)
371
+ if header = fmt_str.slice!(/\A%/)
373
372
  scanned = header
374
373
  else
375
374
  return nil, nil, nil, nil, nil, nil
376
375
  end
377
376
 
378
- if flags = format_str.slice!(/\A#{flags_re}/)
377
+ if flags = fmt_str.slice!(/\A#{flags_re}/)
379
378
  scanned += flags
380
379
  end
381
380
 
382
- if field_width = format_str.slice!(/\A#{field_width_re}/)
381
+ if field_width = fmt_str.slice!(/\A#{field_width_re}/)
383
382
  scanned += field_width
384
383
  end
385
384
 
386
- if precision = format_str.slice!(/\A#{precision_re}/)
387
- scanned += precision
385
+ if prec = fmt_str.slice!(/\A#{precision_re}/)
386
+ scanned += prec
388
387
  end
389
388
 
390
- if length_modifier = format_str.slice!(/\A#{length_modifier_re}/)
391
- scanned += length_modifier
389
+ if len_mod = fmt_str.slice!(/\A#{length_modifier_re}/)
390
+ scanned += len_mod
392
391
  end
393
392
 
394
- if cs_char = format_str.slice!(/\A#{cs_char_re}/)
393
+ if cs_char = fmt_str.slice!(/\A#{cs_char_re}/)
395
394
  scanned += cs_char
396
395
  else
397
396
  # NOTE: If no valid conversion specifier character, force to scan
398
397
  # the heading 1 character as a conversion specifier character.
399
- if cs_char = format_str.slice!(/\A[a-z]/i)
398
+ if cs_char = fmt_str.slice!(/\A[a-z]/i)
400
399
  scanned += cs_char
401
400
  end
402
401
  end
403
402
 
404
- return scanned, flags, field_width, precision, length_modifier, cs_char
403
+ return scanned, flags, field_width, prec, len_mod, cs_char
405
404
  end
406
405
 
407
- def initialize(format, trailing_args, environment, consume_args,
408
- flags, field_width, precision, length_modifier,
409
- conversion_specifier_character)
410
- super(format, consume_args)
406
+ def initialize(fmt, trailing_args, env, consume_args, flags, field_width,
407
+ prec, len_mod, cs_char)
408
+ super(fmt, consume_args)
411
409
 
412
410
  @flags = flags
413
411
  @field_width = field_width
414
- @precision = precision
415
- @length_modifier = length_modifier
416
- @conversion_specifier_character = conversion_specifier_character
412
+ @precision = prec
413
+ @length_modifier = len_mod
414
+ @conversion_specifier_character = cs_char
417
415
 
418
416
  if consume_arguments? && @field_width == "*"
419
417
  @field_width_argument = trailing_args.shift
@@ -433,7 +431,7 @@ module C #:nodoc:
433
431
  @conversion_argument = nil
434
432
  end
435
433
 
436
- @environment = environment
434
+ @environment = env
437
435
  end
438
436
 
439
437
  def conversion_specifier?
@@ -747,13 +745,13 @@ module C #:nodoc:
747
745
  "%#{flags}#{fw}#{pr}#{conversion_specifier_character}"
748
746
  end
749
747
 
750
- def type_table
751
- @environment.type_table
752
- end
748
+ extend Forwardable
753
749
 
754
- def memory_pool
755
- @environment.memory_pool
756
- end
750
+ def_delegator :@environment, :type_table
751
+ private :type_table
752
+
753
+ def_delegator :@environment, :memory_pool
754
+ private :memory_pool
757
755
  end
758
756
  private_constant :ConversionSpecifier
759
757
 
@@ -765,15 +763,15 @@ module C #:nodoc:
765
763
  # Boolean -- True if types of arguments match this directive.
766
764
  def acceptable?
767
765
  if @field_width_argument
768
- unless @field_width_argument.type.convertible?(signed_int_type) ||
769
- @field_width_argument.type.convertible?(unsigned_int_type)
766
+ unless @field_width_argument.type.convertible?(signed_int_t) ||
767
+ @field_width_argument.type.convertible?(unsigned_int_t)
770
768
  return false
771
769
  end
772
770
  end
773
771
 
774
772
  if @precision_argument
775
- unless @precision_argument.type.convertible?(signed_int_type) ||
776
- @precision_argument.type.convertible?(unsigned_int_type)
773
+ unless @precision_argument.type.convertible?(signed_int_t) ||
774
+ @precision_argument.type.convertible?(unsigned_int_t)
777
775
  return false
778
776
  end
779
777
  end
@@ -838,12 +836,10 @@ module C #:nodoc:
838
836
  private_constant :CompleteConversionSpecifier
839
837
 
840
838
  class NumberConversionSpecifier < CompleteConversionSpecifier
841
- def initialize(format, trailing_args, environment,
842
- flags, field_width, precision, length_modifier,
843
- conversion_specifier_character)
844
- super(format, trailing_args, environment, true,
845
- flags, field_width, precision, length_modifier,
846
- conversion_specifier_character)
839
+ def initialize(fmt, trailing_args, env, flags, field_width, prec,
840
+ len_mod, cs_char)
841
+ super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod,
842
+ cs_char)
847
843
  end
848
844
 
849
845
  def valid_conversion_specifier_character?
@@ -852,15 +848,15 @@ module C #:nodoc:
852
848
 
853
849
  def min_length
854
850
  # NOTE: Ruby has the buitin mostly C compliant sprintf.
855
- sprintf(ruby_sprintf_format, 0).length
851
+ (ruby_sprintf_format % 0).length
856
852
  end
857
853
 
858
854
  def max_length
859
855
  # NOTE: Ruby has the buitin mostly C compliant sprintf.
860
856
  if conversion_type.signed?
861
- sprintf(ruby_sprintf_format, conversion_type.min_value).length
857
+ (ruby_sprintf_format % conversion_type.min).length
862
858
  else
863
- sprintf(ruby_sprintf_format, conversion_type.max_value).length
859
+ (ruby_sprintf_format % conversion_type.max).length
864
860
  end
865
861
  end
866
862
 
@@ -951,24 +947,24 @@ module C #:nodoc:
951
947
  # specifier applies to a pointer to a ptrdiff_t argument.
952
948
  case length_modifier
953
949
  when "hh"
954
- [signed_char_type, unsigned_char_type]
950
+ [signed_char_t, unsigned_char_t]
955
951
  when "h"
956
- [signed_short_type, unsigned_short_type]
952
+ [signed_short_t, unsigned_short_t]
957
953
  when "l"
958
- [signed_long_type, unsigned_long_type]
954
+ [signed_long_t, unsigned_long_t]
959
955
  when "ll"
960
- [signed_long_long_type, unsigned_long_long_type]
956
+ [signed_long_long_t, unsigned_long_long_t]
961
957
  when "j"
962
958
  # FIXME: `intmax_t' and `uintmax_t' are not supported yet.
963
- [signed_long_long_type, unsigned_long_long_type]
959
+ [signed_long_long_t, unsigned_long_long_t]
964
960
  when "z"
965
961
  # FIXME: `size_t' is not supported yet.
966
- [unsigned_long_type]
962
+ [unsigned_long_t]
967
963
  when "t"
968
964
  # FIXME: `ptrdiff_t' is not supported yet.
969
- [signed_int_type]
965
+ [signed_int_t]
970
966
  else
971
- [signed_int_type, unsigned_int_type]
967
+ [signed_int_t, unsigned_int_t]
972
968
  end
973
969
  end
974
970
 
@@ -980,48 +976,48 @@ module C #:nodoc:
980
976
  case length_modifier
981
977
  when "hh"
982
978
  if conversion_argument && conversion_argument.type.signed?
983
- signed_char_type
979
+ signed_char_t
984
980
  else
985
- unsigned_char_type
981
+ unsigned_char_t
986
982
  end
987
983
  when "h"
988
984
  if conversion_argument && conversion_argument.type.signed?
989
- signed_short_type
985
+ signed_short_t
990
986
  else
991
- unsigned_short_type
987
+ unsigned_short_t
992
988
  end
993
989
  when "l"
994
990
  if conversion_argument && conversion_argument.type.signed?
995
- signed_long_type
991
+ signed_long_t
996
992
  else
997
- unsigned_long_type
993
+ unsigned_long_t
998
994
  end
999
995
  when "ll"
1000
996
  if conversion_argument && conversion_argument.type.signed?
1001
- signed_long_long_type
997
+ signed_long_long_t
1002
998
  else
1003
- unsigned_long_long_type
999
+ unsigned_long_long_t
1004
1000
  end
1005
1001
  when "j"
1006
1002
  # FIXME: `intmax_t' and `uintmax_t' are not supported yet.
1007
1003
  if conversion_argument && conversion_argument.type.signed?
1008
- signed_long_long_type
1004
+ signed_long_long_t
1009
1005
  else
1010
- unsigned_long_long_type
1006
+ unsigned_long_long_t
1011
1007
  end
1012
1008
  when "z"
1013
1009
  # FIXME: `size_t' is not supported yet.
1014
- unsigned_long_type
1010
+ unsigned_long_t
1015
1011
  when "t"
1016
1012
  # FIXME: `ptrdiff_t' is not supported yet.
1017
- signed_int_type
1013
+ signed_int_t
1018
1014
  else
1019
1015
  default_conversion_type
1020
1016
  end
1021
1017
  end
1022
1018
 
1023
1019
  def default_conversion_type
1024
- signed_int_type
1020
+ signed_int_t
1025
1021
  end
1026
1022
  end
1027
1023
  private_constant :Conversion_d
@@ -1040,7 +1036,7 @@ module C #:nodoc:
1040
1036
 
1041
1037
  private
1042
1038
  def default_conversion_type
1043
- unsigned_int_type
1039
+ unsigned_int_t
1044
1040
  end
1045
1041
  end
1046
1042
  private_constant :Conversion_o
@@ -1140,11 +1136,11 @@ module C #:nodoc:
1140
1136
  # conversion specifier applies to a long double argument.
1141
1137
  case length_modifier
1142
1138
  when "L"
1143
- [long_double_type]
1139
+ [long_double_t]
1144
1140
  else
1145
1141
  # NOTE: The argument will be argument promoted, so float type should
1146
1142
  # be acceptable, too.
1147
- [float_type, double_type]
1143
+ [float_t, double_t]
1148
1144
  end
1149
1145
  end
1150
1146
 
@@ -1155,9 +1151,9 @@ module C #:nodoc:
1155
1151
  def conversion_type
1156
1152
  case length_modifier
1157
1153
  when "L"
1158
- long_double_type
1154
+ long_double_t
1159
1155
  else
1160
- double_type
1156
+ double_t
1161
1157
  end
1162
1158
  end
1163
1159
  end
@@ -1246,12 +1242,10 @@ module C #:nodoc:
1246
1242
  private_constant :Conversion_A
1247
1243
 
1248
1244
  class CharacterConversionSpecifier < CompleteConversionSpecifier
1249
- def initialize(format, trailing_args, environment,
1250
- flags, field_width, precision, length_modifier,
1251
- conversion_specifier_character)
1252
- super(format, trailing_args, environment, true,
1253
- flags, field_width, precision, length_modifier,
1254
- conversion_specifier_character)
1245
+ def initialize(fmt, trailing_args, env, flags, field_width, prec,
1246
+ len_mod, cs_char)
1247
+ super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod,
1248
+ cs_char)
1255
1249
  end
1256
1250
 
1257
1251
  def valid_conversion_specifier_character?
@@ -1260,7 +1254,7 @@ module C #:nodoc:
1260
1254
 
1261
1255
  def min_length
1262
1256
  # NOTE: Ruby has the buitin mostly C compliant sprintf.
1263
- sprintf(ruby_sprintf_format, " ").length
1257
+ (ruby_sprintf_format % " ").length
1264
1258
  end
1265
1259
 
1266
1260
  def max_length
@@ -1297,13 +1291,13 @@ module C #:nodoc:
1297
1291
  case length_modifier
1298
1292
  when "l"
1299
1293
  # FIXME: `wint_t' is not supported yet.
1300
- [wchar_type]
1294
+ [wchar_t]
1301
1295
  else
1302
1296
  # NOTE: The argument will be integer promoted, so the argument type
1303
1297
  # whose conversion-rank is less than one of the int should be
1304
1298
  # acceptable, too.
1305
- [signed_char_type, unsigned_char_type, signed_short_type,
1306
- unsigned_short_type, signed_int_type, unsigned_int_type]
1299
+ [signed_char_t, unsigned_char_t, signed_short_t,
1300
+ unsigned_short_t, signed_int_t, unsigned_int_t]
1307
1301
  end
1308
1302
  end
1309
1303
 
@@ -1314,12 +1308,10 @@ module C #:nodoc:
1314
1308
  private_constant :Conversion_c
1315
1309
 
1316
1310
  class StringConversionSpecifier < CompleteConversionSpecifier
1317
- def initialize(format, trailing_args, environment,
1318
- flags, field_width, precision, length_modifier,
1319
- conversion_specifier_character)
1320
- super(format, trailing_args, environment, true,
1321
- flags, field_width, precision, length_modifier,
1322
- conversion_specifier_character)
1311
+ def initialize(fmt, trailing_args, env, flags, field_width, prec,
1312
+ len_mod, cs_char)
1313
+ super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod,
1314
+ cs_char)
1323
1315
  end
1324
1316
 
1325
1317
  def valid_conversion_specifier_character?
@@ -1328,15 +1320,15 @@ module C #:nodoc:
1328
1320
 
1329
1321
  def min_length
1330
1322
  # NOTE: Ruby has the buitin mostly C compliant sprintf.
1331
- sprintf(ruby_sprintf_format, "").length
1323
+ (ruby_sprintf_format % "").length
1332
1324
  end
1333
1325
 
1334
1326
  def max_length
1335
1327
  # NOTE: Ruby has the buitin mostly C compliant sprintf.
1336
1328
  if conversion_argument && conversion_argument.type.pointer? and
1337
1329
  pointee = pointee_of(conversion_argument) and pointee.type.array?
1338
- length = pointee.type.length ? pointee.type.length - 1 : 0
1339
- sprintf(ruby_sprintf_format, " " * length).length
1330
+ len = pointee.type.length ? pointee.type.length - 1 : 0
1331
+ (ruby_sprintf_format % (" " * len)).length
1340
1332
  else
1341
1333
  min_length
1342
1334
  end
@@ -1371,10 +1363,10 @@ module C #:nodoc:
1371
1363
  # or G conversion specifier.
1372
1364
  case length_modifier
1373
1365
  when "l"
1374
- [pointer_type(qualified_type(wchar_type, :const))]
1366
+ [pointer_type(qualified_type(wchar_t, :const))]
1375
1367
  else
1376
- [pointer_type(qualified_type(signed_char_type, :const)),
1377
- pointer_type(qualified_type(unsigned_char_type, :const))]
1368
+ [pointer_type(qualified_type(signed_char_t, :const)),
1369
+ pointer_type(qualified_type(unsigned_char_t, :const))]
1378
1370
  end
1379
1371
  end
1380
1372
 
@@ -1392,14 +1384,13 @@ module C #:nodoc:
1392
1384
  def min_length
1393
1385
  # NOTE: `%p' conversion specifier of the Ruby's builtin sprintf does
1394
1386
  # not convert the argument.
1395
- sprintf("%##{flags}#{field_width}#{precision}x", 0).length
1387
+ ("%##{flags}#{field_width}#{precision}x" % 0).length
1396
1388
  end
1397
1389
 
1398
1390
  def max_length
1399
1391
  # NOTE: `%p' conversion specifier of the Ruby's builtin sprintf does
1400
1392
  # not convert the argument.
1401
- sprintf("%##{flags}#{field_width}#{precision}x",
1402
- conversion_type.max_value).length
1393
+ ("%##{flags}#{field_width}#{precision}x" % conversion_type.max).length
1403
1394
  end
1404
1395
 
1405
1396
  private
@@ -1411,7 +1402,7 @@ module C #:nodoc:
1411
1402
  if conversion_argument && conversion_argument.type.pointer?
1412
1403
  [conversion_argument.type.unqualify]
1413
1404
  else
1414
- [pointer_type(qualified_type(void_type, :const))]
1405
+ [pointer_type(qualified_type(void_t, :const))]
1415
1406
  end
1416
1407
  end
1417
1408
 
@@ -1420,7 +1411,7 @@ module C #:nodoc:
1420
1411
  end
1421
1412
 
1422
1413
  def conversion_type
1423
- pointer_type(void_type)
1414
+ pointer_type(void_t)
1424
1415
  end
1425
1416
  end
1426
1417
  private_constant :Conversion_p
@@ -1430,12 +1421,10 @@ module C #:nodoc:
1430
1421
  "n"
1431
1422
  end
1432
1423
 
1433
- def initialize(format, trailing_args, environment,
1434
- flags, field_width, precision, length_modifier,
1435
- conversion_specifier_character)
1436
- super(format, trailing_args, environment, true,
1437
- flags, field_width, precision, length_modifier,
1438
- conversion_specifier_character)
1424
+ def initialize(fmt, trailing_args, env, flags, field_width, prec,
1425
+ len_mod, cs_char)
1426
+ super(fmt, trailing_args, env, true, flags, field_width, prec, len_mod,
1427
+ cs_char)
1439
1428
  end
1440
1429
 
1441
1430
  def valid_conversion_specifier_character?
@@ -1503,24 +1492,24 @@ module C #:nodoc:
1503
1492
  # specifier applies to a pointer to a ptrdiff_t argument.
1504
1493
  case length_modifier
1505
1494
  when "hh"
1506
- [pointer_type(qualified_type(signed_char_type, :const))]
1495
+ [pointer_type(qualified_type(signed_char_t, :const))]
1507
1496
  when "h"
1508
- [pointer_type(qualified_type(signed_short_type, :const))]
1497
+ [pointer_type(qualified_type(signed_short_t, :const))]
1509
1498
  when "l"
1510
- [pointer_type(qualified_type(signed_long_type, :const))]
1499
+ [pointer_type(qualified_type(signed_long_t, :const))]
1511
1500
  when "ll"
1512
- [pointer_type(qualified_type(signed_long_long_type, :const))]
1501
+ [pointer_type(qualified_type(signed_long_long_t, :const))]
1513
1502
  when "j"
1514
1503
  # FIXME: `intmax_t' is not supported yet.
1515
- [pointer_type(qualified_type(signed_long_long_type, :const))]
1504
+ [pointer_type(qualified_type(signed_long_long_t, :const))]
1516
1505
  when "z"
1517
1506
  # FIXME: `size_t' is not supported yet.
1518
- [pointer_type(qualified_type(signed_long_type, :const))]
1507
+ [pointer_type(qualified_type(signed_long_t, :const))]
1519
1508
  when "t"
1520
1509
  # FIXME: `ptrdiff_t' is not supported yet.
1521
- [pointer_type(qualified_type(signed_int_type, :const))]
1510
+ [pointer_type(qualified_type(signed_int_t, :const))]
1522
1511
  else
1523
- [pointer_type(qualified_type(signed_int_type, :const))]
1512
+ [pointer_type(qualified_type(signed_int_t, :const))]
1524
1513
  end
1525
1514
  end
1526
1515
 
@@ -1535,12 +1524,10 @@ module C #:nodoc:
1535
1524
  "%"
1536
1525
  end
1537
1526
 
1538
- def initialize(format, trailing_args, environment,
1539
- flags, field_width, precision, length_modifier,
1540
- conversion_specifier_character)
1541
- super(format, trailing_args, environment, false,
1542
- flags, field_width, precision, length_modifier,
1543
- conversion_specifier_character)
1527
+ def initialize(fmt, trailing_args, env, flags, field_width, prec,
1528
+ len_mod, cs_char)
1529
+ super(fmt, trailing_args, env, false, flags, field_width, prec,
1530
+ len_mod, cs_char)
1544
1531
  end
1545
1532
 
1546
1533
  def valid_flags?
@@ -1587,11 +1574,8 @@ module C #:nodoc:
1587
1574
  private_constant :Conversion_percent
1588
1575
 
1589
1576
  class UndefinedConversionSpecifier < CompleteConversionSpecifier
1590
- def initialize(format, flags, field_width, precision, length_modifier,
1591
- conversion_specifier_character)
1592
- super(format, [], nil, false,
1593
- flags, field_width, precision, length_modifier,
1594
- conversion_specifier_character)
1577
+ def initialize(fmt, flags, field_width, prec, len_mod, cs_char)
1578
+ super(fmt, [], nil, false, flags, field_width, prec, len_mod, cs_char)
1595
1579
  end
1596
1580
 
1597
1581
  def undefined?
@@ -1626,9 +1610,8 @@ module C #:nodoc:
1626
1610
  private_constant :UndefinedConversionSpecifier
1627
1611
 
1628
1612
  class IncompleteConversionSpecifier < ConversionSpecifier
1629
- def initialize(format, flags, field_width, precision, length_modifier)
1630
- super(format, [], nil, false,
1631
- flags, field_width, precision, length_modifier, nil)
1613
+ def initialize(fmt, flags, field_width, prec, len_mod)
1614
+ super(fmt, [], nil, false, flags, field_width, prec, len_mod, nil)
1632
1615
  end
1633
1616
 
1634
1617
  # === DESCRIPTION
@@ -1724,9 +1707,9 @@ module C #:nodoc:
1724
1707
  end
1725
1708
 
1726
1709
  class ScanfFormat
1727
- def initialize(format_str, location, trailing_args, environment)
1728
- @location = location
1729
- @directives = create_directives(format_str, trailing_args, environment)
1710
+ def initialize(fmt_str, loc, trailing_args, env)
1711
+ @location = loc
1712
+ @directives = create_directives(fmt_str, trailing_args, env)
1730
1713
  @extra_arguments = trailing_args
1731
1714
  end
1732
1715
 
@@ -1735,57 +1718,57 @@ module C #:nodoc:
1735
1718
  attr_reader :extra_arguments
1736
1719
 
1737
1720
  def conversion_specifiers
1738
- @directives.select { |directive| directive.conversion_specifier? }
1721
+ @directives.select { |dire| dire.conversion_specifier? }
1739
1722
  end
1740
1723
 
1741
1724
  private
1742
- def create_directives(format_str, trailing_args, environment)
1743
- directives = []
1744
- str = format_str.dup
1725
+ def create_directives(fmt_str, trailing_args, env)
1726
+ dires = []
1727
+ str = fmt_str.dup
1745
1728
  until str.empty?
1746
- directives.push(Directive.guess(str, trailing_args, environment))
1729
+ dires.push(Directive.guess(str, trailing_args, env))
1747
1730
  end
1748
- directives
1731
+ dires
1749
1732
  end
1750
1733
 
1751
1734
  # == DESCRIPTION
1752
1735
  # === Directive class hierarchy
1753
1736
  # Directive
1754
- # <--- Whitespace
1755
- # <--- Ordinary
1756
- # <--- ConversionSpecifier
1757
- # <--- CompleteConversionSpecifier
1758
- # <--- Conversion_d
1759
- # <--- Conversion_i
1760
- # <--- Conversion_o
1761
- # <--- Conversion_u
1762
- # <--- Conversion_x
1763
- # <--- Conversion_X
1764
- # <--- Conversion_a
1765
- # <--- Conversion_A
1766
- # <--- Conversion_e
1767
- # <--- Conversion_E
1768
- # <--- Conversion_f
1769
- # <--- Conversion_F
1770
- # <--- Conversion_g
1771
- # <--- Conversion_G
1772
- # <--- Conversion_c
1773
- # <--- Conversion_s
1774
- # <--- Conversion_bracket
1775
- # <--- Conversion_p
1776
- # <--- Conversion_n
1777
- # <--- Conversion_percent
1778
- # <--- UndefinedConversionSpecifier
1779
- # <--- IncompleteConversionSpecifier
1737
+ # <-- Whitespace
1738
+ # <-- Ordinary
1739
+ # <-- ConversionSpecifier
1740
+ # <-- CompleteConversionSpecifier
1741
+ # <-- Conversion_d
1742
+ # <-- Conversion_i
1743
+ # <-- Conversion_o
1744
+ # <-- Conversion_u
1745
+ # <-- Conversion_x
1746
+ # <-- Conversion_X
1747
+ # <-- Conversion_a
1748
+ # <-- Conversion_A
1749
+ # <-- Conversion_e
1750
+ # <-- Conversion_E
1751
+ # <-- Conversion_f
1752
+ # <-- Conversion_F
1753
+ # <-- Conversion_g
1754
+ # <-- Conversion_G
1755
+ # <-- Conversion_c
1756
+ # <-- Conversion_s
1757
+ # <-- Conversion_bracket
1758
+ # <-- Conversion_p
1759
+ # <-- Conversion_n
1760
+ # <-- Conversion_percent
1761
+ # <-- UndefinedConversionSpecifier
1762
+ # <-- IncompleteConversionSpecifier
1780
1763
  class Directive
1781
- def self.guess(format_str, trailing_args, environ)
1782
- try_to_create_whitespace(format_str) or
1783
- try_to_create_ordinary(format_str) or
1784
- try_to_create_conversion_specifier(format_str, trailing_args, environ)
1764
+ def self.guess(fmt_str, trailing_args, env)
1765
+ try_to_create_whitespace(fmt_str) or
1766
+ try_to_create_ordinary(fmt_str) or
1767
+ try_to_create_conversion_specifier(fmt_str, trailing_args, env)
1785
1768
  end
1786
1769
 
1787
- def initialize(format)
1788
- @format = format
1770
+ def initialize(fmt)
1771
+ @format = fmt
1789
1772
  end
1790
1773
 
1791
1774
  attr_reader :format
@@ -1881,34 +1864,33 @@ module C #:nodoc:
1881
1864
  subclass_responsibility
1882
1865
  end
1883
1866
 
1884
- def self.try_to_create_whitespace(format_str)
1885
- (format = Whitespace.scan(format_str)) ? Whitespace.new(format) : nil
1867
+ def self.try_to_create_whitespace(fmt_str)
1868
+ (fmt = Whitespace.scan(fmt_str)) ? Whitespace.new(fmt) : nil
1886
1869
  end
1887
1870
  private_class_method :try_to_create_whitespace
1888
1871
 
1889
- def self.try_to_create_ordinary(format_str)
1890
- (format = Ordinary.scan(format_str)) ? Ordinary.new(format) : nil
1872
+ def self.try_to_create_ordinary(fmt_str)
1873
+ (fmt = Ordinary.scan(fmt_str)) ? Ordinary.new(fmt) : nil
1891
1874
  end
1892
1875
  private_class_method :try_to_create_ordinary
1893
1876
 
1894
- def self.try_to_create_conversion_specifier(format_str,
1895
- trailing_args, environment)
1896
- format, as_char, field_width, length_modifier, cs_char, scanset =
1897
- ConversionSpecifier.scan(format_str)
1877
+ def self.try_to_create_conversion_specifier(fmt_str, trailing_args, env)
1878
+ fmt, as_char, field_width, len_mod, cs_char, scanset =
1879
+ ConversionSpecifier.scan(fmt_str)
1898
1880
 
1899
1881
  case
1900
1882
  when cs_char.nil?
1901
- IncompleteConversionSpecifier.new(format, as_char, field_width,
1902
- length_modifier, nil)
1883
+ IncompleteConversionSpecifier.new(fmt, as_char, field_width, len_mod,
1884
+ nil)
1903
1885
  when cs_char == "[" && scanset.nil?
1904
- IncompleteConversionSpecifier.new(format, as_char, field_width,
1905
- length_modifier, cs_char)
1886
+ IncompleteConversionSpecifier.new(fmt, as_char, field_width, len_mod,
1887
+ cs_char)
1906
1888
  when cs_class = CONVERSION_SPECIFIER_TBL[cs_char]
1907
- cs_class.new(format, trailing_args, environment,
1908
- as_char, field_width, length_modifier, cs_char, scanset)
1889
+ cs_class.new(fmt, trailing_args, env, as_char, field_width, len_mod,
1890
+ cs_char, scanset)
1909
1891
  else
1910
- UndefinedConversionSpecifier.new(format, as_char, field_width,
1911
- length_modifier, cs_char)
1892
+ UndefinedConversionSpecifier.new(fmt, as_char, field_width, len_mod,
1893
+ cs_char)
1912
1894
  end
1913
1895
  end
1914
1896
  private_class_method :try_to_create_conversion_specifier
@@ -1916,7 +1898,7 @@ module C #:nodoc:
1916
1898
  private_constant :Directive
1917
1899
 
1918
1900
  class Whitespace < Directive
1919
- def self.scan(format_str)
1901
+ def self.scan(fmt_str)
1920
1902
  # NOTE: The ISO C99 standard says;
1921
1903
  #
1922
1904
  # 7.19.6.2 The fscanf function
@@ -1936,7 +1918,7 @@ module C #:nodoc:
1936
1918
  # receiving object.
1937
1919
  # -- A conversion specifier character that specifies the type of
1938
1920
  # conversion to be applied.
1939
- format_str.slice!(/\A\s+/)
1921
+ fmt_str.slice!(/\A\s+/)
1940
1922
  end
1941
1923
 
1942
1924
  def whitespace?
@@ -2025,7 +2007,7 @@ module C #:nodoc:
2025
2007
  private_constant :Whitespace
2026
2008
 
2027
2009
  class Ordinary < Directive
2028
- def self.scan(format_str)
2010
+ def self.scan(fmt_str)
2029
2011
  # NOTE: The ISO C99 standard says;
2030
2012
  #
2031
2013
  # 7.19.6.2 The fscanf function
@@ -2045,7 +2027,7 @@ module C #:nodoc:
2045
2027
  # receiving object.
2046
2028
  # -- A conversion specifier character that specifies the type of
2047
2029
  # conversion to be applied.
2048
- format_str.slice!(/\A[^%\s]+/)
2030
+ fmt_str.slice!(/\A[^%\s]+/)
2049
2031
  end
2050
2032
 
2051
2033
  def whitespace?
@@ -2136,7 +2118,7 @@ module C #:nodoc:
2136
2118
  class ConversionSpecifier < Directive
2137
2119
  include TypeTableMediator
2138
2120
 
2139
- def self.scan(format_str)
2121
+ def self.scan(fmt_str)
2140
2122
  # NOTE: The ISO C99 standard says;
2141
2123
  #
2142
2124
  # 7.19.6.2 The fscanf function
@@ -2157,60 +2139,59 @@ module C #:nodoc:
2157
2139
  # -- A conversion specifier character that specifies the type of
2158
2140
  # conversion to be applied.
2159
2141
 
2160
- if header = format_str.slice!(/\A%/)
2142
+ if header = fmt_str.slice!(/\A%/)
2161
2143
  scanned = header
2162
2144
  else
2163
2145
  return nil, nil, nil, nil, nil, nil
2164
2146
  end
2165
2147
 
2166
- if as_char = format_str.slice!(/\A#{as_char_re}/)
2148
+ if as_char = fmt_str.slice!(/\A#{as_char_re}/)
2167
2149
  scanned += as_char
2168
2150
  end
2169
2151
 
2170
- if field_width = format_str.slice!(/\A#{field_width_re}/)
2152
+ if field_width = fmt_str.slice!(/\A#{field_width_re}/)
2171
2153
  scanned += field_width
2172
2154
  end
2173
2155
 
2174
- if length_modifier = format_str.slice!(/\A#{length_modifier_re}/)
2175
- scanned += length_modifier
2156
+ if len_mod = fmt_str.slice!(/\A#{length_modifier_re}/)
2157
+ scanned += len_mod
2176
2158
  end
2177
2159
 
2178
- if cs_char = format_str.slice!(/\A#{cs_char_re}/)
2160
+ if cs_char = fmt_str.slice!(/\A#{cs_char_re}/)
2179
2161
  scanned += cs_char
2180
2162
  else
2181
2163
  # NOTE: If no valid conversion specifier character, force to scan
2182
2164
  # the heading 1 character as a conversion specifier character.
2183
- if cs_char = format_str.slice!(/\A[a-z]/i)
2165
+ if cs_char = fmt_str.slice!(/\A[a-z]/i)
2184
2166
  scanned += cs_char
2185
2167
  end
2186
2168
  end
2187
2169
 
2188
2170
  if cs_char == "["
2189
- if scanset = format_str.slice!(/\A#{scanset_re}/)
2171
+ if scanset = fmt_str.slice!(/\A#{scanset_re}/)
2190
2172
  scanned += scanset
2191
2173
  end
2192
2174
  else
2193
2175
  scanset = nil
2194
2176
  end
2195
2177
 
2196
- return scanned, as_char, field_width, length_modifier, cs_char, scanset
2178
+ return scanned, as_char, field_width, len_mod, cs_char, scanset
2197
2179
  end
2198
2180
 
2199
- def initialize(format, trailing_args, environment, consume_args,
2200
- assignment_suppressing_character, field_width,
2201
- length_modifier, conversion_specifier_character, scanset)
2202
- super(format)
2181
+ def initialize(fmt, trailing_args, env, consume_args, as_char,
2182
+ field_width, len_mod, cs_char, scanset)
2183
+ super(fmt)
2203
2184
 
2204
- if assignment_suppressing_character == "*"
2185
+ if as_char == "*"
2205
2186
  @consume_arguments = false
2206
2187
  else
2207
2188
  @consume_arguments = consume_args
2208
2189
  end
2209
2190
 
2210
- @assignment_suppressing_character = assignment_suppressing_character
2191
+ @assignment_suppressing_character = as_char
2211
2192
  @field_width = field_width
2212
- @length_modifier = length_modifier
2213
- @conversion_specifier_character = conversion_specifier_character
2193
+ @length_modifier = len_mod
2194
+ @conversion_specifier_character = cs_char
2214
2195
  @scanset = scanset
2215
2196
 
2216
2197
  if consume_arguments?
@@ -2219,7 +2200,7 @@ module C #:nodoc:
2219
2200
  @conversion_argument = nil
2220
2201
  end
2221
2202
 
2222
- @environment = environment
2203
+ @environment = env
2223
2204
  end
2224
2205
 
2225
2206
  def whitespace?
@@ -2486,10 +2467,10 @@ module C #:nodoc:
2486
2467
  end
2487
2468
  private_class_method :scanset_re
2488
2469
 
2489
- private
2490
- def type_table
2491
- @environment.type_table
2492
- end
2470
+ extend Forwardable
2471
+
2472
+ def_delegator :@environment, :type_table
2473
+ private :type_table
2493
2474
  end
2494
2475
  private_constant :ConversionSpecifier
2495
2476
 
@@ -2556,12 +2537,10 @@ module C #:nodoc:
2556
2537
  "d"
2557
2538
  end
2558
2539
 
2559
- def initialize(format, trailing_args, environment,
2560
- assignment_suppressing_character, field_width,
2561
- length_modifier, conversion_specifier_character, scanset)
2562
- super(format, trailing_args, environment, true,
2563
- assignment_suppressing_character, field_width,
2564
- length_modifier, conversion_specifier_character, scanset)
2540
+ def initialize(fmt, trailing_args, env, as_char, field_width, len_mod,
2541
+ cs_char, scanset)
2542
+ super(fmt, trailing_args, env, true, as_char, field_width, len_mod,
2543
+ cs_char, scanset)
2565
2544
  end
2566
2545
 
2567
2546
  def valid_assignment_suppressing_character?
@@ -2614,24 +2593,24 @@ module C #:nodoc:
2614
2593
  # or the corresponding unsigned integer type.
2615
2594
  case length_modifier
2616
2595
  when "hh"
2617
- [pointer_type(signed_char_type), pointer_type(unsigned_char_type)]
2596
+ [pointer_type(signed_char_t), pointer_type(unsigned_char_t)]
2618
2597
  when "h"
2619
- [pointer_type(signed_short_type), pointer_type(unsigned_short_type)]
2598
+ [pointer_type(signed_short_t), pointer_type(unsigned_short_t)]
2620
2599
  when "l"
2621
- [pointer_type(signed_long_type), pointer_type(unsigned_long_type)]
2600
+ [pointer_type(signed_long_t), pointer_type(unsigned_long_t)]
2622
2601
  when "ll"
2623
- [pointer_type(signed_long_long_type),
2624
- pointer_type(unsigned_long_long_type)]
2602
+ [pointer_type(signed_long_long_t),
2603
+ pointer_type(unsigned_long_long_t)]
2625
2604
  when "j"
2626
2605
  # FIXME: `intmax_t' and `uintmax_t' are not supported yet.
2627
- [pointer_type(signed_long_long_type),
2628
- pointer_type(unsigned_long_long_type)]
2606
+ [pointer_type(signed_long_long_t),
2607
+ pointer_type(unsigned_long_long_t)]
2629
2608
  when "z"
2630
2609
  # FIXME: `size_t' is not supported yet.
2631
- [pointer_type(signed_long_type), pointer_type(unsigned_long_type)]
2610
+ [pointer_type(signed_long_t), pointer_type(unsigned_long_t)]
2632
2611
  when "t"
2633
2612
  # FIXME: `ptrdiff_t' is not supported yet.
2634
- [pointer_type(signed_int_type), pointer_type(unsigned_int_type)]
2613
+ [pointer_type(signed_int_t), pointer_type(unsigned_int_t)]
2635
2614
  else
2636
2615
  default_argument_types
2637
2616
  end
@@ -2642,7 +2621,7 @@ module C #:nodoc:
2642
2621
  end
2643
2622
 
2644
2623
  def default_argument_types
2645
- [pointer_type(signed_int_type)]
2624
+ [pointer_type(signed_int_t)]
2646
2625
  end
2647
2626
  end
2648
2627
  private_constant :Conversion_d
@@ -2661,7 +2640,7 @@ module C #:nodoc:
2661
2640
 
2662
2641
  private
2663
2642
  def default_argument_types
2664
- [pointer_type(unsigned_int_type)]
2643
+ [pointer_type(unsigned_int_t)]
2665
2644
  end
2666
2645
  end
2667
2646
  private_constant :Conversion_o
@@ -2692,12 +2671,10 @@ module C #:nodoc:
2692
2671
  "a"
2693
2672
  end
2694
2673
 
2695
- def initialize(format, trailing_args, environment,
2696
- assignment_suppressing_character, field_width,
2697
- length_modifier, conversion_specifier_character, scanset)
2698
- super(format, trailing_args, environment, true,
2699
- assignment_suppressing_character, field_width,
2700
- length_modifier, conversion_specifier_character, scanset)
2674
+ def initialize(fmt, trailing_args, env, as_char, field_width, len_mod,
2675
+ cs_char, scanset)
2676
+ super(fmt, trailing_args, env, true, as_char, field_width, len_mod,
2677
+ cs_char, scanset)
2701
2678
  end
2702
2679
 
2703
2680
  def valid_assignment_suppressing_character?
@@ -2735,11 +2712,11 @@ module C #:nodoc:
2735
2712
  # double.
2736
2713
  case length_modifier
2737
2714
  when "l"
2738
- [pointer_type(double_type)]
2715
+ [pointer_type(double_t)]
2739
2716
  when "L"
2740
- [pointer_type(long_double_type)]
2717
+ [pointer_type(long_double_t)]
2741
2718
  else
2742
- [pointer_type(float_type)]
2719
+ [pointer_type(float_t)]
2743
2720
  end
2744
2721
  end
2745
2722
 
@@ -2803,12 +2780,10 @@ module C #:nodoc:
2803
2780
  "c"
2804
2781
  end
2805
2782
 
2806
- def initialize(format, trailing_args, environment,
2807
- assignment_suppressing_character, field_width,
2808
- length_modifier, conversion_specifier_character, scanset)
2809
- super(format, trailing_args, environment, true,
2810
- assignment_suppressing_character, field_width,
2811
- length_modifier, conversion_specifier_character, scanset)
2783
+ def initialize(fmt, trailing_args, env, as_char, field_width, len_mod,
2784
+ cs_char, scanset)
2785
+ super(fmt, trailing_args, env, true, as_char, field_width, len_mod,
2786
+ cs_char, scanset)
2812
2787
  end
2813
2788
 
2814
2789
  def valid_assignment_suppressing_character?
@@ -2843,9 +2818,9 @@ module C #:nodoc:
2843
2818
  # applies to an argument with type pointer to wchar_t.
2844
2819
  case length_modifier
2845
2820
  when "l"
2846
- [pointer_type(wchar_type)]
2821
+ [pointer_type(wchar_t)]
2847
2822
  else
2848
- [pointer_type(signed_char_type), pointer_type(unsigned_char_type)]
2823
+ [pointer_type(signed_char_t), pointer_type(unsigned_char_t)]
2849
2824
  end
2850
2825
  end
2851
2826
 
@@ -2871,9 +2846,9 @@ module C #:nodoc:
2871
2846
  # NOTE: The `-' character in the scanset causes implementation-defined
2872
2847
  # behavior. So, AdLint treats the `-' character as an ordinary
2873
2848
  # character in the scanset.
2874
- orig_set = scanset.chop.chars.to_a
2875
- uniq_set = orig_set.uniq
2876
- orig_set.size == uniq_set.size
2849
+ org_set = scanset.chop.chars.to_a
2850
+ uniq_set = org_set.uniq
2851
+ org_set.size == uniq_set.size
2877
2852
  end
2878
2853
  end
2879
2854
  private_constant :Conversion_bracket
@@ -2883,12 +2858,10 @@ module C #:nodoc:
2883
2858
  "p"
2884
2859
  end
2885
2860
 
2886
- def initialize(format, trailing_args, environment,
2887
- assignment_suppressing_character, field_width,
2888
- length_modifier, conversion_specifier_character, scanset)
2889
- super(format, trailing_args, environment, true,
2890
- assignment_suppressing_character, field_width,
2891
- length_modifier, conversion_specifier_character, scanset)
2861
+ def initialize(fmt, trailing_args, env, as_char, field_width, len_mod,
2862
+ cs_char, scanset)
2863
+ super(fmt, trailing_args, env, true, as_char, field_width, len_mod,
2864
+ cs_char, scanset)
2892
2865
  end
2893
2866
 
2894
2867
  def valid_assignment_suppressing_character?
@@ -2912,7 +2885,7 @@ module C #:nodoc:
2912
2885
  if conversion_argument && conversion_argument.type.pointer?
2913
2886
  [conversion_argument.type.unqualify]
2914
2887
  else
2915
- [pointer_type(void_type)]
2888
+ [pointer_type(void_t)]
2916
2889
  end
2917
2890
  end
2918
2891
 
@@ -2927,12 +2900,10 @@ module C #:nodoc:
2927
2900
  "n"
2928
2901
  end
2929
2902
 
2930
- def initialize(format, trailing_args, environment,
2931
- assignment_suppressing_character, field_width,
2932
- length_modifier, conversion_specifier_character, scanset)
2933
- super(format, trailing_args, environment, true,
2934
- assignment_suppressing_character, field_width,
2935
- length_modifier, conversion_specifier_character, scanset)
2903
+ def initialize(fmt, trailing_args, env, as_char, field_width, len_mod,
2904
+ cs_char, scanset)
2905
+ super(fmt, trailing_args, env, true, as_char, field_width, len_mod,
2906
+ cs_char, scanset)
2936
2907
  end
2937
2908
 
2938
2909
  def valid_assignment_suppressing_character?
@@ -3001,26 +2972,26 @@ module C #:nodoc:
3001
2972
  # or the corresponding unsigned integer type.
3002
2973
  case length_modifier
3003
2974
  when "hh"
3004
- [pointer_type(signed_char_type), pointer_type(unsigned_char_type)]
2975
+ [pointer_type(signed_char_t), pointer_type(unsigned_char_t)]
3005
2976
  when "h"
3006
- [pointer_type(signed_short_type), pointer_type(unsigned_short_type)]
2977
+ [pointer_type(signed_short_t), pointer_type(unsigned_short_t)]
3007
2978
  when "l"
3008
- [pointer_type(signed_long_type), pointer_type(unsigned_long_type)]
2979
+ [pointer_type(signed_long_t), pointer_type(unsigned_long_t)]
3009
2980
  when "ll"
3010
- [pointer_type(signed_long_long_type),
3011
- pointer_type(unsigned_long_long_type)]
2981
+ [pointer_type(signed_long_long_t),
2982
+ pointer_type(unsigned_long_long_t)]
3012
2983
  when "j"
3013
2984
  # FIXME: `intmax_t' and `uintmax_t' are not supported yet.
3014
- [pointer_type(signed_long_long_type),
3015
- pointer_type(unsigned_long_long_type)]
2985
+ [pointer_type(signed_long_long_t),
2986
+ pointer_type(unsigned_long_long_t)]
3016
2987
  when "z"
3017
2988
  # FIXME: `size_t' is not supported yet.
3018
- [pointer_type(signed_long_type), pointer_type(unsigned_long_type)]
2989
+ [pointer_type(signed_long_t), pointer_type(unsigned_long_t)]
3019
2990
  when "t"
3020
2991
  # FIXME: `ptrdiff_t' is not supported yet.
3021
- [pointer_type(signed_int_type), pointer_type(unsigned_int_type)]
2992
+ [pointer_type(signed_int_t), pointer_type(unsigned_int_t)]
3022
2993
  else
3023
- [pointer_type(signed_int_type)]
2994
+ [pointer_type(signed_int_t)]
3024
2995
  end
3025
2996
  end
3026
2997
 
@@ -3035,12 +3006,10 @@ module C #:nodoc:
3035
3006
  "%"
3036
3007
  end
3037
3008
 
3038
- def initialize(format, trailing_args, environment,
3039
- assignment_suppressing_character, field_width,
3040
- length_modifier, conversion_specifier_character, scanset)
3041
- super(format, trailing_args, environment, false,
3042
- assignment_suppressing_character, field_width,
3043
- length_modifier, conversion_specifier_character, scanset)
3009
+ def initialize(fmt, trailing_args, env, as_char, field_width, len_mod,
3010
+ cs_char, scanset)
3011
+ super(fmt, trailing_args, env, false, as_char, field_width, len_mod,
3012
+ cs_char, scanset)
3044
3013
  end
3045
3014
 
3046
3015
  def valid_assignment_suppressing_character?
@@ -3080,11 +3049,8 @@ module C #:nodoc:
3080
3049
  private_constant :Conversion_percent
3081
3050
 
3082
3051
  class UndefinedConversionSpecifier < CompleteConversionSpecifier
3083
- def initialize(format, assignment_suppressing_character, field_width,
3084
- length_modifier, conversion_specifier_character)
3085
- super(format, [], nil, false,
3086
- assignment_suppressing_character, field_width,
3087
- length_modifier, conversion_specifier_character, nil)
3052
+ def initialize(fmt, as_char, field_width, len_mod, cs_char)
3053
+ super(fmt, [], nil, false, as_char, field_width, len_mod, cs_char, nil)
3088
3054
  end
3089
3055
 
3090
3056
  def undefined?
@@ -3119,11 +3085,8 @@ module C #:nodoc:
3119
3085
  private_constant :UndefinedConversionSpecifier
3120
3086
 
3121
3087
  class IncompleteConversionSpecifier < ConversionSpecifier
3122
- def initialize(format, assignment_suppressing_character, field_width,
3123
- length_modifier, conversion_specifier_character)
3124
- super(format, [], nil, false, assignment_suppressing_character,
3125
- field_width, length_modifier, conversion_specifier_character,
3126
- nil)
3088
+ def initialize(fmt, as_char, field_width, len_mod, cs_char)
3089
+ super(fmt, [], nil, false, as_char, field_width, len_mod, cs_char, nil)
3127
3090
  end
3128
3091
 
3129
3092
  # === DESCRIPTION