Re: Re: software design clarification
"Roman Yakovenko" <[email protected]> Tue, 8 May 2007 23:05:23 +0300
| Newsgroups | gmane.comp.documentation.synopsis |
|---|---|
| Message-ID | <[email protected]> |
On 5/8/07, Stefan Seefeld <[email protected]> wrote: > Understood. Taking this very high-level description, I would express it > like this in Synopsis: > > A code-translating processor takes an AST (or similar) as input, and > generates some new AST as output. A formatting processor then traverses > the newly generated AST, 'formatting' it into actual code. > > The first processor would need to understand the code mapping, i.e. > understand the boost.python logic, the wrapping, call policies, etc., > and the second processor would encapsulate formatting constraints, i.e. > how the generated code should be laid out, partitioned into files, etc. > > The two processors would be customizable (to differing degrees; for some > aspects a simple parameter is enough, for some you may want to encapsulate > subtasks into classes that can be overridden by users). Basically you are right. > >> The reason I ask is because I can see yet a different interaction between > >> Synopsis and Py++ (and GCCXML, for that matter): > > > > I am curious - what do you mean? > > * The Synopsis pipeline API is what is exposed to users, who then select > and customize Py++ code-generating processors, much as they now select > processors to customize documentation extraction and formatting. > > * Py++ merely uses the Synopsis C++ parser, but without using the pipeline > approach. > > * Synopsis uses alternate C++ parsers (such as GCCXML or Elsa) internally, > and Py++ accesses them through the pipeline API as in the first use case. I have a very different vision of the solution :-). > >> What if Py++ itself used Synopsis' pipeline language (and thus, > >> scripting frontend), > >> to drive the introspection as well as the code generation ? > > > > Good C++ parser is critical for s-2-s translators, but this is not enough. > > pygccxml contains type traits - the functionality very similar to > > boost::type_traits. > > It is a must. > > I'm not sure what you are saying. Type analysis is part of a real C++ parser. > Are you saying type inspection needs to be accessible through the intermediate > representation(s) ? I fully agree. (And in fact the AST does provide some > information about types, though this is clearly something that needs to be worked > on.) Providing information about types and types them self is not enough. The framework should also provide functions, which make easier to analyze types. For example pygccxml has next functions: is_convertible( source, target ) is_integral( some_type ) Thus the code of s-2-s translator is much smaller and more readable. You can see the full list of functions and source code here: http://language-binding.net/pygccxml/apidocs/pygccxml.declarations.type_traits-module.html > > This is the subject I am working right now. I am constructing > > declarations tree ( AST ) from Synopsis and GCC-XML. From my > > experience till now, the trees are very very different. GCCXML > > provides much more information. > > Can you elaborate ? I don't doubt what you are saying, I merely > hope that a concrete list of metadata may help us complete the > Synopsis AST. (Since the existing type analysis is rather rudimentary, > most metadata gets stored as strings, e.g. 'premodifiers', 'postmodifiers'), > so it's impossible to do a true query like 'is this a const member ?' I attached few files: source code, information generated by gccxml and synposis. Even if you say that enumerators has all relevant information the trees are still diffrent: * Synopsis doesn't have "::" global namespace ( module ) * All built-ins are missing - in my case this is not important, but still should be noted. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ _______________________________________________ Synopsis-devel mailing list [email protected] http://lists.fresco.org/cgi-bin/listinfo/synopsis-devel
declarations_enums.hpp
(text/x-c++hdr, 479 B)
// Copyright 2004 Roman Yakovenko.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#ifndef __declarations_enums_hpp__
#define __declarations_enums_hpp__
namespace declarations{ namespace enums{
enum ENumbers{ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 };
class data{
public:
enum EColor{ red, green, blue, black, white };
};
} }
#endif//__declarations_enums_hpp__
synopsis_ast.txt
(text/plain, 389 B)
>python -u "synopsis_reader.py"
file declarations_enums.hpp
('__declarations_enums_hpp__',) Macro
('declarations',) Module
('declarations', 'enums') Module
('declarations', 'enums', 'ENumbers') Enum
('declarations', 'enums', 'data') Class
('declarations', 'enums', 'data', 'EColor') Enum
('EOS',) Builtin
('EOS',) Builtin
('EOS',) Builtin
>Exit code: 0
gccxml_ast.txt
(text/plain, 30.5 KB)
<?xml version="1.0"?>
<GCC_XML cvs_revision="1.114">
<Namespace id="_1" name="::" members="_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 " mangled="_Z2::" demangled="::"/>
<Namespace id="_2" name="std" context="_1" members="" mangled="_Z3std" demangled="std"/>
<Function id="_3" name="__builtin_cpowl" returns="_123" context="_1" location="f0:131" file="f0" line="131" extern="1">
<Argument type="_123" location="f0:131" file="f0" line="131"/>
<Argument type="_123" location="f0:131" file="f0" line="131"/>
</Function>
<Function id="_4" name="__builtin_cpow" returns="_124" context="_1" location="f0:130" file="f0" line="130" extern="1">
<Argument type="_124" location="f0:130" file="f0" line="130"/>
<Argument type="_124" location="f0:130" file="f0" line="130"/>
</Function>
<Function id="_5" name="__builtin_cpowf" returns="_125" context="_1" location="f0:129" file="f0" line="129" extern="1">
<Argument type="_125" location="f0:129" file="f0" line="129"/>
<Argument type="_125" location="f0:129" file="f0" line="129"/>
</Function>
<Function id="_6" name="__builtin_ctanhl" returns="_123" context="_1" location="f0:128" file="f0" line="128" extern="1">
<Argument type="_123" location="f0:128" file="f0" line="128"/>
</Function>
<Function id="_7" name="__builtin_ctanh" returns="_124" context="_1" location="f0:127" file="f0" line="127" extern="1">
<Argument type="_124" location="f0:127" file="f0" line="127"/>
</Function>
<Function id="_8" name="__builtin_ctanhf" returns="_125" context="_1" location="f0:126" file="f0" line="126" extern="1">
<Argument type="_125" location="f0:126" file="f0" line="126"/>
</Function>
<Function id="_9" name="__builtin_ctanl" returns="_123" context="_1" location="f0:125" file="f0" line="125" extern="1">
<Argument type="_123" location="f0:125" file="f0" line="125"/>
</Function>
<Function id="_10" name="__builtin_ctan" returns="_124" context="_1" location="f0:124" file="f0" line="124" extern="1">
<Argument type="_124" location="f0:124" file="f0" line="124"/>
</Function>
<Function id="_11" name="__builtin_ctanf" returns="_125" context="_1" location="f0:123" file="f0" line="123" extern="1">
<Argument type="_125" location="f0:123" file="f0" line="123"/>
</Function>
<Function id="_12" name="__builtin_csqrtl" returns="_123" context="_1" location="f0:122" file="f0" line="122" extern="1">
<Argument type="_123" location="f0:122" file="f0" line="122"/>
</Function>
<Function id="_13" name="__builtin_csqrt" returns="_124" context="_1" location="f0:121" file="f0" line="121" extern="1">
<Argument type="_124" location="f0:121" file="f0" line="121"/>
</Function>
<Function id="_14" name="__builtin_csqrtf" returns="_125" context="_1" location="f0:120" file="f0" line="120" extern="1">
<Argument type="_125" location="f0:120" file="f0" line="120"/>
</Function>
<Function id="_15" name="__builtin_csinhl" returns="_123" context="_1" location="f0:119" file="f0" line="119" extern="1">
<Argument type="_123" location="f0:119" file="f0" line="119"/>
</Function>
<Function id="_16" name="__builtin_csinh" returns="_124" context="_1" location="f0:118" file="f0" line="118" extern="1">
<Argument type="_124" location="f0:118" file="f0" line="118"/>
</Function>
<Function id="_17" name="__builtin_csinhf" returns="_125" context="_1" location="f0:117" file="f0" line="117" extern="1">
<Argument type="_125" location="f0:117" file="f0" line="117"/>
</Function>
<Function id="_18" name="__builtin_csinl" returns="_123" context="_1" location="f0:116" file="f0" line="116" extern="1">
<Argument type="_123" location="f0:116" file="f0" line="116"/>
</Function>
<Function id="_19" name="__builtin_csin" returns="_124" context="_1" location="f0:115" file="f0" line="115" extern="1">
<Argument type="_124" location="f0:115" file="f0" line="115"/>
</Function>
<Function id="_20" name="__builtin_csinf" returns="_125" context="_1" location="f0:114" file="f0" line="114" extern="1">
<Argument type="_125" location="f0:114" file="f0" line="114"/>
</Function>
<Function id="_21" name="__builtin_clogl" returns="_123" context="_1" location="f0:113" file="f0" line="113" extern="1">
<Argument type="_123" location="f0:113" file="f0" line="113"/>
</Function>
<Function id="_22" name="__builtin_clog" returns="_124" context="_1" location="f0:112" file="f0" line="112" extern="1">
<Argument type="_124" location="f0:112" file="f0" line="112"/>
</Function>
<Function id="_23" name="__builtin_clogf" returns="_125" context="_1" location="f0:111" file="f0" line="111" extern="1">
<Argument type="_125" location="f0:111" file="f0" line="111"/>
</Function>
<Function id="_24" name="__builtin_cexpl" returns="_123" context="_1" location="f0:110" file="f0" line="110" extern="1">
<Argument type="_123" location="f0:110" file="f0" line="110"/>
</Function>
<Function id="_25" name="__builtin_cexp" returns="_124" context="_1" location="f0:109" file="f0" line="109" extern="1">
<Argument type="_124" location="f0:109" file="f0" line="109"/>
</Function>
<Function id="_26" name="__builtin_cexpf" returns="_125" context="_1" location="f0:108" file="f0" line="108" extern="1">
<Argument type="_125" location="f0:108" file="f0" line="108"/>
</Function>
<Function id="_27" name="__builtin_ccoshl" returns="_123" context="_1" location="f0:107" file="f0" line="107" extern="1">
<Argument type="_123" location="f0:107" file="f0" line="107"/>
</Function>
<Function id="_28" name="__builtin_ccosh" returns="_124" context="_1" location="f0:106" file="f0" line="106" extern="1">
<Argument type="_124" location="f0:106" file="f0" line="106"/>
</Function>
<Function id="_29" name="__builtin_ccoshf" returns="_125" context="_1" location="f0:105" file="f0" line="105" extern="1">
<Argument type="_125" location="f0:105" file="f0" line="105"/>
</Function>
<Function id="_30" name="__builtin_ccosl" returns="_123" context="_1" location="f0:104" file="f0" line="104" extern="1">
<Argument type="_123" location="f0:104" file="f0" line="104"/>
</Function>
<Function id="_31" name="__builtin_ccos" returns="_124" context="_1" location="f0:103" file="f0" line="103" extern="1">
<Argument type="_124" location="f0:103" file="f0" line="103"/>
</Function>
<Function id="_32" name="__builtin_ccosf" returns="_125" context="_1" location="f0:102" file="f0" line="102" extern="1">
<Argument type="_125" location="f0:102" file="f0" line="102"/>
</Function>
<Function id="_33" name="__builtin_popcountll" returns="_126" context="_1" location="f0:101" file="f0" line="101" extern="1">
<Argument type="_127" location="f0:101" file="f0" line="101"/>
</Function>
<Function id="_34" name="__builtin_popcountl" returns="_126" context="_1" location="f0:100" file="f0" line="100" extern="1">
<Argument type="_128" location="f0:100" file="f0" line="100"/>
</Function>
<Function id="_35" name="__builtin_popcount" returns="_126" context="_1" location="f0:99" file="f0" line="99" extern="1">
<Argument type="_126" location="f0:99" file="f0" line="99"/>
</Function>
<Function id="_36" name="__builtin_ctzll" returns="_126" context="_1" location="f0:98" file="f0" line="98" extern="1">
<Argument type="_127" location="f0:98" file="f0" line="98"/>
</Function>
<Function id="_37" name="__builtin_ctzl" returns="_126" context="_1" location="f0:97" file="f0" line="97" extern="1">
<Argument type="_128" location="f0:97" file="f0" line="97"/>
</Function>
<Function id="_38" name="__builtin_ctz" returns="_126" context="_1" location="f0:96" file="f0" line="96" extern="1">
<Argument type="_126" location="f0:96" file="f0" line="96"/>
</Function>
<Function id="_39" name="__builtin_cargl" returns="_129" context="_1" location="f0:95" file="f0" line="95" extern="1">
<Argument type="_123" location="f0:95" file="f0" line="95"/>
</Function>
<Function id="_40" name="__builtin_carg" returns="_130" context="_1" location="f0:94" file="f0" line="94" extern="1">
<Argument type="_124" location="f0:94" file="f0" line="94"/>
</Function>
<Function id="_41" name="__builtin_cargf" returns="_131" context="_1" location="f0:93" file="f0" line="93" extern="1">
<Argument type="_125" location="f0:93" file="f0" line="93"/>
</Function>
<Function id="_42" name="__builtin_cabsl" returns="_129" context="_1" location="f0:92" file="f0" line="92" extern="1">
<Argument type="_123" location="f0:92" file="f0" line="92"/>
</Function>
<Function id="_43" name="__builtin_cabs" returns="_130" context="_1" location="f0:91" file="f0" line="91" extern="1">
<Argument type="_124" location="f0:91" file="f0" line="91"/>
</Function>
<Function id="_44" name="__builtin_cabsf" returns="_131" context="_1" location="f0:90" file="f0" line="90" extern="1">
<Argument type="_125" location="f0:90" file="f0" line="90"/>
</Function>
<Function id="_45" name="__builtin_tanl" returns="_129" context="_1" location="f0:89" file="f0" line="89" extern="1">
<Argument type="_129" location="f0:89" file="f0" line="89"/>
</Function>
<Function id="_46" name="__builtin_tanhl" returns="_129" context="_1" location="f0:88" file="f0" line="88" extern="1">
<Argument type="_129" location="f0:88" file="f0" line="88"/>
</Function>
<Function id="_47" name="__builtin_tanhf" returns="_131" context="_1" location="f0:87" file="f0" line="87" extern="1">
<Argument type="_131" location="f0:87" file="f0" line="87"/>
</Function>
<Function id="_48" name="__builtin_tanh" returns="_130" context="_1" location="f0:86" file="f0" line="86" extern="1">
<Argument type="_130" location="f0:86" file="f0" line="86"/>
</Function>
<Function id="_49" name="__builtin_tanf" returns="_131" context="_1" location="f0:85" file="f0" line="85" extern="1">
<Argument type="_131" location="f0:85" file="f0" line="85"/>
</Function>
<Function id="_50" name="__builtin_tan" returns="_130" context="_1" location="f0:84" file="f0" line="84" extern="1">
<Argument type="_130" location="f0:84" file="f0" line="84"/>
</Function>
<Function id="_51" name="__builtin_sinhl" returns="_129" context="_1" location="f0:79" file="f0" line="79" extern="1">
<Argument type="_129" location="f0:79" file="f0" line="79"/>
</Function>
<Function id="_52" name="__builtin_sinhf" returns="_131" context="_1" location="f0:78" file="f0" line="78" extern="1">
<Argument type="_131" location="f0:78" file="f0" line="78"/>
</Function>
<Function id="_53" name="__builtin_sinh" returns="_130" context="_1" location="f0:77" file="f0" line="77" extern="1">
<Argument type="_130" location="f0:77" file="f0" line="77"/>
</Function>
<Function id="_54" name="__builtin_powil" returns="_129" context="_1" location="f0:74" file="f0" line="74" extern="1">
<Argument type="_129" location="f0:74" file="f0" line="74"/>
<Argument type="_126" location="f0:74" file="f0" line="74"/>
</Function>
<Function id="_55" name="__builtin_powif" returns="_131" context="_1" location="f0:73" file="f0" line="73" extern="1">
<Argument type="_131" location="f0:73" file="f0" line="73"/>
<Argument type="_126" location="f0:73" file="f0" line="73"/>
</Function>
<Function id="_56" name="__builtin_powi" returns="_130" context="_1" location="f0:72" file="f0" line="72" extern="1">
<Argument type="_130" location="f0:72" file="f0" line="72"/>
<Argument type="_126" location="f0:72" file="f0" line="72"/>
</Function>
<Function id="_57" name="__builtin_powl" returns="_129" context="_1" location="f0:71" file="f0" line="71" extern="1">
<Argument type="_129" location="f0:71" file="f0" line="71"/>
<Argument type="_129" location="f0:71" file="f0" line="71"/>
</Function>
<Function id="_58" name="__builtin_powf" returns="_131" context="_1" location="f0:70" file="f0" line="70" extern="1">
<Argument type="_131" location="f0:70" file="f0" line="70"/>
<Argument type="_131" location="f0:70" file="f0" line="70"/>
</Function>
<Function id="_59" name="__builtin_modfl" returns="_129" context="_1" location="f0:69" file="f0" line="69" extern="1">
<Argument type="_129" location="f0:69" file="f0" line="69"/>
<Argument type="_132" location="f0:69" file="f0" line="69"/>
</Function>
<Function id="_60" name="__builtin_modff" returns="_131" context="_1" location="f0:68" file="f0" line="68" extern="1">
<Argument type="_131" location="f0:68" file="f0" line="68"/>
<Argument type="_133" location="f0:68" file="f0" line="68"/>
</Function>
<Function id="_61" name="__builtin_log10l" returns="_129" context="_1" location="f0:65" file="f0" line="65" extern="1">
<Argument type="_129" location="f0:65" file="f0" line="65"/>
</Function>
<Function id="_62" name="__builtin_log10f" returns="_131" context="_1" location="f0:64" file="f0" line="64" extern="1">
<Argument type="_131" location="f0:64" file="f0" line="64"/>
</Function>
<Function id="_63" name="__builtin_log10" returns="_130" context="_1" location="f0:63" file="f0" line="63" extern="1">
<Argument type="_130" location="f0:63" file="f0" line="63"/>
</Function>
<Function id="_64" name="__builtin_ldexpl" returns="_129" context="_1" location="f0:61" file="f0" line="61" extern="1">
<Argument type="_129" location="f0:61" file="f0" line="61"/>
<Argument type="_126" location="f0:61" file="f0" line="61"/>
</Function>
<Function id="_65" name="__builtin_ldexpf" returns="_131" context="_1" location="f0:60" file="f0" line="60" extern="1">
<Argument type="_131" location="f0:60" file="f0" line="60"/>
<Argument type="_126" location="f0:60" file="f0" line="60"/>
</Function>
<Function id="_66" name="__builtin_ldexp" returns="_130" context="_1" location="f0:59" file="f0" line="59" extern="1">
<Argument type="_130" location="f0:59" file="f0" line="59"/>
<Argument type="_126" location="f0:59" file="f0" line="59"/>
</Function>
<Function id="_67" name="__builtin_frexpl" returns="_129" context="_1" location="f0:58" file="f0" line="58" extern="1">
<Argument type="_129" location="f0:58" file="f0" line="58"/>
<Argument type="_134" location="f0:58" file="f0" line="58"/>
</Function>
<Function id="_68" name="__builtin_frexpf" returns="_131" context="_1" location="f0:57" file="f0" line="57" extern="1">
<Argument type="_131" location="f0:57" file="f0" line="57"/>
<Argument type="_134" location="f0:57" file="f0" line="57"/>
</Function>
<Function id="_69" name="__builtin_frexp" returns="_130" context="_1" location="f0:56" file="f0" line="56" extern="1">
<Argument type="_130" location="f0:56" file="f0" line="56"/>
<Argument type="_134" location="f0:56" file="f0" line="56"/>
</Function>
<Function id="_70" name="__builtin_fmodl" returns="_129" context="_1" location="f0:55" file="f0" line="55" extern="1">
<Argument type="_129" location="f0:55" file="f0" line="55"/>
<Argument type="_129" location="f0:55" file="f0" line="55"/>
</Function>
<Function id="_71" name="__builtin_fmodf" returns="_131" context="_1" location="f0:54" file="f0" line="54" extern="1">
<Argument type="_131" location="f0:54" file="f0" line="54"/>
<Argument type="_131" location="f0:54" file="f0" line="54"/>
</Function>
<Function id="_72" name="__builtin_floorl" returns="_129" context="_1" location="f0:53" file="f0" line="53" extern="1">
<Argument type="_129" location="f0:53" file="f0" line="53"/>
</Function>
<Function id="_73" name="__builtin_floorf" returns="_131" context="_1" location="f0:52" file="f0" line="52" extern="1">
<Argument type="_131" location="f0:52" file="f0" line="52"/>
</Function>
<Function id="_74" name="__builtin_floor" returns="_130" context="_1" location="f0:51" file="f0" line="51" extern="1">
<Argument type="_130" location="f0:51" file="f0" line="51"/>
</Function>
<Function id="_75" name="__builtin_coshl" returns="_129" context="_1" location="f0:43" file="f0" line="43" extern="1">
<Argument type="_129" location="f0:43" file="f0" line="43"/>
</Function>
<Function id="_76" name="__builtin_coshf" returns="_131" context="_1" location="f0:42" file="f0" line="42" extern="1">
<Argument type="_131" location="f0:42" file="f0" line="42"/>
</Function>
<Function id="_77" name="__builtin_cosh" returns="_130" context="_1" location="f0:41" file="f0" line="41" extern="1">
<Argument type="_130" location="f0:41" file="f0" line="41"/>
</Function>
<Function id="_78" name="__builtin_ceill" returns="_129" context="_1" location="f0:38" file="f0" line="38" extern="1">
<Argument type="_129" location="f0:38" file="f0" line="38"/>
</Function>
<Function id="_79" name="__builtin_ceilf" returns="_131" context="_1" location="f0:37" file="f0" line="37" extern="1">
<Argument type="_131" location="f0:37" file="f0" line="37"/>
</Function>
<Function id="_80" name="__builtin_ceil" returns="_130" context="_1" location="f0:36" file="f0" line="36" extern="1">
<Argument type="_130" location="f0:36" file="f0" line="36"/>
</Function>
<Function id="_81" name="__builtin_atanl" returns="_129" context="_1" location="f0:35" file="f0" line="35" extern="1">
<Argument type="_129" location="f0:35" file="f0" line="35"/>
</Function>
<Function id="_82" name="__builtin_atanf" returns="_131" context="_1" location="f0:34" file="f0" line="34" extern="1">
<Argument type="_131" location="f0:34" file="f0" line="34"/>
</Function>
<Function id="_83" name="__builtin_atan2l" returns="_129" context="_1" location="f0:33" file="f0" line="33" extern="1">
<Argument type="_129" location="f0:33" file="f0" line="33"/>
<Argument type="_129" location="f0:33" file="f0" line="33"/>
</Function>
<Function id="_84" name="__builtin_atan2f" returns="_131" context="_1" location="f0:32" file="f0" line="32" extern="1">
<Argument type="_131" location="f0:32" file="f0" line="32"/>
<Argument type="_131" location="f0:32" file="f0" line="32"/>
</Function>
<Function id="_85" name="__builtin_atan2" returns="_130" context="_1" location="f0:31" file="f0" line="31" extern="1">
<Argument type="_130" location="f0:31" file="f0" line="31"/>
<Argument type="_130" location="f0:31" file="f0" line="31"/>
</Function>
<Function id="_86" name="__builtin_atan" returns="_130" context="_1" location="f0:30" file="f0" line="30" extern="1">
<Argument type="_130" location="f0:30" file="f0" line="30"/>
</Function>
<Function id="_87" name="__builtin_asinl" returns="_129" context="_1" location="f0:29" file="f0" line="29" extern="1">
<Argument type="_129" location="f0:29" file="f0" line="29"/>
</Function>
<Function id="_88" name="__builtin_asinf" returns="_131" context="_1" location="f0:28" file="f0" line="28" extern="1">
<Argument type="_131" location="f0:28" file="f0" line="28"/>
</Function>
<Function id="_89" name="__builtin_asin" returns="_130" context="_1" location="f0:27" file="f0" line="27" extern="1">
<Argument type="_130" location="f0:27" file="f0" line="27"/>
</Function>
<Function id="_90" name="__builtin_acosl" returns="_129" context="_1" location="f0:26" file="f0" line="26" extern="1">
<Argument type="_129" location="f0:26" file="f0" line="26"/>
</Function>
<Function id="_91" name="__builtin_acosf" returns="_131" context="_1" location="f0:25" file="f0" line="25" extern="1">
<Argument type="_131" location="f0:25" file="f0" line="25"/>
</Function>
<Function id="_92" name="__builtin_acos" returns="_130" context="_1" location="f0:24" file="f0" line="24" extern="1">
<Argument type="_130" location="f0:24" file="f0" line="24"/>
</Function>
<Function id="_93" name="__builtin_expect" returns="_128" context="_1" location="f0:16" file="f0" line="16" extern="1">
<Argument name="EXP" type="_128" location="f0:16" file="f0" line="16"/>
<Argument name="C" type="_128" location="f0:16" file="f0" line="16"/>
</Function>
<Function id="_94" name="__builtin_prefetch" returns="_135" context="_1" location="f0:17" file="f0" line="17" extern="1">
<Argument name="ADDR" type="_136" location="f0:17" file="f0" line="17"/>
<Ellipsis/>
</Function>
<Function id="_95" name="__builtin_return" returns="_135" context="_1" location="f0:13" file="f0" line="13" extern="1" attributes="nothrow noreturn">
<Argument name="RESULT" type="_137" location="f0:13" file="f0" line="13"/>
</Function>
<Function id="_96" name="__builtin_return_address" returns="_137" context="_1" location="f0:14" file="f0" line="14" extern="1">
<Argument name="LEVEL" type="_138" location="f0:14" file="f0" line="14"/>
</Function>
<Function id="_97" name="__builtin_frame_address" returns="_137" context="_1" location="f0:15" file="f0" line="15" extern="1">
<Argument name="LEVEL" type="_138" location="f0:15" file="f0" line="15"/>
</Function>
<Function id="_98" name="__builtin_nansl" returns="_129" context="_1" mangled="nansl" demangled="__int128" location="f0:23" file="f0" line="23" extern="1" attributes="nothrow const">
<Argument name="str" type="_139" location="f0:23" file="f0" line="23"/>
</Function>
<Function id="_99" name="__builtin_nansf" returns="_131" context="_1" mangled="nansf" demangled="__int128" location="f0:22" file="f0" line="22" extern="1" attributes="nothrow const">
<Argument name="str" type="_139" location="f0:22" file="f0" line="22"/>
</Function>
<Function id="_100" name="__builtin_nans" returns="_130" context="_1" mangled="nans" demangled="__int128" location="f0:21" file="f0" line="21" extern="1" attributes="nothrow const">
<Argument name="str" type="_139" location="f0:21" file="f0" line="21"/>
</Function>
<Function id="_101" name="__builtin_infl" returns="_129" context="_1" location="f0:20" file="f0" line="20" extern="1" attributes="nothrow const"/>
<Function id="_102" name="__builtin_inff" returns="_131" context="_1" location="f0:19" file="f0" line="19" extern="1" attributes="nothrow const"/>
<Function id="_103" name="__builtin_inf" returns="_130" context="_1" location="f0:18" file="f0" line="18" extern="1" attributes="nothrow const"/>
<Function id="_104" name="__builtin_logl" returns="_129" context="_1" mangled="logl" demangled="long" location="f0:67" file="f0" line="67" extern="1" attributes="nothrow">
<Argument type="_129" location="f0:67" file="f0" line="67"/>
</Function>
<Function id="_105" name="__builtin_expl" returns="_129" context="_1" mangled="expl" demangled="long double" location="f0:47" file="f0" line="47" extern="1" attributes="nothrow">
<Argument type="_129" location="f0:47" file="f0" line="47"/>
</Function>
<Function id="_106" name="__builtin_cosl" returns="_129" context="_1" mangled="cosl" demangled="char" location="f0:44" file="f0" line="44" extern="1" attributes="nothrow pure">
<Argument type="_129" location="f0:44" file="f0" line="44"/>
</Function>
<Function id="_107" name="__builtin_sinl" returns="_129" context="_1" mangled="sinl" demangled="short" location="f0:80" file="f0" line="80" extern="1" attributes="nothrow pure">
<Argument type="_129" location="f0:80" file="f0" line="80"/>
</Function>
<Function id="_108" name="__builtin_sqrtl" returns="_129" context="_1" mangled="sqrtl" demangled="short" location="f0:83" file="f0" line="83" extern="1" attributes="nothrow">
<Argument type="_129" location="f0:83" file="f0" line="83"/>
</Function>
<Function id="_109" name="__builtin_logf" returns="_131" context="_1" mangled="logf" demangled="long" location="f0:66" file="f0" line="66" extern="1" attributes="nothrow">
<Argument type="_131" location="f0:66" file="f0" line="66"/>
</Function>
<Function id="_110" name="__builtin_expf" returns="_131" context="_1" mangled="expf" demangled="long double" location="f0:46" file="f0" line="46" extern="1" attributes="nothrow">
<Argument type="_131" location="f0:46" file="f0" line="46"/>
</Function>
<Function id="_111" name="__builtin_cosf" returns="_131" context="_1" mangled="cosf" demangled="char" location="f0:40" file="f0" line="40" extern="1" attributes="nothrow pure">
<Argument type="_131" location="f0:40" file="f0" line="40"/>
</Function>
<Function id="_112" name="__builtin_sinf" returns="_131" context="_1" mangled="sinf" demangled="short" location="f0:76" file="f0" line="76" extern="1" attributes="nothrow pure">
<Argument type="_131" location="f0:76" file="f0" line="76"/>
</Function>
<Function id="_113" name="__builtin_sqrtf" returns="_131" context="_1" mangled="sqrtf" demangled="short" location="f0:82" file="f0" line="82" extern="1" attributes="nothrow">
<Argument type="_131" location="f0:82" file="f0" line="82"/>
</Function>
<Function id="_114" name="__builtin_log" returns="_130" context="_1" mangled="log" demangled="long" location="f0:62" file="f0" line="62" extern="1" attributes="nothrow">
<Argument type="_130" location="f0:62" file="f0" line="62"/>
</Function>
<Function id="_115" name="__builtin_exp" returns="_130" context="_1" mangled="exp" demangled="long double" location="f0:45" file="f0" line="45" extern="1" attributes="nothrow">
<Argument type="_130" location="f0:45" file="f0" line="45"/>
</Function>
<Function id="_116" name="__builtin_cos" returns="_130" context="_1" mangled="cos" demangled="char" location="f0:39" file="f0" line="39" extern="1" attributes="nothrow pure">
<Argument type="_130" location="f0:39" file="f0" line="39"/>
</Function>
<Function id="_117" name="__builtin_sin" returns="_130" context="_1" mangled="sin" demangled="short" location="f0:75" file="f0" line="75" extern="1" attributes="nothrow pure">
<Argument type="_130" location="f0:75" file="f0" line="75"/>
</Function>
<Function id="_118" name="__builtin_sqrt" returns="_130" context="_1" mangled="sqrt" demangled="short" location="f0:81" file="f0" line="81" extern="1" attributes="nothrow">
<Argument type="_130" location="f0:81" file="f0" line="81"/>
</Function>
<Function id="_119" name="__builtin_fabsl" returns="_129" context="_1" location="f0:50" file="f0" line="50" extern="1" attributes="nothrow const">
<Argument type="_129" location="f0:50" file="f0" line="50"/>
</Function>
<Function id="_120" name="__builtin_fabsf" returns="_131" context="_1" location="f0:49" file="f0" line="49" extern="1" attributes="nothrow const">
<Argument type="_131" location="f0:49" file="f0" line="49"/>
</Function>
<Function id="_121" name="__builtin_fabs" returns="_130" context="_1" location="f0:48" file="f0" line="48" extern="1" attributes="nothrow const">
<Argument type="_130" location="f0:48" file="f0" line="48"/>
</Function>
<Namespace id="_122" name="declarations" context="_1" members="_140 " mangled="_Z12declarations" demangled="declarations"/>
<FundamentalType id="_123" name="complex long double" size="192" align="32"/>
<FundamentalType id="_124" name="complex double" size="128" align="64"/>
<FundamentalType id="_125" name="complex float" size="64" align="32"/>
<FundamentalType id="_126" name="int" size="32" align="32"/>
<FundamentalType id="_127" name="long long int" size="64" align="64"/>
<FundamentalType id="_128" name="long int" size="32" align="32"/>
<FundamentalType id="_129" name="long double" size="96" align="32"/>
<FundamentalType id="_130" name="double" size="64" align="64"/>
<FundamentalType id="_131" name="float" size="32" align="32"/>
<PointerType id="_132" type="_129" size="32" align="32"/>
<PointerType id="_133" type="_131" size="32" align="32"/>
<PointerType id="_134" type="_126" size="32" align="32"/>
<FundamentalType id="_135" name="void" align="8"/>
<PointerType id="_136" type="_135c" size="32" align="32"/>
<PointerType id="_137" type="_135" size="32" align="32"/>
<FundamentalType id="_138" name="unsigned int" size="32" align="32"/>
<PointerType id="_139" type="_142c" size="32" align="32"/>
<Namespace id="_140" name="enums" context="_122" members="_144 _145 " mangled="_ZN12declarations5enumsE" demangled="declarations::enums"/>
<Class id="_144" name="data" context="_140" mangled="N12declarations5enums4dataE" demangled="declarations::enums::data" location="f1:13" file="f1" line="13" artificial="1" size="8" align="8" members="_146 _147 _148 " bases=""/>
<Enumeration id="_145" name="ENumbers" context="_140" location="f1:11" file="f1" line="11" artificial="1" size="32" align="32">
<EnumValue name="e0" init="0"/>
<EnumValue name="e1" init="1"/>
<EnumValue name="e2" init="2"/>
<EnumValue name="e3" init="3"/>
<EnumValue name="e4" init="4"/>
<EnumValue name="e5" init="5"/>
<EnumValue name="e6" init="6"/>
<EnumValue name="e7" init="7"/>
<EnumValue name="e8" init="8"/>
<EnumValue name="e9" init="9"/>
</Enumeration>
<Enumeration id="_146" name="EColor" context="_144" access="public" location="f1:15" file="f1" line="15" artificial="1" size="32" align="32">
<EnumValue name="red" init="0"/>
<EnumValue name="green" init="1"/>
<EnumValue name="blue" init="2"/>
<EnumValue name="black" init="3"/>
<EnumValue name="white" init="4"/>
</Enumeration>
<Constructor id="_147" name="data" artificial="1" throw="" context="_144" access="public" mangled="_ZN12declarations5enums4dataC1ERKS1_ *INTERNAL* " demangled="declarations::enums::data::data(declarations::enums::data const&)" location="f1:13" file="f1" line="13" inline="1">
<Argument name="_ctor_arg" type="_149" location="f1:13" file="f1" line="13"/>
</Constructor>
<Constructor id="_148" name="data" explicit="1" artificial="1" throw="" context="_144" access="public" mangled="_ZN12declarations5enums4dataC1Ev *INTERNAL* " demangled="declarations::enums::data::data()" location="f1:13" file="f1" line="13" inline="1"/>
<ReferenceType id="_149" type="_144c" size="32" align="32"/>
<FundamentalType id="_142" name="char" size="8" align="8"/>
<CvQualifiedType id="_142c" type="_142" const="1"/>
<CvQualifiedType id="_135c" type="_135" const="1"/>
<CvQualifiedType id="_144c" type="_144" const="1"/>
<File id="f0" name="/home/roman/gccxml/share/gccxml-0.7/GCC/4.1/gccxml_builtins.h"/>
<File id="f1" name="/home/roman/language-binding/sources/pygccxml_dev/unittests/data/declarations_enums.hpp"/>
</GCC_XML>