ffi-clang 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +4 -0
  3. data/ext/rakefile.rb +4 -0
  4. data/ext/teapot.rb +4 -3
  5. data/lib/ffi/clang/clang_version.rb +9 -19
  6. data/lib/ffi/clang/code_completion.rb +4 -18
  7. data/lib/ffi/clang/comment.rb +7 -19
  8. data/lib/ffi/clang/compilation_database.rb +4 -18
  9. data/lib/ffi/clang/cursor.rb +70 -25
  10. data/lib/ffi/clang/diagnostic.rb +8 -21
  11. data/lib/ffi/clang/file.rb +4 -18
  12. data/lib/ffi/clang/index.rb +9 -20
  13. data/lib/ffi/clang/lib/clang_version.rb +5 -19
  14. data/lib/ffi/clang/lib/code_completion.rb +4 -18
  15. data/lib/ffi/clang/lib/comment.rb +7 -20
  16. data/lib/ffi/clang/lib/compilation_database.rb +4 -18
  17. data/lib/ffi/clang/lib/cursor.rb +34 -23
  18. data/lib/ffi/clang/lib/diagnostic.rb +7 -20
  19. data/lib/ffi/clang/lib/file.rb +5 -20
  20. data/lib/ffi/clang/lib/inclusions.rb +5 -19
  21. data/lib/ffi/clang/lib/index.rb +6 -20
  22. data/lib/ffi/clang/lib/source_location.rb +5 -20
  23. data/lib/ffi/clang/lib/source_range.rb +5 -22
  24. data/lib/ffi/clang/lib/string.rb +6 -20
  25. data/lib/ffi/clang/lib/token.rb +4 -18
  26. data/lib/ffi/clang/lib/translation_unit.rb +6 -20
  27. data/lib/ffi/clang/lib/type.rb +8 -20
  28. data/lib/ffi/clang/lib.rb +15 -20
  29. data/lib/ffi/clang/source_location.rb +7 -20
  30. data/lib/ffi/clang/source_range.rb +7 -22
  31. data/lib/ffi/clang/token.rb +4 -18
  32. data/lib/ffi/clang/translation_unit.rb +10 -20
  33. data/lib/ffi/clang/type.rb +7 -19
  34. data/lib/ffi/clang/unsaved_file.rb +6 -20
  35. data/lib/ffi/clang/version.rb +7 -21
  36. data/lib/ffi/clang.rb +9 -20
  37. data/license.md +38 -0
  38. data/readme.md +46 -0
  39. data.tar.gz.sig +0 -0
  40. metadata +71 -73
  41. metadata.gz.sig +2 -0
  42. data/.editorconfig +0 -23
  43. data/.gitignore +0 -19
  44. data/.rspec +0 -5
  45. data/.travis.yml +0 -30
  46. data/Gemfile +0 -12
  47. data/README.md +0 -74
  48. data/Rakefile +0 -12
  49. data/examples/docs.cpp +0 -25
  50. data/examples/docs.rb +0 -31
  51. data/ffi-clang.gemspec +0 -25
  52. data/spec/ffi/clang/code_completion_spec.rb +0 -181
  53. data/spec/ffi/clang/comment_spec.rb +0 -453
  54. data/spec/ffi/clang/compilation_database_spec.rb +0 -180
  55. data/spec/ffi/clang/cursor_spec.rb +0 -741
  56. data/spec/ffi/clang/diagnostic_spec.rb +0 -89
  57. data/spec/ffi/clang/file_spec.rb +0 -82
  58. data/spec/ffi/clang/fixtures/a.c +0 -7
  59. data/spec/ffi/clang/fixtures/canonical.c +0 -5
  60. data/spec/ffi/clang/fixtures/class.cpp +0 -8
  61. data/spec/ffi/clang/fixtures/compile_commands.json +0 -17
  62. data/spec/ffi/clang/fixtures/completion.cxx +0 -8
  63. data/spec/ffi/clang/fixtures/docs.c +0 -1
  64. data/spec/ffi/clang/fixtures/docs.cc +0 -1
  65. data/spec/ffi/clang/fixtures/docs.h +0 -54
  66. data/spec/ffi/clang/fixtures/list.c +0 -11
  67. data/spec/ffi/clang/fixtures/location1.c +0 -7
  68. data/spec/ffi/clang/fixtures/simple.ast +0 -0
  69. data/spec/ffi/clang/fixtures/simple.c +0 -3
  70. data/spec/ffi/clang/fixtures/test.cxx +0 -62
  71. data/spec/ffi/clang/index_spec.rb +0 -90
  72. data/spec/ffi/clang/source_location_spec.rb +0 -138
  73. data/spec/ffi/clang/source_range_spec.rb +0 -74
  74. data/spec/ffi/clang/token_spec.rb +0 -82
  75. data/spec/ffi/clang/translation_unit_spec.rb +0 -220
  76. data/spec/ffi/clang/type_spec.rb +0 -273
  77. data/spec/ffi/clang/version_spec.rb +0 -28
  78. data/spec/spec_helper.rb +0 -51
