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&amp;)" 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>