00001 00028 #ifndef ASYNC_AUDIO_SELECTOR_INCLUDED 00029 #define ASYNC_AUDIO_SELECTOR_INCLUDED 00030 00031 00032 /**************************************************************************** 00033 * 00034 * System Includes 00035 * 00036 ****************************************************************************/ 00037 00038 #include <map> 00039 00040 00041 /**************************************************************************** 00042 * 00043 * Project Includes 00044 * 00045 ****************************************************************************/ 00046 00047 #include <AsyncAudioSource.h> 00048 00049 00050 /**************************************************************************** 00051 * 00052 * Local Includes 00053 * 00054 ****************************************************************************/ 00055 00056 00057 00058 /**************************************************************************** 00059 * 00060 * Forward declarations 00061 * 00062 ****************************************************************************/ 00063 00064 00065 00066 /**************************************************************************** 00067 * 00068 * Namespace 00069 * 00070 ****************************************************************************/ 00071 00072 namespace Async 00073 { 00074 00075 00076 /**************************************************************************** 00077 * 00078 * Forward declarations of classes inside of the declared namespace 00079 * 00080 ****************************************************************************/ 00081 00082 00083 00084 /**************************************************************************** 00085 * 00086 * Defines & typedefs 00087 * 00088 ****************************************************************************/ 00089 00090 00091 00092 /**************************************************************************** 00093 * 00094 * Exported Global Variables 00095 * 00096 ****************************************************************************/ 00097 00098 00099 00100 /**************************************************************************** 00101 * 00102 * Class definitions 00103 * 00104 ****************************************************************************/ 00105 00114 class AudioSelector : public AudioSource 00115 { 00116 public: 00120 AudioSelector(void); 00121 00125 ~AudioSelector(void); 00126 00131 void addSource(AudioSource *source); 00132 00137 void removeSource(AudioSource *source); 00138 00144 void setSelectionPrio(AudioSource *source, int prio); 00145 00151 void enableAutoSelect(AudioSource *source, int prio); 00152 00157 void disableAutoSelect(AudioSource *source); 00158 00165 bool autoSelectEnabled(AudioSource *source); 00166 00171 void selectSource(AudioSource *source); 00172 00173 00174 protected: 00175 00176 private: 00177 class Branch; 00178 typedef std::map<Async::AudioSource *, Branch *> BranchMap; 00179 class NullBranch; 00180 00181 BranchMap branch_map; 00182 NullBranch *null_branch; 00183 00184 AudioSelector(const AudioSelector&); 00185 AudioSelector& operator=(const AudioSelector&); 00186 void selectBranch(Branch *branch); 00187 00188 friend class Branch; 00189 00190 }; /* class AudioSelector */ 00191 00192 00193 } /* namespace */ 00194 00195 #endif /* ASYNC_AUDIO_SELECTOR_INCLUDED */ 00196 00197 00198 00199 /* 00200 * This file has not been truncated 00201 */ 00202