metadata CHANGED
@@ -1,15 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-clang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jari Bakken
8
7
  - Samuel Williams
8
+ - Masahiro Sano
9
+ - Carlos Martín Nieto
10
+ - Jari Bakken
11
+ - Takeshi Watanabe
12
+ - Garry Marshall
13
+ - George Pimm
14
+ - Greg Hazel
15
+ - Luikore
16
+ - Michael Metivier
17
+ - Dave Wilkinson
18
+ - Hayden Purdy
19
+ - Mike Dalessio
20
+ - Motonori Iwamuro
21
+ - Niklas Therning
22
+ - Cameron Dutro
23
+ - Dominic Sisnero
24
+ - Hal Brodigan
9
25
  autorequire:
10
26
  bindir: bin
11
- cert_chain: []
12
- date: 2022-11-15 00:00:00.000000000 Z
27
+ cert_chain:
28
+ - |
29
+ -----BEGIN CERTIFICATE-----
30
+ MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
31
+ ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
32
+ CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
33
+ MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
34
+ MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
35
+ bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
36
+ igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
37
+ 9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
38
+ sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
39
+ e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
40
+ XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
41
+ RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
42
+ tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
43
+ zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
44
+ xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
45
+ BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
46
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
47
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
48
+ cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
49
+ xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
50
+ c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
51
+ 8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
52
+ JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
53
+ eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
54
+ Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
55
+ voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
56
+ -----END CERTIFICATE-----
57
+ date: 2023-05-01 00:00:00.000000000 Z
13
58
  dependencies:
14
59
  - !ruby/object:Gem::Dependency
15
60
  name: ffi
@@ -25,6 +70,20 @@ dependencies:
25
70
  - - ">="
26
71
  - !ruby/object:Gem::Version
27
72
  version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: bake-test
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
28
87
  - !ruby/object:Gem::Dependency
29
88
  name: bundler
30
89
  requirement: !ruby/object:Gem::Requirement
@@ -67,24 +126,14 @@ dependencies:
67
126
  - - ">="
68
127
  - !ruby/object:Gem::Version
69
128
  version: '0'
70
- description: Ruby FFI bindings for libclang C interface.
129
+ description:
71
130
  email:
72
131
  executables: []
73
132
  extensions: []
74
133
  extra_rdoc_files: []
75
134
  files:
76
- - ".editorconfig"
77
- - ".gitignore"
78
- - ".rspec"
79
- - ".travis.yml"
80
- - Gemfile
81
- - README.md
82
- - Rakefile
83
- - examples/docs.cpp
84
- - examples/docs.rb
85
135
  - ext/rakefile.rb
86
136
  - ext/teapot.rb
