chore: use nullptr where possible in place of NULL

This commit is contained in:
sithlord48 2025-04-27 15:39:23 -04:00 committed by Nick Bolton
parent 60dc4c0cd8
commit 63d65bb47b
140 changed files with 1116 additions and 1101 deletions

View file

@ -26,7 +26,7 @@ int main(int argc, char **argv)
ArchMiscWindows::guardRuntimeVersion(); ArchMiscWindows::guardRuntimeVersion();
// record window instance for tray icon, etc // record window instance for tray icon, etc
ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL)); ArchMiscWindows::setInstanceWin32(GetModuleHandle(nullptr));
#endif #endif
Arch arch; Arch arch;

View file

@ -44,7 +44,7 @@ int main(int argc, char **argv)
QCoreApplication m(argc, argv); QCoreApplication m(argc, argv);
m.deleteLater(); m.deleteLater();
ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL)); ArchMiscWindows::setInstanceWin32(GetModuleHandle(nullptr));
#endif #endif
Arch arch; Arch arch;

View file

@ -123,7 +123,7 @@ int main(int argc, char *argv[])
"Please drag %1 to the Applications folder, " "Please drag %1 to the Applications folder, "
"and open it from there." "and open it from there."
); );
QMessageBox::information(NULL, kAppName, msgBody.arg(kAppName)); QMessageBox::information(nullptr, kAppName, msgBody.arg(kAppName));
return 1; return 1;
} }
@ -159,7 +159,7 @@ bool checkMacAssistiveDevices()
const void *keys[] = {kAXTrustedCheckOptionPrompt}; const void *keys[] = {kAXTrustedCheckOptionPrompt};
const void *trueValue[] = {kCFBooleanTrue}; const void *trueValue[] = {kCFBooleanTrue};
CFDictionaryRef options = CFDictionaryCreate(NULL, keys, trueValue, 1, NULL, NULL); CFDictionaryRef options = CFDictionaryCreate(nullptr, keys, trueValue, 1, nullptr, nullptr);
bool result = AXIsProcessTrustedWithOptions(options); bool result = AXIsProcessTrustedWithOptions(options);
CFRelease(options); CFRelease(options);

View file

@ -26,7 +26,7 @@ int main(int argc, char **argv)
ArchMiscWindows::guardRuntimeVersion(); ArchMiscWindows::guardRuntimeVersion();
// record window instance for tray icon, etc // record window instance for tray icon, etc
ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL)); ArchMiscWindows::setInstanceWin32(GetModuleHandle(nullptr));
#endif #endif
Arch arch; Arch arch;

View file

@ -15,11 +15,11 @@
// Arch // Arch
// //
Arch *Arch::s_instance = NULL; Arch *Arch::s_instance = nullptr;
Arch::Arch() Arch::Arch()
{ {
assert(s_instance == NULL); assert(s_instance == nullptr);
s_instance = this; s_instance = this;
} }
@ -42,6 +42,6 @@ void Arch::init()
Arch *Arch::getInstance() Arch *Arch::getInstance()
{ {
assert(s_instance != NULL); assert(s_instance != nullptr);
return s_instance; return s_instance;
} }

View file

@ -34,7 +34,7 @@ public:
\c commandLine should \b not include the name of program as the \c commandLine should \b not include the name of program as the
first argument. If \c allUsers is true then the daemon will be first argument. If \c allUsers is true then the daemon will be
installed to start at boot time, otherwise it will be installed to installed to start at boot time, otherwise it will be installed to
start when the current user logs in. If \p dependencies is not NULL start when the current user logs in. If \p dependencies is not nullptr
then it's a concatenation of NUL terminated other daemon names then it's a concatenation of NUL terminated other daemon names
followed by a NUL; the daemon will be configured to startup after followed by a NUL; the daemon will be configured to startup after
the listed daemons. Throws an \c XArchDaemon exception on failure. the listed daemons. Throws an \c XArchDaemon exception on failure.

View file

@ -247,7 +247,7 @@ public:
//! Set the interrupt handler //! Set the interrupt handler
/*! /*!
Sets the function to call on receipt of an external interrupt. Sets the function to call on receipt of an external interrupt.
By default and when \p func is NULL, the main thread is cancelled. By default and when \p func is nullptr, the main thread is cancelled.
*/ */
virtual void setSignalHandler(ESignal, SignalFunc func, void *userData) = 0; virtual void setSignalHandler(ESignal, SignalFunc func, void *userData) = 0;

View file

@ -149,10 +149,10 @@ public:
/*! /*!
Accepts a connection on socket \c s, returning a new socket for the Accepts a connection on socket \c s, returning a new socket for the
connection and filling in \c addr with the address of the remote connection and filling in \c addr with the address of the remote
end. \c addr may be NULL if the remote address isn't required. end. \c addr may be nullptr if the remote address isn't required.
The original socket \c s is unaffected and remains in the listening The original socket \c s is unaffected and remains in the listening
state. The new socket shares most of the properties of \c s except state. The new socket shares most of the properties of \c s except
it's not in the listening state and it's connected. Returns NULL it's not in the listening state and it's connected. Returns nullptr
if there are no pending connection requests. if there are no pending connection requests.
*/ */
virtual ArchSocket acceptSocket(ArchSocket s, ArchNetAddress *addr) = 0; virtual ArchSocket acceptSocket(ArchSocket s, ArchNetAddress *addr) = 0;

View file

