2
0
mirror of https://github.com/boostorg/tti.git synced 2026-01-25 18:52:17 +00:00
Files
tti/doc/html/index.html
2011-02-10 00:21:18 +00:00

164 lines
9.2 KiB
HTML

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Chapter&#160;1.&#160;The Type Traits Introspection Library 1.0</title>
<link rel="stylesheet" href="boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
<link rel="home" href="index.html" title="Chapter&#160;1.&#160;The Type Traits Introspection Library 1.0">
<link rel="next" href="the_type_traits_introspection_library/tti_reason.html" title="Why the TTI Library ?">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="the_type_traits_introspection_library/tti_reason.html"><img src="images/next.png" alt="Next"></a></div>
<div class="chapter">
<div class="titlepage"><div>
<div><h2 class="title">
<a name="tti"></a>Chapter&#160;1.&#160;The Type Traits Introspection Library 1.0</h2></div>
<div><div class="author"><h3 class="author">
<span class="firstname">Edward</span> <span class="surname">Diener</span>
</h3></div></div>
<div><p class="copyright">Copyright &#169; 2010 Tropic Software East Inc</p></div>
</div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="section"><a href="index.html#the_type_traits_introspection_library.tti_intro">Introduction</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_reason.html">Why the
TTI Library ?</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_terminology.html">Terminology</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_functionality.html">General
Functionality</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_detail.html">Macro
Metafunctions</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_nested_type.html">Nested
Types</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_usingMM.html">Using
the Macro Metafunctions</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_metaclasses.html">Macro
Metafunctions as Metadata</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_metafunctions.html">Nullary
Type Metafunctions</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_usingNTM.html">Using
the Nullary Type Metafunctions</a></span></dt>
<dt><span class="section"><a href="typetraitsintrospection_reference.html">TypeTraitsIntrospection Reference</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="typetraitsintrospection_reference.html#header.boost.tti.TTIntrospection_hpp">Header &lt;boost/tti/TTIntrospection.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
<dt><span class="section"><a href="header/boost/tti/TTIntrospectionTemplate_hpp.html">Header &lt;boost/tti/TTIntrospectionTemplate.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
<dt><span class="section"><a href="header/boost/tti/TTIntrospectionVM_hpp.html">Header &lt;boost/tti/TTIntrospectionVM.hpp&gt;</a></span></dt>
<dd><dl></dl></dd>
</dl></dd>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_tests.html">Testing
TTI</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_history.html">History</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_todo.html">ToDo</a></span></dt>
<dt><span class="section"><a href="the_type_traits_introspection_library/tti_acknowledgments.html">Acknowledgments</a></span></dt>
<dt><span class="section"><a href="index/s16.html">Index</a></span></dt>
</dl>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="the_type_traits_introspection_library.tti_intro"></a><a class="link" href="index.html#the_type_traits_introspection_library.tti_intro" title="Introduction">Introduction</a>
</h2></div></div></div>
<p>
Welcome to the Type Traits Introspection library version 1.2 .
</p>
<p>
The Type Traits Introspection library, or TTI for short, is a library of macros
generating metafunctions, and a set of parallel nullary type metafunctions,
which provide the ability to introspect by name the elements of a type at compile
time.
</p>
<p>
The name of the library is chosen because the library offers compile time functionality
on a type, as does the Boost Type Traits library, and because the functionality
the library offers is the ability to introspect a type about the existence
of a specific element.
</p>
<p>
I use the word "introspect" in a very broad sense here. Normally
language introspection means initially asking for information to be returned
by name, which can then further be used to introspect for more specific information.
In the TTI library one must always supply the name, and use the functionality
for the correct type of inner element to find out if the particular named entity
exists. You may prefer the term "query" instead of "introspection"
to denote what this library does, but I use terminology based on the word "introspect"
throughout this documentation.
</p>
<p>
The functionality of the library may be summed up as:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
Provide the means to introspect a type at compile time using a set of macros.
Each macro takes the name of the type's element and generates a metafunction
which can be subsequently invoked to determine whether or not the element
exists within the type. These metafunctions will be called "macro
metafunctions" in the documentation.
</li>
<li class="listitem">
Provide corresponding metafunctions which can operate on nearly each of
the macro metafunctions generated. These secondary metafunctions provide
nearly the same set of introspection as the macro metafunctions but allow
for an easier to use syntax, where the types being passed are in the form
of nullary metafunctions themselves. They always work with individual types
when specifying function and data syntax rather than a composite type.
These metafunctions are called 'nullary type metafunctions' in the documentation.
</li>
<li class="listitem">
Provide a set of macros for all of the macro metafunctions which create
metafunction classes, so the metafunctions generated by the macro metafunctions
can be passed as metadata. These can be used by the nullary type metafunctions,
and may find other uses for the template metaprogrammer.
</li>
</ul></div>
<p>
The library is a header only library.
</p>
<p>
There are two separate headers in the library, divided depending on whether
or not the library functionality supporting variadic macros is to be used.
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
The main header, which does not require using the library support for variadic
macros, is <code class="computeroutput"><a class="link" href="typetraitsintrospection_reference.html#header.boost.tti.TTIntrospection_hpp" title="Header &lt;boost/tti/TTIntrospection.hpp&gt;">'TTIntrospection.hpp'</a></code>.
This can be used for the vast majority of functionality in the library.
</li>
<li class="listitem">
The secondary header, which uses a very small subset of the library functionality,
providing an alternate use of a particular macro with variadic macro support,
is <code class="computeroutput"><a class="link" href="header/boost/tti/TTIntrospectionVM_hpp.html" title="Header &lt;boost/tti/TTIntrospectionVM.hpp&gt;">'TTIntrospectionVM.hpp'</a></code>.
</li>
</ol></div>
<p>
Furthermore there is a third header file which both of the header files above
include, called 'TTIntrospectionTemplate.hpp' but this should never be included
itself but only through either of the main header files.
</p>
<p>
The library is dependent on Boost PP, Boost MPL, Boost Type Traits, and Boost
Function Types.
</p>
<p>
If the secondary header is used the library is also dependent on the variadic_macro_data
library currently in the sandbox. If the secondary header is not used there
is no need to download the variadic_macro_data library and use it in any way.
</p>
<p>
Since the dependencies of the library are all header only libraries, there
is no need to build anything in order to use the TTI library.
</p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: February 09, 2011 at 23:49:49 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="the_type_traits_introspection_library/tti_reason.html"><img src="images/next.png" alt="Next"></a></div>
</body>
</html>