00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _UXSIGSET_HPP_
00019 #define _UXSIGSET_HPP_
00020
00021 namespace Ux {
00022
00023
00024
00025
00026 class Sigset : public sigset_t, public Base {
00027 protected:
00028
00029 public:
00030
00031
00032
00033 Sigset(void)
00034 {
00035 empty();
00036 }
00037
00038
00039
00040 void add(int signum)
00041 {
00042 if (::sigaddset(this, signum))
00043 throw Error(errno);
00044 }
00045
00046
00047
00048 void del(int signum)
00049 {
00050 if (::sigdelset(this, signum))
00051 throw Error(errno);
00052 }
00053
00054
00055
00056 void empty(void)
00057 {
00058 if (::sigemptyset(this))
00059 throw Error(errno);
00060 }
00061
00062
00063
00064 void fill(void)
00065 {
00066 if (::sigfillset(this))
00067 throw Error(errno);
00068 }
00069
00070
00071
00072 bool ismember(int signum) const
00073 {
00074 int r;
00075
00076 if ((r = ::sigismember(this, signum)) == -1)
00077 throw Error(errno);
00078 return r == 1;
00079 }
00080
00081
00082
00083 void pending(void)
00084 {
00085 if (::sigpending(this) == -1)
00086 throw Error(errno);
00087 }
00088 };
00089 }
00090
00091 #endif // _UXSIGSET_HPP_