@ -13,7 +13,7 @@
#include <cstdlib> #include <cstdlib>
#include <cstring> #include <cstring>
static ArchMutex s_mutex = NULL; static ArchMutex s_mutex = nullptr;
// //
// use C library non-reentrant multibyte conversion with mutex // use C library non-reentrant multibyte conversion with mutex
@ -21,9 +21,9 @@ static ArchMutex s_mutex = NULL;
IArchString::~IArchString() IArchString::~IArchString()
{ {
if (s_mutex != NULL) { if (s_mutex != nullptr) {
ARCH->closeMutex(s_mutex); ARCH->closeMutex(s_mutex);
s_mutex = NULL; s_mutex = nullptr;
} }
} }
@ -32,18 +32,18 @@ int IArchString::convStringWCToMB(char *dst, const wchar_t *src, uint32_t n, boo
ptrdiff_t len = 0; ptrdiff_t len = 0;
bool dummyErrors; bool dummyErrors;
if (errors == NULL) { if (errors == nullptr) {
errors = &dummyErrors; errors = &dummyErrors;
} }
*errors = false; *errors = false;
if (s_mutex == NULL) { if (s_mutex == nullptr) {
s_mutex = ARCH->newMutex(); s_mutex = ARCH->newMutex();
} }
ARCH->lockMutex(s_mutex); ARCH->lockMutex(s_mutex);
if (dst == NULL) { if (dst == nullptr) {
char dummy[MB_LEN_MAX]; char dummy[MB_LEN_MAX];
const wchar_t *scan = src; const wchar_t *scan = src;
for (; n > 0; --n) { for (; n > 0; --n) {
@ -90,18 +90,18 @@ int IArchString::convStringMBToWC(wchar_t *dst, const char *src, uint32_t n, boo
wchar_t dummy; wchar_t dummy;
bool dummyErrors; bool dummyErrors;
if (errors == NULL) { if (errors == nullptr) {
errors = &dummyErrors; errors = &dummyErrors;
} }
*errors = false; *errors = false;
if (s_mutex == NULL) { if (s_mutex == nullptr) {
s_mutex = ARCH->newMutex(); s_mutex = ARCH->newMutex();
} }
ARCH->lockMutex(s_mutex); ARCH->lockMutex(s_mutex);
if (dst == NULL) { if (dst == nullptr) {
const char *scan = src; const char *scan = src;
while (n > 0) { while (n > 0) {
ptrdiff_t mblen = mbtowc(&dummy, scan, n); ptrdiff_t mblen = mbtowc(&dummy, scan, n);

View file

@ -49,7 +49,7 @@ int execSelfNonDaemonized()
bool alreadyDaemonized() bool alreadyDaemonized()
{ {
return getenv("_DESKFLOW_DAEMONIZED") != NULL; return getenv("_DESKFLOW_DAEMONIZED") != nullptr;
} }
#endif #endif

View file

@ -70,13 +70,13 @@ public:
ArchThreadImpl::ArchThreadImpl() ArchThreadImpl::ArchThreadImpl()
: m_refCount(1), : m_refCount(1),
m_id(0), m_id(0),
m_func(NULL), m_func(nullptr),
m_userData(NULL), m_userData(nullptr),
m_cancel(false), m_cancel(false),
m_cancelling(false), m_cancelling(false),
m_exited(false), m_exited(false),
m_result(NULL), m_result(nullptr),
m_networkData(NULL) m_networkData(nullptr)
{ {
// do nothing // do nothing
} }
@ -85,18 +85,18 @@ ArchThreadImpl::ArchThreadImpl()
// ArchMultithreadPosix // ArchMultithreadPosix
// //
ArchMultithreadPosix *ArchMultithreadPosix::s_instance = NULL; ArchMultithreadPosix *ArchMultithreadPosix::s_instance = nullptr;
ArchMultithreadPosix::ArchMultithreadPosix() : m_newThreadCalled(false), m_nextID(0) ArchMultithreadPosix::ArchMultithreadPosix() : m_newThreadCalled(false), m_nextID(0)
{ {
assert(s_instance == NULL); assert(s_instance == nullptr);
s_instance = this; s_instance = this;
// no signal handlers // no signal handlers
for (size_t i = 0; i < kNUM_SIGNALS; ++i) { for (size_t i = 0; i < kNUM_SIGNALS; ++i) {
m_signalFunc[i] = NULL; m_signalFunc[i] = nullptr;
m_signalUserData[i] = NULL; m_signalUserData[i] = nullptr;
} }
// create mutex for thread list // create mutex for thread list
@ -121,25 +121,25 @@ ArchMultithreadPosix::ArchMultithreadPosix() : m_newThreadCalled(false), m_nextI
act.sa_flags = 0; act.sa_flags = 0;
#endif #endif
act.sa_handler = &threadCancel; act.sa_handler = &threadCancel;
sigaction(SIGWAKEUP, &act, NULL); sigaction(SIGWAKEUP, &act, nullptr);
// set desired signal dispositions. let SIGWAKEUP through but // set desired signal dispositions. let SIGWAKEUP through but
// ignore SIGPIPE (we'll handle EPIPE). // ignore SIGPIPE (we'll handle EPIPE).
sigset_t sigset; sigset_t sigset;
sigemptyset(&sigset); sigemptyset(&sigset);
sigaddset(&sigset, SIGWAKEUP); sigaddset(&sigset, SIGWAKEUP);
pthread_sigmask(SIG_UNBLOCK, &sigset, NULL); pthread_sigmask(SIG_UNBLOCK, &sigset, nullptr);
sigemptyset(&sigset); sigemptyset(&sigset);
sigaddset(&sigset, SIGPIPE); sigaddset(&sigset, SIGPIPE);
pthread_sigmask(SIG_BLOCK, &sigset, NULL); pthread_sigmask(SIG_BLOCK, &sigset, nullptr);
} }
ArchMultithreadPosix::~ArchMultithreadPosix() ArchMultithreadPosix::~ArchMultithreadPosix()
{ {
assert(s_instance != NULL); assert(s_instance != nullptr);
closeMutex(m_threadMutex); closeMutex(m_threadMutex);
s_instance = NULL; s_instance = nullptr;
} }
void ArchMultithreadPosix::setNetworkDataForCurrentThread(void *data) void ArchMultithreadPosix::setNetworkDataForCurrentThread(void *data)
@ -166,7 +166,7 @@ ArchMultithreadPosix *ArchMultithreadPosix::getInstance()
ArchCond ArchMultithreadPosix::newCondVar() ArchCond ArchMultithreadPosix::newCondVar()
{ {
ArchCondImpl *cond = new ArchCondImpl; ArchCondImpl *cond = new ArchCondImpl;
int status = pthread_cond_init(&cond->m_cond, NULL); int status = pthread_cond_init(&cond->m_cond, nullptr);
(void)status; (void)status;
assert(status == 0); assert(status == 0);
return cond; return cond;
@ -214,7 +214,7 @@ bool ArchMultithreadPosix::waitCondVar(ArchCond cond, ArchMutex mutex, double ti
// get final time // get final time
struct timeval now; struct timeval now;
gettimeofday(&now, NULL); gettimeofday(&now, nullptr);
struct timespec finalTime; struct timespec finalTime;
finalTime.tv_sec = now.tv_sec; finalTime.tv_sec = now.tv_sec;
finalTime.tv_nsec = now.tv_usec * 1000; finalTime.tv_nsec = now.tv_usec * 1000;
@ -312,7 +312,7 @@ void ArchMultithreadPosix::unlockMutex(ArchMutex mutex)
ArchThread ArchMultithreadPosix::newThread(ThreadFunc func, void *data) ArchThread ArchMultithreadPosix::newThread(ThreadFunc func, void *data)
{ {
assert(func != NULL); assert(func != nullptr);
// initialize signal handler. we do this here instead of the // initialize signal handler. we do this here instead of the
// constructor so we can avoid daemonizing (using fork()) // constructor so we can avoid daemonizing (using fork())
@ -336,7 +336,7 @@ ArchThread ArchMultithreadPosix::newThread(ThreadFunc func, void *data)
thread->m_userData = data; thread->m_userData = data;
// create the thread. pthread_create() on RedHat 7.2 smp fails // create the thread. pthread_create() on RedHat 7.2 smp fails
// if passed a NULL attr so use a default attr. // if passed a nullptr attr so use a default attr.
pthread_attr_t attr; pthread_attr_t attr;
int status = pthread_attr_init(&attr); int status = pthread_attr_init(&attr);
if (status == 0) { if (status == 0) {
@ -348,7 +348,7 @@ ArchThread ArchMultithreadPosix::newThread(ThreadFunc func, void *data)
if (status != 0) { if (status != 0) {
// failed to start thread so clean up // failed to start thread so clean up
delete thread; delete thread;
thread = NULL; thread = nullptr;
} else { } else {
// add thread to list // add thread to list
insert(thread); insert(thread);
@ -368,18 +368,18 @@ ArchThread ArchMultithreadPosix::newCurrentThread()
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
ArchThreadImpl *thread = find(pthread_self()); ArchThreadImpl *thread = find(pthread_self());
unlockMutex(m_threadMutex); unlockMutex(m_threadMutex);
assert(thread != NULL); assert(thread != nullptr);
return thread; return thread;
} }
void ArchMultithreadPosix::closeThread(ArchThread thread) void ArchMultithreadPosix::closeThread(ArchThread thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// decrement ref count and clean up thread if no more references // decrement ref count and clean up thread if no more references
if (--thread->m_refCount == 0) { if (--thread->m_refCount == 0) {
// detach from thread (unless it's the main thread) // detach from thread (unless it's the main thread)
if (thread->m_func != NULL) { if (thread->m_func != nullptr) {
pthread_detach(thread->m_thread); pthread_detach(thread->m_thread);
} }
@ -402,7 +402,7 @@ ArchThread ArchMultithreadPosix::copyThread(ArchThread thread)
void ArchMultithreadPosix::cancelThread(ArchThread thread) void ArchMultithreadPosix::cancelThread(ArchThread thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// set cancel and wakeup flags if thread can be cancelled // set cancel and wakeup flags if thread can be cancelled
bool wakeup = false; bool wakeup = false;
@ -421,7 +421,7 @@ void ArchMultithreadPosix::cancelThread(ArchThread thread)
void ArchMultithreadPosix::setPriorityOfThread(ArchThread thread, int /*n*/) void ArchMultithreadPosix::setPriorityOfThread(ArchThread thread, int /*n*/)
{ {
assert(thread != NULL); assert(thread != nullptr);
// FIXME // FIXME
} }
@ -439,7 +439,7 @@ void ArchMultithreadPosix::testCancelThread()
bool ArchMultithreadPosix::wait(ArchThread target, double timeout) bool ArchMultithreadPosix::wait(ArchThread target, double timeout)
{ {
assert(target != NULL); assert(target != nullptr);
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
@ -528,7 +528,7 @@ void ArchMultithreadPosix::setSignalHandler(ESignal signal, SignalFunc func, voi
void ArchMultithreadPosix::raiseSignal(ESignal signal) void ArchMultithreadPosix::raiseSignal(ESignal signal)
{ {
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
if (m_signalFunc[signal] != NULL) { if (m_signalFunc[signal] != nullptr) {
m_signalFunc[signal](signal, m_signalUserData[signal]); m_signalFunc[signal](signal, m_signalUserData[signal]);
pthread_kill(m_mainThread->m_thread, SIGWAKEUP); pthread_kill(m_mainThread->m_thread, SIGWAKEUP);
} else if (signal == kINTERRUPT || signal == kTERMINATE) { } else if (signal == kINTERRUPT || signal == kTERMINATE) {
@ -552,20 +552,20 @@ void ArchMultithreadPosix::startSignalHandler()
pthread_attr_t attr; pthread_attr_t attr;
int status = pthread_attr_init(&attr); int status = pthread_attr_init(&attr);
if (status == 0) { if (status == 0) {
status = pthread_create(&m_signalThread, &attr, &ArchMultithreadPosix::threadSignalHandler, NULL); status = pthread_create(&m_signalThread, &attr, &ArchMultithreadPosix::threadSignalHandler, nullptr);
pthread_attr_destroy(&attr); pthread_attr_destroy(&attr);
} }
if (status != 0) { if (status != 0) {
// can't create thread to wait for signal so don't block // can't create thread to wait for signal so don't block
// the signals. // the signals.
pthread_sigmask(SIG_UNBLOCK, &oldsigset, NULL); pthread_sigmask(SIG_UNBLOCK, &oldsigset, nullptr);
} }
} }
ArchThreadImpl *ArchMultithreadPosix::find(pthread_t thread) ArchThreadImpl *ArchMultithreadPosix::find(pthread_t thread)
{ {
ArchThreadImpl *impl = findNoRef(thread); ArchThreadImpl *impl = findNoRef(thread);
if (impl != NULL) { if (impl != nullptr) {
refThread(impl); refThread(impl);
} }
return impl; return impl;
@ -579,15 +579,15 @@ ArchThreadImpl *ArchMultithreadPosix::findNoRef(pthread_t thread)
return *index; return *index;
} }
} }
return NULL; return nullptr;
} }
void ArchMultithreadPosix::insert(ArchThreadImpl *thread) void ArchMultithreadPosix::insert(ArchThreadImpl *thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// thread shouldn't already be on the list // thread shouldn't already be on the list
assert(findNoRef(thread->m_thread) == NULL); assert(findNoRef(thread->m_thread) == nullptr);
// set thread id. note that we don't worry about m_nextID // set thread id. note that we don't worry about m_nextID
// wrapping back to 0 and duplicating thread ID's since the // wrapping back to 0 and duplicating thread ID's since the
@ -611,14 +611,14 @@ void ArchMultithreadPosix::erase(ArchThreadImpl *thread)
void ArchMultithreadPosix::refThread(ArchThreadImpl *thread) void ArchMultithreadPosix::refThread(ArchThreadImpl *thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
assert(findNoRef(thread->m_thread) != NULL); assert(findNoRef(thread->m_thread) != nullptr);
++thread->m_refCount; ++thread->m_refCount;
} }
void ArchMultithreadPosix::testCancelThreadImpl(ArchThreadImpl *thread) void ArchMultithreadPosix::testCancelThreadImpl(ArchThreadImpl *thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// update cancel state // update cancel state
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
@ -642,14 +642,14 @@ void *ArchMultithreadPosix::threadFunc(void *vrep)
ArchThreadImpl *thread = static_cast<ArchThreadImpl *>(vrep); ArchThreadImpl *thread = static_cast<ArchThreadImpl *>(vrep);
// setup pthreads // setup pthreads
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, nullptr);
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, nullptr);
// run thread // run thread
s_instance->doThreadFunc(thread); s_instance->doThreadFunc(thread);
// terminate the thread // terminate the thread
return NULL; return nullptr;
} }
void ArchMultithreadPosix::doThreadFunc(ArchThread thread) void ArchMultithreadPosix::doThreadFunc(ArchThread thread)
@ -748,5 +748,5 @@ void *ArchMultithreadPosix::threadSignalHandler(void *)
} }
} }
return NULL; return nullptr;
} }

View file

@ -131,7 +131,7 @@ ArchSocket ArchNetworkBSD::newSocket(EAddressFamily family, ESocketType type)
ArchSocket ArchNetworkBSD::copySocket(ArchSocket s) ArchSocket ArchNetworkBSD::copySocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// ref the socket and return it // ref the socket and return it
ARCH->lockMutex(m_mutex); ARCH->lockMutex(m_mutex);
@ -142,7 +142,7 @@ ArchSocket ArchNetworkBSD::copySocket(ArchSocket s)
void ArchNetworkBSD::closeSocket(ArchSocket s) void ArchNetworkBSD::closeSocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// unref the socket and note if it should be released // unref the socket and note if it should be released
ARCH->lockMutex(m_mutex); ARCH->lockMutex(m_mutex);
@ -165,7 +165,7 @@ void ArchNetworkBSD::closeSocket(ArchSocket s)
void ArchNetworkBSD::closeSocketForRead(ArchSocket s) void ArchNetworkBSD::closeSocketForRead(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
if (shutdown(s->m_fd, 0) == -1) { if (shutdown(s->m_fd, 0) == -1) {
if (errno != ENOTCONN) { if (errno != ENOTCONN) {
@ -176,7 +176,7 @@ void ArchNetworkBSD::closeSocketForRead(ArchSocket s)
void ArchNetworkBSD::closeSocketForWrite(ArchSocket s) void ArchNetworkBSD::closeSocketForWrite(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
if (shutdown(s->m_fd, 1) == -1) { if (shutdown(s->m_fd, 1) == -1) {
if (errno != ENOTCONN) { if (errno != ENOTCONN) {
@ -187,8 +187,8 @@ void ArchNetworkBSD::closeSocketForWrite(ArchSocket s)
void ArchNetworkBSD::bindSocket(ArchSocket s, ArchNetAddress addr) void ArchNetworkBSD::bindSocket(ArchSocket s, ArchNetAddress addr)
{ {
assert(s != NULL); assert(s != nullptr);
assert(addr != NULL); assert(addr != nullptr);
if (bind(s->m_fd, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == -1) { if (bind(s->m_fd, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == -1) {
throwError(errno); throwError(errno);
@ -197,7 +197,7 @@ void ArchNetworkBSD::bindSocket(ArchSocket s, ArchNetAddress addr)
void ArchNetworkBSD::listenOnSocket(ArchSocket s) void ArchNetworkBSD::listenOnSocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// hardcoding backlog // hardcoding backlog
if (listen(s->m_fd, 3) == -1) { if (listen(s->m_fd, 3) == -1) {
@ -207,9 +207,9 @@ void ArchNetworkBSD::listenOnSocket(ArchSocket s)
ArchSocket ArchNetworkBSD::acceptSocket(ArchSocket s, ArchNetAddress *addr) ArchSocket ArchNetworkBSD::acceptSocket(ArchSocket s, ArchNetAddress *addr)
{ {
assert(s != NULL); assert(s != nullptr);
// if user passed NULL in addr then use scratch space // if user passed nullptr in addr then use scratch space
ArchNetAddress dummy; ArchNetAddress dummy;
if (addr == nullptr) { if (addr == nullptr) {
addr = &dummy; addr = &dummy;
@ -258,8 +258,8 @@ ArchSocket ArchNetworkBSD::acceptSocket(ArchSocket s, ArchNetAddress *addr)
bool ArchNetworkBSD::connectSocket(ArchSocket s, ArchNetAddress addr) bool ArchNetworkBSD::connectSocket(ArchSocket s, ArchNetAddress addr)
{ {
assert(s != NULL); assert(s != nullptr);
assert(addr != NULL); assert(addr != nullptr);
if (connect(s->m_fd, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == -1) { if (connect(s->m_fd, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == -1) {
if (errno == EISCONN) { if (errno == EISCONN) {
@ -372,7 +372,7 @@ void ArchNetworkBSD::unblockPollSocket(ArchThread thread)
size_t ArchNetworkBSD::readSocket(ArchSocket s, void *buf, size_t len) size_t ArchNetworkBSD::readSocket(ArchSocket s, void *buf, size_t len)
{ {
assert(s != NULL); assert(s != nullptr);
ssize_t n = read(s->m_fd, buf, len); ssize_t n = read(s->m_fd, buf, len);
if (n == -1) { if (n == -1) {
@ -386,7 +386,7 @@ size_t ArchNetworkBSD::readSocket(ArchSocket s, void *buf, size_t len)
size_t ArchNetworkBSD::writeSocket(ArchSocket s, const void *buf, size_t len) size_t ArchNetworkBSD::writeSocket(ArchSocket s, const void *buf, size_t len)
{ {
assert(s != NULL); assert(s != nullptr);
ssize_t n = write(s->m_fd, buf, len); ssize_t n = write(s->m_fd, buf, len);
if (n == -1) { if (n == -1) {
@ -400,7 +400,7 @@ size_t ArchNetworkBSD::writeSocket(ArchSocket s, const void *buf, size_t len)
void ArchNetworkBSD::throwErrorOnSocket(ArchSocket s) void ArchNetworkBSD::throwErrorOnSocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// get the error from the socket layer // get the error from the socket layer
int err = 0; int err = 0;
@ -435,7 +435,7 @@ void ArchNetworkBSD::setBlockingOnSocket(int fd, bool blocking)
bool ArchNetworkBSD::setNoDelayOnSocket(ArchSocket s, bool noDelay) bool ArchNetworkBSD::setNoDelayOnSocket(ArchSocket s, bool noDelay)
{ {
assert(s != NULL); assert(s != nullptr);
// get old state // get old state
int oflag; int oflag;
@ -455,7 +455,7 @@ bool ArchNetworkBSD::setNoDelayOnSocket(ArchSocket s, bool noDelay)
bool ArchNetworkBSD::setReuseAddrOnSocket(ArchSocket s, bool reuse) bool ArchNetworkBSD::setReuseAddrOnSocket(ArchSocket s, bool reuse)
{ {
assert(s != NULL); assert(s != nullptr);
// get old state // get old state
int oflag; int oflag;
@ -518,7 +518,7 @@ ArchNetAddress ArchNetworkBSD::newAnyAddr(EAddressFamily family)
ArchNetAddress ArchNetworkBSD::copyAddr(ArchNetAddress addr) ArchNetAddress ArchNetworkBSD::copyAddr(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
// allocate and copy address // allocate and copy address
return new ArchNetAddressImpl(*addr); return new ArchNetAddressImpl(*addr);
@ -572,14 +572,14 @@ std::vector<ArchNetAddress> ArchNetworkBSD::nameToAddr(const std::string &name)
void ArchNetworkBSD::closeAddr(ArchNetAddress addr) void ArchNetworkBSD::closeAddr(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
delete addr; delete addr;
} }
std::string ArchNetworkBSD::addrToName(ArchNetAddress addr) std::string ArchNetworkBSD::addrToName(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
// mutexed name lookup (ugh) // mutexed name lookup (ugh)
ARCH->lockMutex(m_mutex); ARCH->lockMutex(m_mutex);
@ -603,7 +603,7 @@ std::string ArchNetworkBSD::addrToName(ArchNetAddress addr)
std::string ArchNetworkBSD::addrToString(ArchNetAddress addr) std::string ArchNetworkBSD::addrToString(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {
@ -631,7 +631,7 @@ std::string ArchNetworkBSD::addrToString(ArchNetAddress addr)
IArchNetwork::EAddressFamily ArchNetworkBSD::getAddrFamily(ArchNetAddress addr) IArchNetwork::EAddressFamily ArchNetworkBSD::getAddrFamily(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (addr->m_addr.ss_family) { switch (addr->m_addr.ss_family) {
case AF_INET: case AF_INET:
@ -646,7 +646,7 @@ IArchNetwork::EAddressFamily ArchNetworkBSD::getAddrFamily(ArchNetAddress addr)
void ArchNetworkBSD::setAddrPort(ArchNetAddress addr, int port) void ArchNetworkBSD::setAddrPort(ArchNetAddress addr, int port)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {
@ -669,7 +669,7 @@ void ArchNetworkBSD::setAddrPort(ArchNetAddress addr, int port)
int ArchNetworkBSD::getAddrPort(ArchNetAddress addr) int ArchNetworkBSD::getAddrPort(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {
@ -690,7 +690,7 @@ int ArchNetworkBSD::getAddrPort(ArchNetAddress addr)
bool ArchNetworkBSD::isAnyAddr(ArchNetAddress addr) bool ArchNetworkBSD::isAnyAddr(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {

View file

@ -70,7 +70,7 @@ void ArchSleepUnix::sleep(double timeout)
timeout2.tv_sec = static_cast<int>(timeLeft); timeout2.tv_sec = static_cast<int>(timeLeft);
timeout2.tv_usec = static_cast<int>(1.0e+6 * (timeLeft - timeout2.tv_sec)); timeout2.tv_usec = static_cast<int>(1.0e+6 * (timeLeft - timeout2.tv_sec));
select( select(
(SELECT_TYPE_ARG1)0, SELECT_TYPE_ARG234 NULL, SELECT_TYPE_ARG234 NULL, SELECT_TYPE_ARG234 NULL, (SELECT_TYPE_ARG1)0, SELECT_TYPE_ARG234 nullptr, SELECT_TYPE_ARG234 nullptr, SELECT_TYPE_ARG234 nullptr,
SELECT_TYPE_ARG5 & timeout2 SELECT_TYPE_ARG5 & timeout2
); );
ARCH->testCancelThread(); ARCH->testCancelThread();

View file

@ -35,6 +35,6 @@ ArchTimeUnix::~ArchTimeUnix()
double ArchTimeUnix::time() double ArchTimeUnix::time()
{ {
struct timeval t; struct timeval t;
gettimeofday(&t, NULL); gettimeofday(&t, nullptr);
return (double)t.tv_sec + 1.0e-6 * (double)t.tv_usec; return (double)t.tv_sec + 1.0e-6 * (double)t.tv_usec;
} }

View file

@ -16,7 +16,7 @@
// ArchDaemonWindows // ArchDaemonWindows
// //
ArchDaemonWindows *ArchDaemonWindows::s_daemon = NULL; ArchDaemonWindows *ArchDaemonWindows::s_daemon = nullptr;
ArchDaemonWindows::ArchDaemonWindows() : m_daemonThreadID(0) ArchDaemonWindows::ArchDaemonWindows() : m_daemonThreadID(0)
{ {
@ -30,20 +30,20 @@ ArchDaemonWindows::~ArchDaemonWindows()
int ArchDaemonWindows::runDaemon(RunFunc runFunc) int ArchDaemonWindows::runDaemon(RunFunc runFunc)
{ {
assert(s_daemon != NULL); assert(s_daemon != nullptr);
return s_daemon->doRunDaemon(runFunc); return s_daemon->doRunDaemon(runFunc);
} }
void ArchDaemonWindows::daemonRunning(bool running) void ArchDaemonWindows::daemonRunning(bool running)
{ {
if (s_daemon != NULL) { if (s_daemon != nullptr) {
s_daemon->doDaemonRunning(running); s_daemon->doDaemonRunning(running);
} }
} }
UINT ArchDaemonWindows::getDaemonQuitMessage() UINT ArchDaemonWindows::getDaemonQuitMessage()
{ {
if (s_daemon != NULL) { if (s_daemon != nullptr) {
return s_daemon->doGetDaemonQuitMessage(); return s_daemon->doGetDaemonQuitMessage();
} else { } else {
return 0; return 0;
@ -52,7 +52,7 @@ UINT ArchDaemonWindows::getDaemonQuitMessage()
void ArchDaemonWindows::daemonFailed(int result) void ArchDaemonWindows::daemonFailed(int result)
{ {
assert(s_daemon != NULL); assert(s_daemon != nullptr);
throw XArchDaemonRunFailed(result); throw XArchDaemonRunFailed(result);
} }
@ -63,8 +63,8 @@ void ArchDaemonWindows::installDaemon(
LOG_DEBUG("installing windows service: %s", name); LOG_DEBUG("installing windows service: %s", name);
// open service manager // open service manager
SC_HANDLE mgr = OpenSCManager(NULL, NULL, GENERIC_WRITE); SC_HANDLE mgr = OpenSCManager(nullptr, nullptr, GENERIC_WRITE);
if (mgr == NULL) { if (mgr == nullptr) {
// can't open service manager // can't open service manager
throw XArchDaemonInstallFailed(new XArchEvalWindows); throw XArchDaemonInstallFailed(new XArchEvalWindows);
} }
@ -72,10 +72,10 @@ void ArchDaemonWindows::installDaemon(
// create the service // create the service
SC_HANDLE service = CreateService( SC_HANDLE service = CreateService(
mgr, name, name, 0, SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START, mgr, name, name, 0, SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL, pathname, NULL, NULL, dependencies, NULL, NULL SERVICE_ERROR_NORMAL, pathname, nullptr, nullptr, dependencies, nullptr, nullptr
); );
if (service == NULL) { if (service == nullptr) {
// can't create service // can't create service
DWORD err = GetLastError(); DWORD err = GetLastError();
if (err != ERROR_SERVICE_EXISTS) { if (err != ERROR_SERVICE_EXISTS) {
@ -93,7 +93,7 @@ void ArchDaemonWindows::installDaemon(
// open the registry key for this service // open the registry key for this service
HKEY key = openNTServicesKey(); HKEY key = openNTServicesKey();
key = ArchMiscWindows::addKey(key, name); key = ArchMiscWindows::addKey(key, name);
if (key == NULL) { if (key == nullptr) {
// can't open key // can't open key
DWORD err = GetLastError(); DWORD err = GetLastError();
try { try {
@ -109,7 +109,7 @@ void ArchDaemonWindows::installDaemon(
// set command line // set command line
key = ArchMiscWindows::addKey(key, _T("Parameters")); key = ArchMiscWindows::addKey(key, _T("Parameters"));
if (key == NULL) { if (key == nullptr) {
// can't open key // can't open key
DWORD err = GetLastError(); DWORD err = GetLastError();
ArchMiscWindows::closeKey(key); ArchMiscWindows::closeKey(key);
@ -133,21 +133,21 @@ void ArchDaemonWindows::uninstallDaemon(const char *name)
// remove parameters for this service. ignore failures. // remove parameters for this service. ignore failures.
HKEY key = openNTServicesKey(); HKEY key = openNTServicesKey();
key = ArchMiscWindows::openKey(key, name); key = ArchMiscWindows::openKey(key, name);
if (key != NULL) { if (key != nullptr) {
ArchMiscWindows::deleteKey(key, _T("Parameters")); ArchMiscWindows::deleteKey(key, _T("Parameters"));
ArchMiscWindows::closeKey(key); ArchMiscWindows::closeKey(key);
} }
// open service manager // open service manager
SC_HANDLE mgr = OpenSCManager(NULL, NULL, GENERIC_WRITE); SC_HANDLE mgr = OpenSCManager(nullptr, nullptr, GENERIC_WRITE);
if (mgr == NULL) { if (mgr == nullptr) {
// can't open service manager // can't open service manager
throw XArchDaemonUninstallFailed(new XArchEvalWindows); throw XArchDaemonUninstallFailed(new XArchEvalWindows);
} }
// open the service. oddly, you must open a service to delete it. // open the service. oddly, you must open a service to delete it.
SC_HANDLE service = OpenService(mgr, name, DELETE | SERVICE_STOP); SC_HANDLE service = OpenService(mgr, name, DELETE | SERVICE_STOP);
if (service == NULL) { if (service == nullptr) {
DWORD err = GetLastError(); DWORD err = GetLastError();
CloseServiceHandle(mgr); CloseServiceHandle(mgr);
if (err != ERROR_SERVICE_DOES_NOT_EXIST) { if (err != ERROR_SERVICE_DOES_NOT_EXIST) {
@ -194,8 +194,8 @@ void ArchDaemonWindows::uninstallDaemon(const char *name)
int ArchDaemonWindows::daemonize(const char *name, DaemonFunc func) int ArchDaemonWindows::daemonize(const char *name, DaemonFunc func)
{ {
assert(name != NULL); assert(name != nullptr);
assert(func != NULL); assert(func != nullptr);
// save daemon function // save daemon function
m_daemonFunc = func; m_daemonFunc = func;
@ -204,27 +204,27 @@ int ArchDaemonWindows::daemonize(const char *name, DaemonFunc func)
SERVICE_TABLE_ENTRY entry[2]; SERVICE_TABLE_ENTRY entry[2];
entry[0].lpServiceName = const_cast<char *>(name); entry[0].lpServiceName = const_cast<char *>(name);
entry[0].lpServiceProc = &ArchDaemonWindows::serviceMainEntry; entry[0].lpServiceProc = &ArchDaemonWindows::serviceMainEntry;
entry[1].lpServiceName = NULL; entry[1].lpServiceName = nullptr;
entry[1].lpServiceProc = NULL; entry[1].lpServiceProc = nullptr;
// hook us up to the service control manager. this won't return // hook us up to the service control manager. this won't return
// (if successful) until the processes have terminated. // (if successful) until the processes have terminated.
s_daemon = this; s_daemon = this;
if (StartServiceCtrlDispatcher(entry) == 0) { if (StartServiceCtrlDispatcher(entry) == 0) {
// StartServiceCtrlDispatcher failed // StartServiceCtrlDispatcher failed
s_daemon = NULL; s_daemon = nullptr;
throw XArchDaemonFailed(new XArchEvalWindows); throw XArchDaemonFailed(new XArchEvalWindows);
} }
s_daemon = NULL; s_daemon = nullptr;
return m_daemonResult; return m_daemonResult;
} }
bool ArchDaemonWindows::canInstallDaemon(const char * /*name*/) bool ArchDaemonWindows::canInstallDaemon(const char * /*name*/)
{ {
// check if we can open service manager for write // check if we can open service manager for write
SC_HANDLE mgr = OpenSCManager(NULL, NULL, GENERIC_WRITE); SC_HANDLE mgr = OpenSCManager(nullptr, nullptr, GENERIC_WRITE);
if (mgr == NULL) { if (mgr == nullptr) {
return false; return false;
} }
CloseServiceHandle(mgr); CloseServiceHandle(mgr);
@ -233,14 +233,14 @@ bool ArchDaemonWindows::canInstallDaemon(const char * /*name*/)
HKEY key = openNTServicesKey(); HKEY key = openNTServicesKey();
ArchMiscWindows::closeKey(key); ArchMiscWindows::closeKey(key);
return (key != NULL); return (key != nullptr);
} }
bool ArchDaemonWindows::isDaemonInstalled(const char *name) bool ArchDaemonWindows::isDaemonInstalled(const char *name)
{ {
// open service manager // open service manager
SC_HANDLE mgr = OpenSCManager(NULL, NULL, GENERIC_READ); SC_HANDLE mgr = OpenSCManager(nullptr, nullptr, GENERIC_READ);
if (mgr == NULL) { if (mgr == nullptr) {
return false; return false;
} }
@ -248,17 +248,17 @@ bool ArchDaemonWindows::isDaemonInstalled(const char *name)
SC_HANDLE service = OpenService(mgr, name, GENERIC_READ); SC_HANDLE service = OpenService(mgr, name, GENERIC_READ);
// clean up // clean up
if (service != NULL) { if (service != nullptr) {
CloseServiceHandle(service); CloseServiceHandle(service);
} }
CloseServiceHandle(mgr); CloseServiceHandle(mgr);
return (service != NULL); return (service != nullptr);
} }
HKEY ArchDaemonWindows::openNTServicesKey() HKEY ArchDaemonWindows::openNTServicesKey()
{ {
static const char *s_keyNames[] = {_T("SYSTEM"), _T("CurrentControlSet"), _T("Services"), NULL}; static const char *s_keyNames[] = {_T("SYSTEM"), _T("CurrentControlSet"), _T("Services"), nullptr};
return ArchMiscWindows::addKey(HKEY_LOCAL_MACHINE, s_keyNames); return ArchMiscWindows::addKey(HKEY_LOCAL_MACHINE, s_keyNames);
} }
@ -279,12 +279,12 @@ bool ArchDaemonWindows::isRunState(DWORD state)
int ArchDaemonWindows::doRunDaemon(RunFunc run) int ArchDaemonWindows::doRunDaemon(RunFunc run)
{ {
// should only be called from DaemonFunc // should only be called from DaemonFunc
assert(m_serviceMutex != NULL); assert(m_serviceMutex != nullptr);
assert(run != NULL); assert(run != nullptr);
// create message queue for this thread // create message queue for this thread
MSG dummy; MSG dummy;
PeekMessage(&dummy, NULL, 0, 0, PM_NOREMOVE); PeekMessage(&dummy, nullptr, 0, 0, PM_NOREMOVE);
int result = 0; int result = 0;
ARCH->lockMutex(m_serviceMutex); ARCH->lockMutex(m_serviceMutex);
@ -348,7 +348,7 @@ void ArchDaemonWindows::setStatus(DWORD state)
void ArchDaemonWindows::setStatus(DWORD state, DWORD step, DWORD waitHint) void ArchDaemonWindows::setStatus(DWORD state, DWORD step, DWORD waitHint)
{ {
assert(s_daemon != NULL); assert(s_daemon != nullptr);
LOG_DEBUG("setting service status: state=%d, step=%d, waitHint=%d", state, step, waitHint); LOG_DEBUG("setting service status: state=%d, step=%d, waitHint=%d", state, step, waitHint);
@ -365,7 +365,7 @@ void ArchDaemonWindows::setStatus(DWORD state, DWORD step, DWORD waitHint)
void ArchDaemonWindows::setStatusError(DWORD error) void ArchDaemonWindows::setStatusError(DWORD error)
{ {
assert(s_daemon != NULL); assert(s_daemon != nullptr);
SERVICE_STATUS status; SERVICE_STATUS status;
status.dwServiceType = SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS; status.dwServiceType = SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS;
@ -413,7 +413,7 @@ void ArchDaemonWindows::serviceMain(DWORD argc, LPTSTR *argvIn)
HKEY key = openNTServicesKey(); HKEY key = openNTServicesKey();
key = ArchMiscWindows::openKey(key, argvIn[0]); key = ArchMiscWindows::openKey(key, argvIn[0]);
key = ArchMiscWindows::openKey(key, _T("Parameters")); key = ArchMiscWindows::openKey(key, _T("Parameters"));
if (key != NULL) { if (key != nullptr) {
commandLine = ArchMiscWindows::readValueString(key, _T("CommandLine")); commandLine = ArchMiscWindows::readValueString(key, _T("CommandLine"));
} }
@ -498,14 +498,14 @@ void WINAPI ArchDaemonWindows::serviceMainEntry(DWORD argc, LPTSTR *argv)
void ArchDaemonWindows::serviceHandler(DWORD ctrl) void ArchDaemonWindows::serviceHandler(DWORD ctrl)
{ {
assert(m_serviceMutex != NULL); assert(m_serviceMutex != nullptr);
assert(m_serviceCondVar != NULL); assert(m_serviceCondVar != nullptr);
ARCH->lockMutex(m_serviceMutex); ARCH->lockMutex(m_serviceMutex);
// ignore request if service is already stopped // ignore request if service is already stopped
if (s_daemon == NULL || m_serviceState == SERVICE_STOPPED) { if (s_daemon == nullptr || m_serviceState == SERVICE_STOPPED) {
if (s_daemon != NULL) { if (s_daemon != nullptr) {
setStatus(m_serviceState); setStatus(m_serviceState);
} }
ARCH->unlockMutex(m_serviceMutex); ARCH->unlockMutex(m_serviceMutex);
@ -560,21 +560,21 @@ void WINAPI ArchDaemonWindows::serviceHandlerEntry(DWORD ctrl)
void ArchDaemonWindows::start(const char *name) void ArchDaemonWindows::start(const char *name)
{ {
// open service manager // open service manager
SC_HANDLE mgr = OpenSCManager(NULL, NULL, GENERIC_READ); SC_HANDLE mgr = OpenSCManager(nullptr, nullptr, GENERIC_READ);
if (mgr == NULL) { if (mgr == nullptr) {
throw XArchDaemonFailed(new XArchEvalWindows()); throw XArchDaemonFailed(new XArchEvalWindows());
} }
// open the service // open the service
SC_HANDLE service = OpenService(mgr, name, SERVICE_START); SC_HANDLE service = OpenService(mgr, name, SERVICE_START);
if (service == NULL) { if (service == nullptr) {
CloseServiceHandle(mgr); CloseServiceHandle(mgr);
throw XArchDaemonFailed(new XArchEvalWindows()); throw XArchDaemonFailed(new XArchEvalWindows());
} }
// start the service // start the service
if (!StartService(service, 0, NULL)) { if (!StartService(service, 0, nullptr)) {
throw XArchDaemonFailed(new XArchEvalWindows()); throw XArchDaemonFailed(new XArchEvalWindows());
} }
} }
@ -582,15 +582,15 @@ void ArchDaemonWindows::start(const char *name)
void ArchDaemonWindows::stop(const char *name) void ArchDaemonWindows::stop(const char *name)
{ {
// open service manager // open service manager
SC_HANDLE mgr = OpenSCManager(NULL, NULL, GENERIC_READ); SC_HANDLE mgr = OpenSCManager(nullptr, nullptr, GENERIC_READ);
if (mgr == NULL) { if (mgr == nullptr) {
throw XArchDaemonFailed(new XArchEvalWindows()); throw XArchDaemonFailed(new XArchEvalWindows());
} }
// open the service // open the service
SC_HANDLE service = OpenService(mgr, name, SERVICE_STOP | SERVICE_QUERY_STATUS); SC_HANDLE service = OpenService(mgr, name, SERVICE_STOP | SERVICE_QUERY_STATUS);
if (service == NULL) { if (service == nullptr) {
CloseServiceHandle(mgr); CloseServiceHandle(mgr);
throw XArchDaemonFailed(new XArchEvalWindows()); throw XArchDaemonFailed(new XArchEvalWindows());
} }

View file

@ -14,7 +14,7 @@
// ArchLogWindows // ArchLogWindows
// //
ArchLogWindows::ArchLogWindows() : m_eventLog(NULL) ArchLogWindows::ArchLogWindows() : m_eventLog(nullptr)
{ {
// do nothing // do nothing
} }
@ -26,16 +26,16 @@ ArchLogWindows::~ArchLogWindows()
void ArchLogWindows::openLog(const char *name) void ArchLogWindows::openLog(const char *name)
{ {
if (m_eventLog == NULL) { if (m_eventLog == nullptr) {
m_eventLog = RegisterEventSource(NULL, name); m_eventLog = RegisterEventSource(nullptr, name);
} }
} }
void ArchLogWindows::closeLog() void ArchLogWindows::closeLog()
{ {
if (m_eventLog != NULL) { if (m_eventLog != nullptr) {
DeregisterEventSource(m_eventLog); DeregisterEventSource(m_eventLog);
m_eventLog = NULL; m_eventLog = nullptr;
} }
} }
@ -46,7 +46,7 @@ void ArchLogWindows::showLog(bool)
void ArchLogWindows::writeLog(ELevel level, const char *msg) void ArchLogWindows::writeLog(ELevel level, const char *msg)
{ {
if (m_eventLog != NULL) { if (m_eventLog != nullptr) {
// convert priority // convert priority
WORD type; WORD type;
switch (level) { switch (level) {
@ -72,9 +72,9 @@ void ArchLogWindows::writeLog(ELevel level, const char *msg)
ReportEvent( ReportEvent(
m_eventLog, type, static_cast<WORD>(level), m_eventLog, type, static_cast<WORD>(level),
0, // event ID 0, // event ID
NULL, 0, nullptr, 0,
(DWORD)strlen(msg) + 1, // raw data size (DWORD)strlen(msg) + 1, // raw data size
NULL, nullptr,
const_cast<char *>(msg) const_cast<char *>(msg)
); // raw data ); // raw data
} }

View file

@ -31,7 +31,7 @@ void errorMessageBox(const char *message, const char *title = "Fatal Error");
std::string getBinaryName() std::string getBinaryName()
{ {
std::array<char, MAX_PATH> buffer; std::array<char, MAX_PATH> buffer;
if (!GetModuleFileNameA(NULL, buffer.data(), MAX_PATH)) { if (!GetModuleFileNameA(nullptr, buffer.data(), MAX_PATH)) {
errorMessageBox("Failed to get binary name."); errorMessageBox("Failed to get binary name.");
abort(); abort();
} }
@ -52,10 +52,10 @@ const std::string s_binaryName = getBinaryName();
// //
DWORD ArchMiscWindows::s_busyState = 0; DWORD ArchMiscWindows::s_busyState = 0;
ArchMiscWindows::STES_t ArchMiscWindows::s_stes = NULL; ArchMiscWindows::STES_t ArchMiscWindows::s_stes = nullptr;
HICON ArchMiscWindows::s_largeIcon = NULL; HICON ArchMiscWindows::s_largeIcon = nullptr;
HICON ArchMiscWindows::s_smallIcon = NULL; HICON ArchMiscWindows::s_smallIcon = nullptr;
HINSTANCE ArchMiscWindows::s_instanceWin32 = NULL; HINSTANCE ArchMiscWindows::s_instanceWin32 = nullptr;
void ArchMiscWindows::init() void ArchMiscWindows::init()
{ {
@ -105,9 +105,9 @@ HKEY ArchMiscWindows::addKey(HKEY key, const TCHAR *const *keyNames)
HKEY ArchMiscWindows::openKey(HKEY key, const TCHAR *keyName, bool create) HKEY ArchMiscWindows::openKey(HKEY key, const TCHAR *keyName, bool create)
{ {
// ignore if parent is NULL // ignore if parent is nullptr
if (key == NULL) { if (key == nullptr) {
return NULL; return nullptr;
} }
// open next key // open next key
@ -115,11 +115,11 @@ HKEY ArchMiscWindows::openKey(HKEY key, const TCHAR *keyName, bool create)
LSTATUS result = RegOpenKeyEx(key, keyName, 0, KEY_WRITE | KEY_QUERY_VALUE, &newKey); LSTATUS result = RegOpenKeyEx(key, keyName, 0, KEY_WRITE | KEY_QUERY_VALUE, &newKey);
if (result != ERROR_SUCCESS && create) { if (result != ERROR_SUCCESS && create) {
DWORD disp; DWORD disp;
result = RegCreateKeyEx(key, keyName, 0, NULL, 0, KEY_WRITE | KEY_QUERY_VALUE, NULL, &newKey, &disp); result = RegCreateKeyEx(key, keyName, 0, nullptr, 0, KEY_WRITE | KEY_QUERY_VALUE, nullptr, &newKey, &disp);
} }
if (result != ERROR_SUCCESS) { if (result != ERROR_SUCCESS) {
RegCloseKey(key); RegCloseKey(key);
return NULL; return nullptr;
} }
// switch to new key // switch to new key
@ -129,7 +129,7 @@ HKEY ArchMiscWindows::openKey(HKEY key, const TCHAR *keyName, bool create)
HKEY ArchMiscWindows::openKey(HKEY key, const TCHAR *const *keyNames, bool create) HKEY ArchMiscWindows::openKey(HKEY key, const TCHAR *const *keyNames, bool create)
{ {
for (size_t i = 0; key != NULL && keyNames[i] != NULL; ++i) { for (size_t i = 0; key != nullptr && keyNames[i] != nullptr; ++i) {
// open next key // open next key
key = openKey(key, keyNames[i], create); key = openKey(key, keyNames[i], create);
} }
@ -138,17 +138,17 @@ HKEY ArchMiscWindows::openKey(HKEY key, const TCHAR *const *keyNames, bool creat
void ArchMiscWindows::closeKey(HKEY key) void ArchMiscWindows::closeKey(HKEY key)
{ {
assert(key != NULL); assert(key != nullptr);
if (key == NULL) if (key == nullptr)
return; return;
RegCloseKey(key); RegCloseKey(key);
} }
void ArchMiscWindows::deleteKey(HKEY key, const TCHAR *name) void ArchMiscWindows::deleteKey(HKEY key, const TCHAR *name)
{ {
assert(key != NULL); assert(key != nullptr);
assert(name != NULL); assert(name != nullptr);
if (key == NULL || name == NULL) if (key == nullptr || name == nullptr)
return; return;
RegDeleteKey(key, name); RegDeleteKey(key, name);
} }
@ -156,7 +156,7 @@ void ArchMiscWindows::deleteKey(HKEY key, const TCHAR *name)
ArchMiscWindows::EValueType ArchMiscWindows::typeOfValue(HKEY key, const TCHAR *name) ArchMiscWindows::EValueType ArchMiscWindows::typeOfValue(HKEY key, const TCHAR *name)
{ {
DWORD type; DWORD type;
LONG result = RegQueryValueEx(key, name, 0, &type, NULL, NULL); LONG result = RegQueryValueEx(key, name, 0, &type, nullptr, nullptr);
if (result != ERROR_SUCCESS) { if (result != ERROR_SUCCESS) {
return kNO_VALUE; return kNO_VALUE;
} }
@ -177,8 +177,8 @@ ArchMiscWindows::EValueType ArchMiscWindows::typeOfValue(HKEY key, const TCHAR *
void ArchMiscWindows::setValue(HKEY key, const TCHAR *name, const std::string &value) void ArchMiscWindows::setValue(HKEY key, const TCHAR *name, const std::string &value)
{ {
assert(key != NULL); assert(key != nullptr);
if (key == NULL) { if (key == nullptr) {
// TODO: throw exception // TODO: throw exception
return; return;
} }
@ -187,8 +187,8 @@ void ArchMiscWindows::setValue(HKEY key, const TCHAR *name, const std::string &v
void ArchMiscWindows::setValue(HKEY key, const TCHAR *name, DWORD value) void ArchMiscWindows::setValue(HKEY key, const TCHAR *name, DWORD value)
{ {
assert(key != NULL); assert(key != nullptr);
if (key == NULL) { if (key == nullptr) {
// TODO: throw exception // TODO: throw exception
return; return;
} }
@ -200,7 +200,7 @@ std::string ArchMiscWindows::readBinaryOrString(HKEY key, const TCHAR *name, DWO
// get the size of the string // get the size of the string
DWORD actualType; DWORD actualType;
DWORD size = 0; DWORD size = 0;
LONG result = RegQueryValueEx(key, name, 0, &actualType, NULL, &size); LONG result = RegQueryValueEx(key, name, 0, &actualType, nullptr, &size);
if (result != ERROR_SUCCESS || actualType != type) { if (result != ERROR_SUCCESS || actualType != type) {
return std::string(); return std::string();
} }
@ -263,12 +263,12 @@ void ArchMiscWindows::removeBusyState(DWORD busyModes)
void ArchMiscWindows::setThreadExecutionState(DWORD busyModes) void ArchMiscWindows::setThreadExecutionState(DWORD busyModes)
{ {
// look up function dynamically so we work on older systems // look up function dynamically so we work on older systems
if (s_stes == NULL) { if (s_stes == nullptr) {
HINSTANCE kernel = LoadLibrary("kernel32.dll"); HINSTANCE kernel = LoadLibrary("kernel32.dll");
if (kernel != NULL) { if (kernel != nullptr) {
s_stes = reinterpret_cast<STES_t>(GetProcAddress(kernel, "SetThreadExecutionState")); s_stes = reinterpret_cast<STES_t>(GetProcAddress(kernel, "SetThreadExecutionState"));
} }
if (s_stes == NULL) { if (s_stes == nullptr) {
s_stes = &ArchMiscWindows::dummySetThreadExecutionState; s_stes = &ArchMiscWindows::dummySetThreadExecutionState;
} }
} }
@ -301,12 +301,12 @@ void ArchMiscWindows::wakeupDisplay()
// We can't use ::setThreadExecutionState here because it sets // We can't use ::setThreadExecutionState here because it sets
// ES_CONTINUOUS, which we don't want. // ES_CONTINUOUS, which we don't want.
if (s_stes == NULL) { if (s_stes == nullptr) {
HINSTANCE kernel = LoadLibrary("kernel32.dll"); HINSTANCE kernel = LoadLibrary("kernel32.dll");
if (kernel != NULL) { if (kernel != nullptr) {
s_stes = reinterpret_cast<STES_t>(GetProcAddress(kernel, "SetThreadExecutionState")); s_stes = reinterpret_cast<STES_t>(GetProcAddress(kernel, "SetThreadExecutionState"));
} }
if (s_stes == NULL) { if (s_stes == nullptr) {
s_stes = &ArchMiscWindows::dummySetThreadExecutionState; s_stes = &ArchMiscWindows::dummySetThreadExecutionState;
} }
} }
@ -394,13 +394,13 @@ BOOL WINAPI ArchMiscWindows::getProcessEntry(PROCESSENTRY32 &entry, DWORD proces
HINSTANCE HINSTANCE
ArchMiscWindows::instanceWin32() ArchMiscWindows::instanceWin32()
{ {
assert(s_instanceWin32 != NULL); assert(s_instanceWin32 != nullptr);
return s_instanceWin32; return s_instanceWin32;
} }
void ArchMiscWindows::setInstanceWin32(HINSTANCE instance) void ArchMiscWindows::setInstanceWin32(HINSTANCE instance)
{ {
assert(instance != NULL); assert(instance != nullptr);
s_instanceWin32 = instance; s_instanceWin32 = instance;
} }

View file

@ -50,16 +50,16 @@ public:
ArchThreadImpl::ArchThreadImpl() ArchThreadImpl::ArchThreadImpl()
: m_refCount(1), : m_refCount(1),
m_thread(NULL), m_thread(nullptr),
m_id(0), m_id(0),
m_func(NULL), m_func(nullptr),
m_userData(NULL), m_userData(nullptr),
m_cancelling(false), m_cancelling(false),
m_result(NULL), m_result(nullptr),
m_networkData(NULL) m_networkData(nullptr)
{ {
m_exit = CreateEvent(NULL, TRUE, FALSE, NULL); m_exit = CreateEvent(nullptr, TRUE, FALSE, nullptr);
m_cancel = CreateEvent(NULL, TRUE, FALSE, NULL); m_cancel = CreateEvent(nullptr, TRUE, FALSE, nullptr);
} }
ArchThreadImpl::~ArchThreadImpl() ArchThreadImpl::~ArchThreadImpl()
@ -72,17 +72,17 @@ ArchThreadImpl::~ArchThreadImpl()
// ArchMultithreadWindows // ArchMultithreadWindows
// //
ArchMultithreadWindows *ArchMultithreadWindows::s_instance = NULL; ArchMultithreadWindows *ArchMultithreadWindows::s_instance = nullptr;
ArchMultithreadWindows::ArchMultithreadWindows() ArchMultithreadWindows::ArchMultithreadWindows()
{ {
assert(s_instance == NULL); assert(s_instance == nullptr);
s_instance = this; s_instance = this;
// no signal handlers // no signal handlers
for (size_t i = 0; i < kNUM_SIGNALS; ++i) { for (size_t i = 0; i < kNUM_SIGNALS; ++i) {
m_signalFunc[i] = NULL; m_signalFunc[i] = nullptr;
m_signalUserData[i] = NULL; m_signalUserData[i] = nullptr;
} }
// create mutex for thread list // create mutex for thread list
@ -91,14 +91,14 @@ ArchMultithreadWindows::ArchMultithreadWindows()
// create thread for calling (main) thread and add it to our // create thread for calling (main) thread and add it to our
// list. no need to lock the mutex since we're the only thread. // list. no need to lock the mutex since we're the only thread.
m_mainThread = new ArchThreadImpl; m_mainThread = new ArchThreadImpl;
m_mainThread->m_thread = NULL; m_mainThread->m_thread = nullptr;
m_mainThread->m_id = GetCurrentThreadId(); m_mainThread->m_id = GetCurrentThreadId();
insert(m_mainThread); insert(m_mainThread);
} }
ArchMultithreadWindows::~ArchMultithreadWindows() ArchMultithreadWindows::~ArchMultithreadWindows()
{ {
s_instance = NULL; s_instance = nullptr;
// clean up thread list // clean up thread list
for (ThreadList::iterator index = m_threadList.begin(); index != m_threadList.end(); ++index) { for (ThreadList::iterator index = m_threadList.begin(); index != m_threadList.end(); ++index) {
@ -142,8 +142,8 @@ ArchMultithreadWindows *ArchMultithreadWindows::getInstance()
ArchCond ArchMultithreadWindows::newCondVar() ArchCond ArchMultithreadWindows::newCondVar()
{ {
ArchCondImpl *cond = new ArchCondImpl; ArchCondImpl *cond = new ArchCondImpl;
cond->m_events[ArchCondImpl::kSignal] = CreateEvent(NULL, FALSE, FALSE, NULL); cond->m_events[ArchCondImpl::kSignal] = CreateEvent(nullptr, FALSE, FALSE, nullptr);
cond->m_events[ArchCondImpl::kBroadcast] = CreateEvent(NULL, TRUE, FALSE, NULL); cond->m_events[ArchCondImpl::kBroadcast] = CreateEvent(nullptr, TRUE, FALSE, nullptr);
cond->m_waitCountMutex = newMutex(); cond->m_waitCountMutex = newMutex();
cond->m_waitCount = 0; cond->m_waitCount = 0;
return cond; return cond;
@ -272,14 +272,14 @@ ArchThread ArchMultithreadWindows::newThread(ThreadFunc func, void *data)
// create thread // create thread
unsigned int id = 0; unsigned int id = 0;
thread->m_thread = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, threadFunc, (void *)thread, 0, &id)); thread->m_thread = reinterpret_cast<HANDLE>(_beginthreadex(nullptr, 0, threadFunc, (void *)thread, 0, &id));
thread->m_id = static_cast<DWORD>(id); thread->m_id = static_cast<DWORD>(id);
// check if thread was started // check if thread was started
if (thread->m_thread == 0) { if (thread->m_thread == 0) {
// failed to start thread so clean up // failed to start thread so clean up
delete thread; delete thread;
thread = NULL; thread = nullptr;
} else { } else {
// add thread to list // add thread to list
insert(thread); insert(thread);
@ -299,18 +299,18 @@ ArchThread ArchMultithreadWindows::newCurrentThread()
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
ArchThreadImpl *thread = find(GetCurrentThreadId()); ArchThreadImpl *thread = find(GetCurrentThreadId());
unlockMutex(m_threadMutex); unlockMutex(m_threadMutex);
assert(thread != NULL); assert(thread != nullptr);
return thread; return thread;
} }
void ArchMultithreadWindows::closeThread(ArchThread thread) void ArchMultithreadWindows::closeThread(ArchThread thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// decrement ref count and clean up thread if no more references // decrement ref count and clean up thread if no more references
if (--thread->m_refCount == 0) { if (--thread->m_refCount == 0) {
// close the handle (main thread has a NULL handle) // close the handle (main thread has a nullptr handle)
if (thread->m_thread != NULL) { if (thread->m_thread != nullptr) {
CloseHandle(thread->m_thread); CloseHandle(thread->m_thread);
} }
@ -333,7 +333,7 @@ ArchThread ArchMultithreadWindows::copyThread(ArchThread thread)
void ArchMultithreadWindows::cancelThread(ArchThread thread) void ArchMultithreadWindows::cancelThread(ArchThread thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// set cancel flag // set cancel flag
SetEvent(thread->m_cancel); SetEvent(thread->m_cancel);
@ -380,7 +380,7 @@ void ArchMultithreadWindows::setPriorityOfThread(ArchThread thread, int n)
#endif #endif
static const size_t s_pBase = 8; // index of normal priority static const size_t s_pBase = 8; // index of normal priority
assert(thread != NULL); assert(thread != nullptr);
size_t index; size_t index;
if (n > 0 && s_pBase < (size_t)n) { if (n > 0 && s_pBase < (size_t)n) {
@ -410,7 +410,7 @@ void ArchMultithreadWindows::testCancelThread()
bool ArchMultithreadWindows::wait(ArchThread target, double timeout) bool ArchMultithreadWindows::wait(ArchThread target, double timeout)
{ {
assert(target != NULL); assert(target != nullptr);
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
@ -502,7 +502,7 @@ void ArchMultithreadWindows::setSignalHandler(ESignal signal, SignalFunc func, v
void ArchMultithreadWindows::raiseSignal(ESignal signal) void ArchMultithreadWindows::raiseSignal(ESignal signal)
{ {
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
if (m_signalFunc[signal] != NULL) { if (m_signalFunc[signal] != nullptr) {
m_signalFunc[signal](signal, m_signalUserData[signal]); m_signalFunc[signal](signal, m_signalUserData[signal]);
ARCH->unblockPollSocket(m_mainThread); ARCH->unblockPollSocket(m_mainThread);
} else if (signal == kINTERRUPT || signal == kTERMINATE) { } else if (signal == kINTERRUPT || signal == kTERMINATE) {
@ -514,7 +514,7 @@ void ArchMultithreadWindows::raiseSignal(ESignal signal)
ArchThreadImpl *ArchMultithreadWindows::find(DWORD id) ArchThreadImpl *ArchMultithreadWindows::find(DWORD id)
{ {
ArchThreadImpl *impl = findNoRef(id); ArchThreadImpl *impl = findNoRef(id);
if (impl != NULL) { if (impl != nullptr) {
refThread(impl); refThread(impl);
} }
return impl; return impl;
@ -523,13 +523,13 @@ ArchThreadImpl *ArchMultithreadWindows::find(DWORD id)
ArchThreadImpl *ArchMultithreadWindows::findNoRef(DWORD id) ArchThreadImpl *ArchMultithreadWindows::findNoRef(DWORD id)
{ {
ArchThreadImpl *impl = findNoRefOrCreate(id); ArchThreadImpl *impl = findNoRefOrCreate(id);
if (impl == NULL) { if (impl == nullptr) {
// create thread for calling thread which isn't in our list and // create thread for calling thread which isn't in our list and
// add it to the list. this won't normally happen but it can if // add it to the list. this won't normally happen but it can if
// the system calls us under a new thread, like it does when we // the system calls us under a new thread, like it does when we
// run as a service. // run as a service.
impl = new ArchThreadImpl; impl = new ArchThreadImpl;
impl->m_thread = NULL; impl->m_thread = nullptr;
impl->m_id = GetCurrentThreadId(); impl->m_id = GetCurrentThreadId();
insert(impl); insert(impl);
} }
@ -544,15 +544,15 @@ ArchThreadImpl *ArchMultithreadWindows::findNoRefOrCreate(DWORD id)
return *index; return *index;
} }
} }
return NULL; return nullptr;
} }
void ArchMultithreadWindows::insert(ArchThreadImpl *thread) void ArchMultithreadWindows::insert(ArchThreadImpl *thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// thread shouldn't already be on the list // thread shouldn't already be on the list
assert(findNoRefOrCreate(thread->m_id) == NULL); assert(findNoRefOrCreate(thread->m_id) == nullptr);
// append to list // append to list
m_threadList.push_back(thread); m_threadList.push_back(thread);
@ -570,14 +570,14 @@ void ArchMultithreadWindows::erase(ArchThreadImpl *thread)
void ArchMultithreadWindows::refThread(ArchThreadImpl *thread) void ArchMultithreadWindows::refThread(ArchThreadImpl *thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
assert(findNoRefOrCreate(thread->m_id) != NULL); assert(findNoRefOrCreate(thread->m_id) != nullptr);
++thread->m_refCount; ++thread->m_refCount;
} }
void ArchMultithreadWindows::testCancelThreadImpl(ArchThreadImpl *thread) void ArchMultithreadWindows::testCancelThreadImpl(ArchThreadImpl *thread)
{ {
assert(thread != NULL); assert(thread != nullptr);
// poll cancel event. return if not set. // poll cancel event. return if not set.
const DWORD result = WaitForSingleObject(thread->m_cancel, 0); const DWORD result = WaitForSingleObject(thread->m_cancel, 0);
@ -616,7 +616,7 @@ void ArchMultithreadWindows::doThreadFunc(ArchThread thread)
lockMutex(m_threadMutex); lockMutex(m_threadMutex);
unlockMutex(m_threadMutex); unlockMutex(m_threadMutex);
void *result = NULL; void *result = nullptr;
try { try {
// go // go
result = (*thread->m_func)(thread->m_userData); result = (*thread->m_func)(thread->m_userData);

View file

@ -58,7 +58,7 @@ static int(PASCAL FAR *WSAEnumNetworkEvents_winsock)(SOCKET, WSAEVENT, LPWSANETW
#define setfunc(var, name, type) var = (type)netGetProcAddress(module, #name) #define setfunc(var, name, type) var = (type)netGetProcAddress(module, #name)
static HMODULE s_networkModule = NULL; static HMODULE s_networkModule = nullptr;
static FARPROC netGetProcAddress(HMODULE module, LPCSTR name) static FARPROC netGetProcAddress(HMODULE module, LPCSTR name)
{ {
@ -81,20 +81,20 @@ ArchNetAddressImpl *ArchNetAddressImpl::alloc(size_t size)
// ArchNetworkWinsock // ArchNetworkWinsock
// //
ArchNetworkWinsock::ArchNetworkWinsock() : m_mutex(NULL) ArchNetworkWinsock::ArchNetworkWinsock() : m_mutex(nullptr)
{ {
} }
ArchNetworkWinsock::~ArchNetworkWinsock() ArchNetworkWinsock::~ArchNetworkWinsock()
{ {
if (s_networkModule != NULL) { if (s_networkModule != nullptr) {
WSACleanup_winsock(); WSACleanup_winsock();
::FreeLibrary(s_networkModule); ::FreeLibrary(s_networkModule);
WSACleanup_winsock = NULL; WSACleanup_winsock = nullptr;
s_networkModule = NULL; s_networkModule = nullptr;
} }
if (m_mutex != NULL) { if (m_mutex != nullptr) {
ARCH->closeMutex(m_mutex); ARCH->closeMutex(m_mutex);
} }
@ -108,8 +108,8 @@ void ArchNetworkWinsock::init()
{ {
static const char *s_library[] = {"ws2_32.dll"}; static const char *s_library[] = {"ws2_32.dll"};
assert(WSACleanup_winsock == NULL); assert(WSACleanup_winsock == nullptr);
assert(s_networkModule == NULL); assert(s_networkModule == nullptr);
// try each winsock library // try each winsock library
for (size_t i = 0; i < sizeof(s_library) / sizeof(s_library[0]); ++i) { for (size_t i = 0; i < sizeof(s_library) / sizeof(s_library[0]); ++i) {
@ -128,7 +128,7 @@ void ArchNetworkWinsock::init()
void ArchNetworkWinsock::initModule(HMODULE module) void ArchNetworkWinsock::initModule(HMODULE module)
{ {
if (module == NULL) { if (module == nullptr) {
throw XArchNetworkSupport(""); throw XArchNetworkSupport("");
} }
@ -229,7 +229,7 @@ ArchSocket ArchNetworkWinsock::newSocket(EAddressFamily family, ESocketType type
ArchSocket ArchNetworkWinsock::copySocket(ArchSocket s) ArchSocket ArchNetworkWinsock::copySocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// ref the socket and return it // ref the socket and return it
ARCH->lockMutex(m_mutex); ARCH->lockMutex(m_mutex);
@ -240,7 +240,7 @@ ArchSocket ArchNetworkWinsock::copySocket(ArchSocket s)
void ArchNetworkWinsock::closeSocket(ArchSocket s) void ArchNetworkWinsock::closeSocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// unref the socket and note if it should be released // unref the socket and note if it should be released
ARCH->lockMutex(m_mutex); ARCH->lockMutex(m_mutex);
@ -264,7 +264,7 @@ void ArchNetworkWinsock::closeSocket(ArchSocket s)
void ArchNetworkWinsock::closeSocketForRead(ArchSocket s) void ArchNetworkWinsock::closeSocketForRead(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
if (shutdown_winsock(s->m_socket, SD_RECEIVE) == SOCKET_ERROR) { if (shutdown_winsock(s->m_socket, SD_RECEIVE) == SOCKET_ERROR) {
if (getsockerror_winsock() != WSAENOTCONN) { if (getsockerror_winsock() != WSAENOTCONN) {
@ -275,7 +275,7 @@ void ArchNetworkWinsock::closeSocketForRead(ArchSocket s)
void ArchNetworkWinsock::closeSocketForWrite(ArchSocket s) void ArchNetworkWinsock::closeSocketForWrite(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
if (shutdown_winsock(s->m_socket, SD_SEND) == SOCKET_ERROR) { if (shutdown_winsock(s->m_socket, SD_SEND) == SOCKET_ERROR) {
if (getsockerror_winsock() != WSAENOTCONN) { if (getsockerror_winsock() != WSAENOTCONN) {
@ -286,8 +286,8 @@ void ArchNetworkWinsock::closeSocketForWrite(ArchSocket s)
void ArchNetworkWinsock::bindSocket(ArchSocket s, ArchNetAddress addr) void ArchNetworkWinsock::bindSocket(ArchSocket s, ArchNetAddress addr)
{ {
assert(s != NULL); assert(s != nullptr);
assert(addr != NULL); assert(addr != nullptr);
if (bind_winsock(s->m_socket, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == SOCKET_ERROR) { if (bind_winsock(s->m_socket, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == SOCKET_ERROR) {
throwError(getsockerror_winsock()); throwError(getsockerror_winsock());
@ -296,7 +296,7 @@ void ArchNetworkWinsock::bindSocket(ArchSocket s, ArchNetAddress addr)
void ArchNetworkWinsock::listenOnSocket(ArchSocket s) void ArchNetworkWinsock::listenOnSocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// hardcoding backlog // hardcoding backlog
if (listen_winsock(s->m_socket, 3) == SOCKET_ERROR) { if (listen_winsock(s->m_socket, 3) == SOCKET_ERROR) {
@ -306,7 +306,7 @@ void ArchNetworkWinsock::listenOnSocket(ArchSocket s)
ArchSocket ArchNetworkWinsock::acceptSocket(ArchSocket s, ArchNetAddress *const addr) ArchSocket ArchNetworkWinsock::acceptSocket(ArchSocket s, ArchNetAddress *const addr)
{ {
assert(s != NULL); assert(s != nullptr);
// create new socket and temporary address // create new socket and temporary address
ArchSocketImpl *socket = new ArchSocketImpl; ArchSocketImpl *socket = new ArchSocketImpl;
@ -319,10 +319,10 @@ ArchSocket ArchNetworkWinsock::acceptSocket(ArchSocket s, ArchNetAddress *const
delete socket; delete socket;
free(tmp); free(tmp);
if (addr) { if (addr) {
*addr = NULL; *addr = nullptr;
} }
if (err == WSAEWOULDBLOCK) { if (err == WSAEWOULDBLOCK) {
return NULL; return nullptr;
} }
throwError(err); throwError(err);
} }
@ -334,7 +334,7 @@ ArchSocket ArchNetworkWinsock::acceptSocket(ArchSocket s, ArchNetAddress *const
delete socket; delete socket;
free(tmp); free(tmp);
if (addr) { if (addr) {
*addr = NULL; *addr = nullptr;
} }
throw; throw;
} }
@ -346,7 +346,7 @@ ArchSocket ArchNetworkWinsock::acceptSocket(ArchSocket s, ArchNetAddress *const
socket->m_pollWrite = true; socket->m_pollWrite = true;
// copy address if requested // copy address if requested
if (addr != NULL) { if (addr != nullptr) {
*addr = ARCH->copyAddr(tmp); *addr = ARCH->copyAddr(tmp);
} }
@ -356,8 +356,8 @@ ArchSocket ArchNetworkWinsock::acceptSocket(ArchSocket s, ArchNetAddress *const
bool ArchNetworkWinsock::connectSocket(ArchSocket s, ArchNetAddress addr) bool ArchNetworkWinsock::connectSocket(ArchSocket s, ArchNetAddress addr)
{ {
assert(s != NULL); assert(s != nullptr);
assert(addr != NULL); assert(addr != nullptr);
if (connect_winsock(s->m_socket, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == SOCKET_ERROR) { if (connect_winsock(s->m_socket, TYPED_ADDR(struct sockaddr, addr), addr->m_len) == SOCKET_ERROR) {
if (getsockerror_winsock() == WSAEISCONN) { if (getsockerror_winsock() == WSAEISCONN) {
@ -384,7 +384,7 @@ int ArchNetworkWinsock::pollSocket(PollEntry pe[], int num, double timeout)
pe[i].m_revents = 0; pe[i].m_revents = 0;
// set invalid flag if socket is bogus then go to next socket // set invalid flag if socket is bogus then go to next socket
if (pe[i].m_socket == NULL) { if (pe[i].m_socket == nullptr) {
pe[i].m_revents |= kPOLLNVAL; pe[i].m_revents |= kPOLLNVAL;
continue; continue;
} }
@ -428,7 +428,7 @@ int ArchNetworkWinsock::pollSocket(PollEntry pe[], int num, double timeout)
ArchThread thread = mt->newCurrentThread(); ArchThread thread = mt->newCurrentThread();
WSAEVENT *unblockEvent = (WSAEVENT *)mt->getNetworkDataForThread(thread); WSAEVENT *unblockEvent = (WSAEVENT *)mt->getNetworkDataForThread(thread);
ARCH->closeThread(thread); ARCH->closeThread(thread);
if (unblockEvent == NULL) { if (unblockEvent == nullptr) {
unblockEvent = new WSAEVENT; unblockEvent = new WSAEVENT;
m_unblockEvents.push_back(unblockEvent); m_unblockEvents.push_back(unblockEvent);
*unblockEvent = WSACreateEvent_winsock(); *unblockEvent = WSACreateEvent_winsock();
@ -467,7 +467,7 @@ int ArchNetworkWinsock::pollSocket(PollEntry pe[], int num, double timeout)
} }
for (i = 0, n = 0; i < num; ++i) { for (i = 0, n = 0; i < num; ++i) {
// skip events we didn't check // skip events we didn't check
if (pe[i].m_socket == NULL || (pe[i].m_events & (kPOLLIN | kPOLLOUT)) == 0) { if (pe[i].m_socket == nullptr || (pe[i].m_events & (kPOLLIN | kPOLLOUT)) == 0) {
continue; continue;
} }
@ -522,14 +522,14 @@ void ArchNetworkWinsock::unblockPollSocket(ArchThread thread)
// set the unblock event // set the unblock event
ArchMultithreadWindows *mt = ArchMultithreadWindows::getInstance(); ArchMultithreadWindows *mt = ArchMultithreadWindows::getInstance();
WSAEVENT *unblockEvent = (WSAEVENT *)mt->getNetworkDataForThread(thread); WSAEVENT *unblockEvent = (WSAEVENT *)mt->getNetworkDataForThread(thread);
if (unblockEvent != NULL) { if (unblockEvent != nullptr) {
WSASetEvent_winsock(*unblockEvent); WSASetEvent_winsock(*unblockEvent);
} }
} }
size_t ArchNetworkWinsock::readSocket(ArchSocket s, void *buf, size_t len) size_t ArchNetworkWinsock::readSocket(ArchSocket s, void *buf, size_t len)
{ {
assert(s != NULL); assert(s != nullptr);
int n = recv_winsock(s->m_socket, buf, (int)len, 0); int n = recv_winsock(s->m_socket, buf, (int)len, 0);
if (n == SOCKET_ERROR) { if (n == SOCKET_ERROR) {
@ -544,7 +544,7 @@ size_t ArchNetworkWinsock::readSocket(ArchSocket s, void *buf, size_t len)
size_t ArchNetworkWinsock::writeSocket(ArchSocket s, const void *buf, size_t len) size_t ArchNetworkWinsock::writeSocket(ArchSocket s, const void *buf, size_t len)
{ {
assert(s != NULL); assert(s != nullptr);
int n = send_winsock(s->m_socket, buf, (int)len, 0); int n = send_winsock(s->m_socket, buf, (int)len, 0);
if (n == SOCKET_ERROR) { if (n == SOCKET_ERROR) {
@ -563,7 +563,7 @@ size_t ArchNetworkWinsock::writeSocket(ArchSocket s, const void *buf, size_t len
void ArchNetworkWinsock::throwErrorOnSocket(ArchSocket s) void ArchNetworkWinsock::throwErrorOnSocket(ArchSocket s)
{ {
assert(s != NULL); assert(s != nullptr);
// get the error from the socket layer // get the error from the socket layer
int err = 0; int err = 0;
@ -590,7 +590,7 @@ void ArchNetworkWinsock::setBlockingOnSocket(SOCKET s, bool blocking)
bool ArchNetworkWinsock::setNoDelayOnSocket(ArchSocket s, bool noDelay) bool ArchNetworkWinsock::setNoDelayOnSocket(ArchSocket s, bool noDelay)
{ {
assert(s != NULL); assert(s != nullptr);
// get old state // get old state
BOOL oflag; BOOL oflag;
@ -611,7 +611,7 @@ bool ArchNetworkWinsock::setNoDelayOnSocket(ArchSocket s, bool noDelay)
bool ArchNetworkWinsock::setReuseAddrOnSocket(ArchSocket s, bool reuse) bool ArchNetworkWinsock::setReuseAddrOnSocket(ArchSocket s, bool reuse)
{ {
assert(s != NULL); assert(s != nullptr);
// get old state // get old state
BOOL oflag; BOOL oflag;
@ -643,7 +643,7 @@ std::string ArchNetworkWinsock::getHostName()
ArchNetAddress ArchNetworkWinsock::newAnyAddr(EAddressFamily family) ArchNetAddress ArchNetworkWinsock::newAnyAddr(EAddressFamily family)
{ {
ArchNetAddressImpl *addr = NULL; ArchNetAddressImpl *addr = nullptr;
switch (family) { switch (family) {
case kINET: { case kINET: {
addr = ArchNetAddressImpl::alloc(sizeof(struct sockaddr_in)); addr = ArchNetAddressImpl::alloc(sizeof(struct sockaddr_in));
@ -671,7 +671,7 @@ ArchNetAddress ArchNetworkWinsock::newAnyAddr(EAddressFamily family)
ArchNetAddress ArchNetworkWinsock::copyAddr(ArchNetAddress addr) ArchNetAddress ArchNetworkWinsock::copyAddr(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
ArchNetAddressImpl *copy = ArchNetAddressImpl::alloc(addr->m_len); ArchNetAddressImpl *copy = ArchNetAddressImpl::alloc(addr->m_len);
memcpy(TYPED_ADDR(void, copy), TYPED_ADDR(void, addr), addr->m_len); memcpy(TYPED_ADDR(void, copy), TYPED_ADDR(void, addr), addr->m_len);
@ -690,7 +690,7 @@ std::vector<ArchNetAddress> ArchNetworkWinsock::nameToAddr(const std::string &na
int ret = -1; int ret = -1;
ARCH->lockMutex(m_mutex); ARCH->lockMutex(m_mutex);
if ((ret = getaddrinfo(name.c_str(), NULL, &hints, &pResult)) != 0) { if ((ret = getaddrinfo(name.c_str(), nullptr, &hints, &pResult)) != 0) {
ARCH->unlockMutex(m_mutex); ARCH->unlockMutex(m_mutex);
throwNameError(ret); throwNameError(ret);
} }
@ -713,21 +713,21 @@ std::vector<ArchNetAddress> ArchNetworkWinsock::nameToAddr(const std::string &na
void ArchNetworkWinsock::closeAddr(ArchNetAddress addr) void ArchNetworkWinsock::closeAddr(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
free(addr); free(addr);
} }
std::string ArchNetworkWinsock::addrToName(ArchNetAddress addr) std::string ArchNetworkWinsock::addrToName(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
char host[1024]; char host[1024];
char service[20]; char service[20];
int ret = int ret =
getnameinfo(TYPED_ADDR(struct sockaddr, addr), addr->m_len, host, sizeof(host), service, sizeof(service), 0); getnameinfo(TYPED_ADDR(struct sockaddr, addr), addr->m_len, host, sizeof(host), service, sizeof(service), 0);
if (ret != NULL) { if (ret != 0) {
throwNameError(ret); throwNameError(ret);
} }
@ -738,7 +738,7 @@ std::string ArchNetworkWinsock::addrToName(ArchNetAddress addr)
std::string ArchNetworkWinsock::addrToString(ArchNetAddress addr) std::string ArchNetworkWinsock::addrToString(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {
@ -761,7 +761,7 @@ std::string ArchNetworkWinsock::addrToString(ArchNetAddress addr)
IArchNetwork::EAddressFamily ArchNetworkWinsock::getAddrFamily(ArchNetAddress addr) IArchNetwork::EAddressFamily ArchNetworkWinsock::getAddrFamily(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (addr->m_addr.ss_family) { switch (addr->m_addr.ss_family) {
case AF_INET: case AF_INET:
@ -777,7 +777,7 @@ IArchNetwork::EAddressFamily ArchNetworkWinsock::getAddrFamily(ArchNetAddress ad
void ArchNetworkWinsock::setAddrPort(ArchNetAddress addr, int port) void ArchNetworkWinsock::setAddrPort(ArchNetAddress addr, int port)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {
@ -800,7 +800,7 @@ void ArchNetworkWinsock::setAddrPort(ArchNetAddress addr, int port)
int ArchNetworkWinsock::getAddrPort(ArchNetAddress addr) int ArchNetworkWinsock::getAddrPort(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {
@ -821,7 +821,7 @@ int ArchNetworkWinsock::getAddrPort(ArchNetAddress addr)
bool ArchNetworkWinsock::isAnyAddr(ArchNetAddress addr) bool ArchNetworkWinsock::isAnyAddr(ArchNetAddress addr)
{ {
assert(addr != NULL); assert(addr != nullptr);
switch (getAddrFamily(addr)) { switch (getAddrFamily(addr)) {
case kINET: { case kINET: {

View file

@ -35,7 +35,7 @@ void ArchSleepWindows::sleep(double timeout)
// this is windows so that's pretty certain; we'll get a // this is windows so that's pretty certain; we'll get a
// link error if we're not, though. // link error if we're not, though.
ArchMultithreadWindows *mt = ArchMultithreadWindows::getInstance(); ArchMultithreadWindows *mt = ArchMultithreadWindows::getInstance();
if (mt != NULL) { if (mt != nullptr) {
HANDLE cancelEvent = mt->getCancelEventForCurrentThread(); HANDLE cancelEvent = mt->getCancelEventForCurrentThread();
WaitForSingleObject(cancelEvent, (DWORD)(1000.0 * timeout)); WaitForSingleObject(cancelEvent, (DWORD)(1000.0 * timeout));
if (timeout == 0.0) { if (timeout == 0.0) {

View file

@ -25,8 +25,8 @@
typedef WINMMAPI DWORD(WINAPI *PTimeGetTime)(void); typedef WINMMAPI DWORD(WINAPI *PTimeGetTime)(void);
static double s_freq = 0.0; static double s_freq = 0.0;
static HINSTANCE s_mmInstance = NULL; static HINSTANCE s_mmInstance = nullptr;
static PTimeGetTime s_tgt = NULL; static PTimeGetTime s_tgt = nullptr;
// //
// ArchTimeWindows // ArchTimeWindows
@ -34,7 +34,7 @@ static PTimeGetTime s_tgt = NULL;
ArchTimeWindows::ArchTimeWindows() ArchTimeWindows::ArchTimeWindows()
{ {
assert(s_freq == 0.0 || s_mmInstance == NULL); assert(s_freq == 0.0 || s_mmInstance == nullptr);
LARGE_INTEGER freq; LARGE_INTEGER freq;
if (QueryPerformanceFrequency(&freq) && freq.QuadPart != 0) { if (QueryPerformanceFrequency(&freq) && freq.QuadPart != 0) {
@ -42,7 +42,7 @@ ArchTimeWindows::ArchTimeWindows()
} else { } else {
// load winmm.dll and get timeGetTime // load winmm.dll and get timeGetTime
s_mmInstance = LoadLibrary("winmm"); s_mmInstance = LoadLibrary("winmm");
if (s_mmInstance != NULL) { if (s_mmInstance != nullptr) {
s_tgt = (PTimeGetTime)GetProcAddress(s_mmInstance, "timeGetTime"); s_tgt = (PTimeGetTime)GetProcAddress(s_mmInstance, "timeGetTime");
} }
} }
@ -51,10 +51,10 @@ ArchTimeWindows::ArchTimeWindows()
ArchTimeWindows::~ArchTimeWindows() ArchTimeWindows::~ArchTimeWindows()
{ {
s_freq = 0.0; s_freq = 0.0;
if (s_mmInstance == NULL) { if (s_mmInstance == nullptr) {
FreeLibrary(static_cast<HMODULE>(s_mmInstance)); FreeLibrary(static_cast<HMODULE>(s_mmInstance));
s_tgt = NULL; s_tgt = nullptr;
s_mmInstance = NULL; s_mmInstance = nullptr;
} }
} }
@ -65,7 +65,7 @@ double ArchTimeWindows::time()
LARGE_INTEGER c; LARGE_INTEGER c;
QueryPerformanceCounter(&c); QueryPerformanceCounter(&c);
return s_freq * static_cast<double>(c.QuadPart); return s_freq * static_cast<double>(c.QuadPart);
} else if (s_tgt != NULL) { } else if (s_tgt != nullptr) {
return 0.001 * static_cast<double>(s_tgt()); return 0.001 * static_cast<double>(s_tgt());
} else { } else {
return 0.001 * static_cast<double>(GetTickCount()); return 0.001 * static_cast<double>(GetTickCount());

View file

@ -18,9 +18,9 @@ std::string XArchEvalWindows::eval() const throw()
char *cmsg; char *cmsg;
if (FormatMessage( if (FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, 0, m_error, FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, 0, m_error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&cmsg, 0, NULL MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&cmsg, 0, nullptr
) == 0) { ) == 0) {
cmsg = NULL; cmsg = nullptr;
return deskflow::string::sprintf("Unknown error, code %d", m_error); return deskflow::string::sprintf("Unknown error, code %d", m_error);
} }
std::string smsg(cmsg); std::string smsg(cmsg);
@ -200,7 +200,7 @@ std::string XArchEvalWinsock::eval() const throw()
{WSANO_DATA, "The requested name is valid but does not have an IP address"}, {WSANO_DATA, "The requested name is valid but does not have an IP address"},
// end // end
{0, NULL} {0, nullptr}
}; };
for (unsigned int i = 0; s_netErrorCodes[i].m_code != 0; ++i) { for (unsigned int i = 0; s_netErrorCodes[i].m_code != 0; ++i) {

View file

@ -11,7 +11,7 @@
// Event // Event
// //
Event::Event() : m_type(kUnknown), m_target(NULL), m_data(NULL), m_flags(0), m_dataObject(nullptr) Event::Event() : m_type(kUnknown), m_target(nullptr), m_data(nullptr), m_flags(0), m_dataObject(nullptr)
{ {
// do nothing // do nothing
} }

View file

@ -56,7 +56,7 @@ public:
\p target is the intended recipient of the event. \p target is the intended recipient of the event.
\p flags is any combination of \c Flags. \p flags is any combination of \c Flags.
*/ */
Event(Type type, void *target = NULL, void *data = NULL, Flags flags = kNone); Event(Type type, void *target = nullptr, void *data = nullptr, Flags flags = kNone);
//! Create \c Event with non-POD data //! Create \c Event with non-POD data
/*! /*!

View file

@ -48,23 +48,23 @@ static void interrupt(Arch::ESignal, void *data)
EventQueue::EventQueue() EventQueue::EventQueue()
: m_systemTarget(0), : m_systemTarget(0),
m_nextType(Event::kLast), m_nextType(Event::kLast),
m_typesForClient(NULL), m_typesForClient(nullptr),
m_typesForIStream(NULL), m_typesForIStream(nullptr),
m_typesForIDataSocket(NULL), m_typesForIDataSocket(nullptr),
m_typesForIListenSocket(NULL), m_typesForIListenSocket(nullptr),
m_typesForISocket(NULL), m_typesForISocket(nullptr),
m_typesForOSXScreen(NULL), m_typesForOSXScreen(nullptr),
m_typesForClientListener(NULL), m_typesForClientListener(nullptr),
m_typesForClientProxy(NULL), m_typesForClientProxy(nullptr),
m_typesForClientProxyUnknown(NULL), m_typesForClientProxyUnknown(nullptr),
m_typesForServer(NULL), m_typesForServer(nullptr),
m_typesForServerApp(NULL), m_typesForServerApp(nullptr),
m_typesForIKeyState(NULL), m_typesForIKeyState(nullptr),
m_typesForIPrimaryScreen(NULL), m_typesForIPrimaryScreen(nullptr),
m_typesForIScreen(NULL), m_typesForIScreen(nullptr),
m_typesForClipboard(NULL), m_typesForClipboard(nullptr),
m_typesForFile(NULL), m_typesForFile(nullptr),
m_typesForEi(NULL), m_typesForEi(nullptr),
m_readyMutex(new Mutex), m_readyMutex(new Mutex),
m_readyCondVar(new CondVar<bool>(m_readyMutex, false)) m_readyCondVar(new CondVar<bool>(m_readyMutex, false))
{ {
@ -80,8 +80,8 @@ EventQueue::~EventQueue()
delete m_readyCondVar; delete m_readyCondVar;
delete m_readyMutex; delete m_readyMutex;
ARCH->setSignalHandler(Arch::kINTERRUPT, NULL, NULL); ARCH->setSignalHandler(Arch::kINTERRUPT, nullptr, nullptr);
ARCH->setSignalHandler(Arch::kTERMINATE, NULL, NULL); ARCH->setSignalHandler(Arch::kTERMINATE, nullptr, nullptr);
ARCH->closeMutex(m_mutex); ARCH->closeMutex(m_mutex);
} }
@ -169,7 +169,7 @@ void EventQueue::adoptBuffer(IEventQueueBuffer *buffer)
// use new buffer // use new buffer
m_buffer = buffer; m_buffer = buffer;
if (m_buffer == NULL) { if (m_buffer == nullptr) {
m_buffer = new SimpleEventQueueBuffer; m_buffer = new SimpleEventQueueBuffer;
} }
} }
@ -235,10 +235,10 @@ bool EventQueue::dispatchEvent(const Event &event)
{ {
void *target = event.getTarget(); void *target = event.getTarget();
IEventJob *job = getHandler(event.getType(), target); IEventJob *job = getHandler(event.getType(), target);
if (job == NULL) { if (job == nullptr) {
job = getHandler(Event::kUnknown, target); job = getHandler(Event::kUnknown, target);
} }
if (job != NULL) { if (job != nullptr) {
job->run(event); job->run(event);
return true; return true;
} }
@ -288,7 +288,7 @@ EventQueueTimer *EventQueue::newTimer(double duration, void *target)
assert(duration > 0.0); assert(duration > 0.0);
EventQueueTimer *timer = m_buffer->newTimer(duration, false); EventQueueTimer *timer = m_buffer->newTimer(duration, false);
if (target == NULL) { if (target == nullptr) {
target = timer; target = timer;
} }
ArchMutexLock lock(m_mutex); ArchMutexLock lock(m_mutex);
@ -305,7 +305,7 @@ EventQueueTimer *EventQueue::newOneShotTimer(double duration, void *target)
assert(duration > 0.0); assert(duration > 0.0);
EventQueueTimer *timer = m_buffer->newTimer(duration, true); EventQueueTimer *timer = m_buffer->newTimer(duration, true);
if (target == NULL) { if (target == nullptr) {
target = timer; target = timer;
} }
ArchMutexLock lock(m_mutex); ArchMutexLock lock(m_mutex);
@ -343,7 +343,7 @@ void EventQueue::adoptHandler(Event::Type type, void *target, IEventJob *handler
void EventQueue::removeHandler(Event::Type type, void *target) void EventQueue::removeHandler(Event::Type type, void *target)
{ {
IEventJob *handler = NULL; IEventJob *handler = nullptr;
{ {
ArchMutexLock lock(m_mutex); ArchMutexLock lock(m_mutex);
HandlerTable::iterator index = m_handlers.find(target); HandlerTable::iterator index = m_handlers.find(target);
@ -397,7 +397,7 @@ IEventJob *EventQueue::getHandler(Event::Type type, void *target) const
return index2->second; return index2->second;
} }
} }
return NULL; return nullptr;
} }
uint32_t EventQueue::saveEvent(const Event &event) uint32_t EventQueue::saveEvent(const Event &event)

View file

@ -171,7 +171,7 @@ private:
type_##Events& \ type_##Events& \
EventQueue::for##type_() \ EventQueue::for##type_() \
{ \ { \
if (m_typesFor##type_ == NULL) { \ if (m_typesFor##type_ == nullptr) { \
m_typesFor##type_ = new type_##Events(); \ m_typesFor##type_ = new type_##Events(); \
m_typesFor##type_->setEvents(dynamic_cast<IEventQueue *>(this)); \ m_typesFor##type_->setEvents(dynamic_cast<IEventQueue *>(this)); \
} \ } \

View file

@ -9,13 +9,13 @@
#include <assert.h> #include <assert.h>
EventTypes::EventTypes() : m_events(NULL) EventTypes::EventTypes() : m_events(nullptr)
{ {
} }
IEventQueue *EventTypes::getEvents() const IEventQueue *EventTypes::getEvents() const
{ {
assert(m_events != NULL); assert(m_events != nullptr);
return m_events; return m_events;
} }

View file

@ -23,7 +23,7 @@ FunctionEventJob::~FunctionEventJob()
void FunctionEventJob::run(const Event &event) void FunctionEventJob::run(const Event &event)
{ {
if (m_func != NULL) { if (m_func != nullptr) {
m_func(event, m_arg); m_func(event, m_arg);
} }
} }

View file

@ -17,7 +17,7 @@ class FunctionEventJob : public IEventJob
{ {
public: public:
//! run() invokes \c func(arg) //! run() invokes \c func(arg)
FunctionEventJob(void (*func)(const Event &, void *), void *arg = NULL); FunctionEventJob(void (*func)(const Event &, void *), void *arg = nullptr);
~FunctionEventJob() override; ~FunctionEventJob() override;
// IEventJob overrides // IEventJob overrides

View file

@ -23,7 +23,7 @@ FunctionJob::~FunctionJob()
void FunctionJob::run() void FunctionJob::run()
{ {
if (m_func != NULL) { if (m_func != nullptr) {
m_func(m_arg); m_func(m_arg);
} }
} }

View file

@ -17,7 +17,7 @@ class FunctionJob : public IJob
{ {
public: public:
//! run() invokes \c func(arg) //! run() invokes \c func(arg)
FunctionJob(void (*func)(void *), void *arg = NULL); FunctionJob(void (*func)(void *), void *arg = nullptr);
~FunctionJob() override; ~FunctionJob() override;
// IJob overrides // IJob overrides

View file

@ -98,7 +98,7 @@ public:
is returned the data points to a \c TimerEvent. The client must pass is returned the data points to a \c TimerEvent. The client must pass
the returned timer to \c deleteTimer() (whether or not the timer has the returned timer to \c deleteTimer() (whether or not the timer has
expired) to release the timer. The returned timer event uses the expired) to release the timer. The returned timer event uses the
given \p target. If \p target is NULL it uses the returned timer as given \p target. If \p target is nullptr it uses the returned timer as
the target. the target.
Events for a single timer don't accumulate in the queue, even if the Events for a single timer don't accumulate in the queue, even if the
@ -117,7 +117,7 @@ public:
The c_count member of the \c TimerEvent is always 1. The client The c_count member of the \c TimerEvent is always 1. The client
must pass the returned timer to \c deleteTimer() (whether or not the must pass the returned timer to \c deleteTimer() (whether or not the
timer has expired) to release the timer. The returned timer event timer has expired) to release the timer. The returned timer event
uses the given \p target. If \p target is NULL it uses the returned uses the given \p target. If \p target is nullptr it uses the returned
timer as the target. timer as the target.
*/ */
virtual EventQueueTimer *newOneShotTimer(double duration, void *target) = 0; virtual EventQueueTimer *newOneShotTimer(double duration, void *target) = 0;
@ -181,7 +181,7 @@ public:
//! Get an event handler //! Get an event handler
/*! /*!
Finds and returns the event handler for the \p type, \p target pair Finds and returns the event handler for the \p type, \p target pair
if it exists, otherwise it returns NULL. if it exists, otherwise it returns nullptr.
*/ */
virtual IEventJob *getHandler(Event::Type type, void *target) const = 0; virtual IEventJob *getHandler(Event::Type type, void *target) const = 0;

View file

@ -77,7 +77,7 @@ public:
/*! /*!
Create and return a timer object. The object is opaque and is Create and return a timer object. The object is opaque and is
used only by the buffer but it must be a valid object (i.e. used only by the buffer but it must be a valid object (i.e.
not NULL). not nullptr).
*/ */
virtual EventQueueTimer *newTimer(double duration, bool oneShot) const = 0; virtual EventQueueTimer *newTimer(double duration, bool oneShot) const = 0;

View file

@ -115,12 +115,12 @@ std::vector<char> makeMessage(const char *filename, int lineNumber, const char *
// Log // Log
// //
Log *Log::s_log = NULL; Log *Log::s_log = nullptr;
Log::Log(bool singleton) Log::Log(bool singleton)
{ {
if (singleton) { if (singleton) {
assert(s_log == NULL); assert(s_log == nullptr);
} }
// create mutex for multithread safe operation // create mutex for multithread safe operation
@ -154,7 +154,7 @@ Log::~Log()
Log *Log::getInstance() Log *Log::getInstance()
{ {
assert(s_log != NULL); assert(s_log != nullptr);
return s_log; return s_log;
} }
@ -210,7 +210,7 @@ void Log::print(const char *file, int line, const char *fmt, ...)
void Log::insert(ILogOutputter *adoptedOutputter, bool alwaysAtHead) void Log::insert(ILogOutputter *adoptedOutputter, bool alwaysAtHead)
{ {
assert(adoptedOutputter != NULL); assert(adoptedOutputter != nullptr);
ArchMutexLock lock(m_mutex); ArchMutexLock lock(m_mutex);
if (alwaysAtHead) { if (alwaysAtHead) {
@ -241,7 +241,7 @@ void Log::pop_front(bool alwaysAtHead)
bool Log::setFilter(const char *maxPriority) bool Log::setFilter(const char *maxPriority)
{ {
if (maxPriority != NULL) { if (maxPriority != nullptr) {
for (int i = 0; i < g_numPriority; ++i) { for (int i = 0; i < g_numPriority; ++i) {
if (strcmp(maxPriority, g_priority[i]) == 0) { if (strcmp(maxPriority, g_priority[i]) == 0) {
setFilter(i); setFilter(i);
@ -268,7 +268,7 @@ int Log::getFilter() const
void Log::output(ELevel priority, char *msg) void Log::output(ELevel priority, char *msg)
{ {
assert(priority >= -1 && priority < g_numPriority); assert(priority >= -1 && priority < g_numPriority);
assert(msg != NULL); assert(msg != nullptr);
if (!msg) if (!msg)
return; return;

View file

@ -79,7 +79,7 @@ public:
Set the filter. Messages below this priority are discarded. Set the filter. Messages below this priority are discarded.
The default priority is 4 (INFO) (unless built without NDEBUG The default priority is 4 (INFO) (unless built without NDEBUG
in which case it's 5 (DEBUG)). setFilter(const char*) returns in which case it's 5 (DEBUG)). setFilter(const char*) returns
true if the priority \c name was recognized; if \c name is NULL true if the priority \c name was recognized; if \c name is nullptr
then it simply returns true. then it simply returns true.
*/ */
bool setFilter(const char *name); bool setFilter(const char *name);
@ -94,7 +94,7 @@ public:
//! Print a log message //! Print a log message
/*! /*!
Print a log message using the printf-like \c format and arguments Print a log message using the printf-like \c format and arguments
preceded by the filename and line number. If \c file is NULL then preceded by the filename and line number. If \c file is nullptr then
neither the file nor the line are printed. neither the file nor the line are printed.
*/ */
void print(const char *file, int line, const char *format, ...); void print(const char *file, int line, const char *format, ...);
@ -182,7 +182,7 @@ otherwise it expands to a call that doesn't.
#define LOGC(_a1, _a2) \ #define LOGC(_a1, _a2) \
if (_a1) \ if (_a1) \
CLOG->print _a2 CLOG->print _a2
#define CLOG_TRACE NULL, 0, #define CLOG_TRACE nullptr, 0,
#else #else
#define LOG(_a1) CLOG->print _a1 #define LOG(_a1) CLOG->print _a1
#define LOGC(_a1, _a2) \ #define LOGC(_a1, _a2) \

View file

@ -128,7 +128,7 @@ bool SystemLogOutputter::write(ELevel level, const char *msg)
// SystemLogger // SystemLogger
// //
SystemLogger::SystemLogger(const char *title, bool blockConsole) : m_stop(NULL) SystemLogger::SystemLogger(const char *title, bool blockConsole) : m_stop(nullptr)
{ {
// redirect log messages // redirect log messages
if (blockConsole) { if (blockConsole) {
@ -144,7 +144,7 @@ SystemLogger::~SystemLogger()
{ {
CLOG->remove(m_syslog); CLOG->remove(m_syslog);
delete m_syslog; delete m_syslog;
if (m_stop != NULL) { if (m_stop != nullptr) {
CLOG->remove(m_stop); CLOG->remove(m_stop);
delete m_stop; delete m_stop;
} }
@ -165,7 +165,7 @@ FileLogOutputter::~FileLogOutputter()
void FileLogOutputter::setLogFilename(const char *logFile) void FileLogOutputter::setLogFilename(const char *logFile)
{ {
assert(logFile != NULL); assert(logFile != nullptr);
m_fileName = logFile; m_fileName = logFile;
} }

View file

@ -20,7 +20,7 @@ std::wstring path(const std::string &filePath)
{ {
std::wstring result; std::wstring result;
auto length = MultiByteToWideChar(CP_UTF8, 0, filePath.c_str(), static_cast<int>(filePath.length()), NULL, 0); auto length = MultiByteToWideChar(CP_UTF8, 0, filePath.c_str(), static_cast<int>(filePath.length()), nullptr, 0);
if (length > 0) { if (length > 0) {
result.resize(length); result.resize(length);
MultiByteToWideChar(CP_UTF8, 0, filePath.c_str(), static_cast<int>(filePath.length()), &result[0], length); MultiByteToWideChar(CP_UTF8, 0, filePath.c_str(), static_cast<int>(filePath.length()), &result[0], length);

View file

@ -109,7 +109,7 @@ std::string sprintf(const char *fmt, ...)
char *buffer = tmp; char *buffer = tmp;
int len = (int)(sizeof(tmp) / sizeof(tmp[0])); int len = (int)(sizeof(tmp) / sizeof(tmp[0]));
std::string result; std::string result;
while (buffer != NULL) { while (buffer != nullptr) {
// try printing into the buffer // try printing into the buffer
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
@ -131,7 +131,7 @@ std::string sprintf(const char *fmt, ...)
if (buffer != tmp) { if (buffer != tmp) {
delete[] buffer; delete[] buffer;
} }
buffer = NULL; buffer = nullptr;
} }
} }

View file

@ -17,7 +17,7 @@ template <class T> class TMethodEventJob : public IEventJob
{ {
public: public:
//! run(event) invokes \c object->method(event, arg) //! run(event) invokes \c object->method(event, arg)
TMethodEventJob(T *object, void (T::*method)(const Event &, void *), void *arg = NULL); TMethodEventJob(T *object, void (T::*method)(const Event &, void *), void *arg = nullptr);
~TMethodEventJob() override; ~TMethodEventJob() override;
// IJob overrides // IJob overrides
@ -45,7 +45,7 @@ template <class T> inline TMethodEventJob<T>::~TMethodEventJob()
template <class T> inline void TMethodEventJob<T>::run(const Event &event) template <class T> inline void TMethodEventJob<T>::run(const Event &event)
{ {
if (m_object != NULL) { if (m_object != nullptr) {
(m_object->*m_method)(event, m_arg); (m_object->*m_method)(event, m_arg);
} }
} }

View file

@ -17,7 +17,7 @@ template <class T> class TMethodJob : public IJob
{ {
public: public:
//! run() invokes \c object->method(arg) //! run() invokes \c object->method(arg)
TMethodJob(T *object, void (T::*method)(void *), void *arg = NULL); TMethodJob(T *object, void (T::*method)(void *), void *arg = nullptr);
~TMethodJob() override; ~TMethodJob() override;
// IJob overrides // IJob overrides
@ -45,7 +45,7 @@ template <class T> inline TMethodJob<T>::~TMethodJob()
template <class T> inline void TMethodJob<T>::run() template <class T> inline void TMethodJob<T>::run()
{ {
if (m_object != NULL) { if (m_object != nullptr) {
(m_object->*m_method)(m_arg); (m_object->*m_method)(m_arg);
} }
} }

View file

@ -52,14 +52,14 @@ inline static uint32_t decode32(const uint8_t *n, bool byteSwapped)
inline static void resetError(bool *errors) inline static void resetError(bool *errors)
{ {
if (errors != NULL) { if (errors != nullptr) {
*errors = false; *errors = false;
} }
} }
inline static void setError(bool *errors) inline static void setError(bool *errors)
{ {
if (errors != NULL) { if (errors != nullptr) {
*errors = true; *errors = true;
} }
} }
@ -204,7 +204,7 @@ std::string Unicode::UTF8ToText(const std::string &src, bool *errors)
wchar_t *tmp = UTF8ToWideChar(src, size, errors); wchar_t *tmp = UTF8ToWideChar(src, size, errors);
// convert string to multibyte // convert string to multibyte
int len = ARCH->convStringWCToMB(NULL, tmp, size, errors); int len = ARCH->convStringWCToMB(nullptr, tmp, size, errors);
char *mbs = new char[len + 1]; char *mbs = new char[len + 1];
ARCH->convStringWCToMB(mbs, tmp, size, errors); ARCH->convStringWCToMB(mbs, tmp, size, errors);
std::string text(mbs, len); std::string text(mbs, len);
@ -263,7 +263,7 @@ std::string Unicode::textToUTF8(const std::string &src, bool *errors, IArchStrin
// convert string to wide characters // convert string to wide characters
uint32_t n = (uint32_t)src.size(); uint32_t n = (uint32_t)src.size();
int len = ARCH->convStringMBToWC(NULL, src.c_str(), n, errors); int len = ARCH->convStringMBToWC(nullptr, src.c_str(), n, errors);
wchar_t *wcs = new wchar_t[len + 1]; wchar_t *wcs = new wchar_t[len + 1];
ARCH->convStringMBToWC(wcs, src.c_str(), n, errors); ARCH->convStringMBToWC(wcs, src.c_str(), n, errors);
@ -445,7 +445,7 @@ std::string Unicode::doUTF16ToUTF8(const uint8_t *data, uint32_t n, bool *errors
} else if (n == 1) { } else if (n == 1) {
// error -- missing second word // error -- missing second word
setError(errors); setError(errors);
toUTF8(dst, s_replacement, NULL); toUTF8(dst, s_replacement, nullptr);
} else if (c >= 0x0000d800 && c <= 0x0000dbff) { } else if (c >= 0x0000d800 && c <= 0x0000dbff) {
data += 2; data += 2;
--n; --n;
@ -453,7 +453,7 @@ std::string Unicode::doUTF16ToUTF8(const uint8_t *data, uint32_t n, bool *errors
if (c2 < 0x0000dc00 || c2 > 0x0000dfff) { if (c2 < 0x0000dc00 || c2 > 0x0000dfff) {
// error -- [d800,dbff] not followed by [dc00,dfff] // error -- [d800,dbff] not followed by [dc00,dfff]
setError(errors); setError(errors);
toUTF8(dst, s_replacement, NULL); toUTF8(dst, s_replacement, nullptr);
} else { } else {
c = (((c - 0x0000d800) << 10) | (c2 - 0x0000dc00)) + 0x00010000; c = (((c - 0x0000d800) << 10) | (c2 - 0x0000dc00)) + 0x00010000;
toUTF8(dst, c, errors); toUTF8(dst, c, errors);
@ -461,7 +461,7 @@ std::string Unicode::doUTF16ToUTF8(const uint8_t *data, uint32_t n, bool *errors
} else { } else {
// error -- [dc00,dfff] without leading [d800,dbff] // error -- [dc00,dfff] without leading [d800,dbff]
setError(errors); setError(errors);
toUTF8(dst, s_replacement, NULL); toUTF8(dst, s_replacement, nullptr);
} }
data += 2; data += 2;
--n; --n;
@ -512,7 +512,7 @@ std::string Unicode::doUTF32ToUTF8(const uint8_t *data, uint32_t n, bool *errors
uint32_t Unicode::fromUTF8(const uint8_t *&data, uint32_t &n) uint32_t Unicode::fromUTF8(const uint8_t *&data, uint32_t &n)
{ {
assert(data != NULL); assert(data != nullptr);
assert(n != 0); assert(n != 0);
// compute character encoding length, checking for overlong // compute character encoding length, checking for overlong

View file

@ -31,76 +31,76 @@ public:
//! Convert from UTF-8 to UCS-2 encoding //! Convert from UTF-8 to UCS-2 encoding
/*! /*!
Convert from UTF-8 to UCS-2. If errors is not NULL then *errors Convert from UTF-8 to UCS-2. If errors is not nullptr then *errors
is set to true iff any character could not be encoded in UCS-2. is set to true iff any character could not be encoded in UCS-2.
Decoding errors do not set *errors. Decoding errors do not set *errors.
*/ */
static std::string UTF8ToUCS2(const std::string &, bool *errors = NULL); static std::string UTF8ToUCS2(const std::string &, bool *errors = nullptr);
//! Convert from UTF-8 to UCS-4 encoding //! Convert from UTF-8 to UCS-4 encoding
/*! /*!
Convert from UTF-8 to UCS-4. If errors is not NULL then *errors Convert from UTF-8 to UCS-4. If errors is not nullptr then *errors
is set to true iff any character could not be encoded in UCS-4. is set to true iff any character could not be encoded in UCS-4.
Decoding errors do not set *errors. Decoding errors do not set *errors.
*/ */
static std::string UTF8ToUCS4(const std::string &, bool *errors = NULL); static std::string UTF8ToUCS4(const std::string &, bool *errors = nullptr);
//! Convert from UTF-8 to UTF-16 encoding //! Convert from UTF-8 to UTF-16 encoding
/*! /*!
Convert from UTF-8 to UTF-16. If errors is not NULL then *errors Convert from UTF-8 to UTF-16. If errors is not nullptr then *errors
is set to true iff any character could not be encoded in UTF-16. is set to true iff any character could not be encoded in UTF-16.
Decoding errors do not set *errors. Decoding errors do not set *errors.
*/ */
static std::string UTF8ToUTF16(const std::string &, bool *errors = NULL); static std::string UTF8ToUTF16(const std::string &, bool *errors = nullptr);
//! Convert from UTF-8 to UTF-32 encoding //! Convert from UTF-8 to UTF-32 encoding
/*! /*!
Convert from UTF-8 to UTF-32. If errors is not NULL then *errors Convert from UTF-8 to UTF-32. If errors is not nullptr then *errors
is set to true iff any character could not be encoded in UTF-32. is set to true iff any character could not be encoded in UTF-32.
Decoding errors do not set *errors. Decoding errors do not set *errors.
*/ */
static std::string UTF8ToUTF32(const std::string &, bool *errors = NULL); static std::string UTF8ToUTF32(const std::string &, bool *errors = nullptr);
//! Convert from UTF-8 to the current locale encoding //! Convert from UTF-8 to the current locale encoding
/*! /*!
Convert from UTF-8 to the current locale encoding. If errors is not Convert from UTF-8 to the current locale encoding. If errors is not
NULL then *errors is set to true iff any character could not be encoded. nullptr then *errors is set to true iff any character could not be encoded.
Decoding errors do not set *errors. Decoding errors do not set *errors.
*/ */
static std::string UTF8ToText(const std::string &, bool *errors = NULL); static std::string UTF8ToText(const std::string &, bool *errors = nullptr);
//! Convert from UCS-2 to UTF-8 //! Convert from UCS-2 to UTF-8
/*! /*!
Convert from UCS-2 to UTF-8. If errors is not NULL then *errors is Convert from UCS-2 to UTF-8. If errors is not nullptr then *errors is
set to true iff any character could not be decoded. set to true iff any character could not be decoded.
*/ */
static std::string UCS2ToUTF8(const std::string &, bool *errors = NULL); static std::string UCS2ToUTF8(const std::string &, bool *errors = nullptr);
//! Convert from UCS-4 to UTF-8 //! Convert from UCS-4 to UTF-8
/*! /*!
Convert from UCS-4 to UTF-8. If errors is not NULL then *errors is Convert from UCS-4 to UTF-8. If errors is not nullptr then *errors is
set to true iff any character could not be decoded. set to true iff any character could not be decoded.
*/ */
static std::string UCS4ToUTF8(const std::string &, bool *errors = NULL); static std::string UCS4ToUTF8(const std::string &, bool *errors = nullptr);
//! Convert from UTF-16 to UTF-8 //! Convert from UTF-16 to UTF-8
/*! /*!
Convert from UTF-16 to UTF-8. If errors is not NULL then *errors is Convert from UTF-16 to UTF-8. If errors is not nullptr then *errors is
set to true iff any character could not be decoded. set to true iff any character could not be decoded.
*/ */
static std::string UTF16ToUTF8(const std::string &, bool *errors = NULL); static std::string UTF16ToUTF8(const std::string &, bool *errors = nullptr);
//! Convert from UTF-32 to UTF-8 //! Convert from UTF-32 to UTF-8
/*! /*!
Convert from UTF-32 to UTF-8. If errors is not NULL then *errors is Convert from UTF-32 to UTF-8. If errors is not nullptr then *errors is
set to true iff any character could not be decoded. set to true iff any character could not be decoded.
*/ */
static std::string UTF32ToUTF8(const std::string &, bool *errors = NULL); static std::string UTF32ToUTF8(const std::string &, bool *errors = nullptr);
//! Convert from the current locale encoding to UTF-8 //! Convert from the current locale encoding to UTF-8
/*! /*!
Convert from the current locale encoding to UTF-8. If errors is not Convert from the current locale encoding to UTF-8. If errors is not
NULL then *errors is set to true iff any character could not be decoded. nullptr then *errors is set to true iff any character could not be decoded.
*/ */
static std::string textToUTF8( static std::string textToUTF8(
const std::string &, bool *errors = nullptr, const std::string &, bool *errors = nullptr,

View file

@ -55,9 +55,9 @@ Client::Client(
m_serverAddress(address), m_serverAddress(address),
m_socketFactory(socketFactory), m_socketFactory(socketFactory),
m_screen(screen), m_screen(screen),
m_stream(NULL), m_stream(nullptr),
m_timer(NULL), m_timer(nullptr),
m_server(NULL), m_server(nullptr),
m_ready(false), m_ready(false),
m_active(false), m_active(false),
m_suspended(false), m_suspended(false),
@ -70,8 +70,8 @@ Client::Client(
m_enableClipboard(true), m_enableClipboard(true),
m_maximumClipboardSize(INT_MAX) m_maximumClipboardSize(INT_MAX)
{ {
assert(m_socketFactory != NULL); assert(m_socketFactory != nullptr);
assert(m_screen != NULL); assert(m_screen != nullptr);
// register suspend/resume event handlers // register suspend/resume event handlers
m_events->adoptHandler( m_events->adoptHandler(
@ -123,7 +123,7 @@ Client::~Client()
void Client::connect(size_t addressIndex) void Client::connect(size_t addressIndex)
{ {
if (m_stream != NULL) { if (m_stream != nullptr) {
return; return;
} }
if (m_suspended) { if (m_suspended) {
@ -179,7 +179,7 @@ void Client::disconnect(const char *msg)
if (msg) { if (msg) {
sendConnectionFailedEvent(msg); sendConnectionFailedEvent(msg);
} else { } else {
sendEvent(m_events->forClient().disconnected(), NULL); sendEvent(m_events->forClient().disconnected(), nullptr);
} }
} }
@ -199,17 +199,17 @@ void Client::handshakeComplete()
{ {
m_ready = true; m_ready = true;
m_screen->enable(); m_screen->enable();
sendEvent(m_events->forClient().connected(), NULL); sendEvent(m_events->forClient().connected(), nullptr);
} }
bool Client::isConnected() const bool Client::isConnected() const
{ {
return (m_server != NULL); return (m_server != nullptr);
} }
bool Client::isConnecting() const bool Client::isConnecting() const
{ {
return (m_timer != NULL); return (m_timer != nullptr);
} }
NetworkAddress Client::getServerAddress() const NetworkAddress Client::getServerAddress() const
@ -373,8 +373,8 @@ std::string Client::getName() const
void Client::sendClipboard(ClipboardID id) void Client::sendClipboard(ClipboardID id)
{ {
// note -- m_mutex must be locked on entry // note -- m_mutex must be locked on entry
assert(m_screen != NULL); assert(m_screen != nullptr);
assert(m_server != NULL); assert(m_server != nullptr);
// get clipboard data. set the clipboard time to the last // get clipboard data. set the clipboard time to the last
// clipboard time before getting the data from the screen // clipboard time before getting the data from the screen
@ -427,7 +427,7 @@ void Client::sendFileChunk(const void *data)
{ {
FileChunk *chunk = static_cast<FileChunk *>(const_cast<void *>(data)); FileChunk *chunk = static_cast<FileChunk *>(const_cast<void *>(data));
LOG((CLOG_DEBUG1 "send file chunk")); LOG((CLOG_DEBUG1 "send file chunk"));
assert(m_server != NULL); assert(m_server != nullptr);
// relay // relay
m_server->fileChunkSending(chunk->m_chunk[0], &chunk->m_chunk[1], chunk->m_dataSize); m_server->fileChunkSending(chunk->m_chunk[0], &chunk->m_chunk[1], chunk->m_dataSize);
@ -435,7 +435,7 @@ void Client::sendFileChunk(const void *data)
void Client::setupConnecting() void Client::setupConnecting()
{ {
assert(m_stream != NULL); assert(m_stream != nullptr);
if (m_args.m_enableCrypto) { if (m_args.m_enableCrypto) {
m_events->adoptHandler( m_events->adoptHandler(
@ -457,7 +457,7 @@ void Client::setupConnecting()
void Client::setupConnection() void Client::setupConnection()
{ {
assert(m_stream != NULL); assert(m_stream != nullptr);
m_events->adoptHandler( m_events->adoptHandler(
m_events->forISocket().disconnected(), m_stream->getEventTarget(), m_events->forISocket().disconnected(), m_stream->getEventTarget(),
@ -488,7 +488,7 @@ void Client::setupConnection()
void Client::setupScreen() void Client::setupScreen()
{ {
assert(m_server == NULL); assert(m_server == nullptr);
m_ready = false; m_ready = false;
m_server = new ServerProxy(this, m_stream, m_events); m_server = new ServerProxy(this, m_stream, m_events);
@ -504,8 +504,8 @@ void Client::setupScreen()
void Client::setupTimer() void Client::setupTimer()
{ {
assert(m_timer == NULL); assert(m_timer == nullptr);
m_timer = m_events->newOneShotTimer(2.0, NULL); m_timer = m_events->newOneShotTimer(2.0, nullptr);
m_events->adoptHandler(Event::kTimer, m_timer, new TMethodEventJob<Client>(this, &Client::handleConnectTimeout)); m_events->adoptHandler(Event::kTimer, m_timer, new TMethodEventJob<Client>(this, &Client::handleConnectTimeout));
} }
@ -520,7 +520,7 @@ void Client::cleanup()
void Client::cleanupConnecting() void Client::cleanupConnecting()
{ {
if (m_stream != NULL) { if (m_stream != nullptr) {
m_events->removeHandler(m_events->forIDataSocket().connected(), m_stream->getEventTarget()); m_events->removeHandler(m_events->forIDataSocket().connected(), m_stream->getEventTarget());
m_events->removeHandler(m_events->forIDataSocket().connectionFailed(), m_stream->getEventTarget()); m_events->removeHandler(m_events->forIDataSocket().connectionFailed(), m_stream->getEventTarget());
} }
@ -528,7 +528,7 @@ void Client::cleanupConnecting()
void Client::cleanupConnection() void Client::cleanupConnection()
{ {
if (m_stream != NULL) { if (m_stream != nullptr) {
m_events->removeHandler(m_events->forIStream().inputReady(), m_stream->getEventTarget()); m_events->removeHandler(m_events->forIStream().inputReady(), m_stream->getEventTarget());
m_events->removeHandler(m_events->forIStream().outputError(), m_stream->getEventTarget()); m_events->removeHandler(m_events->forIStream().outputError(), m_stream->getEventTarget());
m_events->removeHandler(m_events->forIStream().inputShutdown(), m_stream->getEventTarget()); m_events->removeHandler(m_events->forIStream().inputShutdown(), m_stream->getEventTarget());
@ -541,7 +541,7 @@ void Client::cleanupConnection()
void Client::cleanupScreen() void Client::cleanupScreen()
{ {
if (m_server != NULL) { if (m_server != nullptr) {
if (m_ready) { if (m_ready) {
m_screen->disable(); m_screen->disable();
m_ready = false; m_ready = false;
@ -549,23 +549,23 @@ void Client::cleanupScreen()
m_events->removeHandler(m_events->forIScreen().shapeChanged(), getEventTarget()); m_events->removeHandler(m_events->forIScreen().shapeChanged(), getEventTarget());
m_events->removeHandler(m_events->forClipboard().clipboardGrabbed(), getEventTarget()); m_events->removeHandler(m_events->forClipboard().clipboardGrabbed(), getEventTarget());
delete m_server; delete m_server;
m_server = NULL; m_server = nullptr;
} }
} }
void Client::cleanupTimer() void Client::cleanupTimer()
{ {
if (m_timer != NULL) { if (m_timer != nullptr) {
m_events->removeHandler(Event::kTimer, m_timer); m_events->removeHandler(Event::kTimer, m_timer);
m_events->deleteTimer(m_timer); m_events->deleteTimer(m_timer);
m_timer = NULL; m_timer = nullptr;
} }
} }
void Client::cleanupStream() void Client::cleanupStream()
{ {
delete m_stream; delete m_stream;
m_stream = NULL; m_stream = nullptr;
} }
void Client::handleConnected(const Event &, void *) void Client::handleConnected(const Event &, void *)
@ -610,7 +610,7 @@ void Client::handleOutputError(const Event &, void *)
cleanupScreen(); cleanupScreen();
cleanupConnection(); cleanupConnection();
LOG((CLOG_WARN "error sending to server")); LOG((CLOG_WARN "error sending to server"));
sendEvent(m_events->forClient().disconnected(), NULL); sendEvent(m_events->forClient().disconnected(), nullptr);
} }
void Client::handleDisconnected(const Event &, void *) void Client::handleDisconnected(const Event &, void *)
@ -619,7 +619,7 @@ void Client::handleDisconnected(const Event &, void *)
cleanupScreen(); cleanupScreen();
cleanupConnection(); cleanupConnection();
LOG((CLOG_DEBUG1 "disconnected")); LOG((CLOG_DEBUG1 "disconnected"));
sendEvent(m_events->forClient().disconnected(), NULL); sendEvent(m_events->forClient().disconnected(), nullptr);
} }
void Client::handleShapeChanged(const Event &, void *) void Client::handleShapeChanged(const Event &, void *)
@ -673,7 +673,7 @@ void Client::handleSuspend(const Event &, void *)
LOG((CLOG_INFO "suspend")); LOG((CLOG_INFO "suspend"));
m_suspended = true; m_suspended = true;
bool wasConnected = isConnected(); bool wasConnected = isConnected();
disconnect(NULL); disconnect(nullptr);
m_connectOnResume = wasConnected; m_connectOnResume = wasConnected;
} }
} }

View file

@ -43,12 +43,12 @@ ServerProxy::ServerProxy(Client *client, deskflow::IStream *stream, IEventQueue
m_dyMouse(0), m_dyMouse(0),
m_ignoreMouse(false), m_ignoreMouse(false),
m_keepAliveAlarm(0.0), m_keepAliveAlarm(0.0),
m_keepAliveAlarmTimer(NULL), m_keepAliveAlarmTimer(nullptr),
m_parser(&ServerProxy::parseHandshakeMessage), m_parser(&ServerProxy::parseHandshakeMessage),
m_events(events) m_events(events)
{ {
assert(m_client != NULL); assert(m_client != nullptr);
assert(m_stream != NULL); assert(m_stream != nullptr);
// initialize modifier translation table // initialize modifier translation table
for (KeyModifierID id = 0; id < kKeyModifierIDLast; ++id) for (KeyModifierID id = 0; id < kKeyModifierIDLast; ++id)
@ -77,13 +77,13 @@ ServerProxy::~ServerProxy()
void ServerProxy::resetKeepAliveAlarm() void ServerProxy::resetKeepAliveAlarm()
{ {
if (m_keepAliveAlarmTimer != NULL) { if (m_keepAliveAlarmTimer != nullptr) {
m_events->removeHandler(Event::kTimer, m_keepAliveAlarmTimer); m_events->removeHandler(Event::kTimer, m_keepAliveAlarmTimer);
m_events->deleteTimer(m_keepAliveAlarmTimer); m_events->deleteTimer(m_keepAliveAlarmTimer);
m_keepAliveAlarmTimer = NULL; m_keepAliveAlarmTimer = nullptr;
} }
if (m_keepAliveAlarm > 0.0) { if (m_keepAliveAlarm > 0.0) {
m_keepAliveAlarmTimer = m_events->newOneShotTimer(m_keepAliveAlarm, NULL); m_keepAliveAlarmTimer = m_events->newOneShotTimer(m_keepAliveAlarm, nullptr);
m_events->adoptHandler( m_events->adoptHandler(
Event::kTimer, m_keepAliveAlarmTimer, new TMethodEventJob<ServerProxy>(this, &ServerProxy::handleKeepAliveAlarm) Event::kTimer, m_keepAliveAlarmTimer, new TMethodEventJob<ServerProxy>(this, &ServerProxy::handleKeepAliveAlarm)
); );
@ -177,7 +177,7 @@ ServerProxy::EResult ServerProxy::parseHandshakeMessage(const uint8_t *code)
else if (memcmp(code, kMsgCClose, 4) == 0) { else if (memcmp(code, kMsgCClose, 4) == 0) {
// server wants us to hangup // server wants us to hangup
LOG((CLOG_DEBUG1 "recv close")); LOG((CLOG_DEBUG1 "recv close"));
m_client->disconnect(NULL); m_client->disconnect(nullptr);
return kDisconnect; return kDisconnect;
} }
@ -324,7 +324,7 @@ ServerProxy::EResult ServerProxy::parseMessage(const uint8_t *code)
else if (memcmp(code, kMsgCClose, 4) == 0) { else if (memcmp(code, kMsgCClose, 4) == 0) {
// server wants us to hangup // server wants us to hangup
LOG((CLOG_DEBUG1 "recv close")); LOG((CLOG_DEBUG1 "recv close"));
m_client->disconnect(NULL); m_client->disconnect(nullptr);
return kDisconnect; return kDisconnect;
} else if (memcmp(code, kMsgEBad, 4) == 0) { } else if (memcmp(code, kMsgEBad, 4) == 0) {
LOG((CLOG_ERR "server disconnected due to a protocol error")); LOG((CLOG_ERR "server disconnected due to a protocol error"));

View file

@ -60,7 +60,7 @@ public:
#ifdef TEST_ENV #ifdef TEST_ENV
void handleDataForTest() void handleDataForTest()
{ {
handleData(Event(), NULL); handleData(Event(), nullptr);
} }
#endif #endif

View file

@ -16,7 +16,7 @@
#error "config.h missing" #error "config.h missing"
#endif #endif
// define NULL // define nullptr
#include <stddef.h> #include <stddef.h>
// make assert available since we use it a lot // make assert available since we use it a lot

View file

@ -131,7 +131,7 @@ int App::daemonMainLoop(int, const char **)
void App::setupFileLogging() void App::setupFileLogging()
{ {
if (argsBase().m_logFile != NULL) { if (argsBase().m_logFile != nullptr) {
m_fileLog = new FileLogOutputter(argsBase().m_logFile); // NOSONAR - Adopted by `Log` m_fileLog = new FileLogOutputter(argsBase().m_logFile); // NOSONAR - Adopted by `Log`
CLOG->insert(m_fileLog); CLOG->insert(m_fileLog);
LOG((CLOG_DEBUG1 "logging to file (%s) enabled", argsBase().m_logFile)); LOG((CLOG_DEBUG1 "logging to file (%s) enabled", argsBase().m_logFile));
@ -141,7 +141,7 @@ void App::setupFileLogging()
void App::loggingFilterWarning() void App::loggingFilterWarning()
{ {
if (CLOG->getFilter() > CLOG->getConsoleMaxLevel()) { if (CLOG->getFilter() > CLOG->getConsoleMaxLevel()) {
if (argsBase().m_logFile == NULL) { if (argsBase().m_logFile == nullptr) {
LOG( LOG(
(CLOG_WARN "log messages above %s are NOT sent to console (use file logging)", (CLOG_WARN "log messages above %s are NOT sent to console (use file logging)",
CLOG->getFilterName(CLOG->getConsoleMaxLevel())) CLOG->getFilterName(CLOG->getConsoleMaxLevel()))
@ -206,7 +206,7 @@ void App::runEventsLoop(void *)
// MinimalApp // MinimalApp
// //
MinimalApp::MinimalApp() : App(NULL, new deskflow::ArgsBase()) MinimalApp::MinimalApp() : App(nullptr, new deskflow::ArgsBase())
{ {
m_arch.init(); m_arch.init();
setEvents(m_events); setEvents(m_events);
@ -242,7 +242,7 @@ int MinimalApp::foregroundStartup(int argc, char **argv)
deskflow::Screen *MinimalApp::createScreen() deskflow::Screen *MinimalApp::createScreen()
{ {
return NULL; return nullptr;
} }
void MinimalApp::loadConfig() void MinimalApp::loadConfig()

View file

@ -62,9 +62,9 @@
ClientApp::ClientApp(IEventQueue *events) ClientApp::ClientApp(IEventQueue *events)
: App(events, new deskflow::ClientArgs()), : App(events, new deskflow::ClientArgs()),
m_client(NULL), m_client(nullptr),
m_clientScreen(NULL), m_clientScreen(nullptr),
m_serverAddress(NULL) m_serverAddress(nullptr)
{ {
} }
@ -258,7 +258,7 @@ deskflow::Screen *ClientApp::openClientScreen()
void ClientApp::closeClientScreen(deskflow::Screen *screen) void ClientApp::closeClientScreen(deskflow::Screen *screen)
{ {
if (screen != NULL) { if (screen != nullptr) {
m_events->removeHandler(m_events->forIScreen().error(), screen->getEventTarget()); m_events->removeHandler(m_events->forIScreen().error(), screen->getEventTarget());
delete screen; delete screen;
} }
@ -279,7 +279,7 @@ void ClientApp::scheduleClientRestart(double retryTime)
{ {
// install a timer and handler to retry later // install a timer and handler to retry later
LOG((CLOG_DEBUG "retry in %.0f seconds", retryTime)); LOG((CLOG_DEBUG "retry in %.0f seconds", retryTime));
EventQueueTimer *timer = m_events->newOneShotTimer(retryTime, NULL); EventQueueTimer *timer = m_events->newOneShotTimer(retryTime, nullptr);
m_events->adoptHandler( m_events->adoptHandler(
Event::kTimer, timer, new TMethodEventJob<ClientApp>(this, &ClientApp::handleClientRestart, timer) Event::kTimer, timer, new TMethodEventJob<ClientApp>(this, &ClientApp::handleClientRestart, timer)
); );
@ -370,7 +370,7 @@ Client *ClientApp::openClient(const std::string &name, const NetworkAddress &add
void ClientApp::closeClient(Client *client) void ClientApp::closeClient(Client *client)
{ {
if (client == NULL) { if (client == nullptr) {
return; return;
} }
@ -392,9 +392,9 @@ int ClientApp::foregroundStartup(int argc, char **argv)
bool ClientApp::startClient() bool ClientApp::startClient()
{ {
double retryTime; double retryTime;
deskflow::Screen *clientScreen = NULL; deskflow::Screen *clientScreen = nullptr;
try { try {
if (m_clientScreen == NULL) { if (m_clientScreen == nullptr) {
clientScreen = openClientScreen(); clientScreen = openClientScreen();
m_client = openClient(args().m_name, *m_serverAddress, clientScreen); m_client = openClient(args().m_name, *m_serverAddress, clientScreen);
m_clientScreen = clientScreen; m_clientScreen = clientScreen;
@ -433,8 +433,8 @@ void ClientApp::stopClient()
{ {
closeClient(m_client); closeClient(m_client);
closeClientScreen(m_clientScreen); closeClientScreen(m_clientScreen);
m_client = NULL; m_client = nullptr;
m_clientScreen = NULL; m_clientScreen = nullptr;
} }
int ClientApp::mainLoop() int ClientApp::mainLoop()
@ -454,7 +454,7 @@ int ClientApp::mainLoop()
#if WINAPI_CARBON #if WINAPI_CARBON
Thread thread(new TMethodJob<ClientApp>(this, &ClientApp::runEventsLoop, NULL)); Thread thread(new TMethodJob<ClientApp>(this, &ClientApp::runEventsLoop, nullptr));
// wait until carbon loop is ready // wait until carbon loop is ready
OSXScreen *screen = dynamic_cast<OSXScreen *>(m_clientScreen->getPlatformScreen()); OSXScreen *screen = dynamic_cast<OSXScreen *>(m_clientScreen->getPlatformScreen());

View file

@ -15,7 +15,7 @@
void IClipboard::unmarshall(IClipboard *clipboard, const std::string &data, Time time) void IClipboard::unmarshall(IClipboard *clipboard, const std::string &data, Time time)
{ {
assert(clipboard != NULL); assert(clipboard != nullptr);
const char *index = data.data(); const char *index = data.data();
@ -60,7 +60,7 @@ std::string IClipboard::marshall(const IClipboard *clipboard)
// n bytes => clipboard data // n bytes => clipboard data
// back to the second 4 bytes if there is another format // back to the second 4 bytes if there is another format
assert(clipboard != NULL); assert(clipboard != nullptr);
std::string data; std::string data;
@ -100,16 +100,16 @@ std::string IClipboard::marshall(const IClipboard *clipboard)
bool IClipboard::copy(IClipboard *dst, const IClipboard *src) bool IClipboard::copy(IClipboard *dst, const IClipboard *src)
{ {
assert(dst != NULL); assert(dst != nullptr);
assert(src != NULL); assert(src != nullptr);
return copy(dst, src, src->getTime()); return copy(dst, src, src->getTime());
} }
bool IClipboard::copy(IClipboard *dst, const IClipboard *src, Time time) bool IClipboard::copy(IClipboard *dst, const IClipboard *src, Time time)
{ {
assert(dst != NULL); assert(dst != nullptr);
assert(src != NULL); assert(src != nullptr);
bool success = false; bool success = false;
if (src->open(time)) { if (src->open(time)) {

View file

@ -30,7 +30,7 @@ IKeyState::KeyInfo *IKeyState::KeyInfo::alloc(KeyID id, KeyModifierMask mask, Ke
info->m_mask = mask; info->m_mask = mask;
info->m_button = button; info->m_button = button;
info->m_count = count; info->m_count = count;
info->m_screens = NULL; info->m_screens = nullptr;
info->m_screensBuffer[0] = '\0'; info->m_screensBuffer[0] = '\0';
return info; return info;
} }
@ -61,14 +61,14 @@ IKeyState::KeyInfo *IKeyState::KeyInfo::alloc(const KeyInfo &x)
info->m_mask = x.m_mask; info->m_mask = x.m_mask;
info->m_button = x.m_button; info->m_button = x.m_button;
info->m_count = x.m_count; info->m_count = x.m_count;
info->m_screens = x.m_screens ? info->m_screensBuffer : NULL; info->m_screens = x.m_screens ? info->m_screensBuffer : nullptr;
memcpy(info->m_screensBuffer, x.m_screensBuffer, bufferLen + 1); memcpy(info->m_screensBuffer, x.m_screensBuffer, bufferLen + 1);
return info; return info;
} }
bool IKeyState::KeyInfo::isDefault(const char *screens) bool IKeyState::KeyInfo::isDefault(const char *screens)
{ {
return (screens == NULL || screens[0] == '\0'); return (screens == nullptr || screens[0] == '\0');
} }
bool IKeyState::KeyInfo::contains(const char *screens, const std::string &name) bool IKeyState::KeyInfo::contains(const char *screens, const std::string &name)
@ -87,7 +87,7 @@ bool IKeyState::KeyInfo::contains(const char *screens, const std::string &name)
match += ":"; match += ":";
match += name; match += name;
match += ":"; match += ":";
return (strstr(screens, match.c_str()) != NULL); return (strstr(screens, match.c_str()) != nullptr);
} }
bool IKeyState::KeyInfo::equal(const KeyInfo *a, const KeyInfo *b) bool IKeyState::KeyInfo::equal(const KeyInfo *a, const KeyInfo *b)

View file

@ -17,10 +17,10 @@
namespace deskflow { namespace deskflow {
KeyMap::NameToKeyMap *KeyMap::s_nameToKeyMap = NULL; KeyMap::NameToKeyMap *KeyMap::s_nameToKeyMap = nullptr;
KeyMap::NameToModifierMap *KeyMap::s_nameToModifierMap = NULL; KeyMap::NameToModifierMap *KeyMap::s_nameToModifierMap = nullptr;
KeyMap::KeyToNameMap *KeyMap::s_keyToNameMap = NULL; KeyMap::KeyToNameMap *KeyMap::s_keyToNameMap = nullptr;
KeyMap::ModifierToNameMap *KeyMap::s_modifierToNameMap = NULL; KeyMap::ModifierToNameMap *KeyMap::s_modifierToNameMap = nullptr;
KeyMap::KeyMap() : m_numGroups(0), m_composeAcrossGroups(false) KeyMap::KeyMap() : m_numGroups(0), m_composeAcrossGroups(false)
{ {
@ -104,7 +104,7 @@ void KeyMap::addKeyAliasEntry(
) )
{ {
// if we can already generate the target as desired then we're done. // if we can already generate the target as desired then we're done.
if (findCompatibleKey(targetID, group, targetRequired, targetSensitive) != NULL) { if (findCompatibleKey(targetID, group, targetRequired, targetSensitive) != nullptr) {
return; return;
} }
@ -112,7 +112,7 @@ void KeyMap::addKeyAliasEntry(
for (int32_t gd = 0, n = getNumGroups(); gd < n; ++gd) { for (int32_t gd = 0, n = getNumGroups(); gd < n; ++gd) {
int32_t eg = getEffectiveGroup(group, gd); int32_t eg = getEffectiveGroup(group, gd);
const KeyItemList *sourceEntry = findCompatibleKey(sourceID, eg, sourceRequired, sourceSensitive); const KeyItemList *sourceEntry = findCompatibleKey(sourceID, eg, sourceRequired, sourceSensitive);
if (sourceEntry != NULL && sourceEntry->size() == 1) { if (sourceEntry != nullptr && sourceEntry->size() == 1) {
KeyMap::KeyItem targetItem = sourceEntry->back(); KeyMap::KeyItem targetItem = sourceEntry->back();
targetItem.m_id = targetID; targetItem.m_id = targetID;
targetItem.m_group = eg; targetItem.m_group = eg;
@ -243,10 +243,10 @@ const KeyMap::KeyItem *KeyMap::mapKey(
// handle group change // handle group change
if (id == kKeyNextGroup) { if (id == kKeyNextGroup) {
keys.push_back(Keystroke(1, false, false)); keys.push_back(Keystroke(1, false, false));
return NULL; return nullptr;
} else if (id == kKeyPrevGroup) { } else if (id == kKeyPrevGroup) {
keys.push_back(Keystroke(-1, false, false)); keys.push_back(Keystroke(-1, false, false));
return NULL; return nullptr;
} }
const KeyItem *item; const KeyItem *item;
@ -271,7 +271,7 @@ const KeyMap::KeyItem *KeyMap::mapKey(
case kKeySetModifiers: case kKeySetModifiers:
if (!keysForModifierState(0, group, activeModifiers, currentState, desiredMask, desiredMask, 0, keys)) { if (!keysForModifierState(0, group, activeModifiers, currentState, desiredMask, desiredMask, 0, keys)) {
LOG((CLOG_DEBUG1 "unable to set modifiers %04x", desiredMask)); LOG((CLOG_DEBUG1 "unable to set modifiers %04x", desiredMask));
return NULL; return nullptr;
} }
return &m_modifierKeyItem; return &m_modifierKeyItem;
@ -280,7 +280,7 @@ const KeyMap::KeyItem *KeyMap::mapKey(
0, group, activeModifiers, currentState, currentState & ~desiredMask, desiredMask, 0, keys 0, group, activeModifiers, currentState, currentState & ~desiredMask, desiredMask, 0, keys
)) { )) {
LOG((CLOG_DEBUG1 "unable to clear modifiers %04x", desiredMask)); LOG((CLOG_DEBUG1 "unable to clear modifiers %04x", desiredMask));
return NULL; return nullptr;
} }
return &m_modifierKeyItem; return &m_modifierKeyItem;
@ -293,7 +293,7 @@ const KeyMap::KeyItem *KeyMap::mapKey(
break; break;
} }
if (item != NULL) { if (item != nullptr) {
LOG((CLOG_DEBUG1 "mapped to %03x, new state %04x", item->m_button, currentState)); LOG((CLOG_DEBUG1 "mapped to %03x, new state %04x", item->m_button, currentState));
} }
return item; return item;
@ -336,7 +336,7 @@ KeyMap::findCompatibleKey(KeyID id, int32_t group, KeyModifierMask required, Key
KeyIDMap::const_iterator i = m_keyIDMap.find(id); KeyIDMap::const_iterator i = m_keyIDMap.find(id);
if (i == m_keyIDMap.end()) { if (i == m_keyIDMap.end()) {
return NULL; return nullptr;
} }
const KeyEntryList &entries = i->second[group]; const KeyEntryList &entries = i->second[group];
@ -347,7 +347,7 @@ KeyMap::findCompatibleKey(KeyID id, int32_t group, KeyModifierMask required, Key
} }
} }
return NULL; return nullptr;
} }
bool KeyMap::isHalfDuplex(KeyID key, KeyButton button) const bool KeyMap::isHalfDuplex(KeyID key, KeyButton button) const
@ -487,12 +487,12 @@ const KeyMap::KeyItem *KeyMap::mapCommandKey(
if (i == m_keyIDMap.end()) { if (i == m_keyIDMap.end()) {
// unknown key // unknown key
LOG((CLOG_DEBUG1 "key %04x is not on keyboard", id)); LOG((CLOG_DEBUG1 "key %04x is not on keyboard", id));
return NULL; return nullptr;
} }
const KeyGroupTable &keyGroupTable = i->second; const KeyGroupTable &keyGroupTable = i->second;
// find the first key that generates this KeyID // find the first key that generates this KeyID
const KeyItem *keyItem = NULL; const KeyItem *keyItem = nullptr;
int32_t numGroups = getNumGroups(); int32_t numGroups = getNumGroups();
for (int32_t groupOffset = 0; groupOffset < numGroups; ++groupOffset) { for (int32_t groupOffset = 0; groupOffset < numGroups; ++groupOffset) {
int32_t effectiveGroup = getEffectiveGroup(group, groupOffset); int32_t effectiveGroup = getEffectiveGroup(group, groupOffset);
@ -518,14 +518,14 @@ const KeyMap::KeyItem *KeyMap::mapCommandKey(
break; break;
} }
} }
if (keyItem != NULL) { if (keyItem != nullptr) {
break; break;
} }
} }
if (keyItem == NULL) { if (keyItem == nullptr) {
// no mapping for this keysym // no mapping for this keysym
LOG((CLOG_DEBUG1 "no mapping for key %04x", id)); LOG((CLOG_DEBUG1 "no mapping for key %04x", id));
return NULL; return nullptr;
} }
// make working copy of modifiers // make working copy of modifiers
@ -542,14 +542,14 @@ const KeyMap::KeyItem *KeyMap::mapCommandKey(
)) { )) {
LOG((CLOG_DEBUG1 "can't map key")); LOG((CLOG_DEBUG1 "can't map key"));
keys.clear(); keys.clear();
return NULL; return nullptr;
} }
// add keystrokes to restore modifier keys // add keystrokes to restore modifier keys
if (!keysToRestoreModifiers(*keyItem, group, newModifiers, newState, activeModifiers, keys)) { if (!keysToRestoreModifiers(*keyItem, group, newModifiers, newState, activeModifiers, keys)) {
LOG((CLOG_DEBUG1 "modifiers were not restored")); LOG((CLOG_DEBUG1 "modifiers were not restored"));
keys.clear(); keys.clear();
return NULL; return nullptr;
} }
// save new modifiers // save new modifiers
@ -589,7 +589,7 @@ const KeyMap::KeyItem *KeyMap::mapCharacterKey(
// unknown key // unknown key
LOG((CLOG_DEBUG1 "key %04x is not on keyboard", id)); LOG((CLOG_DEBUG1 "key %04x is not on keyboard", id));
return NULL; return nullptr;
} }
// get keys to press for key // get keys to press for key
@ -597,7 +597,7 @@ const KeyMap::KeyItem *KeyMap::mapCharacterKey(
if (!itemList || itemList->empty()) { if (!itemList || itemList->empty()) {
// no mapping for this keysym // no mapping for this keysym
LOG((CLOG_DEBUG1 "no mapping for key %04x", id)); LOG((CLOG_DEBUG1 "no mapping for key %04x", id));
return NULL; return nullptr;
} }
const KeyItem &keyItem = itemList->back(); const KeyItem &keyItem = itemList->back();
@ -612,7 +612,7 @@ const KeyMap::KeyItem *KeyMap::mapCharacterKey(
if (!keysForKeyItem(itemList->at(j), newGroup, newModifiers, newState, desiredMask, 0, isAutoRepeat, keys, lang)) { if (!keysForKeyItem(itemList->at(j), newGroup, newModifiers, newState, desiredMask, 0, isAutoRepeat, keys, lang)) {
LOG((CLOG_DEBUG1 "can't map key")); LOG((CLOG_DEBUG1 "can't map key"));
keys.clear(); keys.clear();
return NULL; return nullptr;
} }
} }
@ -620,7 +620,7 @@ const KeyMap::KeyItem *KeyMap::mapCharacterKey(
if (!keysToRestoreModifiers(keyItem, group, newModifiers, newState, activeModifiers, keys)) { if (!keysToRestoreModifiers(keyItem, group, newModifiers, newState, activeModifiers, keys)) {
LOG((CLOG_DEBUG1 "modifiers were not restored")); LOG((CLOG_DEBUG1 "modifiers were not restored"));
keys.clear(); keys.clear();
return NULL; return nullptr;
} }
// save new modifiers // save new modifiers
@ -691,7 +691,7 @@ const KeyMap::KeyItem *KeyMap::keyForModifier(KeyButton button, int32_t group, i
return (*i); return (*i);
} }
} }
return NULL; return nullptr;
} }
bool KeyMap::keysForKeyItem( bool KeyMap::keysForKeyItem(
@ -852,7 +852,7 @@ bool KeyMap::keysForModifierState(
// get the KeyItem for the modifier in the group // get the KeyItem for the modifier in the group
const KeyItem *keyItem = keyForModifier(button, group, bit); const KeyItem *keyItem = keyForModifier(button, group, bit);
if (keyItem == NULL) { if (keyItem == nullptr) {
if ((mask & notRequiredMask) == 0) { if ((mask & notRequiredMask) == 0) {
LOG((CLOG_DEBUG1 "no key for modifier %04x", mask)); LOG((CLOG_DEBUG1 "no key for modifier %04x", mask));
return false; return false;
@ -1199,18 +1199,18 @@ bool KeyMap::parseModifiers(std::string &x, KeyModifierMask &mask)
void KeyMap::initKeyNameMaps() void KeyMap::initKeyNameMaps()
{ {
// initialize tables // initialize tables
if (s_nameToKeyMap == NULL) { if (s_nameToKeyMap == nullptr) {
s_nameToKeyMap = new NameToKeyMap; s_nameToKeyMap = new NameToKeyMap;
s_keyToNameMap = new KeyToNameMap; s_keyToNameMap = new KeyToNameMap;
for (const KeyNameMapEntry *i = kKeyNameMap; i->m_name != NULL; ++i) { for (const KeyNameMapEntry *i = kKeyNameMap; i->m_name != nullptr; ++i) {
(*s_nameToKeyMap)[i->m_name] = i->m_id; (*s_nameToKeyMap)[i->m_name] = i->m_id;
(*s_keyToNameMap)[i->m_id] = i->m_name; (*s_keyToNameMap)[i->m_id] = i->m_name;
} }
} }
if (s_nameToModifierMap == NULL) { if (s_nameToModifierMap == nullptr) {
s_nameToModifierMap = new NameToModifierMap; s_nameToModifierMap = new NameToModifierMap;
s_modifierToNameMap = new ModifierToNameMap; s_modifierToNameMap = new ModifierToNameMap;
for (const KeyModifierNameMapEntry *i = kModifierNameMap; i->m_name != NULL; ++i) { for (const KeyModifierNameMapEntry *i = kModifierNameMap; i->m_name != nullptr; ++i) {
(*s_nameToModifierMap)[i->m_name] = i->m_mask; (*s_nameToModifierMap)[i->m_name] = i->m_mask;
(*s_modifierToNameMap)[i->m_mask] = i->m_name; (*s_modifierToNameMap)[i->m_mask] = i->m_name;
} }

View file

@ -211,7 +211,7 @@ public:
modifiers as given in \p currentState and the desired modifiers in modifiers as given in \p currentState and the desired modifiers in
\p desiredMask into the keystrokes necessary to synthesize that key \p desiredMask into the keystrokes necessary to synthesize that key
event in \p keys. It returns the \c KeyItem of the key being event in \p keys. It returns the \c KeyItem of the key being
pressed/repeated, or NULL if the key cannot be mapped. pressed/repeated, or nullptr if the key cannot be mapped.
*/ */
virtual const KeyItem *mapKey( virtual const KeyItem *mapKey(
Keystrokes &keys, KeyID id, int32_t group, ModifierToKeys &activeModifiers, KeyModifierMask &currentState, Keystrokes &keys, KeyID id, int32_t group, ModifierToKeys &activeModifiers, KeyModifierMask &currentState,
@ -235,7 +235,7 @@ public:
//! Find key entry compatible with modifiers //! Find key entry compatible with modifiers
/*! /*!
Returns the \c KeyItemList for the first entry for \p id in group Returns the \c KeyItemList for the first entry for \p id in group
\p group that is compatible with the given modifiers, or NULL \p group that is compatible with the given modifiers, or nullptr
if there isn't one. A button list is compatible with a modifiers if there isn't one. A button list is compatible with a modifiers
if it is either insensitive to all modifiers in \p sensitive or if it is either insensitive to all modifiers in \p sensitive or
it requires the modifiers to be in the state indicated by \p required it requires the modifiers to be in the state indicated by \p required

View file

@ -855,7 +855,7 @@ bool KeyState::fakeKeyRepeat(KeyID id, KeyModifierMask mask, int32_t count, KeyB
ModifierToKeys oldActiveModifiers = m_activeModifiers; ModifierToKeys oldActiveModifiers = m_activeModifiers;
const deskflow::KeyMap::KeyItem *keyItem = const deskflow::KeyMap::KeyItem *keyItem =
m_keyMap.mapKey(keys, id, pollActiveGroup(), m_activeModifiers, getActiveModifiersRValue(), mask, true, lang); m_keyMap.mapKey(keys, id, pollActiveGroup(), m_activeModifiers, getActiveModifiersRValue(), mask, true, lang);
if (keyItem == NULL) { if (keyItem == nullptr) {
return false; return false;
} }
KeyButton localID = (KeyButton)(keyItem->m_button & kButtonMask); KeyButton localID = (KeyButton)(keyItem->m_button & kButtonMask);
@ -996,7 +996,7 @@ bool KeyState::isIgnoredKey(KeyID key, KeyModifierMask) const
KeyButton KeyState::getButton(KeyID id, int32_t group) const KeyButton KeyState::getButton(KeyID id, int32_t group) const
{ {
const deskflow::KeyMap::KeyItemList *items = m_keyMap.findCompatibleKey(id, group, 0, 0); const deskflow::KeyMap::KeyItemList *items = m_keyMap.findCompatibleKey(id, group, 0, 0);
if (items == NULL) { if (items == nullptr) {
return 0; return 0;
} else { } else {
return items->back().m_button; return items->back().m_button;

View file

@ -180,7 +180,7 @@ const KeyNameMapEntry kKeyNameMap[] = {
{"Bar", 0x007c}, {"Bar", 0x007c},
{"BraceR", 0x007d}, {"BraceR", 0x007d},
{"Tilde", 0x007e}, {"Tilde", 0x007e},
{NULL, 0}, {nullptr, 0},
}; };
const KeyModifierNameMapEntry kModifierNameMap[] = { const KeyModifierNameMapEntry kModifierNameMap[] = {
@ -193,5 +193,5 @@ const KeyModifierNameMapEntry kModifierNameMap[] = {
// { "ScrollLock", KeyModifierScrollLock }, // { "ScrollLock", KeyModifierScrollLock },
{"Shift", KeyModifierShift}, {"Shift", KeyModifierShift},
{"Super", KeyModifierSuper}, {"Super", KeyModifierSuper},
{NULL, 0}, {nullptr, 0},
}; };

View file

@ -310,13 +310,13 @@ struct KeyModifierNameMapEntry
/*! /*!
A table of key names to the corresponding KeyID. Only the keys listed A table of key names to the corresponding KeyID. Only the keys listed
above plus non-alphanumeric ASCII characters are in the table. The end above plus non-alphanumeric ASCII characters are in the table. The end
of the table is the first pair with a NULL m_name. of the table is the first pair with a nullptr m_name.
*/ */
extern const struct KeyNameMapEntry kKeyNameMap[]; extern const struct KeyNameMapEntry kKeyNameMap[];
//! Modifier key name to KeyModifierMask table //! Modifier key name to KeyModifierMask table
/*! /*!
A table of modifier key names to the corresponding KeyModifierMask. A table of modifier key names to the corresponding KeyModifierMask.
The end of the table is the first pair with a NULL m_name. The end of the table is the first pair with a nullptr m_name.
*/ */
extern const struct KeyModifierNameMapEntry kModifierNameMap[]; extern const struct KeyModifierNameMapEntry kModifierNameMap[];

View file

@ -59,7 +59,7 @@ uint32_t PacketStreamFilter::read(void *buffer, uint32_t n)
} }
// read it // read it
if (buffer != NULL) { if (buffer != nullptr) {
memcpy(buffer, m_buffer.peek(n), n); memcpy(buffer, m_buffer.peek(n), n);
} }
m_buffer.pop(n); m_buffer.pop(n);

View file

@ -58,7 +58,7 @@ template <typename T> void writeVectorInt(const std::vector<T> *VectorData, std:
void writeString(const std::string *StringData, std::vector<uint8_t> &Buffer) void writeString(const std::string *StringData, std::vector<uint8_t> &Buffer)
{ {
const uint32_t len = (StringData != NULL) ? (uint32_t)StringData->size() : 0; const uint32_t len = (StringData != nullptr) ? (uint32_t)StringData->size() : 0;
writeInt(len, sizeof(len), Buffer); writeInt(len, sizeof(len), Buffer);
if (len != 0) { if (len != 0) {
std::copy(StringData->begin(), StringData->end(), std::back_inserter(Buffer)); std::copy(StringData->begin(), StringData->end(), std::back_inserter(Buffer));
@ -69,8 +69,8 @@ void writeString(const std::string *StringData, std::vector<uint8_t> &Buffer)
void ProtocolUtil::writef(deskflow::IStream *stream, const char *fmt, ...) void ProtocolUtil::writef(deskflow::IStream *stream, const char *fmt, ...)
{ {
assert(stream != NULL); assert(stream != nullptr);
assert(fmt != NULL); assert(fmt != nullptr);
LOG((CLOG_DEBUG2 "writef(%s)", fmt)); LOG((CLOG_DEBUG2 "writef(%s)", fmt));
va_list args; va_list args;
@ -106,8 +106,8 @@ bool ProtocolUtil::readf(deskflow::IStream *stream, const char *fmt, ...)
void ProtocolUtil::vwritef(deskflow::IStream *stream, const char *fmt, uint32_t size, va_list args) void ProtocolUtil::vwritef(deskflow::IStream *stream, const char *fmt, uint32_t size, va_list args)
{ {
assert(stream != NULL); assert(stream != nullptr);
assert(fmt != NULL); assert(fmt != nullptr);
// done if nothing to write // done if nothing to write
if (size == 0) { if (size == 0) {
@ -130,8 +130,8 @@ void ProtocolUtil::vwritef(deskflow::IStream *stream, const char *fmt, uint32_t
void ProtocolUtil::vreadf(deskflow::IStream *stream, const char *fmt, va_list args) void ProtocolUtil::vreadf(deskflow::IStream *stream, const char *fmt, va_list args)
{ {
assert(stream != NULL); assert(stream != nullptr);
assert(fmt != NULL); assert(fmt != nullptr);
// begin scanning // begin scanning
while (*fmt) { while (*fmt) {
@ -415,8 +415,8 @@ uint32_t ProtocolUtil::eatLength(const char **pfmt)
void ProtocolUtil::read(deskflow::IStream *stream, void *vbuffer, uint32_t count) void ProtocolUtil::read(deskflow::IStream *stream, void *vbuffer, uint32_t count)
{ {
assert(stream != NULL); assert(stream != nullptr);
assert(vbuffer != NULL); assert(vbuffer != nullptr);
uint8_t *buffer = static_cast<uint8_t *>(vbuffer); uint8_t *buffer = static_cast<uint8_t *>(vbuffer);
while (count > 0) { while (count > 0) {

View file

@ -29,7 +29,7 @@ Screen::Screen(IPlatformScreen *platformScreen, IEventQueue *events)
m_mock(false), m_mock(false),
m_enableDragDrop(false) m_enableDragDrop(false)
{ {
assert(m_screen != NULL); assert(m_screen != nullptr);
// reset options // reset options
resetOptions(); resetOptions();
@ -179,7 +179,7 @@ void Screen::setClipboard(ClipboardID id, const IClipboard *clipboard)
void Screen::grabClipboard(ClipboardID id) void Screen::grabClipboard(ClipboardID id)
{ {
m_screen->setClipboard(id, NULL); m_screen->setClipboard(id, nullptr);
} }
void Screen::screensaver(bool) const void Screen::screensaver(bool) const

View file

@ -70,13 +70,13 @@ using namespace deskflow::server;
ServerApp::ServerApp(IEventQueue *events) ServerApp::ServerApp(IEventQueue *events)
: App(events, new deskflow::ServerArgs()), : App(events, new deskflow::ServerArgs()),
m_server(NULL), m_server(nullptr),
m_serverState(kUninitialized), m_serverState(kUninitialized),
m_serverScreen(NULL), m_serverScreen(nullptr),
m_primaryClient(NULL), m_primaryClient(nullptr),
m_listener(NULL), m_listener(nullptr),
m_timer(NULL), m_timer(nullptr),
m_deskflowAddress(NULL) m_deskflowAddress(nullptr)
{ {
} }
@ -166,7 +166,7 @@ void ServerApp::reloadConfig(const Event &, void *)
{ {
LOG((CLOG_DEBUG "reload configuration")); LOG((CLOG_DEBUG "reload configuration"));
if (loadConfig(args().m_configFile)) { if (loadConfig(args().m_configFile)) {
if (m_server != NULL) { if (m_server != nullptr) {
m_server->setConfig(*args().m_config); m_server->setConfig(*args().m_config);
} }
LOG((CLOG_NOTE "reloaded configuration")); LOG((CLOG_NOTE "reloaded configuration"));
@ -209,7 +209,7 @@ bool ServerApp::loadConfig(const std::string &pathname)
void ServerApp::forceReconnect(const Event &, void *) void ServerApp::forceReconnect(const Event &, void *)
{ {
if (m_server != NULL) { if (m_server != nullptr) {
m_server->disconnect(); m_server->disconnect();
} }
} }
@ -218,7 +218,7 @@ void ServerApp::handleClientConnected(const Event &, void *vlistener)
{ {
ClientListener *listener = static_cast<ClientListener *>(vlistener); ClientListener *listener = static_cast<ClientListener *>(vlistener);
ClientProxy *client = listener->getNextClient(); ClientProxy *client = listener->getNextClient();
if (client != NULL) { if (client != nullptr) {
m_server->adoptClient(client); m_server->adoptClient(client);
updateStatus(); updateStatus();
} }
@ -231,7 +231,7 @@ void ServerApp::handleClientsDisconnected(const Event &, void *)
void ServerApp::closeServer(Server *server) void ServerApp::closeServer(Server *server)
{ {
if (server == NULL) { if (server == nullptr) {
return; return;
} }
@ -240,7 +240,7 @@ void ServerApp::closeServer(Server *server)
// wait for clients to disconnect for up to timeout seconds // wait for clients to disconnect for up to timeout seconds
double timeout = 3.0; double timeout = 3.0;
EventQueueTimer *timer = m_events->newOneShotTimer(timeout, NULL); EventQueueTimer *timer = m_events->newOneShotTimer(timeout, nullptr);
m_events->adoptHandler( m_events->adoptHandler(
Event::kTimer, timer, new TMethodEventJob<ServerApp>(this, &ServerApp::handleClientsDisconnected) Event::kTimer, timer, new TMethodEventJob<ServerApp>(this, &ServerApp::handleClientsDisconnected)
); );
@ -261,10 +261,10 @@ void ServerApp::closeServer(Server *server)
void ServerApp::stopRetryTimer() void ServerApp::stopRetryTimer()
{ {
if (m_timer != NULL) { if (m_timer != nullptr) {
m_events->removeHandler(Event::kTimer, m_timer); m_events->removeHandler(Event::kTimer, m_timer);
m_events->deleteTimer(m_timer); m_events->deleteTimer(m_timer);
m_timer = NULL; m_timer = nullptr;
} }
} }
@ -279,7 +279,7 @@ void ServerApp::updateStatus(const std::string &msg)
void ServerApp::closeClientListener(ClientListener *listen) void ServerApp::closeClientListener(ClientListener *listen)
{ {
if (listen != NULL) { if (listen != nullptr) {
m_events->removeHandler(m_events->forClientListener().connected(), listen); m_events->removeHandler(m_events->forClientListener().connected(), listen);
delete listen; delete listen;
} }
@ -290,15 +290,15 @@ void ServerApp::stopServer()
if (m_serverState == kStarted) { if (m_serverState == kStarted) {
closeServer(m_server); closeServer(m_server);
closeClientListener(m_listener); closeClientListener(m_listener);
m_server = NULL; m_server = nullptr;
m_listener = NULL; m_listener = nullptr;
m_serverState = kInitialized; m_serverState = kInitialized;
} else if (m_serverState == kStarting) { } else if (m_serverState == kStarting) {
stopRetryTimer(); stopRetryTimer();
m_serverState = kInitialized; m_serverState = kInitialized;
} }
assert(m_server == NULL); assert(m_server == nullptr);
assert(m_listener == NULL); assert(m_listener == nullptr);
} }
void ServerApp::closePrimaryClient(PrimaryClient *primaryClient) void ServerApp::closePrimaryClient(PrimaryClient *primaryClient)
@ -308,7 +308,7 @@ void ServerApp::closePrimaryClient(PrimaryClient *primaryClient)
void ServerApp::closeServerScreen(deskflow::Screen *screen) void ServerApp::closeServerScreen(deskflow::Screen *screen)
{ {
if (screen != NULL) { if (screen != nullptr) {
m_events->removeHandler(m_events->forIScreen().error(), screen->getEventTarget()); m_events->removeHandler(m_events->forIScreen().error(), screen->getEventTarget());
m_events->removeHandler(m_events->forIScreen().suspend(), screen->getEventTarget()); m_events->removeHandler(m_events->forIScreen().suspend(), screen->getEventTarget());
m_events->removeHandler(m_events->forIScreen().resume(), screen->getEventTarget()); m_events->removeHandler(m_events->forIScreen().resume(), screen->getEventTarget());
@ -322,22 +322,22 @@ void ServerApp::cleanupServer()
if (m_serverState == kInitialized) { if (m_serverState == kInitialized) {
closePrimaryClient(m_primaryClient); closePrimaryClient(m_primaryClient);
closeServerScreen(m_serverScreen); closeServerScreen(m_serverScreen);
m_primaryClient = NULL; m_primaryClient = nullptr;
m_serverScreen = NULL; m_serverScreen = nullptr;
m_serverState = kUninitialized; m_serverState = kUninitialized;
} else if (m_serverState == kInitializing || m_serverState == kInitializingToStart) { } else if (m_serverState == kInitializing || m_serverState == kInitializingToStart) {
stopRetryTimer(); stopRetryTimer();
m_serverState = kUninitialized; m_serverState = kUninitialized;
} }
assert(m_primaryClient == NULL); assert(m_primaryClient == nullptr);
assert(m_serverScreen == NULL); assert(m_serverScreen == nullptr);
assert(m_serverState == kUninitialized); assert(m_serverState == kUninitialized);
} }
void ServerApp::retryHandler(const Event &, void *) void ServerApp::retryHandler(const Event &, void *)
{ {
// discard old timer // discard old timer
assert(m_timer != NULL); assert(m_timer != nullptr);
stopRetryTimer(); stopRetryTimer();
// try initializing/starting the server again // try initializing/starting the server again
@ -387,8 +387,8 @@ bool ServerApp::initServer()
} }
double retryTime; double retryTime;
deskflow::Screen *serverScreen = NULL; deskflow::Screen *serverScreen = nullptr;
PrimaryClient *primaryClient = NULL; PrimaryClient *primaryClient = nullptr;
try { try {
std::string name = args().m_config->getCanonicalName(args().m_name); std::string name = args().m_config->getCanonicalName(args().m_name);
serverScreen = openServerScreen(); serverScreen = openServerScreen();
@ -418,9 +418,9 @@ bool ServerApp::initServer()
if (args().m_restartable) { if (args().m_restartable) {
// install a timer and handler to retry later // install a timer and handler to retry later
assert(m_timer == NULL); assert(m_timer == nullptr);
LOG((CLOG_DEBUG "retry in %.0f seconds", retryTime)); LOG((CLOG_DEBUG "retry in %.0f seconds", retryTime));
m_timer = m_events->newOneShotTimer(retryTime, NULL); m_timer = m_events->newOneShotTimer(retryTime, nullptr);
m_events->adoptHandler(Event::kTimer, m_timer, new TMethodEventJob<ServerApp>(this, &ServerApp::retryHandler)); m_events->adoptHandler(Event::kTimer, m_timer, new TMethodEventJob<ServerApp>(this, &ServerApp::retryHandler));
m_serverState = kInitializing; m_serverState = kInitializing;
return true; return true;
@ -470,7 +470,7 @@ bool ServerApp::startServer()
assert(m_serverState == kInitialized); assert(m_serverState == kInitialized);
} }
ClientListener *listener = NULL; ClientListener *listener = nullptr;
try { try {
listener = openClientListener(args().m_config->getDeskflowAddress()); listener = openClientListener(args().m_config->getDeskflowAddress());
m_server = openServer(*args().m_config, m_primaryClient); m_server = openServer(*args().m_config, m_primaryClient);
@ -497,10 +497,10 @@ bool ServerApp::startServer()
if (args().m_restartable) { if (args().m_restartable) {
// install a timer and handler to retry later // install a timer and handler to retry later
assert(m_timer == NULL); assert(m_timer == nullptr);
const auto retryTime = 10.0; const auto retryTime = 10.0;
LOG((CLOG_DEBUG "retry in %.0f seconds", retryTime)); LOG((CLOG_DEBUG "retry in %.0f seconds", retryTime));
m_timer = m_events->newOneShotTimer(retryTime, NULL); m_timer = m_events->newOneShotTimer(retryTime, nullptr);
m_events->adoptHandler(Event::kTimer, m_timer, new TMethodEventJob<ServerApp>(this, &ServerApp::retryHandler)); m_events->adoptHandler(Event::kTimer, m_timer, new TMethodEventJob<ServerApp>(this, &ServerApp::retryHandler));
m_serverState = kStarting; m_serverState = kStarting;
return true; return true;
@ -655,7 +655,7 @@ int ServerApp::mainLoop()
appUtil().startNode(); appUtil().startNode();
// handle hangup signal by reloading the server's configuration // handle hangup signal by reloading the server's configuration
ARCH->setSignalHandler(Arch::kHANGUP, &reloadSignalHandler, NULL); ARCH->setSignalHandler(Arch::kHANGUP, &reloadSignalHandler, nullptr);
m_events->adoptHandler( m_events->adoptHandler(
m_events->forServerApp().reloadConfig(), m_events->getSystemTarget(), m_events->forServerApp().reloadConfig(), m_events->getSystemTarget(),
new TMethodEventJob<ServerApp>(this, &ServerApp::reloadConfig) new TMethodEventJob<ServerApp>(this, &ServerApp::reloadConfig)
@ -682,7 +682,7 @@ int ServerApp::mainLoop()
#if WINAPI_CARBON #if WINAPI_CARBON
Thread thread(new TMethodJob<ServerApp>(this, &ServerApp::runEventsLoop, NULL)); Thread thread(new TMethodJob<ServerApp>(this, &ServerApp::runEventsLoop, nullptr));
// wait until carbon loop is ready // wait until carbon loop is ready
OSXScreen *screen = dynamic_cast<OSXScreen *>(m_serverScreen->getPlatformScreen()); OSXScreen *screen = dynamic_cast<OSXScreen *>(m_serverScreen->getPlatformScreen());

View file

@ -27,7 +27,7 @@ static const size_t g_chunkSize = 512 * 1024; // 512kb
bool StreamChunker::s_isChunkingFile = false; bool StreamChunker::s_isChunkingFile = false;
bool StreamChunker::s_interruptFile = false; bool StreamChunker::s_interruptFile = false;
Mutex *StreamChunker::s_interruptMutex = NULL; Mutex *StreamChunker::s_interruptMutex = nullptr;
void StreamChunker::sendFile(char *filename, IEventQueue *events, void *eventTarget) void StreamChunker::sendFile(char *filename, IEventQueue *events, void *eventTarget)
{ {

View file

@ -60,7 +60,9 @@ std::vector<std::string> AppUtilUnix::getKeyboardLayoutList()
#elif WINAPI_CARBON #elif WINAPI_CARBON
CFStringRef keys[] = {kTISPropertyInputSourceCategory}; CFStringRef keys[] = {kTISPropertyInputSourceCategory};
CFStringRef values[] = {kTISCategoryKeyboardInputSource}; CFStringRef values[] = {kTISCategoryKeyboardInputSource};
AutoCFDictionary dict(CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, 1, NULL, NULL), CFRelease); AutoCFDictionary dict(
CFDictionaryCreate(nullptr, (const void **)keys, (const void **)values, 1, nullptr, nullptr), CFRelease
);
AutoCFArray kbds(TISCreateInputSourceList(dict.get(), false), CFRelease); AutoCFArray kbds(TISCreateInputSourceList(dict.get(), false), CFRelease);
for (CFIndex i = 0; i < CFArrayGetCount(kbds.get()); ++i) { for (CFIndex i = 0; i < CFArrayGetCount(kbds.get()); ++i) {

View file

@ -109,7 +109,7 @@ int AppUtilWindows::run(int argc, char **argv)
} }
// record window instance for tray icon, etc // record window instance for tray icon, etc
ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL)); ArchMiscWindows::setInstanceWin32(GetModuleHandle(nullptr));
MSWindowsScreen::init(ArchMiscWindows::instanceWin32()); MSWindowsScreen::init(ArchMiscWindows::instanceWin32());
Thread::getCurrentThread().setPriority(-14); Thread::getCurrentThread().setPriority(-14);
@ -139,7 +139,7 @@ std::vector<std::string> AppUtilWindows::getKeyboardLayoutList()
{ {
std::vector<std::string> layoutLangCodes; std::vector<std::string> layoutLangCodes;
{ {
auto uLayouts = GetKeyboardLayoutList(0, NULL); auto uLayouts = GetKeyboardLayoutList(0, nullptr);
auto lpList = (HKL *)LocalAlloc(LPTR, (uLayouts * sizeof(HKL))); auto lpList = (HKL *)LocalAlloc(LPTR, (uLayouts * sizeof(HKL)));
uLayouts = GetKeyboardLayoutList(uLayouts, lpList); uLayouts = GetKeyboardLayoutList(uLayouts, lpList);
@ -178,7 +178,7 @@ HKL AppUtilWindows::getCurrentKeyboardLayout() const
GUITHREADINFO gti = {sizeof(GUITHREADINFO)}; GUITHREADINFO gti = {sizeof(GUITHREADINFO)};
if (GetGUIThreadInfo(0, &gti) && gti.hwndActive) { if (GetGUIThreadInfo(0, &gti) && gti.hwndActive) {
layout = GetKeyboardLayout(GetWindowThreadProcessId(gti.hwndActive, NULL)); layout = GetKeyboardLayout(GetWindowThreadProcessId(gti.hwndActive, nullptr));
} else { } else {
LOG((CLOG_WARN "failed to determine current keyboard layout")); LOG((CLOG_WARN "failed to determine current keyboard layout"));
} }

View file

@ -17,7 +17,7 @@
const QString ScreenSetupModel::m_MimeType = "application/x-deskflow-screen"; const QString ScreenSetupModel::m_MimeType = "application/x-deskflow-screen";
ScreenSetupModel::ScreenSetupModel(ScreenList &screens, int numColumns, int numRows) ScreenSetupModel::ScreenSetupModel(ScreenList &screens, int numColumns, int numRows)
: QAbstractTableModel(NULL), : QAbstractTableModel(nullptr),
m_Screens(screens), m_Screens(screens),
m_NumColumns(numColumns), m_NumColumns(numColumns),
m_NumRows(numRows) m_NumRows(numRows)

View file

@ -122,7 +122,7 @@ void ScreenSetupView::startDrag(Qt::DropActions)
return; return;
QMimeData *pData = model()->mimeData(indexes); QMimeData *pData = model()->mimeData(indexes);
if (pData == NULL) if (pData == nullptr)
return; return;
const QPixmap &pixmap = model()->screen(indexes[0]).pixmap(); const QPixmap &pixmap = model()->screen(indexes[0]).pixmap();

View file

@ -44,7 +44,7 @@ public:
/*! /*!
Read up to \p n bytes into \p buffer, returning the number read Read up to \p n bytes into \p buffer, returning the number read
(zero if no data is available or input is shutdown). \p buffer (zero if no data is available or input is shutdown). \p buffer
may be NULL in which case the data is discarded. may be nullptr in which case the data is discarded.
*/ */
virtual uint32_t read(void *buffer, uint32_t n) = 0; virtual uint32_t read(void *buffer, uint32_t n) = 0;

View file

@ -28,10 +28,10 @@ const void *StreamBuffer::peek(uint32_t n)
{ {
assert(n <= m_size); assert(n <= m_size);
// if requesting no data then return NULL so we don't try to access // if requesting no data then return nullptr so we don't try to access
// an empty list. // an empty list.
if (n == 0) { if (n == 0) {
return NULL; return nullptr;
} }
// reserve space in first chunk // reserve space in first chunk
@ -80,7 +80,7 @@ void StreamBuffer::pop(uint32_t n)
void StreamBuffer::write(const void *vdata, uint32_t n) void StreamBuffer::write(const void *vdata, uint32_t n)
{ {
assert(vdata != NULL); assert(vdata != nullptr);
// ignore if no data, otherwise update size // ignore if no data, otherwise update size
if (n == 0) { if (n == 0) {

View file

@ -15,7 +15,7 @@
CondVarBase::CondVarBase(Mutex *mutex) : m_mutex(mutex) CondVarBase::CondVarBase(Mutex *mutex) : m_mutex(mutex)
{ {
assert(m_mutex != NULL); assert(m_mutex != nullptr);
m_cond = ARCH->newCondVar(); m_cond = ARCH->newCondVar();
} }

View file

@ -23,7 +23,7 @@ class CondVarBase
{ {
public: public:
/*! /*!
\c mutex must not be NULL. All condition variables have an \c mutex must not be nullptr. All condition variables have an
associated mutex. The mutex needn't be unique to one condition associated mutex. The mutex needn't be unique to one condition
variable. variable.
*/ */

View file

@ -21,7 +21,7 @@
Thread::Thread(IJob *job) Thread::Thread(IJob *job)
{ {
m_thread = ARCH->newThread(&Thread::threadFunc, job); m_thread = ARCH->newThread(&Thread::threadFunc, job);
if (m_thread == NULL) { if (m_thread == nullptr) {
// couldn't create thread // couldn't create thread
delete job; delete job;
throw XMTThreadUnavailable(); throw XMTThreadUnavailable();
@ -95,7 +95,7 @@ void *Thread::getResult() const
if (wait()) if (wait())
return ARCH->getResultOfThread(m_thread); return ARCH->getResultOfThread(m_thread);
else else
return NULL; return nullptr;
} }
IArchMultithread::ThreadID Thread::getID() const IArchMultithread::ThreadID Thread::getID() const
@ -127,7 +127,7 @@ void *Thread::threadFunc(void *vjob)
IJob *job = static_cast<IJob *>(vjob); IJob *job = static_cast<IJob *>(vjob);
// run job // run job
void *result = NULL; void *result = nullptr;
try { try {
// go // go
LOG((CLOG_DEBUG1 "thread 0x%08x entry", id)); LOG((CLOG_DEBUG1 "thread 0x%08x entry", id));

View file

@ -160,7 +160,7 @@ public:
//! Get the exit result //! Get the exit result
/*! /*!
Returns the exit result. This does an implicit wait(). It returns Returns the exit result. This does an implicit wait(). It returns
NULL immediately if called by a thread on itself or on a thread that nullptr immediately if called by a thread on itself or on a thread that
was cancelled. was cancelled.
(cancellation point) (cancellation point)

View file

@ -22,5 +22,5 @@ void *IDataSocket::getEventTarget() const
{ {
// this is here to work around a VC++6 bug. see the header file. // this is here to work around a VC++6 bug. see the header file.
assert(0 && "bad call"); assert(0 && "bad call");
return NULL; return nullptr;
} }

View file

@ -26,7 +26,7 @@ public:
//! Accept connection //! Accept connection
/*! /*!
Accept a connection, returning a socket representing the full-duplex Accept a connection, returning a socket representing the full-duplex
data stream. Returns NULL if no socket is waiting to be accepted. data stream. Returns nullptr if no socket is waiting to be accepted.
This is only valid after a call to \c bind(). This is only valid after a call to \c bind().
*/ */
virtual IDataSocket *accept() = 0; virtual IDataSocket *accept() = 0;

View file

@ -25,7 +25,7 @@ public:
Called by a socket multiplexer when the socket becomes readable, Called by a socket multiplexer when the socket becomes readable,
writable, or has an error. It should return itself if the same writable, or has an error. It should return itself if the same
job can continue to service events, a new job if the socket must job can continue to service events, a new job if the socket must
be serviced differently, or NULL if the socket should no longer be serviced differently, or nullptr if the socket should no longer
be serviced. The socket is readable if \p readable is true, be serviced. The socket is readable if \p readable is true,
writable if \p writable is true, and in error if \p error is writable if \p writable is true, and in error if \p error is
true. true.

View file

@ -33,12 +33,12 @@ SecureListenSocket::SecureListenSocket(
IDataSocket *SecureListenSocket::accept() IDataSocket *SecureListenSocket::accept()
{ {
SecureSocket *socket = NULL; SecureSocket *socket = nullptr;
try { try {
socket = new SecureSocket(m_events, m_socketMultiplexer, ARCH->acceptSocket(m_socket, NULL), m_securityLevel); socket = new SecureSocket(m_events, m_socketMultiplexer, ARCH->acceptSocket(m_socket, nullptr), m_securityLevel);
socket->initSsl(true); socket->initSsl(true);
if (socket != NULL) { if (socket != nullptr) {
setListeningJob(); setListeningJob();
} }
@ -53,20 +53,20 @@ IDataSocket *SecureListenSocket::accept()
bool loaded = socket->loadCertificates(certificateFilename); bool loaded = socket->loadCertificates(certificateFilename);
if (!loaded) { if (!loaded) {
delete socket; delete socket;
return NULL; return nullptr;
} }
socket->secureAccept(); socket->secureAccept();
return dynamic_cast<IDataSocket *>(socket); return dynamic_cast<IDataSocket *>(socket);
} catch (XArchNetwork &) { } catch (XArchNetwork &) {
if (socket != NULL) { if (socket != nullptr) {
delete socket; delete socket;
setListeningJob(); setListeningJob();
} }
return NULL; return nullptr;
} catch (std::exception &ex) { } catch (std::exception &ex) {
if (socket != NULL) { if (socket != nullptr) {
delete socket; delete socket;
setListeningJob(); setListeningJob();
} }

View file

@ -104,7 +104,7 @@ ISocketMultiplexerJob *SecureSocket::newJob()
// after TCP connection is established, SecureSocket will pick up // after TCP connection is established, SecureSocket will pick up
// connected event and do secureConnect // connected event and do secureConnect
if (m_connected && !m_secureReady) { if (m_connected && !m_secureReady) {
return NULL; return nullptr;
} }
return TCPSocket::newJob(); return TCPSocket::newJob();
@ -184,7 +184,7 @@ TCPSocket::EJobResult SecureSocket::doWrite()
static bool s_retry = false; static bool s_retry = false;
static int s_retrySize = 0; static int s_retrySize = 0;
static int s_staticBufferSize = 0; static int s_staticBufferSize = 0;
static void *s_staticBuffer = NULL; static void *s_staticBuffer = nullptr;
// write data // write data
int bufferSize = 0; int bufferSize = 0;
@ -236,7 +236,7 @@ int SecureSocket::secureRead(void *buffer, int size, int &read)
{ {
std::lock_guard ssl_lock{ssl_mutex_}; std::lock_guard ssl_lock{ssl_mutex_};
if (m_ssl->m_ssl != NULL) { if (m_ssl->m_ssl != nullptr) {
LOG((CLOG_DEBUG2 "reading secure socket")); LOG((CLOG_DEBUG2 "reading secure socket"));
read = SSL_read(m_ssl->m_ssl, buffer, size); read = SSL_read(m_ssl->m_ssl, buffer, size);
@ -263,7 +263,7 @@ int SecureSocket::secureWrite(const void *buffer, int size, int &wrote)
{ {
std::lock_guard ssl_lock{ssl_mutex_}; std::lock_guard ssl_lock{ssl_mutex_};
if (m_ssl->m_ssl != NULL) { if (m_ssl->m_ssl != nullptr) {
LOG((CLOG_DEBUG2 "writing secure socket: %p", this)); LOG((CLOG_DEBUG2 "writing secure socket: %p", this));
wrote = SSL_write(m_ssl->m_ssl, buffer, size); wrote = SSL_write(m_ssl->m_ssl, buffer, size);
@ -297,8 +297,8 @@ void SecureSocket::initSsl(bool server)
std::lock_guard ssl_lock{ssl_mutex_}; std::lock_guard ssl_lock{ssl_mutex_};
m_ssl = new Ssl(); m_ssl = new Ssl();
m_ssl->m_context = NULL; m_ssl->m_context = nullptr;
m_ssl->m_ssl = NULL; m_ssl->m_ssl = nullptr;
initContext(server); initContext(server);
} }
@ -372,7 +372,7 @@ void SecureSocket::initContext(bool server)
// be vulnerable // be vulnerable
SSL_CTX_set_options(m_ssl->m_context, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1); SSL_CTX_set_options(m_ssl->m_context, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1);
if (m_ssl->m_context == NULL) { if (m_ssl->m_context == nullptr) {
SslLogger::logError(); SslLogger::logError();
} }
@ -388,8 +388,8 @@ void SecureSocket::createSSL()
{ {
// I assume just one instance is needed // I assume just one instance is needed
// get new SSL state with context // get new SSL state with context
if (m_ssl->m_ssl == NULL) { if (m_ssl->m_ssl == nullptr) {
assert(m_ssl->m_context != NULL); assert(m_ssl->m_context != nullptr);
m_ssl->m_ssl = SSL_new(m_ssl->m_context); m_ssl->m_ssl = SSL_new(m_ssl->m_context);
} }
} }
@ -402,17 +402,17 @@ void SecureSocket::freeSSL()
// take socket from multiplexer ASAP otherwise the race condition // take socket from multiplexer ASAP otherwise the race condition
// could cause events to get called on a dead object. TCPSocket // could cause events to get called on a dead object. TCPSocket
// will do this, too, but the double-call is harmless // will do this, too, but the double-call is harmless
setJob(NULL); setJob(nullptr);
if (m_ssl) { if (m_ssl) {
if (m_ssl->m_ssl != NULL) { if (m_ssl->m_ssl != nullptr) {
SSL_shutdown(m_ssl->m_ssl); SSL_shutdown(m_ssl->m_ssl);
SSL_free(m_ssl->m_ssl); SSL_free(m_ssl->m_ssl);
m_ssl->m_ssl = NULL; m_ssl->m_ssl = nullptr;
} }
if (m_ssl->m_context != NULL) { if (m_ssl->m_context != nullptr) {
SSL_CTX_free(m_ssl->m_context); SSL_CTX_free(m_ssl->m_context);
m_ssl->m_context = NULL; m_ssl->m_context = nullptr;
} }
delete m_ssl; delete m_ssl;
m_ssl = nullptr; m_ssl = nullptr;
@ -546,7 +546,7 @@ bool SecureSocket::showCertificate() const
// get the server's certificate // get the server's certificate
cert = SSL_get_peer_certificate(m_ssl->m_ssl); cert = SSL_get_peer_certificate(m_ssl->m_ssl);
if (cert != NULL) { if (cert != nullptr) {
line = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0); line = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0);
LOG((CLOG_INFO "server tls certificate info: %s", line)); LOG((CLOG_INFO "server tls certificate info: %s", line));
OPENSSL_free(line); OPENSSL_free(line);
@ -704,7 +704,7 @@ ISocketMultiplexerJob *SecureSocket::serviceConnect(ISocketMultiplexerJob *job,
// If status < 0, error happened // If status < 0, error happened
if (status < 0) { if (status < 0) {
return NULL; return nullptr;
} }
// If status > 0, success // If status > 0, success
@ -731,7 +731,7 @@ ISocketMultiplexerJob *SecureSocket::serviceAccept(ISocketMultiplexerJob *job, b
#endif #endif
// If status < 0, error happened // If status < 0, error happened
if (status < 0) { if (status < 0) {
return NULL; return nullptr;
} }
// If status > 0, success // If status > 0, success

View file

@ -136,7 +136,7 @@ int getCertLength(const std::string &path)
return -1; return -1;
} }
EVP_PKEY *privateKey = PEM_read_PrivateKey(fp, NULL, NULL, NULL); EVP_PKEY *privateKey = PEM_read_PrivateKey(fp, nullptr, nullptr, nullptr);
fclose(fp); fclose(fp);

View file

@ -25,15 +25,15 @@
SocketMultiplexer::SocketMultiplexer() SocketMultiplexer::SocketMultiplexer()
: m_mutex(new Mutex), : m_mutex(new Mutex),
m_thread(NULL), m_thread(nullptr),
m_update(false), m_update(false),
m_jobsReady(new CondVar<bool>(m_mutex, false)), m_jobsReady(new CondVar<bool>(m_mutex, false)),
m_jobListLock(new CondVar<bool>(m_mutex, false)), m_jobListLock(new CondVar<bool>(m_mutex, false)),
m_jobListLockLocked(new CondVar<bool>(m_mutex, false)), m_jobListLockLocked(new CondVar<bool>(m_mutex, false)),
m_jobListLocker(NULL), m_jobListLocker(nullptr),
m_jobListLockLocker(NULL) m_jobListLockLocker(nullptr)
{ {
// this pointer just has to be unique and not NULL. it will // this pointer just has to be unique and not nullptr. it will
// never be dereferenced. it's used to identify cursor nodes // never be dereferenced. it's used to identify cursor nodes
// in the jobs list. // in the jobs list.
// TODO: Remove this evilness // TODO: Remove this evilness
@ -64,8 +64,8 @@ SocketMultiplexer::~SocketMultiplexer()
void SocketMultiplexer::addSocket(ISocket *socket, ISocketMultiplexerJob *job) void SocketMultiplexer::addSocket(ISocket *socket, ISocketMultiplexerJob *job)
{ {
assert(socket != NULL); assert(socket != nullptr);
assert(job != NULL); assert(job != nullptr);
// prevent other threads from locking the job list // prevent other threads from locking the job list
lockJobListLock(); lockJobListLock();
@ -100,7 +100,7 @@ void SocketMultiplexer::addSocket(ISocket *socket, ISocketMultiplexerJob *job)
void SocketMultiplexer::removeSocket(ISocket *socket) void SocketMultiplexer::removeSocket(ISocket *socket)
{ {
assert(socket != NULL); assert(socket != nullptr);
// prevent other threads from locking the job list // prevent other threads from locking the job list
lockJobListLock(); lockJobListLock();
@ -111,14 +111,14 @@ void SocketMultiplexer::removeSocket(ISocket *socket)
// lock the job list // lock the job list
lockJobList(); lockJobList();
// remove job. rather than removing it from the map we put NULL // remove job. rather than removing it from the map we put nullptr
// in the list instead so the order of jobs in the list continues // in the list instead so the order of jobs in the list continues
// to match the order of jobs in pfds in serviceThread(). // to match the order of jobs in pfds in serviceThread().
SocketJobMap::iterator i = m_socketJobMap.find(socket); SocketJobMap::iterator i = m_socketJobMap.find(socket);
if (i != m_socketJobMap.end()) { if (i != m_socketJobMap.end()) {
if (*(i->second) != NULL) { if (*(i->second) != nullptr) {
delete *(i->second); delete *(i->second);
*(i->second) = NULL; *(i->second) = nullptr;
m_update = true; m_update = true;
} }
} }
@ -158,7 +158,7 @@ void SocketMultiplexer::serviceThread(void *)
JobCursor jobCursor = nextCursor(cursor); JobCursor jobCursor = nextCursor(cursor);
while (jobCursor != m_socketJobs.end()) { while (jobCursor != m_socketJobs.end()) {
ISocketMultiplexerJob *job = *jobCursor; ISocketMultiplexerJob *job = *jobCursor;
if (job != NULL) { if (job != nullptr) {
pfd.m_socket = job->getSocket(); pfd.m_socket = job->getSocket();
pfd.m_events = 0; pfd.m_events = 0;
if (job->isReadable()) { if (job->isReadable()) {
@ -194,7 +194,7 @@ void SocketMultiplexer::serviceThread(void *)
JobCursor cursor = newCursor(); JobCursor cursor = newCursor();
JobCursor jobCursor = nextCursor(cursor); JobCursor jobCursor = nextCursor(cursor);
while (i < pfds.size() && jobCursor != m_socketJobs.end()) { while (i < pfds.size() && jobCursor != m_socketJobs.end()) {
if (*jobCursor != NULL) { if (*jobCursor != nullptr) {
// get poll state // get poll state
unsigned short revents = pfds[i].m_revents; unsigned short revents = pfds[i].m_revents;
bool read = ((revents & IArchNetwork::kPOLLIN) != 0); bool read = ((revents & IArchNetwork::kPOLLIN) != 0);
@ -223,7 +223,7 @@ void SocketMultiplexer::serviceThread(void *)
// delete any removed socket jobs // delete any removed socket jobs
for (SocketJobMap::iterator i = m_socketJobMap.begin(); i != m_socketJobMap.end();) { for (SocketJobMap::iterator i = m_socketJobMap.begin(); i != m_socketJobMap.end();) {
if (*(i->second) == NULL) { if (*(i->second) == nullptr) {
m_socketJobs.erase(i->second); m_socketJobs.erase(i->second);
m_socketJobMap.erase(i++); m_socketJobMap.erase(i++);
m_update = true; m_update = true;
@ -296,7 +296,7 @@ void SocketMultiplexer::lockJobList()
// take ownership of the lock // take ownership of the lock
*m_jobListLock = true; *m_jobListLock = true;
m_jobListLocker = m_jobListLockLocker; m_jobListLocker = m_jobListLockLocker;
m_jobListLockLocker = NULL; m_jobListLockLocker = nullptr;
// release the lock on the lock // release the lock on the lock
*m_jobListLockLocked = false; *m_jobListLockLocked = false;
@ -312,7 +312,7 @@ void SocketMultiplexer::unlockJobList()
// release the lock // release the lock
delete m_jobListLocker; delete m_jobListLocker;
m_jobListLocker = NULL; m_jobListLocker = nullptr;
*m_jobListLock = false; *m_jobListLock = false;
m_jobListLock->signal(); m_jobListLock->signal();

View file

@ -41,7 +41,7 @@ TCPListenSocket::TCPListenSocket(
TCPListenSocket::~TCPListenSocket() TCPListenSocket::~TCPListenSocket()
{ {
try { try {
if (m_socket != NULL) { if (m_socket != nullptr) {
m_socketMultiplexer->removeSocket(this); m_socketMultiplexer->removeSocket(this);
ARCH->closeSocket(m_socket); ARCH->closeSocket(m_socket);
} }
@ -74,13 +74,13 @@ void TCPListenSocket::bind(const NetworkAddress &addr)
void TCPListenSocket::close() void TCPListenSocket::close()
{ {
Lock lock(m_mutex); Lock lock(m_mutex);
if (m_socket == NULL) { if (m_socket == nullptr) {
throw XIOClosed(); throw XIOClosed();
} }
try { try {
m_socketMultiplexer->removeSocket(this); m_socketMultiplexer->removeSocket(this);
ARCH->closeSocket(m_socket); ARCH->closeSocket(m_socket);
m_socket = NULL; m_socket = nullptr;
} catch (XArchNetwork &e) { } catch (XArchNetwork &e) {
throw XSocketIOClose(e.what()); throw XSocketIOClose(e.what());
} }
@ -93,21 +93,21 @@ void *TCPListenSocket::getEventTarget() const
IDataSocket *TCPListenSocket::accept() IDataSocket *TCPListenSocket::accept()
{ {
IDataSocket *socket = NULL; IDataSocket *socket = nullptr;
try { try {
socket = new TCPSocket(m_events, m_socketMultiplexer, ARCH->acceptSocket(m_socket, NULL)); socket = new TCPSocket(m_events, m_socketMultiplexer, ARCH->acceptSocket(m_socket, nullptr));
if (socket != NULL) { if (socket != nullptr) {
setListeningJob(); setListeningJob();
} }
return socket; return socket;
} catch (XArchNetwork &) { } catch (XArchNetwork &) {
if (socket != NULL) { if (socket != nullptr) {
delete socket; delete socket;
setListeningJob(); setListeningJob();
} }
return NULL; return nullptr;
} catch (std::exception &ex) { } catch (std::exception &ex) {
if (socket != NULL) { if (socket != nullptr) {
delete socket; delete socket;
setListeningJob(); setListeningJob();
} }
@ -127,12 +127,12 @@ ISocketMultiplexerJob *TCPListenSocket::serviceListening(ISocketMultiplexerJob *
{ {
if (error) { if (error) {
close(); close();
return NULL; return nullptr;
} }
if (read) { if (read) {
m_events->addEvent(Event(m_events->forIListenSocket().connecting(), this)); m_events->addEvent(Event(m_events->forIListenSocket().connecting(), this));
// stop polling on this socket until the client accepts // stop polling on this socket until the client accepts
return NULL; return nullptr;
} }
return job; return job;
} }

View file

@ -43,7 +43,7 @@ IDataSocket *TCPSocketFactory::create(IArchNetwork::EAddressFamily family, Secur
IListenSocket *TCPSocketFactory::createListen(IArchNetwork::EAddressFamily family, SecurityLevel securityLevel) const IListenSocket *TCPSocketFactory::createListen(IArchNetwork::EAddressFamily family, SecurityLevel securityLevel) const
{ {
IListenSocket *socket = NULL; IListenSocket *socket = nullptr;
if (securityLevel != SecurityLevel::PlainText) { if (securityLevel != SecurityLevel::PlainText) {
socket = new SecureListenSocket(m_events, m_socketMultiplexer, family, securityLevel); socket = new SecureListenSocket(m_events, m_socketMultiplexer, family, securityLevel);
} else { } else {

View file

@ -63,10 +63,10 @@ template <class T> inline TSocketMultiplexerMethodJob<T>::~TSocketMultiplexerMet
template <class T> inline ISocketMultiplexerJob *TSocketMultiplexerMethodJob<T>::run(bool read, bool write, bool error) template <class T> inline ISocketMultiplexerJob *TSocketMultiplexerMethodJob<T>::run(bool read, bool write, bool error)
{ {
if (m_object != NULL) { if (m_object != nullptr) {
return (m_object->*m_method)(this, read, write, error); return (m_object->*m_method)(this, read, write, error);
} }
return NULL; return nullptr;
} }
template <class T> inline ArchSocket TSocketMultiplexerMethodJob<T>::getSocket() const template <class T> inline ArchSocket TSocketMultiplexerMethodJob<T>::getSocket() const

View file

@ -68,7 +68,7 @@ void EiEventQueueBuffer::waitForEvent(double timeout_in_ms)
std::lock_guard lock(mutex_); std::lock_guard lock(mutex_);
// libei doesn't allow ei_event_ref() because events are // libei doesn't allow ei_event_ref() because events are
// supposed to be short-lived only. So instead, we create an NULL-data // supposed to be short-lived only. So instead, we create an nullptr-data
// kSystemEvent whenever there's data on the fd, shove that event // kSystemEvent whenever there's data on the fd, shove that event
// into our event queue and once we process the event (see // into our event queue and once we process the event (see
// getEvent()), the EiScreen will call ei_dispatch() and process // getEvent()), the EiScreen will call ei_dispatch() and process

View file

@ -107,10 +107,10 @@ KeyID IOSXKeyResource::getKeyID(uint8_t c)
// convert to unicode // convert to unicode
CFStringRef cfString = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, str, encoding, kCFAllocatorNull); CFStringRef cfString = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, str, encoding, kCFAllocatorNull);
// sometimes CFStringCreate...() returns NULL (e.g. Apple Korean // sometimes CFStringCreate...() returns nullptr (e.g. Apple Korean
// encoding with char value 214). if it did then make no key, // encoding with char value 214). if it did then make no key,
// otherwise CFStringCreateMutableCopy() will crash. // otherwise CFStringCreateMutableCopy() will crash.
if (cfString == NULL) { if (cfString == nullptr) {
return kKeyNone; return kKeyNone;
} }

View file

@ -74,7 +74,7 @@ bool MSWindowsClipboard::empty()
// mark clipboard as being owned by deskflow // mark clipboard as being owned by deskflow
HGLOBAL data = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, 1); HGLOBAL data = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, 1);
if (NULL == SetClipboardData(getOwnershipFormat(), data)) { if (nullptr == SetClipboardData(getOwnershipFormat(), data)) {
LOG((CLOG_WARN "failed to set clipboard data")); LOG((CLOG_WARN "failed to set clipboard data"));
GlobalFree(data); GlobalFree(data);
return false; return false;
@ -98,7 +98,7 @@ void MSWindowsClipboard::add(EFormat format, const std::string &data)
// skip converters for other formats // skip converters for other formats
if (converter->getFormat() == format) { if (converter->getFormat() == format) {
HANDLE win32Data = converter->fromIClipboard(data); HANDLE win32Data = converter->fromIClipboard(data);
if (win32Data != NULL) { if (win32Data != nullptr) {
LOG((CLOG_DEBUG "add %d bytes to clipboard format: %d", data.size(), format)); LOG((CLOG_DEBUG "add %d bytes to clipboard format: %d", data.size(), format));
m_facade->write(win32Data, converter->getWin32Format()); m_facade->write(win32Data, converter->getWin32Format());
isSucceeded = true; isSucceeded = true;
@ -155,25 +155,25 @@ bool MSWindowsClipboard::has(EFormat format) const
std::string MSWindowsClipboard::get(EFormat format) const std::string MSWindowsClipboard::get(EFormat format) const
{ {
// find the converter for the first clipboard format we can handle // find the converter for the first clipboard format we can handle
IMSWindowsClipboardConverter *converter = NULL; IMSWindowsClipboardConverter *converter = nullptr;
for (ConverterList::const_iterator index = m_converters.begin(); index != m_converters.end(); ++index) { for (ConverterList::const_iterator index = m_converters.begin(); index != m_converters.end(); ++index) {
converter = *index; converter = *index;
if (converter->getFormat() == format) { if (converter->getFormat() == format) {
break; break;
} }
converter = NULL; converter = nullptr;
} }
// if no converter then we don't recognize any formats // if no converter then we don't recognize any formats
if (converter == NULL) { if (converter == nullptr) {
LOG((CLOG_WARN "no converter for format %d", format)); LOG((CLOG_WARN "no converter for format %d", format));
return std::string(); return std::string();
} }
// get a handle to the clipboard data // get a handle to the clipboard data
HANDLE win32Data = GetClipboardData(converter->getWin32Format()); HANDLE win32Data = GetClipboardData(converter->getWin32Format());
if (win32Data == NULL) { if (win32Data == nullptr) {
// nb: can't cause this using integ tests; this is only caused when // nb: can't cause this using integ tests; this is only caused when
// the selected converter returns an invalid format -- which you // the selected converter returns an invalid format -- which you
// cannot cause using public functions. // cannot cause using public functions.

View file

@ -35,15 +35,15 @@ MSWindowsClipboardAnyTextConverter::fromIClipboard(const std::string &data) cons
// copy to memory handle // copy to memory handle
HGLOBAL gData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, size); HGLOBAL gData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, size);
if (gData != NULL) { if (gData != nullptr) {
// get a pointer to the allocated memory // get a pointer to the allocated memory
char *dst = (char *)GlobalLock(gData); char *dst = (char *)GlobalLock(gData);
if (dst != NULL) { if (dst != nullptr) {
memcpy(dst, text.data(), size); memcpy(dst, text.data(), size);
GlobalUnlock(gData); GlobalUnlock(gData);
} else { } else {
GlobalFree(gData); GlobalFree(gData);
gData = NULL; gData = nullptr;
} }
} }
@ -55,7 +55,7 @@ std::string MSWindowsClipboardAnyTextConverter::toIClipboard(HANDLE data) const
// get datator // get datator
const char *src = (const char *)GlobalLock(data); const char *src = (const char *)GlobalLock(data);
uint32_t srcSize = (uint32_t)GlobalSize(data); uint32_t srcSize = (uint32_t)GlobalSize(data);
if (src == NULL || srcSize <= 1) { if (src == nullptr || srcSize <= 1) {
return std::string(); return std::string();
} }

View file

@ -38,15 +38,15 @@ MSWindowsClipboardBitmapConverter::fromIClipboard(const std::string &data) const
{ {
// copy to memory handle // copy to memory handle
HGLOBAL gData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, data.size()); HGLOBAL gData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, data.size());
if (gData != NULL) { if (gData != nullptr) {
// get a pointer to the allocated memory // get a pointer to the allocated memory
char *dst = (char *)GlobalLock(gData); char *dst = (char *)GlobalLock(gData);
if (dst != NULL) { if (dst != nullptr) {
memcpy(dst, data.data(), data.size()); memcpy(dst, data.data(), data.size());
GlobalUnlock(gData); GlobalUnlock(gData);
} else { } else {
GlobalFree(gData); GlobalFree(gData);
gData = NULL; gData = nullptr;
} }
} }
@ -57,7 +57,7 @@ std::string MSWindowsClipboardBitmapConverter::toIClipboard(HANDLE data) const
{ {
// get datator // get datator
LPVOID src = GlobalLock(data); LPVOID src = GlobalLock(data);
if (src == NULL) { if (src == nullptr) {
return std::string(); return std::string();
} }
uint32_t srcSize = (uint32_t)GlobalSize(data); uint32_t srcSize = (uint32_t)GlobalSize(data);
@ -94,8 +94,8 @@ std::string MSWindowsClipboardBitmapConverter::toIClipboard(HANDLE data) const
info.biYPelsPerMeter = 1000; info.biYPelsPerMeter = 1000;
info.biClrUsed = 0; info.biClrUsed = 0;
info.biClrImportant = 0; info.biClrImportant = 0;
HDC dc = GetDC(NULL); HDC dc = GetDC(nullptr);
HBITMAP dst = CreateDIBSection(dc, (BITMAPINFO *)&info, DIB_RGB_COLORS, &raw, NULL, 0); HBITMAP dst = CreateDIBSection(dc, (BITMAPINFO *)&info, DIB_RGB_COLORS, &raw, nullptr, 0);
// find the start of the pixel data // find the start of the pixel data
const char *srcBits = (const char *)bitmap + bitmap->bmiHeader.biSize; const char *srcBits = (const char *)bitmap + bitmap->bmiHeader.biSize;
@ -125,7 +125,7 @@ std::string MSWindowsClipboardBitmapConverter::toIClipboard(HANDLE data) const
// clean up GDI // clean up GDI
DeleteObject(dst); DeleteObject(dst);
ReleaseDC(NULL, dc); ReleaseDC(nullptr, dc);
// release handle // release handle
GlobalUnlock(data); GlobalUnlock(data);

View file

@ -11,7 +11,7 @@
void MSWindowsClipboardFacade::write(HANDLE win32Data, UINT win32Format) void MSWindowsClipboardFacade::write(HANDLE win32Data, UINT win32Format)
{ {
if (SetClipboardData(win32Format, win32Data) == NULL) { if (SetClipboardData(win32Format, win32Data) == nullptr) {
// free converted data if we couldn't put it on // free converted data if we couldn't put it on
// the clipboard. // the clipboard.
// nb: couldn't cause this in integ tests. // nb: couldn't cause this in integ tests.

View file

@ -119,10 +119,10 @@ MSWindowsDesks::MSWindowsDesks(
m_xCenter(0), m_xCenter(0),
m_yCenter(0), m_yCenter(0),
m_multimon(false), m_multimon(false),
m_timer(NULL), m_timer(nullptr),
m_screensaver(screensaver), m_screensaver(screensaver),
m_screensaverNotify(false), m_screensaverNotify(false),
m_activeDesk(NULL), m_activeDesk(nullptr),
m_activeDeskName(), m_activeDeskName(),
m_mutex(), m_mutex(),
m_deskReady(&m_mutex, false), m_deskReady(&m_mutex, false),
@ -155,7 +155,7 @@ void MSWindowsDesks::enable()
// which desk is active and reinstalls the hooks as necessary. // which desk is active and reinstalls the hooks as necessary.
// we wouldn't need this if windows notified us of a desktop // we wouldn't need this if windows notified us of a desktop
// change but as far as i can tell it doesn't. // change but as far as i can tell it doesn't.
m_timer = m_events->newTimer(0.2, NULL); m_timer = m_events->newTimer(0.2, nullptr);
m_events->adoptHandler( m_events->adoptHandler(
Event::kTimer, m_timer, new TMethodEventJob<MSWindowsDesks>(this, &MSWindowsDesks::handleCheckDesk) Event::kTimer, m_timer, new TMethodEventJob<MSWindowsDesks>(this, &MSWindowsDesks::handleCheckDesk)
); );
@ -166,10 +166,10 @@ void MSWindowsDesks::enable()
void MSWindowsDesks::disable() void MSWindowsDesks::disable()
{ {
// remove timer // remove timer
if (m_timer != NULL) { if (m_timer != nullptr) {
m_events->removeHandler(Event::kTimer, m_timer); m_events->removeHandler(Event::kTimer, m_timer);
m_events->deleteTimer(m_timer); m_events->deleteTimer(m_timer);
m_timer = NULL; m_timer = nullptr;
} }
// destroy desks // destroy desks
@ -321,7 +321,7 @@ void MSWindowsDesks::fakeMouseWheel(int32_t xDelta, int32_t yDelta) const
void MSWindowsDesks::sendMessage(UINT msg, WPARAM wParam, LPARAM lParam) const void MSWindowsDesks::sendMessage(UINT msg, WPARAM wParam, LPARAM lParam) const
{ {
if (m_activeDesk != NULL && m_activeDesk->m_window != NULL) { if (m_activeDesk != nullptr && m_activeDesk->m_window != nullptr) {
PostThreadMessage(m_activeDesk->m_threadID, msg, wParam, lParam); PostThreadMessage(m_activeDesk->m_threadID, msg, wParam, lParam);
waitForDesk(); waitForDesk();
} }
@ -345,7 +345,7 @@ MSWindowsDesks::createBlankCursor() const
void MSWindowsDesks::destroyCursor(HCURSOR cursor) const void MSWindowsDesks::destroyCursor(HCURSOR cursor) const
{ {
if (cursor != NULL) { if (cursor != nullptr) {
DestroyCursor(cursor); DestroyCursor(cursor);
} }
} }
@ -359,12 +359,12 @@ ATOM MSWindowsDesks::createDeskWindowClass(bool isPrimary) const
classInfo.cbClsExtra = 0; classInfo.cbClsExtra = 0;
classInfo.cbWndExtra = 0; classInfo.cbWndExtra = 0;
classInfo.hInstance = MSWindowsScreen::getWindowInstance(); classInfo.hInstance = MSWindowsScreen::getWindowInstance();
classInfo.hIcon = NULL; classInfo.hIcon = nullptr;
classInfo.hCursor = m_cursor; classInfo.hCursor = m_cursor;
classInfo.hbrBackground = NULL; classInfo.hbrBackground = nullptr;
classInfo.lpszMenuName = NULL; classInfo.lpszMenuName = nullptr;
classInfo.lpszClassName = "DeskflowDesk"; classInfo.lpszClassName = "DeskflowDesk";
classInfo.hIconSm = NULL; classInfo.hIconSm = nullptr;
return RegisterClassEx(&classInfo); return RegisterClassEx(&classInfo);
} }
@ -378,10 +378,10 @@ void MSWindowsDesks::destroyClass(ATOM windowClass) const
HWND MSWindowsDesks::createWindow(ATOM windowClass, const char *name) const HWND MSWindowsDesks::createWindow(ATOM windowClass, const char *name) const
{ {
HWND window = CreateWindowEx( HWND window = CreateWindowEx(
WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW, MAKEINTATOM(windowClass), name, WS_POPUP, 0, 0, 1, 1, NULL, NULL, WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW, MAKEINTATOM(windowClass), name, WS_POPUP, 0, 0, 1, 1, nullptr, nullptr,
MSWindowsScreen::getWindowInstance(), NULL MSWindowsScreen::getWindowInstance(), nullptr
); );
if (window == NULL) { if (window == nullptr) {
LOG((CLOG_ERR "failed to create window: %d", GetLastError())); LOG((CLOG_ERR "failed to create window: %d", GetLastError()));
throw XScreenOpenFailure(); throw XScreenOpenFailure();
} }
@ -390,7 +390,7 @@ HWND MSWindowsDesks::createWindow(ATOM windowClass, const char *name) const
void MSWindowsDesks::destroyWindow(HWND hwnd) const void MSWindowsDesks::destroyWindow(HWND hwnd) const
{ {
if (hwnd != NULL) { if (hwnd != nullptr) {
DestroyWindow(hwnd); DestroyWindow(hwnd);
} }
} }
@ -481,13 +481,13 @@ void MSWindowsDesks::deskEnter(Desk *desk)
// (mouse over activation) but i've no idea how to do that. // (mouse over activation) but i've no idea how to do that.
// the obvious workaround of using SetWindowPos() to move it back // the obvious workaround of using SetWindowPos() to move it back
// after being raised doesn't work. // after being raised doesn't work.
DWORD thisThread = GetWindowThreadProcessId(desk->m_window, NULL); DWORD thisThread = GetWindowThreadProcessId(desk->m_window, nullptr);
DWORD thatThread = GetWindowThreadProcessId(desk->m_foregroundWindow, NULL); DWORD thatThread = GetWindowThreadProcessId(desk->m_foregroundWindow, nullptr);
AttachThreadInput(thatThread, thisThread, TRUE); AttachThreadInput(thatThread, thisThread, TRUE);
SetForegroundWindow(desk->m_foregroundWindow); SetForegroundWindow(desk->m_foregroundWindow);
AttachThreadInput(thatThread, thisThread, FALSE); AttachThreadInput(thatThread, thisThread, FALSE);
EnableWindow(desk->m_window, desk->m_lowLevel ? FALSE : TRUE); EnableWindow(desk->m_window, desk->m_lowLevel ? FALSE : TRUE);
desk->m_foregroundWindow = NULL; desk->m_foregroundWindow = nullptr;
} }
void MSWindowsDesks::deskLeave(Desk *desk, HKL keyLayout) void MSWindowsDesks::deskLeave(Desk *desk, HKL keyLayout)
@ -537,11 +537,11 @@ void MSWindowsDesks::deskLeave(Desk *desk, HKL keyLayout)
// need to disable the window on deskEnter. // need to disable the window on deskEnter.
else { else {
desk->m_foregroundWindow = getForegroundWindow(); desk->m_foregroundWindow = getForegroundWindow();
if (desk->m_foregroundWindow != NULL) { if (desk->m_foregroundWindow != nullptr) {
EnableWindow(desk->m_window, TRUE); EnableWindow(desk->m_window, TRUE);
SetActiveWindow(desk->m_window); SetActiveWindow(desk->m_window);
DWORD thisThread = GetWindowThreadProcessId(desk->m_window, NULL); DWORD thisThread = GetWindowThreadProcessId(desk->m_window, nullptr);
DWORD thatThread = GetWindowThreadProcessId(desk->m_foregroundWindow, NULL); DWORD thatThread = GetWindowThreadProcessId(desk->m_foregroundWindow, nullptr);
AttachThreadInput(thatThread, thisThread, TRUE); AttachThreadInput(thatThread, thisThread, TRUE);
SetForegroundWindow(desk->m_window); SetForegroundWindow(desk->m_window);
@ -571,11 +571,11 @@ void MSWindowsDesks::deskThread(void *vdesk)
// use given desktop for this thread // use given desktop for this thread
Desk *desk = static_cast<Desk *>(vdesk); Desk *desk = static_cast<Desk *>(vdesk);
desk->m_threadID = GetCurrentThreadId(); desk->m_threadID = GetCurrentThreadId();
desk->m_window = NULL; desk->m_window = nullptr;
desk->m_foregroundWindow = NULL; desk->m_foregroundWindow = nullptr;
if (desk->m_desk != NULL && SetThreadDesktop(desk->m_desk) != 0) { if (desk->m_desk != nullptr && SetThreadDesktop(desk->m_desk) != 0) {
// create a message queue // create a message queue
PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE); PeekMessage(&msg, nullptr, 0, 0, PM_NOREMOVE);
// create a window. we use this window to hide the cursor. // create a window. we use this window to hide the cursor.
try { try {
@ -594,7 +594,7 @@ void MSWindowsDesks::deskThread(void *vdesk)
m_deskReady.broadcast(); m_deskReady.broadcast();
} }
while (GetMessage(&msg, NULL, 0, 0)) { while (GetMessage(&msg, nullptr, 0, 0)) {
switch (msg.message) { switch (msg.message) {
default: default:
TranslateMessage(&msg); TranslateMessage(&msg);
@ -705,10 +705,10 @@ void MSWindowsDesks::deskThread(void *vdesk)
// clean up // clean up
deskEnter(desk); deskEnter(desk);
if (desk->m_window != NULL) { if (desk->m_window != nullptr) {
DestroyWindow(desk->m_window); DestroyWindow(desk->m_window);
} }
if (desk->m_desk != NULL) { if (desk->m_desk != nullptr) {
closeDesktop(desk->m_desk); closeDesktop(desk->m_desk);
} }
} }
@ -735,7 +735,7 @@ void MSWindowsDesks::removeDesks()
delete desk; delete desk;
} }
m_desks.clear(); m_desks.clear();
m_activeDesk = NULL; m_activeDesk = nullptr;
m_activeDeskName = ""; m_activeDeskName = "";
} }
@ -805,7 +805,7 @@ void MSWindowsDesks::checkDesk()
bool MSWindowsDesks::isDeskAccessible(const Desk *desk) const bool MSWindowsDesks::isDeskAccessible(const Desk *desk) const
{ {
return (desk != NULL && desk->m_desk != NULL); return (desk != nullptr && desk->m_desk != nullptr);
} }
void MSWindowsDesks::waitForDesk() const void MSWindowsDesks::waitForDesk() const
@ -840,18 +840,18 @@ MSWindowsDesks::openInputDesktop()
void MSWindowsDesks::closeDesktop(HDESK desk) void MSWindowsDesks::closeDesktop(HDESK desk)
{ {
if (desk != NULL) { if (desk != nullptr) {
CloseDesktop(desk); CloseDesktop(desk);
} }
} }
std::string MSWindowsDesks::getDesktopName(HDESK desk) std::string MSWindowsDesks::getDesktopName(HDESK desk)
{ {
if (desk == NULL) { if (desk == nullptr) {
return std::string(); return std::string();
} else { } else {
DWORD size; DWORD size;
GetUserObjectInformation(desk, UOI_NAME, NULL, 0, &size); GetUserObjectInformation(desk, UOI_NAME, nullptr, 0, &size);
TCHAR *name = (TCHAR *)alloca(size + sizeof(TCHAR)); TCHAR *name = (TCHAR *)alloca(size + sizeof(TCHAR));
GetUserObjectInformation(desk, UOI_NAME, name, size, &size); GetUserObjectInformation(desk, UOI_NAME, name, size, &size);
std::string result(name); std::string result(name);
@ -861,12 +861,12 @@ std::string MSWindowsDesks::getDesktopName(HDESK desk)
HWND MSWindowsDesks::getForegroundWindow() const HWND MSWindowsDesks::getForegroundWindow() const
{ {
// Ideally we'd return NULL as much as possible, only returning // Ideally we'd return nullptr as much as possible, only returning
// the actual foreground window when we know it's going to mess // the actual foreground window when we know it's going to mess
// up our keyboard input. For now we'll just let the user // up our keyboard input. For now we'll just let the user
// decide. // decide.
if (m_leaveForegroundOption) { if (m_leaveForegroundOption) {
return NULL; return nullptr;
} }
return GetForegroundWindow(); return GetForegroundWindow();
} }

View file

@ -14,7 +14,7 @@
void getDropData(IDataObject *pDataObject); void getDropData(IDataObject *pDataObject);
MSWindowsDropTarget *MSWindowsDropTarget::s_instance = NULL; MSWindowsDropTarget *MSWindowsDropTarget::s_instance = nullptr;
MSWindowsDropTarget::MSWindowsDropTarget() : m_refCount(1), m_allowDrop(false) MSWindowsDropTarget::MSWindowsDropTarget() : m_refCount(1), m_allowDrop(false)
{ {
@ -27,7 +27,7 @@ MSWindowsDropTarget::~MSWindowsDropTarget()
MSWindowsDropTarget &MSWindowsDropTarget::instance() MSWindowsDropTarget &MSWindowsDropTarget::instance()
{ {
assert(s_instance != NULL); assert(s_instance != nullptr);
return *s_instance; return *s_instance;
} }

View file

@ -36,7 +36,7 @@ MSWindowsEventQueueBuffer::MSWindowsEventQueueBuffer(IEventQueue *events) : m_ev
// make sure this thread has a message queue // make sure this thread has a message queue
MSG dummy; MSG dummy;
PeekMessage(&dummy, NULL, WM_USER, WM_USER, PM_NOREMOVE); PeekMessage(&dummy, nullptr, WM_USER, WM_USER, PM_NOREMOVE);
} }
MSWindowsEventQueueBuffer::~MSWindowsEventQueueBuffer() MSWindowsEventQueueBuffer::~MSWindowsEventQueueBuffer()
@ -77,12 +77,12 @@ IEventQueueBuffer::Type MSWindowsEventQueueBuffer::getEvent(Event &event, uint32
// if a message has been sent to our window but GetMessage will // if a message has been sent to our window but GetMessage will
// dispatch that message behind our backs and block. PeekMessage // dispatch that message behind our backs and block. PeekMessage
// will also dispatch behind our backs but won't block. // will also dispatch behind our backs but won't block.
if (!PeekMessage(&m_event, NULL, 0, 0, PM_NOREMOVE) && !PeekMessage(&m_event, (HWND)-1, 0, 0, PM_NOREMOVE)) { if (!PeekMessage(&m_event, nullptr, 0, 0, PM_NOREMOVE) && !PeekMessage(&m_event, (HWND)-1, 0, 0, PM_NOREMOVE)) {
return kNone; return kNone;
} }
// BOOL. yeah, right. // BOOL. yeah, right.
BOOL result = GetMessage(&m_event, NULL, 0, 0); BOOL result = GetMessage(&m_event, nullptr, 0, 0);
if (result == -1) { if (result == -1) {
return kNone; return kNone;
} else if (result == 0) { } else if (result == 0) {

View file

@ -14,9 +14,9 @@ static const char *g_name = "dfwhook";
static DWORD g_processID = 0; static DWORD g_processID = 0;
static DWORD g_threadID = 0; static DWORD g_threadID = 0;
static HHOOK g_getMessage = NULL; static HHOOK g_getMessage = nullptr;
static HHOOK g_keyboardLL = NULL; static HHOOK g_keyboardLL = nullptr;
static HHOOK g_mouseLL = NULL; static HHOOK g_mouseLL = nullptr;
static bool g_screenSaver = false; static bool g_screenSaver = false;
static EHookMode g_mode = kHOOK_DISABLE; static EHookMode g_mode = kHOOK_DISABLE;
static uint32_t g_zoneSides = 0; static uint32_t g_zoneSides = 0;
@ -69,7 +69,7 @@ int MSWindowsHook::init(DWORD threadID)
// still running or if it died without cleaning up. // still running or if it died without cleaning up.
if (g_processID != 0 && g_processID != GetCurrentProcessId()) { if (g_processID != 0 && g_processID != GetCurrentProcessId()) {
HANDLE process = OpenProcess(STANDARD_RIGHTS_REQUIRED, FALSE, g_processID); HANDLE process = OpenProcess(STANDARD_RIGHTS_REQUIRED, FALSE, g_processID);
if (process != NULL) { if (process != nullptr) {
// old process (probably) still exists so refuse to // old process (probably) still exists so refuse to
// reinitialize this DLL (and thus steal it from the // reinitialize this DLL (and thus steal it from the
// old process). // old process).
@ -83,9 +83,9 @@ int MSWindowsHook::init(DWORD threadID)
// removed the hooks so we just need to reset our state. // removed the hooks so we just need to reset our state.
g_processID = GetCurrentProcessId(); g_processID = GetCurrentProcessId();
g_threadID = 0; g_threadID = 0;
g_getMessage = NULL; g_getMessage = nullptr;
g_keyboardLL = NULL; g_keyboardLL = nullptr;
g_mouseLL = NULL; g_mouseLL = nullptr;
g_screenSaver = false; g_screenSaver = false;
} }
@ -589,7 +589,7 @@ static LRESULT CALLBACK mouseLLHook(int code, WPARAM wParam, LPARAM lParam)
EHookResult MSWindowsHook::install() EHookResult MSWindowsHook::install()
{ {
assert(g_getMessage == NULL || g_screenSaver); assert(g_getMessage == nullptr || g_screenSaver);
// must be initialized // must be initialized
if (g_threadID == 0) { if (g_threadID == 0) {
@ -604,32 +604,32 @@ EHookResult MSWindowsHook::install()
g_fakeServerInput = false; g_fakeServerInput = false;
// install low-level hooks. we require that they both get installed. // install low-level hooks. we require that they both get installed.
g_mouseLL = SetWindowsHookEx(WH_MOUSE_LL, &mouseLLHook, NULL, 0); g_mouseLL = SetWindowsHookEx(WH_MOUSE_LL, &mouseLLHook, nullptr, 0);
#if !NO_GRAB_KEYBOARD #if !NO_GRAB_KEYBOARD
g_keyboardLL = SetWindowsHookEx(WH_KEYBOARD_LL, &keyboardLLHook, NULL, 0); g_keyboardLL = SetWindowsHookEx(WH_KEYBOARD_LL, &keyboardLLHook, nullptr, 0);
if (g_mouseLL == NULL || g_keyboardLL == NULL) { if (g_mouseLL == nullptr || g_keyboardLL == nullptr) {
if (g_keyboardLL != NULL) { if (g_keyboardLL != nullptr) {
UnhookWindowsHookEx(g_keyboardLL); UnhookWindowsHookEx(g_keyboardLL);
g_keyboardLL = NULL; g_keyboardLL = nullptr;
} }
if (g_mouseLL != NULL) { if (g_mouseLL != nullptr) {
UnhookWindowsHookEx(g_mouseLL); UnhookWindowsHookEx(g_mouseLL);
g_mouseLL = NULL; g_mouseLL = nullptr;
} }
} }
#endif #endif
// check that we got all the hooks we wanted // check that we got all the hooks we wanted
if ((g_mouseLL == NULL) || if ((g_mouseLL == nullptr) ||
#if !NO_GRAB_KEYBOARD #if !NO_GRAB_KEYBOARD
(g_keyboardLL == NULL) (g_keyboardLL == nullptr)
#endif #endif
) { ) {
uninstall(); uninstall();
return kHOOK_FAILED; return kHOOK_FAILED;
} }
if (g_keyboardLL != NULL || g_mouseLL != NULL) { if (g_keyboardLL != nullptr || g_mouseLL != nullptr) {
g_hookThread = GetCurrentThreadId(); g_hookThread = GetCurrentThreadId();
return kHOOK_OKAY_LL; return kHOOK_OKAY_LL;
} }
@ -644,17 +644,17 @@ int MSWindowsHook::uninstall()
g_deadLParam = 0; g_deadLParam = 0;
// uninstall hooks // uninstall hooks
if (g_keyboardLL != NULL) { if (g_keyboardLL != nullptr) {
UnhookWindowsHookEx(g_keyboardLL); UnhookWindowsHookEx(g_keyboardLL);
g_keyboardLL = NULL; g_keyboardLL = nullptr;
} }
if (g_mouseLL != NULL) { if (g_mouseLL != nullptr) {
UnhookWindowsHookEx(g_mouseLL); UnhookWindowsHookEx(g_mouseLL);
g_mouseLL = NULL; g_mouseLL = nullptr;
} }
if (g_getMessage != NULL && !g_screenSaver) { if (g_getMessage != nullptr && !g_screenSaver) {
UnhookWindowsHookEx(g_getMessage); UnhookWindowsHookEx(g_getMessage);
g_getMessage = NULL; g_getMessage = nullptr;
} }
return 1; return 1;
@ -686,19 +686,19 @@ int MSWindowsHook::installScreenSaver()
g_screenSaver = true; g_screenSaver = true;
// install hook unless it's already installed // install hook unless it's already installed
if (g_getMessage == NULL) { if (g_getMessage == nullptr) {
g_getMessage = SetWindowsHookEx(WH_GETMESSAGE, &getMessageHook, NULL, 0); g_getMessage = SetWindowsHookEx(WH_GETMESSAGE, &getMessageHook, nullptr, 0);
} }
return (g_getMessage != NULL) ? 1 : 0; return (g_getMessage != nullptr) ? 1 : 0;
} }
int MSWindowsHook::uninstallScreenSaver() int MSWindowsHook::uninstallScreenSaver()
{ {
// uninstall hook unless the mouse wheel hook is installed // uninstall hook unless the mouse wheel hook is installed
if (g_getMessage != NULL) { if (g_getMessage != nullptr) {
UnhookWindowsHookEx(g_getMessage); UnhookWindowsHookEx(g_getMessage);
g_getMessage = NULL; g_getMessage = nullptr;
} }
// screen saver hook is no longer installed // screen saver hook is no longer installed

View file

@ -562,7 +562,7 @@ MSWindowsKeyState::MSWindowsKeyState(
m_eventTarget(eventTarget), m_eventTarget(eventTarget),
m_desks(desks), m_desks(desks),
m_keyLayout(GetKeyboardLayout(0)), m_keyLayout(GetKeyboardLayout(0)),
m_fixTimer(NULL), m_fixTimer(nullptr),
m_lastDown(0), m_lastDown(0),
m_useSavedModifiers(false), m_useSavedModifiers(false),
m_savedModifiers(0), m_savedModifiers(0),
@ -580,7 +580,7 @@ MSWindowsKeyState::MSWindowsKeyState(
m_eventTarget(eventTarget), m_eventTarget(eventTarget),
m_desks(desks), m_desks(desks),
m_keyLayout(GetKeyboardLayout(0)), m_keyLayout(GetKeyboardLayout(0)),
m_fixTimer(NULL), m_fixTimer(nullptr),
m_lastDown(0), m_lastDown(0),
m_useSavedModifiers(false), m_useSavedModifiers(false),
m_savedModifiers(0), m_savedModifiers(0),
@ -604,10 +604,10 @@ void MSWindowsKeyState::init()
void MSWindowsKeyState::disable() void MSWindowsKeyState::disable()
{ {
if (m_fixTimer != NULL) { if (m_fixTimer != nullptr) {
m_events->removeHandler(Event::kTimer, m_fixTimer); m_events->removeHandler(Event::kTimer, m_fixTimer);
m_events->deleteTimer(m_fixTimer); m_events->deleteTimer(m_fixTimer);
m_fixTimer = NULL; m_fixTimer = nullptr;
} }
m_lastDown = 0; m_lastDown = 0;
} }
@ -672,7 +672,7 @@ KeyID MSWindowsKeyState::mapKeyFromEvent(WPARAM charAndVirtKey, LPARAM info, Key
} }
// set modifier mask // set modifier mask
if (maskOut != NULL) { if (maskOut != nullptr) {
KeyModifierMask active = getActiveModifiers(); KeyModifierMask active = getActiveModifiers();
if (!noAltGr && (active & s_controlAlt) == s_controlAlt) { if (!noAltGr && (active & s_controlAlt) == s_controlAlt) {
// if !noAltGr then we're only interested in matching the // if !noAltGr then we're only interested in matching the
@ -813,7 +813,7 @@ int32_t MSWindowsKeyState::pollActiveGroup() const
{ {
// determine the thread that'll receive this event // determine the thread that'll receive this event
HWND targetWindow = GetForegroundWindow(); HWND targetWindow = GetForegroundWindow();
DWORD targetThread = GetWindowThreadProcessId(targetWindow, NULL); DWORD targetThread = GetWindowThreadProcessId(targetWindow, nullptr);
// get keyboard layout for the thread // get keyboard layout for the thread
HKL hkl = GetKeyboardLayout(targetThread); HKL hkl = GetKeyboardLayout(targetThread);
@ -822,7 +822,7 @@ int32_t MSWindowsKeyState::pollActiveGroup() const
// GetKeyboardLayout failed. Maybe targetWindow is a console window. // GetKeyboardLayout failed. Maybe targetWindow is a console window.
// We're getting the keyboard layout of the desktop instead. // We're getting the keyboard layout of the desktop instead.
targetWindow = GetDesktopWindow(); targetWindow = GetDesktopWindow();
targetThread = GetWindowThreadProcessId(targetWindow, NULL); targetThread = GetWindowThreadProcessId(targetWindow, nullptr);
hkl = GetKeyboardLayout(targetThread); hkl = GetKeyboardLayout(targetThread);
} }
@ -1225,7 +1225,7 @@ KeyModifierMask &MSWindowsKeyState::getActiveModifiersRValue()
bool MSWindowsKeyState::getGroups(GroupList &groups) const bool MSWindowsKeyState::getGroups(GroupList &groups) const
{ {
// get keyboard layouts // get keyboard layouts
uint32_t newNumLayouts = GetKeyboardLayoutList(0, NULL); uint32_t newNumLayouts = GetKeyboardLayoutList(0, nullptr);
if (newNumLayouts == 0) { if (newNumLayouts == 0) {
LOG((CLOG_DEBUG1 "can't get keyboard layouts")); LOG((CLOG_DEBUG1 "can't get keyboard layouts"));
return false; return false;

View file

@ -216,7 +216,7 @@ private:
KeyModifierMask m_savedModifiers; KeyModifierMask m_savedModifiers;
KeyModifierMask m_originalSavedModifiers; KeyModifierMask m_originalSavedModifiers;
// pointer to ToUnicodeEx. on win95 family this will be NULL. // pointer to ToUnicodeEx. on win95 family this will be nullptr.
typedef int(WINAPI *ToUnicodeEx_t)( typedef int(WINAPI *ToUnicodeEx_t)(
UINT wVirtKey, UINT wScanCode, PBYTE lpKeyState, LPWSTR pwszBuff, int cchBuff, UINT wFlags, HKL dwhkl UINT wVirtKey, UINT wScanCode, PBYTE lpKeyState, LPWSTR pwszBuff, int cchBuff, UINT wFlags, HKL dwhkl
); );

View file

@ -78,8 +78,8 @@
// MSWindowsScreen // MSWindowsScreen
// //
HINSTANCE MSWindowsScreen::s_windowInstance = NULL; HINSTANCE MSWindowsScreen::s_windowInstance = nullptr;
MSWindowsScreen *MSWindowsScreen::s_screen = NULL; MSWindowsScreen *MSWindowsScreen::s_screen = nullptr;
MSWindowsScreen::MSWindowsScreen( MSWindowsScreen::MSWindowsScreen(
bool isPrimary, bool noHooks, IEventQueue *events, bool enableLangSync, bool isPrimary, bool noHooks, IEventQueue *events, bool enableLangSync,
@ -102,24 +102,24 @@ MSWindowsScreen::MSWindowsScreen(
m_sequenceNumber(0), m_sequenceNumber(0),
m_mark(0), m_mark(0),
m_markReceived(0), m_markReceived(0),
m_fixTimer(NULL), m_fixTimer(nullptr),
m_keyLayout(NULL), m_keyLayout(nullptr),
m_screensaver(NULL), m_screensaver(nullptr),
m_screensaverNotify(false), m_screensaverNotify(false),
m_screensaverActive(false), m_screensaverActive(false),
m_window(NULL), m_window(nullptr),
m_clipboardSequenceNumber(0), m_clipboardSequenceNumber(0),
m_ownClipboard(false), m_ownClipboard(false),
m_desks(NULL), m_desks(nullptr),
m_keyState(NULL), m_keyState(nullptr),
m_hasMouse(GetSystemMetrics(SM_MOUSEPRESENT) != 0), m_hasMouse(GetSystemMetrics(SM_MOUSEPRESENT) != 0),
m_showingMouse(false), m_showingMouse(false),
m_events(events), m_events(events),
m_dropWindow(NULL), m_dropWindow(nullptr),
m_dropWindowSize(20) m_dropWindowSize(20)
{ {
assert(s_windowInstance != NULL); assert(s_windowInstance != nullptr);
assert(s_screen == NULL); assert(s_screen == nullptr);
s_screen = this; s_screen = this;
try { try {
@ -145,7 +145,7 @@ MSWindowsScreen::MSWindowsScreen(
// SHGetFolderPath is deprecated in vista, but use it for xp support. // SHGetFolderPath is deprecated in vista, but use it for xp support.
char desktopPath[MAX_PATH]; char desktopPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, desktopPath))) { if (SUCCEEDED(SHGetFolderPath(nullptr, CSIDL_DESKTOP, nullptr, 0, desktopPath))) {
m_desktopPath = std::string(desktopPath); m_desktopPath = std::string(desktopPath);
LOG((CLOG_DEBUG "using desktop for file drag-drop target: %s", m_desktopPath.c_str())); LOG((CLOG_DEBUG "using desktop for file drag-drop target: %s", m_desktopPath.c_str()));
} else { } else {
@ -166,7 +166,7 @@ MSWindowsScreen::MSWindowsScreen(
delete m_screensaver; delete m_screensaver;
destroyWindow(m_window); destroyWindow(m_window);
destroyClass(m_class); destroyClass(m_class);
s_screen = NULL; s_screen = nullptr;
throw; throw;
} }
@ -182,10 +182,10 @@ MSWindowsScreen::MSWindowsScreen(
MSWindowsScreen::~MSWindowsScreen() MSWindowsScreen::~MSWindowsScreen()
{ {
assert(s_screen != NULL); assert(s_screen != nullptr);
disable(); disable();
m_events->adoptBuffer(NULL); m_events->adoptBuffer(nullptr);
m_events->removeHandler(Event::kSystem, m_events->getSystemTarget()); m_events->removeHandler(Event::kSystem, m_events->getSystemTarget());
delete m_keyState; delete m_keyState;
delete m_desks; delete m_desks;
@ -198,13 +198,13 @@ MSWindowsScreen::~MSWindowsScreen()
OleUninitialize(); OleUninitialize();
destroyWindow(m_dropWindow); destroyWindow(m_dropWindow);
s_screen = NULL; s_screen = nullptr;
} }
void MSWindowsScreen::init(HINSTANCE windowInstance) void MSWindowsScreen::init(HINSTANCE windowInstance)
{ {
assert(s_windowInstance == NULL); assert(s_windowInstance == nullptr);
assert(windowInstance != NULL); assert(windowInstance != nullptr);
s_windowInstance = windowInstance; s_windowInstance = windowInstance;
} }
@ -220,7 +220,7 @@ void MSWindowsScreen::enable()
assert(m_isOnScreen == m_isPrimary); assert(m_isOnScreen == m_isPrimary);
// we need to poll some things to fix them // we need to poll some things to fix them
m_fixTimer = m_events->newTimer(1.0, NULL); m_fixTimer = m_events->newTimer(1.0, nullptr);
m_events->adoptHandler( m_events->adoptHandler(
Event::kTimer, m_fixTimer, new TMethodEventJob<MSWindowsScreen>(this, &MSWindowsScreen::handleFixes) Event::kTimer, m_fixTimer, new TMethodEventJob<MSWindowsScreen>(this, &MSWindowsScreen::handleFixes)
); );
@ -264,10 +264,10 @@ void MSWindowsScreen::disable()
} }
// uninstall fix timer // uninstall fix timer
if (m_fixTimer != NULL) { if (m_fixTimer != nullptr) {
m_events->removeHandler(Event::kTimer, m_fixTimer); m_events->removeHandler(Event::kTimer, m_fixTimer);
m_events->deleteTimer(m_fixTimer); m_events->deleteTimer(m_fixTimer);
m_fixTimer = NULL; m_fixTimer = nullptr;
} }
m_isOnScreen = m_isPrimary; m_isOnScreen = m_isPrimary;
@ -293,7 +293,7 @@ void MSWindowsScreen::enter()
// and that the screen is not in powersave mode. // and that the screen is not in powersave mode.
ArchMiscWindows::wakeupDisplay(); ArchMiscWindows::wakeupDisplay();
if (m_screensaver != NULL && m_screensaverActive) { if (m_screensaver != nullptr && m_screensaverActive) {
m_screensaver->deactivate(); m_screensaver->deactivate();
m_screensaverActive = 0; m_screensaverActive = 0;
} }
@ -386,7 +386,7 @@ void MSWindowsScreen::sendDragThread(void *)
bool MSWindowsScreen::setClipboard(ClipboardID, const IClipboard *src) bool MSWindowsScreen::setClipboard(ClipboardID, const IClipboard *src)
{ {
MSWindowsClipboard dst(m_window); MSWindowsClipboard dst(m_window);
if (src != NULL) { if (src != nullptr) {
// save clipboard data // save clipboard data
return Clipboard::copy(&dst, src); return Clipboard::copy(&dst, src);
} else { } else {
@ -423,7 +423,7 @@ void MSWindowsScreen::checkClipboards()
void MSWindowsScreen::openScreensaver(bool notify) void MSWindowsScreen::openScreensaver(bool notify)
{ {
assert(m_screensaver != NULL); assert(m_screensaver != nullptr);
m_screensaverNotify = notify; m_screensaverNotify = notify;
if (m_screensaverNotify) { if (m_screensaverNotify) {
@ -435,7 +435,7 @@ void MSWindowsScreen::openScreensaver(bool notify)
void MSWindowsScreen::closeScreensaver() void MSWindowsScreen::closeScreensaver()
{ {
if (m_screensaver != NULL) { if (m_screensaver != nullptr) {
if (m_screensaverNotify) { if (m_screensaverNotify) {
m_desks->installScreensaverHooks(false); m_desks->installScreensaverHooks(false);
} else { } else {
@ -447,8 +447,8 @@ void MSWindowsScreen::closeScreensaver()
void MSWindowsScreen::screensaver(bool activate) void MSWindowsScreen::screensaver(bool activate)
{ {
assert(m_screensaver != NULL); assert(m_screensaver != nullptr);
if (m_screensaver == NULL) if (m_screensaver == nullptr)
return; return;
if (activate) { if (activate) {
@ -557,7 +557,7 @@ void MSWindowsScreen::updateDesktopThread()
LOG_DEBUG("updating desktop thread"); LOG_DEBUG("updating desktop thread");
HDESK hDesk = OpenInputDesktop(0, true, GENERIC_ALL); HDESK hDesk = OpenInputDesktop(0, true, GENERIC_ALL);
if (hDesk == NULL) { if (hDesk == nullptr) {
XArchEvalWindows error1; XArchEvalWindows error1;
LOG_DEBUG("could not open input desktop, error: %s", error1.eval().c_str()); LOG_DEBUG("could not open input desktop, error: %s", error1.eval().c_str());
return; return;
@ -589,7 +589,7 @@ void MSWindowsScreen::warpCursor(int32_t x, int32_t y)
// remove all input events before and including warp // remove all input events before and including warp
MSG msg; MSG msg;
while (PeekMessage(&msg, NULL, DESKFLOW_MSG_INPUT_FIRST, DESKFLOW_MSG_INPUT_LAST, PM_REMOVE)) { while (PeekMessage(&msg, nullptr, DESKFLOW_MSG_INPUT_FIRST, DESKFLOW_MSG_INPUT_LAST, PM_REMOVE)) {
// do nothing // do nothing
} }
@ -660,7 +660,7 @@ uint32_t MSWindowsScreen::registerHotKey(KeyID key, KeyModifierMask mask)
err = (m_hotKeyToIDMap.count(HotKeyItem(vk, modifiers)) > 0); err = (m_hotKeyToIDMap.count(HotKeyItem(vk, modifiers)) > 0);
} else { } else {
// register with OS // register with OS
err = (RegisterHotKey(NULL, id, modifiers, vk) == 0); err = (RegisterHotKey(nullptr, id, modifiers, vk) == 0);
} }
if (!err) { if (!err) {
@ -694,7 +694,7 @@ void MSWindowsScreen::unregisterHotKey(uint32_t id)
// unregister with OS // unregister with OS
bool err; bool err;
if (i->second.getVirtualKey() != 0) { if (i->second.getVirtualKey() != 0) {
err = !UnregisterHotKey(NULL, id); err = !UnregisterHotKey(nullptr, id);
} else { } else {
err = false; err = false;
} }
@ -844,7 +844,7 @@ MSWindowsScreen::createBlankCursor() const
void MSWindowsScreen::destroyCursor(HCURSOR cursor) const void MSWindowsScreen::destroyCursor(HCURSOR cursor) const
{ {
if (cursor != NULL) { if (cursor != nullptr) {
DestroyCursor(cursor); DestroyCursor(cursor);
} }
} }
@ -858,12 +858,12 @@ ATOM MSWindowsScreen::createWindowClass() const
classInfo.cbClsExtra = 0; classInfo.cbClsExtra = 0;
classInfo.cbWndExtra = 0; classInfo.cbWndExtra = 0;
classInfo.hInstance = s_windowInstance; classInfo.hInstance = s_windowInstance;
classInfo.hIcon = NULL; classInfo.hIcon = nullptr;
classInfo.hCursor = NULL; classInfo.hCursor = nullptr;
classInfo.hbrBackground = NULL; classInfo.hbrBackground = nullptr;
classInfo.lpszMenuName = NULL; classInfo.lpszMenuName = nullptr;
classInfo.lpszClassName = kAppName; classInfo.lpszClassName = kAppName;
classInfo.hIconSm = NULL; classInfo.hIconSm = nullptr;
return RegisterClassEx(&classInfo); return RegisterClassEx(&classInfo);
} }
@ -877,10 +877,10 @@ void MSWindowsScreen::destroyClass(ATOM windowClass) const
HWND MSWindowsScreen::createWindow(ATOM windowClass, const char *name) const HWND MSWindowsScreen::createWindow(ATOM windowClass, const char *name) const
{ {
HWND window = CreateWindowEx( HWND window = CreateWindowEx(
WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW, MAKEINTATOM(windowClass), name, WS_POPUP, 0, 0, 1, 1, NULL, WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW, MAKEINTATOM(windowClass), name, WS_POPUP, 0, 0, 1, 1,
NULL, s_windowInstance, NULL nullptr, nullptr, s_windowInstance, nullptr
); );
if (window == NULL) { if (window == nullptr) {
LOG((CLOG_ERR "failed to create window: %d", GetLastError())); LOG((CLOG_ERR "failed to create window: %d", GetLastError()));
throw XScreenOpenFailure(); throw XScreenOpenFailure();
} }
@ -891,10 +891,10 @@ HWND MSWindowsScreen::createDropWindow(ATOM windowClass, const char *name) const
{ {
HWND window = CreateWindowEx( HWND window = CreateWindowEx(
WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_ACCEPTFILES, MAKEINTATOM(m_class), name, WS_POPUP, 0, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_ACCEPTFILES, MAKEINTATOM(m_class), name, WS_POPUP, 0, 0,
m_dropWindowSize, m_dropWindowSize, NULL, NULL, s_windowInstance, NULL m_dropWindowSize, m_dropWindowSize, nullptr, nullptr, s_windowInstance, nullptr
); );
if (window == NULL) { if (window == nullptr) {
LOG((CLOG_ERR "failed to create drop window: %d", GetLastError())); LOG((CLOG_ERR "failed to create drop window: %d", GetLastError()));
throw XScreenOpenFailure(); throw XScreenOpenFailure();
} }
@ -904,7 +904,7 @@ HWND MSWindowsScreen::createDropWindow(ATOM windowClass, const char *name) const
void MSWindowsScreen::destroyWindow(HWND hwnd) const void MSWindowsScreen::destroyWindow(HWND hwnd) const
{ {
if (hwnd != NULL) { if (hwnd != nullptr) {
DestroyWindow(hwnd); DestroyWindow(hwnd);
} }
} }
@ -917,7 +917,7 @@ void MSWindowsScreen::sendEvent(Event::Type type, void *data)
void MSWindowsScreen::sendClipboardEvent(Event::Type type, ClipboardID id) void MSWindowsScreen::sendClipboardEvent(Event::Type type, ClipboardID id)
{ {
ClipboardInfo *info = (ClipboardInfo *)malloc(sizeof(ClipboardInfo)); ClipboardInfo *info = (ClipboardInfo *)malloc(sizeof(ClipboardInfo));
if (info == NULL) { if (info == nullptr) {
LOG((CLOG_ERR "malloc failed on %s:%s", __FILE__, __LINE__)); LOG((CLOG_ERR "malloc failed on %s:%s", __FILE__, __LINE__));
return; return;
} }
@ -929,7 +929,7 @@ void MSWindowsScreen::sendClipboardEvent(Event::Type type, ClipboardID id)
void MSWindowsScreen::handleSystemEvent(const Event &event, void *) void MSWindowsScreen::handleSystemEvent(const Event &event, void *)
{ {
MSG *msg = static_cast<MSG *>(event.getData()); MSG *msg = static_cast<MSG *>(event.getData());
assert(msg != NULL); assert(msg != nullptr);
if (onPreDispatch(msg->hwnd, msg->message, msg->wParam, msg->lParam)) { if (onPreDispatch(msg->hwnd, msg->message, msg->wParam, msg->lParam)) {
return; return;
@ -1006,7 +1006,7 @@ bool MSWindowsScreen::onPreDispatchPrimary(HWND, UINT message, WPARAM wParam, LP
// event. // event.
MSG msg; MSG msg;
do { do {
GetMessage(&msg, NULL, DESKFLOW_MSG_MOUSE_MOVE, DESKFLOW_MSG_POST_WARP); GetMessage(&msg, nullptr, DESKFLOW_MSG_MOUSE_MOVE, DESKFLOW_MSG_POST_WARP);
} while (msg.message != DESKFLOW_MSG_POST_WARP); } while (msg.message != DESKFLOW_MSG_POST_WARP);
} }
return true; return true;
@ -1050,7 +1050,7 @@ bool MSWindowsScreen::onEvent(HWND, UINT msg, WPARAM wParam, LPARAM lParam, LRES
/* On windows 10 we don't receive WM_POWERBROADCAST after sleep. /* On windows 10 we don't receive WM_POWERBROADCAST after sleep.
We receive only WM_TIMECHANGE hence this message is used to resume.*/ We receive only WM_TIMECHANGE hence this message is used to resume.*/
case WM_TIMECHANGE: case WM_TIMECHANGE:
m_events->addEvent(Event(m_events->forIScreen().resume(), getEventTarget(), NULL, Event::kDeliverImmediately)); m_events->addEvent(Event(m_events->forIScreen().resume(), getEventTarget(), nullptr, Event::kDeliverImmediately));
break; break;
case WM_POWERBROADCAST: case WM_POWERBROADCAST:
@ -1058,11 +1058,12 @@ bool MSWindowsScreen::onEvent(HWND, UINT msg, WPARAM wParam, LPARAM lParam, LRES
case PBT_APMRESUMEAUTOMATIC: case PBT_APMRESUMEAUTOMATIC:
case PBT_APMRESUMECRITICAL: case PBT_APMRESUMECRITICAL:
case PBT_APMRESUMESUSPEND: case PBT_APMRESUMESUSPEND:
m_events->addEvent(Event(m_events->forIScreen().resume(), getEventTarget(), NULL, Event::kDeliverImmediately)); m_events->addEvent(Event(m_events->forIScreen().resume(), getEventTarget(), nullptr, Event::kDeliverImmediately));
break; break;
case PBT_APMSUSPEND: case PBT_APMSUSPEND:
m_events->addEvent(Event(m_events->forIScreen().suspend(), getEventTarget(), NULL, Event::kDeliverImmediately)); m_events->addEvent(Event(m_events->forIScreen().suspend(), getEventTarget(), nullptr, Event::kDeliverImmediately)
);
break; break;
} }
*result = TRUE; *result = TRUE;
@ -1383,7 +1384,7 @@ bool MSWindowsScreen::onScreensaver(bool activated)
// send SC_SCREENSAVE until the screen saver starts, even if // send SC_SCREENSAVE until the screen saver starts, even if
// the screen saver is disabled! // the screen saver is disabled!
MSG msg; MSG msg;
if (PeekMessage(&msg, NULL, DESKFLOW_MSG_SCREEN_SAVER, DESKFLOW_MSG_SCREEN_SAVER, PM_NOREMOVE)) { if (PeekMessage(&msg, nullptr, DESKFLOW_MSG_SCREEN_SAVER, DESKFLOW_MSG_SCREEN_SAVER, PM_NOREMOVE)) {
return true; return true;
} }
@ -1553,12 +1554,12 @@ void MSWindowsScreen::fixClipboardViewer()
// recursion in the WM_DRAWCLIPBOARD handler. either we're sending // recursion in the WM_DRAWCLIPBOARD handler. either we're sending
// the message to our own window or some window farther down the chain // the message to our own window or some window farther down the chain
// forwards the message to our window or a window farther up the chain. // forwards the message to our window or a window farther up the chain.
// i'm not sure how that could happen. the m_nextClipboardWindow = NULL // i'm not sure how that could happen. the m_nextClipboardWindow = nullptr
// was not in the code that infinite loops and may fix the bug but i // was not in the code that infinite loops and may fix the bug but i
// doubt it. // doubt it.
/* /*
ChangeClipboardChain(m_window, m_nextClipboardWindow); ChangeClipboardChain(m_window, m_nextClipboardWindow);
m_nextClipboardWindow = NULL; m_nextClipboardWindow = nullptr;
m_nextClipboardWindow = SetClipboardViewer(m_window); m_nextClipboardWindow = SetClipboardViewer(m_window);
*/ */
} }
@ -1735,7 +1736,7 @@ void MSWindowsScreen::updateForceShowCursor()
LRESULT CALLBACK MSWindowsScreen::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK MSWindowsScreen::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ {
assert(s_screen != NULL); assert(s_screen != nullptr);
LRESULT result = 0; LRESULT result = 0;
if (!s_screen->onEvent(hwnd, msg, wParam, lParam, &result)) { if (!s_screen->onEvent(hwnd, msg, wParam, lParam, &result)) {

View file

@ -152,7 +152,7 @@ private:
// convenience function to send events // convenience function to send events
public: // HACK public: // HACK
void sendEvent(Event::Type type, void * = NULL); void sendEvent(Event::Type type, void * = nullptr);
private: // HACK private: // HACK
void sendClipboardEvent(Event::Type type, ClipboardID id); void sendClipboardEvent(Event::Type type, ClipboardID id);

View file

@ -23,7 +23,7 @@
static const TCHAR *g_isSecureNT = "ScreenSaverIsSecure"; static const TCHAR *g_isSecureNT = "ScreenSaverIsSecure";
static const TCHAR *g_isSecure9x = "ScreenSaveUsePassword"; static const TCHAR *g_isSecure9x = "ScreenSaveUsePassword";
static const TCHAR *const g_pathScreenSaverIsSecure[] = {"Control Panel", "Desktop", NULL}; static const TCHAR *const g_pathScreenSaverIsSecure[] = {"Control Panel", "Desktop", nullptr};
// //
// MSWindowsScreenSaver // MSWindowsScreenSaver
@ -32,8 +32,8 @@ static const TCHAR *const g_pathScreenSaverIsSecure[] = {"Control Panel", "Deskt
MSWindowsScreenSaver::MSWindowsScreenSaver() MSWindowsScreenSaver::MSWindowsScreenSaver()
: m_wasSecure(false), : m_wasSecure(false),
m_wasSecureAnInt(false), m_wasSecureAnInt(false),
m_process(NULL), m_process(nullptr),
m_watch(NULL), m_watch(nullptr),
m_threadID(0), m_threadID(0),
m_msg(0), m_msg(0),
m_wParam(0), m_wParam(0),
@ -116,11 +116,11 @@ void MSWindowsScreenSaver::activate()
if (!isActive()) { if (!isActive()) {
// activate // activate
HWND hwnd = GetForegroundWindow(); HWND hwnd = GetForegroundWindow();
if (hwnd != NULL) { if (hwnd != nullptr) {
PostMessage(hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0); PostMessage(hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
} else { } else {
// no foreground window. pretend we got the event instead. // no foreground window. pretend we got the event instead.
DefWindowProc(NULL, WM_SYSCOMMAND, SC_SCREENSAVE, 0); DefWindowProc(nullptr, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
} }
} }
} }
@ -131,7 +131,7 @@ void MSWindowsScreenSaver::deactivate()
// NT runs screen saver in another desktop // NT runs screen saver in another desktop
HDESK desktop = OpenDesktop("Screen-saver", 0, FALSE, DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS); HDESK desktop = OpenDesktop("Screen-saver", 0, FALSE, DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS);
if (desktop != NULL) { if (desktop != nullptr) {
EnumDesktopWindows(desktop, &MSWindowsScreenSaver::killScreenSaverFunc, reinterpret_cast<LPARAM>(&killed)); EnumDesktopWindows(desktop, &MSWindowsScreenSaver::killScreenSaverFunc, reinterpret_cast<LPARAM>(&killed));
CloseDesktop(desktop); CloseDesktop(desktop);
} }
@ -139,12 +139,12 @@ void MSWindowsScreenSaver::deactivate()
// if above failed or wasn't tried, try the windows 95 way // if above failed or wasn't tried, try the windows 95 way
if (!killed) { if (!killed) {
// find screen saver window and close it // find screen saver window and close it
HWND hwnd = FindWindow("WindowsScreenSaverClass", NULL); HWND hwnd = FindWindow("WindowsScreenSaverClass", nullptr);
if (hwnd == NULL) { if (hwnd == nullptr) {
// win2k may use a different class // win2k may use a different class
hwnd = FindWindow("Default Screen Saver", NULL); hwnd = FindWindow("Default Screen Saver", nullptr);
} }
if (hwnd != NULL) { if (hwnd != nullptr) {
PostMessage(hwnd, WM_CLOSE, 0, 0); PostMessage(hwnd, WM_CLOSE, 0, 0);
} }
} }
@ -191,7 +191,7 @@ void MSWindowsScreenSaver::watchProcess(HANDLE process)
unwatchProcess(); unwatchProcess();
// watch new process in another thread // watch new process in another thread
if (process != NULL) { if (process != nullptr) {
LOG((CLOG_DEBUG "watching screen saver process")); LOG((CLOG_DEBUG "watching screen saver process"));
m_process = process; m_process = process;
m_active = true; m_active = true;
@ -201,24 +201,24 @@ void MSWindowsScreenSaver::watchProcess(HANDLE process)
void MSWindowsScreenSaver::unwatchProcess() void MSWindowsScreenSaver::unwatchProcess()
{ {
if (m_watch != NULL) { if (m_watch != nullptr) {
LOG((CLOG_DEBUG "stopped watching screen saver process/desktop")); LOG((CLOG_DEBUG "stopped watching screen saver process/desktop"));
m_watch->cancel(); m_watch->cancel();
m_watch->wait(); m_watch->wait();
delete m_watch; delete m_watch;
m_watch = NULL; m_watch = nullptr;
m_active = false; m_active = false;
} }
if (m_process != NULL) { if (m_process != nullptr) {
CloseHandle(m_process); CloseHandle(m_process);
m_process = NULL; m_process = nullptr;
} }
} }
void MSWindowsScreenSaver::watchDesktopThread(void *) void MSWindowsScreenSaver::watchDesktopThread(void *)
{ {
DWORD reserved = 0; DWORD reserved = 0;
TCHAR *name = NULL; TCHAR *name = nullptr;
for (;;) { for (;;) {
// wait a bit // wait a bit
@ -256,7 +256,7 @@ void MSWindowsScreenSaver::watchProcessThread(void *)
void MSWindowsScreenSaver::setSecure(bool secure, bool saveSecureAsInt) void MSWindowsScreenSaver::setSecure(bool secure, bool saveSecureAsInt)
{ {
HKEY hkey = ArchMiscWindows::addKey(HKEY_CURRENT_USER, g_pathScreenSaverIsSecure); HKEY hkey = ArchMiscWindows::addKey(HKEY_CURRENT_USER, g_pathScreenSaverIsSecure);
if (hkey == NULL) { if (hkey == nullptr) {
return; return;
} }
@ -273,7 +273,7 @@ bool MSWindowsScreenSaver::isSecure(bool *wasSecureFlagAnInt) const
{ {
// get the password protection setting key // get the password protection setting key
HKEY hkey = ArchMiscWindows::openKey(HKEY_CURRENT_USER, g_pathScreenSaverIsSecure); HKEY hkey = ArchMiscWindows::openKey(HKEY_CURRENT_USER, g_pathScreenSaverIsSecure);
if (hkey == NULL) { if (hkey == nullptr) {
return false; return false;
} }

View file

@ -20,7 +20,7 @@ MSWindowsSession::~MSWindowsSession()
{ {
} }
bool MSWindowsSession::isProcessInSession(const char *name, PHANDLE process = NULL) bool MSWindowsSession::isProcessInSession(const char *name, PHANDLE process = nullptr)
{ {
// first we need to take a snapshot of the running processes // first we need to take a snapshot of the running processes
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
@ -91,7 +91,7 @@ bool MSWindowsSession::isProcessInSession(const char *name, PHANDLE process = NU
CloseHandle(snapshot); CloseHandle(snapshot);
if (pid) { if (pid) {
if (process != NULL) { if (process != nullptr) {
// now get the process, which we'll use to get the process token. // now get the process, which we'll use to get the process token.
LOG((CLOG_DEBUG "found %s in session %i", name, m_activeSessionId)); LOG((CLOG_DEBUG "found %s in session %i", name, m_activeSessionId));
*process = OpenProcess(MAXIMUM_ALLOWED, FALSE, pid); *process = OpenProcess(MAXIMUM_ALLOWED, FALSE, pid);

View file

@ -17,7 +17,7 @@
std::string MSWindowsUtil::getString(HINSTANCE instance, DWORD id) std::string MSWindowsUtil::getString(HINSTANCE instance, DWORD id)
{ {
char *msg = NULL; char *msg = nullptr;
int n = LoadString(instance, id, reinterpret_cast<LPSTR>(&msg), 0); int n = LoadString(instance, id, reinterpret_cast<LPSTR>(&msg), 0);
if (n <= 0) { if (n <= 0) {
@ -32,7 +32,7 @@ std::string MSWindowsUtil::getErrorString(HINSTANCE hinstance, DWORD error, DWOR
char *buffer; char *buffer;
if (FormatMessage( if (FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, 0, error, FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, 0, error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buffer, 0, NULL MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buffer, 0, nullptr
) == 0) { ) == 0) {
std::string errorString = deskflow::string::sprintf("%d", error); std::string errorString = deskflow::string::sprintf("%d", error);
return deskflow::string::format(getString(hinstance, id).c_str(), errorString.c_str()); return deskflow::string::format(getString(hinstance, id).c_str(), errorString.c_str());

View file

@ -20,7 +20,7 @@
// OSXClipboard // OSXClipboard
// //
OSXClipboard::OSXClipboard() : m_time(0), m_pboard(NULL) OSXClipboard::OSXClipboard() : m_time(0), m_pboard(nullptr)
{ {
m_converters.push_back(new OSXClipboardHTMLConverter); m_converters.push_back(new OSXClipboardHTMLConverter);
m_converters.push_back(new OSXClipboardBMPConverter); m_converters.push_back(new OSXClipboardBMPConverter);
@ -32,7 +32,7 @@ OSXClipboard::OSXClipboard() : m_time(0), m_pboard(NULL)
if (createErr != noErr) { if (createErr != noErr) {
LOG((CLOG_WARN "failed to create clipboard reference: error %i", createErr)); LOG((CLOG_WARN "failed to create clipboard reference: error %i", createErr));
LOG((CLOG_ERR "unable to connect to pasteboard, clipboard sharing disabled", createErr)); LOG((CLOG_ERR "unable to connect to pasteboard, clipboard sharing disabled", createErr));
m_pboard = NULL; m_pboard = nullptr;
return; return;
} }
@ -50,7 +50,7 @@ OSXClipboard::~OSXClipboard()
bool OSXClipboard::empty() bool OSXClipboard::empty()
{ {
LOG((CLOG_DEBUG "emptying clipboard")); LOG((CLOG_DEBUG "emptying clipboard"));
if (m_pboard == NULL) if (m_pboard == nullptr)
return false; return false;
OSStatus err = PasteboardClear(m_pboard); OSStatus err = PasteboardClear(m_pboard);
@ -64,7 +64,7 @@ bool OSXClipboard::empty()
bool OSXClipboard::synchronize() bool OSXClipboard::synchronize()
{ {
if (m_pboard == NULL) if (m_pboard == nullptr)
return false; return false;
PasteboardSyncFlags flags = PasteboardSynchronize(m_pboard); PasteboardSyncFlags flags = PasteboardSynchronize(m_pboard);
@ -78,7 +78,7 @@ bool OSXClipboard::synchronize()
void OSXClipboard::add(EFormat format, const std::string &data) void OSXClipboard::add(EFormat format, const std::string &data)
{ {
if (m_pboard == NULL) if (m_pboard == nullptr)
return; return;
LOG((CLOG_DEBUG "add %d bytes to clipboard format: %d", data.size(), format)); LOG((CLOG_DEBUG "add %d bytes to clipboard format: %d", data.size(), format));
@ -113,7 +113,7 @@ void OSXClipboard::add(EFormat format, const std::string &data)
bool OSXClipboard::open(Time time) const bool OSXClipboard::open(Time time) const
{ {
if (m_pboard == NULL) if (m_pboard == nullptr)
return false; return false;
LOG((CLOG_DEBUG "opening clipboard")); LOG((CLOG_DEBUG "opening clipboard"));
@ -134,7 +134,7 @@ IClipboard::Time OSXClipboard::getTime() const
bool OSXClipboard::has(EFormat format) const bool OSXClipboard::has(EFormat format) const
{ {
if (m_pboard == NULL) if (m_pboard == nullptr)
return false; return false;
PasteboardItemID item; PasteboardItemID item;
@ -163,13 +163,13 @@ std::string OSXClipboard::get(EFormat format) const
PasteboardItemID item; PasteboardItemID item;
std::string result; std::string result;
if (m_pboard == NULL) if (m_pboard == nullptr)
return result; return result;
PasteboardGetItemIdentifier(m_pboard, (CFIndex)1, &item); PasteboardGetItemIdentifier(m_pboard, (CFIndex)1, &item);
// find the converter for the first clipboard format we can handle // find the converter for the first clipboard format we can handle
IOSXClipboardConverter *converter = NULL; IOSXClipboardConverter *converter = nullptr;
for (ConverterList::const_iterator index = m_converters.begin(); index != m_converters.end(); ++index) { for (ConverterList::const_iterator index = m_converters.begin(); index != m_converters.end(); ++index) {
converter = *index; converter = *index;
@ -179,17 +179,17 @@ std::string OSXClipboard::get(EFormat format) const
if (converter->getFormat() == format && PasteboardGetItemFlavorFlags(m_pboard, item, type, &flags) == noErr) { if (converter->getFormat() == format && PasteboardGetItemFlavorFlags(m_pboard, item, type, &flags) == noErr) {
break; break;
} }
converter = NULL; converter = nullptr;
} }
// if no converter then we don't recognize any formats // if no converter then we don't recognize any formats
if (converter == NULL) { if (converter == nullptr) {
LOG((CLOG_DEBUG "unable to find converter for data")); LOG((CLOG_DEBUG "unable to find converter for data"));
return result; return result;
} }
// get the clipboard data. // get the clipboard data.
CFDataRef buffer = NULL; CFDataRef buffer = nullptr;
try { try {
OSStatus err = PasteboardCopyItemFlavorData(m_pboard, item, type, &buffer); OSStatus err = PasteboardCopyItemFlavorData(m_pboard, item, type, &buffer);
@ -205,7 +205,7 @@ std::string OSXClipboard::get(EFormat format) const
RETHROW_XTHREAD RETHROW_XTHREAD
} }
if (buffer != NULL) if (buffer != nullptr)
CFRelease(buffer); CFRelease(buffer);
return converter->toIClipboard(result); return converter->toIClipboard(result);
@ -213,7 +213,7 @@ std::string OSXClipboard::get(EFormat format) const
void OSXClipboard::clearConverters() void OSXClipboard::clearConverters()
{ {
if (m_pboard == NULL) if (m_pboard == nullptr)
return; return;
for (ConverterList::iterator index = m_converters.begin(); index != m_converters.end(); ++index) { for (ConverterList::iterator index = m_converters.begin(); index != m_converters.end(); ++index) {

View file

@ -35,23 +35,23 @@ std::string OSXClipboardHTMLConverter::convertString(
{ {
CFStringRef stringRef = CFStringCreateWithCString(kCFAllocatorDefault, data.c_str(), fromEncoding); CFStringRef stringRef = CFStringCreateWithCString(kCFAllocatorDefault, data.c_str(), fromEncoding);
if (stringRef == NULL) { if (stringRef == nullptr) {
return std::string(); return std::string();
} }
CFIndex buffSize; CFIndex buffSize;
CFRange entireString = CFRangeMake(0, CFStringGetLength(stringRef)); CFRange entireString = CFRangeMake(0, CFStringGetLength(stringRef));
CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, NULL, 0, &buffSize); CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, nullptr, 0, &buffSize);
char *buffer = new char[buffSize]; char *buffer = new char[buffSize];
if (buffer == NULL) { if (buffer == nullptr) {
CFRelease(stringRef); CFRelease(stringRef);
return std::string(); return std::string();
} }
CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, (uint8_t *)buffer, buffSize, NULL); CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, (uint8_t *)buffer, buffSize, nullptr);
std::string result(buffer, buffSize); std::string result(buffer, buffSize);

View file

@ -34,23 +34,23 @@ std::string OSXClipboardTextConverter::convertString(
{ {
CFStringRef stringRef = CFStringCreateWithCString(kCFAllocatorDefault, data.c_str(), fromEncoding); CFStringRef stringRef = CFStringCreateWithCString(kCFAllocatorDefault, data.c_str(), fromEncoding);
if (stringRef == NULL) { if (stringRef == nullptr) {
return std::string(); return std::string();
} }
CFIndex buffSize; CFIndex buffSize;
CFRange entireString = CFRangeMake(0, CFStringGetLength(stringRef)); CFRange entireString = CFRangeMake(0, CFStringGetLength(stringRef));
CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, NULL, 0, &buffSize); CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, nullptr, 0, &buffSize);
char *buffer = new char[buffSize]; char *buffer = new char[buffSize];
if (buffer == NULL) { if (buffer == nullptr) {
CFRelease(stringRef); CFRelease(stringRef);
return std::string(); return std::string();
} }
CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, (uint8_t *)buffer, buffSize, NULL); CFStringGetBytes(stringRef, entireString, toEncoding, 0, false, (uint8_t *)buffer, buffSize, nullptr);
std::string result(buffer, buffSize); std::string result(buffer, buffSize);

Some files were not shown because too many files have changed in this diff Show more