adlint 2.6.14 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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