00001
00002 #ifndef MiX_XPathAtom_h_
00003 #define MiX_XPathAtom_h_
00004
00005 #include "misc.h"
00006
00007 namespace MiX {
00013 template <class charT, class char_traits,class xml_traits>
00014 class XPathAtom {
00015 public:
00016 MiX_Template_Typedef(charT,char_traits,xml_traits);
00017 virtual ~XPathAtom() { };
00018
00019 virtual xpathresult_type execute( nodecontainer_type& el )=0;
00020 };
00021
00022
00027 template <class charT,class char_traits,class xml_traits>
00028 class XPathAtom_Selector : public XPathAtom<charT,char_traits,xml_traits> {
00029 public:
00030 MiX_Template_Typedef(charT, char_traits, xml_traits );
00031 private:
00032 string_type name_;
00033 public:
00034 XPathAtom_Selector( const string_type& src ) : name_(src) { }
00035 ~XPathAtom_Selector( ) { }
00036 xpathresult_type execute( nodecontainer_type& el );
00037 };
00038
00043 template <class charT,class char_traits,class xml_traits>
00044 class XPathAtom_Attribute : public XPathAtom<charT,char_traits,xml_traits> {
00045 public:
00046 MiX_Template_Typedef(charT, char_traits, xml_traits );
00047 private:
00048 string_type name_;
00049 public:
00050 XPathAtom_Attribute( const string_type& src ) : name_(src) { }
00051 ~XPathAtom_Attribute( ) { }
00052 xpathresult_type execute( nodecontainer_type& cur );
00053 };
00054
00055 }
00056
00057 #ifndef MiX_XPathAtom_cpp_
00058 #include "XPathAtom.cpp"
00059 #endif
00060
00061 #endif