Panda3D
interrogate_interface.cxx
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file interrogate_interface.cxx
10 * @author drose
11 * @date 2000-07-31
12 */
13
15#include "interrogateDatabase.h"
16#include "interrogateType.h"
17#include "interrogateFunction.h"
19
20using std::string;
21
22// This function adds one more directory to the list of directories search for
23// interrogate (*.in) files. In the past, this list has been defined the
24// environment variable ETC_PATH, but now it is passed in by the code
25// generator.
26void
27interrogate_add_search_directory(const char *dirname) {
28 // cerr << "interrogate_add_search_directory(" << dirname << ")\n";
29 interrogatedb_path.append_directory(Filename::from_os_specific(dirname));
30}
31
32// This function works similar to the above, but adds a complete path string--
33// a list of multiple directories, separated by the standard delimiter--to the
34// search path.
35void
36interrogate_add_search_path(const char *pathstring) {
37 // cerr << "interrogate_add_search_path(" << pathstring << ")\n";
38 interrogatedb_path.append_path(pathstring);
39}
40
41bool interrogate_error_flag() {
42 // cerr << "interrogate_error_flag\n";
44}
45
46int
47interrogate_number_of_manifests() {
48 // cerr << "interrogate_number_of_manifests\n";
50}
51
52ManifestIndex
53interrogate_get_manifest(int n) {
54 // cerr << "interrogate_get_manifest(" << n << ")\n";
56}
57
58ManifestIndex
59interrogate_get_manifest_by_name(const char *manifest_name) {
60 // cerr << "interrogate_get_manifest_by_name(" << manifest_name << ")\n";
62}
63
64const char *
65interrogate_manifest_name(ManifestIndex manifest) {
66 // cerr << "interrogate_manifest_name(" << manifest << ")\n";
67 return InterrogateDatabase::get_ptr()->get_manifest(manifest).get_name().c_str();
68}
69
70const char *
71interrogate_manifest_definition(ManifestIndex manifest) {
72 // cerr << "interrogate_manifest_definition(" << manifest << ")\n";
73 return InterrogateDatabase::get_ptr()->get_manifest(manifest).get_definition().c_str();
74}
75
76bool
77interrogate_manifest_has_type(ManifestIndex manifest) {
78 // cerr << "interrogate_manifest_has_type(" << manifest << ")\n";
79 return InterrogateDatabase::get_ptr()->get_manifest(manifest).has_type();
80}
81
82TypeIndex
83interrogate_manifest_get_type(ManifestIndex manifest) {
84 // cerr << "interrogate_manifest_get_type(" << manifest << ")\n";
85 return InterrogateDatabase::get_ptr()->get_manifest(manifest).get_type();
86}
87
88bool
89interrogate_manifest_has_getter(ManifestIndex manifest) {
90 // cerr << "interrogate_manifest_has_getter(" << manifest << ")\n";
91 return InterrogateDatabase::get_ptr()->get_manifest(manifest).has_getter();
92}
93
94FunctionIndex
95interrogate_manifest_getter(ManifestIndex manifest) {
96 // cerr << "interrogate_manifest_getter(" << manifest << ")\n";
97 return InterrogateDatabase::get_ptr()->get_manifest(manifest).get_getter();
98}
99
100bool
101interrogate_manifest_has_int_value(ManifestIndex manifest) {
102 // cerr << "interrogate_manifest_has_int_value(" << manifest << ")\n";
103 return InterrogateDatabase::get_ptr()->get_manifest(manifest).has_int_value();
104}
105
106int
107interrogate_manifest_get_int_value(ManifestIndex manifest) {
108 // cerr << "interrogate_manifest_get_int_value(" << manifest << ")\n";
109 return InterrogateDatabase::get_ptr()->get_manifest(manifest).get_int_value();
110}
111
112const char *
113interrogate_element_name(ElementIndex element) {
114 // cerr << "interrogate_element_name(" << element << ")\n";
115 return InterrogateDatabase::get_ptr()->get_element(element).get_name().c_str();
116}
117
118const char *
119interrogate_element_scoped_name(ElementIndex element) {
120 // cerr << "interrogate_element_scoped_name(" << element << ")\n";
121 return InterrogateDatabase::get_ptr()->get_element(element).get_scoped_name().c_str();
122}
123
124bool
125interrogate_element_has_comment(ElementIndex element) {
126 // cerr << "interrogate_element_has_comment(" << element << ")\n";
127 return InterrogateDatabase::get_ptr()->get_element(element).has_comment();
128}
129
130const char *
131interrogate_element_comment(ElementIndex element) {
132 // cerr << "interrogate_element_comment(" << element << ")\n";
133 return InterrogateDatabase::get_ptr()->get_element(element).get_comment().c_str();
134}
135
136ElementIndex
137interrogate_get_element_by_name(const char *element_name) {
138 // cerr << "interrogate_get_element_by_name(" << element_name << ")\n";
140}
141
142ElementIndex
143interrogate_get_element_by_scoped_name(const char *element_name) {
144 // cerr << "interrogate_get_element_by_scoped_name(" << element_name <<
145 // ")\n";
147}
148
149TypeIndex
150interrogate_element_type(ElementIndex element) {
151 // cerr << "interrogate_element_type(" << element << ")\n";
152 return InterrogateDatabase::get_ptr()->get_element(element).get_type();
153}
154
155bool
156interrogate_element_has_getter(ElementIndex element) {
157 // cerr << "interrogate_element_has_getter(" << element << ")\n";
158 return InterrogateDatabase::get_ptr()->get_element(element).has_getter();
159}
160
161FunctionIndex
162interrogate_element_getter(ElementIndex element) {
163 // cerr << "interrogate_element_getter(" << element << ")\n";
164 return InterrogateDatabase::get_ptr()->get_element(element).get_getter();
165}
166
167bool
168interrogate_element_has_setter(ElementIndex element) {
169 // cerr << "interrogate_element_has_setter(" << element << ")\n";
170 return InterrogateDatabase::get_ptr()->get_element(element).has_setter();
171}
172
173FunctionIndex
174interrogate_element_setter(ElementIndex element) {
175 // cerr << "interrogate_element_setter(" << element << ")\n";
176 return InterrogateDatabase::get_ptr()->get_element(element).get_setter();
177}
178
179bool
180interrogate_element_is_sequence(ElementIndex element) {
181 // cerr << "interrogate_element_is_sequence(" << element << ")\n";
182 return InterrogateDatabase::get_ptr()->get_element(element).is_sequence();
183}
184
185bool
186interrogate_element_is_mapping(ElementIndex element) {
187 // cerr << "interrogate_element_is_mapping(" << element << ")\n";
188 return InterrogateDatabase::get_ptr()->get_element(element).is_mapping();
189}
190
191int
192interrogate_number_of_globals() {
193 // cerr << "interrogate_number_of_globals()\n";
195}
196
197ElementIndex
198interrogate_get_global(int n) {
199 // cerr << "interrogate_get_global(" << n << ")\n";
201}
202
203int
204interrogate_number_of_global_functions() {
205 // cerr << "interrogate_number_of_global_functions()\n";
207}
208
209FunctionIndex
210interrogate_get_global_function(int n) {
211 // cerr << "interrogate_get_global_function(" << n << ")\n";
213}
214
215int
216interrogate_number_of_functions() {
217 // cerr << "interrogate_number_of_functions()\n";
219}
220
221FunctionIndex
222interrogate_get_function(int n) {
223 // cerr << "interrogate_get_function(" << n << ")\n";
225}
226
227const char *
228interrogate_function_name(FunctionIndex function) {
229 // cerr << "interrogate_function_name(" << function << ")\n";
230 return InterrogateDatabase::get_ptr()->get_function(function).get_name().c_str();
231}
232
233const char *
234interrogate_function_scoped_name(FunctionIndex function) {
235 // cerr << "interrogate_function_scoped_name(" << function << ")\n";
236 return InterrogateDatabase::get_ptr()->get_function(function).get_scoped_name().c_str();
237}
238
239bool
240interrogate_function_has_comment(FunctionIndex function) {
241 // cerr << "interrogate_function_has_comment(" << function << ")\n";
242 return InterrogateDatabase::get_ptr()->get_function(function).has_comment();
243}
244
245const char *
246interrogate_function_comment(FunctionIndex function) {
247 // cerr << "interrogate_function_comment(" << function << ")\n";
248 return InterrogateDatabase::get_ptr()->get_function(function).get_comment().c_str();
249}
250
251const char *
252interrogate_function_prototype(FunctionIndex function) {
253 // cerr << "interrogate_function_prototype(" << function << ")\n";
254 return InterrogateDatabase::get_ptr()->get_function(function).get_prototype().c_str();
255}
256
257bool
258interrogate_function_is_method(FunctionIndex function) {
259 // cerr << "interrogate_function_is_method(" << function << ")\n";
261}
262
263TypeIndex
264interrogate_function_class(FunctionIndex function) {
265 // cerr << "interrogate_function_class(" << function << ")\n";
267}
268
269bool
270interrogate_function_is_unary_op(FunctionIndex function) {
271 // cerr << "interrogate_function_is_unary_op(" << function << ")\n";
273}
274
275bool
276interrogate_function_is_operator_typecast(FunctionIndex function) {
277 // cerr << "interrogate_function_is_operator_typecast(" << function <<
278 // ")\n";
280}
281
282bool
283interrogate_function_is_constructor(FunctionIndex function) {
284 // cerr << "interrogate_function_is_constructor(" << function << ")\n";
286}
287
288bool
289interrogate_function_is_destructor(FunctionIndex function) {
290 // cerr << "interrogate_function_is_destructor(" << function << ")\n";
292}
293
294bool
295interrogate_function_has_module_name(FunctionIndex function) {
296 // cerr << "interrogate_function_has_module_name(" << function << ")\n";
298}
299
300const char *
301interrogate_function_module_name(FunctionIndex function) {
302 // cerr << "interrogate_function_module_name(" << function << ")\n";
304}
305
306bool
307interrogate_function_has_library_name(FunctionIndex function) {
308 // cerr << "interrogate_function_has_library_name(" << function << ")\n";
310}
311
312const char *
313interrogate_function_library_name(FunctionIndex function) {
314 // cerr << "interrogate_function_library_name(" << function << ")\n";
316}
317
318
319
320bool
321interrogate_function_is_virtual(FunctionIndex function) {
322 // cerr << "interrogate_function_is_virtual(" << function << ")\n";
324}
325
326int
327interrogate_function_number_of_c_wrappers(FunctionIndex function) {
328 // cerr << "interrogate_function_number_of_c_wrappers(" << function <<
329 // ")\n";
330 return InterrogateDatabase::get_ptr()->get_function(function).number_of_c_wrappers();
331}
332
333FunctionWrapperIndex
334interrogate_function_c_wrapper(FunctionIndex function, int n) {
335 // cerr << "interrogate_function_c_wrapper(" << function << ", " << n <<
336 // ")\n";
337 return InterrogateDatabase::get_ptr()->get_function(function).get_c_wrapper(n);
338}
339
340int
341interrogate_function_number_of_python_wrappers(FunctionIndex function) {
342 // cerr << "interrogate_function_number_of_python_wrappers(" << function <<
343 // ")\n";
344 return InterrogateDatabase::get_ptr()->get_function(function).number_of_python_wrappers();
345}
346
347FunctionWrapperIndex
348interrogate_function_python_wrapper(FunctionIndex function, int n) {
349 // cerr << "interrogate_function_python_wrapper(" << function << ", " << n
350 // << ")\n";
351 return InterrogateDatabase::get_ptr()->get_function(function).get_python_wrapper(n);
352}
353
354const char *
355interrogate_wrapper_name(FunctionWrapperIndex wrapper) {
356 // cerr << "interrogate_wrapper_name(" << wrapper << ")\n";
357 static string result;
358 result = InterrogateDatabase::get_ptr()->get_wrapper(wrapper).get_name();
359 return result.c_str();
360}
361
362bool
363interrogate_wrapper_is_callable_by_name(FunctionWrapperIndex wrapper) {
364 // cerr << "interrogate_wrapper_is_callable_by_name(" << wrapper << ")\n";
365 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).is_callable_by_name();
366}
367
368bool
369interrogate_wrapper_has_comment(FunctionWrapperIndex wrapper) {
370 // cerr << "interrogate_wrapper_has_comment(" << wrapper << ")\n";
371 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).has_comment();
372}
373
374const char *
375interrogate_wrapper_comment(FunctionWrapperIndex wrapper) {
376 // cerr << "interrogate_wrapper_comment(" << wrapper << ")\n";
377 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).get_comment().c_str();
378}
379
380bool
381interrogate_wrapper_has_return_value(FunctionWrapperIndex wrapper) {
382 // cerr << "interrogate_wrapper_has_return_value(" << wrapper << ")\n";
383 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).has_return_value();
384}
385
386TypeIndex
387interrogate_wrapper_return_type(FunctionWrapperIndex wrapper) {
388 // cerr << "interrogate_wrapper_return_type(" << wrapper << ")\n";
389 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).get_return_type();
390}
391
392bool
393interrogate_wrapper_caller_manages_return_value(FunctionWrapperIndex wrapper) {
394 // cerr << "interrogate_wrapper_caller_manages_return_value(" << wrapper <<
395 // ")\n";
396 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).caller_manages_return_value();
397}
398
399FunctionIndex
400interrogate_wrapper_return_value_destructor(FunctionWrapperIndex wrapper) {
401 // cerr << "interrogate_wrapper_return_value_destructor(" << wrapper <<
402 // ")\n";
403 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).get_return_value_destructor();
404}
405
406int
407interrogate_wrapper_number_of_parameters(FunctionWrapperIndex wrapper) {
408 // cerr << "interrogate_wrapper_number_of_parameters(" << wrapper << ")\n";
409 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).number_of_parameters();
410}
411
412TypeIndex
413interrogate_wrapper_parameter_type(FunctionWrapperIndex wrapper, int n) {
414 // cerr << "interrogate_wrapper_parameter_type(" << wrapper << ", " << n <<
415 // ")\n";
416 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).parameter_get_type(n);
417}
418
419bool
420interrogate_wrapper_parameter_has_name(FunctionWrapperIndex wrapper, int n) {
421 // cerr << "interrogate_wrapper_parameter_has_name(" << wrapper << ", " << n
422 // << ")\n";
423 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).parameter_has_name(n);
424}
425
426const char *
427interrogate_wrapper_parameter_name(FunctionWrapperIndex wrapper, int n) {
428 // cerr << "interrogate_wrapper_parameter_name(" << wrapper << ", " << n <<
429 // ")\n";
430 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).parameter_get_name(n).c_str();
431}
432
433bool
434interrogate_wrapper_parameter_is_this(FunctionWrapperIndex wrapper, int n) {
435 // cerr << "interrogate_wrapper_is_this(" << wrapper << ", " << n << ")\n";
436 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).parameter_is_this(n);
437}
438
439bool
440interrogate_wrapper_parameter_is_optional(FunctionWrapperIndex wrapper, int n) {
441 // cerr << "interrogate_wrapper_is_optional(" << wrapper << ", " << n << ")\n";
442 return InterrogateDatabase::get_ptr()->get_wrapper(wrapper).parameter_is_optional(n);
443}
444
445bool
446interrogate_wrapper_has_pointer(FunctionWrapperIndex wrapper) {
447 // cerr << "interrogate_wrapper_has_pointer(" << wrapper << ")\n";
448 return (InterrogateDatabase::get_ptr()->get_fptr(wrapper) != nullptr);
449}
450
451void *
452interrogate_wrapper_pointer(FunctionWrapperIndex wrapper) {
453 // cerr << "interrogate_wrapper_pointer(" << wrapper << ")\n";
454 return InterrogateDatabase::get_ptr()->get_fptr(wrapper);
455}
456
457const char *
458interrogate_wrapper_unique_name(FunctionWrapperIndex wrapper) {
459 // cerr << "interrogate_wrapper_unique_name(" << wrapper << ")\n";
460 static string result;
461 result = InterrogateDatabase::get_ptr()->get_wrapper(wrapper).get_unique_name();
462 return result.c_str();
463}
464
465FunctionWrapperIndex
466interrogate_get_wrapper_by_unique_name(const char *unique_name) {
467 // cerr << "interrogate_get_wrapper_by_unique_name(" << unique_name <<
468 // ")\n";
470}
471
472const char *
473interrogate_make_seq_seq_name(MakeSeqIndex make_seq) {
474 // cerr << "interrogate_make_seq_seq_name(" << make_seq << ")\n";
475 static string result;
476 result = InterrogateDatabase::get_ptr()->get_make_seq(make_seq).get_name();
477 return result.c_str();
478}
479
480const char *
481interrogate_make_seq_scoped_name(MakeSeqIndex make_seq) {
482 // cerr << "interrogate_make_seq_seq_name(" << make_seq << ")\n";
483 static string result;
484 result = InterrogateDatabase::get_ptr()->get_make_seq(make_seq).get_scoped_name();
485 return result.c_str();
486}
487
488bool
489interrogate_make_seq_has_comment(MakeSeqIndex make_seq) {
490 // cerr << "interrogate_make_seq_has_comment(" << make_seq << ")\n";
491 return InterrogateDatabase::get_ptr()->get_make_seq(make_seq).has_comment();
492}
493
494const char *
495interrogate_make_seq_comment(MakeSeqIndex make_seq) {
496 // cerr << "interrogate_make_seq_comment(" << make_seq << ")\n";
497 return InterrogateDatabase::get_ptr()->get_make_seq(make_seq).get_comment().c_str();
498}
499
500const char *
501interrogate_make_seq_num_name(MakeSeqIndex make_seq) {
502 // cerr << "interrogate_make_seq_num_name(" << make_seq << ")\n";
503 FunctionIndex function = InterrogateDatabase::get_ptr()->get_make_seq(make_seq).get_length_getter();
504 return interrogate_function_name(function);
505}
506
507const char *
508interrogate_make_seq_element_name(MakeSeqIndex make_seq) {
509 // cerr << "interrogate_make_seq_element_name(" << make_seq << ")\n";
510 FunctionIndex function = InterrogateDatabase::get_ptr()->get_make_seq(make_seq).get_element_getter();
511 return interrogate_function_name(function);
512}
513
514FunctionIndex
515interrogate_make_seq_num_getter(MakeSeqIndex make_seq) {
516 // cerr << "interrogate_make_seq_num_getter(" << make_seq << ")\n";
517 return InterrogateDatabase::get_ptr()->get_make_seq(make_seq).get_length_getter();
518}
519
520FunctionIndex
521interrogate_make_seq_element_getter(MakeSeqIndex make_seq) {
522 // cerr << "interrogate_make_seq_element_getter(" << make_seq << ")\n";
523 return InterrogateDatabase::get_ptr()->get_make_seq(make_seq).get_element_getter();
524}
525
526int
527interrogate_number_of_global_types() {
528 // cerr << "interrogate_number_of_global_types()\n";
530}
531
532TypeIndex
533interrogate_get_global_type(int n) {
534 // cerr << "interrogate_get_global_type(" << n << ")\n";
536}
537
538int
539interrogate_number_of_types() {
540 // cerr << "interrogate_number_of_types()\n";
542}
543
544TypeIndex
545interrogate_get_type(int n) {
546 // cerr << "interrogate_get_type(" << n << ")\n";
548}
549
550TypeIndex
551interrogate_get_type_by_name(const char *type_name) {
552 // cerr << "interrogate_get_type_by_name(" << type_name << ")\n";
554}
555
556TypeIndex
557interrogate_get_type_by_scoped_name(const char *type_name) {
558 // cerr << "interrogate_get_type_by_scoped_name(" << type_name << ")\n";
560}
561
562TypeIndex
563interrogate_get_type_by_true_name(const char *type_name) {
564 // cerr << "interrogate_get_type_by_true_name(" << type_name << ")\n";
566}
567
568bool
569interrogate_type_is_global(TypeIndex type) {
570 // cerr << "interrogate_type_is_global(" << type << ")\n";
572}
573
574const char *
575interrogate_type_name(TypeIndex type) {
576 // cerr << "interrogate_type_name(" << type << ")\n";
577 return InterrogateDatabase::get_ptr()->get_type(type).get_name().c_str();
578}
579
580const char *
581interrogate_type_scoped_name(TypeIndex type) {
582 // cerr << "interrogate_type_scoped_name(" << type << ")\n";
583 return InterrogateDatabase::get_ptr()->get_type(type).get_scoped_name().c_str();
584}
585
586const char *
587interrogate_type_true_name(TypeIndex type) {
588 // cerr << "interrogate_type_true_name(" << type << ")\n";
589 return InterrogateDatabase::get_ptr()->get_type(type).get_true_name().c_str();
590}
591
592bool
593interrogate_type_is_nested(TypeIndex type) {
594 // cerr << "interrogate_type_is_nested(" << type << ")\n";
596}
597
598TypeIndex
599interrogate_type_outer_class(TypeIndex type) {
600 // cerr << "interrogate_type_outer_class(" << type << ")\n";
602}
603
604bool
605interrogate_type_has_comment(TypeIndex type) {
606 // cerr << "interrogate_type_has_comment(" << type << ")\n";
607 return InterrogateDatabase::get_ptr()->get_type(type).has_comment();
608}
609
610const char *
611interrogate_type_comment(TypeIndex type) {
612 // cerr << "interrogate_type_comment(" << type << ")\n";
613 return InterrogateDatabase::get_ptr()->get_type(type).get_comment().c_str();
614}
615
616bool
617interrogate_type_has_module_name(TypeIndex type) {
618 // cerr << "interrogate_type_has_module_name(" << type << ")\n";
620}
621
622const char *
623interrogate_type_module_name(TypeIndex type) {
624 // cerr << "interrogate_type_module_name(" << type << ")\n";
626}
627
628bool
629interrogate_type_has_library_name(TypeIndex type) {
630 // cerr << "interrogate_type_has_library_name(" << type << ")\n";
632}
633
634const char *
635interrogate_type_library_name(TypeIndex type) {
636 // cerr << "interrogate_type_library_name(" << type << ")\n";
638}
639
640
641bool
642interrogate_type_is_atomic(TypeIndex type) {
643 // cerr << "interrogate_type_is_atomic(" << type << ")\n";
644 return InterrogateDatabase::get_ptr()->get_type(type).is_atomic();
645}
646
647AtomicToken
648interrogate_type_atomic_token(TypeIndex type) {
649 // cerr << "interrogate_type_atomic_token(" << type << ")\n";
650 return InterrogateDatabase::get_ptr()->get_type(type).get_atomic_token();
651}
652
653bool
654interrogate_type_is_unsigned(TypeIndex type) {
655 // cerr << "interrogate_type_is_unsigned(" << type << ")\n";
656 return InterrogateDatabase::get_ptr()->get_type(type).is_unsigned();
657}
658
659bool
660interrogate_type_is_signed(TypeIndex type) {
661 // cerr << "interrogate_type_is_signed(" << type << ")\n";
662 return InterrogateDatabase::get_ptr()->get_type(type).is_signed();
663}
664
665bool
666interrogate_type_is_long(TypeIndex type) {
667 // cerr << "interrogate_type_is_long(" << type << ")\n";
668 return InterrogateDatabase::get_ptr()->get_type(type).is_long();
669}
670
671bool
672interrogate_type_is_longlong(TypeIndex type) {
673 // cerr << "interrogate_type_is_longlong(" << type << ")\n";
674 return InterrogateDatabase::get_ptr()->get_type(type).is_longlong();
675}
676
677bool
678interrogate_type_is_short(TypeIndex type) {
679 // cerr << "interrogate_type_is_short(" << type << ")\n";
680 return InterrogateDatabase::get_ptr()->get_type(type).is_short();
681}
682
683bool
684interrogate_type_is_wrapped(TypeIndex type) {
685 // cerr << "interrogate_type_is_wrapped(" << type << ")\n";
686 return InterrogateDatabase::get_ptr()->get_type(type).is_wrapped();
687}
688
689bool
690interrogate_type_is_pointer(TypeIndex type) {
691 // cerr << "interrogate_type_is_pointer(" << type << ")\n";
692 return InterrogateDatabase::get_ptr()->get_type(type).is_pointer();
693}
694
695bool
696interrogate_type_is_const(TypeIndex type) {
697 // cerr << "interrogate_type_is_const(" << type << ")\n";
698 return InterrogateDatabase::get_ptr()->get_type(type).is_const();
699}
700
701bool
702interrogate_type_is_typedef(TypeIndex type) {
703 // cerr << "interrogate_type_is_typedef(" << type << ")\n";
704 return InterrogateDatabase::get_ptr()->get_type(type).is_typedef();
705}
706
707TypeIndex
708interrogate_type_wrapped_type(TypeIndex type) {
709 // cerr << "interrogate_type_wrapped_type(" << type << ")\n";
710 return InterrogateDatabase::get_ptr()->get_type(type).get_wrapped_type();
711}
712
713bool
714interrogate_type_is_array(TypeIndex type) {
715 // cerr << "interrogate_type_is_array(" << type << ")\n";
716 return InterrogateDatabase::get_ptr()->get_type(type).is_array();
717}
718
719int
720interrogate_type_array_size(TypeIndex type) {
721 // cerr << "interrogate_type_array_size(" << type << ")\n";
722 return InterrogateDatabase::get_ptr()->get_type(type).get_array_size();
723}
724
725bool
726interrogate_type_is_enum(TypeIndex type) {
727 // cerr << "interrogate_type_is_enum(" << type << ")\n";
728 return InterrogateDatabase::get_ptr()->get_type(type).is_enum();
729}
730
731bool
732interrogate_type_is_scoped_enum(TypeIndex type) {
733 // cerr << "interrogate_type_is_scoped_enum(" << type << ")\n";
735}
736
737int
738interrogate_type_number_of_enum_values(TypeIndex type) {
739 // cerr << "interrogate_type_number_of_enum_values(" << type << ")\n";
740 return InterrogateDatabase::get_ptr()->get_type(type).number_of_enum_values();
741}
742
743const char *
744interrogate_type_enum_value_name(TypeIndex type, int n) {
745 // cerr << "interrogate_type_enum_value_name(" << type << ", " << n <<
746 // ")\n";
747 return InterrogateDatabase::get_ptr()->get_type(type).get_enum_value_name(n).c_str();
748}
749
750const char *
751interrogate_type_enum_value_scoped_name(TypeIndex type, int n) {
752 // cerr << "interrogate_type_enum_value_scoped_name(" << type << ", " << n
753 // << ")\n";
754 return InterrogateDatabase::get_ptr()->get_type(type).get_enum_value_scoped_name(n).c_str();
755}
756
757const char *
758interrogate_type_enum_value_comment(TypeIndex type, int n) {
759 // cerr << "interrogate_type_enum_value_comment(" << type << ", " << n <<
760 // ")\n";
761 return InterrogateDatabase::get_ptr()->get_type(type).get_enum_value_comment(n).c_str();
762}
763
764int
765interrogate_type_enum_value(TypeIndex type, int n) {
766 // cerr << "interrogate_type_enum_value(" << type << ", " << n << ")\n";
767 return InterrogateDatabase::get_ptr()->get_type(type).get_enum_value(n);
768}
769
770bool
771interrogate_type_is_struct(TypeIndex type) {
772 // cerr << "interrogate_type_is_struct(" << type << ")\n";
773 return InterrogateDatabase::get_ptr()->get_type(type).is_struct();
774}
775
776bool
777interrogate_type_is_class(TypeIndex type) {
778 // cerr << "interrogate_type_is_class(" << type << ")\n";
779 return InterrogateDatabase::get_ptr()->get_type(type).is_class();
780}
781
782bool
783interrogate_type_is_union(TypeIndex type) {
784 // cerr << "interrogate_type_is_union(" << type << ")\n";
785 return InterrogateDatabase::get_ptr()->get_type(type).is_union();
786}
787
788bool
789interrogate_type_is_fully_defined(TypeIndex type) {
790 // cerr << "interrogate_type_is_fully_defined(" << type << ")\n";
791 return InterrogateDatabase::get_ptr()->get_type(type).is_fully_defined();
792}
793
794bool
795interrogate_type_is_unpublished(TypeIndex type) {
796 // cerr << "interrogate_type_is_unpublished(" << type << ")\n";
798}
799
800int
801interrogate_type_number_of_constructors(TypeIndex type) {
802 // cerr << "interrogate_type_number_of_constructors(" << type << ")\n";
803 return InterrogateDatabase::get_ptr()->get_type(type).number_of_constructors();
804}
805
806FunctionIndex
807interrogate_type_get_constructor(TypeIndex type, int n) {
808 // cerr << "interrogate_type_get_constructor(" << type << ", " << n <<
809 // ")\n";
810 return InterrogateDatabase::get_ptr()->get_type(type).get_constructor(n);
811}
812
813bool
814interrogate_type_has_destructor(TypeIndex type) {
815 // cerr << "interrogate_type_has_destructor(" << type << ")\n";
816 return InterrogateDatabase::get_ptr()->get_type(type).has_destructor();
817}
818
819bool
820interrogate_type_destructor_is_inherited(TypeIndex type) {
821 // cerr << "interrogate_type_destructor_is_inherited(" << type << ")\n";
822 return InterrogateDatabase::get_ptr()->get_type(type).destructor_is_inherited();
823}
824
825FunctionIndex
826interrogate_type_get_destructor(TypeIndex type) {
827 // cerr << "interrogate_type_get_destructor(" << type << ")\n";
828 return InterrogateDatabase::get_ptr()->get_type(type).get_destructor();
829}
830
831int
832interrogate_type_number_of_elements(TypeIndex type) {
833 // cerr << "interrogate_type_number_of_elements(" << type << ")\n";
834 return InterrogateDatabase::get_ptr()->get_type(type).number_of_elements();
835}
836
837ElementIndex
838interrogate_type_get_element(TypeIndex type, int n) {
839 // cerr << "interrogate_type_get_element(" << type << ", " << n << ")\n";
840 return InterrogateDatabase::get_ptr()->get_type(type).get_element(n);
841}
842
843int
844interrogate_type_number_of_methods(TypeIndex type) {
845 // cerr << "interrogate_type_number_of_methods(" << type << ")\n";
846 return InterrogateDatabase::get_ptr()->get_type(type).number_of_methods();
847}
848
849FunctionIndex
850interrogate_type_get_method(TypeIndex type, int n) {
851 // cerr << "interrogate_type_get_method(" << type << ", " << n << ")\n";
852 return InterrogateDatabase::get_ptr()->get_type(type).get_method(n);
853}
854
855int
856interrogate_type_number_of_make_seqs(TypeIndex type) {
857 // cerr << "interrogate_type_number_of_make_seqs(" << type << ")\n";
858 return InterrogateDatabase::get_ptr()->get_type(type).number_of_make_seqs();
859}
860
861MakeSeqIndex
862interrogate_type_get_make_seq(TypeIndex type, int n) {
863 // cerr << "interrogate_type_get_make_seq(" << type << ", " << n << ")\n";
864 return InterrogateDatabase::get_ptr()->get_type(type).get_make_seq(n);
865}
866
867int
868interrogate_type_number_of_casts(TypeIndex type) {
869 // cerr << "interrogate_type_number_of_casts(" << type << ")\n";
870 return InterrogateDatabase::get_ptr()->get_type(type).number_of_casts();
871}
872
873FunctionIndex
874interrogate_type_get_cast(TypeIndex type, int n) {
875 // cerr << "interrogate_type_get_cast(" << type << ", " << n << ")\n";
876 return InterrogateDatabase::get_ptr()->get_type(type).get_cast(n);
877}
878
879int
880interrogate_type_number_of_derivations(TypeIndex type) {
881 // cerr << "interrogate_type_number_of_derivations(" << type << ")\n";
882 return InterrogateDatabase::get_ptr()->get_type(type).number_of_derivations();
883}
884
885TypeIndex
886interrogate_type_get_derivation(TypeIndex type, int n) {
887 // cerr << "interrogate_type_get_derivation(" << type << ", " << n << ")\n";
888 return InterrogateDatabase::get_ptr()->get_type(type).get_derivation(n);
889}
890
891bool
892interrogate_type_is_final(TypeIndex type) {
893 // cerr << "interrogate_type_is_final(" << type << ")\n";
894 return InterrogateDatabase::get_ptr()->get_type(type).is_final();
895}
896
897bool
898interrogate_type_derivation_has_upcast(TypeIndex type, int n) {
899 // cerr << "interrogate_type_derivation_has_upcast(" << type << ", " << n <<
900 // ")\n";
901 return InterrogateDatabase::get_ptr()->get_type(type).derivation_has_upcast(n);
902}
903
904FunctionIndex
905interrogate_type_get_upcast(TypeIndex type, int n) {
906 // cerr << "interrogate_type_get_upcast(" << type << ", " << n << ")\n";
907 return InterrogateDatabase::get_ptr()->get_type(type).derivation_get_upcast(n);
908}
909
910bool
911interrogate_type_derivation_downcast_is_impossible(TypeIndex type, int n) {
912 // cerr << "interrogate_type_derivation_downcast_is_impossible(" << type <<
913 // ", " << n << ")\n";
914 return InterrogateDatabase::get_ptr()->get_type(type).derivation_downcast_is_impossible(n);
915}
916
917bool
918interrogate_type_derivation_has_downcast(TypeIndex type, int n) {
919 // cerr << "interrogate_type_derivation_has_downcast(" << type << ", " << n
920 // << ")\n";
921 return InterrogateDatabase::get_ptr()->get_type(type).derivation_has_downcast(n);
922}
923
924FunctionIndex
925interrogate_type_get_downcast(TypeIndex type, int n) {
926 // cerr << "interrogate_type_get_downcast(" << type << ", " << n << ")\n";
927 return InterrogateDatabase::get_ptr()->get_type(type).derivation_get_downcast(n);
928}
929
930int
931interrogate_type_number_of_nested_types(TypeIndex type) {
932 // cerr << "interrogate_type_number_of_nested_types(" << type << ")\n";
933 return InterrogateDatabase::get_ptr()->get_type(type).number_of_nested_types();
934}
935
936TypeIndex
937interrogate_type_get_nested_type(TypeIndex type, int n) {
938 // cerr << "interrogate_type_get_nested_type(" << type << ", " << n <<
939 // ")\n";
940 return InterrogateDatabase::get_ptr()->get_type(type).get_nested_type(n);
941}
void append_directory(const Filename &directory)
Adds a new directory to the end of the search list.
void append_path(const std::string &path, const std::string &separator=std::string())
Adds all of the directories listed in the search path to the end of the search list.
static Filename from_os_specific(const std::string &os_specific, Type type=T_general)
This named constructor returns a Panda-style filename (that is, using forward slashes,...
Definition: filename.cxx:328
const char * get_module_name() const
Returns the module name, if it is known, or NULL if it is not.
bool has_module_name() const
Returns true if we have a known module name, false if we do not.
const char * get_library_name() const
Returns the library name, if it is known, or NULL if it is not.
bool has_library_name() const
Returns true if we have a known library name, false if we do not.
int get_num_global_types()
Returns the total number of "global" types known to the interrogate database.
TypeIndex lookup_type_by_scoped_name(const std::string &name)
Returns the TypeIndex associated with the first type found with the given scoped name,...
ManifestIndex get_global_manifest(int n)
Returns the index of the nth global manifest constant known to the interrogate database.
const InterrogateFunction & get_function(FunctionIndex function)
Returns the function associated with the given FunctionIndex, if there is one.
ManifestIndex lookup_manifest_by_name(const std::string &name)
Returns the ManifestIndex associated with the first manifest found with the given name,...
int get_num_all_functions()
Returns the total number of functions known to the interrogate database.
int get_num_all_types()
Returns the total number of types known to the interrogate database.
TypeIndex lookup_type_by_true_name(const std::string &name)
Returns the TypeIndex associated with the first type found with the given true name,...
const InterrogateMakeSeq & get_make_seq(MakeSeqIndex element)
Returns the make_seq associated with the given MakeSeqIndex, if there is one.
bool get_error_flag()
Returns the global error flag.
int get_num_global_elements()
Returns the total number of global data elements known to the interrogate database.
const InterrogateManifest & get_manifest(ManifestIndex manifest)
Returns the manifest constant associated with the given ManifestIndex, if there is one.
const InterrogateType & get_type(TypeIndex type)
Returns the type associated with the given TypeIndex, if there is one.
const InterrogateElement & get_element(ElementIndex element)
Returns the data element associated with the given ElementIndex, if there is one.
int get_num_global_manifests()
Returns the total number of global manifest constants known to the interrogate database.
int get_num_global_functions()
Returns the total number of global functions known to the interrogate database.
const InterrogateFunctionWrapper & get_wrapper(FunctionWrapperIndex wrapper)
Returns the function wrapper associated with the given FunctionWrapperIndex, if there is one.
static InterrogateDatabase * get_ptr()
Returns the global pointer to the one InterrogateDatabase.
void * get_fptr(FunctionWrapperIndex wrapper)
Returns the function pointer associated with the given function wrapper, if it has a pointer availabl...
ElementIndex lookup_element_by_name(const std::string &name)
Returns the ElementIndex associated with the first element found with the given name,...
FunctionIndex get_all_function(int n)
Returns the index of the nth function known to the interrogate database.
TypeIndex get_all_type(int n)
Returns the index of the nth type known to the interrogate database.
ElementIndex lookup_element_by_scoped_name(const std::string &name)
Returns the ElementIndex associated with the first element found with the given scoped name,...
FunctionWrapperIndex get_wrapper_by_unique_name(const std::string &unique_name)
Looks up the function wrapper corresponding to the given unique name, if available.
TypeIndex lookup_type_by_name(const std::string &name)
Returns the TypeIndex associated with the first type found with the given name, or 0 if no type has t...
ElementIndex get_global_element(int n)
Returns the index of the nth global data element known to the interrogate database.
TypeIndex get_global_type(int n)
Returns the index of the nth global type known to the interrogate database.
FunctionIndex get_global_function(int n)
Returns the index of the nth global function known to the interrogate database.
bool is_method() const
Returns true if the function is a class method.
bool is_destructor() const
Returns true if the function is a destructor.
TypeIndex get_class() const
Return the class that owns the method, if is_method() returns true.
bool is_constructor() const
Returns true if the function is a constructor.
bool is_unary_op() const
Returns true if the function is flagged as a special unary operator, like operator -() with no parame...
bool is_virtual() const
Returns true if the function is virtual, for whatever that's worth.
bool is_operator_typecast() const
Returns true if the function is a special typecast operator, like operator bool().
bool is_global() const
Returns true if the type is marked as 'global'.
bool is_unpublished() const
Returns true if the type is an unpublished type.
bool is_nested() const
Returns true if this type is nested within some class definition.
TypeIndex get_outer_class() const
If is_nested() returns true, this is the class within which this type is defined.
bool is_scoped_enum() const
Returns true if enum values are only available under a scope.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.