00001 #ifndef node_h
00002 #define node_h
00003
00004 #include "menusystem.h"
00005
00007 class MenuSystem::Node
00008 {
00009 public:
00010 MenuBase tag;
00011 Node *parent;
00012
00013 typedef std::list<Node*> node_list;
00014 typedef std::list<Node*>::iterator node_list_it;
00015
00016 node_list childs;
00017
00018 std::string path;
00019 std::string subdir;
00020
00021 Node( Node *parent, MenuBase tag );
00022
00024 bool is_item() const { return "item" == tag.get_tag_type(); }
00025
00027 bool is_menu() const { return "menu" == tag.get_tag_type(); }
00028
00030 void add_child( Node *node );
00031
00033 bool find_node( std::string path, Node *&node );
00034
00036 bool find_node_rec( std::string path, Node *parent, Node *&node );
00037
00039
00040 bool find_node_rec( std::string path, Node *&node )
00041 { return find_node_rec( path, this, node ); }
00042 };
00043
00044
00045 #endif