clangc 1.0.0.pre

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 (38) hide show
  1. checksums.yaml +7 -0
  2. data/ext/clangc/_clangc_functions.c +303 -0
  3. data/ext/clangc/_clangc_functions.h +51 -0
  4. data/ext/clangc/clangc.c +376 -0
  5. data/ext/clangc/class_CodeCompleteResults.c +186 -0
  6. data/ext/clangc/class_CodeCompleteResults.h +51 -0
  7. data/ext/clangc/class_CompletionResult.c +98 -0
  8. data/ext/clangc/class_CompletionResult.h +36 -0
  9. data/ext/clangc/class_CompletionString.c +231 -0
  10. data/ext/clangc/class_CompletionString.h +57 -0
  11. data/ext/clangc/class_Cursor.c +1677 -0
  12. data/ext/clangc/class_Cursor.h +259 -0
  13. data/ext/clangc/class_CursorSet.c +109 -0
  14. data/ext/clangc/class_CursorSet.h +39 -0
  15. data/ext/clangc/class_Diagnostic.c +322 -0
  16. data/ext/clangc/class_Diagnostic.h +66 -0
  17. data/ext/clangc/class_File.c +145 -0
  18. data/ext/clangc/class_File.h +45 -0
  19. data/ext/clangc/class_Index.c +461 -0
  20. data/ext/clangc/class_Index.h +58 -0
  21. data/ext/clangc/class_Module.c +181 -0
  22. data/ext/clangc/class_Module.h +51 -0
  23. data/ext/clangc/class_OverriddenCursor.c +51 -0
  24. data/ext/clangc/class_OverriddenCursor.h +31 -0
  25. data/ext/clangc/class_SourceLocation.c +197 -0
  26. data/ext/clangc/class_SourceLocation.h +45 -0
  27. data/ext/clangc/class_SourceRange.c +123 -0
  28. data/ext/clangc/class_SourceRange.h +42 -0
  29. data/ext/clangc/class_TranslationUnit.c +457 -0
  30. data/ext/clangc/class_TranslationUnit.h +63 -0
  31. data/ext/clangc/class_Type.c +564 -0
  32. data/ext/clangc/class_Type.h +108 -0
  33. data/ext/clangc/constants.c +660 -0
  34. data/ext/clangc/constants.h +21 -0
  35. data/ext/clangc/extconf.rb +34 -0
  36. data/ext/clangc/macros.h +230 -0
  37. data/lib/clangc.rb +397 -0
  38. metadata +95 -0
