attributes_bis.hh

00001 // Copyright (C) 2006  EPITA Research and Development Laboratory
00002 //
00003 // This file is part of the Olena Library.  This library is free
00004 // software; you can redistribute it and/or modify it under the terms
00005 // of the GNU General Public License version 2 as published by the
00006 // Free Software Foundation.
00007 //
00008 // This library is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 // General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU General Public License
00014 // along with this library; see the file COPYING.  If not, write to
00015 // the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00016 // Boston, MA 02110-1301, USA.
00017 //
00018 // As a special exception, you may use this file as part of a free
00019 // software library without restriction.  Specifically, if other files
00020 // instantiate templates or use macros or inline functions from this
00021 // file, or you compile this file and link it with other files to
00022 // produce an executable, this file does not by itself cause the
00023 // resulting executable to be covered by the GNU General Public
00024 // License.  This exception does not however invalidate any other
00025 // reasons why the executable file might be covered by the GNU General
00026 // Public License.
00027 
00028 #ifndef OLENA_LRDE_UFMT_ATTRIBUTES_BIS_HH
00029 # define OLENA_LRDE_UFMT_ATTRIBUTES_BIS_HH
00030 
00031 
00032 
00033 namespace oln
00034 {
00035 
00036   namespace lrde
00037   {
00038 
00039     namespace ufmt
00040     {
00041 
00042 
00043       struct longest_leaf_path_t // longest path to a leaf
00044       {
00045         typedef longest_leaf_path_t self_t;
00046 
00047         template <class I, class P>
00048         void init(const I&, const P&)
00049         {
00050           value = 0;
00051         }
00052         template <class I, class P>
00053         void insert(const I& f, const P& p)
00054         {
00055           // FIXME: Broken assertion.
00056 //        assert(f[p] == h);
00057         }
00058         void embrace(const self_t& rhs)
00059         {
00060           // FIXME: Broken assertion.
00061 //        assert(rhs.h > h);
00062           if (rhs.value + 1 > value)
00063             value = rhs.value + 1;
00064         }
00065         operator unsigned() const
00066         {
00067           return value;
00068         }
00069 
00070       private:
00071         unsigned value;
00072       };
00073 
00074 
00075     } // end of namespace oln::lrde::ufmt
00076 
00077   } // end of namespace oln::lrde
00078 
00079 } // end of namespace oln
00080 
00081 
00082 #endif // ! OLENA_LRDE_UFMT_ATTRIBUTES_BIS_HH

Generated on Tue Feb 20 20:18:28 2007 for Olena by  doxygen 1.5.1