@eosrio/node-abieos 2.1.0-beta.0 → 2.2.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 (740) hide show
  1. package/README.md +4 -1
  2. package/dist/abieos.node +0 -0
  3. package/lib/abieos.d.ts +19 -0
  4. package/lib/abieos.d.ts.map +1 -0
  5. package/lib/abieos.js +100 -0
  6. package/lib/abieos.ts +107 -0
  7. package/package.json +13 -8
  8. package/.gitmodules +0 -6
  9. package/.idea/misc.xml +0 -6
  10. package/.idea/modules.xml +0 -8
  11. package/.idea/node-abieos.iml +0 -12
  12. package/.idea/vcs.xml +0 -9
  13. package/.idea/workspace.xml +0 -266
  14. package/CMakeLists.txt +0 -35
  15. package/abieos.d.ts +0 -21
  16. package/abieos.js +0 -59
  17. package/eosio.json +0 -1596
  18. package/external/date/CMakeLists.txt +0 -175
  19. package/external/date/LICENSE.txt +0 -31
  20. package/external/date/README.md +0 -61
  21. package/external/date/compile_fail.sh +0 -16
  22. package/external/date/include/date/chrono_io.h +0 -34
  23. package/external/date/include/date/date.h +0 -8335
  24. package/external/date/include/date/ios.h +0 -50
  25. package/external/date/include/date/islamic.h +0 -3031
  26. package/external/date/include/date/iso_week.h +0 -1745
  27. package/external/date/include/date/julian.h +0 -3046
  28. package/external/date/include/date/ptz.h +0 -592
  29. package/external/date/include/date/tz.h +0 -2760
  30. package/external/date/include/date/tz_private.h +0 -318
  31. package/external/date/src/ios.mm +0 -337
  32. package/external/date/src/tz.cpp +0 -3801
  33. package/external/date/test/clock_cast_test/custom_clock.pass.cpp +0 -213
  34. package/external/date/test/clock_cast_test/deprecated.pass.cpp +0 -90
  35. package/external/date/test/clock_cast_test/local_t.pass.cpp +0 -132
  36. package/external/date/test/clock_cast_test/noncastable.pass.cpp +0 -251
  37. package/external/date/test/clock_cast_test/normal_clocks.pass.cpp +0 -102
  38. package/external/date/test/clock_cast_test/to_sys_return_int.fail.cpp +0 -49
  39. package/external/date/test/clock_cast_test/to_sys_return_reference.fail.cpp +0 -51
  40. package/external/date/test/clock_cast_test/to_sys_return_utc_time.fail.cpp +0 -49
  41. package/external/date/test/date_test/day.pass.cpp +0 -143
  42. package/external/date/test/date_test/daypday.fail.cpp +0 -32
  43. package/external/date/test/date_test/daysmday.fail.cpp +0 -32
  44. package/external/date/test/date_test/daysmweekday.fail.cpp +0 -32
  45. package/external/date/test/date_test/detail/decimal_format_seconds.pass.cpp +0 -145
  46. package/external/date/test/date_test/detail/make_precision.pass.cpp +0 -63
  47. package/external/date/test/date_test/detail/static_pow10.pass.cpp +0 -50
  48. package/external/date/test/date_test/detail/width.pass.cpp +0 -64
  49. package/external/date/test/date_test/durations.pass.cpp +0 -62
  50. package/external/date/test/date_test/durations_output.pass.cpp +0 -328
  51. package/external/date/test/date_test/format/century.pass.cpp +0 -117
  52. package/external/date/test/date_test/format/misc.pass.cpp +0 -52
  53. package/external/date/test/date_test/format/range.pass.cpp +0 -78
  54. package/external/date/test/date_test/format/two_dight_year.pass.cpp +0 -121
  55. package/external/date/test/date_test/last.pass.cpp +0 -34
  56. package/external/date/test/date_test/make_time.pass.cpp +0 -164
  57. package/external/date/test/date_test/month.pass.cpp +0 -181
  58. package/external/date/test/date_test/month_day.pass.cpp +0 -82
  59. package/external/date/test/date_test/month_day_last.pass.cpp +0 -75
  60. package/external/date/test/date_test/month_weekday.pass.cpp +0 -77
  61. package/external/date/test/date_test/month_weekday_last.pass.cpp +0 -77
  62. package/external/date/test/date_test/month_weekday_last_less.fail.cpp +0 -34
  63. package/external/date/test/date_test/month_weekday_less.fail.cpp +0 -34
  64. package/external/date/test/date_test/monthpmonth.fail.cpp +0 -32
  65. package/external/date/test/date_test/months_m_year_month.fail.cpp +0 -33
  66. package/external/date/test/date_test/months_m_year_month_day.fail.cpp +0 -33
  67. package/external/date/test/date_test/monthsmmonth.fail.cpp +0 -32
  68. package/external/date/test/date_test/multi_year_duration_addition.pass.cpp +0 -297
  69. package/external/date/test/date_test/op_div_day_day.fail.cpp +0 -33
  70. package/external/date/test/date_test/op_div_int_month.fail.cpp +0 -33
  71. package/external/date/test/date_test/op_div_int_year.fail.cpp +0 -33
  72. package/external/date/test/date_test/op_div_last_last.fail.cpp +0 -33
  73. package/external/date/test/date_test/op_div_month_day.pass.cpp +0 -41
  74. package/external/date/test/date_test/op_div_month_day_last.pass.cpp +0 -39
  75. package/external/date/test/date_test/op_div_month_day_month_day.fail.cpp +0 -33
  76. package/external/date/test/date_test/op_div_month_month.fail.cpp +0 -33
  77. package/external/date/test/date_test/op_div_month_weekday.pass.cpp +0 -39
  78. package/external/date/test/date_test/op_div_month_weekday_last.pass.cpp +0 -39
  79. package/external/date/test/date_test/op_div_month_year.fail.cpp +0 -33
  80. package/external/date/test/date_test/op_div_survey.pass.cpp +0 -437
  81. package/external/date/test/date_test/op_div_weekday_indexed_weekday_indexed.fail.cpp +0 -33
  82. package/external/date/test/date_test/op_div_weekday_last_weekday_last.fail.cpp +0 -33
  83. package/external/date/test/date_test/op_div_year_month.pass.cpp +0 -35
  84. package/external/date/test/date_test/op_div_year_month_day.pass.cpp +0 -43
  85. package/external/date/test/date_test/op_div_year_month_day_last.pass.cpp +0 -41
  86. package/external/date/test/date_test/op_div_year_month_weekday.pass.cpp +0 -41
  87. package/external/date/test/date_test/op_div_year_month_weekday_last.pass.cpp +0 -41
  88. package/external/date/test/date_test/op_div_year_month_year_month.fail.cpp +0 -33
  89. package/external/date/test/date_test/op_div_year_year.fail.cpp +0 -33
  90. package/external/date/test/date_test/parse.pass.cpp +0 -904
  91. package/external/date/test/date_test/sizeof.pass.cpp +0 -62
  92. package/external/date/test/date_test/time_of_day_hours.pass.cpp +0 -104
  93. package/external/date/test/date_test/time_of_day_microfortnights.pass.cpp +0 -119
  94. package/external/date/test/date_test/time_of_day_milliseconds.pass.cpp +0 -126
  95. package/external/date/test/date_test/time_of_day_minutes.pass.cpp +0 -110
  96. package/external/date/test/date_test/time_of_day_nanoseconds.pass.cpp +0 -126
  97. package/external/date/test/date_test/time_of_day_seconds.pass.cpp +0 -116
  98. package/external/date/test/date_test/weekday.pass.cpp +0 -201
  99. package/external/date/test/date_test/weekday_indexed.pass.cpp +0 -70
  100. package/external/date/test/date_test/weekday_last.pass.cpp +0 -66
  101. package/external/date/test/date_test/weekday_lessthan.fail.cpp +0 -32
  102. package/external/date/test/date_test/weekday_sum.fail.cpp +0 -32
  103. package/external/date/test/date_test/year.pass.cpp +0 -146
  104. package/external/date/test/date_test/year_month.pass.cpp +0 -142
  105. package/external/date/test/date_test/year_month_day.pass.cpp +0 -244
  106. package/external/date/test/date_test/year_month_day_last.pass.cpp +0 -177
  107. package/external/date/test/date_test/year_month_day_m_year_month_day.fail.cpp +0 -33
  108. package/external/date/test/date_test/year_month_day_p_year_month_day.fail.cpp +0 -33
  109. package/external/date/test/date_test/year_month_p_year_month.fail.cpp +0 -33
  110. package/external/date/test/date_test/year_month_weekday.pass.cpp +0 -178
  111. package/external/date/test/date_test/year_month_weekday_last.pass.cpp +0 -169
  112. package/external/date/test/date_test/year_p_year.fail.cpp +0 -32
  113. package/external/date/test/date_test/years_m_year.fail.cpp +0 -32
  114. package/external/date/test/date_test/years_m_year_month.fail.cpp +0 -33
  115. package/external/date/test/date_test/years_m_year_month_day.fail.cpp +0 -33
  116. package/external/date/test/iso_week/last.pass.cpp +0 -34
  117. package/external/date/test/iso_week/lastweek_weekday.pass.cpp +0 -82
  118. package/external/date/test/iso_week/op_div_survey.pass.cpp +0 -196
  119. package/external/date/test/iso_week/weekday.pass.cpp +0 -227
  120. package/external/date/test/iso_week/weekday_lessthan.fail.cpp +0 -32
  121. package/external/date/test/iso_week/weekday_sum.fail.cpp +0 -32
  122. package/external/date/test/iso_week/weeknum.pass.cpp +0 -121
  123. package/external/date/test/iso_week/weeknum_p_weeknum.fail.cpp +0 -32
  124. package/external/date/test/iso_week/weeknum_weekday.pass.cpp +0 -86
  125. package/external/date/test/iso_week/year.pass.cpp +0 -120
  126. package/external/date/test/iso_week/year_lastweek.pass.cpp +0 -97
  127. package/external/date/test/iso_week/year_lastweek_weekday.pass.cpp +0 -129
  128. package/external/date/test/iso_week/year_p_year.fail.cpp +0 -32
  129. package/external/date/test/iso_week/year_weeknum.pass.cpp +0 -97
  130. package/external/date/test/iso_week/year_weeknum_weekday.pass.cpp +0 -139
  131. package/external/date/test/iso_week/years_m_year.fail.cpp +0 -32
  132. package/external/date/test/just.pass.cpp +0 -26
  133. package/external/date/test/testit +0 -177
  134. package/external/date/test/tz_test/OffsetZone.pass.cpp +0 -81
  135. package/external/date/test/tz_test/README.md +0 -22
  136. package/external/date/test/tz_test/tzdata2015e.txt.zip +0 -0
  137. package/external/date/test/tz_test/tzdata2015f.txt.zip +0 -0
  138. package/external/date/test/tz_test/tzdata2016c.txt.zip +0 -0
  139. package/external/date/test/tz_test/tzdata2016d.txt.zip +0 -0
  140. package/external/date/test/tz_test/tzdata2016e.txt.zip +0 -0
  141. package/external/date/test/tz_test/tzdata2016f.txt.zip +0 -0
  142. package/external/date/test/tz_test/validate.cpp +0 -165
  143. package/external/date/test/tz_test/zone.pass.cpp +0 -37
  144. package/external/date/test/tz_test/zoned_time.pass.cpp +0 -464
  145. package/external/date/test_fail.sh +0 -10
  146. package/external/rapidjson/.gitattributes +0 -22
  147. package/external/rapidjson/.gitmodules +0 -3
  148. package/external/rapidjson/.travis.yml +0 -99
  149. package/external/rapidjson/CHANGELOG.md +0 -158
  150. package/external/rapidjson/CMakeLists.txt +0 -221
  151. package/external/rapidjson/CMakeModules/FindGTestSrc.cmake +0 -30
  152. package/external/rapidjson/RapidJSON.pc.in +0 -7
  153. package/external/rapidjson/RapidJSONConfig.cmake.in +0 -15
  154. package/external/rapidjson/RapidJSONConfigVersion.cmake.in +0 -10
  155. package/external/rapidjson/appveyor.yml +0 -54
  156. package/external/rapidjson/bin/data/glossary.json +0 -22
  157. package/external/rapidjson/bin/data/menu.json +0 -27
  158. package/external/rapidjson/bin/data/readme.txt +0 -1
  159. package/external/rapidjson/bin/data/sample.json +0 -3315
  160. package/external/rapidjson/bin/data/webapp.json +0 -88
  161. package/external/rapidjson/bin/data/widget.json +0 -26
  162. package/external/rapidjson/bin/encodings/utf16be.json +0 -0
  163. package/external/rapidjson/bin/encodings/utf16bebom.json +0 -0
  164. package/external/rapidjson/bin/encodings/utf16le.json +0 -0
  165. package/external/rapidjson/bin/encodings/utf16lebom.json +0 -0
  166. package/external/rapidjson/bin/encodings/utf32be.json +0 -0
  167. package/external/rapidjson/bin/encodings/utf32bebom.json +0 -0
  168. package/external/rapidjson/bin/encodings/utf32le.json +0 -0
  169. package/external/rapidjson/bin/encodings/utf32lebom.json +0 -0
  170. package/external/rapidjson/bin/encodings/utf8.json +0 -7
  171. package/external/rapidjson/bin/encodings/utf8bom.json +0 -7
  172. package/external/rapidjson/bin/jsonchecker/fail1.json +0 -1
  173. package/external/rapidjson/bin/jsonchecker/fail10.json +0 -1
  174. package/external/rapidjson/bin/jsonchecker/fail11.json +0 -1
  175. package/external/rapidjson/bin/jsonchecker/fail12.json +0 -1
  176. package/external/rapidjson/bin/jsonchecker/fail13.json +0 -1
  177. package/external/rapidjson/bin/jsonchecker/fail14.json +0 -1
  178. package/external/rapidjson/bin/jsonchecker/fail15.json +0 -1
  179. package/external/rapidjson/bin/jsonchecker/fail16.json +0 -1
  180. package/external/rapidjson/bin/jsonchecker/fail17.json +0 -1
  181. package/external/rapidjson/bin/jsonchecker/fail18.json +0 -1
  182. package/external/rapidjson/bin/jsonchecker/fail19.json +0 -1
  183. package/external/rapidjson/bin/jsonchecker/fail2.json +0 -1
  184. package/external/rapidjson/bin/jsonchecker/fail20.json +0 -1
  185. package/external/rapidjson/bin/jsonchecker/fail21.json +0 -1
  186. package/external/rapidjson/bin/jsonchecker/fail22.json +0 -1
  187. package/external/rapidjson/bin/jsonchecker/fail23.json +0 -1
  188. package/external/rapidjson/bin/jsonchecker/fail24.json +0 -1
  189. package/external/rapidjson/bin/jsonchecker/fail25.json +0 -1
  190. package/external/rapidjson/bin/jsonchecker/fail26.json +0 -1
  191. package/external/rapidjson/bin/jsonchecker/fail27.json +0 -2
  192. package/external/rapidjson/bin/jsonchecker/fail28.json +0 -2
  193. package/external/rapidjson/bin/jsonchecker/fail29.json +0 -1
  194. package/external/rapidjson/bin/jsonchecker/fail3.json +0 -1
  195. package/external/rapidjson/bin/jsonchecker/fail30.json +0 -1
  196. package/external/rapidjson/bin/jsonchecker/fail31.json +0 -1
  197. package/external/rapidjson/bin/jsonchecker/fail32.json +0 -1
  198. package/external/rapidjson/bin/jsonchecker/fail33.json +0 -1
  199. package/external/rapidjson/bin/jsonchecker/fail4.json +0 -1
  200. package/external/rapidjson/bin/jsonchecker/fail5.json +0 -1
  201. package/external/rapidjson/bin/jsonchecker/fail6.json +0 -1
  202. package/external/rapidjson/bin/jsonchecker/fail7.json +0 -1
  203. package/external/rapidjson/bin/jsonchecker/fail8.json +0 -1
  204. package/external/rapidjson/bin/jsonchecker/fail9.json +0 -1
  205. package/external/rapidjson/bin/jsonchecker/pass1.json +0 -58
  206. package/external/rapidjson/bin/jsonchecker/pass2.json +0 -1
  207. package/external/rapidjson/bin/jsonchecker/pass3.json +0 -6
  208. package/external/rapidjson/bin/jsonchecker/readme.txt +0 -3
  209. package/external/rapidjson/bin/types/booleans.json +0 -102
  210. package/external/rapidjson/bin/types/floats.json +0 -102
  211. package/external/rapidjson/bin/types/guids.json +0 -102
  212. package/external/rapidjson/bin/types/integers.json +0 -102
  213. package/external/rapidjson/bin/types/mixed.json +0 -592
  214. package/external/rapidjson/bin/types/nulls.json +0 -102
  215. package/external/rapidjson/bin/types/paragraphs.json +0 -102
  216. package/external/rapidjson/bin/types/readme.txt +0 -1
  217. package/external/rapidjson/contrib/natvis/LICENSE +0 -45
  218. package/external/rapidjson/contrib/natvis/README.md +0 -7
  219. package/external/rapidjson/contrib/natvis/rapidjson.natvis +0 -38
  220. package/external/rapidjson/doc/CMakeLists.txt +0 -27
  221. package/external/rapidjson/doc/Doxyfile.in +0 -2369
  222. package/external/rapidjson/doc/Doxyfile.zh-cn.in +0 -2369
  223. package/external/rapidjson/doc/diagram/architecture.dot +0 -50
  224. package/external/rapidjson/doc/diagram/architecture.png +0 -0
  225. package/external/rapidjson/doc/diagram/insituparsing.dot +0 -65
  226. package/external/rapidjson/doc/diagram/insituparsing.png +0 -0
  227. package/external/rapidjson/doc/diagram/iterative-parser-states-diagram.dot +0 -62
  228. package/external/rapidjson/doc/diagram/iterative-parser-states-diagram.png +0 -0
  229. package/external/rapidjson/doc/diagram/move1.dot +0 -47
  230. package/external/rapidjson/doc/diagram/move1.png +0 -0
  231. package/external/rapidjson/doc/diagram/move2.dot +0 -62
  232. package/external/rapidjson/doc/diagram/move2.png +0 -0
  233. package/external/rapidjson/doc/diagram/move3.dot +0 -60
  234. package/external/rapidjson/doc/diagram/move3.png +0 -0
  235. package/external/rapidjson/doc/diagram/normalparsing.dot +0 -56
  236. package/external/rapidjson/doc/diagram/normalparsing.png +0 -0
  237. package/external/rapidjson/doc/diagram/simpledom.dot +0 -54
  238. package/external/rapidjson/doc/diagram/simpledom.png +0 -0
  239. package/external/rapidjson/doc/diagram/tutorial.dot +0 -58
  240. package/external/rapidjson/doc/diagram/tutorial.png +0 -0
  241. package/external/rapidjson/doc/diagram/utilityclass.dot +0 -73
  242. package/external/rapidjson/doc/diagram/utilityclass.png +0 -0
  243. package/external/rapidjson/doc/dom.md +0 -280
  244. package/external/rapidjson/doc/dom.zh-cn.md +0 -284
  245. package/external/rapidjson/doc/encoding.md +0 -146
  246. package/external/rapidjson/doc/encoding.zh-cn.md +0 -152
  247. package/external/rapidjson/doc/faq.md +0 -289
  248. package/external/rapidjson/doc/faq.zh-cn.md +0 -290
  249. package/external/rapidjson/doc/features.md +0 -104
  250. package/external/rapidjson/doc/features.zh-cn.md +0 -103
  251. package/external/rapidjson/doc/internals.md +0 -368
  252. package/external/rapidjson/doc/internals.zh-cn.md +0 -363
  253. package/external/rapidjson/doc/logo/rapidjson.png +0 -0
  254. package/external/rapidjson/doc/logo/rapidjson.svg +0 -119
  255. package/external/rapidjson/doc/misc/DoxygenLayout.xml +0 -194
  256. package/external/rapidjson/doc/misc/doxygenextra.css +0 -274
  257. package/external/rapidjson/doc/misc/footer.html +0 -11
  258. package/external/rapidjson/doc/misc/header.html +0 -24
  259. package/external/rapidjson/doc/npm.md +0 -31
  260. package/external/rapidjson/doc/performance.md +0 -26
  261. package/external/rapidjson/doc/performance.zh-cn.md +0 -26
  262. package/external/rapidjson/doc/pointer.md +0 -234
  263. package/external/rapidjson/doc/pointer.zh-cn.md +0 -234
  264. package/external/rapidjson/doc/sax.md +0 -509
  265. package/external/rapidjson/doc/sax.zh-cn.md +0 -487
  266. package/external/rapidjson/doc/schema.md +0 -505
  267. package/external/rapidjson/doc/schema.zh-cn.md +0 -237
  268. package/external/rapidjson/doc/stream.md +0 -429
  269. package/external/rapidjson/doc/stream.zh-cn.md +0 -429
  270. package/external/rapidjson/doc/tutorial.md +0 -536
  271. package/external/rapidjson/doc/tutorial.zh-cn.md +0 -535
  272. package/external/rapidjson/docker/debian/Dockerfile +0 -8
  273. package/external/rapidjson/example/CMakeLists.txt +0 -45
  274. package/external/rapidjson/example/archiver/archiver.cpp +0 -292
  275. package/external/rapidjson/example/archiver/archiver.h +0 -145
  276. package/external/rapidjson/example/archiver/archivertest.cpp +0 -287
  277. package/external/rapidjson/example/capitalize/capitalize.cpp +0 -67
  278. package/external/rapidjson/example/condense/condense.cpp +0 -32
  279. package/external/rapidjson/example/filterkey/filterkey.cpp +0 -135
  280. package/external/rapidjson/example/filterkeydom/filterkeydom.cpp +0 -170
  281. package/external/rapidjson/example/jsonx/jsonx.cpp +0 -207
  282. package/external/rapidjson/example/lookaheadparser/lookaheadparser.cpp +0 -350
  283. package/external/rapidjson/example/messagereader/messagereader.cpp +0 -105
  284. package/external/rapidjson/example/parsebyparts/parsebyparts.cpp +0 -176
  285. package/external/rapidjson/example/pretty/pretty.cpp +0 -30
  286. package/external/rapidjson/example/prettyauto/prettyauto.cpp +0 -56
  287. package/external/rapidjson/example/schemavalidator/schemavalidator.cpp +0 -78
  288. package/external/rapidjson/example/serialize/serialize.cpp +0 -173
  289. package/external/rapidjson/example/simpledom/simpledom.cpp +0 -29
  290. package/external/rapidjson/example/simplepullreader/simplepullreader.cpp +0 -53
  291. package/external/rapidjson/example/simplereader/simplereader.cpp +0 -42
  292. package/external/rapidjson/example/simplewriter/simplewriter.cpp +0 -36
  293. package/external/rapidjson/example/tutorial/tutorial.cpp +0 -151
  294. package/external/rapidjson/include/rapidjson/allocators.h +0 -284
  295. package/external/rapidjson/include/rapidjson/cursorstreamwrapper.h +0 -78
  296. package/external/rapidjson/include/rapidjson/document.h +0 -2646
  297. package/external/rapidjson/include/rapidjson/encodedstream.h +0 -299
  298. package/external/rapidjson/include/rapidjson/encodings.h +0 -716
  299. package/external/rapidjson/include/rapidjson/error/en.h +0 -74
  300. package/external/rapidjson/include/rapidjson/error/error.h +0 -161
  301. package/external/rapidjson/include/rapidjson/filereadstream.h +0 -99
  302. package/external/rapidjson/include/rapidjson/filewritestream.h +0 -104
  303. package/external/rapidjson/include/rapidjson/fwd.h +0 -151
  304. package/external/rapidjson/include/rapidjson/internal/biginteger.h +0 -290
  305. package/external/rapidjson/include/rapidjson/internal/diyfp.h +0 -271
  306. package/external/rapidjson/include/rapidjson/internal/dtoa.h +0 -245
  307. package/external/rapidjson/include/rapidjson/internal/ieee754.h +0 -78
  308. package/external/rapidjson/include/rapidjson/internal/itoa.h +0 -308
  309. package/external/rapidjson/include/rapidjson/internal/meta.h +0 -186
  310. package/external/rapidjson/include/rapidjson/internal/pow10.h +0 -55
  311. package/external/rapidjson/include/rapidjson/internal/regex.h +0 -732
  312. package/external/rapidjson/include/rapidjson/internal/stack.h +0 -231
  313. package/external/rapidjson/include/rapidjson/internal/strfunc.h +0 -69
  314. package/external/rapidjson/include/rapidjson/internal/strtod.h +0 -290
  315. package/external/rapidjson/include/rapidjson/internal/swap.h +0 -46
  316. package/external/rapidjson/include/rapidjson/istreamwrapper.h +0 -113
  317. package/external/rapidjson/include/rapidjson/memorybuffer.h +0 -70
  318. package/external/rapidjson/include/rapidjson/memorystream.h +0 -71
  319. package/external/rapidjson/include/rapidjson/msinttypes/inttypes.h +0 -316
  320. package/external/rapidjson/include/rapidjson/msinttypes/stdint.h +0 -300
  321. package/external/rapidjson/include/rapidjson/ostreamwrapper.h +0 -81
  322. package/external/rapidjson/include/rapidjson/pointer.h +0 -1357
  323. package/external/rapidjson/include/rapidjson/prettywriter.h +0 -277
  324. package/external/rapidjson/include/rapidjson/rapidjson.h +0 -654
  325. package/external/rapidjson/include/rapidjson/reader.h +0 -2230
  326. package/external/rapidjson/include/rapidjson/schema.h +0 -2494
  327. package/external/rapidjson/include/rapidjson/stream.h +0 -223
  328. package/external/rapidjson/include/rapidjson/stringbuffer.h +0 -121
  329. package/external/rapidjson/include/rapidjson/writer.h +0 -710
  330. package/external/rapidjson/include_dirs.js +0 -2
  331. package/external/rapidjson/library.json +0 -15
  332. package/external/rapidjson/license.txt +0 -57
  333. package/external/rapidjson/package.json +0 -24
  334. package/external/rapidjson/rapidjson.autopkg +0 -77
  335. package/external/rapidjson/readme.md +0 -160
  336. package/external/rapidjson/readme.zh-cn.md +0 -152
  337. package/external/rapidjson/test/CMakeLists.txt +0 -20
  338. package/external/rapidjson/test/perftest/CMakeLists.txt +0 -28
  339. package/external/rapidjson/test/perftest/misctest.cpp +0 -974
  340. package/external/rapidjson/test/perftest/perftest.cpp +0 -24
  341. package/external/rapidjson/test/perftest/perftest.h +0 -185
  342. package/external/rapidjson/test/perftest/platformtest.cpp +0 -166
  343. package/external/rapidjson/test/perftest/rapidjsontest.cpp +0 -472
  344. package/external/rapidjson/test/perftest/schematest.cpp +0 -223
  345. package/external/rapidjson/test/unittest/CMakeLists.txt +0 -92
  346. package/external/rapidjson/test/unittest/allocatorstest.cpp +0 -100
  347. package/external/rapidjson/test/unittest/bigintegertest.cpp +0 -138
  348. package/external/rapidjson/test/unittest/cursorstreamwrappertest.cpp +0 -115
  349. package/external/rapidjson/test/unittest/documenttest.cpp +0 -672
  350. package/external/rapidjson/test/unittest/dtoatest.cpp +0 -98
  351. package/external/rapidjson/test/unittest/encodedstreamtest.cpp +0 -313
  352. package/external/rapidjson/test/unittest/encodingstest.cpp +0 -451
  353. package/external/rapidjson/test/unittest/filestreamtest.cpp +0 -112
  354. package/external/rapidjson/test/unittest/fwdtest.cpp +0 -230
  355. package/external/rapidjson/test/unittest/istreamwrappertest.cpp +0 -181
  356. package/external/rapidjson/test/unittest/itoatest.cpp +0 -160
  357. package/external/rapidjson/test/unittest/jsoncheckertest.cpp +0 -143
  358. package/external/rapidjson/test/unittest/namespacetest.cpp +0 -70
  359. package/external/rapidjson/test/unittest/ostreamwrappertest.cpp +0 -92
  360. package/external/rapidjson/test/unittest/pointertest.cpp +0 -1529
  361. package/external/rapidjson/test/unittest/prettywritertest.cpp +0 -373
  362. package/external/rapidjson/test/unittest/readertest.cpp +0 -2190
  363. package/external/rapidjson/test/unittest/regextest.cpp +0 -638
  364. package/external/rapidjson/test/unittest/schematest.cpp +0 -2072
  365. package/external/rapidjson/test/unittest/simdtest.cpp +0 -219
  366. package/external/rapidjson/test/unittest/strfunctest.cpp +0 -30
  367. package/external/rapidjson/test/unittest/stringbuffertest.cpp +0 -192
  368. package/external/rapidjson/test/unittest/strtodtest.cpp +0 -132
  369. package/external/rapidjson/test/unittest/unittest.cpp +0 -51
  370. package/external/rapidjson/test/unittest/unittest.h +0 -140
  371. package/external/rapidjson/test/unittest/valuetest.cpp +0 -1851
  372. package/external/rapidjson/test/unittest/writertest.cpp +0 -598
  373. package/external/rapidjson/test/valgrind.supp +0 -17
  374. package/external/rapidjson/thirdparty/gtest/.travis.yml +0 -81
  375. package/external/rapidjson/thirdparty/gtest/BUILD.bazel +0 -175
  376. package/external/rapidjson/thirdparty/gtest/CMakeLists.txt +0 -33
  377. package/external/rapidjson/thirdparty/gtest/CONTRIBUTING.md +0 -160
  378. package/external/rapidjson/thirdparty/gtest/LICENSE +0 -28
  379. package/external/rapidjson/thirdparty/gtest/Makefile.am +0 -14
  380. package/external/rapidjson/thirdparty/gtest/README.md +0 -122
  381. package/external/rapidjson/thirdparty/gtest/WORKSPACE +0 -8
  382. package/external/rapidjson/thirdparty/gtest/appveyor.yml +0 -104
  383. package/external/rapidjson/thirdparty/gtest/ci/build-linux-autotools.sh +0 -44
  384. package/external/rapidjson/thirdparty/gtest/ci/build-linux-bazel.sh +0 -36
  385. package/external/rapidjson/thirdparty/gtest/ci/env-linux.sh +0 -41
  386. package/external/rapidjson/thirdparty/gtest/ci/env-osx.sh +0 -40
  387. package/external/rapidjson/thirdparty/gtest/ci/get-nprocessors.sh +0 -48
  388. package/external/rapidjson/thirdparty/gtest/ci/install-linux.sh +0 -49
  389. package/external/rapidjson/thirdparty/gtest/ci/install-osx.sh +0 -39
  390. package/external/rapidjson/thirdparty/gtest/ci/log-config.sh +0 -51
  391. package/external/rapidjson/thirdparty/gtest/ci/travis.sh +0 -44
  392. package/external/rapidjson/thirdparty/gtest/configure.ac +0 -16
  393. package/external/rapidjson/thirdparty/gtest/googlemock/CHANGES +0 -126
  394. package/external/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +0 -242
  395. package/external/rapidjson/thirdparty/gtest/googlemock/CONTRIBUTORS +0 -40
  396. package/external/rapidjson/thirdparty/gtest/googlemock/LICENSE +0 -28
  397. package/external/rapidjson/thirdparty/gtest/googlemock/Makefile.am +0 -224
  398. package/external/rapidjson/thirdparty/gtest/googlemock/README.md +0 -344
  399. package/external/rapidjson/thirdparty/gtest/googlemock/build-aux/.keep +0 -0
  400. package/external/rapidjson/thirdparty/gtest/googlemock/cmake/gmock.pc.in +0 -9
  401. package/external/rapidjson/thirdparty/gtest/googlemock/cmake/gmock_main.pc.in +0 -9
  402. package/external/rapidjson/thirdparty/gtest/googlemock/configure.ac +0 -146
  403. package/external/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +0 -564
  404. package/external/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +0 -3660
  405. package/external/rapidjson/thirdparty/gtest/googlemock/docs/DesignDoc.md +0 -280
  406. package/external/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +0 -15
  407. package/external/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +0 -447
  408. package/external/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +0 -627
  409. package/external/rapidjson/thirdparty/gtest/googlemock/docs/KnownIssues.md +0 -19
  410. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +0 -1262
  411. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-cardinalities.h +0 -147
  412. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +0 -2571
  413. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +0 -833
  414. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +0 -1379
  415. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +0 -347
  416. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +0 -2258
  417. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +0 -675
  418. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +0 -458
  419. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +0 -178
  420. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +0 -5255
  421. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-actions.h +0 -246
  422. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +0 -91
  423. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +0 -1918
  424. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +0 -95
  425. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +0 -8
  426. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +0 -10
  427. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +0 -38
  428. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-port.h +0 -46
  429. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +0 -286
  430. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +0 -136
  431. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +0 -574
  432. package/external/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +0 -87
  433. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln +0 -32
  434. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj +0 -191
  435. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops +0 -15
  436. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj +0 -187
  437. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj +0 -201
  438. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +0 -46
  439. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +0 -145
  440. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +0 -19
  441. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +0 -151
  442. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +0 -176
  443. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +0 -46
  444. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +0 -145
  445. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_config.props +0 -19
  446. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +0 -151
  447. package/external/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +0 -176
  448. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +0 -240
  449. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/LICENSE +0 -203
  450. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +0 -34
  451. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README.cppclean +0 -115
  452. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  453. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +0 -1733
  454. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class.py +0 -227
  455. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class_test.py +0 -448
  456. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/keywords.py +0 -59
  457. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/tokenize.py +0 -287
  458. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/utils.py +0 -41
  459. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/generator/gmock_gen.py +0 -31
  460. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/gmock-config.in +0 -303
  461. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/gmock_doctor.py +0 -640
  462. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/upload.py +0 -1387
  463. package/external/rapidjson/thirdparty/gtest/googlemock/scripts/upload_gmock.py +0 -78
  464. package/external/rapidjson/thirdparty/gtest/googlemock/src/gmock-all.cc +0 -47
  465. package/external/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +0 -156
  466. package/external/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +0 -204
  467. package/external/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +0 -573
  468. package/external/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +0 -883
  469. package/external/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +0 -205
  470. package/external/rapidjson/thirdparty/gtest/googlemock/src/gmock_main.cc +0 -54
  471. package/external/rapidjson/thirdparty/gtest/googlemock/test/BUILD.bazel +0 -123
  472. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +0 -1575
  473. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +0 -428
  474. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +0 -1230
  475. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +0 -647
  476. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +0 -129
  477. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +0 -1341
  478. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +0 -718
  479. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +0 -6767
  480. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +0 -710
  481. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +0 -511
  482. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-port_test.cc +0 -43
  483. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +0 -2771
  484. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_all_test.cc +0 -51
  485. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_ex_test.cc +0 -81
  486. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test.py +0 -108
  487. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test_.cc +0 -100
  488. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +0 -40
  489. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +0 -40
  490. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +0 -691
  491. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +0 -183
  492. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +0 -310
  493. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +0 -317
  494. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +0 -323
  495. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +0 -262
  496. package/external/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +0 -110
  497. package/external/rapidjson/thirdparty/gtest/googletest/CHANGES +0 -157
  498. package/external/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +0 -312
  499. package/external/rapidjson/thirdparty/gtest/googletest/CONTRIBUTORS +0 -37
  500. package/external/rapidjson/thirdparty/gtest/googletest/LICENSE +0 -28
  501. package/external/rapidjson/thirdparty/gtest/googletest/Makefile.am +0 -339
  502. package/external/rapidjson/thirdparty/gtest/googletest/README.md +0 -341
  503. package/external/rapidjson/thirdparty/gtest/googletest/cmake/gtest.pc.in +0 -9
  504. package/external/rapidjson/thirdparty/gtest/googletest/cmake/gtest_main.pc.in +0 -10
  505. package/external/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +0 -280
  506. package/external/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj +0 -138
  507. package/external/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj +0 -54
  508. package/external/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc +0 -38
  509. package/external/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc +0 -40
  510. package/external/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj +0 -82
  511. package/external/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj +0 -88
  512. package/external/rapidjson/thirdparty/gtest/googletest/configure.ac +0 -68
  513. package/external/rapidjson/thirdparty/gtest/googletest/docs/Pkgconfig.md +0 -146
  514. package/external/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +0 -177
  515. package/external/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +0 -93
  516. package/external/rapidjson/thirdparty/gtest/googletest/docs/advanced.md +0 -2416
  517. package/external/rapidjson/thirdparty/gtest/googletest/docs/faq.md +0 -1092
  518. package/external/rapidjson/thirdparty/gtest/googletest/docs/primer.md +0 -536
  519. package/external/rapidjson/thirdparty/gtest/googletest/docs/samples.md +0 -14
  520. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +0 -342
  521. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +0 -249
  522. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +0 -1438
  523. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +0 -501
  524. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +0 -1082
  525. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +0 -231
  526. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-test-part.h +0 -179
  527. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +0 -264
  528. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +0 -2332
  529. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +0 -357
  530. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +0 -61
  531. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +0 -70
  532. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-printers.h +0 -42
  533. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +0 -45
  534. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -275
  535. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +0 -205
  536. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +0 -1277
  537. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  538. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5139
  539. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -279
  540. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +0 -723
  541. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +0 -100
  542. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +0 -2687
  543. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +0 -167
  544. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  545. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  546. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +0 -3347
  547. package/external/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +0 -313
  548. package/external/rapidjson/thirdparty/gtest/googletest/m4/acx_pthread.m4 +0 -363
  549. package/external/rapidjson/thirdparty/gtest/googletest/m4/gtest.m4 +0 -74
  550. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.sln +0 -55
  551. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.vcxproj +0 -149
  552. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.vcxproj.filters +0 -18
  553. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.sln +0 -55
  554. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.vcxproj +0 -149
  555. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.vcxproj.filters +0 -18
  556. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main-md.vcxproj +0 -154
  557. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main-md.vcxproj.filters +0 -18
  558. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main.vcxproj +0 -162
  559. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main.vcxproj.filters +0 -18
  560. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test-md.vcxproj +0 -199
  561. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test-md.vcxproj.filters +0 -26
  562. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test.vcxproj +0 -191
  563. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test.vcxproj.filters +0 -26
  564. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest-md.vcxproj +0 -188
  565. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest-md.vcxproj.filters +0 -18
  566. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest.vcxproj +0 -180
  567. package/external/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest.vcxproj.filters +0 -18
  568. package/external/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +0 -127
  569. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +0 -68
  570. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample1.h +0 -43
  571. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +0 -140
  572. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +0 -154
  573. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample2.cc +0 -56
  574. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample2.h +0 -85
  575. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +0 -110
  576. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample3-inl.h +0 -172
  577. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +0 -152
  578. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample4.cc +0 -46
  579. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample4.h +0 -53
  580. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +0 -49
  581. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +0 -199
  582. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +0 -225
  583. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +0 -118
  584. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +0 -174
  585. package/external/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +0 -157
  586. package/external/rapidjson/thirdparty/gtest/googletest/scripts/common.py +0 -83
  587. package/external/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +0 -253
  588. package/external/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +0 -730
  589. package/external/rapidjson/thirdparty/gtest/googletest/scripts/gtest-config.in +0 -274
  590. package/external/rapidjson/thirdparty/gtest/googletest/scripts/pump.py +0 -855
  591. package/external/rapidjson/thirdparty/gtest/googletest/scripts/release_docs.py +0 -158
  592. package/external/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +0 -1387
  593. package/external/rapidjson/thirdparty/gtest/googletest/scripts/upload_gtest.py +0 -78
  594. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +0 -48
  595. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +0 -1536
  596. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +0 -385
  597. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +0 -1175
  598. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +0 -1277
  599. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +0 -458
  600. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +0 -102
  601. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +0 -119
  602. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +0 -5846
  603. package/external/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +0 -38
  604. package/external/rapidjson/thirdparty/gtest/googletest/test/BUILD.bazel +0 -396
  605. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_ex_test.cc +0 -93
  606. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +0 -1424
  607. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +0 -652
  608. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-linked_ptr_test.cc +0 -154
  609. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +0 -311
  610. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-message_test.cc +0 -159
  611. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +0 -213
  612. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +0 -61
  613. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +0 -1110
  614. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +0 -53
  615. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +0 -1303
  616. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +0 -1737
  617. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-test-part_test.cc +0 -208
  618. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-tuple_test.cc +0 -320
  619. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +0 -45
  620. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +0 -380
  621. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.h +0 -66
  622. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +0 -341
  623. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +0 -47
  624. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_assert_by_exception_test.cc +0 -119
  625. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +0 -210
  626. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +0 -87
  627. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +0 -235
  628. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +0 -311
  629. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +0 -129
  630. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +0 -63
  631. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +0 -119
  632. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +0 -124
  633. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +0 -189
  634. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +0 -638
  635. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +0 -138
  636. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +0 -172
  637. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test_.cc +0 -46
  638. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_json_outfiles_test.py +0 -162
  639. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_json_output_unittest.py +0 -611
  640. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_json_test_utils.py +0 -60
  641. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +0 -207
  642. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest_.cc +0 -157
  643. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +0 -45
  644. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_no_test_unittest.cc +0 -56
  645. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +0 -344
  646. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +0 -1067
  647. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +0 -781
  648. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +0 -2427
  649. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_premature_exit_test.cc +0 -127
  650. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +0 -57
  651. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +0 -236
  652. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test.py +0 -325
  653. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test_.cc +0 -103
  654. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_sole_header_test.cc +0 -57
  655. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +0 -250
  656. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +0 -318
  657. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_testbridge_test.py +0 -65
  658. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_testbridge_test_.cc +0 -44
  659. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_ex_test.cc +0 -92
  660. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +0 -171
  661. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test_.cc +0 -72
  662. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +0 -69
  663. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +0 -43
  664. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +0 -7797
  665. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +0 -48
  666. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +0 -48
  667. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +0 -140
  668. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +0 -378
  669. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +0 -179
  670. package/external/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +0 -196
  671. package/external/rapidjson/thirdparty/gtest/googletest/test/production.cc +0 -36
  672. package/external/rapidjson/thirdparty/gtest/googletest/test/production.h +0 -55
  673. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Config/DebugProject.xcconfig +0 -30
  674. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Config/FrameworkTarget.xcconfig +0 -17
  675. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Config/General.xcconfig +0 -41
  676. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Config/ReleaseProject.xcconfig +0 -32
  677. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +0 -18
  678. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Config/TestTarget.xcconfig +0 -8
  679. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Resources/Info.plist +0 -30
  680. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/Info.plist +0 -28
  681. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +0 -457
  682. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/runtests.sh +0 -62
  683. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.cc +0 -63
  684. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.h +0 -59
  685. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget_test.cc +0 -68
  686. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/runtests.sh +0 -65
  687. package/external/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +0 -100
  688. package/external/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +0 -1182
  689. package/external/rapidjson/travis-doxygen.sh +0 -121
  690. package/include/.clang-format +0 -76
  691. package/include/eosio/abi.hpp +0 -286
  692. package/include/eosio/asset.hpp +0 -458
  693. package/include/eosio/bytes.hpp +0 -27
  694. package/include/eosio/chain_conversions.hpp +0 -450
  695. package/include/eosio/chain_types.hpp +0 -14
  696. package/include/eosio/check.hpp +0 -178
  697. package/include/eosio/convert.hpp +0 -95
  698. package/include/eosio/crypto.hpp +0 -147
  699. package/include/eosio/eosio_outcome.hpp +0 -41
  700. package/include/eosio/fixed_bytes.hpp +0 -246
  701. package/include/eosio/float.hpp +0 -35
  702. package/include/eosio/for_each_field.hpp +0 -48
  703. package/include/eosio/fpconv.c +0 -336
  704. package/include/eosio/fpconv.h +0 -41
  705. package/include/eosio/fpconv.license +0 -23
  706. package/include/eosio/from_bin.hpp +0 -272
  707. package/include/eosio/from_json.hpp +0 -737
  708. package/include/eosio/from_string.hpp +0 -28
  709. package/include/eosio/map_macro.h +0 -64
  710. package/include/eosio/murmur.hpp +0 -55
  711. package/include/eosio/name.hpp +0 -174
  712. package/include/eosio/opaque.hpp +0 -108
  713. package/include/eosio/operators.hpp +0 -71
  714. package/include/eosio/powers.h +0 -76
  715. package/include/eosio/reflection.hpp +0 -61
  716. package/include/eosio/ship_protocol.hpp +0 -850
  717. package/include/eosio/stream.hpp +0 -231
  718. package/include/eosio/symbol.hpp +0 -300
  719. package/include/eosio/time.hpp +0 -264
  720. package/include/eosio/to_bin.hpp +0 -189
  721. package/include/eosio/to_json.hpp +0 -279
  722. package/include/eosio/to_key.hpp +0 -298
  723. package/include/eosio/types.hpp +0 -97
  724. package/include/eosio/varint.hpp +0 -452
  725. package/include/outcome-basic.hpp +0 -6836
  726. package/src/abi.cpp +0 -297
  727. package/src/abieos.cpp +0 -263
  728. package/src/abieos.h +0 -76
  729. package/src/abieos.hpp +0 -1010
  730. package/src/abieos_exception.hpp +0 -89
  731. package/src/abieos_numeric.hpp +0 -94
  732. package/src/abieos_ripemd160.hpp +0 -417
  733. package/src/crypto.cpp +0 -215
  734. package/src/key_test.cpp +0 -218
  735. package/src/main.cpp +0 -242
  736. package/src/reflect_test.cpp +0 -28
  737. package/src/template_test.cpp +0 -240
  738. package/src/test.cpp +0 -940
  739. package/tools/CMakeLists.txt +0 -9
  740. package/tools/name.cpp +0 -86