87
- - ffi-clang.gemspec
88
137
  - lib/ffi/clang.rb
89
138
  - lib/ffi/clang/clang_version.rb
90
139
  - lib/ffi/clang/code_completion.rb
@@ -117,37 +166,13 @@ files:
117
166
  - lib/ffi/clang/type.rb
118
167
  - lib/ffi/clang/unsaved_file.rb
119
168
  - lib/ffi/clang/version.rb
120
- - spec/ffi/clang/code_completion_spec.rb
121
- - spec/ffi/clang/comment_spec.rb
122
- - spec/ffi/clang/compilation_database_spec.rb
123
- - spec/ffi/clang/cursor_spec.rb
124
- - spec/ffi/clang/diagnostic_spec.rb
125
- - spec/ffi/clang/file_spec.rb
126
- - spec/ffi/clang/fixtures/a.c
127
- - spec/ffi/clang/fixtures/canonical.c
128
- - spec/ffi/clang/fixtures/class.cpp
129
- - spec/ffi/clang/fixtures/compile_commands.json
130
- - spec/ffi/clang/fixtures/completion.cxx
131
- - spec/ffi/clang/fixtures/docs.c
132
- - spec/ffi/clang/fixtures/docs.cc
133
- - spec/ffi/clang/fixtures/docs.h
134
- - spec/ffi/clang/fixtures/list.c
135
- - spec/ffi/clang/fixtures/location1.c
136
- - spec/ffi/clang/fixtures/simple.ast
137
- - spec/ffi/clang/fixtures/simple.c
138
- - spec/ffi/clang/fixtures/test.cxx
139
- - spec/ffi/clang/index_spec.rb
140
- - spec/ffi/clang/source_location_spec.rb
141
- - spec/ffi/clang/source_range_spec.rb
142
- - spec/ffi/clang/token_spec.rb
143
- - spec/ffi/clang/translation_unit_spec.rb
144
- - spec/ffi/clang/type_spec.rb
145
- - spec/ffi/clang/version_spec.rb
146
- - spec/spec_helper.rb
147
- homepage: ''
169
+ - license.md
170
+ - readme.md
171
+ homepage: https://github.com/ioquatix/ffi-clang
148
172
  licenses:
149
173
  - MIT
150
- metadata: {}
174
+ metadata:
175
+ funding_uri: https://github.com/sponsors/ioquatix/
151
176
  post_install_message:
152
177
  rdoc_options: []
153
178
  require_paths:
@@ -163,35 +188,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
188
  - !ruby/object:Gem::Version
164
189
  version: '0'
165
190
  requirements: []
166
- rubygems_version: 3.3.7
191
+ rubygems_version: 3.4.10
167
192
  signing_key:
168
193
  specification_version: 4
169
194
  summary: Ruby FFI bindings for libclang C interface.
