-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtypesystem.html
171 lines (160 loc) · 11.2 KB
/
typesystem.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>3. The API Extractor Type System — API Extractor documentation</title>
<link rel="stylesheet" href="_static/pysidedocs.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="API Extractor documentation" href="index.html" />
<link rel="next" title="3.1. Specifying Types" href="typesystem_specifying_types.html" />
<link rel="prev" title="2. Ownership Management" href="ownership.html" />
</head>
<body>
<div id="container">
<div class="header">
<div class="header_container">
<div class="logo"><a href="https://pyside.github.io"><img alt="PySide" src="_static/pysidelogo.png" width="199" height="102" /></a></div>
<div class="related">
<ul>
<li><a href="index.html">API Extractor documentation</a></li>
</ul>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="ownership.html"
title="previous chapter">2. Ownership Management</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="typesystem_specifying_types.html"
title="next chapter">3.1. Specifying Types</a></p>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" id="q" size="18" />
<input type="submit" value="Go" id="search_button" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="the-api-extractor-type-system">
<h1>3. The API Extractor Type System<a class="headerlink" href="#the-api-extractor-type-system" title="Permalink to this headline">¶</a></h1>
<p>The typesystem is used by a binding generator or any other software using the APIExtractor library
to map a C++ library API onto a higher level language.</p>
<p>The typesystem specification is a handwritten XML document listing the types
that will be available in the generated target language API; types that are not
declared in the specification will be ignored along with everything depending on
them. In addition, it is possible to manipulate and modify types and functions.
It is even possible to use the typesystem specification to inject arbitrary
code into the source files, such as an extra member function.</p>
<p>Below there is a complete reference guide to the various nodes (XML tags) of the typesystem.
For usage examples, take a look at the typesystem files used to generate PySide. These files
can be found in the PySide/<QT_MODULE_NAME> directory of the PySide package.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="typesystem_specifying_types.html">3.1. Specifying Types</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#typesystem">3.1.1. typesystem</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#load-typesystem">3.1.2. load-typesystem</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#rejection">3.1.3. rejection</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#primitive-type">3.1.4. primitive-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#namespace-type">3.1.5. namespace-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#enum-type">3.1.6. enum-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#reject-enum-value">3.1.7. reject-enum-value</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#value-type">3.1.8. value-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#object-type">3.1.9. object-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#interface-type">3.1.10. interface-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#container-type">3.1.11. container-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#custom-type">3.1.12. custom-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_specifying_types.html#function">3.1.13. function</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="typesystem_manipulating_objects.html">3.2. Manipulating Object and Value Types</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_manipulating_objects.html#inject-code">3.2.1. inject-code</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_manipulating_objects.html#modify-field">3.2.2. modify-field</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_manipulating_objects.html#modify-function">3.2.3. modify-function</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_manipulating_objects.html#add-function">3.2.4. add-function</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_manipulating_objects.html#conversion-rule">3.2.5. conversion-rule</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="typesystem_modify_function.html">3.3. Modifying Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_modify_function.html#modify-argument">3.3.1. modify-argument</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_modify_function.html#remove">3.3.2. remove</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_modify_function.html#access">3.3.3. access</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_modify_function.html#rename">3.3.4. rename</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="typesystem_arguments.html">3.4. Modifying Arguments</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#conversion-rule">3.4.1. conversion-rule</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#remove-argument">3.4.2. remove-argument</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#rename-to">3.4.3. rename to</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#remove-default-expression">3.4.4. remove-default-expression</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#replace-default-expression">3.4.5. replace-default-expression</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#replace-type">3.4.6. replace-type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#define-ownership">3.4.7. define-ownership</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#reference-count">3.4.8. reference-count</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#replace-value">3.4.9. replace-value</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_arguments.html#parent">3.4.10. parent</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="typesystem_solving_compilation.html">3.5. Solving compilation problems</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_solving_compilation.html#suppress-warning">3.5.1. suppress-warning</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_solving_compilation.html#extra-includes">3.5.2. extra-includes</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_solving_compilation.html#include">3.5.3. include</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="typesystem_templates.html">3.6. Using Code Templates</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_templates.html#template">3.6.1. template</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_templates.html#insert-template">3.6.2. insert-template</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_templates.html#replace">3.6.3. replace</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="typesystem_conversionrule.html">3.7. Conversion Rule Tag</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_conversionrule.html#conversion-rule">3.7.1. conversion-rule</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_conversionrule.html#native-to-target">3.7.2. native-to-target</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_conversionrule.html#target-to-native">3.7.3. target-to-native</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_conversionrule.html#add-conversion">3.7.4. add-conversion</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="typesystem_documentation.html">3.8. Manipulating Documentation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typesystem_documentation.html#inject-documentation">3.8.1. inject-documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="typesystem_documentation.html#modify-documentation">3.8.2. modify-documentation</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
<a href="http://www.indt.org.br"><img src="_static/logo_indt.jpg" alt="Indt" border="0" /></a>
<a href="http://www.openbossa.org"><img src="_static/logo_openbossa.png" alt="Openbossa" border="0" /></a>
<a href="http://qt.nokia.com/"><img src="_static/logo_qt.png" alt="Qt" border="0" /></a>
<a href="http://www.python.org"><img src="_static/logo_python.jpg" alt="Python" border="0" /></a>
</div>
</div>
</body>
</html>