From 1b789b88a34d07ac0c43eeb3f175ac6a1a325afc Mon Sep 17 00:00:00 2001
From: Sebastião Guerra <sebastiao.luiz.guerra@gmail.com>
Date: Sat, 3 Oct 2026 08:33:16 -0300
Subject: Replace zero pointer constants with nullptr
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Sebastião Guerra <sebastiao.luiz.guerra@gmail.com>
---
 artsc/artscbackend.cpp               |  12 ++--
 flow/asyncschedule.cpp               |  20 +++---
 flow/audioio.cpp                     |  10 +--
 flow/audioioalsa.cpp                 |   8 +--
 flow/audioionull.cpp                 |   4 +-
 flow/audioiooss.cpp                  |   2 +-
 flow/audioioossthreaded.cpp          |   8 +--
 flow/audiomanager_impl.cpp           |   6 +-
 flow/audiosubsys.cpp                 |  16 ++---
 flow/bus.cpp                         |   4 +-
 flow/cache.cpp                       |   8 +--
 flow/datahandle_impl.cpp             |   2 +-
 flow/gsl/gslartsthreads.cpp          |   4 +-
 flow/gslpp/datahandle.cpp            |  26 ++++----
 flow/gslpp/datahandle.h              |   2 +-
 flow/gslschedule.cpp                 |  50 +++++++--------
 flow/pipebuffer.cpp                  |   2 +-
 flow/stereoeffectstack_impl.cpp      |   4 +-
 flow/stereofftscope_impl.cpp         |   2 +-
 flow/synth_multi_add_impl.cpp        |   2 +-
 flow/synth_play_impl.cpp             |   4 +-
 flow/synth_play_wav_impl.cpp         |   8 +--
 flow/synth_record_impl.cpp           |   4 +-
 flow/virtualports.cpp                |  14 ++--
 gmcop/giomanager.cpp                 |  10 +--
 gmcop/giomanager.h                   |   2 +-
 mcop/anyref.cpp                      |   6 +-
 mcop/anyref.h                        |   4 +-
 mcop/buffer.cpp                      |   4 +-
 mcop/common.h                        |   2 +-
 mcop/connection.cpp                  |   4 +-
 mcop/core.cpp                        |  80 +++++++++++------------
 mcop/core.h                          | 120 +++++++++++++++++------------------
 mcop/datapacket.h                    |   4 +-
 mcop/debug.cpp                       |  16 ++---
 mcop/delayedreturn.cpp               |   6 +-
 mcop/dispatcher.cpp                  |  52 +++++++--------
 mcop/dispatcher.h                    |   2 +-
 mcop/dynamicrequest.cpp              |   6 +-
 mcop/dynamicskeleton.cpp             |   4 +-
 mcop/extensionloader.cpp             |   6 +-
 mcop/flowsystem.cpp                  |   8 +--
 mcop/iomanager.cpp                   |   8 +--
 mcop/mcoputils.cpp                   |  32 +++++-----
 mcop/md5auth.cpp                     |   4 +-
 mcop/notification.cpp                |   6 +-
 mcop/object.cpp                      |  18 +++---
 mcop/objectmanager.cpp               |   6 +-
 mcop/pool.h                          |   4 +-
 mcop/reference.h                     |   4 +-
 mcop/startupmanager.cpp              |  10 +--
 mcop/tcpconnection.cpp               |  20 +++---
 mcop/thread.cpp                      |  10 +--
 mcop/trader_impl.cpp                 |   8 +--
 mcop/unixconnection.cpp              |  10 +--
 mcop/weakreference.h                 |   4 +-
 mcop_mt/threads_posix.cpp            |  16 ++---
 mcopidl/mcopidl.cpp                  |  24 +++----
 mcopidl/namespace.cpp                |   2 +-
 mcopidl/scanner.cpp                  |   8 +--
 qtmcop/qiomanager.cpp                |  10 +--
 soundserver/artscat.cpp              |   4 +-
 soundserver/artsd.cpp                |  10 +--
 soundserver/artsrec.cpp              |   2 +-
 soundserver/artsshell.cpp            |  12 ++--
 soundserver/cpuusage.cpp             |   6 +-
 soundserver/crashhandler.cpp         |  16 ++---
 soundserver/fileinputstream_impl.cpp |  10 +--
 soundserver/samplestorage_impl.cpp   |  10 +--
 soundserver/soundserverv2_impl.cpp   |   4 +-
 soundserver/wavplayobject_impl.cpp   |   4 +-
 71 files changed, 420 insertions(+), 420 deletions(-)

diff --git a/artsc/artscbackend.cpp b/artsc/artscbackend.cpp
index 56d0868..f761eac 100644
--- a/artsc/artscbackend.cpp
+++ b/artsc/artscbackend.cpp
@@ -614,7 +614,7 @@ public:
 	arts_stream_t play_stream(int rate, int bits, int channels, const char *name)
 	{
 		if(server.isNull())
-			return 0;
+			return nullptr;
 
 		return (arts_stream_t)static_cast<Stream *>(new Sender(server,rate,bits,channels,name));
 	}
@@ -622,7 +622,7 @@ public:
 	arts_stream_t record_stream(int rate, int bits, int channels, const char *name)
 	{
 		if(server.isNull())
-			return 0;
+			return nullptr;
 
 		return (arts_stream_t)static_cast<Stream *>(new Receiver(server,rate,bits,channels,name));
 	}
@@ -699,14 +699,14 @@ public:
 		if(instance->refcnt == 0)
 		{
 			delete instance;
-			instance = 0;
+			instance = nullptr;
 		}
 	}
 };
 
 //----------------------------- static members -------------------------------
 
-ArtsCApi *ArtsCApi::instance = 0;
+ArtsCApi *ArtsCApi::instance = nullptr;
 
 //------------------ wrappers from C to C++ class ----------------------------
 
@@ -747,7 +747,7 @@ extern "C" ARTSC_EXPORT void arts_backend_free()
 
 extern "C" ARTSC_EXPORT arts_stream_t arts_backend_play_stream(int rate, int bits, int channels, const char *name)
 {
-	if(!ArtsCApi::the()) return 0;
+	if(!ArtsCApi::the()) return nullptr;
 
 	arts_backend_debug("arts_backend_play_stream");
 	return ArtsCApi::the()->play_stream(rate,bits,channels,name);
@@ -755,7 +755,7 @@ extern "C" ARTSC_EXPORT arts_stream_t arts_backend_play_stream(int rate, int bit
 
 extern "C" ARTSC_EXPORT arts_stream_t arts_backend_record_stream(int rate, int bits, int channels, const char *name)
 {
-	if(!ArtsCApi::the()) return 0;
+	if(!ArtsCApi::the()) return nullptr;
 
 	arts_backend_debug("arts_backend_record_stream");
 	return ArtsCApi::the()->record_stream(rate,bits,channels,name);
diff --git a/flow/asyncschedule.cpp b/flow/asyncschedule.cpp
index 66ae48b..373142f 100644
--- a/flow/asyncschedule.cpp
+++ b/flow/asyncschedule.cpp
@@ -139,7 +139,7 @@ ASyncPort::~ASyncPort()
 	 */
 	while(!sent.empty())
 	{
-		sent.front()->channel = 0;
+		sent.front()->channel = nullptr;
 		sent.pop_front();
 	}
 
@@ -166,7 +166,7 @@ void ASyncPort::setPull(int packets, int capacity)
 {
 	pullNotification.receiver = parent->object();
 	pullNotification.ID = notifyID;
-	pullNotification.internal = 0;
+	pullNotification.internal = nullptr;
 	pull = true;
 
 	for(int i=0;i<packets;i++)
@@ -257,7 +257,7 @@ void ASyncPort::connect(Port *xsource)
 	Notification n;
 	n.receiver = parent->object();
 	n.ID = notifyID;
-	n.internal = 0;
+	n.internal = nullptr;
 	source->subscribers.push_back(n);
 }
 
@@ -310,14 +310,14 @@ void ASyncPort::addSendNet(ASyncNetSend *netsend)
 	Notification n;
 	n.receiver = netsend;
 	n.ID = netsend->notifyID();
-	n.internal = 0;
+	n.internal = nullptr;
 	subscribers.push_back(n);
 	netSenders.push_back(netsend);
 }
 
 void ASyncPort::removeSendNet(ASyncNetSend *netsend)
 {
-	arts_return_if_fail(netsend != 0);
+	arts_return_if_fail(netsend);
 	netSenders.remove(netsend);
 
 	vector<Notification>::iterator si;
@@ -334,7 +334,7 @@ void ASyncPort::removeSendNet(ASyncNetSend *netsend)
 
 void ASyncPort::setNetReceiver(ASyncNetReceive *receiver)
 {
-	arts_return_if_fail(receiver != 0);
+	arts_return_if_fail(receiver);
 
 	FlowSystemReceiver r = FlowSystemReceiver::_from_base(receiver->_copy());
 	netReceiver = r;
@@ -371,7 +371,7 @@ ASyncNetSend::~ASyncNetSend()
 	if(ap)
 	{
 		ap->removeSendNet(this);
-		ap = 0;
+		ap = nullptr;
 	}
 }
 
@@ -429,7 +429,7 @@ void ASyncNetSend::disconnect()
 	if(ap)
 	{
 		ap->removeSendNet(this);
-		ap = 0;
+		ap = nullptr;
 	}
 	
 	_release();
@@ -457,7 +457,7 @@ ASyncNetReceive::ASyncNetReceive(ASyncPort *port, FlowSystemSender sender)
 
 	gotPacketNotification.ID = port->receiveNetNotifyID();
 	gotPacketNotification.receiver = port->receiveNetObject();
-	gotPacketNotification.internal = 0;
+	gotPacketNotification.internal = nullptr;
 	_receiveHandlerID =
 		_addCustomMessageHandler(_dispatch_ASyncNetReceive_receive,this);
 }
@@ -467,7 +467,7 @@ ASyncNetReceive::~ASyncNetReceive()
 	/* tell outstanding packets that we don't exist any longer */
 	while(!sent.empty())
 	{
-		sent.front()->channel = 0;
+		sent.front()->channel = nullptr;
 		sent.pop_front();
 	}
 	delete stream;
diff --git a/flow/audioio.cpp b/flow/audioio.cpp
index eafb197..609ec5d 100644
--- a/flow/audioio.cpp
+++ b/flow/audioio.cpp
@@ -88,7 +88,7 @@ const char *AudioIO::getParamStr(AudioParam p)
 
 /* ---- factories ---- */
 
-static list<AudioIOFactory *> *audioIOFactories = 0;
+static list<AudioIOFactory *> *audioIOFactories = nullptr;
 
 AudioIO *AudioIO::createAudioIO(const char *name)
 {
@@ -103,7 +103,7 @@ AudioIO *AudioIO::createAudioIO(const char *name)
 				return factory->createAudioIO();
 		}
 	}
-	return 0;
+	return nullptr;
 }
 
 int AudioIO::queryAudioIOCount()
@@ -121,7 +121,7 @@ const char *AudioIO::queryAudioIOParamStr(int audioIO, AudioParam p)
 	list<AudioIOFactory *>::iterator i = audioIOFactories->begin();
 
 	while(audioIO && i != audioIOFactories->end()) { i++; audioIO--; }
-	if(i == audioIOFactories->end()) return 0;
+	if(i == audioIOFactories->end()) return nullptr;
 	
 	switch(p)
 	{
@@ -130,7 +130,7 @@ const char *AudioIO::queryAudioIOParamStr(int audioIO, AudioParam p)
 		case fullName:
 			return (*i)->fullName();
 		default:
-			return 0;
+			return nullptr;
 	}
 }
 
@@ -150,7 +150,7 @@ void AudioIO::removeFactory(AudioIOFactory *factory)
 	if(audioIOFactories->empty())
 	{
 		delete audioIOFactories;
-		audioIOFactories = 0;
+		audioIOFactories = nullptr;
 	}
 }
 
diff --git a/flow/audioioalsa.cpp b/flow/audioioalsa.cpp
index 7577fe8..566f6d8 100644
--- a/flow/audioioalsa.cpp
+++ b/flow/audioioalsa.cpp
@@ -65,7 +65,7 @@ class AudioIOALSA : public AudioIO, public IONotify  {
 protected:
 	// List of file descriptors
         struct poll_descriptors {
-            poll_descriptors() : nfds(0), pfds(0) {};
+            poll_descriptors() : nfds(0), pfds(nullptr) {};
             int nfds;
             struct pollfd *pfds;
         } audio_write_pds, audio_read_pds;
@@ -548,7 +548,7 @@ int AudioIOALSA::setPcmParams(snd_pcm_t *pcm)
 	}
 
 	unsigned rate = _samplingRate;
-	if (snd_pcm_hw_params_set_rate_near(pcm, hw, &rate, 0) < 0) {
+	if (snd_pcm_hw_params_set_rate_near(pcm, hw, &rate, nullptr) < 0) {
 		_error = "Unable to set sampling rate!";
 		return 1;
 	}
@@ -573,12 +573,12 @@ int AudioIOALSA::setPcmParams(snd_pcm_t *pcm)
 		m_period_size <<= 1;
 	if (_channels > 1)
 	m_period_size /= _channels;
-	if (snd_pcm_hw_params_set_period_size_near(pcm, hw, &m_period_size, 0) < 0) {
+	if (snd_pcm_hw_params_set_period_size_near(pcm, hw, &m_period_size, nullptr) < 0) {
 		_error = "Unable to set period size!";
 		return 1;
 	}
 	m_periods = _fragmentCount;
-	if (snd_pcm_hw_params_set_periods_near(pcm, hw, &m_periods, 0) < 0) {
+	if (snd_pcm_hw_params_set_periods_near(pcm, hw, &m_periods, nullptr) < 0) {
 		_error = "Unable to set periods!";
 		return 1;
 	}
diff --git a/flow/audioionull.cpp b/flow/audioionull.cpp
index 1570844..30ba63e 100644
--- a/flow/audioionull.cpp
+++ b/flow/audioionull.cpp
@@ -108,7 +108,7 @@ bool AudioIONull::open()
 
 	samplesRead = samplesWritten = 0.0;
 	bytesPerSec = _channels * 2 * _samplingRate;
-	gettimeofday(&start,0);
+	gettimeofday(&start,nullptr);
 
 	return true;
 }
@@ -155,7 +155,7 @@ int AudioIONull::getParam(AudioParam p)
 	{
 		case canRead:
 		case canWrite:
-				gettimeofday(&now,0);
+				gettimeofday(&now,nullptr);
 				delta = (double)now.tv_sec + (double)now.tv_usec/1000000.0;
 				delta -= (double)start.tv_sec + (double)start.tv_usec/1000000.0;
 				bytes = (int)( (delta * bytesPerSec)
diff --git a/flow/audioiooss.cpp b/flow/audioiooss.cpp
index 21ce41d..8234e25 100644
--- a/flow/audioiooss.cpp
+++ b/flow/audioiooss.cpp
@@ -103,7 +103,7 @@ string AudioIOOSS::findDefaultDevice()
 		"/dev/sound",					/* NetBSD */
 	#endif
 		"/dev/audio",					/* OpenBSD */
-		0
+		nullptr
 	};
 
 	for(int i = 0; device[i]; i++)
diff --git a/flow/audioioossthreaded.cpp b/flow/audioioossthreaded.cpp
index d3513d4..ea994a1 100644
--- a/flow/audioioossthreaded.cpp
+++ b/flow/audioioossthreaded.cpp
@@ -144,7 +144,7 @@ string AudioIOOSSThreaded::findDefaultDevice()
 		"/dev/dsp",						/* Linux (and lots of others) */
 		"/dev/sound/dsp0",				/* Linux with devfs-only installation */
 		"/dev/audio",					/* OpenBSD */
-		0
+		nullptr
 	};
 
 	for(int i = 0; device[i]; i++)
@@ -536,7 +536,7 @@ int AudioIOOSSThreaded::read(void *buffer, int size)
 {
 	int copied = 0;
 	int copySize;
-	ByteBuffer* tmpBuf = 0;
+	ByteBuffer* tmpBuf = nullptr;
 	while (size > 0) {
 		if (!tmpBuf)
 			tmpBuf = readerQueue.waitProduced();
@@ -545,7 +545,7 @@ int AudioIOOSSThreaded::read(void *buffer, int size)
 		memcpy(((char*)buffer)+copied, tmpBuf->get(), copySize);
 
 		if (tmpBuf->push(copySize) == 0) {
-			tmpBuf = 0;
+			tmpBuf = nullptr;
 			readerQueue.consumed();
 		}
 
@@ -582,7 +582,7 @@ void AudioIOOSSThreaded::WriterThread::run()
 	runThread = true;
 
 	ssize_t size;
-	ByteBuffer* tmpBuf = 0;
+	ByteBuffer* tmpBuf = nullptr;
 	while (runThread) {
 
 		if (!tmpBuf) {
diff --git a/flow/audiomanager_impl.cpp b/flow/audiomanager_impl.cpp
index 79e9ce6..cc1c729 100644
--- a/flow/audiomanager_impl.cpp
+++ b/flow/audiomanager_impl.cpp
@@ -73,7 +73,7 @@ public:
 	~AudioManager_impl()
 	{
 		assert(instance);
-		instance = 0;
+		instance = nullptr;
 	}
 	vector<string> *destinations() { return BusManager::the()->busList(); }
 	long changes() { return _changes; }
@@ -102,7 +102,7 @@ public:
 	}
 };
 
-AudioManager_impl *AudioManager_impl::instance = 0;
+AudioManager_impl *AudioManager_impl::instance = nullptr;
 
 class AudioManagerClient_impl :virtual public AudioManagerClient_skel
 {
@@ -271,7 +271,7 @@ AudioManagerClient_impl *AudioManager_impl::findClient(long ID)
 		if(client->ID() == ID)
 			return client;
 	}
-	return 0;
+	return nullptr;
 }
 
 void AudioManager_impl::setDestination(long ID, const string& newDestination)
diff --git a/flow/audiosubsys.cpp b/flow/audiosubsys.cpp
index 46b10e6..4d4a714 100644
--- a/flow/audiosubsys.cpp
+++ b/flow/audiosubsys.cpp
@@ -110,13 +110,13 @@ AudioSubSystem::AudioSubSystem()
 #ifdef DEBUG_WAVEFORM
 	d->plotfile.open( "/dev/shm/audiosubsystem.plot" );
 #endif
-	d->audioIO = 0;
+	d->audioIO = nullptr;
 	d->audioIOInit = false;
 
 	_running = false;
-	consumer = 0;
-	producer = 0;
-	fragment_buffer = 0;
+	consumer = nullptr;
+	producer = nullptr;
+	fragment_buffer = nullptr;
 }
 
 AudioSubSystem::~AudioSubSystem()
@@ -146,7 +146,7 @@ bool AudioSubSystem::attachConsumer(ASConsumer *consumer)
 void AudioSubSystem::detachProducer()
 {
 	assert(producer);
-	producer = 0;
+	producer = nullptr;
 
 	if(_running) close();
 }
@@ -154,7 +154,7 @@ void AudioSubSystem::detachProducer()
 void AudioSubSystem::detachConsumer()
 {
 	assert(consumer);
-	consumer = 0;
+	consumer = nullptr;
 
 	if(_running) close();
 }
@@ -378,7 +378,7 @@ bool AudioSubSystem::open()
 		_fragmentCount = d->audioIO->getParam(AudioIO::fragmentCount);
 
 		// allocate global buffer to do I/O
-		assert(fragment_buffer == 0);
+		assert(!fragment_buffer);
 		fragment_buffer = new char[_fragmentSize];
 
 		d->adjustDuplexCount = 0;
@@ -405,7 +405,7 @@ void AudioSubSystem::close()
 	if(fragment_buffer)
 	{
 		delete[] fragment_buffer;
-		fragment_buffer = 0;
+		fragment_buffer = nullptr;
 	}
 }
 
diff --git a/flow/bus.cpp b/flow/bus.cpp
index 27e39c5..a5503f8 100644
--- a/flow/bus.cpp
+++ b/flow/bus.cpp
@@ -33,7 +33,7 @@
 #else
 static
 #endif
-  Arts::BusManager *the_BusManager = 0;
+  Arts::BusManager *the_BusManager = nullptr;
 
 using namespace Arts;
 using namespace std;
@@ -50,7 +50,7 @@ namespace Arts {
 			if(::the_BusManager)
 			{
 				delete ::the_BusManager;
-				::the_BusManager = 0;
+				::the_BusManager = nullptr;
 			}
 		}
 	}	The_BusManagerShutdown;
