- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

# krat_exp_is_finite_app.hxx

    00001 // krat_exp_is_finite_app.hxx: this file is part of the Vaucanson project.
    00002 //
    00003 // Vaucanson, a generic library for finite state machines.
    00004 //
    00005 // Copyright (C) 2001, 2002, 2003, 2004, 2005 The Vaucanson Group.
    00006 //
    00007 // This program is free software; you can redistribute it and/or
    00008 // modify it under the terms of the GNU General Public License
    00009 // as published by the Free Software Foundation; either version 2
    00010 // of the License, or (at your option) any later version.
    00011 //
    00012 // The complete GNU General Public Licence Notice can be found as the
    00013 // `COPYING' file in the root directory.
    00014 //
    00015 // The Vaucanson Group consists of people listed in the `AUTHORS' file.
    00016 //
    00017 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_EXP_IS_FINITE_APP_HXX
    00018 # define VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_EXP_IS_FINITE_APP_HXX
    00019
    00020 # include <utility>
    00021 # include <vaucanson/algebra/implementation/series/krat_exp_pattern.hh>
    00022
    00023 namespace vcsn {
    00024
    00025   template <class Series, class T, class Dispatch>
    00026   class IsFiniteAppMatcher : public algebra::KRatExpMatcher<
    00027     IsFiniteAppMatcher<Series, T, Dispatch>,
    00028     T,
    00029     bool,
    00030     Dispatch
    00031     >
    00032   {
    00033   public:
    00034     typedef IsFiniteAppMatcher<Series, T, Dispatch>     self_t;
    00035     typedef bool                                        return_type;
    00036     INHERIT_CONSTRUCTORS(self_t, T, return_type, Dispatch);
    00037
    00038     IsFiniteAppMatcher()
    00039     {}
    00040
    00041     MATCH__(Product, lhs, rhs)
    00042     {
    00043       return match(lhs) && match(rhs);
    00044     }
    00045     END
    00046
    00047     MATCH__(Sum, lhs, rhs)
    00048     {
    00049       return match(lhs) && match(rhs);
    00050     }
    00051     END
    00052
    00053     MATCH_(Star, node)
    00054     {
    00055       return false;
    00056     }
    00057     END
    00058
    00059     MATCH__(LeftWeight, w, node)
    00060     {
    00061       (void) w;
    00062       return match(node);
    00063     }
    00064     END
    00065
    00066     MATCH__(RightWeight, node, w)
    00067     {
    00068       (void) w;
    00069       return match(node);
    00070     }
    00071     END
    00072
    00073     MATCH_(Constant, m)
    00074     {
    00075       return true;
    00076     }
    00077     END
    00078
    00079     MATCH(Zero)
    00080     {
    00081       return true;
    00082     }
    00083     END
    00084
    00085     MATCH(One)
    00086     {
    00087       return true;
    00088     }
    00089     END
    00090
    00091   };
    00092
    00093 } // vcsn
    00094
    00095 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_EXP_IS_FINITE_APP_HXX