STLSoft - ... Robust, Lightweight, Cross-platform, Template Software ... ATLSTL - Template Software for the Active Template Library COMSTL - The Standard Template Library meets the Component Object Model .netSTL - Standard Template Library meets the Microsoft.NET Common Language Runtime InetSTL - The Standard Template Library meets WinInet MFCSTL - Template Software for the Microsoft Foundation Classes UNIXSTL - Template Software for the UNIX Operating System WinSTL - where the Standard Template Library meets the Win32 API

Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

range_categories.hpp

Go to the documentation of this file.
00001 /* 
00002  * File:        rangelib/range_categories.h
00003  *
00004  * Purpose:     Range categories.
00005  *
00006  * Created:     4th November 2003
00007  * Updated:     12th September 2004
00008  *
00009  * Home:        http://stlsoft.org/
00010  *
00011  * Copyright (c) 2003-2004, Matthew Wilson and Synesis Software
00012  * All rights reserved.
00013  *
00014  * Redistribution and use in source and binary forms, with or without
00015  * modification, are permitted provided that the following conditions are met:
00016  *
00017  * - Redistributions of source code must retain the above copyright notice, this
00018  *   list of conditions and the following disclaimer.
00019  * - Redistributions in binary form must reproduce the above copyright notice,
00020  *   this list of conditions and the following disclaimer in the documentation
00021  *   and/or other materials provided with the distribution.
00022  * - Neither the name(s) of Matthew Wilson and Synesis Software nor the names of
00023  *   any contributors may be used to endorse or promote products derived from
00024  *   this software without specific prior written permission.
00025  *
00026  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00027  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00028  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00029  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00030  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00031  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00032  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00033  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00034  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00035  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00036  * POSSIBILITY OF SUCH DAMAGE.
00037  *
00038  * 
00039 
00040 
00043 #ifndef STLSOFT_INCL_RANGELIB_HPP_RANGE_CATEGORIES
00044 #define STLSOFT_INCL_RANGELIB_HPP_RANGE_CATEGORIES
00045 
00046 #ifndef __STLSOFT_DOCUMENTATION_SKIP_SECTION
00047 # define STLSOFT_VER_RANGELIB_HPP_RANGE_CATEGORIES_MAJOR      1
00048 # define STLSOFT_VER_RANGELIB_HPP_RANGE_CATEGORIES_MINOR      4
00049 # define STLSOFT_VER_RANGELIB_HPP_RANGE_CATEGORIES_REVISION   1
00050 # define STLSOFT_VER_RANGELIB_HPP_RANGE_CATEGORIES_EDIT       7
00051 #endif /* !__STLSOFT_DOCUMENTATION_SKIP_SECTION */
00052 
00053 /* 
00054  * Includes
00055  */
00056 
00057 #ifndef STLSOFT_INCL_H_STLSOFT
00058 # include <stlsoft.h>                           // Include the STLSoft root header
00059 #endif /* !STLSOFT_INCL_H_STLSOFT */
00060 
00061 /* 
00062  * Namespace
00063  */
00064 
00065 #ifndef _STLSOFT_NO_NAMESPACE
00066 namespace stlsoft
00067 {
00068 #endif /* _STLSOFT_NO_NAMESPACE */
00069 
00070 /* 
00071 
00076 
00077 /* 
00078  * Classes
00079  */
00080 
00082 struct notional_range_tag
00083 {};
00084 
00086 struct iterable_range_tag
00087     : public notional_range_tag
00088 {};
00089 
00091 struct basic_indirect_range_tag
00092 {};
00093 
00095 struct indirect_range_tag
00096     : public basic_indirect_range_tag
00097 {};
00098 
00100 // Unit-testing
00101 
00102 #ifdef STLSOFT_UNITTEST
00103 
00104 namespace unittest
00105 {
00106     ss_bool_t test_rangelib_range_categories(unittest_reporter *r)
00107     {
00108         using stlsoft::unittest::unittest_initialiser;
00109 
00110         ss_bool_t               bSuccess    =   true;
00111 
00112         unittest_initialiser    init(r, "RangeLib", "range_categories", __FILE__);
00113 
00114         // Just check the relationship between the indirect ranges
00115         const indirect_range_tag        irt     =   indirect_range_tag();
00116         basic_indirect_range_tag const  &birt   =   irt;
00117 
00118         STLSOFT_SUPPRESS_UNUSED(birt);
00119 
00120         return bSuccess;
00121     }
00122 
00123     unittest_registrar    unittest_rangelib_range_categories(test_rangelib_range_categories);
00124 
00125 } // namespace unittest
00126 
00127 #endif /* STLSOFT_UNITTEST */
00128 
00129 /* 
00130 
00132 
00133 /* 
00134 
00135 #ifndef _STLSOFT_NO_NAMESPACE
00136 } // namespace stlsoft
00137 #endif /* _STLSOFT_NO_NAMESPACE */
00138 
00139 /* 
00140 
00141 #endif /* !STLSOFT_INCL_RANGELIB_HPP_RANGE_CATEGORIES */
00142 
00143 /* 

STLSoft Libraries documentation © Synesis Software Pty Ltd, 2001-2004