00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020 #ifndef SHPROGRAMSET_HPP
00021 #define SHPROGRAMSET_HPP
00022
00023 #include <list>
00024 #include <map>
00025 #include "ShProgramNode.hpp"
00026
00027 namespace SH {
00028
00029 class ShBackend;
00030 class ShBackendSet;
00031 class ShProgram;
00032
00033 class
00034 SH_DLLEXPORT ShProgramSet : public ShRefCountable {
00035 public:
00036 ShProgramSet();
00037 explicit ShProgramSet(const ShProgram& a);
00038 ShProgramSet(const ShProgram& a, const ShProgram& b);
00039
00040 typedef std::list<ShProgramNodePtr> NodeList;
00041 typedef NodeList::iterator iterator;
00042 typedef NodeList::const_iterator const_iterator;
00043
00044
00045 NodeList::const_iterator begin() const { return m_nodes.begin(); }
00046 NodeList::const_iterator end() const { return m_nodes.end(); }
00047
00048 ShPointer<ShBackendSet> backend_set(const ShPointer<ShBackend>&) const;
00049
00050 private:
00051 NodeList m_nodes;
00052
00053 typedef std::map<ShPointer<ShBackend>, ShPointer<ShBackendSet> > BackendMap;
00054 mutable BackendMap m_backend_sets;
00055
00056
00057 ShProgramSet(const ShProgramSet& other);
00058 ShProgramSet& operator=(const ShProgramSet& other);
00059 };
00060
00061 typedef ShPointer<ShProgramSet> ShProgramSetPtr;
00062 typedef ShPointer<const ShProgramSet> ShProgramSetCPtr;
00063
00064 }
00065
00066 #endif