mirror of
https://github.com/boostorg/tti.git
synced 2026-01-25 18:52:17 +00:00
164 lines
9.2 KiB
HTML
164 lines
9.2 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
|
<title>Chapter 1. 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 1. 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 1. 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 © 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 <boost/tti/TTIntrospection.hpp></a></span></dt>
|
|
<dd><dl></dl></dd>
|
|
<dt><span class="section"><a href="header/boost/tti/TTIntrospectionTemplate_hpp.html">Header <boost/tti/TTIntrospectionTemplate.hpp></a></span></dt>
|
|
<dd><dl></dl></dd>
|
|
<dt><span class="section"><a href="header/boost/tti/TTIntrospectionVM_hpp.html">Header <boost/tti/TTIntrospectionVM.hpp></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 <boost/tti/TTIntrospection.hpp>">'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 <boost/tti/TTIntrospectionVM.hpp>">'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>
|