@@ -0,0 +1,186 @@
1
+ /*
2
+ * ruby-clangc ruby bindings for the C interface of Clang
3
+ * Copyright (C) 2016 Cedric Le Moigne <cedlemo@gmx.com>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ /*CodeCompleteResults ruby class*/
19
+ #include "class_CodeCompleteResults.h"
20
+ #include "class_CompletionResult.h"
21
+ #include "class_Diagnostic.h"
22
+ #include "macros.h"
23
+
24
+ static void c_CodeCompleteResults_struct_free(CodeCompleteResults_t *s)
25
+ {
26
+ if (s)
27
+ {
28
+ if (s->data) clang_disposeCodeCompleteResults(s->data);
29
+ ruby_xfree(s);
30
+ }
31
+ }
32
+
33
+ static void c_CodeCompleteResults_mark(void *s)
34
+ {
35
+ if (s)
36
+ {
37
+ CodeCompleteResults_t *t = (CodeCompleteResults_t *) s;
38
+ rb_gc_mark(t->parent);
39
+ }
40
+ }
41
+
42
+ VALUE
43
+ c_CodeCompleteResults_struct_alloc(VALUE klass)
44
+ {
45
+
46
+ CodeCompleteResults_t *ptr;
47
+ ptr = (CodeCompleteResults_t *) ruby_xmalloc(sizeof(CodeCompleteResults_t));
48
+ ptr->data = NULL;
49
+ ptr->parent = Qnil;
50
+
51
+ return Data_Wrap_Struct(
52
+ klass, NULL, c_CodeCompleteResults_struct_free, (void *) ptr);
53
+ }
54
+
55
+ /**
56
+ * call-seq:
57
+ * Clangc::CodeCompleteResults#num_results => Number
58
+ *
59
+ * Retrieve the number of Clangc::CompletionResult
60
+ *
61
+ * Not based on libclang function
62
+ */
63
+ VALUE
64
+ c_CodeCompleteResults_get_num_results(VALUE self)
65
+ {
66
+ CodeCompleteResults_t *c;
67
+ Data_Get_Struct(self, CodeCompleteResults_t, c);
68
+
69
+ return CUINT_2_NUM(c->data->NumResults);
70
+ }
71
+
72
+ /**
73
+ * call-seq:
74
+ * Clangc::CodeCompleteResults#results(index) => Clangc::CompletionResult
75
+ *
76
+ * Retrieve Clangc::CompletionResult instance a index
77
+ *
78
+ * Return nil if index < 0 or index >= num results
79
+ * Not based on libclang function
80
+ */
81
+ VALUE
82
+ c_CodeCompleteResults_get_result(VALUE self, VALUE index)
83
+ {
84
+ CodeCompleteResults_t *c;
85
+ Data_Get_Struct(self, CodeCompleteResults_t, c);
86
+ unsigned i = NUM2UINT(index);
87
+
88
+ if (i < 0 || i > c->data->NumResults) return Qnil;
89
+
90
+ VALUE result;
91
+ CompletionResult_t *cr;
92
+ R_GET_CLASS_DATA("Clangc", CompletionResult, result, cr);
93
+ cr->data = &(c->data->Results[i]);
94
+ cr->parent = self;
95
+
96
+ return result;
97
+ }
98
+
99
+ /**
100
+ * call-seq:
101
+ * Clangc::CodeCompleteResults#container_usr => String
102
+ *
103
+ * Returns the USR for the container for the current code completion
104
+ * context. If there is not a container for the current context, this
105
+ * function will return the empty string.
106
+ */
107
+ VALUE
108
+ c_CodeCompleteResults_get_container_usr(VALUE self)
109
+ {
110
+ CodeCompleteResults_t *c;
111
+ Data_Get_Struct(self, CodeCompleteResults_t, c);
112
+
113
+ return CXSTR_2_RVAL(clang_codeCompleteGetContainerUSR(c->data));
114
+ }
115
+ /**
116
+ * call-seq:
117
+ * Clangc::CodeCompleteResults#num_diagnostics => Number
118
+ *
119
+ * Determine the number of diagnostics produced prior to the
120
+ * location where code completion was performed.
121
+ */
122
+ VALUE
123
+ c_CodeCompleteResults_get_num_diagnostics(VALUE self)
124
+ {
125
+ CodeCompleteResults_t *c;
126
+ Data_Get_Struct(self, CodeCompleteResults_t, c);
127
+
128
+ return CUINT_2_NUM(clang_codeCompleteGetNumDiagnostics(c->data));
129
+ }
130
+
131
+ /**
132
+ * call-seq:
133
+ * Clangc::CodeCompleteResults#diagnostic(index) => Clangc::Diagnostic
134
+ *
135
+ * Retrieve a diagnostic associated with the given code completion.
136
+ */
137
+ VALUE
138
+ c_CodeCompleteResults_get_diagnostic(VALUE self, VALUE index)
139
+ {
140
+ CodeCompleteResults_t *c;
141
+ Data_Get_Struct(self, CodeCompleteResults_t, c);
142
+
143
+ VALUE diagnostic;
144
+ Diagnostic_t *d;
145
+ R_GET_CLASS_DATA("Clangc", Diagnostic, diagnostic, d);
146
+
147
+ d->data = clang_codeCompleteGetDiagnostic(c->data, NUM2UINT(index));
148
+ d->parent = c->parent;
149
+
150
+ return diagnostic;
151
+ }
152
+
153
+ /**
154
+ * call-seq:
155
+ * Clangc::CodeCompleteResults#sort_results => nil
156
+ *
157
+ * Sort the code-completion results in case-insensitive alphabetical
158
+ * order.
159
+ */
160
+ VALUE
161
+ c_CodeCompleteResults_sort_results(VALUE self)
162
+ {
163
+ CodeCompleteResults_t *c;
164
+ Data_Get_Struct(self, CodeCompleteResults_t, c);
165
+
166
+ clang_sortCodeCompletionResults(c->data->Results, c->data->NumResults);
167
+ return Qnil;
168
+ }
169
+
170
+ /**
171
+ * call-seq:
172
+ * Clangc::CodeCompleteResults#contexts => Number
173
+ *
174
+ * Determines what completions are appropriate for the context
175
+ * the given code completion.
176
+ *
177
+ * the kinds of completions that are appropriate for use
178
+ * along with the given code completion results.
179
+ */
180
+ VALUE
181
+ c_CodeCompleteResults_get_contexts(VALUE self)
182
+ {
183
+ CodeCompleteResults_t *c;
184
+ Data_Get_Struct(self, CodeCompleteResults_t, c);
185
+ CULLONG_2_NUM(clang_codeCompleteGetContexts(c->data));
186
+ }
@@ -0,0 +1,51 @@
1
+ /*
2
+ * ruby-clangc ruby bindings for the C interface of Clang
3
+ * Copyright (C) 2016 Cedric Le Moigne <cedlemo@gmx.com>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ #ifndef CODECOMPLETERESULTS_H
19
+ #define CODECOMPLETERESULTS_H
20
+ #include <ruby/ruby.h>
21
+ #include "clang-c/Index.h"
22
+ typedef struct CodeCompleteResults_t
23
+ {
24
+ CXCodeCompleteResults *data;
25
+ VALUE parent;
26
+ } CodeCompleteResults_t;
27
+
28
+ VALUE
29
+ c_CodeCompleteResults_struct_alloc(VALUE);
30
+
31
+ VALUE
32
+ c_CodeCompleteResults_get_num_results(VALUE);
33
+
34
+ VALUE
35
+ c_CodeCompleteResults_get_result(VALUE, VALUE);
36
+
37
+ VALUE
38
+ c_CodeCompleteResults_get_container_usr(VALUE);
39
+
40
+ VALUE
41
+ c_CodeCompleteResults_get_num_diagnostics(VALUE);
42
+
43
+ VALUE
44
+ c_CodeCompleteResults_get_diagnostic(VALUE, VALUE);
45
+
46
+ VALUE
47
+ c_CodeCompleteResults_sort_results(VALUE);
48
+
49
+ VALUE
50
+ c_CodeCompleteResults_get_contexts(VALUE);
51
+ #endif // CODECOMPLETERESULTS_H
@@ -0,0 +1,98 @@
1
+ /*
2
+ * ruby-clangc ruby bindings for the C interface of Clang
3
+ * Copyright (C) 2016 Cedric Le Moigne <cedlemo@gmx.com>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ /*CompletionResult ruby class*/
19
+ #include "class_CompletionResult.h"
20
+ #include "class_CompletionString.h"
21
+ #include "macros.h"
22
+
23
+ static void c_CompletionResult_struct_free(CompletionResult_t *s)
24
+ {
25
+ if (s)
26
+ {
27
+
28
+ ruby_xfree(s);
29
+ }
30
+ }
31
+
32
+ static void c_CompletionResult_mark(void *s)
33
+ {
34
+ if (s)
35
+ {
36
+ CompletionResult_t *t = (CompletionResult_t *) s;
37
+ rb_gc_mark(t->parent);
38
+ }
39
+ }
40
+
41
+ VALUE
42
+ c_CompletionResult_struct_alloc(VALUE klass)
43
+ {
44
+
45
+ CompletionResult_t *ptr;
46
+ ptr = (CompletionResult_t *) ruby_xmalloc(sizeof(CompletionResult_t));
47
+ ptr->data = NULL;
48
+ ptr->parent = Qnil;
49
+
50
+ return Data_Wrap_Struct(
51
+ klass, NULL, c_CompletionResult_struct_free, (void *) ptr);
52
+ }
53
+
54
+ /*
55
+ * call-seq:
56
+ * Clangc::CompletionResult#cursor_kind => Clangc::CursorKind
57
+ *
58
+ * \brief The kind of entity that this completion refers to.
59
+ *
60
+ * The cursor kind will be a macro, keyword, or a declaration (one of the
61
+ * *Decl cursor kinds), describing the entity that the completion is
62
+ * referring to.
63
+ *
64
+ * In the future, we would like to provide a full cursor, to allow
65
+ * the client to extract additional information from declaration.
66
+ * Get
67
+ * */
68
+ VALUE
69
+ c_CompletionResult_get_cursor_kind(VALUE self)
70
+ {
71
+ CompletionResult_t *c;
72
+ Data_Get_Struct(self, CompletionResult_t, c);
73
+
74
+ return CUINT_2_NUM(c->data->CursorKind);
75
+ }
76
+
77
+ /*
78
+ * call-seq:
79
+ * Clangc::CompletionResult#completion_string => Clangc::CompetionString
80
+ *
81
+ * The code-completion string that describes how to insert this
82
+ * code-completion result into the editing buffer.
83
+ * */
84
+ VALUE
85
+ c_CompletionResult_get_completion_string(VALUE self)
86
+ {
87
+ CompletionResult_t *c;
88
+ Data_Get_Struct(self, CompletionResult_t, c);
89
+
90
+ CompletionString_t *cs;
91
+ VALUE completion_string;
92
+ R_GET_CLASS_DATA("Clangc", CompletionString, completion_string, cs);
93
+
94
+ cs->data = c->data->CompletionString;
95
+ cs->parent = self;
96
+
97
+ return completion_string;
98
+ }
@@ -0,0 +1,36 @@
1
+ /*
2
+ * ruby-clangc ruby bindings for the C interface of Clang
3
+ * Copyright (C) 2016 Cedric Le Moigne <cedlemo@gmx.com>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ #ifndef COMPLETIONRESULT_H
19
+ #define COMPLETIONRESULT_H
20
+ #include <ruby/ruby.h>
21
+ #include "clang-c/Index.h"
22
+ typedef struct CompletionResult_t
23
+ {
24
+ CXCompletionResult *data;
25
+ VALUE parent;
26
+ } CompletionResult_t;
27
+
28
+ VALUE
29
+ c_CompletionResult_struct_alloc(VALUE);
30
+
31
+ VALUE
32
+ c_CompletionResult_get_cursor_kind(VALUE);
33
+
34
+ VALUE
35
+ c_CompletionResult_get_completion_string(VALUE);
36
+ #endif // COMPLETIONRESULT_H
@@ -0,0 +1,231 @@
1
+ /*
2
+ * ruby-clangc ruby bindings for the C interface of Clang
3
+ * Copyright (C) 2015-2016 Cedric Le Moigne cedlemo <cedlemo@gmx.com>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ /*CompletionString ruby class*/
19
+ #include "class_CompletionString.h"
20
+ #include "macros.h"
21
+
22
+ static void c_CompletionString_struct_free(CompletionString_t *s)
23
+ {
24
+ if (s)
25
+ {
26
+ ruby_xfree(s);
27
+ }
28
+ }
29
+
30
+ static void c_CompletionString_mark(void *s)
31
+ {
32
+ if (s)
33
+ {
34
+ CompletionString_t *t = (CompletionString_t *) s;
35
+ rb_gc_mark(t->parent);
36
+ }
37
+ }
38
+
39
+ VALUE
40
+ c_CompletionString_struct_alloc(VALUE klass)
41
+ {
42
+
43
+ CompletionString_t *ptr;
44
+ ptr = (CompletionString_t *) ruby_xmalloc(sizeof(CompletionString_t));
45
+ ptr->data = NULL;
46
+ ptr->parent = Qnil;
47
+
48
+ return Data_Wrap_Struct(
49
+ klass, NULL, c_CompletionString_struct_free, (void *) ptr);
50
+ }
51
+
52
+ /**
53
+ * Clangc::CompletionString#availability => Clangc::AvailabilityKind
54
+ *
55
+ * Determine the availability of the entity that this code-completion
56
+ * string refers to.
57
+ *
58
+ * The availability of the completion string which is one of the
59
+ * Clangc::AvailabilityKind constants.
60
+ */
61
+ VALUE
62
+ c_CompletionString_get_availability(VALUE self)
63
+ {
64
+ CompletionString_t *c;
65
+ Data_Get_Struct(self, CompletionString_t, c);
66
+
67
+ return CUINT_2_NUM(clang_getCompletionAvailability(c->data));
68
+ }
69
+
70
+ /**
71
+ * call-seq:
72
+ * Clangc::CompletionString#priority => Number
73
+ *
74
+ * Determine the priority of this code completion.
75
+ *
76
+ * The priority of a code completion indicates how likely it is that this
77
+ * particular completion is the completion that the user will select. The
78
+ * priority is selected by various internal heuristics.
79
+ *
80
+ * Rreturns The priority of this completion string. Smaller values indicate
81
+ * higher-priority (more likely) completions.
82
+ */
83
+ VALUE
84
+ c_CompletionString_get_priority(VALUE self)
85
+ {
86
+ CompletionString_t *c;
87
+ Data_Get_Struct(self, CompletionString_t, c);
88
+
89
+ return CUINT_2_NUM(clang_getCompletionPriority(c->data));
90
+ }
91
+
92
+ /**
93
+ * call-seq:
94
+ * Clangc::CompletionString#num_chunks => Number
95
+ *
96
+ * Retrieve the number of chunks in the given code-completion string.
97
+ */
98
+ VALUE
99
+ c_CompletionString_get_num_chunks(VALUE self)
100
+ {
101
+ CompletionString_t *c;
102
+ Data_Get_Struct(self, CompletionString_t, c);
103
+
104
+ return CUINT_2_NUM(clang_getNumCompletionChunks(c->data));
105
+ }
106
+
107
+ /**
108
+ * call-seq:
109
+ * Clangc::CompletionString#chunk_kind(Number) => Clangc::CompletionChunkKind
110
+ *
111
+ * Determine the kind of a particular chunk within a completion string.
112
+ *
113
+ * chunk_number the 0-based index of the chunk in the completion string.
114
+ *
115
+ * It returns the kind of the chunk at the index chunk_number (a
116
+ * Clangc::CompletionChunkKind constant).
117
+ */
118
+ VALUE
119
+ c_CompletionString_get_chunk_kind(VALUE self, VALUE index)
120
+ {
121
+ CompletionString_t *c;
122
+ Data_Get_Struct(self, CompletionString_t, c);
123
+
124
+ return CUINT_2_NUM(clang_getCompletionChunkKind(c->data, NUM2UINT(index)));
125
+ }
126
+
127
+ /**
128
+ * call-seq
129
+ * Clangc::CompletionString#chunk_text(Number) => String
130
+ *
131
+ * Retrieve the text associated with a particular chunk within a
132
+ * completion string.
133
+ *
134
+ * chunk_number the 0-based index of the chunk in the completion string.
135
+ *
136
+ * Returns the text associated with the chunk at index chunk_number.
137
+ */
138
+ VALUE
139
+ c_CompletionString_get_chunk_text(VALUE self, VALUE index)
140
+ {
141
+ CompletionString_t *c;
142
+ Data_Get_Struct(self, CompletionString_t, c);
143
+
144
+ return CXSTR_2_RVAL(clang_getCompletionChunkText(c->data, NUM2UINT(index)));
145
+ }
146
+
147
+ /**
148
+ * call-seq:
149
+ * Clangc::CompletionString#num_annotations => Number
150
+ *
151
+ * Retrieve the number of annotations associated with the given
152
+ * completion string.
153
+ *
154
+ * Returns the number of annotations associated with the given completion
155
+ * string.
156
+ */
157
+ VALUE
158
+ c_CompletionString_get_num_annotations(VALUE self)
159
+ {
160
+ CompletionString_t *c;
161
+ Data_Get_Struct(self, CompletionString_t, c);
162
+
163
+ return CUINT_2_NUM(clang_getCompletionNumAnnotations(c->data));
164
+ }
165
+
166
+ /**
167
+ * call-seq:
168
+ * Clangc::CompletionString#annotation(Number) => String
169
+ *
170
+ * Retrieve the annotation associated with the given completion string.
171
+ *
172
+ * annotation_number the 0-based index of the annotation of the
173
+ * completion string.
174
+ *
175
+ * Returns annotation string associated with the completion at index
176
+ * annotation_number, or a NULL string if that annotation is not available.
177
+ */
178
+ VALUE
179
+ c_CompletionString_get_annotation(VALUE self, VALUE index)
180
+ {
181
+ CompletionString_t *c;
182
+ Data_Get_Struct(self, CompletionString_t, c);
183
+
184
+ return CXSTR_2_RVAL(
185
+ clang_getCompletionAnnotation(c->data, NUM2UINT(index)));
186
+ }
187
+
188
+ /**
189
+ * Call-seq:
190
+ * Clangc::CompletionString#brief_comment => String
191
+ *
192
+ * Retrieve the brief documentation comment attached to the declaration
193
+ * that corresponds to the given completion string.
194
+ */
195
+ VALUE
196
+ c_CompletionString_get_brief_comment(VALUE self)
197
+ {
198
+ CompletionString_t *c;
199
+ Data_Get_Struct(self, CompletionString_t, c);
200
+
201
+ return CXSTR_2_RVAL(clang_getCompletionBriefComment(c->data));
202
+ }
203
+
204
+ /**
205
+ * call-seq:
206
+ * Clangc::CompletionString#chunk_completion_string(index) =>
207
+ * Clangc::CompletionString
208
+ *
209
+ * Retrieve the completion string associated with a particular chunk
210
+ * within a completion string.
211
+ *
212
+ * 0-based index of the chunk in the completion string.
213
+ *
214
+ * Returns the completion string associated with the chunk at index
215
+ * \c chunk_number.
216
+ */
217
+ VALUE
218
+ c_CompletionString_get_chunk_completion_string(VALUE self, VALUE index)
219
+ {
220
+ CompletionString_t *c;
221
+ Data_Get_Struct(self, CompletionString_t, c);
222
+
223
+ VALUE completion_string;
224
+ CompletionString_t *cs;
225
+ R_GET_CLASS_DATA("Clangc", CompletionString, completion_string, cs);
226
+ cs->data =
227
+ clang_getCompletionChunkCompletionString(c->data, NUM2UINT(index));
228
+ cs->parent = c->parent;
229
+
230
+ return completion_string;
231
+ }