• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List

props.hh

00001 // Copyright (C) 2008, 2009 EPITA Research and Development Laboratory (LRDE)
00002 //
00003 // This file is part of Olena.
00004 //
00005 // Olena is free software: you can redistribute it and/or modify it under
00006 // the terms of the GNU General Public License as published by the Free
00007 // Software Foundation, version 2 of the License.
00008 //
00009 // Olena is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU General Public License
00015 // along with Olena.  If not, see <http://www.gnu.org/licenses/>.
00016 //
00017 // As a special exception, you may use this file as part of a free
00018 // software project without restriction.  Specifically, if other files
00019 // instantiate templates or use macros or inline functions from this
00020 // file, or you compile this file and link it with other files to produce
00021 // an executable, this file does not by itself cause the resulting
00022 // executable to be covered by the GNU General Public License.  This
00023 // exception does not however invalidate any other reasons why the
00024 // executable file might be covered by the GNU General Public License.
00025 
00026 #ifndef MLN_TRAIT_SITE_SET_PROPS_HH
00027 # define MLN_TRAIT_SITE_SET_PROPS_HH
00028 
00037 # include <string>
00038 # include <mln/trait/undef.hh>
00039 
00040 
00041 
00042 //  Properties of site sets.
00043 //  ========================
00044 
00045 //  nsites:   /any/
00046 //              |
00047 //              + -- unknown
00048 //              |
00049 //              + -- known
00050 
00051 //  bbox:     /any/
00052 //              |
00053 //              + -- unknown
00054 //              |
00055 //              + -- /known/
00056 //                     |
00057 //                     + -- lazy
00058 //                     |
00059 //                     + -- straight
00060 
00061 //  contents: /any/
00062 //              |
00063 //              + -- fixed
00064 //              |
00065 //              + -- /dynamic/
00066 //                     |
00067 //                     + -- growing
00068 //                     |
00069 //                     + -- free
00070 
00071 //  arity:    /any/
00072 //              |
00073 //              + -- unique
00074 //              |
00075 //              + -- multiple
00076 
00077 
00078 namespace mln
00079 {
00080 
00081   namespace trait
00082   {
00083 
00084     namespace site_set
00085     {
00086 
00087 
00089       struct nsites
00090       {
00092         struct any { protected: any() {} };
00093 
00097         struct unknown : any { std::string name() const { return "nsites::unknown"; } };
00098 
00102         struct known   : any { std::string name() const { return "nsites::known"; } };
00103       };
00104 
00105 
00107       struct bbox
00108       {
00110         struct any { protected: any() {} };
00111 
00117         struct unknown : any { std::string name() const { return "bbox::unknown"; } };
00118 
00125         struct known   : any { protected: known() {} };
00126 
00129         struct lazy     : known { std::string name() const { return "bbox::lazy"; } };
00130 
00133         struct straight : known { std::string name() const { return "bbox::straight"; } };
00134       };
00135 
00136 
00138       struct contents
00139       {
00141         struct any { protected: any() {} };
00142         struct fixed   : any     { std::string name() const { return "contents::fixed"; } };
00143         struct dynamic : any { protected: dynamic() {} };
00144         struct growing : dynamic { std::string name() const { return "contents::growing"; } };
00145         struct free    : dynamic { std::string name() const { return "contents::free"; } };
00146       };
00147 
00150       struct arity
00151       {
00153         struct any { protected: any() {} };
00154         struct unique   : any { std::string name() const { return "arity::unique"; } };
00155         struct multiple : any { std::string name() const { return "arity::multiple"; } };
00156       };
00157 
00158 
00159       // FIXME: support = psite::support
00160 
00161 
00162     } // end of namespace mln::trait::site_set
00163 
00164   } // end of namespace mln::trait
00165 
00166 
00167 } // end of namespace mln
00168 
00169 
00170 #endif // ! MLN_TRAIT_SITE_SET_PROPS_HH

Generated on Tue Oct 4 2011 15:24:20 for Milena (Olena) by  doxygen 1.7.1