diff --git a/flow/cache.cpp b/flow/cache.cpp
index 80f0349..d00d5c2 100644
--- a/flow/cache.cpp
+++ b/flow/cache.cpp
@@ -92,7 +92,7 @@ CachedObject *Cache::get(string key)
 			return(*i);
 		}
 	}
-	return 0;
+	return nullptr;
 }
 
 void Cache::add(CachedObject *object)
@@ -175,7 +175,7 @@ long Cache::cleanUp(long cacheLimit)
 	return(memory);
 }
 
-Cache *Cache::_instance = 0;
+Cache *Cache::_instance = nullptr;
 
 Cache::Cache()
 {
@@ -191,7 +191,7 @@ Cache::~Cache()
 	objects.clear();
 
 	assert(_instance);
-	_instance = 0;
+	_instance = nullptr;
 }
 
 
@@ -213,7 +213,7 @@ void Cache::shutdown()
 		if(rcnt == 0)
 		{
 			delete _instance;
-			_instance = 0;
+			_instance = nullptr;
 		}
 		else
 		{
diff --git a/flow/datahandle_impl.cpp b/flow/datahandle_impl.cpp
index 3d7d7b4..f98f60f 100644
--- a/flow/datahandle_impl.cpp
+++ b/flow/datahandle_impl.cpp
@@ -377,7 +377,7 @@ public:
 	{
 		if(!paused_ && wchunk_)
 		{
-			if (!gsl_wave_osc_process(wosc_, samples, 0, 0, 0, outvalue))
+			if (!gsl_wave_osc_process(wosc_, samples, nullptr, nullptr, nullptr, outvalue))
 				arts_debug("gsl_wave_osc_process failed.");
 			finished(wosc_->done);
 		}
diff --git a/flow/gsl/gslartsthreads.cpp b/flow/gsl/gslartsthreads.cpp
index 9bd89e5..6948849 100644
--- a/flow/gsl/gslartsthreads.cpp
+++ b/flow/gsl/gslartsthreads.cpp
@@ -120,7 +120,7 @@ public:
   GslArtsThread(gpointer (*func)(gpointer data), gpointer data)
     : func(func), data(data)
   {
-    gthread.data = 0;
+    gthread.data = nullptr;
   }
   void run()
   {
@@ -192,7 +192,7 @@ gsl_arts_thread_self ()
     return &current->gthread;
   else
     {
-      static GThread mainThread = { 0, };
+      static GThread mainThread = { nullptr, };
       return &mainThread;
     }
 }
diff --git a/flow/gslpp/datahandle.cpp b/flow/gslpp/datahandle.cpp
index ae294d9..9786017 100644
--- a/flow/gslpp/datahandle.cpp
+++ b/flow/gslpp/datahandle.cpp
@@ -56,7 +56,7 @@ bool DataHandle::operator ==(const DataHandle &other) const
 
 bool DataHandle::isNull() const
 {
-	return handle_ == 0;
+	return handle_ == nullptr;
 }
 
 DataHandle::~DataHandle()
@@ -67,7 +67,7 @@ DataHandle::~DataHandle()
 
 gint DataHandle::open()
 {
-	arts_return_val_if_fail(handle_ != 0, -1);
+	arts_return_val_if_fail(handle_, -1);
 
 	arts_debug("open()ing datahandle (open_count before: %d)..",
 			   handle_->open_count);
@@ -77,7 +77,7 @@ gint DataHandle::open()
 
 void DataHandle::close()
 {
-	arts_return_if_fail(handle_ != 0);
+	arts_return_if_fail(handle_);
 
 	arts_debug("close()ing datahandle (open_count before: %d)..",
 			   handle_->open_count);
@@ -95,7 +95,7 @@ bool DataHandle::isOpen() const
 
 GslLong DataHandle::read(GslLong valueOffset, GslLong valueCount, gfloat *values)
 {
-	arts_return_val_if_fail(handle_ != 0, 0);
+	arts_return_val_if_fail(handle_, 0);
 
 	return gsl_data_handle_read(handle_, valueOffset, valueCount, values);
 }
@@ -103,7 +103,7 @@ GslLong DataHandle::read(GslLong valueOffset, GslLong valueCount, gfloat *values
 DataHandle DataHandle::createCropped(GslLong headCutValueCount,
 									 GslLong tailCutValueCount)
 {
-	arts_return_val_if_fail(handle_ != 0, null());
+	arts_return_val_if_fail(handle_, null());
 
 	return DataHandle(gsl_data_handle_new_crop(handle_,
 											   headCutValueCount, tailCutValueCount));
@@ -112,7 +112,7 @@ DataHandle DataHandle::createCropped(GslLong headCutValueCount,
 DataHandle DataHandle::createCut(GslLong cutOffset,
 								 GslLong cutValueCount)
 {
-	arts_return_val_if_fail(handle_ != 0, null());
+	arts_return_val_if_fail(handle_, null());
 
 	return DataHandle(gsl_data_handle_new_cut(handle_, cutOffset,
 											  cutValueCount));
@@ -120,7 +120,7 @@ DataHandle DataHandle::createCut(GslLong cutOffset,
 
 DataHandle DataHandle::createReversed()
 {
-	arts_return_val_if_fail(handle_ != 0, null());
+	arts_return_val_if_fail(handle_, null());
 
 	return DataHandle(gsl_data_handle_new_reverse(handle_));
 }
@@ -137,7 +137,7 @@ GslDataCache *DataHandle::createGslDataCache()
 
 GslLong DataHandle::valueCount() const
 {
-	arts_return_val_if_fail(handle_ != 0, 0);
+	arts_return_val_if_fail(handle_, 0);
 	arts_return_val_if_fail(isOpen(), 0);
 
 	return handle_->setup.n_values;
@@ -145,7 +145,7 @@ GslLong DataHandle::valueCount() const
 
 guint DataHandle::channelCount() const
 {
-	arts_return_val_if_fail(handle_ != 0, 0);
+	arts_return_val_if_fail(handle_, 0);
 	arts_return_val_if_fail(isOpen(), 0);
 
 	return handle_->setup.n_channels;
@@ -153,7 +153,7 @@ guint DataHandle::channelCount() const
 
 guint DataHandle::bitDepth() const
 {
-	arts_return_val_if_fail(handle_ != 0, 0);
+	arts_return_val_if_fail(handle_, 0);
 	arts_return_val_if_fail(isOpen(), 0);
 
 	return handle_->setup.bit_depth;
@@ -232,7 +232,7 @@ void WaveDescription::copyFrom(const WaveDescription &other)
 WaveDescription::WaveDescription(GslWaveFileInfo *parent, guint index,
 								 const std::string &name)
 	: parentInfo_(parent), name_(name), parentIndex_(index),
-	  desc_(0), error_(GSL_ERROR_NONE)
+	  desc_(nullptr), error_(GSL_ERROR_NONE)
 {
 	gsl_wave_file_info_ref(parentInfo_);
 }
@@ -245,7 +245,7 @@ WaveDescription::~WaveDescription()
 }
 
 WaveDescription::WaveDescription(const WaveDescription &other)
-	: desc_(0), error_(GSL_ERROR_NONE)
+	: desc_(nullptr), error_(GSL_ERROR_NONE)
 {
 	copyFrom(other);
 }
@@ -301,7 +301,7 @@ void WaveFileInfo::copyFrom(const WaveFileInfo &other)
 }
 
 WaveFileInfo::WaveFileInfo(const std::string &filename)
-	: info_(0), error_(GSL_ERROR_NONE), filename_(filename)
+	: info_(nullptr), error_(GSL_ERROR_NONE), filename_(filename)
 {
 	info_ = gsl_wave_file_info_load(filename.c_str(), &error_);
 }
diff --git a/flow/gslpp/datahandle.h b/flow/gslpp/datahandle.h
index 26d8c33..7d50d13 100644
--- a/flow/gslpp/datahandle.h
+++ b/flow/gslpp/datahandle.h
@@ -46,7 +46,7 @@ namespace GSL
 	public:
 		static DataHandle null() { return DataHandle(); }
 
-		DataHandle(): handle_(0) {}
+		DataHandle(): handle_(nullptr) {}
 
 		DataHandle(const DataHandle &other);
 
diff --git a/flow/gslschedule.cpp b/flow/gslschedule.cpp
index b8bef86..c78f9fb 100644
--- a/flow/gslschedule.cpp
+++ b/flow/gslschedule.cpp
@@ -57,7 +57,7 @@ public:
 	/* mainloop integration: initialize (called to get initial loop setup) */
 	void initialize()
 	{
-		gsl_transact(gsl_job_add_poll (gslCheck, 0, 0, 0, 0), 0);
+		gsl_transact(gsl_job_add_poll (gslCheck, nullptr, nullptr, 0, nullptr), 0);
 		gsl_engine_prepare(&loop);
 
 		for(unsigned int i = 0; i != loop.n_fds; i++)
@@ -148,12 +148,12 @@ string Port::name()
 
 ASyncPort *Port::asyncPort()
 {
-	return 0;
+	return nullptr;
 }
 
 AudioPort *Port::audioPort()
 {
-	return 0;
+	return nullptr;
 }
 
 void Port::addAutoDisconnect(Port *source)
@@ -181,7 +181,7 @@ void Port::disconnectAll()
 {
 	if(_vport)
 		delete _vport;
-	_vport = 0;
+	_vport = nullptr;
 	assert(autoDisconnect.empty());
 	while(!autoDisconnect.empty())
 	{
@@ -209,8 +209,8 @@ AudioPort::AudioPort(const string& name,
 		: Port(name,ptr,flags,parent)
 {
 	destcount = 0;
-	sourcemodule = 0;
-	source = 0;
+	sourcemodule = nullptr;
+	source = nullptr;
 	gslIsConstant = false;
 }
 
@@ -260,11 +260,11 @@ void AudioPort::disconnect(Port *psource)
 	removeAutoDisconnect(psource);
 
 	assert(sourcemodule == source->parent);
-	sourcemodule = 0;
+	sourcemodule = nullptr;
 
 	source->parent->_connectionCountChanged = parent->_connectionCountChanged = true;
 	source->destcount--;
-	source = 0;
+	source = nullptr;
 
 	// GSL disconnect
 	GslTrans *trans = gsl_trans_open();
@@ -279,7 +279,7 @@ MultiPort::MultiPort(const string& name,
 		             void *ptr, long flags,StdScheduleNode *parent)
 	: Port(name,ptr,flags,parent)
 {
-	conns = 0;
+	conns = nullptr;
 	nextID = 0;
 	initConns();
 }
@@ -289,13 +289,13 @@ MultiPort::~MultiPort()
 	if(conns)
 	{
 		delete[] conns;
-		conns = 0;
+		conns = nullptr;
 	}
 }
 
 void MultiPort::initConns()
 {
-	if(conns != 0) delete[] conns;
+	if(conns) delete[] conns;
 	conns = new float_ptr[parts.size() + 1];
 	conns[parts.size()] = (float *)0;
 
@@ -318,7 +318,7 @@ void MultiPort::connect(Port *port)
 
 	addAutoDisconnect(port);
 
-	dport = new AudioPort("_"+_name+string(sid),0,streamIn,parent);
+	dport = new AudioPort("_"+_name+string(sid),nullptr,streamIn,parent);
 
 	Part part;
 	part.src = (AudioPort *)port;
@@ -361,12 +361,12 @@ void StdScheduleNode::freeConn()
 	if(inConn)
 	{
 		delete[] inConn;
-		inConn = 0;
+		inConn = nullptr;
 	}
 	if(outConn)
 	{
 		delete[] outConn;
-		outConn = 0;
+		outConn = nullptr;
 	}
 	inConnCount = outConnCount = 0;
 
@@ -374,7 +374,7 @@ void StdScheduleNode::freeConn()
 	{
 		gsl_transact(gsl_job_discard(gslModule),0);
 
-		gslModule = 0;
+		gslModule = nullptr;
 		gslRunning = false;
 	}
 }
@@ -385,7 +385,7 @@ void StdScheduleNode::gslProcess(GslModule *module, guint n_values)
 	if(!node->running)		/* FIXME: need reasonable suspend in the engine */
 		return;
 
-	arts_return_if_fail(node->module != 0);
+	arts_return_if_fail(node->module);
 
 	GslMainLoop::gslDataCalculated = true;
 
@@ -500,7 +500,7 @@ Object_skel *StdScheduleNode::object()
 void *StdScheduleNode::cast(const string &target)
 {
 	if(target == "StdScheduleNode") return (StdScheduleNode *)this;
-	return 0;
+	return nullptr;
 }
 
 
@@ -521,11 +521,11 @@ StdScheduleNode::StdScheduleNode(Object_skel *object, StdFlowSystem *flowSystem)
 	this->flowSystem = flowSystem;
 	running = false;
 	suspended = false;
-	module = 0;
-	gslModule = 0;
+	module = nullptr;
+	gslModule = nullptr;
 	gslRunning = false;
-	queryInitStreamFunc = 0;
-	inConn = outConn = 0;
+	queryInitStreamFunc = nullptr;
+	inConn = outConn = nullptr;
 	inConnCount = outConnCount = 0;
 }
 
@@ -682,7 +682,7 @@ Port *StdScheduleNode::findPort(const string& name)
 			}
 		}
 	}
-	return 0;
+	return nullptr;
 }
 
 void StdScheduleNode::virtualize(const std::string& port,
@@ -843,12 +843,12 @@ StdFlowSystem::StdFlowSystem()
 		GslConfigValue values[3] = {
 			{ "wave_chunk_padding", 8 },
 			{ "dcache_block_size",  4000, },
-			{ 0, 0 }
+			{ nullptr, 0 }
 		};
 		gsl_is_initialized = true;
 
 		if (!g_thread_supported ())
-			g_thread_init(0);
+			g_thread_init(nullptr);
 		gsl_init(values, (GslMutexTable *)gslGlobalMutexTable);
 
 		/*
@@ -1150,7 +1150,7 @@ void StdFlowSystem::updateStarted()
 	needUpdateStarted = false;
 
 	std::list<StdScheduleNode*>::iterator ni;
-	GslTrans *trans = 0;
+	GslTrans *trans = nullptr;
 
 	for(ni = nodes.begin(); ni != nodes.end(); ni++)
 	{
diff --git a/flow/pipebuffer.cpp b/flow/pipebuffer.cpp
index 5fb81fb..0d0f49a 100644
--- a/flow/pipebuffer.cpp
+++ b/flow/pipebuffer.cpp
@@ -88,7 +88,7 @@ void *PipeBuffer::peek(long size)
 		if(size <= first->remaining())
 			return first->data();
 	}
-	return 0;
+	return nullptr;
 }
 
 void PipeBuffer::skip(long size)
diff --git a/flow/stereoeffectstack_impl.cpp b/flow/stereoeffectstack_impl.cpp
index 8c60078..f6526cb 100644
--- a/flow/stereoeffectstack_impl.cpp
+++ b/flow/stereoeffectstack_impl.cpp
@@ -68,7 +68,7 @@ class StereoEffectStack_impl : public StereoEffectStack_skel,
 		else
 		{
 			list<EffectEntry *>::iterator ei;
-			EffectEntry *laste = 0;
+			EffectEntry *laste = nullptr;
 
 			long count = 0;
 			for(ei = fx.begin(); ei != fx.end(); ei++, count++)
@@ -101,7 +101,7 @@ public:
 	~StereoEffectStack_impl()
 	{
 		// disconnect remaining effects
-		EffectEntry *laste = 0;
+		EffectEntry *laste = nullptr;
 		list<EffectEntry *>::iterator ei;
 
 		for(ei = fx.begin(); ei != fx.end(); ei++)
diff --git a/flow/stereofftscope_impl.cpp b/flow/stereofftscope_impl.cpp
index 1b280a5..55a0f15 100644
--- a/flow/stereofftscope_impl.cpp
+++ b/flow/stereofftscope_impl.cpp
@@ -48,7 +48,7 @@ public:
 	void do_fft()
 	{
 		float out_real[SAMPLES],out_img[SAMPLES];
-		arts_fft_float(SAMPLES,0,inbuffer,0,out_real,out_img);
+		arts_fft_float(SAMPLES,0,inbuffer,nullptr,out_real,out_img);
 
 		_scope.clear();
     	unsigned int i = 3;
diff --git a/flow/synth_multi_add_impl.cpp b/flow/synth_multi_add_impl.cpp
index 4529b4d..ae5ea5b 100644
--- a/flow/synth_multi_add_impl.cpp
+++ b/flow/synth_multi_add_impl.cpp
@@ -55,7 +55,7 @@ void Synth_MULTI_ADD_impl::calculateBlock(unsigned long cycles)
 			*outp = *inp;
 
 		// add the others
-		for(int sig=1;(inp = invalue[sig]) != 0;sig++)
+		for(int sig=1;(inp = invalue[sig]);sig++)
 		{
 			for(outp = outvalue; outp != outend;outp++,inp++)
 				*outp += *inp;
diff --git a/flow/synth_play_impl.cpp b/flow/synth_play_impl.cpp
index cfb4c98..f45e6ae 100644
--- a/flow/synth_play_impl.cpp
+++ b/flow/synth_play_impl.cpp
@@ -83,7 +83,7 @@ public:
 		as = AudioSubSystem::the();
 
 		maxsamples = 0;
-		outblock = 0;
+		outblock = nullptr;
 		retryOpen = false;
 		audioOpen = false;
 		inProgress = false;
@@ -167,7 +167,7 @@ public:
 		if(outblock)
 		{
 			delete[] outblock;
-			outblock = 0;
+			outblock = nullptr;
 		}
 	}
 
diff --git a/flow/synth_play_wav_impl.cpp b/flow/synth_play_wav_impl.cpp
index f8707aa..da885f9 100644
--- a/flow/synth_play_wav_impl.cpp
+++ b/flow/synth_play_wav_impl.cpp
@@ -68,7 +68,7 @@ CachedWav *CachedWav::load(Cache *cache, string filename)
 		if(!wav->initOk)		// loading failed
 		{
 			wav->decRef();
-			return 0;
+			return nullptr;
 		}
 	}
 
@@ -92,7 +92,7 @@ int CachedWav::memoryUsage()
 }
 
 CachedWav::CachedWav(Cache *cache, string filename) : CachedObject(cache),
-								 filename(filename),initOk(false), buffer(0)
+								 filename(filename),initOk(false), buffer(nullptr)
 {
 	int sampleFormat;
 	AFframecount	frameCount;
@@ -222,7 +222,7 @@ protected:
 		if(cachedwav)
 		{
 			cachedwav->decRef();
-			cachedwav = 0;
+			cachedwav = nullptr;
 		}
 	}
 
@@ -266,7 +266,7 @@ REGISTER_IMPLEMENTATION(Synth_PLAY_WAV_impl);
 
 Synth_PLAY_WAV_impl::Synth_PLAY_WAV_impl()
 {
-	cachedwav = 0;
+	cachedwav = nullptr;
 	_speed = 1.0;
 	_filename = "";
 	_finished = false;
diff --git a/flow/synth_record_impl.cpp b/flow/synth_record_impl.cpp
index 34144bb..01495ca 100644
--- a/flow/synth_record_impl.cpp
+++ b/flow/synth_record_impl.cpp
@@ -80,7 +80,7 @@ public:
 		format = as->format();
 		bits = as->bits();
 		maxsamples = 0;
-		inblock = 0;
+		inblock = nullptr;
 
 		haveSubSys = as->attachConsumer(this);
 		if(!haveSubSys)
@@ -97,7 +97,7 @@ public:
 		if(inblock)
 		{
 			delete[] inblock;
-			inblock = 0;
+			inblock = nullptr;
 		}
 	}
 
diff --git a/flow/virtualports.cpp b/flow/virtualports.cpp
index b733256..aca2d48 100644
--- a/flow/virtualports.cpp
+++ b/flow/virtualports.cpp
@@ -245,7 +245,7 @@ VPort::~VPort()
 bool VPort::makeVirtualizeParams(VPort *forward, VPort*& source, VPort*& dest,
 	VPortConnection::Style& style)
 {
-	source = dest = 0;
+	source = dest = nullptr;
 	// masquerading
 	if((port->flags() & streamIn) && (forward->port->flags() & streamIn))
 	{
@@ -276,7 +276,7 @@ bool VPort::makeVirtualizeParams(VPort *forward, VPort*& source, VPort*& dest,
 		dest = this;
 		style = VPortConnection::vcForward;
 	}
-	return source != 0;
+	return source != nullptr;
 }
 
 /**
@@ -409,7 +409,7 @@ void VPort::expandHelper(VPortConnection *conn, int state, VPort *current,
 		{
 			/* xconn=0 ensures that only paths are counted which contain conn */
 			VPortConnection *xconn = conn;
-			if(*ci == conn) xconn = 0;
+			if(*ci == conn) xconn = nullptr;
 
 			if((*ci)->style == VPortConnection::vcMasquerade)
 			{
@@ -429,7 +429,7 @@ void VPort::expandHelper(VPortConnection *conn, int state, VPort *current,
 		{
 			/* xconn=0 ensures that only paths are counted which contain conn */
 			VPortConnection *xconn = conn;
-			if(*ci == conn) xconn = 0;	
+			if(*ci == conn) xconn = nullptr;	
 
 			if((*ci)->style == VPortConnection::vcMasquerade)
 			{
@@ -442,7 +442,7 @@ void VPort::expandHelper(VPortConnection *conn, int state, VPort *current,
 			}
 		}
 
-		if(current->outgoing.empty() && conn == 0)
+		if(current->outgoing.empty() && !conn)
 		{
 			if(remove)
 			{
@@ -472,12 +472,12 @@ void VPort::expandHelper(VPortConnection *conn, int state, VPort *current,
 
 void VPort::makeTransport(VPortConnection *conn)
 {
-	expandHelper(conn,1,this,0,0,false);
+	expandHelper(conn,1,this,nullptr,nullptr,false);
 }
 
 void VPort::removeTransport(VPortConnection *conn)
 {
-	expandHelper(conn,1,this,0,0,true);
+	expandHelper(conn,1,this,nullptr,nullptr,true);
 }
 
 const char *VPort::name()
diff --git a/gmcop/giomanager.cpp b/gmcop/giomanager.cpp
index 6769e7c..dfc7068 100644
--- a/gmcop/giomanager.cpp
+++ b/gmcop/giomanager.cpp
@@ -140,7 +140,7 @@ public:
 		: milliseconds(milliseconds), _notify(notify),
 		  active(false),destroyed(false)
 	{
-		gettimeofday(&nextNotify,0);
+		gettimeofday(&nextNotify,nullptr);
 
 		nextNotify.tv_usec += (milliseconds%1000)*1000;
 		nextNotify.tv_sec += (milliseconds/1000)+(nextNotify.tv_usec/1000000);
@@ -218,7 +218,7 @@ GIOManager::GIOManager(GMainContext *context)
 		GIOManager_prepare,
 		GIOManager_check,
 		GIOManager_dispatch,
-		0
+		nullptr
 	};
 
 	source = (GIOManagerSource *)g_source_new(&funcs, sizeof(GIOManagerSource));
@@ -352,7 +352,7 @@ gboolean GIOManager::prepare(gint *timeout)
 	if(level == 1 && timeList.size())
 	{
 		struct timeval currenttime;
-		gettimeofday(&currenttime,0);
+		gettimeofday(&currenttime,nullptr);
 
 		list<GIOTimeWatch *>::iterator ti;
 
@@ -399,7 +399,7 @@ gboolean GIOManager::check()
 	if(level == 1 && timeList.size())
 	{
 		struct timeval currenttime;
-		gettimeofday(&currenttime,0);
+		gettimeofday(&currenttime,nullptr);
 
 		list<GIOTimeWatch *>::iterator ti;
 
@@ -486,7 +486,7 @@ gboolean GIOManager::dispatch(GSourceFunc /* func */, gpointer /* user_data */)
 	if(!done && level == 1 && timeList.size())
 	{
 		struct timeval currenttime;
-		gettimeofday(&currenttime,0);
+		gettimeofday(&currenttime,nullptr);
 
 		list<GIOTimeWatch *>::iterator ti;
 
diff --git a/gmcop/giomanager.h b/gmcop/giomanager.h
index 53ac084..0cb6ec5 100644
--- a/gmcop/giomanager.h
+++ b/gmcop/giomanager.h
@@ -72,7 +72,7 @@ protected:
 	GIOManagerBlocking *gioManagerBlocking;
 
 public:
-	GIOManager(GMainContext *context = 0);
+	GIOManager(GMainContext *context = nullptr);
 	~GIOManager();
 
 	void processOneEvent(bool blocking);
diff --git a/mcop/anyref.cpp b/mcop/anyref.cpp
index c5cf2cf..db15f06 100644
--- a/mcop/anyref.cpp
+++ b/mcop/anyref.cpp
@@ -42,16 +42,16 @@ namespace Arts {
 			interfaceRepo = DynamicCast(Dispatcher::the()->interfaceRepo());
 		}
 		void skipType(Buffer& buffer, const string& type);
-	} *anyRefHelper = 0;
+	} *anyRefHelper = nullptr;
 
 	static class AnyRefHelperStartup : public StartupClass {
 		void startup()	{
-			assert(anyRefHelper == 0);
+			assert(!anyRefHelper);
 			anyRefHelper = new AnyRefHelper();
 		}
 		void shutdown()	{
 			delete anyRefHelper;
-			anyRefHelper = 0;
+			anyRefHelper = nullptr;
 		}
 	}	The_AnyRefHelperStartup;
 }
diff --git a/mcop/anyref.h b/mcop/anyref.h
index 60e1836..74469ec 100644
--- a/mcop/anyref.h
+++ b/mcop/anyref.h
@@ -87,7 +87,7 @@ public:
 
 class ARTS_EXPORT AnyConstRef : public AnyRefBase {
 public:
-	AnyConstRef()					  	: AnyRefBase(0,repVoid) { };
+	AnyConstRef()					  	: AnyRefBase(nullptr,repVoid) { };
 	AnyConstRef(const mcopbyte& value)	: AnyRefBase(&value,repByte) { };
 	AnyConstRef(const int& 	value)		: AnyRefBase(&value,repInt) { };
 	AnyConstRef(const long& 	value)	: AnyRefBase(&value,repLong) { };
@@ -116,7 +116,7 @@ public:
 
 class ARTS_EXPORT AnyRef : public AnyRefBase {
 public:
-	AnyRef()					  		: AnyRefBase(0,repVoid) { };
+	AnyRef()					  		: AnyRefBase(nullptr,repVoid) { };
 
 	// primitive types
 	AnyRef(mcopbyte& value)				: AnyRefBase(&value,repByte) { };
diff --git a/mcop/buffer.cpp b/mcop/buffer.cpp
index d86dc5b..43faa05 100644
--- a/mcop/buffer.cpp
+++ b/mcop/buffer.cpp
@@ -27,7 +27,7 @@
 using namespace std;
 using namespace Arts;
 
-Buffer::Buffer() : rpos(0), _readError(false),d(0)
+Buffer::Buffer() : rpos(0), _readError(false),d(nullptr)
 {
 	contents.reserve(128);
 }
@@ -136,7 +136,7 @@ void Buffer::read(vector<mcopbyte>& raw, long l)
 }
 
 void *Buffer::read(long l) {
-	void *result = 0;
+	void *result = nullptr;
 
 	if(l >= 0 && remaining() >= l) {
 		result = &contents[rpos];
diff --git a/mcop/common.h b/mcop/common.h
index 2dbde70..1699674 100644
--- a/mcop/common.h
+++ b/mcop/common.h
@@ -101,7 +101,7 @@ void readObject(Buffer& stream, T*& result) {
 	ObjectReference reference(stream);
 
 	if(reference.serverID == "null")
-		result = 0;		// null reference?
+		result = nullptr;		// null reference?
 	else
 		result = T::_fromReference(reference,false);
 }
diff --git a/mcop/connection.cpp b/mcop/connection.cpp
index 397ca86..88774ef 100644
--- a/mcop/connection.cpp
+++ b/mcop/connection.cpp
@@ -35,7 +35,7 @@ namespace Arts {
 class ConnectionPrivate {
 public:
 	struct Data {
-        Data() : data(0), len(0) { }
+        Data() : data(nullptr), len(0) { }
 		Data(unsigned char *data, long len) : data(data), len(len) { }
 		Data(const Data& d) : data(d.data), len(d.len) { }
 		unsigned char *data;
@@ -76,7 +76,7 @@ void Connection::_release()
 
 void Connection::initReceive()
 {
-	rcbuf = 0;
+	rcbuf = nullptr;
 	receiveHeader = true;
 	remaining = 12;
 }
diff --git a/mcop/core.cpp b/mcop/core.cpp
index b0d48eb..b7926f7 100644
--- a/mcop/core.cpp
+++ b/mcop/core.cpp
@@ -930,12 +930,12 @@ Arts::InterfaceRepo_base *Arts::InterfaceRepo_base::_fromString(std::string obje
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::InterfaceRepo_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::InterfaceRepo_base *Arts::InterfaceRepo_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::InterfaceRepo_base *castedObject = (Arts::InterfaceRepo_base *)object._base()->_cast(Arts::InterfaceRepo_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -962,7 +962,7 @@ Arts::InterfaceRepo_base *Arts::InterfaceRepo_base::_fromReference(Arts::ObjectR
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::InterfaceRepo")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -982,7 +982,7 @@ void *Arts::InterfaceRepo_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::InterfaceRepo_base::_IID) return (Arts::InterfaceRepo_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::InterfaceRepo_stub::InterfaceRepo_stub()
@@ -1298,12 +1298,12 @@ Arts::InterfaceRepoV2_base *Arts::InterfaceRepoV2_base::_fromString(std::string
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::InterfaceRepoV2_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::InterfaceRepoV2_base *Arts::InterfaceRepoV2_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::InterfaceRepoV2_base *castedObject = (Arts::InterfaceRepoV2_base *)object._base()->_cast(Arts::InterfaceRepoV2_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -1330,7 +1330,7 @@ Arts::InterfaceRepoV2_base *Arts::InterfaceRepoV2_base::_fromReference(Arts::Obj
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::InterfaceRepoV2")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -1351,7 +1351,7 @@ void *Arts::InterfaceRepoV2_base::_cast(unsigned long iid)
 	if(iid == Arts::InterfaceRepoV2_base::_IID) return (Arts::InterfaceRepoV2_base *)this;
 	if(iid == Arts::InterfaceRepo_base::_IID) return (Arts::InterfaceRepo_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::InterfaceRepoV2_stub::InterfaceRepoV2_stub()
@@ -1446,12 +1446,12 @@ Arts::FlowSystemSender_base *Arts::FlowSystemSender_base::_fromString(std::strin
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::FlowSystemSender_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::FlowSystemSender_base *Arts::FlowSystemSender_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::FlowSystemSender_base *castedObject = (Arts::FlowSystemSender_base *)object._base()->_cast(Arts::FlowSystemSender_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -1478,7 +1478,7 @@ Arts::FlowSystemSender_base *Arts::FlowSystemSender_base::_fromReference(Arts::O
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::FlowSystemSender")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -1498,7 +1498,7 @@ void *Arts::FlowSystemSender_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::FlowSystemSender_base::_IID) return (Arts::FlowSystemSender_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::FlowSystemSender_stub::FlowSystemSender_stub()
@@ -1601,12 +1601,12 @@ Arts::FlowSystemReceiver_base *Arts::FlowSystemReceiver_base::_fromString(std::s
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::FlowSystemReceiver_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::FlowSystemReceiver_base *Arts::FlowSystemReceiver_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::FlowSystemReceiver_base *castedObject = (Arts::FlowSystemReceiver_base *)object._base()->_cast(Arts::FlowSystemReceiver_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -1633,7 +1633,7 @@ Arts::FlowSystemReceiver_base *Arts::FlowSystemReceiver_base::_fromReference(Art
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::FlowSystemReceiver")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -1653,7 +1653,7 @@ void *Arts::FlowSystemReceiver_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::FlowSystemReceiver_base::_IID) return (Arts::FlowSystemReceiver_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::FlowSystemReceiver_stub::FlowSystemReceiver_stub()
@@ -1763,12 +1763,12 @@ Arts::FlowSystem_base *Arts::FlowSystem_base::_fromString(std::string objectref)
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::FlowSystem_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::FlowSystem_base *Arts::FlowSystem_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::FlowSystem_base *castedObject = (Arts::FlowSystem_base *)object._base()->_cast(Arts::FlowSystem_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -1795,7 +1795,7 @@ Arts::FlowSystem_base *Arts::FlowSystem_base::_fromReference(Arts::ObjectReferen
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::FlowSystem")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -1815,7 +1815,7 @@ void *Arts::FlowSystem_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::FlowSystem_base::_IID) return (Arts::FlowSystem_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::FlowSystem_stub::FlowSystem_stub()
@@ -2115,12 +2115,12 @@ Arts::GlobalComm_base *Arts::GlobalComm_base::_fromString(std::string objectref)
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::GlobalComm_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::GlobalComm_base *Arts::GlobalComm_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::GlobalComm_base *castedObject = (Arts::GlobalComm_base *)object._base()->_cast(Arts::GlobalComm_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -2147,7 +2147,7 @@ Arts::GlobalComm_base *Arts::GlobalComm_base::_fromReference(Arts::ObjectReferen
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::GlobalComm")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -2167,7 +2167,7 @@ void *Arts::GlobalComm_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::GlobalComm_base::_IID) return (Arts::GlobalComm_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::GlobalComm_stub::GlobalComm_stub()
@@ -2317,12 +2317,12 @@ Arts::TmpGlobalComm_base *Arts::TmpGlobalComm_base::_fromString(std::string obje
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::TmpGlobalComm_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::TmpGlobalComm_base *Arts::TmpGlobalComm_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::TmpGlobalComm_base *castedObject = (Arts::TmpGlobalComm_base *)object._base()->_cast(Arts::TmpGlobalComm_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -2349,7 +2349,7 @@ Arts::TmpGlobalComm_base *Arts::TmpGlobalComm_base::_fromReference(Arts::ObjectR
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::TmpGlobalComm")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -2370,7 +2370,7 @@ void *Arts::TmpGlobalComm_base::_cast(unsigned long iid)
 	if(iid == Arts::TmpGlobalComm_base::_IID) return (Arts::TmpGlobalComm_base *)this;
 	if(iid == Arts::GlobalComm_base::_IID) return (Arts::GlobalComm_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::TmpGlobalComm_stub::TmpGlobalComm_stub()
@@ -2437,12 +2437,12 @@ Arts::TraderOffer_base *Arts::TraderOffer_base::_fromString(std::string objectre
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::TraderOffer_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::TraderOffer_base *Arts::TraderOffer_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::TraderOffer_base *castedObject = (Arts::TraderOffer_base *)object._base()->_cast(Arts::TraderOffer_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -2469,7 +2469,7 @@ Arts::TraderOffer_base *Arts::TraderOffer_base::_fromReference(Arts::ObjectRefer
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::TraderOffer")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -2489,7 +2489,7 @@ void *Arts::TraderOffer_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::TraderOffer_base::_IID) return (Arts::TraderOffer_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::TraderOffer_stub::TraderOffer_stub()
@@ -2610,12 +2610,12 @@ Arts::TraderQuery_base *Arts::TraderQuery_base::_fromString(std::string objectre
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::TraderQuery_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::TraderQuery_base *Arts::TraderQuery_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::TraderQuery_base *castedObject = (Arts::TraderQuery_base *)object._base()->_cast(Arts::TraderQuery_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -2642,7 +2642,7 @@ Arts::TraderQuery_base *Arts::TraderQuery_base::_fromReference(Arts::ObjectRefer
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::TraderQuery")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -2662,7 +2662,7 @@ void *Arts::TraderQuery_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::TraderQuery_base::_IID) return (Arts::TraderQuery_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::TraderQuery_stub::TraderQuery_stub()
@@ -2783,12 +2783,12 @@ Arts::Loader_base *Arts::Loader_base::_fromString(std::string objectref)
 
 	if(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))
 		return Arts::Loader_base::_fromReference(r,true);
-	return 0;
+	return nullptr;
 }
 
 Arts::Loader_base *Arts::Loader_base::_fromDynamicCast(const Arts::Object& object)
 {
-	if(object.isNull()) return 0;
+	if(object.isNull()) return nullptr;
 
 	Arts::Loader_base *castedObject = (Arts::Loader_base *)object._base()->_cast(Arts::Loader_base::_IID);
 	if(castedObject) return castedObject->_copy();
@@ -2815,7 +2815,7 @@ Arts::Loader_base *Arts::Loader_base::_fromReference(Arts::ObjectReference r, bo
 			result->_useRemote();
 			if (!result->_isCompatibleWith("Arts::Loader")) {
 				result->_release();
-				return 0;
+				return nullptr;
 			}
 		}
 	}
@@ -2835,7 +2835,7 @@ void *Arts::Loader_base::_cast(unsigned long iid)
 {
 	if(iid == Arts::Loader_base::_IID) return (Arts::Loader_base *)this;
 	if(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;
-	return 0;
+	return nullptr;
 }
 
 Arts::Loader_stub::Loader_stub()
diff --git a/mcop/core.h b/mcop/core.h
index 5ab73e1..6cb802d 100644
--- a/mcop/core.h
+++ b/mcop/core.h
@@ -414,20 +414,20 @@ private:
 	}
 
 protected:
-	inline InterfaceRepo(InterfaceRepo_base* b) : Arts::Object(b), _cache(0) {}
+	inline InterfaceRepo(InterfaceRepo_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef InterfaceRepo_base _base_class;
 
-	inline InterfaceRepo() : Arts::Object(_Creator), _cache(0) {}
+	inline InterfaceRepo() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline InterfaceRepo(const Arts::SubClass& s) :
-		Arts::Object(InterfaceRepo_base::_create(s.string())), _cache(0) {}
+		Arts::Object(InterfaceRepo_base::_create(s.string())), _cache(nullptr) {}
 	inline InterfaceRepo(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(InterfaceRepo_base::_fromString(r.string())):(InterfaceRepo_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline InterfaceRepo(const Arts::DynamicCast& c) : Arts::Object(InterfaceRepo_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(InterfaceRepo_base::_fromString(r.string())):(InterfaceRepo_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline InterfaceRepo(const Arts::DynamicCast& c) : Arts::Object(InterfaceRepo_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline InterfaceRepo(const InterfaceRepo& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline InterfaceRepo(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline InterfaceRepo(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static InterfaceRepo null() {return InterfaceRepo((InterfaceRepo_base*)0);}
 	inline static InterfaceRepo _from_base(InterfaceRepo_base* b) {return InterfaceRepo(b);}
 	inline InterfaceRepo& operator=(const InterfaceRepo& target) {
@@ -512,20 +512,20 @@ private:
 	}
 
 protected:
-	inline InterfaceRepoV2(InterfaceRepoV2_base* b) : Arts::Object(b), _cache(0) {}
+	inline InterfaceRepoV2(InterfaceRepoV2_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef InterfaceRepoV2_base _base_class;
 
-	inline InterfaceRepoV2() : Arts::Object(_Creator), _cache(0) {}
+	inline InterfaceRepoV2() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline InterfaceRepoV2(const Arts::SubClass& s) :
-		Arts::Object(InterfaceRepoV2_base::_create(s.string())), _cache(0) {}
+		Arts::Object(InterfaceRepoV2_base::_create(s.string())), _cache(nullptr) {}
 	inline InterfaceRepoV2(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(InterfaceRepoV2_base::_fromString(r.string())):(InterfaceRepoV2_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline InterfaceRepoV2(const Arts::DynamicCast& c) : Arts::Object(InterfaceRepoV2_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(InterfaceRepoV2_base::_fromString(r.string())):(InterfaceRepoV2_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline InterfaceRepoV2(const Arts::DynamicCast& c) : Arts::Object(InterfaceRepoV2_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline InterfaceRepoV2(const InterfaceRepoV2& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline InterfaceRepoV2(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline InterfaceRepoV2(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static InterfaceRepoV2 null() {return InterfaceRepoV2((InterfaceRepoV2_base*)0);}
 	inline static InterfaceRepoV2 _from_base(InterfaceRepoV2_base* b) {return InterfaceRepoV2(b);}
 	inline InterfaceRepoV2& operator=(const InterfaceRepoV2& target) {
@@ -614,20 +614,20 @@ private:
 	}
 
 protected:
-	inline FlowSystemSender(FlowSystemSender_base* b) : Arts::Object(b), _cache(0) {}
+	inline FlowSystemSender(FlowSystemSender_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef FlowSystemSender_base _base_class;
 
-	inline FlowSystemSender() : Arts::Object(_Creator), _cache(0) {}
+	inline FlowSystemSender() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline FlowSystemSender(const Arts::SubClass& s) :
-		Arts::Object(FlowSystemSender_base::_create(s.string())), _cache(0) {}
+		Arts::Object(FlowSystemSender_base::_create(s.string())), _cache(nullptr) {}
 	inline FlowSystemSender(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(FlowSystemSender_base::_fromString(r.string())):(FlowSystemSender_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline FlowSystemSender(const Arts::DynamicCast& c) : Arts::Object(FlowSystemSender_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(FlowSystemSender_base::_fromString(r.string())):(FlowSystemSender_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline FlowSystemSender(const Arts::DynamicCast& c) : Arts::Object(FlowSystemSender_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline FlowSystemSender(const FlowSystemSender& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline FlowSystemSender(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline FlowSystemSender(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static FlowSystemSender null() {return FlowSystemSender((FlowSystemSender_base*)0);}
 	inline static FlowSystemSender _from_base(FlowSystemSender_base* b) {return FlowSystemSender(b);}
 	inline FlowSystemSender& operator=(const FlowSystemSender& target) {
@@ -713,20 +713,20 @@ private:
 	}
 
 protected:
-	inline FlowSystemReceiver(FlowSystemReceiver_base* b) : Arts::Object(b), _cache(0) {}
+	inline FlowSystemReceiver(FlowSystemReceiver_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef FlowSystemReceiver_base _base_class;
 
-	inline FlowSystemReceiver() : Arts::Object(_Creator), _cache(0) {}
+	inline FlowSystemReceiver() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline FlowSystemReceiver(const Arts::SubClass& s) :
-		Arts::Object(FlowSystemReceiver_base::_create(s.string())), _cache(0) {}
+		Arts::Object(FlowSystemReceiver_base::_create(s.string())), _cache(nullptr) {}
 	inline FlowSystemReceiver(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(FlowSystemReceiver_base::_fromString(r.string())):(FlowSystemReceiver_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline FlowSystemReceiver(const Arts::DynamicCast& c) : Arts::Object(FlowSystemReceiver_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(FlowSystemReceiver_base::_fromString(r.string())):(FlowSystemReceiver_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline FlowSystemReceiver(const Arts::DynamicCast& c) : Arts::Object(FlowSystemReceiver_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline FlowSystemReceiver(const FlowSystemReceiver& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline FlowSystemReceiver(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline FlowSystemReceiver(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static FlowSystemReceiver null() {return FlowSystemReceiver((FlowSystemReceiver_base*)0);}
 	inline static FlowSystemReceiver _from_base(FlowSystemReceiver_base* b) {return FlowSystemReceiver(b);}
 	inline FlowSystemReceiver& operator=(const FlowSystemReceiver& target) {
@@ -816,20 +816,20 @@ private:
 	}
 
 protected:
-	inline FlowSystem(FlowSystem_base* b) : Arts::Object(b), _cache(0) {}
+	inline FlowSystem(FlowSystem_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef FlowSystem_base _base_class;
 
-	inline FlowSystem() : Arts::Object(_Creator), _cache(0) {}
+	inline FlowSystem() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline FlowSystem(const Arts::SubClass& s) :
-		Arts::Object(FlowSystem_base::_create(s.string())), _cache(0) {}
+		Arts::Object(FlowSystem_base::_create(s.string())), _cache(nullptr) {}
 	inline FlowSystem(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(FlowSystem_base::_fromString(r.string())):(FlowSystem_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline FlowSystem(const Arts::DynamicCast& c) : Arts::Object(FlowSystem_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(FlowSystem_base::_fromString(r.string())):(FlowSystem_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline FlowSystem(const Arts::DynamicCast& c) : Arts::Object(FlowSystem_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline FlowSystem(const FlowSystem& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline FlowSystem(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline FlowSystem(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static FlowSystem null() {return FlowSystem((FlowSystem_base*)0);}
 	inline static FlowSystem _from_base(FlowSystem_base* b) {return FlowSystem(b);}
 	inline FlowSystem& operator=(const FlowSystem& target) {
@@ -916,20 +916,20 @@ private:
 	}
 
 protected:
-	inline GlobalComm(GlobalComm_base* b) : Arts::Object(b), _cache(0) {}
+	inline GlobalComm(GlobalComm_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef GlobalComm_base _base_class;
 
-	inline GlobalComm() : Arts::Object(_Creator), _cache(0) {}
+	inline GlobalComm() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline GlobalComm(const Arts::SubClass& s) :
-		Arts::Object(GlobalComm_base::_create(s.string())), _cache(0) {}
+		Arts::Object(GlobalComm_base::_create(s.string())), _cache(nullptr) {}
 	inline GlobalComm(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(GlobalComm_base::_fromString(r.string())):(GlobalComm_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline GlobalComm(const Arts::DynamicCast& c) : Arts::Object(GlobalComm_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(GlobalComm_base::_fromString(r.string())):(GlobalComm_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline GlobalComm(const Arts::DynamicCast& c) : Arts::Object(GlobalComm_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline GlobalComm(const GlobalComm& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline GlobalComm(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline GlobalComm(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static GlobalComm null() {return GlobalComm((GlobalComm_base*)0);}
 	inline static GlobalComm _from_base(GlobalComm_base* b) {return GlobalComm(b);}
 	inline GlobalComm& operator=(const GlobalComm& target) {
@@ -1006,20 +1006,20 @@ private:
 	}
 
 protected:
-	inline TmpGlobalComm(TmpGlobalComm_base* b) : Arts::Object(b), _cache(0) {}
+	inline TmpGlobalComm(TmpGlobalComm_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef TmpGlobalComm_base _base_class;
 
-	inline TmpGlobalComm() : Arts::Object(_Creator), _cache(0) {}
+	inline TmpGlobalComm() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline TmpGlobalComm(const Arts::SubClass& s) :
-		Arts::Object(TmpGlobalComm_base::_create(s.string())), _cache(0) {}
+		Arts::Object(TmpGlobalComm_base::_create(s.string())), _cache(nullptr) {}
 	inline TmpGlobalComm(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(TmpGlobalComm_base::_fromString(r.string())):(TmpGlobalComm_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline TmpGlobalComm(const Arts::DynamicCast& c) : Arts::Object(TmpGlobalComm_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(TmpGlobalComm_base::_fromString(r.string())):(TmpGlobalComm_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline TmpGlobalComm(const Arts::DynamicCast& c) : Arts::Object(TmpGlobalComm_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline TmpGlobalComm(const TmpGlobalComm& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline TmpGlobalComm(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline TmpGlobalComm(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static TmpGlobalComm null() {return TmpGlobalComm((TmpGlobalComm_base*)0);}
 	inline static TmpGlobalComm _from_base(TmpGlobalComm_base* b) {return TmpGlobalComm(b);}
 	inline TmpGlobalComm& operator=(const TmpGlobalComm& target) {
@@ -1107,20 +1107,20 @@ private:
 	}
 
 protected:
-	inline TraderOffer(TraderOffer_base* b) : Arts::Object(b), _cache(0) {}
+	inline TraderOffer(TraderOffer_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef TraderOffer_base _base_class;
 
-	inline TraderOffer() : Arts::Object(_Creator), _cache(0) {}
+	inline TraderOffer() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline TraderOffer(const Arts::SubClass& s) :
-		Arts::Object(TraderOffer_base::_create(s.string())), _cache(0) {}
+		Arts::Object(TraderOffer_base::_create(s.string())), _cache(nullptr) {}
 	inline TraderOffer(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(TraderOffer_base::_fromString(r.string())):(TraderOffer_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline TraderOffer(const Arts::DynamicCast& c) : Arts::Object(TraderOffer_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(TraderOffer_base::_fromString(r.string())):(TraderOffer_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline TraderOffer(const Arts::DynamicCast& c) : Arts::Object(TraderOffer_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline TraderOffer(const TraderOffer& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline TraderOffer(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline TraderOffer(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static TraderOffer null() {return TraderOffer((TraderOffer_base*)0);}
 	inline static TraderOffer _from_base(TraderOffer_base* b) {return TraderOffer(b);}
 	inline TraderOffer& operator=(const TraderOffer& target) {
@@ -1200,20 +1200,20 @@ private:
 	}
 
 protected:
-	inline TraderQuery(TraderQuery_base* b) : Arts::Object(b), _cache(0) {}
+	inline TraderQuery(TraderQuery_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef TraderQuery_base _base_class;
 
-	inline TraderQuery() : Arts::Object(_Creator), _cache(0) {}
+	inline TraderQuery() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline TraderQuery(const Arts::SubClass& s) :
-		Arts::Object(TraderQuery_base::_create(s.string())), _cache(0) {}
+		Arts::Object(TraderQuery_base::_create(s.string())), _cache(nullptr) {}
 	inline TraderQuery(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(TraderQuery_base::_fromString(r.string())):(TraderQuery_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline TraderQuery(const Arts::DynamicCast& c) : Arts::Object(TraderQuery_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(TraderQuery_base::_fromString(r.string())):(TraderQuery_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline TraderQuery(const Arts::DynamicCast& c) : Arts::Object(TraderQuery_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline TraderQuery(const TraderQuery& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline TraderQuery(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline TraderQuery(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static TraderQuery null() {return TraderQuery((TraderQuery_base*)0);}
 	inline static TraderQuery _from_base(TraderQuery_base* b) {return TraderQuery(b);}
 	inline TraderQuery& operator=(const TraderQuery& target) {
@@ -1303,20 +1303,20 @@ private:
 	}
 
 protected:
-	inline Loader(Loader_base* b) : Arts::Object(b), _cache(0) {}
+	inline Loader(Loader_base* b) : Arts::Object(b), _cache(nullptr) {}
 
 
 public:
 	typedef Loader_base _base_class;
 
-	inline Loader() : Arts::Object(_Creator), _cache(0) {}
+	inline Loader() : Arts::Object(_Creator), _cache(nullptr) {}
 	inline Loader(const Arts::SubClass& s) :
-		Arts::Object(Loader_base::_create(s.string())), _cache(0) {}
+		Arts::Object(Loader_base::_create(s.string())), _cache(nullptr) {}
 	inline Loader(const Arts::Reference &r) :
-		Arts::Object(r.isString()?(Loader_base::_fromString(r.string())):(Loader_base::_fromReference(r.reference(),true))), _cache(0) {}
-	inline Loader(const Arts::DynamicCast& c) : Arts::Object(Loader_base::_fromDynamicCast(c.object())), _cache(0) {}
+		Arts::Object(r.isString()?(Loader_base::_fromString(r.string())):(Loader_base::_fromReference(r.reference(),true))), _cache(nullptr) {}
+	inline Loader(const Arts::DynamicCast& c) : Arts::Object(Loader_base::_fromDynamicCast(c.object())), _cache(nullptr) {}
 	inline Loader(const Loader& target) : Arts::Object(target._pool), _cache(target._cache) {}
-	inline Loader(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
+	inline Loader(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}
 	inline static Loader null() {return Loader((Loader_base*)0);}
 	inline static Loader _from_base(Loader_base* b) {return Loader(b);}
 	inline Loader& operator=(const Loader& target) {
diff --git a/mcop/datapacket.h b/mcop/datapacket.h
index e7a08e0..8c78de0 100644
--- a/mcop/datapacket.h
+++ b/mcop/datapacket.h
@@ -64,7 +64,7 @@ public:
 	virtual void setPull(int packets, int capacity) = 0;
 	virtual void endPull() = 0;
 
-	GenericDataChannel() : d(0)
+	GenericDataChannel() : d(nullptr)
 	{
 	}
 };
@@ -151,7 +151,7 @@ public:
 
 protected:
 	GenericDataPacket(GenericDataChannel *channel)
-		:d(0),channel(channel),useCount(0)
+		:d(nullptr),channel(channel),useCount(0)
 	{
 		_staticDataPacketCount++;
 	}
diff --git a/mcop/debug.cpp b/mcop/debug.cpp
index eba492b..1a247d6 100644
--- a/mcop/debug.cpp
+++ b/mcop/debug.cpp
@@ -34,8 +34,8 @@
 static int arts_debug_level = Arts::Debug::lInfo;
 static bool arts_debug_abort = false;
 static const char *arts_debug_prefix = "";
-static char *messageAppName = 0;
-static Arts::Mutex *arts_debug_mutex = 0;
+static char *messageAppName = nullptr;
+static Arts::Mutex *arts_debug_mutex = nullptr;
 
 /* routines for variable length sprintf without buffer overflow (from GLib) */
 static char* arts_strdup_vprintf(const char *format, va_list args1);
@@ -75,10 +75,10 @@ static char * shell_quote(const char *s)
  */
 static void output_message(Debug::Level level, const char *msg) {
 	char *quoted_msg;
-	char *buff = 0;
+	char *buff = nullptr;
 
 	/* default to text output if no message app is defined or if it is a debug message. */
-	if (messageAppName == 0 || !strcmp(messageAppName, "") || (level == Debug::lDebug))
+	if (!messageAppName || !strcmp(messageAppName, "") || (level == Debug::lDebug))
 	{
 		fprintf(stderr, "%s\n", msg);
 		return;
@@ -100,7 +100,7 @@ static void output_message(Debug::Level level, const char *msg) {
 	}
 	free(quoted_msg);
 	
-	if(buff != 0)
+	if(buff)
 	{
 		system(buff);
 		free(buff);
@@ -251,17 +251,17 @@ void Arts::Debug::messageApp(const char *appName)
 
 void Arts::Debug::initMutex()
 {
-	arts_return_if_fail(arts_debug_mutex == 0);
+	arts_return_if_fail(!arts_debug_mutex);
 
 	arts_debug_mutex = new Arts::Mutex();
 }
 
 void Arts::Debug::freeMutex()
 {
-	arts_return_if_fail(arts_debug_mutex != 0);
+	arts_return_if_fail(arts_debug_mutex);
 
 	delete arts_debug_mutex;
-	arts_debug_mutex = 0;
+	arts_debug_mutex = nullptr;
 }
 
 /*
diff --git a/mcop/delayedreturn.cpp b/mcop/delayedreturn.cpp
index 00ff17b..c9c91c4 100644
--- a/mcop/delayedreturn.cpp
+++ b/mcop/delayedreturn.cpp
@@ -28,7 +28,7 @@
 using namespace Arts;
 using namespace std;
 
-DelayedReturn::DelayedReturn() : buffer(0), connection(0)
+DelayedReturn::DelayedReturn() : buffer(nullptr), connection(nullptr)
 {
 	//
 }
@@ -43,8 +43,8 @@ void DelayedReturn::initialize(Connection *connection, Buffer *buffer)
 DelayedReturn::~DelayedReturn()
 {
 	connection->_release();
-	connection = 0;
-	buffer = 0;
+	connection = nullptr;
+	buffer = nullptr;
 }
 
 void DelayedReturn::doReturn(const AnyConstRef& value)
diff --git a/mcop/dispatcher.cpp b/mcop/dispatcher.cpp
index 580a268..b72e1a5 100644
--- a/mcop/dispatcher.cpp
+++ b/mcop/dispatcher.cpp
@@ -143,7 +143,7 @@ public:
 
 }
 
-Dispatcher *Dispatcher::_instance = 0;
+Dispatcher *Dispatcher::_instance = nullptr;
 
 Dispatcher::Dispatcher(IOManager *ioManager, StartServer startServer)
 {
@@ -184,10 +184,10 @@ Dispatcher::Dispatcher(IOManager *ioManager, StartServer startServer)
 		{
 			delete unixServer;
 			arts_warning("[mcop dispatcher] Couldn't start UnixServer");
-			unixServer = 0;
+			unixServer = nullptr;
 		}
 	}
-	else unixServer = 0;
+	else unixServer = nullptr;
 
 	if(startServer & startTCPServer)
 	{
@@ -196,18 +196,18 @@ Dispatcher::Dispatcher(IOManager *ioManager, StartServer startServer)
 		{
 			delete tcpServer;
 			arts_warning("[mcop dispatcher] Couldn't start TCPServer");
-			tcpServer = 0;
+			tcpServer = nullptr;
 		}
 	}
-	else tcpServer = 0;
+	else tcpServer = nullptr;
 
 	d->allowNoAuthentication = startServer & noAuthentication;
-	d->accept = 0;
+	d->accept = nullptr;
 	d->loopbackConnection = new LoopbackConnection(serverID);
 	d->interfaceRepo = InterfaceRepo::_from_base(new InterfaceRepo_impl());
-	d->delayedReturn = 0;
+	d->delayedReturn = nullptr;
 
-	_flowSystem = 0;
+	_flowSystem = nullptr;
 	referenceClean = new ReferenceClean(objectPool);
 
 	/*
@@ -343,49 +343,49 @@ Dispatcher::~Dispatcher()
 	if(d->accept)
 	{
 		delete d->accept;
-		d->accept = 0;
+		d->accept = nullptr;
 	}
 
 	if(d->loopbackConnection)
 	{
 		d->loopbackConnection->_release();
-		d->loopbackConnection = 0;
+		d->loopbackConnection = nullptr;
 	}
 	if(unixServer)
 	{
 		delete unixServer;
-		unixServer = 0;
+		unixServer = nullptr;
 	}
 
 	if(tcpServer)
 	{
 		delete tcpServer;
-		tcpServer = 0;
+		tcpServer = nullptr;
 	}
 
 	if(notificationManager)
 	{
 		delete notificationManager;
-		notificationManager = 0;
+		notificationManager = nullptr;
 	}
 
 	if(objectManager && Object_base::_objectCount() == 0)
 	{
 		objectManager->removeExtensions();
 		delete objectManager;
-		objectManager = 0;
+		objectManager = nullptr;
 	}
 
 	if(d->wakeUpHandler)
 	{
 		delete d->wakeUpHandler;
-		d->wakeUpHandler = 0;
+		d->wakeUpHandler = nullptr;
 	}
 
 	if(deleteIOManagerOnExit)
 	{
 		delete _ioManager;
-		_ioManager = 0;
+		_ioManager = nullptr;
 	}
 
 	if(Object_base::_objectCount())
@@ -418,10 +418,10 @@ Dispatcher::~Dispatcher()
 	/* private data pointer */
 	assert(d);
 	delete d;
-	d = 0;
+	d = nullptr;
 
 	assert(_instance);
-	_instance = 0;
+	_instance = nullptr;
 }
 
 InterfaceRepo Dispatcher::interfaceRepo()
@@ -471,7 +471,7 @@ Buffer *Dispatcher::waitForResult(long requestID, Connection *connection)
 	requestResultPool.releaseSlot(requestID);
 
 	if(connection->broken()) // connection went away before we got some result
-		b = 0;
+		b = nullptr;
 	
 	connection->_release(); // Give up extra ref
 	
@@ -576,7 +576,7 @@ void Dispatcher::handle(Connection *conn, Buffer *buffer, long messageType)
 					result->writeLong(requestID);
 
 					d->delayedReturn->initialize(conn,result);
-					d->delayedReturn = 0;
+					d->delayedReturn = nullptr;
 				}
 				else	/* return normally */
 				{
@@ -803,7 +803,7 @@ void Dispatcher::generateServerID()
 	char *buffer;
 	buffer = arts_strdup_printf("%s-%04x-%08lx",
 								MCOPUtils::getFullHostname().c_str(),
-								getpid(),time(0));
+								getpid(),time(nullptr));
 	serverID = buffer;
 	free(buffer);
 }
@@ -860,13 +860,13 @@ void *Dispatcher::connectObjectLocal(ObjectReference& reference,
 		}
 	}
 
-	return 0;
+	return nullptr;
 }
 
 Connection *Dispatcher::connectObjectRemote(ObjectReference& reference)
 {
 	if(reference.serverID == "null")		// null reference?
-		return 0;
+		return nullptr;
 
 	if(reference.serverID == serverID)
 		return loopbackConnection();
@@ -904,12 +904,12 @@ Connection *Dispatcher::connectObjectRemote(ObjectReference& reference)
 			}
 		}
 	}
-	return 0;
+	return nullptr;
 }
 
 Connection *Dispatcher::connectUrl(const string& url)
 {
-	Connection *conn = 0;
+	Connection *conn = nullptr;
 	bool isMainThread = SystemThreads::the()->isMainThread();
 
 	if(strncmp(url.c_str(),"tcp:",4) == 0)
@@ -947,7 +947,7 @@ Connection *Dispatcher::connectUrl(const string& url)
 		// Give up extra ref
 		conn->_release();
 	}
-	return 0;
+	return nullptr;
 }
 
 void Dispatcher::run()
diff --git a/mcop/dispatcher.h b/mcop/dispatcher.h
index 6a2be82..2ccdef8 100644
--- a/mcop/dispatcher.h
+++ b/mcop/dispatcher.h
@@ -101,7 +101,7 @@ public:
 		noAuthentication = 4			// don't require authentication
 	};
 
-	Dispatcher(IOManager *ioManager = 0, StartServer startServer = noServer);
+	Dispatcher(IOManager *ioManager = nullptr, StartServer startServer = noServer);
 	~Dispatcher();
 
 	static Dispatcher *the();
diff --git a/mcop/dynamicrequest.cpp b/mcop/dynamicrequest.cpp
index d6a204d..d892637 100644
--- a/mcop/dynamicrequest.cpp
+++ b/mcop/dynamicrequest.cpp
@@ -48,7 +48,7 @@ public:
 	 * constructor
 	 */
 	DynamicRequestPrivate(const Object &obj)
-		: buffer(0), object(obj), methodID(-1)
+		: buffer(nullptr), object(obj), methodID(-1)
 	{
 	}
 };
@@ -138,7 +138,7 @@ bool DynamicRequest::invoke(const AnyRef& returnCode)
 	d->buffer->patchLength();
 	d->buffer->patchLong(16,d->methodID);
 	d->connection->qSendBuffer(d->buffer);
-	d->buffer = 0;
+	d->buffer = nullptr;
 
 	Buffer *result =
 		Dispatcher::the()->waitForResult(d->requestID,d->connection);
@@ -148,5 +148,5 @@ bool DynamicRequest::invoke(const AnyRef& returnCode)
 		returnCode.read(result);
 		delete result;
 	}
-	return result != 0;
+	return result != nullptr;
 }
diff --git a/mcop/dynamicskeleton.cpp b/mcop/dynamicskeleton.cpp
index 8ee4428..c71ba85 100644
--- a/mcop/dynamicskeleton.cpp
+++ b/mcop/dynamicskeleton.cpp
@@ -60,7 +60,7 @@ public:
 DynamicSkeletonBase::DynamicSkeletonBase(Object_skel *skel,
 	const std::string& interfaceName, const std::string& interfaceNameParent)
 {
-	arts_assert(skel != 0);
+	arts_assert(skel);
 	_dsInit(skel,interfaceName,interfaceNameParent);
 }
 
@@ -90,7 +90,7 @@ void DynamicSkeletonBase::_dsInit(Object_skel *skel,
 				if((ad.flags & attributeStream) == attributeStream)
 				{
 					void**& data = d->attrs[ad.name.c_str()];
-					arts_assert(data == 0);
+					arts_assert(!data);
 					data = new (void*);
 					d->skel->_initStream(ad.name.c_str(),data,ad.flags);
 				}
diff --git a/mcop/extensionloader.cpp b/mcop/extensionloader.cpp
index 3ed8ea0..c8d927e 100644
--- a/mcop/extensionloader.cpp
+++ b/mcop/extensionloader.cpp
@@ -31,7 +31,7 @@
 using namespace std;
 using namespace Arts;
 
-ExtensionLoader::ExtensionLoader(const string& filename) :handle(0)
+ExtensionLoader::ExtensionLoader(const string& filename) :handle(nullptr)
 {
 	string dlfilename;
 
@@ -59,7 +59,7 @@ ExtensionLoader::ExtensionLoader(const string& filename) :handle(0)
     lt_dlinit();
 	handle = lt_dlopen(dlfilename.c_str());
 
-	StartupManager::setExtensionLoader(0);
+	StartupManager::setExtensionLoader(nullptr);
 
 	if(handle)
 	{
@@ -79,7 +79,7 @@ ExtensionLoader::ExtensionLoader(const string& filename) :handle(0)
 
 bool ExtensionLoader::success()
 {
-	return (handle != 0);
+	return (handle != nullptr);
 }
 
 void ExtensionLoader::shutdown()
diff --git a/mcop/flowsystem.cpp b/mcop/flowsystem.cpp
index fbdf644..0bbc0e6 100644
--- a/mcop/flowsystem.cpp
+++ b/mcop/flowsystem.cpp
@@ -45,12 +45,12 @@ Object ScheduleNode::nodeObject()
 
 RemoteScheduleNode *ScheduleNode::remoteScheduleNode()
 {
-	return 0;
+	return nullptr;
 }
 
 void *ScheduleNode::cast(const std::string&)
 {
-	return 0;
+	return nullptr;
 }
 
 
@@ -114,7 +114,7 @@ void RemoteScheduleNode::connect(const std::string& port,
 		                         ScheduleNode *remoteNode,
 			                     const std::string& remotePort)
 {
-	arts_return_if_fail(remoteNode != 0);
+	arts_return_if_fail(remoteNode);
 
 	FlowSystem fs = nodeObject()._flowSystem();
 	arts_return_if_fail(!fs.isNull());
@@ -144,7 +144,7 @@ void RemoteScheduleNode::disconnect(const std::string& port,
 		                            ScheduleNode *remoteNode,
 			                        const std::string& remotePort)
 {
-	arts_return_if_fail(remoteNode != 0);
+	arts_return_if_fail(remoteNode);
 
 	FlowSystem fs = nodeObject()._flowSystem();
 	arts_return_if_fail(!fs.isNull());
diff --git a/mcop/iomanager.cpp b/mcop/iomanager.cpp
index 31709f9..a6e0439 100644
--- a/mcop/iomanager.cpp
+++ b/mcop/iomanager.cpp
@@ -215,7 +215,7 @@ void StdIOManager::processOneEvent(bool blocking)
 	if(level == 1 && timeList.size())
 	{
 		struct timeval currenttime;
-		gettimeofday(&currenttime,0);
+		gettimeofday(&currenttime,nullptr);
 
 		list<TimeWatcher *>::iterator ti;
 
@@ -320,7 +320,7 @@ void StdIOManager::processOneEvent(bool blocking)
 	if(level == 1 && timeList.size())
 	{
 		struct timeval currenttime;
-		gettimeofday(&currenttime,0);
+		gettimeofday(&currenttime,nullptr);
 
 		list<TimeWatcher *>::iterator ti;
 
@@ -412,7 +412,7 @@ void StdIOManager::remove(IONotify *notify, int types)
 
 void StdIOManager::addTimer(int milliseconds, TimeNotify *notify)
 {
-	if (milliseconds == -1 && notify == 0) {
+	if (milliseconds == -1 && !notify) {
 		// HACK: in order to not add a virtual function to IOManager we're calling addTimer with
 		// magic values. This call tells the ioManager that notifications are pending and
 		// NotificationManager::run() should get called soon.
@@ -446,7 +446,7 @@ void StdIOManager::removeTimer(TimeNotify *notify)
 TimeWatcher::TimeWatcher(int _milliseconds, TimeNotify *notify)
 	: milliseconds(_milliseconds),_notify(notify),active(false),destroyed(false)
 {
-	gettimeofday(&nextNotify,0);
+	gettimeofday(&nextNotify,nullptr);
 
 	nextNotify.tv_usec += (milliseconds%1000)*1000;
 	nextNotify.tv_sec += (milliseconds/1000)+(nextNotify.tv_usec/1000000);
diff --git a/mcop/mcoputils.cpp b/mcop/mcoputils.cpp
index 9e9e565..abaebbd 100644
--- a/mcop/mcoputils.cpp
+++ b/mcop/mcoputils.cpp
@@ -102,7 +102,7 @@ static char *locate_mcop_dir()
   if (!pw_ent)
   {
      arts_warning("[mcoputils] Error: Can not find password entry for uid %d.\n", getuid());
-     return 0;
+     return nullptr;
   }
 
   user_tmp_dir = string(tmp) + "/tdesocket-" + string(pw_ent->pw_name);
@@ -134,7 +134,7 @@ static char *locate_mcop_dir()
   result = stat(kde_tmp_dir.c_str(), &stat_buf);
   if (result == -1)
   {
-     return 0;
+     return nullptr;
   }  
 
   kde_tmp_dir += kde_prefix;
@@ -159,12 +159,12 @@ static char *locate_mcop_dir()
   if ((result == -1) && (errno == ENOENT))
   {
      // Link mising...
-     return 0; 
+     return nullptr; 
   }
   if ((result == -1) || (!S_ISLNK(stat_buf.st_mode)))
   {
      arts_warning("[mcoputils] Error: \"%s\" is not a link or a directory.\n", kde_tmp_dir.c_str());
-     return 0;
+     return nullptr;
   }
 
   /* kde_tmp_dir is a link. Check whether it points to a valid directory. */
@@ -174,13 +174,13 @@ static char *locate_mcop_dir()
      size *= 2;
      tmp_buf = (char *) realloc(tmp_buf, size);
      if (!tmp_buf)
-	return 0;
+	return nullptr;
      result = readlink(kde_tmp_dir.c_str(), tmp_buf, size - 1);
      if (result == -1)
      {
 	arts_warning("[mcoputils] Error: \"%s\" could not be read.\n", kde_tmp_dir.c_str());
 	free(tmp_buf);
-	return 0;
+	return nullptr;
      }
   } while(result == size - 1);
   tmp_buf[result] = '\0';  
@@ -190,13 +190,13 @@ static char *locate_mcop_dir()
   {
      arts_warning("[mcoputils] Error: \"%s\" points to \"%s\" instead of \"%s\".\n", kde_tmp_dir.c_str(), tmp_buf, user_tmp_dir.c_str());
      free(tmp_buf);
-     return 0;
+     return nullptr;
   }
   result = check_tmp_dir(tmp_buf);
   if (result == 0) return tmp_buf; /* Success */
 
   free(tmp_buf);
-  return 0;
+  return nullptr;
 }
 
 /* blatant and literal copy from lnusertemp to avoid tdelibs dependency */
@@ -369,7 +369,7 @@ int build_link(string tmp_prefix, const char *kde_prefix)
 
 string MCOPUtils::createFilePath(string name)
 {
-	static char *mcop_dir = 0;
+	static char *mcop_dir = nullptr;
 	if (!mcop_dir)
 	{
 	   mcop_dir = locate_mcop_dir();
@@ -377,7 +377,7 @@ string MCOPUtils::createFilePath(string name)
 	if (!mcop_dir)
 	{
 
- 	   const char *tmp = 0;
+ 	   const char *tmp = nullptr;
 	   tmp = getenv("TDETMP");
            if (!tmp || !tmp[0])
              tmp = getenv("TMPDIR");
@@ -416,7 +416,7 @@ string MCOPUtils::getFullHostname()
 	 * if gethostname() isn't a FQDN (guess that by checking whether it
 	 * contains a dot), try to look it up to ensure it is
 	 */
-	if(result.find('.') == string::npos && (hp = gethostbyname(buffer)) != 0)
+	if(result.find('.') == string::npos && (hp = gethostbyname(buffer)))
 		result = hp->h_name;
 	
 	return result;
@@ -439,7 +439,7 @@ string MCOPUtils::readConfigEntry(const string& key, const string& defaultValue)
 
 unsigned long MCOPUtils::makeIID(const string& interfaceName)
 {
-	static map<string, unsigned long> *iidmapobj = 0;
+	static map<string, unsigned long> *iidmapobj = nullptr;
 	static unsigned long nextiid = 1;
 
 	if(!iidmapobj) iidmapobj = new map<string,unsigned long>;
@@ -456,7 +456,7 @@ unsigned long MCOPUtils::makeIID(const string& interfaceName)
 
 static vector<string> *readPath(const string& name, const string& defaultValue)
 {
-	vector<string> *result = 0;
+	vector<string> *result = nullptr;
 	const char *home = getenv("HOME");
 
 	if(home)
@@ -476,7 +476,7 @@ static vector<string> *readPath(const string& name, const string& defaultValue)
 
 const vector<string> *MCOPUtils::extensionPath()
 {
-	static vector<string> *result = 0;
+	static vector<string> *result = nullptr;
 
 	if(!result) result = readPath("ExtensionPath", EXTENSION_DIR);
 	return result;
@@ -484,7 +484,7 @@ const vector<string> *MCOPUtils::extensionPath()
 
 const vector<string> *MCOPUtils::traderPath()
 {
-	static vector<string> *result = 0;
+	static vector<string> *result = nullptr;
 
 	if(!result)
 	{
@@ -506,7 +506,7 @@ string MCOPUtils::mcopDirectory()
 	initialized = true;
 
 	const char *home = getenv("HOME");
-	arts_return_val_if_fail(home != 0, "");
+	arts_return_val_if_fail(home, "");
 
 	mcopDirectory = home + string("/.mcop");
 
diff --git a/mcop/md5auth.cpp b/mcop/md5auth.cpp
index 5278870..2056525 100644
--- a/mcop/md5auth.cpp
+++ b/mcop/md5auth.cpp
@@ -114,7 +114,7 @@ char *arts_md5_auth_mkcookie()
 	memset(&r,0,sizeof(struct random_info));
 
 	// collect some "random" system information
-	gettimeofday(&r.tv,0);
+	gettimeofday(&r.tv,nullptr);
 	r.pid = getpid();
 	uname(&r.un);
 
@@ -188,7 +188,7 @@ void arts_md5_auth_init_seed(const char *seedname)
 	struct stat st;
 	int maxage = 300 + (getpid() & 0xfff)*4;
 	int lstat_result = lstat(seedname,&st);
-	if(lstat_result != 0 || (time(0) - st.st_mtime) > maxage)
+	if(lstat_result != 0 || (time(nullptr) - st.st_mtime) > maxage)
 	{
 		int fd = open(seedname,O_TRUNC|O_CREAT|O_WRONLY,S_IRUSR|S_IWUSR);
 		if(fd != -1) {
diff --git a/mcop/notification.cpp b/mcop/notification.cpp
index 3c6edd5..b8eb27d 100644
--- a/mcop/notification.cpp
+++ b/mcop/notification.cpp
@@ -39,7 +39,7 @@ NotificationManager::NotificationManager()
 NotificationManager::~NotificationManager()
 {
 	arts_assert(instance);
-	instance = 0;
+	instance = nullptr;
 }
 
 void NotificationManager::send(Notification wm)
@@ -48,7 +48,7 @@ void NotificationManager::send(Notification wm)
 		// HACK: in order to not add a virtual function to IOManager we're calling addTimer with
 		// magic values. This call tells the ioManager that notifications are pending and
 		// NotificationManager::run() should get called soon.
-		Arts::Dispatcher::the()->ioManager()->addTimer(-1, 0);
+		Arts::Dispatcher::the()->ioManager()->addTimer(-1, nullptr);
 	}
 	todo.push(wm);
 }
@@ -98,4 +98,4 @@ void Notification::setDestroy(NotificationDestroyFunction destroy)
 	internal = (void*)destroy;
 }
 
-NotificationManager *NotificationManager::instance = 0;
+NotificationManager *NotificationManager::instance = nullptr;
diff --git a/mcop/object.cpp b/mcop/object.cpp
index 220119f..a3dca17 100644
--- a/mcop/object.cpp
+++ b/mcop/object.cpp
@@ -329,7 +329,7 @@ bool Object_skel::_QueryInitStreamFunc(Object_skel *skel, const
 
 long Object_base::_staticObjectCount = 0;
 
-Object_base::Object_base() :  _deleteOk(false), _scheduleNode(0), _nextNotifyID(1),
+Object_base::Object_base() :  _deleteOk(false), _scheduleNode(nullptr), _nextNotifyID(1),
 							_refCnt(1)
 {
 	_internalData = new Arts::ObjectInternalData();
@@ -457,7 +457,7 @@ bool Object_base::_isEqual(Object_base *object) const
 void *Object_base::_cast(unsigned long iid)
 {
 	if(iid == Object_base::_IID) return (Object *)this;
-	return 0;
+	return nullptr;
 }
 
 void *Object_base::_cast(const std::string& interface)
@@ -474,13 +474,13 @@ bool Object_base::_error()
 Object_skel *Object_base::_skel()
 {
 	assert(false);
-	return 0;
+	return nullptr;
 }
 
 Object_stub *Object_base::_stub()
 {
 	assert(false);
-	return 0;
+	return nullptr;
 }
 
 Object_stub *Object_stub::_stub()
@@ -525,7 +525,7 @@ string Object_base::_interfaceName()
 Buffer *Object_base::_allocCustomMessage(long /*handlerID*/)
 {
 	assert(0);
-	return 0;
+	return nullptr;
 }
 
 void Object_base::_sendCustomMessage(Buffer *buffer)
@@ -876,7 +876,7 @@ void Object_skel::_dispatch(Buffer *request,long methodID)
 	if(me.dispatchStyle == ObjectInternalData::MethodTableEntry::dfOneway)
 		me.dispFunc.onewayDispatcher(me.object, request);
 	else if(me.dispatchStyle == ObjectInternalData::MethodTableEntry::dfDynamic)
-		me.dispFunc.dynamicDispatcher(me.object, methodID, request, 0);
+		me.dispFunc.dynamicDispatcher(me.object, methodID, request, nullptr);
 	else
 	{
 		arts_assert(0);
@@ -1174,7 +1174,7 @@ Object_base *Object_base::_create(const std::string& subClass)
 
 Object_base *Object_base::_fromString(const string& objectref)
 {
-	Object_base *result = 0;
+	Object_base *result = nullptr;
 	ObjectReference r;
 
 	if(Dispatcher::the()->stringToObjectReference(r,objectref))
@@ -1300,7 +1300,7 @@ long Object_stub::_lookupMethod(const MethodDef& methodDef)
 	return returnCode;
 }
 
-Object_stub::methodCacheEntry *Object_stub::_lookupMethodCache = 0;
+Object_stub::methodCacheEntry *Object_stub::_lookupMethodCache = nullptr;
 
 long Object_stub::_lookupMethodFast(const char *method)
 {
@@ -1515,7 +1515,7 @@ void Object_stub::_cleanupMethodCache()
 	if(_lookupMethodCache)
 	{
 		delete[] _lookupMethodCache;
-		_lookupMethodCache = 0;
+		_lookupMethodCache = nullptr;
 	}
 }
 
diff --git a/mcop/objectmanager.cpp b/mcop/objectmanager.cpp
index 6fb10c2..11425d4 100644
--- a/mcop/objectmanager.cpp
+++ b/mcop/objectmanager.cpp
@@ -182,7 +182,7 @@ Object_skel *ObjectManager::create(const string& name)
 							name.c_str());
 
 	delete offers;
-	return 0;
+	return nullptr;
 }
 
 void ObjectManager::registerFactory(Factory *factory)
@@ -205,7 +205,7 @@ void ObjectManager::removeFactory(Factory *factory)
 	}
 }
 
-ObjectManager *ObjectManager::_instance = 0;
+ObjectManager *ObjectManager::_instance = nullptr;
 
 ObjectManager::ObjectManager()
 {
@@ -220,7 +220,7 @@ ObjectManager::~ObjectManager()
 	assert(d->extensions.empty());
 	delete d;
 	assert(_instance);
-	_instance = 0;
+	_instance = nullptr;
 }
 
 ObjectManager *ObjectManager::the()
diff --git a/mcop/pool.h b/mcop/pool.h
index d3ca05d..d21c6b8 100644
--- a/mcop/pool.h
+++ b/mcop/pool.h
@@ -56,7 +56,7 @@ public:
 	inline T*& operator[](unsigned long n) { return storage[n]; }
 	inline void releaseSlot(unsigned long n) {
 		freeIDs.push(n);
-		storage[n] = 0;
+		storage[n] = nullptr;
 	}
 	unsigned long allocSlot() {
 		unsigned long slot;
@@ -65,7 +65,7 @@ public:
 			unsigned long n;
 			for(n=0;n<32;n++) {
 				freeIDs.push(storage.size());
-				storage.push_back(0);
+				storage.push_back(nullptr);
 			}
 		}
 		slot = freeIDs.top();
diff --git a/mcop/reference.h b/mcop/reference.h
index a5bea45..c8f3879 100644
--- a/mcop/reference.h
+++ b/mcop/reference.h
@@ -110,9 +110,9 @@ protected:
 	public:
 		Object_base* base;
 		inline Pool(Object_base* b)
-			: creator(0), created(true), count(1), base(b) {}
+			: creator(nullptr), created(true), count(1), base(b) {}
 		inline Pool(Object_base* (*cor)())
-			: creator(cor), created(false), count(1), base(0) {}
+			: creator(cor), created(false), count(1), base(nullptr) {}
 		inline void Inc() {count++;}
 		inline void Dec() {
 			if (--count==0) {
diff --git a/mcop/startupmanager.cpp b/mcop/startupmanager.cpp
index 9d85760..9badbd7 100644
--- a/mcop/startupmanager.cpp
+++ b/mcop/startupmanager.cpp
@@ -47,8 +47,8 @@ void StartupClass::shutdown()
  * StartupManager implementation
  */
 
-list<StartupClass *> *StartupManager::startupClasses = 0;
-ExtensionLoader *StartupManager::activeExtensionLoader = 0;
+list<StartupClass *> *StartupManager::startupClasses = nullptr;
+ExtensionLoader *StartupManager::activeExtensionLoader = nullptr;
 bool StartupManager::running = false;
 
 void StartupManager::add(StartupClass *sc)
@@ -94,9 +94,9 @@ void StartupManager::setExtensionLoader(ExtensionLoader *extension)
 	 * lt_dlopen()d
 	 */
 	if(activeExtensionLoader)
-		arts_assert(extension == 0);
+		arts_assert(!extension);
 	else
-		arts_assert(extension != 0);
+		arts_assert(extension);
 
 	activeExtensionLoader = extension;
 }
@@ -136,7 +136,7 @@ void StartupManager::internalFreeAll()
 		startupClasses->erase(startupClasses->begin(),startupClasses->end());
 
 		delete startupClasses;
-		startupClasses = 0;
+		startupClasses = nullptr;
 	}
 }
 
diff --git a/mcop/tcpconnection.cpp b/mcop/tcpconnection.cpp
index d4d170a..91a85e4 100644
--- a/mcop/tcpconnection.cpp
+++ b/mcop/tcpconnection.cpp
@@ -47,35 +47,35 @@ static struct sockaddr_in *parse_tcp_url(const char *url)
 	char *work = strdup(url);
 
 	char *type = strtok(work,":");
-	if(type == 0 || strcmp(type,"tcp") != 0) {
+	if(!type || strcmp(type,"tcp") != 0) {
 		free(work);
-		return 0;
+		return nullptr;
 	}
 
 	char *host = strtok(nullptr,":");
-	if(host == 0) {
+	if(!host) {
 		free(work);
-		return 0;
+		return nullptr;
 	}
 
 	char *port = strtok(nullptr,":\n");
-	if(port == 0) {
+	if(!port) {
 		free(work);
-		return 0;
+		return nullptr;
 	}
 
 	long portno = atol(port);
 	if(portno < 1 || portno > 65535) {
 		free(work);
-		return 0;
+		return nullptr;
 	}
 
     struct hostent *server = gethostbyname(host);
-   	if(server == 0)
+   	if(!server)
 	{
 		arts_warning("parse_tcp_url: unknown host '%s'",host);
 		free(work);
-		return 0;
+		return nullptr;
 	}
 
 	memset((void *) &addr, '\0', sizeof(addr));
@@ -90,7 +90,7 @@ static struct sockaddr_in *parse_tcp_url(const char *url)
 static int tcp_connect(const char *url)
 {
 	struct sockaddr_in *remote_addr = parse_tcp_url(url);
-	if(remote_addr == 0)
+	if(!remote_addr)
 	{
 		arts_warning("tcp_connect: couldn't parse url %s",url);
 		return -1;
diff --git a/mcop/thread.cpp b/mcop/thread.cpp
index 847a0f0..456cec6 100644
--- a/mcop/thread.cpp
+++ b/mcop/thread.cpp
@@ -77,7 +77,7 @@ public:
 	void unlock() {};
 };
 
-static Thread *systemThreadsNoneCurrent = 0;
+static Thread *systemThreadsNoneCurrent = nullptr;
 
 class SystemThreadsNoThread_impl : public Thread_impl {
 private:
@@ -113,7 +113,7 @@ public:
 class SystemThreadsNone : public SystemThreads {
 public:
 	bool isMainThread() {
-		return (systemThreadsNoneCurrent == 0);
+		return (systemThreadsNoneCurrent == nullptr);
 	}
 	Mutex_impl *createMutex_impl() {
 		return new SystemThreadsNoMutex_impl();
@@ -138,7 +138,7 @@ public:
 }
 
 static SystemThreadsNone systemThreadsNone;
-static SystemThreads *SystemThreads_the = 0;
+static SystemThreads *SystemThreads_the = nullptr;
 
 SystemThreads *SystemThreads::the()
 {
@@ -159,11 +159,11 @@ bool SystemThreads::init(SystemThreads *the)
 
 bool SystemThreads::supported()
 {
-	return (SystemThreads_the != 0);
+	return (SystemThreads_the != nullptr);
 }
 
 SystemThreads::~SystemThreads()
 {
 }
 
-namespace Arts { void ARTS_EXPORT *gslGlobalMutexTable = 0; }
+namespace Arts { void ARTS_EXPORT *gslGlobalMutexTable = nullptr; }
diff --git a/mcop/trader_impl.cpp b/mcop/trader_impl.cpp
index fe954f0..7edf45c 100644
--- a/mcop/trader_impl.cpp
+++ b/mcop/trader_impl.cpp
@@ -55,7 +55,7 @@ protected:
 	TraderHelper();
 	~TraderHelper();
 	void addDirectory(const string& directory, const string& iface = "",
-						map< pair<dev_t,ino_t>, bool > *dirsDone = 0);
+						map< pair<dev_t,ino_t>, bool > *dirsDone = nullptr);
 
 public:
 	vector<TraderOffer> *doQuery(const vector<TraderRestriction>& query);
@@ -217,7 +217,7 @@ void TraderHelper::addDirectory(const string& directory, const string& iface,
 	if(!dir) return;
 
 	struct dirent *de;
-	while((de = readdir(dir)) != 0)
+	while((de = readdir(dir)))
 	{
 		string currentEntry = directory + "/" + de->d_name;
 
@@ -307,7 +307,7 @@ vector<TraderOffer> *TraderHelper::doQuery(const
 	return result;
 }
 
-TraderHelper *TraderHelper::_instance = 0;
+TraderHelper *TraderHelper::_instance = nullptr;
 TraderHelper *TraderHelper::the()
 {
 	if(!_instance) _instance = new TraderHelper();
@@ -319,7 +319,7 @@ void TraderHelper::shutdown()
 	if(_instance)
 	{
 		delete _instance;
-		_instance = 0;
+		_instance = nullptr;
 	}
 }
 
diff --git a/mcop/unixconnection.cpp b/mcop/unixconnection.cpp
index 368f53c..3dd3523 100644
--- a/mcop/unixconnection.cpp
+++ b/mcop/unixconnection.cpp
@@ -41,15 +41,15 @@ static struct sockaddr_un *parse_unix_url(const char *url)
 	char *work = strdup(url);
 
 	char *type = strtok(work,":");
-	if(type == 0 || strcmp(type,"unix") != 0) {
+	if(!type || strcmp(type,"unix") != 0) {
 	    free(work);
-	    return 0;
+	    return nullptr;
 	}
 
 	char *path = strtok(nullptr,":\n");
-	if(path == 0) {
+	if(!path) {
 	    free(work);
-	    return 0;
+	    return nullptr;
 	}
 
     int maxlen = sizeof(addr.sun_path);
@@ -64,7 +64,7 @@ static struct sockaddr_un *parse_unix_url(const char *url)
 static int unix_connect(const char *url)
 {
 	struct sockaddr_un *remote_addr = parse_unix_url(url);
-	if(remote_addr == 0)
+	if(!remote_addr)
 	{
 		arts_warning("unix_connect: couldn't parse url %s",url);
 		return -1;
diff --git a/mcop/weakreference.h b/mcop/weakreference.h
index 344eacb..28012f3 100644
--- a/mcop/weakreference.h
+++ b/mcop/weakreference.h
@@ -82,7 +82,7 @@ private:
 public:
 	WeakReference()
 	{
-		content = 0;
+		content = nullptr;
 	}
 	WeakReference(const WeakReference<SmartWrapper>& source)
 		:WeakReferenceBase(source), content(source.content)
@@ -114,7 +114,7 @@ public:
 		if(content)
 		{
 			content->_removeWeakReference(this);
-			content = 0;
+			content = nullptr;
 		}
 	}
 	inline operator SmartWrapper() const
diff --git a/mcop_mt/threads_posix.cpp b/mcop_mt/threads_posix.cpp
index b763fb8..cddc634 100644
--- a/mcop_mt/threads_posix.cpp
+++ b/mcop_mt/threads_posix.cpp
@@ -66,7 +66,7 @@ protected:
 public:
 	Mutex_impl()
 	{
-		pthread_mutex_init(&mutex, 0);
+		pthread_mutex_init(&mutex, nullptr);
 #ifdef PTHREAD_PREVENT_MULTI_LOCK
 		have_owner = false;
 #endif
@@ -127,7 +127,7 @@ protected:
 public:
 	RecMutex_impl()
 	{
-		pthread_mutex_init(&mutex, 0);
+		pthread_mutex_init(&mutex, nullptr);
 		have_owner = false;
 		count = 0;
 	}
@@ -203,10 +203,10 @@ public:
 		pthread_setspecific(privateDataKey, impl);
 
     	((Thread_impl *)impl)->thread->run();
-    	return 0;
+    	return nullptr;
 	}
 	void start() {
-		pthread_create(&pthread,0,threadStartInternal,this);
+		pthread_create(&pthread,nullptr,threadStartInternal,this);
 	}
 	void waitDone() {
     	void *foo;
@@ -222,7 +222,7 @@ protected:
 
 public:
 	ThreadCondition_impl() {
-		pthread_cond_init(&cond, 0);
+		pthread_cond_init(&cond, nullptr);
 	}
 	~ThreadCondition_impl() {
 		pthread_cond_destroy(&cond);
@@ -311,7 +311,7 @@ public:
 		if(data)
 			return ((Thread_impl *)data)->thread;
 		else
-			return 0; /* main thread */
+			return nullptr; /* main thread */
 	}
 	Arts::Semaphore_impl *createSemaphore_impl(int shared, int count) {
 		return new Semaphore_impl(shared, count);
@@ -325,14 +325,14 @@ private:
 
 public:
 	SetSystemThreads() {
-		if(pthread_key_create(&Thread_impl::privateDataKey, 0))
+		if(pthread_key_create(&Thread_impl::privateDataKey, nullptr))
 			arts_debug("SystemThreads init: pthread_key_create failed");
 
 		SystemThreads::init(&posixThreads);
 
 	}
 	~SetSystemThreads() {
-		SystemThreads::init(0);
+		SystemThreads::init(nullptr);
 
 		if(pthread_key_delete(Thread_impl::privateDataKey))
 			arts_debug("SystemThreads init: pthread_key_delete failed");
diff --git a/mcopidl/mcopidl.cpp b/mcopidl/mcopidl.cpp
index 9178122..7e1e2e7 100644
--- a/mcopidl/mcopidl.cpp
+++ b/mcopidl/mcopidl.cpp
@@ -120,7 +120,7 @@ void startInclude( const char *line )
 	char *a = strtok(l,"<\"");
 	if(a)
 	{
-		char *b = strtok(0,">\"");
+		char *b = strtok(nullptr,">\"");
 		if(b) file = b;
 	}
 
@@ -1632,36 +1632,36 @@ void doInterfacesHeader(FILE *header)
 		// if necessary. It is protected, though there should be noinherited
 		// class
 		fprintf(header,"\nprotected:\n");
-		fprintf(header,"\tinline %s(%s_base* b) : Arts::Object(b), _cache(0) {}\n\n",
+		fprintf(header,"\tinline %s(%s_base* b) : Arts::Object(b), _cache(nullptr) {}\n\n",
 			iname.c_str(),iname.c_str());
 		
 		fprintf(header,"\npublic:\n");
 		fprintf(header,"\ttypedef %s_base _base_class;\n\n",iname.c_str());
 		// empty constructor: specify creator for create-on-demand
-		fprintf(header,"\tinline %s() : Arts::Object(_Creator), _cache(0) {}\n",iname.c_str());
+		fprintf(header,"\tinline %s() : Arts::Object(_Creator), _cache(nullptr) {}\n",iname.c_str());
 		
 		// constructors from reference and for subclass
 		fprintf(header,"\tinline %s(const Arts::SubClass& s) :\n"
-			"\t\tArts::Object(%s_base::_create(s.string())), _cache(0) {}\n",
+			"\t\tArts::Object(%s_base::_create(s.string())), _cache(nullptr) {}\n",
 			iname.c_str(),iname.c_str());
 		fprintf(header,"\tinline %s(const Arts::Reference &r) :\n"
 			"\t\tArts::Object("
 			"r.isString()?(%s_base::_fromString(r.string())):"
-			"(%s_base::_fromReference(r.reference(),true))), _cache(0) {}\n",
+			"(%s_base::_fromReference(r.reference(),true))), _cache(nullptr) {}\n",
 			iname.c_str(),iname.c_str(), iname.c_str());
 		fprintf(header,"\tinline %s(const Arts::DynamicCast& c) : "
 			"Arts::Object(%s_base::_fromDynamicCast(c.object())), "
-			"_cache(0) {}\n", iname.c_str(),iname.c_str());
+			"_cache(nullptr) {}\n", iname.c_str(),iname.c_str());
 
 		// copy constructors
 		fprintf(header,"\tinline %s(const %s& target) : Arts::Object(target._pool), _cache(target._cache) {}\n",
 			iname.c_str(),iname.c_str());
-		fprintf(header,"\tinline %s(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}\n",
+		fprintf(header,"\tinline %s(Arts::Object::Pool& p) : Arts::Object(p), _cache(nullptr) {}\n",
 			iname.c_str());
 			
 		// null object
 		// %s::null() returns a null object (and not just a reference to one)
-		fprintf(header,"\tinline static %s null() {return %s((%s_base*)0);}\n",
+		fprintf(header,"\tinline static %s null() {return %s((%s_base*)nullptr);}\n",
 			iname.c_str(),iname.c_str(),iname.c_str());
 		fprintf(header,"\tinline static %s _from_base(%s_base* b) {return %s(b);}\n",
 			iname.c_str(),iname.c_str(),iname.c_str());
@@ -1974,13 +1974,13 @@ void doInterfacesSource(FILE *source)
 		fprintf(source,"\tif(Arts::Dispatcher::the()->stringToObjectReference(r,objectref))\n");
 		fprintf(source,"\t\treturn %s_base::_fromReference(r,true);\n",
 															d.name.c_str());
-		fprintf(source,"\treturn 0;\n");
+		fprintf(source,"\treturn nullptr;\n");
 		fprintf(source,"}\n\n");
 
 		fprintf(source,"%s_base *%s_base::_fromDynamicCast(const Arts::Object& object)\n",
 											d.name.c_str(),d.name.c_str());
 		fprintf(source,"{\n");
-		fprintf(source,"\tif(object.isNull()) return 0;\n\n");
+		fprintf(source,"\tif(object.isNull()) return nullptr;\n\n");
 		fprintf(source,"\t%s_base *castedObject = (%s_base *)object._base()->_cast(%s_base::_IID);\n",
 											d.name.c_str(), d.name.c_str(), d.name.c_str());
 		fprintf(source,"\tif(castedObject) return castedObject->_copy();\n\n");
@@ -2025,7 +2025,7 @@ void doInterfacesSource(FILE *source)
 		fprintf(source,"\t\t\tif (!result->_isCompatibleWith(\"%s\")) {\n",
 			d.name.c_str());
 		fprintf(source,"\t\t\t\tresult->_release();\n");
-		fprintf(source,"\t\t\t\treturn 0;\n");
+		fprintf(source,"\t\t\t\treturn nullptr;\n");
 		fprintf(source,"\t\t\t}\n");
 
 		fprintf(source,"\t\t}\n");
@@ -2090,7 +2090,7 @@ void doInterfacesSource(FILE *source)
 							"return (%s_base *)this;\n",pc.c_str(),pc.c_str());
 		}
 		fprintf(source,"\tif(iid == Arts::Object_base::_IID) return (Arts::Object_base *)this;\n");
-		fprintf(source,"\treturn 0;\n");
+		fprintf(source,"\treturn nullptr;\n");
 		fprintf(source,"}\n\n");
 
 		// create stub
diff --git a/mcopidl/namespace.cpp b/mcopidl/namespace.cpp
index 069fffd..41807ef 100644
--- a/mcopidl/namespace.cpp
+++ b/mcopidl/namespace.cpp
@@ -99,7 +99,7 @@ void ModuleHelper::define(const char *name)
 
 char *ModuleHelper::qualify(const char *name)
 {
-	char *result = 0;
+	char *result = nullptr;
 
 	// TODO: nested namespaces
 
diff --git a/mcopidl/scanner.cpp b/mcopidl/scanner.cpp
index 7fc3b67..1b8ee63 100644
--- a/mcopidl/scanner.cpp
+++ b/mcopidl/scanner.cpp
@@ -189,7 +189,7 @@ struct yy_buffer_state
 #define YY_BUFFER_EOF_PENDING 2
 	};
 
-static YY_BUFFER_STATE yy_current_buffer = 0;
+static YY_BUFFER_STATE yy_current_buffer = nullptr;
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -207,7 +207,7 @@ static int yy_n_chars;		/* number of characters read into yy_ch_buf */
 int yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
+static char *yy_c_buf_p = nullptr;
 static int yy_init = 1;		/* whether we need to initialize */
 static int yy_start = 0;	/* start state number */
 
@@ -258,7 +258,7 @@ static void yy_flex_free YY_PROTO(( void * ));
 #define yywrap() 1
 #define YY_SKIP_YYWRAP
 typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+FILE *yyin = nullptr, *yyout = nullptr;
 typedef int yy_state_type;
 extern char *yytext;
 #define yytext_ptr yytext
@@ -733,7 +733,7 @@ static int input YY_PROTO(( void ));
 #if YY_STACK_USED
 static int yy_start_stack_ptr = 0;
 static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
+static int *yy_start_stack = nullptr;
 #ifndef YY_NO_PUSH_STATE
 static void yy_push_state YY_PROTO(( int new_state ));
 #endif
diff --git a/qtmcop/qiomanager.cpp b/qtmcop/qiomanager.cpp
index 62d4a6a..25738ba 100644
--- a/qtmcop/qiomanager.cpp
+++ b/qtmcop/qiomanager.cpp
@@ -58,8 +58,8 @@ public:
  * use static variables for private data here.
  */
 static int qioLevel;
-static QIOManager *qioManager = 0;
-static QIOManagerBlocking *qioManagerBlocking = 0;
+static QIOManager *qioManager = nullptr;
+static QIOManagerBlocking *qioManagerBlocking = nullptr;
 static bool qioBlocking;
 
 /*
@@ -126,10 +126,10 @@ QIOManager::QIOManager()
 QIOManager::~QIOManager()
 {
 	assert(qioManager);
-	qioManager = 0;
+	qioManager = nullptr;
 
 	delete qioManagerBlocking;
-	qioManagerBlocking = 0;
+	qioManagerBlocking = nullptr;
 }
 
 void QIOManager::processOneEvent(bool blocking)
@@ -220,7 +220,7 @@ void QIOManager::remove(IONotify *notify, int types)
 
 void QIOManager::addTimer(int milliseconds, TimeNotify *notify)
 {
-	if (milliseconds == -1 && notify == 0)
+	if (milliseconds == -1 && !notify)
 	{
 		// HACK: in order to not add a virtual function to IOManager we're calling addTimer with
 		// magic values. This call tells the ioManager that notifications are pending and
diff --git a/soundserver/artscat.cpp b/soundserver/artscat.cpp
index c6818c8..140a1e3 100644
--- a/soundserver/artscat.cpp
+++ b/soundserver/artscat.cpp
@@ -79,7 +79,7 @@ public:
 	long samplingRate() { return cfgSamplingRate; }
 	long channels()     { return cfgChannels; }
 	long bits()         { return cfgBits; }
-	bool finished()     { return (pfile == 0); }
+	bool finished()     { return (pfile == nullptr); }
 	string title()		{ return cfgTitle; }
 
 	void streamStart()
@@ -98,7 +98,7 @@ public:
 		 */
 		outdata.endPull();
 		pclose(pfile);
-		pfile = 0;
+		pfile = nullptr;
 		pfd = 0;
 
 		/*
diff --git a/soundserver/artsd.cpp b/soundserver/artsd.cpp
index 07b260d..5c1a8ab 100644
--- a/soundserver/artsd.cpp
+++ b/soundserver/artsd.cpp
@@ -111,12 +111,12 @@ static int  					cfgFragmentCount= 0;
 static int  					cfgFragmentSize	= 0;
 static int  					cfgPort			= 0;
 static int  					cfgDebugLevel	= 2;
-static const char			   *cfgDebugApp		= 0;
-static const char			   *cfgCrashApp		= 0;
+static const char			   *cfgDebugApp		= nullptr;
+static const char			   *cfgCrashApp		= nullptr;
 static bool  					cfgFullDuplex	= 0;
 static bool  					cfgForceStart	= 0;
-static const char			   *cfgDeviceName   = 0;
-static const char              *cfgAudioIO      = 0;
+static const char			   *cfgDeviceName   = nullptr;
+static const char              *cfgAudioIO      = nullptr;
 static int                      cfgAutoSuspend  = 0;
 static int                      cfgBuffers      = 0;
 static float					cfgVolume		= 0.0;
@@ -269,7 +269,7 @@ int main(int argc, char **argv)
 	if(cfgPort)			 TCPServer::setPort(cfgPort);
 
 	CPUUsage	cpuUsage;
-	Dispatcher	dispatcher(0,cfgServers);
+	Dispatcher	dispatcher(nullptr,cfgServers);
 	string      warnNullDevice;
 
 	initSignals();
diff --git a/soundserver/artsrec.cpp b/soundserver/artsrec.cpp
index c53b0ff..bb53762 100644
--- a/soundserver/artsrec.cpp
+++ b/soundserver/artsrec.cpp
@@ -81,7 +81,7 @@ public:
 	long samplingRate() { return cfgSamplingRate; }
 	long channels()     { return cfgChannels; }
 	long bits()         { return cfgBits; }
-	bool finished()     { return (pfile == 0); }
+	bool finished()     { return (pfile == nullptr); }
 	string title()		{ return "artsrec"; }
 
 	enum { packetCapacity = 4096 };
diff --git a/soundserver/artsshell.cpp b/soundserver/artsshell.cpp
index 10edf93..eb3d4ec 100644
--- a/soundserver/artsshell.cpp
+++ b/soundserver/artsshell.cpp
@@ -126,7 +126,7 @@ execute <module.arts>
 #include <math.h>
 
 bool quiet = false;
-const char *filename = 0;
+const char *filename = nullptr;
 
 using namespace std;
 
@@ -485,7 +485,7 @@ void traderQuery(Arts::SoundServerV2 server, int argc, char **argv)
 	{
 		char *buffer = strdup(argv[i]);
 		char *key = strtok(buffer,"=");
-		char *value = strtok(0,"\n");
+		char *value = strtok(nullptr,"\n");
 
 		query.supports(key, value);
 	}
@@ -613,16 +613,16 @@ int execute(Arts::SoundServerV2 server, const char *filename)
 		fflush(stdout);
 	}
 
-	while(fgets(command, 1024, input) != 0)
+	while(fgets(command, 1024, input))
 	{
-		char **argv = 0;
+		char **argv = nullptr;
 		int argc = 0;
-		while(char *arg = strtok(argc?0:command, " \t\n"))
+		while(char *arg = strtok(argc?nullptr:command, " \t\n"))
 		{
 			argv = (char **)realloc(argv, sizeof(char *)*(argc+1));
 			argv[argc++] = arg;
 		}
-		if (argv != 0)
+		if (argv)
 		{
 			if (executeCommand(server, argc, argv) == -1)
 				cerr << "Invalid command, type 'help' for a list of commands." << endl;
diff --git a/soundserver/cpuusage.cpp b/soundserver/cpuusage.cpp
index 030b54f..ca5e7cd 100644
--- a/soundserver/cpuusage.cpp
+++ b/soundserver/cpuusage.cpp
@@ -65,11 +65,11 @@ public:
 
 /** signal handlers **/
 
-static CPUUsage *cpuUsage = 0;
+static CPUUsage *cpuUsage = nullptr;
 
 extern "C" void cpuUsageCheck(int)
 {
-	if(cpuUsage != 0)
+	if(cpuUsage)
 		cpuUsage->check();
 
 	signal(SIGALRM, cpuUsageCheck);
@@ -97,7 +97,7 @@ CPUUsage::CPUUsage() : d(new CPUUsagePrivate())
 CPUUsage::~CPUUsage()
 {
 	delete d;
-	cpuUsage = 0;
+	cpuUsage = nullptr;
 }
 
 float CPUUsage::usage()
diff --git a/soundserver/crashhandler.cpp b/soundserver/crashhandler.cpp
index 807a4c2..1497c80 100644
--- a/soundserver/crashhandler.cpp
+++ b/soundserver/crashhandler.cpp
@@ -49,13 +49,13 @@
 
 using namespace Arts;
 
-CrashHandler::HandlerType CrashHandler::_crashHandler = 0;
-const char *CrashHandler::appName = 0;
-const char *CrashHandler::appPath = 0;
-const char *CrashHandler::appVersion = 0;
-const char *CrashHandler::programName = 0;
-const char *CrashHandler::bugAddress = 0;
-const char *CrashHandler::crashApp = 0;
+CrashHandler::HandlerType CrashHandler::_crashHandler = nullptr;
+const char *CrashHandler::appName = nullptr;
+const char *CrashHandler::appPath = nullptr;
+const char *CrashHandler::appVersion = nullptr;
+const char *CrashHandler::programName = nullptr;
+const char *CrashHandler::bugAddress = nullptr;
+const char *CrashHandler::crashApp = nullptr;
 
 // This function sets the function which should be responsible for
 // the application crash handling.
@@ -85,7 +85,7 @@ CrashHandler::setCrashHandler (HandlerType handler)
   sigaddset(&mask, SIGABRT);
 #endif
 
-  sigprocmask(SIG_UNBLOCK, &mask, 0);
+  sigprocmask(SIG_UNBLOCK, &mask, nullptr);
 
   _crashHandler = handler;
 }
diff --git a/soundserver/fileinputstream_impl.cpp b/soundserver/fileinputstream_impl.cpp
index ccf12ce..f5d1dd9 100644
--- a/soundserver/fileinputstream_impl.cpp
+++ b/soundserver/fileinputstream_impl.cpp
@@ -54,7 +54,7 @@ public:
 	{
 		fd = -1;
 		position = 0;
-		data = 0;
+		data = nullptr;
 		age = 0;
 		_size = 0;
 	}
@@ -67,10 +67,10 @@ public:
 
 	void close()
 	{
-		if(data != 0)
+		if(data)
 		{
 			munmap((char*)data, _size);
-			data = 0;
+			data = nullptr;
 		}
 
 		if(fd >= 0)
@@ -91,8 +91,8 @@ public:
 		_size = lseek(fd, 0, SEEK_END);
     	lseek(fd, 0, SEEK_SET);
 
-    	data = (mcopbyte *)mmap(0, _size, PROT_READ, MAP_SHARED, fd, 0);
-    	if(data == 0)
+    	data = (mcopbyte *)mmap(nullptr, _size, PROT_READ, MAP_SHARED, fd, 0);
+    	if(!data)
 		{
 			close();
 			return false;
diff --git a/soundserver/samplestorage_impl.cpp b/soundserver/samplestorage_impl.cpp
index b7e07f1..05e1bcb 100644
--- a/soundserver/samplestorage_impl.cpp
+++ b/soundserver/samplestorage_impl.cpp
@@ -51,7 +51,7 @@ public:
 		if(file)
 		{
 			fclose(file);
-			file = 0;
+			file = nullptr;
 		}
 		unlink(_filename.c_str());
 	}
@@ -62,16 +62,16 @@ public:
 
 	void write(const vector<mcopbyte>& data)
 	{
-		arts_return_if_fail(file != 0);
+		arts_return_if_fail(file);
 
 		fwrite(&data[0],1,data.size(),file);
 	}
 	void finish()
 	{
-		arts_return_if_fail(file != 0);
+		arts_return_if_fail(file);
 
 		fclose(file);
-		file = 0;
+		file = nullptr;
 		_completed = true;
 	}
 };
@@ -104,7 +104,7 @@ public:
 		if(!dir) return;
 
 		struct dirent *de;
-		while((de = readdir(dir)) != 0)
+		while((de = readdir(dir)))
 		{
 			string currentEntry = directory + "/" + de->d_name;
 
diff --git a/soundserver/soundserverv2_impl.cpp b/soundserver/soundserverv2_impl.cpp
index 105f858..d4002dd 100644
--- a/soundserver/soundserverv2_impl.cpp
+++ b/soundserver/soundserverv2_impl.cpp
@@ -215,7 +215,7 @@ static void clearDirectory(const string& directory)
 	if(!dir) return;
 
 	struct dirent *de;
-	while((de = readdir(dir)) != 0)
+	while((de = readdir(dir)))
 	{
 		string currentEntry = directory + "/" + de->d_name;
 
@@ -261,7 +261,7 @@ static void doTypeIndex(string dir, string prefix, ModuleDef& module)
 void SoundServerV2_impl::checkNewObjects()
 {
 	const char *home = getenv("HOME");
-	arts_return_if_fail(home != 0);
+	arts_return_if_fail(home);
 
 	string dir = home + string("/.mcop/trader-cache");
 	string dataVersionFileName = dir + "/cache-data-version";
diff --git a/soundserver/wavplayobject_impl.cpp b/soundserver/wavplayobject_impl.cpp
index 8f5f2f1..d7b58c9 100644
--- a/soundserver/wavplayobject_impl.cpp
+++ b/soundserver/wavplayobject_impl.cpp
@@ -49,7 +49,7 @@ public:
 	/*
 	 * construction, destruction
 	 */
-	WavPlayObject_impl() :wav(0), flpos(0.0), _state(posIdle)
+	WavPlayObject_impl() :wav(nullptr), flpos(0.0), _state(posIdle)
 	{
 		arts_debug("WavPlayObject_impl");
 	}
@@ -67,7 +67,7 @@ public:
 	bool loadMedia(const string &filename) {
 		arts_debug("Wav: loadMedia %s", filename.c_str());
 		wav = CachedWav::load(Cache::the(), filename);
-		return (wav != 0);
+		return (wav != nullptr);
 	}
 
 	/*
-- 
cgit v1.2.3