170
- test_files:
171
- - spec/ffi/clang/code_completion_spec.rb
172
- - spec/ffi/clang/comment_spec.rb
173
- - spec/ffi/clang/compilation_database_spec.rb
174
- - spec/ffi/clang/cursor_spec.rb
175
- - spec/ffi/clang/diagnostic_spec.rb
176
- - spec/ffi/clang/file_spec.rb
177
- - spec/ffi/clang/fixtures/a.c
178
- - spec/ffi/clang/fixtures/canonical.c
179
- - spec/ffi/clang/fixtures/class.cpp
180
- - spec/ffi/clang/fixtures/compile_commands.json
181
- - spec/ffi/clang/fixtures/completion.cxx
182
- - spec/ffi/clang/fixtures/docs.c
183
- - spec/ffi/clang/fixtures/docs.cc
184
- - spec/ffi/clang/fixtures/docs.h
185
- - spec/ffi/clang/fixtures/list.c
186
- - spec/ffi/clang/fixtures/location1.c
187
- - spec/ffi/clang/fixtures/simple.ast
188
- - spec/ffi/clang/fixtures/simple.c
189
- - spec/ffi/clang/fixtures/test.cxx
190
- - spec/ffi/clang/index_spec.rb
191
- - spec/ffi/clang/source_location_spec.rb
192
- - spec/ffi/clang/source_range_spec.rb
193
- - spec/ffi/clang/token_spec.rb
194
- - spec/ffi/clang/translation_unit_spec.rb
195
- - spec/ffi/clang/type_spec.rb
196
- - spec/ffi/clang/version_spec.rb
197
- - spec/spec_helper.rb
195
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ KD ��!��F�p������D�� ަޚ�Q�� v�?��^��ڧ��
2
+ ����SJ���w��12�Dz�\AfUG��Қ$���/Lc�{�;�D��J3gX)��z١�m��U��`��'�TN���d}��"�M��MB Uj��ལ�
data/.editorconfig DELETED
@@ -1,23 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- charset = utf-8
5
- end_of_line = lf
6
- insert_final_newline = true
7
- trim_trailing_whitespace = false
8
- indent_style = tab
9
-
10
- [{*.{rb,gemspec},Gemfile,Rakefile}]
11
- indent_size = 2
12
-
13
- [*.{c,cc,cpp,cxx,h,hpp,hxx}]
14
- indent_size = 4
15
-
16
- [*.json]
17
- indent_size = 2
18
-
19
- [*.yml]
20
- indent_size = 2
21
-
22
- [*.md]
23
- indent_size = 4
data/.gitignore DELETED
@@ -1,19 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
-
19
- .rspec_status
data/.rspec DELETED
@@ -1,5 +0,0 @@
1
- --color
2
- --format documentation
3
- --backtrace
4
- --warnings
5
- --require spec_helper
data/.travis.yml DELETED
@@ -1,30 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- before_install:
4
- - export LD_LIBRARY_PATH=/usr/lib/llvm-${LLVM_VERSION}/lib/
5
- - export PATH=/usr/lib/llvm-${LLVM_VERSION}/bin:$PATH
6
- matrix:
7
- include:
8
- - addons: {apt: {sources: [ubuntu-toolchain-r-test, llvm-toolchain-precise-3.6], packages: [libclang-3.6-dev, clang-3.6]}}
9
- env: LLVM_VERSION=3.6
10
- rvm: "2.4.0"
11
- - addons: {apt: {sources: [ubuntu-toolchain-r-test, llvm-toolchain-precise-3.7], packages: [libclang-3.7-dev, clang-3.7]}}
12
- env: LLVM_VERSION=3.7
13
- rvm: "2.4.0"
14
- # The default build:
15
- - &libclang-38
16
- addons: {apt: {sources: [ubuntu-toolchain-r-test, llvm-toolchain-precise-3.8], packages: [libclang-3.8-dev, clang-3.8]}}
17
- env: LLVM_VERSION=3.8
18
- rvm: "2.4.0"
19
- # A second build with the same configuration but using ruby 2.2.4
20
- - <<: *libclang-38
21
- rvm: "2.3.3"
22
- - addons: {apt: {sources: [ubuntu-toolchain-r-test, llvm-toolchain-precise-3.9], packages: [libclang-3.9-dev, clang-3.9]}}
23
- env: LLVM_VERSION=3.9
24
- rvm: "2.4.0"
25
- - addons: {apt: {sources: [ubuntu-toolchain-r-test, llvm-toolchain-precise-4.0], packages: [libclang-4.0-dev, clang-4.0]}}
26
- env: LLVM_VERSION=4.0
27
- rvm: "2.4.0"
28
- allow_failures:
29
- - env: LLVM_VERSION=4.0
30
- rvm: "2.4.0"
data/Gemfile DELETED
@@ -1,12 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
4
-
5
- group :maintenance, optional: true do
6
- gem "bake-gem"
7
- gem "bake-modernize"
8
- end
9
-
10
- group :test do
11
- gem 'simplecov'
12
- end
data/README.md DELETED
@@ -1,74 +0,0 @@
1
- # FFI::Clang
2
-
3
- A light-weight wrapper for Ruby exposing [libclang][1]. Works for libclang v3.4+.
4
-
5
- [![Build Status](https://secure.travis-ci.org/ioquatix/ffi-clang.svg)](http://travis-ci.org/ioquatix/ffi-clang)
6
- [![Code Climate](https://codeclimate.com/github/ioquatix/ffi-clang.svg)](https://codeclimate.com/github/ioquatix/ffi-clang)
7
-
8
- [1]: http://llvm.org/devmtg/2010-11/Gregor-libclang.pdf
9
-
10
- ## Installation
11
-
12
- Add this line to your application's Gemfile:
13
-
14
- gem 'ffi-clang'
15
-
16
- And then execute:
17
-
18
- $ bundle
19
-
20
- Or install it yourself as:
21
-
22
- $ gem install ffi-clang
23
-
24
- ## Usage
25
-
26
- Traverse the AST in the given file:
27
-
28
- index = Index.new
29
- translation_unit = index.parse_translation_unit("list.c")
30
- cursor = translation_unit.cursor
31
- cursor.visit_children do |cursor, parent|
32
- puts "#{cursor.kind} #{cursor.spelling.inspect}"
33
-
34
- next :recurse
35
- end
36
-
37
- ### Library Version
38
-
39
- Due to issues figuring out which library to use, we require you to manually specify it. For example, to run the tests, with MacPorts llvm/clang 3.4, use the following:
40
-
41
- LLVM_CONFIG=llvm-config-mp-3.4 rake
42
-
43
- ## Contributing
44
-
45
- 1. Fork it
46
- 2. Create your feature branch (`git checkout -b my-new-feature`)
47
- 3. Commit your changes (`git commit -am 'Add some feature'`)
48
- 4. Push to the branch (`git push origin my-new-feature`)
49
- 5. Create new Pull Request
50
-
51
- ## License
52
-
53
- Copyright, 2010-2012, by Jari Bakken.
54
- Copyright, 2013, by Samuel G. D. Williams. <http://www.codeotaku.com>
55
- Copyright, 2013, by Garry C. Marshall. <http://www.meaningfulname.net>
56
- Copyright, 2014, by Masahiro Sano.
57
-
58
- Permission is hereby granted, free of charge, to any person obtaining a copy
59
- of this software and associated documentation files (the "Software"), to deal
60
- in the Software without restriction, including without limitation the rights
61
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
62
- copies of the Software, and to permit persons to whom the Software is
63
- furnished to do so, subject to the following conditions:
64
-
65
- The above copyright notice and this permission notice shall be included in
66
- all copies or substantial portions of the Software.
67
-
68
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
69
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
70
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
71
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
72
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
73
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
74
- THE SOFTWARE.
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec) do |task|
5
- begin
6
- require('simplecov/version')
7
- task.rspec_opts = %w{--require simplecov} if ENV['COVERAGE']
8
- rescue LoadError
9
- end
10
- end
11
-
12
- task :default => :spec
data/examples/docs.cpp DELETED
@@ -1,25 +0,0 @@
1
-
2
- /** A test class which does nothing.
3
-
4
- This is used by `main`.
5
- */
6
- template<typename T>
7
- class Test {};
8
-
9
- /// This is a specialization for integers.
10
- template<>
11
- class Test<int> {
12
- public:
13
- /// The number of times it has been incremented.
14
- int count;
15
-
16
- };
17
-
18
- /// This always fails.
19
- /// @param argc The number of items in `argv`. At least 1.
20
- /// @param argv The command line arguments, with argv[0] being the command used to execute this program.
21
- int main(int argc, char ** argv) {
22
- Test<int> test;
23
-
24
- return 1;
25
- }
data/examples/docs.rb DELETED
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rainbow'
4
- require 'ffi/clang'
5
-
6
- index = FFI::Clang::Index.new
7
-
8
- # clang -Xclang -ast-dump -fsyntax-only ./examples/docs.cpp
9
-
10
- def title(declaration)
11
- puts ["Symbol:", Rainbow(declaration.spelling).blue.bright, "Type:", Rainbow(declaration.type.spelling).green, declaration.kind.to_s].join(' ')
12
- end
13
-
14
- ARGV.each do |path|
15
- translation_unit = index.parse_translation_unit(path)
16
-
17
- declarations = translation_unit.cursor.select(&:declaration?)
18
-
19
- declarations.each do |declaration|
20
- title declaration
21
-
22
- if location = declaration.location
23
- puts "Defined at #{location.file}:#{location.line}"
24
- end
25
-
26
- if comment = declaration.comment
27
- # puts Rainbow(comment.inspect).gray
28
- puts Rainbow(comment.text)
29
- end
30
- end
31
- end
data/ffi-clang.gemspec DELETED
@@ -1,25 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'ffi/clang/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "ffi-clang"
8
- spec.version = FFI::Clang::VERSION
9
- spec.authors = ["Jari Bakken", "Samuel Williams"]
10
- spec.description = %q{Ruby FFI bindings for libclang C interface.}
11
- spec.summary = %q{Ruby FFI bindings for libclang C interface.}
12
- spec.homepage = ""
13
- spec.license = "MIT"
14
-
15
- spec.files = `git ls-files`.split($/)
16
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
19
-
20
- spec.add_dependency "ffi"
21
-
22
- spec.add_development_dependency "bundler", ">= 1.3"
23
- spec.add_development_dependency "rspec", ">= 3.4.0"
24
- spec.add_development_dependency "rake"
25
- end
@@ -1,181 +0,0 @@
1
- # Copyright, 2014, by Masahiro Sano.
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
20
-
21
- describe CodeCompletion do
22
- let(:filename) { fixture_path("completion.cxx") }
23
- let(:translation_unit) { Index.new.parse_translation_unit(filename) }
24
- let(:line) { 7 }
25
- let(:column) { 6 }
26
- let(:results) { translation_unit.code_complete(filename, line, column) }
27
-
28
- describe "self.default_code_completion_options" do
29
- let(:options) { FFI::Clang::CodeCompletion.default_code_completion_options }
30
- it "returns a default set of code-completion options" do
31
- expect(options).to be_kind_of(Hash)
32
- options.keys.each { |key|
33
- expect(FFI::Clang::Lib::CodeCompleteFlags.symbols).to include(key)
34
- }
35
- end
36
- end
37
-
38
- describe CodeCompletion::Results do
39
- it "can be obtained from a translation unit" do
40
- expect(results).to be_kind_of(CodeCompletion::Results)
41
-
42
- # At least 40 results, depends on standard library implementation:
43
- expect(results.size).to be >= 40
44
-
45
- expect(results.results).to be_kind_of(Array)
46
- expect(results.results.first).to be_kind_of(CodeCompletion::Result)
47
- end
48
-
49
- it "calls dispose_code_complete_results on GC" do
50
- expect(Lib).to receive(:dispose_code_complete_results).at_least(:once)
51
- expect{results.free}.not_to raise_error
52
- end
53
-
54
- it "#each" do
55
- spy = double(stub: nil)
56
- expect(spy).to receive(:stub).exactly(results.size).times
57
- results.each { spy.stub }
58
- end
59
-
60
- it "#num_diagnostics" do
61
- expect(results.num_diagnostics).to eq(2)
62
- end
63
-
64
- it "#diagnostic" do
65
- expect(results.diagnostic(0)).to be_kind_of(Diagnostic)
66
- end
67
-
68
- it "#diagnostics" do
69
- expect(results.diagnostics).to be_kind_of(Array)
70
- expect(results.diagnostics.first).to be_kind_of(Diagnostic)
71
- expect(results.diagnostics.size).to eq(results.num_diagnostics)
72
- end
73
-
74
- it "#contexts" do
75
- expect(results.contexts).to be_kind_of(Hash)
76
- results.contexts.keys.each { |key|
77
- expect(FFI::Clang::Lib::CompletionContext.symbols).to include(key)
78
- }
79
- end
80
-
81
- it "#container_usr" do
82
- expect(results.container_usr).to be_kind_of(String)
83
- expect(results.container_usr).to match(/std.+vector/)
84
- end
85
-
86
- it "#container_kind" do
87
- expect(results.container_kind).to be_kind_of(Symbol)
88
- expect(results.container_kind).to eq(:cursor_class_decl)
89
- end
90
-
91
- it "#incomplete?" do
92
- expect(results.incomplete?).to be false
93
- end
94
-
95
- it "#objc_selector" do
96
- #TODO
97
- end
98
-
99
- it "#sort!" do
100
- results.sort!
101
-
102
- possibilities = results.first.string.chunks.select{|x| x[:kind] == :typed_text}.collect{|chunk| chunk[:text]}
103
-
104
- # may be sorted with typed_text kind, first result will start with 'a'.. not necessarily
105
- expect(possibilities).to be == possibilities.sort
106
- end
107
- end
108
-
109
- describe CodeCompletion::Result do
110
- let(:result) { results.results.first }
111
- it "#string" do
112
- expect(result.string).to be_kind_of(CodeCompletion::String)
113
- end
114
-
115
- it "#kind" do
116
- expect(result.kind).to be_kind_of(Symbol)
117
- end
118
- end
119
-
120
- describe CodeCompletion::String do
121
- let(:str) { results.sort!; results.find{|x| x.string.chunk_text(1) == 'assign'}.string }
122
-
123
- it "#num_chunks" do
124
- expect(str.num_chunks).to be >= 5
125
- end
126
-
127
- it "#chunk_kind" do
128
- expect(str.chunk_kind(0)).to eq(:result_type)
129
- expect(str.chunk_kind(1)).to eq(:typed_text)
130
- end
131
-
132
- it "#chunk_text" do
133
- expect(str.chunk_text(0)).to be =~ /void/
134
- expect(str.chunk_text(1)).to eq('assign')
135
- end
136
-
137
- it "#chunk_completion" do
138
- expect(str.chunk_completion(0)).to be_kind_of(CodeCompletion::String)
139
- end
140
-
141
- it "#chunks" do
142
- expect(str.chunks).to be_kind_of(Array)
143
- expect(str.chunks.first).to be_kind_of(Hash)
144
- expect(str.chunks.size).to eq(str.num_chunks)
145
- end
146
-
147
- it "#priority" do
148
- expect(str.priority).to be_kind_of(Integer)
149
- end
150
-
151
- it "#availability" do
152
- expect(str.availability).to be_kind_of(Symbol)
153
- expect(str.availability).to eq(:available)
154
- end
155
-
156
- it "#num_annotations" do
157
- expect(str.num_annotations).to be_kind_of(Integer)
158
- expect(str.num_annotations).to eq(0)
159
- end
160
-
161
- it "#annotation" do
162
- expect(str.annotation(100)).to be_nil
163
- # TODO: need tests for String which has annotation
164
- end
165
-
166
- it "#annotations" do
167
- expect(str.annotations).to be_kind_of(Array)
168
- # TODO: need tests for String which has annotation
169
- end
170
-
171
- it "#parent" do
172
- expect(str.parent).to be_kind_of(String)
173
- expect(str.parent).to be =~ /std.+vector/
174
- end
175
-
176
- it "#comment" do
177
- expect(str.comment).to be_nil
178
- # TODO: need tests for String which has real comment
179
- end
180
- end
181
- end