@@ -1,1733 +0,0 @@
1
- #!/usr/bin/env python
2
- #
3
- # Copyright 2007 Neal Norwitz
4
- # Portions Copyright 2007 Google Inc.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- """Generate an Abstract Syntax Tree (AST) for C++."""
19
-
20
- __author__ = 'nnorwitz@google.com (Neal Norwitz)'
21
-
22
-
23
- # TODO:
24
- # * Tokens should never be exported, need to convert to Nodes
25
- # (return types, parameters, etc.)
26
- # * Handle static class data for templatized classes
27
- # * Handle casts (both C++ and C-style)
28
- # * Handle conditions and loops (if/else, switch, for, while/do)
29
- #
30
- # TODO much, much later:
31
- # * Handle #define
32
- # * exceptions
33
-
34
-
35
- try:
36
- # Python 3.x
37
- import builtins
38
- except ImportError:
39
- # Python 2.x
40
- import __builtin__ as builtins
41
-
42
- import sys
43
- import traceback
44
-
45
- from cpp import keywords
46
- from cpp import tokenize
47
- from cpp import utils
48
-
49
-
50
- if not hasattr(builtins, 'reversed'):
51
- # Support Python 2.3 and earlier.
52
- def reversed(seq):
53
- for i in range(len(seq)-1, -1, -1):
54
- yield seq[i]
55
-
56
- if not hasattr(builtins, 'next'):
57
- # Support Python 2.5 and earlier.
58
- def next(obj):
59
- return obj.next()
60
-
61
-
62
- VISIBILITY_PUBLIC, VISIBILITY_PROTECTED, VISIBILITY_PRIVATE = range(3)
63
-
64
- FUNCTION_NONE = 0x00
65
- FUNCTION_CONST = 0x01
66
- FUNCTION_VIRTUAL = 0x02
67
- FUNCTION_PURE_VIRTUAL = 0x04
68
- FUNCTION_CTOR = 0x08
69
- FUNCTION_DTOR = 0x10
70
- FUNCTION_ATTRIBUTE = 0x20
71
- FUNCTION_UNKNOWN_ANNOTATION = 0x40
72
- FUNCTION_THROW = 0x80
73
- FUNCTION_OVERRIDE = 0x100
74
-
75
- """
76
- These are currently unused. Should really handle these properly at some point.
77
-
78
- TYPE_MODIFIER_INLINE = 0x010000
79
- TYPE_MODIFIER_EXTERN = 0x020000
80
- TYPE_MODIFIER_STATIC = 0x040000
81
- TYPE_MODIFIER_CONST = 0x080000
82
- TYPE_MODIFIER_REGISTER = 0x100000
83
- TYPE_MODIFIER_VOLATILE = 0x200000
84
- TYPE_MODIFIER_MUTABLE = 0x400000
85
-
86
- TYPE_MODIFIER_MAP = {
87
- 'inline': TYPE_MODIFIER_INLINE,
88
- 'extern': TYPE_MODIFIER_EXTERN,
89
- 'static': TYPE_MODIFIER_STATIC,
90
- 'const': TYPE_MODIFIER_CONST,
91
- 'register': TYPE_MODIFIER_REGISTER,
92
- 'volatile': TYPE_MODIFIER_VOLATILE,
93
- 'mutable': TYPE_MODIFIER_MUTABLE,
94
- }
95
- """
96
-
97
- _INTERNAL_TOKEN = 'internal'
98
- _NAMESPACE_POP = 'ns-pop'
99
-
100
-
101
- # TODO(nnorwitz): use this as a singleton for templated_types, etc
102
- # where we don't want to create a new empty dict each time. It is also const.
103
- class _NullDict(object):
104
- __contains__ = lambda self: False
105
- keys = values = items = iterkeys = itervalues = iteritems = lambda self: ()
106
-
107
-
108
- # TODO(nnorwitz): move AST nodes into a separate module.
109
- class Node(object):
110
- """Base AST node."""
111
-
112
- def __init__(self, start, end):
113
- self.start = start
114
- self.end = end
115
-
116
- def IsDeclaration(self):
117
- """Returns bool if this node is a declaration."""
118
- return False
119
-
120
- def IsDefinition(self):
121
- """Returns bool if this node is a definition."""
122
- return False
123
-
124
- def IsExportable(self):
125
- """Returns bool if this node exportable from a header file."""
126
- return False
127
-
128
- def Requires(self, node):
129
- """Does this AST node require the definition of the node passed in?"""
130
- return False
131
-
132
- def XXX__str__(self):
133
- return self._StringHelper(self.__class__.__name__, '')
134
-
135
- def _StringHelper(self, name, suffix):
136
- if not utils.DEBUG:
137
- return '%s(%s)' % (name, suffix)
138
- return '%s(%d, %d, %s)' % (name, self.start, self.end, suffix)
139
-
140
- def __repr__(self):
141
- return str(self)
142
-
143
-
144
- class Define(Node):
145
- def __init__(self, start, end, name, definition):
146
- Node.__init__(self, start, end)
147
- self.name = name
148
- self.definition = definition
149
-
150
- def __str__(self):
151
- value = '%s %s' % (self.name, self.definition)
152
- return self._StringHelper(self.__class__.__name__, value)
153
-
154
-
155
- class Include(Node):
156
- def __init__(self, start, end, filename, system):
157
- Node.__init__(self, start, end)
158
- self.filename = filename
159
- self.system = system
160
-
161
- def __str__(self):
162
- fmt = '"%s"'
163
- if self.system:
164
- fmt = '<%s>'
165
- return self._StringHelper(self.__class__.__name__, fmt % self.filename)
166
-
167
-
168
- class Goto(Node):
169
- def __init__(self, start, end, label):
170
- Node.__init__(self, start, end)
171
- self.label = label
172
-
173
- def __str__(self):
174
- return self._StringHelper(self.__class__.__name__, str(self.label))
175
-
176
-
177
- class Expr(Node):
178
- def __init__(self, start, end, expr):
179
- Node.__init__(self, start, end)
180
- self.expr = expr
181
-
182
- def Requires(self, node):
183
- # TODO(nnorwitz): impl.
184
- return False
185
-
186
- def __str__(self):
187
- return self._StringHelper(self.__class__.__name__, str(self.expr))
188
-
189
-
190
- class Return(Expr):
191
- pass
192
-
193
-
194
- class Delete(Expr):
195
- pass
196
-
197
-
198
- class Friend(Expr):
199
- def __init__(self, start, end, expr, namespace):
200
- Expr.__init__(self, start, end, expr)
201
- self.namespace = namespace[:]
202
-
203
-
204
- class Using(Node):
205
- def __init__(self, start, end, names):
206
- Node.__init__(self, start, end)
207
- self.names = names
208
-
209
- def __str__(self):
210
- return self._StringHelper(self.__class__.__name__, str(self.names))
211
-
212
-
213
- class Parameter(Node):
214
- def __init__(self, start, end, name, parameter_type, default):
215
- Node.__init__(self, start, end)
216
- self.name = name
217
- self.type = parameter_type
218
- self.default = default
219
-
220
- def Requires(self, node):
221
- # TODO(nnorwitz): handle namespaces, etc.
222
- return self.type.name == node.name
223
-
224
- def __str__(self):
225
- name = str(self.type)
226
- suffix = '%s %s' % (name, self.name)
227
- if self.default:
228
- suffix += ' = ' + ''.join([d.name for d in self.default])
229
- return self._StringHelper(self.__class__.__name__, suffix)
230
-
231
-
232
- class _GenericDeclaration(Node):
233
- def __init__(self, start, end, name, namespace):
234
- Node.__init__(self, start, end)
235
- self.name = name
236
- self.namespace = namespace[:]
237
-
238
- def FullName(self):
239
- prefix = ''
240
- if self.namespace and self.namespace[-1]:
241
- prefix = '::'.join(self.namespace) + '::'
242
- return prefix + self.name
243
-
244
- def _TypeStringHelper(self, suffix):
245
- if self.namespace:
246
- names = [n or '<anonymous>' for n in self.namespace]
247
- suffix += ' in ' + '::'.join(names)
248
- return self._StringHelper(self.__class__.__name__, suffix)
249
-
250
-
251
- # TODO(nnorwitz): merge with Parameter in some way?
252
- class VariableDeclaration(_GenericDeclaration):
253
- def __init__(self, start, end, name, var_type, initial_value, namespace):
254
- _GenericDeclaration.__init__(self, start, end, name, namespace)
255
- self.type = var_type
256
- self.initial_value = initial_value
257
-
258
- def Requires(self, node):
259
- # TODO(nnorwitz): handle namespaces, etc.
260
- return self.type.name == node.name
261
-
262
- def ToString(self):
263
- """Return a string that tries to reconstitute the variable decl."""
264
- suffix = '%s %s' % (self.type, self.name)
265
- if self.initial_value:
266
- suffix += ' = ' + self.initial_value
267
- return suffix
268
-
269
- def __str__(self):
270
- return self._StringHelper(self.__class__.__name__, self.ToString())
271
-
272
-
273
- class Typedef(_GenericDeclaration):
274
- def __init__(self, start, end, name, alias, namespace):
275
- _GenericDeclaration.__init__(self, start, end, name, namespace)
276
- self.alias = alias
277
-
278
- def IsDefinition(self):
279
- return True
280
-
281
- def IsExportable(self):
282
- return True
283
-
284
- def Requires(self, node):
285
- # TODO(nnorwitz): handle namespaces, etc.
286
- name = node.name
287
- for token in self.alias:
288
- if token is not None and name == token.name:
289
- return True
290
- return False
291
-
292
- def __str__(self):
293
- suffix = '%s, %s' % (self.name, self.alias)
294
- return self._TypeStringHelper(suffix)
295
-
296
-
297
- class _NestedType(_GenericDeclaration):
298
- def __init__(self, start, end, name, fields, namespace):
299
- _GenericDeclaration.__init__(self, start, end, name, namespace)
300
- self.fields = fields
301
-
302
- def IsDefinition(self):
303
- return True
304
-
305
- def IsExportable(self):
306
- return True
307
-
308
- def __str__(self):
309
- suffix = '%s, {%s}' % (self.name, self.fields)
310
- return self._TypeStringHelper(suffix)
311
-
312
-
313
- class Union(_NestedType):
314
- pass
315
-
316
-
317
- class Enum(_NestedType):
318
- pass
319
-
320
-
321
- class Class(_GenericDeclaration):
322
- def __init__(self, start, end, name, bases, templated_types, body, namespace):
323
- _GenericDeclaration.__init__(self, start, end, name, namespace)
324
- self.bases = bases
325
- self.body = body
326
- self.templated_types = templated_types
327
-
328
- def IsDeclaration(self):
329
- return self.bases is None and self.body is None
330
-
331
- def IsDefinition(self):
332
- return not self.IsDeclaration()
333
-
334
- def IsExportable(self):
335
- return not self.IsDeclaration()
336
-
337
- def Requires(self, node):
338
- # TODO(nnorwitz): handle namespaces, etc.
339
- if self.bases:
340
- for token_list in self.bases:
341
- # TODO(nnorwitz): bases are tokens, do name comparison.
342
- for token in token_list:
343
- if token.name == node.name:
344
- return True
345
- # TODO(nnorwitz): search in body too.
346
- return False
347
-
348
- def __str__(self):
349
- name = self.name
350
- if self.templated_types:
351
- name += '<%s>' % self.templated_types
352
- suffix = '%s, %s, %s' % (name, self.bases, self.body)
353
- return self._TypeStringHelper(suffix)
354
-
355
-
356
- class Struct(Class):
357
- pass
358
-
359
-
360
- class Function(_GenericDeclaration):
361
- def __init__(self, start, end, name, return_type, parameters,
362
- modifiers, templated_types, body, namespace):
363
- _GenericDeclaration.__init__(self, start, end, name, namespace)
364
- converter = TypeConverter(namespace)
365
- self.return_type = converter.CreateReturnType(return_type)
366
- self.parameters = converter.ToParameters(parameters)
367
- self.modifiers = modifiers
368
- self.body = body
369
- self.templated_types = templated_types
370
-
371
- def IsDeclaration(self):
372
- return self.body is None
373
-
374
- def IsDefinition(self):
375
- return self.body is not None
376
-
377
- def IsExportable(self):
378
- if self.return_type and 'static' in self.return_type.modifiers:
379
- return False
380
- return None not in self.namespace
381
-
382
- def Requires(self, node):
383
- if self.parameters:
384
- # TODO(nnorwitz): parameters are tokens, do name comparison.
385
- for p in self.parameters:
386
- if p.name == node.name:
387
- return True
388
- # TODO(nnorwitz): search in body too.
389
- return False
390
-
391
- def __str__(self):
392
- # TODO(nnorwitz): add templated_types.
393
- suffix = ('%s %s(%s), 0x%02x, %s' %
394
- (self.return_type, self.name, self.parameters,
395
- self.modifiers, self.body))
396
- return self._TypeStringHelper(suffix)
397
-
398
-
399
- class Method(Function):
400
- def __init__(self, start, end, name, in_class, return_type, parameters,
401
- modifiers, templated_types, body, namespace):
402
- Function.__init__(self, start, end, name, return_type, parameters,
403
- modifiers, templated_types, body, namespace)
404
- # TODO(nnorwitz): in_class could also be a namespace which can
405
- # mess up finding functions properly.
406
- self.in_class = in_class
407
-
408
-
409
- class Type(_GenericDeclaration):
410
- """Type used for any variable (eg class, primitive, struct, etc)."""
411
-
412
- def __init__(self, start, end, name, templated_types, modifiers,
413
- reference, pointer, array):
414
- """
415
- Args:
416
- name: str name of main type
417
- templated_types: [Class (Type?)] template type info between <>
418
- modifiers: [str] type modifiers (keywords) eg, const, mutable, etc.
419
- reference, pointer, array: bools
420
- """
421
- _GenericDeclaration.__init__(self, start, end, name, [])
422
- self.templated_types = templated_types
423
- if not name and modifiers:
424
- self.name = modifiers.pop()
425
- self.modifiers = modifiers
426
- self.reference = reference
427
- self.pointer = pointer
428
- self.array = array
429
-
430
- def __str__(self):
431
- prefix = ''
432
- if self.modifiers:
433
- prefix = ' '.join(self.modifiers) + ' '
434
- name = str(self.name)
435
- if self.templated_types:
436
- name += '<%s>' % self.templated_types
437
- suffix = prefix + name
438
- if self.reference:
439
- suffix += '&'
440
- if self.pointer:
441
- suffix += '*'
442
- if self.array:
443
- suffix += '[]'
444
- return self._TypeStringHelper(suffix)
445
-
446
- # By definition, Is* are always False. A Type can only exist in
447
- # some sort of variable declaration, parameter, or return value.
448
- def IsDeclaration(self):
449
- return False
450
-
451
- def IsDefinition(self):
452
- return False
453
-
454
- def IsExportable(self):
455
- return False
456
-
457
-
458
- class TypeConverter(object):
459
-
460
- def __init__(self, namespace_stack):
461
- self.namespace_stack = namespace_stack
462
-
463
- def _GetTemplateEnd(self, tokens, start):
464
- count = 1
465
- end = start
466
- while 1:
467
- token = tokens[end]
468
- end += 1
469
- if token.name == '<':
470
- count += 1
471
- elif token.name == '>':
472
- count -= 1
473
- if count == 0:
474
- break
475
- return tokens[start:end-1], end
476
-
477
- def ToType(self, tokens):
478
- """Convert [Token,...] to [Class(...), ] useful for base classes.
479
- For example, code like class Foo : public Bar<x, y> { ... };
480
- the "Bar<x, y>" portion gets converted to an AST.
481
-
482
- Returns:
483
- [Class(...), ...]
484
- """
485
- result = []
486
- name_tokens = []
487
- reference = pointer = array = False
488
-
489
- def AddType(templated_types):
490
- # Partition tokens into name and modifier tokens.
491
- names = []
492
- modifiers = []
493
- for t in name_tokens:
494
- if keywords.IsKeyword(t.name):
495
- modifiers.append(t.name)
496
- else:
497
- names.append(t.name)
498
- name = ''.join(names)
499
- if name_tokens:
500
- result.append(Type(name_tokens[0].start, name_tokens[-1].end,
501
- name, templated_types, modifiers,
502
- reference, pointer, array))
503
- del name_tokens[:]
504
-
505
- i = 0
506
- end = len(tokens)
507
- while i < end:
508
- token = tokens[i]
509
- if token.name == '<':
510
- new_tokens, new_end = self._GetTemplateEnd(tokens, i+1)
511
- AddType(self.ToType(new_tokens))
512
- # If there is a comma after the template, we need to consume
513
- # that here otherwise it becomes part of the name.
514
- i = new_end
515
- reference = pointer = array = False
516
- elif token.name == ',':
517
- AddType([])
518
- reference = pointer = array = False
519
- elif token.name == '*':
520
- pointer = True
521
- elif token.name == '&':
522
- reference = True
523
- elif token.name == '[':
524
- pointer = True
525
- elif token.name == ']':
526
- pass
527
- else:
528
- name_tokens.append(token)
529
- i += 1
530
-
531
- if name_tokens:
532
- # No '<' in the tokens, just a simple name and no template.
533
- AddType([])
534
- return result
535
-
536
- def DeclarationToParts(self, parts, needs_name_removed):
537
- name = None
538
- default = []
539
- if needs_name_removed:
540
- # Handle default (initial) values properly.
541
- for i, t in enumerate(parts):
542
- if t.name == '=':
543
- default = parts[i+1:]
544
- name = parts[i-1].name
545
- if name == ']' and parts[i-2].name == '[':
546
- name = parts[i-3].name
547
- i -= 1
548
- parts = parts[:i-1]
549
- break
550
- else:
551
- if parts[-1].token_type == tokenize.NAME:
552
- name = parts.pop().name
553
- else:
554
- # TODO(nnorwitz): this is a hack that happens for code like
555
- # Register(Foo<T>); where it thinks this is a function call
556
- # but it's actually a declaration.
557
- name = '???'
558
- modifiers = []
559
- type_name = []
560
- other_tokens = []
561
- templated_types = []
562
- i = 0
563
- end = len(parts)
564
- while i < end:
565
- p = parts[i]
566
- if keywords.IsKeyword(p.name):
567
- modifiers.append(p.name)
568
- elif p.name == '<':
569
- templated_tokens, new_end = self._GetTemplateEnd(parts, i+1)
570
- templated_types = self.ToType(templated_tokens)
571
- i = new_end - 1
572
- # Don't add a spurious :: to data members being initialized.
573
- next_index = i + 1
574
- if next_index < end and parts[next_index].name == '::':
575
- i += 1
576
- elif p.name in ('[', ']', '='):
577
- # These are handled elsewhere.
578
- other_tokens.append(p)
579
- elif p.name not in ('*', '&', '>'):
580
- # Ensure that names have a space between them.
581
- if (type_name and type_name[-1].token_type == tokenize.NAME and
582
- p.token_type == tokenize.NAME):
583
- type_name.append(tokenize.Token(tokenize.SYNTAX, ' ', 0, 0))
584
- type_name.append(p)
585
- else:
586
- other_tokens.append(p)
587
- i += 1
588
- type_name = ''.join([t.name for t in type_name])
589
- return name, type_name, templated_types, modifiers, default, other_tokens
590
-
591
- def ToParameters(self, tokens):
592
- if not tokens:
593
- return []
594
-
595
- result = []
596
- name = type_name = ''
597
- type_modifiers = []
598
- pointer = reference = array = False
599
- first_token = None
600
- default = []
601
-
602
- def AddParameter(end):
603
- if default:
604
- del default[0] # Remove flag.
605
- parts = self.DeclarationToParts(type_modifiers, True)
606
- (name, type_name, templated_types, modifiers,
607
- unused_default, unused_other_tokens) = parts
608
- parameter_type = Type(first_token.start, first_token.end,
609
- type_name, templated_types, modifiers,
610
- reference, pointer, array)
611
- p = Parameter(first_token.start, end, name,
612
- parameter_type, default)
613
- result.append(p)
614
-
615
- template_count = 0
616
- for s in tokens:
617
- if not first_token:
618
- first_token = s
619
- if s.name == '<':
620
- template_count += 1
621
- elif s.name == '>':
622
- template_count -= 1
623
- if template_count > 0:
624
- type_modifiers.append(s)
625
- continue
626
-
627
- if s.name == ',':
628
- AddParameter(s.start)
629
- name = type_name = ''
630
- type_modifiers = []
631
- pointer = reference = array = False
632
- first_token = None
633
- default = []
634
- elif s.name == '*':
635
- pointer = True
636
- elif s.name == '&':
637
- reference = True
638
- elif s.name == '[':
639
- array = True
640
- elif s.name == ']':
641
- pass # Just don't add to type_modifiers.
642
- elif s.name == '=':
643
- # Got a default value. Add any value (None) as a flag.
644
- default.append(None)
645
- elif default:
646
- default.append(s)
647
- else:
648
- type_modifiers.append(s)
649
- AddParameter(tokens[-1].end)
650
- return result
651
-
652
- def CreateReturnType(self, return_type_seq):
653
- if not return_type_seq:
654
- return None
655
- start = return_type_seq[0].start
656
- end = return_type_seq[-1].end
657
- _, name, templated_types, modifiers, default, other_tokens = \
658
- self.DeclarationToParts(return_type_seq, False)
659
- names = [n.name for n in other_tokens]
660
- reference = '&' in names
661
- pointer = '*' in names
662
- array = '[' in names
663
- return Type(start, end, name, templated_types, modifiers,
664
- reference, pointer, array)
665
-
666
- def GetTemplateIndices(self, names):
667
- # names is a list of strings.
668
- start = names.index('<')
669
- end = len(names) - 1
670
- while end > 0:
671
- if names[end] == '>':
672
- break
673
- end -= 1
674
- return start, end+1
675
-
676
- class AstBuilder(object):
677
- def __init__(self, token_stream, filename, in_class='', visibility=None,
678
- namespace_stack=[]):
679
- self.tokens = token_stream
680
- self.filename = filename
681
- # TODO(nnorwitz): use a better data structure (deque) for the queue.
682
- # Switching directions of the "queue" improved perf by about 25%.
683
- # Using a deque should be even better since we access from both sides.
684
- self.token_queue = []
685
- self.namespace_stack = namespace_stack[:]
686
- self.in_class = in_class
687
- if in_class is None:
688
- self.in_class_name_only = None
689
- else:
690
- self.in_class_name_only = in_class.split('::')[-1]
691
- self.visibility = visibility
692
- self.in_function = False
693
- self.current_token = None
694
- # Keep the state whether we are currently handling a typedef or not.
695
- self._handling_typedef = False
696
-
697
- self.converter = TypeConverter(self.namespace_stack)
698
-
699
- def HandleError(self, msg, token):
700
- printable_queue = list(reversed(self.token_queue[-20:]))
701
- sys.stderr.write('Got %s in %s @ %s %s\n' %
702
- (msg, self.filename, token, printable_queue))
703
-
704
- def Generate(self):
705
- while 1:
706
- token = self._GetNextToken()
707
- if not token:
708
- break
709
-
710
- # Get the next token.
711
- self.current_token = token
712
-
713
- # Dispatch on the next token type.
714
- if token.token_type == _INTERNAL_TOKEN:
715
- if token.name == _NAMESPACE_POP:
716
- self.namespace_stack.pop()
717
- continue
718
-
719
- try:
720
- result = self._GenerateOne(token)
721
- if result is not None:
722
- yield result
723
- except:
724
- self.HandleError('exception', token)
725
- raise
726
-
727
- def _CreateVariable(self, pos_token, name, type_name, type_modifiers,
728
- ref_pointer_name_seq, templated_types, value=None):
729
- reference = '&' in ref_pointer_name_seq
730
- pointer = '*' in ref_pointer_name_seq
731
- array = '[' in ref_pointer_name_seq
732
- var_type = Type(pos_token.start, pos_token.end, type_name,
733
- templated_types, type_modifiers,
734
- reference, pointer, array)
735
- return VariableDeclaration(pos_token.start, pos_token.end,
736
- name, var_type, value, self.namespace_stack)
737
-
738
- def _GenerateOne(self, token):
739
- if token.token_type == tokenize.NAME:
740
- if (keywords.IsKeyword(token.name) and
741
- not keywords.IsBuiltinType(token.name)):
742
- method = getattr(self, 'handle_' + token.name)
743
- return method()
744
- elif token.name == self.in_class_name_only:
745
- # The token name is the same as the class, must be a ctor if
746
- # there is a paren. Otherwise, it's the return type.
747
- # Peek ahead to get the next token to figure out which.
748
- next = self._GetNextToken()
749
- self._AddBackToken(next)
750
- if next.token_type == tokenize.SYNTAX and next.name == '(':
751
- return self._GetMethod([token], FUNCTION_CTOR, None, True)
752
- # Fall through--handle like any other method.
753
-
754
- # Handle data or function declaration/definition.
755
- syntax = tokenize.SYNTAX
756
- temp_tokens, last_token = \
757
- self._GetVarTokensUpTo(syntax, '(', ';', '{', '[')
758
- temp_tokens.insert(0, token)
759
- if last_token.name == '(':
760
- # If there is an assignment before the paren,
761
- # this is an expression, not a method.
762
- expr = bool([e for e in temp_tokens if e.name == '='])
763
- if expr:
764
- new_temp = self._GetTokensUpTo(tokenize.SYNTAX, ';')
765
- temp_tokens.append(last_token)
766
- temp_tokens.extend(new_temp)
767
- last_token = tokenize.Token(tokenize.SYNTAX, ';', 0, 0)
768
-
769
- if last_token.name == '[':
770
- # Handle array, this isn't a method, unless it's an operator.
771
- # TODO(nnorwitz): keep the size somewhere.
772
- # unused_size = self._GetTokensUpTo(tokenize.SYNTAX, ']')
773
- temp_tokens.append(last_token)
774
- if temp_tokens[-2].name == 'operator':
775
- temp_tokens.append(self._GetNextToken())
776
- else:
777
- temp_tokens2, last_token = \
778
- self._GetVarTokensUpTo(tokenize.SYNTAX, ';')
779
- temp_tokens.extend(temp_tokens2)
780
-
781
- if last_token.name == ';':
782
- # Handle data, this isn't a method.
783
- parts = self.converter.DeclarationToParts(temp_tokens, True)
784
- (name, type_name, templated_types, modifiers, default,
785
- unused_other_tokens) = parts
786
-
787
- t0 = temp_tokens[0]
788
- names = [t.name for t in temp_tokens]
789
- if templated_types:
790
- start, end = self.converter.GetTemplateIndices(names)
791
- names = names[:start] + names[end:]
792
- default = ''.join([t.name for t in default])
793
- return self._CreateVariable(t0, name, type_name, modifiers,
794
- names, templated_types, default)
795
- if last_token.name == '{':
796
- self._AddBackTokens(temp_tokens[1:])
797
- self._AddBackToken(last_token)
798
- method_name = temp_tokens[0].name
799
- method = getattr(self, 'handle_' + method_name, None)
800
- if not method:
801
- # Must be declaring a variable.
802
- # TODO(nnorwitz): handle the declaration.
803
- return None
804
- return method()
805
- return self._GetMethod(temp_tokens, 0, None, False)
806
- elif token.token_type == tokenize.SYNTAX:
807
- if token.name == '~' and self.in_class:
808
- # Must be a dtor (probably not in method body).
809
- token = self._GetNextToken()
810
- # self.in_class can contain A::Name, but the dtor will only
811
- # be Name. Make sure to compare against the right value.
812
- if (token.token_type == tokenize.NAME and
813
- token.name == self.in_class_name_only):
814
- return self._GetMethod([token], FUNCTION_DTOR, None, True)
815
- # TODO(nnorwitz): handle a lot more syntax.
816
- elif token.token_type == tokenize.PREPROCESSOR:
817
- # TODO(nnorwitz): handle more preprocessor directives.
818
- # token starts with a #, so remove it and strip whitespace.
819
- name = token.name[1:].lstrip()
820
- if name.startswith('include'):
821
- # Remove "include".
822
- name = name[7:].strip()
823
- assert name
824
- # Handle #include \<newline> "header-on-second-line.h".
825
- if name.startswith('\\'):
826
- name = name[1:].strip()
827
- assert name[0] in '<"', token
828
- assert name[-1] in '>"', token
829
- system = name[0] == '<'
830
- filename = name[1:-1]
831
- return Include(token.start, token.end, filename, system)
832
- if name.startswith('define'):
833
- # Remove "define".
834
- name = name[6:].strip()
835
- assert name
836
- value = ''
837
- for i, c in enumerate(name):
838
- if c.isspace():
839
- value = name[i:].lstrip()
840
- name = name[:i]
841
- break
842
- return Define(token.start, token.end, name, value)
843
- if name.startswith('if') and name[2:3].isspace():
844
- condition = name[3:].strip()
845
- if condition.startswith('0') or condition.startswith('(0)'):
846
- self._SkipIf0Blocks()
847
- return None
848
-
849
- def _GetTokensUpTo(self, expected_token_type, expected_token):
850
- return self._GetVarTokensUpTo(expected_token_type, expected_token)[0]
851
-
852
- def _GetVarTokensUpTo(self, expected_token_type, *expected_tokens):
853
- last_token = self._GetNextToken()
854
- tokens = []
855
- while (last_token.token_type != expected_token_type or
856
- last_token.name not in expected_tokens):
857
- tokens.append(last_token)
858
- last_token = self._GetNextToken()
859
- return tokens, last_token
860
-
861
- # TODO(nnorwitz): remove _IgnoreUpTo() it shouldn't be necessary.
862
- def _IgnoreUpTo(self, token_type, token):
863
- unused_tokens = self._GetTokensUpTo(token_type, token)
864
-
865
- def _SkipIf0Blocks(self):
866
- count = 1
867
- while 1:
868
- token = self._GetNextToken()
869
- if token.token_type != tokenize.PREPROCESSOR:
870
- continue
871
-
872
- name = token.name[1:].lstrip()
873
- if name.startswith('endif'):
874
- count -= 1
875
- if count == 0:
876
- break
877
- elif name.startswith('if'):
878
- count += 1
879
-
880
- def _GetMatchingChar(self, open_paren, close_paren, GetNextToken=None):
881
- if GetNextToken is None:
882
- GetNextToken = self._GetNextToken
883
- # Assumes the current token is open_paren and we will consume
884
- # and return up to the close_paren.
885
- count = 1
886
- token = GetNextToken()
887
- while 1:
888
- if token.token_type == tokenize.SYNTAX:
889
- if token.name == open_paren:
890
- count += 1
891
- elif token.name == close_paren:
892
- count -= 1
893
- if count == 0:
894
- break
895
- yield token
896
- token = GetNextToken()
897
- yield token
898
-
899
- def _GetParameters(self):
900
- return self._GetMatchingChar('(', ')')
901
-
902
- def GetScope(self):
903
- return self._GetMatchingChar('{', '}')
904
-
905
- def _GetNextToken(self):
906
- if self.token_queue:
907
- return self.token_queue.pop()
908
- return next(self.tokens)
909
-
910
- def _AddBackToken(self, token):
911
- if token.whence == tokenize.WHENCE_STREAM:
912
- token.whence = tokenize.WHENCE_QUEUE
913
- self.token_queue.insert(0, token)
914
- else:
915
- assert token.whence == tokenize.WHENCE_QUEUE, token
916
- self.token_queue.append(token)
917
-
918
- def _AddBackTokens(self, tokens):
919
- if tokens:
920
- if tokens[-1].whence == tokenize.WHENCE_STREAM:
921
- for token in tokens:
922
- token.whence = tokenize.WHENCE_QUEUE
923
- self.token_queue[:0] = reversed(tokens)
924
- else:
925
- assert tokens[-1].whence == tokenize.WHENCE_QUEUE, tokens
926
- self.token_queue.extend(reversed(tokens))
927
-
928
- def GetName(self, seq=None):
929
- """Returns ([tokens], next_token_info)."""
930
- GetNextToken = self._GetNextToken
931
- if seq is not None:
932
- it = iter(seq)
933
- GetNextToken = lambda: next(it)
934
- next_token = GetNextToken()
935
- tokens = []
936
- last_token_was_name = False
937
- while (next_token.token_type == tokenize.NAME or
938
- (next_token.token_type == tokenize.SYNTAX and
939
- next_token.name in ('::', '<'))):
940
- # Two NAMEs in a row means the identifier should terminate.
941
- # It's probably some sort of variable declaration.
942
- if last_token_was_name and next_token.token_type == tokenize.NAME:
943
- break
944
- last_token_was_name = next_token.token_type == tokenize.NAME
945
- tokens.append(next_token)
946
- # Handle templated names.
947
- if next_token.name == '<':
948
- tokens.extend(self._GetMatchingChar('<', '>', GetNextToken))
949
- last_token_was_name = True
950
- next_token = GetNextToken()
951
- return tokens, next_token
952
-
953
- def GetMethod(self, modifiers, templated_types):
954
- return_type_and_name = self._GetTokensUpTo(tokenize.SYNTAX, '(')
955
- assert len(return_type_and_name) >= 1
956
- return self._GetMethod(return_type_and_name, modifiers, templated_types,
957
- False)
958
-
959
- def _GetMethod(self, return_type_and_name, modifiers, templated_types,
960
- get_paren):
961
- template_portion = None
962
- if get_paren:
963
- token = self._GetNextToken()
964
- assert token.token_type == tokenize.SYNTAX, token
965
- if token.name == '<':
966
- # Handle templatized dtors.
967
- template_portion = [token]
968
- template_portion.extend(self._GetMatchingChar('<', '>'))
969
- token = self._GetNextToken()
970
- assert token.token_type == tokenize.SYNTAX, token
971
- assert token.name == '(', token
972
-
973
- name = return_type_and_name.pop()
974
- # Handle templatized ctors.
975
- if name.name == '>':
976
- index = 1
977
- while return_type_and_name[index].name != '<':
978
- index += 1
979
- template_portion = return_type_and_name[index:] + [name]
980
- del return_type_and_name[index:]
981
- name = return_type_and_name.pop()
982
- elif name.name == ']':
983
- rt = return_type_and_name
984
- assert rt[-1].name == '[', return_type_and_name
985
- assert rt[-2].name == 'operator', return_type_and_name
986
- name_seq = return_type_and_name[-2:]
987
- del return_type_and_name[-2:]
988
- name = tokenize.Token(tokenize.NAME, 'operator[]',
989
- name_seq[0].start, name.end)
990
- # Get the open paren so _GetParameters() below works.
991
- unused_open_paren = self._GetNextToken()
992
-
993
- # TODO(nnorwitz): store template_portion.
994
- return_type = return_type_and_name
995
- indices = name
996
- if return_type:
997
- indices = return_type[0]
998
-
999
- # Force ctor for templatized ctors.
1000
- if name.name == self.in_class and not modifiers:
1001
- modifiers |= FUNCTION_CTOR
1002
- parameters = list(self._GetParameters())
1003
- del parameters[-1] # Remove trailing ')'.
1004
-
1005
- # Handling operator() is especially weird.
1006
- if name.name == 'operator' and not parameters:
1007
- token = self._GetNextToken()
1008
- assert token.name == '(', token
1009
- parameters = list(self._GetParameters())
1010
- del parameters[-1] # Remove trailing ')'.
1011
-
1012
- token = self._GetNextToken()
1013
- while token.token_type == tokenize.NAME:
1014
- modifier_token = token
1015
- token = self._GetNextToken()
1016
- if modifier_token.name == 'const':
1017
- modifiers |= FUNCTION_CONST
1018
- elif modifier_token.name == '__attribute__':
1019
- # TODO(nnorwitz): handle more __attribute__ details.
1020
- modifiers |= FUNCTION_ATTRIBUTE
1021
- assert token.name == '(', token
1022
- # Consume everything between the (parens).
1023
- unused_tokens = list(self._GetMatchingChar('(', ')'))
1024
- token = self._GetNextToken()
1025
- elif modifier_token.name == 'throw':
1026
- modifiers |= FUNCTION_THROW
1027
- assert token.name == '(', token
1028
- # Consume everything between the (parens).
1029
- unused_tokens = list(self._GetMatchingChar('(', ')'))
1030
- token = self._GetNextToken()
1031
- elif modifier_token.name == 'override':
1032
- modifiers |= FUNCTION_OVERRIDE
1033
- elif modifier_token.name == modifier_token.name.upper():
1034
- # HACK(nnorwitz): assume that all upper-case names
1035
- # are some macro we aren't expanding.
1036
- modifiers |= FUNCTION_UNKNOWN_ANNOTATION
1037
- else:
1038
- self.HandleError('unexpected token', modifier_token)
1039
-
1040
- assert token.token_type == tokenize.SYNTAX, token
1041
- # Handle ctor initializers.
1042
- if token.name == ':':
1043
- # TODO(nnorwitz): anything else to handle for initializer list?
1044
- while token.name != ';' and token.name != '{':
1045
- token = self._GetNextToken()
1046
-
1047
- # Handle pointer to functions that are really data but look
1048
- # like method declarations.
1049
- if token.name == '(':
1050
- if parameters[0].name == '*':
1051
- # name contains the return type.
1052
- name = parameters.pop()
1053
- # parameters contains the name of the data.
1054
- modifiers = [p.name for p in parameters]
1055
- # Already at the ( to open the parameter list.
1056
- function_parameters = list(self._GetMatchingChar('(', ')'))
1057
- del function_parameters[-1] # Remove trailing ')'.
1058
- # TODO(nnorwitz): store the function_parameters.
1059
- token = self._GetNextToken()
1060
- assert token.token_type == tokenize.SYNTAX, token
1061
- assert token.name == ';', token
1062
- return self._CreateVariable(indices, name.name, indices.name,
1063
- modifiers, '', None)
1064
- # At this point, we got something like:
1065
- # return_type (type::*name_)(params);
1066
- # This is a data member called name_ that is a function pointer.
1067
- # With this code: void (sq_type::*field_)(string&);
1068
- # We get: name=void return_type=[] parameters=sq_type ... field_
1069
- # TODO(nnorwitz): is return_type always empty?
1070
- # TODO(nnorwitz): this isn't even close to being correct.
1071
- # Just put in something so we don't crash and can move on.
1072
- real_name = parameters[-1]
1073
- modifiers = [p.name for p in self._GetParameters()]
1074
- del modifiers[-1] # Remove trailing ')'.
1075
- return self._CreateVariable(indices, real_name.name, indices.name,
1076
- modifiers, '', None)
1077
-
1078
- if token.name == '{':
1079
- body = list(self.GetScope())
1080
- del body[-1] # Remove trailing '}'.
1081
- else:
1082
- body = None
1083
- if token.name == '=':
1084
- token = self._GetNextToken()
1085
-
1086
- if token.name == 'default' or token.name == 'delete':
1087
- # Ignore explicitly defaulted and deleted special members
1088
- # in C++11.
1089
- token = self._GetNextToken()
1090
- else:
1091
- # Handle pure-virtual declarations.
1092
- assert token.token_type == tokenize.CONSTANT, token
1093
- assert token.name == '0', token
1094
- modifiers |= FUNCTION_PURE_VIRTUAL
1095
- token = self._GetNextToken()
1096
-
1097
- if token.name == '[':
1098
- # TODO(nnorwitz): store tokens and improve parsing.
1099
- # template <typename T, size_t N> char (&ASH(T (&seq)[N]))[N];
1100
- tokens = list(self._GetMatchingChar('[', ']'))
1101
- token = self._GetNextToken()
1102
-
1103
- assert token.name == ';', (token, return_type_and_name, parameters)
1104
-
1105
- # Looks like we got a method, not a function.
1106
- if len(return_type) > 2 and return_type[-1].name == '::':
1107
- return_type, in_class = \
1108
- self._GetReturnTypeAndClassName(return_type)
1109
- return Method(indices.start, indices.end, name.name, in_class,
1110
- return_type, parameters, modifiers, templated_types,
1111
- body, self.namespace_stack)
1112
- return Function(indices.start, indices.end, name.name, return_type,
1113
- parameters, modifiers, templated_types, body,
1114
- self.namespace_stack)
1115
-
1116
- def _GetReturnTypeAndClassName(self, token_seq):
1117
- # Splitting the return type from the class name in a method
1118
- # can be tricky. For example, Return::Type::Is::Hard::To::Find().
1119
- # Where is the return type and where is the class name?
1120
- # The heuristic used is to pull the last name as the class name.
1121
- # This includes all the templated type info.
1122
- # TODO(nnorwitz): if there is only One name like in the
1123
- # example above, punt and assume the last bit is the class name.
1124
-
1125
- # Ignore a :: prefix, if exists so we can find the first real name.
1126
- i = 0
1127
- if token_seq[0].name == '::':
1128
- i = 1
1129
- # Ignore a :: suffix, if exists.
1130
- end = len(token_seq) - 1
1131
- if token_seq[end-1].name == '::':
1132
- end -= 1
1133
-
1134
- # Make a copy of the sequence so we can append a sentinel
1135
- # value. This is required for GetName will has to have some
1136
- # terminating condition beyond the last name.
1137
- seq_copy = token_seq[i:end]
1138
- seq_copy.append(tokenize.Token(tokenize.SYNTAX, '', 0, 0))
1139
- names = []
1140
- while i < end:
1141
- # Iterate through the sequence parsing out each name.
1142
- new_name, next = self.GetName(seq_copy[i:])
1143
- assert new_name, 'Got empty new_name, next=%s' % next
1144
- # We got a pointer or ref. Add it to the name.
1145
- if next and next.token_type == tokenize.SYNTAX:
1146
- new_name.append(next)
1147
- names.append(new_name)
1148
- i += len(new_name)
1149
-
1150
- # Now that we have the names, it's time to undo what we did.
1151
-
1152
- # Remove the sentinel value.
1153
- names[-1].pop()
1154
- # Flatten the token sequence for the return type.
1155
- return_type = [e for seq in names[:-1] for e in seq]
1156
- # The class name is the last name.
1157
- class_name = names[-1]
1158
- return return_type, class_name
1159
-
1160
- def handle_bool(self):
1161
- pass
1162
-
1163
- def handle_char(self):
1164
- pass
1165
-
1166
- def handle_int(self):
1167
- pass
1168
-
1169
- def handle_long(self):
1170
- pass
1171
-
1172
- def handle_short(self):
1173
- pass
1174
-
1175
- def handle_double(self):
1176
- pass
1177
-
1178
- def handle_float(self):
1179
- pass
1180
-
1181
- def handle_void(self):
1182
- pass
1183
-
1184
- def handle_wchar_t(self):
1185
- pass
1186
-
1187
- def handle_unsigned(self):
1188
- pass
1189
-
1190
- def handle_signed(self):
1191
- pass
1192
-
1193
- def _GetNestedType(self, ctor):
1194
- name = None
1195
- name_tokens, token = self.GetName()
1196
- if name_tokens:
1197
- name = ''.join([t.name for t in name_tokens])
1198
-
1199
- # Handle forward declarations.
1200
- if token.token_type == tokenize.SYNTAX and token.name == ';':
1201
- return ctor(token.start, token.end, name, None,
1202
- self.namespace_stack)
1203
-
1204
- if token.token_type == tokenize.NAME and self._handling_typedef:
1205
- self._AddBackToken(token)
1206
- return ctor(token.start, token.end, name, None,
1207
- self.namespace_stack)
1208
-
1209
- # Must be the type declaration.
1210
- fields = list(self._GetMatchingChar('{', '}'))
1211
- del fields[-1] # Remove trailing '}'.
1212
- if token.token_type == tokenize.SYNTAX and token.name == '{':
1213
- next = self._GetNextToken()
1214
- new_type = ctor(token.start, token.end, name, fields,
1215
- self.namespace_stack)
1216
- # A name means this is an anonymous type and the name
1217
- # is the variable declaration.
1218
- if next.token_type != tokenize.NAME:
1219
- return new_type
1220
- name = new_type
1221
- token = next
1222
-
1223
- # Must be variable declaration using the type prefixed with keyword.
1224
- assert token.token_type == tokenize.NAME, token
1225
- return self._CreateVariable(token, token.name, name, [], '', None)
1226
-
1227
- def handle_struct(self):
1228
- # Special case the handling typedef/aliasing of structs here.
1229
- # It would be a pain to handle in the class code.
1230
- name_tokens, var_token = self.GetName()
1231
- if name_tokens:
1232
- next_token = self._GetNextToken()
1233
- is_syntax = (var_token.token_type == tokenize.SYNTAX and
1234
- var_token.name[0] in '*&')
1235
- is_variable = (var_token.token_type == tokenize.NAME and
1236
- next_token.name == ';')
1237
- variable = var_token
1238
- if is_syntax and not is_variable:
1239
- variable = next_token
1240
- temp = self._GetNextToken()
1241
- if temp.token_type == tokenize.SYNTAX and temp.name == '(':
1242
- # Handle methods declared to return a struct.
1243
- t0 = name_tokens[0]
1244
- struct = tokenize.Token(tokenize.NAME, 'struct',
1245
- t0.start-7, t0.start-2)
1246
- type_and_name = [struct]
1247
- type_and_name.extend(name_tokens)
1248
- type_and_name.extend((var_token, next_token))
1249
- return self._GetMethod(type_and_name, 0, None, False)
1250
- assert temp.name == ';', (temp, name_tokens, var_token)
1251
- if is_syntax or (is_variable and not self._handling_typedef):
1252
- modifiers = ['struct']
1253
- type_name = ''.join([t.name for t in name_tokens])
1254
- position = name_tokens[0]
1255
- return self._CreateVariable(position, variable.name, type_name,
1256
- modifiers, var_token.name, None)
1257
- name_tokens.extend((var_token, next_token))
1258
- self._AddBackTokens(name_tokens)
1259
- else:
1260
- self._AddBackToken(var_token)
1261
- return self._GetClass(Struct, VISIBILITY_PUBLIC, None)
1262
-
1263
- def handle_union(self):
1264
- return self._GetNestedType(Union)
1265
-
1266
- def handle_enum(self):
1267
- return self._GetNestedType(Enum)
1268
-
1269
- def handle_auto(self):
1270
- # TODO(nnorwitz): warn about using auto? Probably not since it
1271
- # will be reclaimed and useful for C++0x.
1272
- pass
1273
-
1274
- def handle_register(self):
1275
- pass
1276
-
1277
- def handle_const(self):
1278
- pass
1279
-
1280
- def handle_inline(self):
1281
- pass
1282
-
1283
- def handle_extern(self):
1284
- pass
1285
-
1286
- def handle_static(self):
1287
- pass
1288
-
1289
- def handle_virtual(self):
1290
- # What follows must be a method.
1291
- token = token2 = self._GetNextToken()
1292
- if token.name == 'inline':
1293
- # HACK(nnorwitz): handle inline dtors by ignoring 'inline'.
1294
- token2 = self._GetNextToken()
1295
- if token2.token_type == tokenize.SYNTAX and token2.name == '~':
1296
- return self.GetMethod(FUNCTION_VIRTUAL + FUNCTION_DTOR, None)
1297
- assert token.token_type == tokenize.NAME or token.name == '::', token
1298
- return_type_and_name = self._GetTokensUpTo(tokenize.SYNTAX, '(') # )
1299
- return_type_and_name.insert(0, token)
1300
- if token2 is not token:
1301
- return_type_and_name.insert(1, token2)
1302
- return self._GetMethod(return_type_and_name, FUNCTION_VIRTUAL,
1303
- None, False)
1304
-
1305
- def handle_volatile(self):
1306
- pass
1307
-
1308
- def handle_mutable(self):
1309
- pass
1310
-
1311
- def handle_public(self):
1312
- assert self.in_class
1313
- self.visibility = VISIBILITY_PUBLIC
1314
-
1315
- def handle_protected(self):
1316
- assert self.in_class
1317
- self.visibility = VISIBILITY_PROTECTED
1318
-
1319
- def handle_private(self):
1320
- assert self.in_class
1321
- self.visibility = VISIBILITY_PRIVATE
1322
-
1323
- def handle_friend(self):
1324
- tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
1325
- assert tokens
1326
- t0 = tokens[0]
1327
- return Friend(t0.start, t0.end, tokens, self.namespace_stack)
1328
-
1329
- def handle_static_cast(self):
1330
- pass
1331
-
1332
- def handle_const_cast(self):
1333
- pass
1334
-
1335
- def handle_dynamic_cast(self):
1336
- pass
1337
-
1338
- def handle_reinterpret_cast(self):
1339
- pass
1340
-
1341
- def handle_new(self):
1342
- pass
1343
-
1344
- def handle_delete(self):
1345
- tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
1346
- assert tokens
1347
- return Delete(tokens[0].start, tokens[0].end, tokens)
1348
-
1349
- def handle_typedef(self):
1350
- token = self._GetNextToken()
1351
- if (token.token_type == tokenize.NAME and
1352
- keywords.IsKeyword(token.name)):
1353
- # Token must be struct/enum/union/class.
1354
- method = getattr(self, 'handle_' + token.name)
1355
- self._handling_typedef = True
1356
- tokens = [method()]
1357
- self._handling_typedef = False
1358
- else:
1359
- tokens = [token]
1360
-
1361
- # Get the remainder of the typedef up to the semi-colon.
1362
- tokens.extend(self._GetTokensUpTo(tokenize.SYNTAX, ';'))
1363
-
1364
- # TODO(nnorwitz): clean all this up.
1365
- assert tokens
1366
- name = tokens.pop()
1367
- indices = name
1368
- if tokens:
1369
- indices = tokens[0]
1370
- if not indices:
1371
- indices = token
1372
- if name.name == ')':
1373
- # HACK(nnorwitz): Handle pointers to functions "properly".
1374
- if (len(tokens) >= 4 and
1375
- tokens[1].name == '(' and tokens[2].name == '*'):
1376
- tokens.append(name)
1377
- name = tokens[3]
1378
- elif name.name == ']':
1379
- # HACK(nnorwitz): Handle arrays properly.
1380
- if len(tokens) >= 2:
1381
- tokens.append(name)
1382
- name = tokens[1]
1383
- new_type = tokens
1384
- if tokens and isinstance(tokens[0], tokenize.Token):
1385
- new_type = self.converter.ToType(tokens)[0]
1386
- return Typedef(indices.start, indices.end, name.name,
1387
- new_type, self.namespace_stack)
1388
-
1389
- def handle_typeid(self):
1390
- pass # Not needed yet.
1391
-
1392
- def handle_typename(self):
1393
- pass # Not needed yet.
1394
-
1395
- def _GetTemplatedTypes(self):
1396
- result = {}
1397
- tokens = list(self._GetMatchingChar('<', '>'))
1398
- len_tokens = len(tokens) - 1 # Ignore trailing '>'.
1399
- i = 0
1400
- while i < len_tokens:
1401
- key = tokens[i].name
1402
- i += 1
1403
- if keywords.IsKeyword(key) or key == ',':
1404
- continue
1405
- type_name = default = None
1406
- if i < len_tokens:
1407
- i += 1
1408
- if tokens[i-1].name == '=':
1409
- assert i < len_tokens, '%s %s' % (i, tokens)
1410
- default, unused_next_token = self.GetName(tokens[i:])
1411
- i += len(default)
1412
- else:
1413
- if tokens[i-1].name != ',':
1414
- # We got something like: Type variable.
1415
- # Re-adjust the key (variable) and type_name (Type).
1416
- key = tokens[i-1].name
1417
- type_name = tokens[i-2]
1418
-
1419
- result[key] = (type_name, default)
1420
- return result
1421
-
1422
- def handle_template(self):
1423
- token = self._GetNextToken()
1424
- assert token.token_type == tokenize.SYNTAX, token
1425
- assert token.name == '<', token
1426
- templated_types = self._GetTemplatedTypes()
1427
- # TODO(nnorwitz): for now, just ignore the template params.
1428
- token = self._GetNextToken()
1429
- if token.token_type == tokenize.NAME:
1430
- if token.name == 'class':
1431
- return self._GetClass(Class, VISIBILITY_PRIVATE, templated_types)
1432
- elif token.name == 'struct':
1433
- return self._GetClass(Struct, VISIBILITY_PUBLIC, templated_types)
1434
- elif token.name == 'friend':
1435
- return self.handle_friend()
1436
- self._AddBackToken(token)
1437
- tokens, last = self._GetVarTokensUpTo(tokenize.SYNTAX, '(', ';')
1438
- tokens.append(last)
1439
- self._AddBackTokens(tokens)
1440
- if last.name == '(':
1441
- return self.GetMethod(FUNCTION_NONE, templated_types)
1442
- # Must be a variable definition.
1443
- return None
1444
-
1445
- def handle_true(self):
1446
- pass # Nothing to do.
1447
-
1448
- def handle_false(self):
1449
- pass # Nothing to do.
1450
-
1451
- def handle_asm(self):
1452
- pass # Not needed yet.
1453
-
1454
- def handle_class(self):
1455
- return self._GetClass(Class, VISIBILITY_PRIVATE, None)
1456
-
1457
- def _GetBases(self):
1458
- # Get base classes.
1459
- bases = []
1460
- while 1:
1461
- token = self._GetNextToken()
1462
- assert token.token_type == tokenize.NAME, token
1463
- # TODO(nnorwitz): store kind of inheritance...maybe.
1464
- if token.name not in ('public', 'protected', 'private'):
1465
- # If inheritance type is not specified, it is private.
1466
- # Just put the token back so we can form a name.
1467
- # TODO(nnorwitz): it would be good to warn about this.
1468
- self._AddBackToken(token)
1469
- else:
1470
- # Check for virtual inheritance.
1471
- token = self._GetNextToken()
1472
- if token.name != 'virtual':
1473
- self._AddBackToken(token)
1474
- else:
1475
- # TODO(nnorwitz): store that we got virtual for this base.
1476
- pass
1477
- base, next_token = self.GetName()
1478
- bases_ast = self.converter.ToType(base)
1479
- assert len(bases_ast) == 1, bases_ast
1480
- bases.append(bases_ast[0])
1481
- assert next_token.token_type == tokenize.SYNTAX, next_token
1482
- if next_token.name == '{':
1483
- token = next_token
1484
- break
1485
- # Support multiple inheritance.
1486
- assert next_token.name == ',', next_token
1487
- return bases, token
1488
-
1489
- def _GetClass(self, class_type, visibility, templated_types):
1490
- class_name = None
1491
- class_token = self._GetNextToken()
1492
- if class_token.token_type != tokenize.NAME:
1493
- assert class_token.token_type == tokenize.SYNTAX, class_token
1494
- token = class_token
1495
- else:
1496
- # Skip any macro (e.g. storage class specifiers) after the
1497
- # 'class' keyword.
1498
- next_token = self._GetNextToken()
1499
- if next_token.token_type == tokenize.NAME:
1500
- self._AddBackToken(next_token)
1501
- else:
1502
- self._AddBackTokens([class_token, next_token])
1503
- name_tokens, token = self.GetName()
1504
- class_name = ''.join([t.name for t in name_tokens])
1505
- bases = None
1506
- if token.token_type == tokenize.SYNTAX:
1507
- if token.name == ';':
1508
- # Forward declaration.
1509
- return class_type(class_token.start, class_token.end,
1510
- class_name, None, templated_types, None,
1511
- self.namespace_stack)
1512
- if token.name in '*&':
1513
- # Inline forward declaration. Could be method or data.
1514
- name_token = self._GetNextToken()
1515
- next_token = self._GetNextToken()
1516
- if next_token.name == ';':
1517
- # Handle data
1518
- modifiers = ['class']
1519
- return self._CreateVariable(class_token, name_token.name,
1520
- class_name,
1521
- modifiers, token.name, None)
1522
- else:
1523
- # Assume this is a method.
1524
- tokens = (class_token, token, name_token, next_token)
1525
- self._AddBackTokens(tokens)
1526
- return self.GetMethod(FUNCTION_NONE, None)
1527
- if token.name == ':':
1528
- bases, token = self._GetBases()
1529
-
1530
- body = None
1531
- if token.token_type == tokenize.SYNTAX and token.name == '{':
1532
- assert token.token_type == tokenize.SYNTAX, token
1533
- assert token.name == '{', token
1534
-
1535
- ast = AstBuilder(self.GetScope(), self.filename, class_name,
1536
- visibility, self.namespace_stack)
1537
- body = list(ast.Generate())
1538
-
1539
- if not self._handling_typedef:
1540
- token = self._GetNextToken()
1541
- if token.token_type != tokenize.NAME:
1542
- assert token.token_type == tokenize.SYNTAX, token
1543
- assert token.name == ';', token
1544
- else:
1545
- new_class = class_type(class_token.start, class_token.end,
1546
- class_name, bases, None,
1547
- body, self.namespace_stack)
1548
-
1549
- modifiers = []
1550
- return self._CreateVariable(class_token,
1551
- token.name, new_class,
1552
- modifiers, token.name, None)
1553
- else:
1554
- if not self._handling_typedef:
1555
- self.HandleError('non-typedef token', token)
1556
- self._AddBackToken(token)
1557
-
1558
- return class_type(class_token.start, class_token.end, class_name,
1559
- bases, templated_types, body, self.namespace_stack)
1560
-
1561
- def handle_namespace(self):
1562
- token = self._GetNextToken()
1563
- # Support anonymous namespaces.
1564
- name = None
1565
- if token.token_type == tokenize.NAME:
1566
- name = token.name
1567
- token = self._GetNextToken()
1568
- self.namespace_stack.append(name)
1569
- assert token.token_type == tokenize.SYNTAX, token
1570
- # Create an internal token that denotes when the namespace is complete.
1571
- internal_token = tokenize.Token(_INTERNAL_TOKEN, _NAMESPACE_POP,
1572
- None, None)
1573
- internal_token.whence = token.whence
1574
- if token.name == '=':
1575
- # TODO(nnorwitz): handle aliasing namespaces.
1576
- name, next_token = self.GetName()
1577
- assert next_token.name == ';', next_token
1578
- self._AddBackToken(internal_token)
1579
- else:
1580
- assert token.name == '{', token
1581
- tokens = list(self.GetScope())
1582
- # Replace the trailing } with the internal namespace pop token.
1583
- tokens[-1] = internal_token
1584
- # Handle namespace with nothing in it.
1585
- self._AddBackTokens(tokens)
1586
- return None
1587
-
1588
- def handle_using(self):
1589
- tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
1590
- assert tokens
1591
- return Using(tokens[0].start, tokens[0].end, tokens)
1592
-
1593
- def handle_explicit(self):
1594
- assert self.in_class
1595
- # Nothing much to do.
1596
- # TODO(nnorwitz): maybe verify the method name == class name.
1597
- # This must be a ctor.
1598
- return self.GetMethod(FUNCTION_CTOR, None)
1599
-
1600
- def handle_this(self):
1601
- pass # Nothing to do.
1602
-
1603
- def handle_operator(self):
1604
- # Pull off the next token(s?) and make that part of the method name.
1605
- pass
1606
-
1607
- def handle_sizeof(self):
1608
- pass
1609
-
1610
- def handle_case(self):
1611
- pass
1612
-
1613
- def handle_switch(self):
1614
- pass
1615
-
1616
- def handle_default(self):
1617
- token = self._GetNextToken()
1618
- assert token.token_type == tokenize.SYNTAX
1619
- assert token.name == ':'
1620
-
1621
- def handle_if(self):
1622
- pass
1623
-
1624
- def handle_else(self):
1625
- pass
1626
-
1627
- def handle_return(self):
1628
- tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
1629
- if not tokens:
1630
- return Return(self.current_token.start, self.current_token.end, None)
1631
- return Return(tokens[0].start, tokens[0].end, tokens)
1632
-
1633
- def handle_goto(self):
1634
- tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
1635
- assert len(tokens) == 1, str(tokens)
1636
- return Goto(tokens[0].start, tokens[0].end, tokens[0].name)
1637
-
1638
- def handle_try(self):
1639
- pass # Not needed yet.
1640
-
1641
- def handle_catch(self):
1642
- pass # Not needed yet.
1643
-
1644
- def handle_throw(self):
1645
- pass # Not needed yet.
1646
-
1647
- def handle_while(self):
1648
- pass
1649
-
1650
- def handle_do(self):
1651
- pass
1652
-
1653
- def handle_for(self):
1654
- pass
1655
-
1656
- def handle_break(self):
1657
- self._IgnoreUpTo(tokenize.SYNTAX, ';')
1658
-
1659
- def handle_continue(self):
1660
- self._IgnoreUpTo(tokenize.SYNTAX, ';')
1661
-
1662
-
1663
- def BuilderFromSource(source, filename):
1664
- """Utility method that returns an AstBuilder from source code.
1665
-
1666
- Args:
1667
- source: 'C++ source code'
1668
- filename: 'file1'
1669
-
1670
- Returns:
1671
- AstBuilder
1672
- """
1673
- return AstBuilder(tokenize.GetTokens(source), filename)
1674
-
1675
-
1676
- def PrintIndentifiers(filename, should_print):
1677
- """Prints all identifiers for a C++ source file.
1678
-
1679
- Args:
1680
- filename: 'file1'
1681
- should_print: predicate with signature: bool Function(token)
1682
- """
1683
- source = utils.ReadFile(filename, False)
1684
- if source is None:
1685
- sys.stderr.write('Unable to find: %s\n' % filename)
1686
- return
1687
-
1688
- #print('Processing %s' % actual_filename)
1689
- builder = BuilderFromSource(source, filename)
1690
- try:
1691
- for node in builder.Generate():
1692
- if should_print(node):
1693
- print(node.name)
1694
- except KeyboardInterrupt:
1695
- return
1696
- except:
1697
- pass
1698
-
1699
-
1700
- def PrintAllIndentifiers(filenames, should_print):
1701
- """Prints all identifiers for each C++ source file in filenames.
1702
-
1703
- Args:
1704
- filenames: ['file1', 'file2', ...]
1705
- should_print: predicate with signature: bool Function(token)
1706
- """
1707
- for path in filenames:
1708
- PrintIndentifiers(path, should_print)
1709
-
1710
-
1711
- def main(argv):
1712
- for filename in argv[1:]:
1713
- source = utils.ReadFile(filename)
1714
- if source is None:
1715
- continue
1716
-
1717
- print('Processing %s' % filename)
1718
- builder = BuilderFromSource(source, filename)
1719
- try:
1720
- entire_ast = filter(None, builder.Generate())
1721
- except KeyboardInterrupt:
1722
- return
1723
- except:
1724
- # Already printed a warning, print the traceback and continue.
1725
- traceback.print_exc()
1726
- else:
1727
- if utils.DEBUG:
1728
- for ast in entire_ast:
1729
- print(ast)
1730
-
1731
-
1732
- if __name__ == '__main__':
1733
- main(sys.argv)