<!-- Copyright 2008 Lubomir Bourdev and Hailin Jin

     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)
  -->

<!--
    Copyright 2005-2007 Adobe Systems Incorporated
    Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
    or a copy at http://stlab.adobe.com/licenses.html)

    Some files are held under additional license.
    Please see "http://stlab.adobe.com/licenses.html" for more information.
-->

<!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" lang="en" xml:lang="en">

<head>
    <TITLE>Generic Image Library: xxx_is_basic</TITLE>
    <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ISO-8859-1"/>
    <LINK TYPE="text/css" REL="stylesheet" HREF="adobe_source.css"/>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" style='width: 100%; margin: 0; padding: 0'><tr>
<td width="100%" valign="top" style='padding-left: 10px; padding-right: 10px; padding-bottom: 10px'>
<div class="qindex"><a class="qindex" href="index.html">Modules</a> 
                  | <a class="qindex" href="classes.html">Alphabetical List</a> 
                  | <a class="qindex" href="annotated.html">Class List</a> 
                  | <a class="qindex" href="dirs.html">Directories</a> 
                  | <a class="qindex" href="files.html">File List</a> 
                  | <a class="qindex" href="../index.html">GIL Home Page</a> 
</div>
<!-- End Header -->
<!-- Generated by Doxygen 1.5.6 -->
<div class="contents">
<h1>xxx_is_basic<br>
<small>
[<a class="el" href="g_i_l_0217.html">Type Analysis Metafunctions</a>]</small>
</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Determines if GIL constructs are basic. Basic constructs are the ones that can be generated with the type factory methods <a class="el" href="g_i_l_0604.html" title="Returns the type of a homogeneous pixel reference given the channel type, layout...">pixel_reference_type</a>, <a class="el" href="g_i_l_0552.html" title="Returns the type of a homogeneous iterator given the channel type, layout, whether...">iterator_type</a>, <a class="el" href="g_i_l_0573.html" title="Returns the type of a homogeneous locator given the channel type, layout, whether...">locator_type</a>, <a class="el" href="g_i_l_0633.html" title="Returns the type of a homogeneous view given the channel type, layout, whether it...">view_type</a> and <a class="el" href="g_i_l_0540.html" title="Returns the type of a homogeneous image given the channel type, layout, and whether...">image_type</a> They can be mutable/immutable, planar/interleaved, step/nonstep. They must use GIL-provided models. 
<p>
TYPE ANALYSIS METAFUNCTIONS Predicate metafunctions determining properties of GIL types 
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0601.html">pixel_reference_is_basic</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines if a given <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> reference is basic Basic references must use <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">gil::pixel</a>&amp; (if interleaved), <a class="el" href="g_i_l_0611.html" title="A reference proxy to a planar pixel. Models: HomogeneousColorBaseConcept, HomogeneousPixelConcept...">gil::planar_pixel_reference</a> (if planar). They must use the standard constness rules.  <a href="g_i_l_0601.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0549.html">iterator_is_basic</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines if a given <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> iterator is basic Basic iterators must use <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">gil::pixel</a> (if interleaved), <a class="el" href="g_i_l_0609.html" title="An iterator over planar pixels. Models HomogeneousColorBaseConcept, PixelIteratorConcept...">gil::planar_pixel_iterator</a> (if planar) and <a class="el" href="g_i_l_0046.html" title="Iterator with dynamically specified step in memory units (bytes or bits). Models...">gil::memory_based_step_iterator</a> (if step). They must use the standard constness rules.  <a href="g_i_l_0549.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0568.html">locator_is_basic</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines if a given locator is basic. A basic locator is memory-based and has basic x_iterator and y_iterator.  <a href="g_i_l_0568.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0628.html">view_is_basic</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Basic views must be over basic locators.  <a href="g_i_l_0628.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0538.html">image_is_basic</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Basic images must use basic views and std::allocator of char.  <a href="g_i_l_0538.html#_details">More...</a><br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:17 2009 for Generic Image Library by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
