From 0b2799e83ea0b52939bfcddf49a19cf2763a2993 Mon Sep 17 00:00:00 2001
From: Sebastião Guerra <sebastiao.luiz.guerra@gmail.com>
Date: Sat, 3 Oct 2026 17:48:08 -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>
---
 PerlTQt/TQt.xs       | 92 ++++++++++++++++++++++++++--------------------------
 PerlTQt/handlers.cpp | 76 +++++++++++++++++++++----------------------
 PerlTQt/perlqt.h     |  4 +--
 PerlTQt/smokeperl.h  |  6 ++--
 smoke/smoke.h        |  2 +-
 5 files changed, 90 insertions(+), 90 deletions(-)

diff --git a/PerlTQt/TQt.xs b/PerlTQt/TQt.xs
index 6ff9437..7800ab5 100644
--- a/PerlTQt/TQt.xs
+++ b/PerlTQt/TQt.xs
@@ -47,17 +47,17 @@ extern void init_qt_Smoke();
 
 int do_debug = qtdb_none;
 
-HV *pointer_map = 0;
-SV *sv_qapp = 0;
+HV *pointer_map = nullptr;
+SV *sv_qapp = nullptr;
 int object_count = 0;
-void *_current_object = 0;    // TODO: ask myself if this is stupid
+void *_current_object = nullptr;    // TODO: ask myself if this is stupid
 
 bool temporary_virtual_function_success = false;
 
-static TQAsciiDict<Smoke::Index> *methcache = 0;
-static TQAsciiDict<Smoke::Index> *classcache = 0;
+static TQAsciiDict<Smoke::Index> *methcache = nullptr;
+static TQAsciiDict<Smoke::Index> *classcache = nullptr;
 
-SV *sv_this = 0;
+SV *sv_this = nullptr;
 
 Smoke::Index _current_object_class = 0;
 Smoke::Index _current_method = 0;
@@ -101,7 +101,7 @@ void install_handlers(TypeHandler *);
 
 void *sv_to_ptr(SV *sv) {  // ptr on success, null on fail
     smokeperl_object *o = sv_obj_info(sv);
-    return o ? o->ptr : 0;
+    return o ? o->ptr : nullptr;
 }
 
 bool isTQObject(Smoke *smoke, Smoke::Index classId) {
@@ -145,12 +145,12 @@ SV *getPointerObject(void *ptr) {
     SV **svp = hv_fetch(hv, key, len, 0);
     if(!svp){
 	 SvREFCNT_dec(keysv);
-	 return 0;
+	 return nullptr;
     }
     if(!SvOK(*svp)){
 	hv_delete(hv, key, len, G_DISCARD);
 	SvREFCNT_dec(keysv);
-	return 0;
+	return nullptr;
     }
     return *svp;
 }
@@ -277,7 +277,7 @@ public:
     }
     bool cleanup() { return false; }   // is this right?
     VirtualMethodCall(Smoke *smoke, Smoke::Index meth, Smoke::Stack stack, SV *obj, GV *gv) :
-	_smoke(smoke), _method(meth), _stack(stack), _gv(gv), _cur(-1), _sp(0), _called(false) {
+	_smoke(smoke), _method(meth), _stack(stack), _gv(gv), _cur(-1), _sp(nullptr), _called(false) {
 	dSP;
 	ENTER;
 	SAVETMPS;
@@ -508,7 +508,7 @@ public:
 			p = si->s_voidp;
 			break;
 		      default:
-			p = 0;
+			p = nullptr;
 			break;
 		    }
 		    static_QUType_ptr.set(po, p);
@@ -693,8 +693,8 @@ public:
 	if(!o || !o->ptr) {
 	    return;
 	}
-        unmapPointer(o, o->classId, 0);
-	o->ptr = 0;
+        unmapPointer(o, o->classId, nullptr);
+	o->ptr = nullptr;
     }
     bool callMethod(Smoke::Index method, void *ptr, Smoke::Stack args, bool isAbstract) {
 	SV *obj = getPointerObject(ptr);
@@ -849,7 +849,7 @@ XS(XS_attr) {
     dXSARGS;
     char *key = GvNAME(CvGV(cv));
     U32 klen = strlen(key);
-    SV **svp = 0;
+    SV **svp = nullptr;
     if(SvROK(sv_this) && SvTYPE(SvRV(sv_this)) == SVt_PVHV) {
 	HV *hv = (HV*)SvRV(sv_this);
 	svp = hv_fetch(hv, key, klen, 1);
@@ -866,7 +866,7 @@ XS(XS_super) {
     dXSARGS;
     char *key = "SUPER";
     U32 klen = strlen(key);
-    SV **svp = 0;
+    SV **svp = nullptr;
     if(SvROK(sv_this) && SvTYPE(SvRV(sv_this)) == SVt_PVHV) {
 	HV *cs = (HV*)CopSTASH(PL_curcop);
         if(!cs) XSRETURN_UNDEF;
@@ -895,7 +895,7 @@ XS(XS_AUTOLOAD) {
     dXSARGS;
     SV *sv = get_sv("TQt::AutoLoad::AUTOLOAD", TRUE);
     char *package = SvPV_nolen(sv);
-    char *method = 0;
+    char *method = nullptr;
     for(char *s = package; *s ; s++)
 	if(*s == ':') method = s;
     if(!method) XSRETURN_NO;
@@ -921,7 +921,7 @@ XS(XS_AUTOLOAD) {
         warn("In XS Autoload for %s::%s()\n", package, method);
 
     // check for user-defined methods in the REAL stash; skip prefix
-    GV *gv = 0;
+    GV *gv = nullptr;
     if(avoid_fetchmethod)
 	avoid_fetchmethod = false;
     else
@@ -982,7 +982,7 @@ XS(XS_AUTOLOAD) {
         }
         const char *key = "has been hidden";
         U32 klen = 15;
-        SV **svp = 0;
+        SV **svp = nullptr;
         if(SvROK(sv_this) && SvTYPE(SvRV(sv_this)) == SVt_PVHV) {
 	    HV *hv = (HV*)SvRV(sv_this);
 	    svp = hv_fetch(hv, key, klen, 0);
@@ -1094,7 +1094,7 @@ XS(XS_AUTOLOAD) {
                     _current_object = o->ptr;
                     _current_object_class = o->classId;
                 } else {
-                    _current_object = 0;
+                    _current_object = nullptr;
                 }
         }
         // honor debugging channels
@@ -1135,16 +1135,16 @@ MocArgument *getmetainfo(GV *gv, const char *name, int &offset, int &index, int
 
     // $meta = $stash->{META}
     SV **svp = hv_fetch(stash, "META", 4, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     HV *hv = GvHV((GV*)*svp);
-    if(!hv) return 0;
+    if(!hv) return nullptr;
 
     // $metaobject = $meta->{object}
     // aka. Class->staticMetaObject
     svp = hv_fetch(hv, "object", 6, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     smokeperl_object *ometa = sv_obj_info(*svp);
-    if(!ometa) return 0;
+    if(!ometa) return nullptr;
     TQMetaObject *metaobject = (TQMetaObject*)ometa->ptr;
 
     offset = metaobject->signalOffset();
@@ -1152,28 +1152,28 @@ MocArgument *getmetainfo(GV *gv, const char *name, int &offset, int &index, int
     // $signals = $meta->{signal}
     U32 len = strlen(name);
     svp = hv_fetch(hv, name, len, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     HV *signalshv = (HV*)SvRV(*svp);
 
     // $signal = $signals->{$signalname}
     len = strlen(signalname);
     svp = hv_fetch(signalshv, signalname, len, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     HV *signalhv = (HV*)SvRV(*svp);
 
     // $index = $signal->{index}
     svp = hv_fetch(signalhv, "index", 5, 0);
-    if(!svp) return 0;;
+    if(!svp) return nullptr;;
     index = SvIV(*svp);
 
     // $argcnt = $signal->{argcnt}
     svp = hv_fetch(signalhv, "argcnt", 6, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     argcnt = SvIV(*svp);
 
     // $mocargs = $signal->{mocargs}
     svp = hv_fetch(signalhv, "mocargs", 7, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     MocArgument *args = (MocArgument*)SvIV(*svp);
 
     return args;
@@ -1184,42 +1184,42 @@ MocArgument *getslotinfo(GV *gv, int id, char *&slotname, int &index, int &argcn
 
     // $meta = $stash->{META}
     SV **svp = hv_fetch(stash, "META", 4, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     HV *hv = GvHV((GV*)*svp);
-    if(!hv) return 0;
+    if(!hv) return nullptr;
 
     // $metaobject = $meta->{object}
     // aka. Class->staticMetaObject
     svp = hv_fetch(hv, "object", 6, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     smokeperl_object *ometa = sv_obj_info(*svp);
-    if(!ometa) return 0;
+    if(!ometa) return nullptr;
     TQMetaObject *metaobject = (TQMetaObject*)ometa->ptr;
 
     int offset = isSignal ? metaobject->signalOffset() : metaobject->slotOffset();
 
     index = id - offset;   // where we at
     // FIXME: make slot inheritance work
-    if(index < 0) return 0;
+    if(index < 0) return nullptr;
     // $signals = $meta->{signal}
     const char *key = isSignal ? "signals" : "slots";
     svp = hv_fetch(hv, key, strlen(key), 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     AV *signalsav = (AV*)SvRV(*svp);
     svp = av_fetch(signalsav, index, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     HV *signalhv = (HV*)SvRV(*svp);
     // $argcnt = $signal->{argcnt}
     svp = hv_fetch(signalhv, "argcnt", 6, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     argcnt = SvIV(*svp);
     // $mocargs = $signal->{mocargs}
     svp = hv_fetch(signalhv, "mocargs", 7, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     MocArgument *args = (MocArgument*)SvIV(*svp);
 
     svp = hv_fetch(signalhv, "name", 4, 0);
-    if(!svp) return 0;
+    if(!svp) return nullptr;
     slotname = SvPV_nolen(*svp);
 
     return args;
@@ -1648,7 +1648,7 @@ make_TQUParameter(name, type, extra, inout)
 	p->type = &static_QUType_ptr;
     // Lacking support for several types. Evil.
     p->inOut = inout;
-    p->typeExtra = 0;
+    p->typeExtra = nullptr;
     RETVAL = (void*)p;
     OUTPUT:
     RETVAL
@@ -1676,7 +1676,7 @@ make_TQUMethod(name, params)
     m->name = new char[strlen(name) + 1];	// this too
     strcpy((char*)m->name, name);
     m->count = 0;
-    m->parameters = 0;
+    m->parameters = nullptr;
     if(SvOK(params) && SvRV(params)) {
 	AV *av = (AV*)SvRV(params);
 	m->count = av_len(av) + 1;
@@ -1702,7 +1702,7 @@ void *
 make_TQMetaData_tbl(list)
     SV *list
     CODE:
-    RETVAL = 0;
+    RETVAL = nullptr;
     if(SvOK(list) && SvRV(list)) {
 	AV *av = (AV*)SvRV(list);
 	int count = av_len(av) + 1;
@@ -1736,9 +1736,9 @@ make_metaObject(className, parent, slot_tbl, slot_count, signal_tbl, signal_coun
 	className, (TQMetaObject*)po->ptr,
 	(const TQMetaData*)slot_tbl, slot_count,	// slots
 	(const TQMetaData*)signal_tbl, signal_count,	// signals
-	0, 0,	// properties
-	0, 0,	// enums
-	0, 0);
+	nullptr, 0,	// properties
+	nullptr, 0,	// enums
+	nullptr, 0);
 
     // this object-creation code is so, so wrong here
     HV *hv = newHV();
@@ -1825,7 +1825,7 @@ mapObject(obj)
     if(!c.hasVirtual() ) {
 	XSRETURN_EMPTY;
    }
-    mapPointer(obj, o, pointer_map, o->classId, 0);
+    mapPointer(obj, o, pointer_map, o->classId, nullptr);
 
 bool
 isTQObject(obj)
@@ -1955,7 +1955,7 @@ findAllMethods(classid, ...)
     RETVAL=newHV();
     if(SvIOK(classid)) {
         Smoke::Index c = (Smoke::Index) SvIV(classid);
-        char * pat = 0L;
+        char * pat = nullptr;
         if(items > 1 && SvPOK(ST(1)))
             pat = SvPV_nolen(ST(1));
         Smoke::Index imax = qt_Smoke->numMethodMaps;
diff --git a/PerlTQt/handlers.cpp b/PerlTQt/handlers.cpp
index 114cf5b..3c6014c 100644
--- a/PerlTQt/handlers.cpp
+++ b/PerlTQt/handlers.cpp
@@ -46,8 +46,8 @@
 #endif
 
 extern HV* pointer_map;
-static TQIntDict<Smoke::Index> *dtorcache= 0;
-static TQIntDict<Smoke::Index> *cctorcache= 0;
+static TQIntDict<Smoke::Index> *dtorcache= nullptr;
+static TQIntDict<Smoke::Index> *cctorcache= nullptr;
 
 int smokeperl_free(pTHX_ SV *sv, MAGIC *mg) {
     smokeperl_object *o = (smokeperl_object*)mg->mg_ptr;
@@ -57,7 +57,7 @@ int smokeperl_free(pTHX_ SV *sv, MAGIC *mg) {
         if(do_debug && (do_debug & qtdb_gc)) fprintf(stderr, "Deleting (%s*)%p\n", className, o->ptr);
         SmokeClass sc(o->smoke, o->classId);
 	if(sc.hasVirtual()) 
-            unmapPointer(o, o->classId, 0);
+            unmapPointer(o, o->classId, nullptr);
 	Smoke::Index *pmeth = dtorcache->find( o->classId );
 	if(pmeth) {
 		Smoke::Method &m = o->smoke->methods[o->smoke->methodMaps[*pmeth].method];
@@ -83,7 +83,7 @@ int smokeperl_free(pTHX_ SV *sv, MAGIC *mg) {
     return 0;
 }
 
-struct mgvtbl vtbl_smoke = { 0, 0, 0, 0, smokeperl_free };
+struct mgvtbl vtbl_smoke = { nullptr, nullptr, nullptr, nullptr, smokeperl_free };
 
 bool matches_arg(Smoke *smoke, Smoke::Index meth, Smoke::Index argidx, const char *argtype) {
     Smoke::Index *arg = smoke->argumentList + smoke->methods[meth].args + argidx;
@@ -112,7 +112,7 @@ void *construct_copy(smokeperl_object *o) {
 
 	if(!ccMeth) {
 	    cctorcache->insert(o->classId, new Smoke::Index(0));
-	    return 0;
+	    return nullptr;
         }
 	Smoke::Index method =  o->smoke->methodMaps[ccMeth].method;
 	if(method > 0) {
@@ -120,7 +120,7 @@ void *construct_copy(smokeperl_object *o) {
 	    if(!matches_arg(o->smoke, method, 0, ccArg)) {
 		delete[] ccArg;
 		cctorcache->insert(o->classId, new Smoke::Index(0));
-		return 0;
+		return nullptr;
 	    }
 	    delete[] ccArg;
 	    ccMeth = method;
@@ -136,21 +136,21 @@ void *construct_copy(smokeperl_object *o) {
 	    ccMeth = o->smoke->ambiguousMethodList[i];
 	    if(!ccMeth) {
 		cctorcache->insert(o->classId, new Smoke::Index(0));
-		return 0;
+		return nullptr;
 	    }
 	}
 	cctorcache->insert(o->classId, new Smoke::Index(ccMeth));
     } else {
 	ccMeth = *pccMeth;
 	if(!ccMeth)
-	    return 0;
+	    return nullptr;
     }
     // Okay, ccMeth is the copy constructor. Time to call it.
     Smoke::StackItem args[2];
-    args[0].s_voidp = 0;
+    args[0].s_voidp = nullptr;
     args[1].s_voidp = o->ptr;
     Smoke::ClassFn fn = o->smoke->classes[o->classId].classFn;
-    (*fn)(o->smoke->methods[ccMeth].method, 0, args);
+    (*fn)(o->smoke->methods[ccMeth].method, nullptr, args);
     return args[0].s_voidp;
 }
 
@@ -322,7 +322,7 @@ static void marshall_basetype(Marshall *m) {
                         warn("References can't be null or undef\n");
                         m->unsupported();
                     }
-		    m->item().s_class = 0;
+		    m->item().s_class = nullptr;
 		    break;
 		}
 		void *ptr = o->ptr;
@@ -382,7 +382,7 @@ static void marshall_basetype(Marshall *m) {
 		sv_setsv_mg(m->var(), obj);
 		SmokeClass sc( m->type() );
 		if( sc.hasVirtual() )
-		    mapPointer(obj, &o, pointer_map, o.classId, 0);
+		    mapPointer(obj, &o, pointer_map, o.classId, nullptr);
 		SvREFCNT_dec(obj);
 	    }
 	    break;
@@ -408,7 +408,7 @@ static void marshall_charP(Marshall *m) {
 	{
 	    SV *sv = m->var();
 	    if(!SvOK(sv)) {
-		m->item().s_voidp = 0;
+		m->item().s_voidp = nullptr;
 		break;
 	    }
 	    if(m->cleanup())
@@ -445,8 +445,8 @@ void marshall_ucharP(Marshall *m) {
       case Marshall::FromSV:
 	{
 	    SV* sv = m->var();
-	    TQByteArray *s = 0;
-	    MAGIC* mg = 0;
+	    TQByteArray *s = nullptr;
+	    MAGIC* mg = nullptr;
 	    bool hasMagic = false;
 	    if(SvOK(sv)) {
 	        if( SvTYPE(sv) == SVt_PVMG  && (mg = mg_find(sv, PERL_MAGIC_tiedscalar))
@@ -468,7 +468,7 @@ void marshall_ucharP(Marshall *m) {
             } else {
 		if( !m->type().isConst() ) {
 		    if(SvREADONLY(sv) && m->type().isPtr()) {
-			m->item().s_voidp = 0;
+			m->item().s_voidp = nullptr;
 			break;
 		    }
 		    s = new TQByteArray(0);
@@ -499,8 +499,8 @@ static void marshall_TQString(Marshall *m) {
       case Marshall::FromSV:
 	{
 	    SV* sv = m->var();
-	    TQString *s = 0;
-	    MAGIC* mg = 0;
+	    TQString *s = nullptr;
+	    MAGIC* mg = nullptr;
 	    bool hasMagic = false;
 	    if(SvOK(sv) || m->type().isStack()) {
 	        if( SvTYPE(sv) == SVt_PVMG  && (mg = mg_find(sv, PERL_MAGIC_tiedscalar))
@@ -525,7 +525,7 @@ static void marshall_TQString(Marshall *m) {
             } else {
 		if(!m->type().isConst()) {
 		    if(SvREADONLY(sv) && m->type().isPtr()) {
-		        m->item().s_voidp = 0;
+		        m->item().s_voidp = nullptr;
 		        break;    
 		    }
 		    s = new TQString;
@@ -577,8 +577,8 @@ static void marshall_TQByteArray(Marshall *m) {
       case Marshall::FromSV:
 	{
 	    SV* sv = m->var();
-	    TQByteArray *s = 0;
-	    MAGIC* mg = 0;
+	    TQByteArray *s = nullptr;
+	    MAGIC* mg = nullptr;
 	    bool hasMagic = false;
 	    if(SvOK(sv) || m->type().isStack()) {
 	        if( SvTYPE(sv) == SVt_PVMG  && (mg = mg_find(sv, PERL_MAGIC_tiedscalar))
@@ -601,7 +601,7 @@ static void marshall_TQByteArray(Marshall *m) {
             } else {
 		if( !m->type().isConst() ) {
 		    if(SvREADONLY(sv) && m->type().isPtr()) {
-			m->item().s_voidp = 0;
+			m->item().s_voidp = nullptr;
 			break;
 		    }
 		    s = new TQByteArray(0);
@@ -657,14 +657,14 @@ static const char *not_ascii(const char *s, uint &len)
         r = true;
         break;
       }
-    return r ? s : 0L;
+    return r ? s : nullptr;
 }
 
 static void marshall_TQCString(Marshall *m) {
     switch(m->action()) {
       case Marshall::FromSV:
 	{
-	    TQCString *s = 0;
+	    TQCString *s = nullptr;
 	    if(SvOK(m->var()) || m->type().isStack())
 		s = new TQCString(SvPV_nolen(m->var()));
 	    m->item().s_voidp = s;
@@ -712,7 +712,7 @@ static void marshall_TQCOORD_array(Marshall *m) {
 	    SV *sv = m->var();
 	    if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV ||
 		av_len((AV*)SvRV(sv)) < 0) {
-		m->item().s_voidp = 0;
+		m->item().s_voidp = nullptr;
 		break;
 	    }
 	    AV *av = (AV*)SvRV(sv);
@@ -738,7 +738,7 @@ static void marshall_intR(Marshall *m) {
 	    SV *sv = m->var();
 	    if(m->type().isPtr() &&		// is pointer
 	       !SvOK(sv) && SvREADONLY(sv)) {   // and real undef
-		m->item().s_voidp = 0;		// pass null pointer
+		m->item().s_voidp = nullptr;		// pass null pointer
 		break;
 	    }
 	    if(m->cleanup()) {
@@ -780,7 +780,7 @@ static void marshall_boolR(Marshall *m) {
 	    SV *sv = m->var();
 	    if(m->type().isPtr() &&		// is pointer
 	       !SvOK(sv) && SvREADONLY(sv)) {   // and real undef
-		m->item().s_voidp = 0;		// pass null pointer
+		m->item().s_voidp = nullptr;		// pass null pointer
 		break;
 	    }
 	    if(m->cleanup()) {
@@ -822,7 +822,7 @@ static void marshall_charP_array(Marshall *m) {
 	    SV *sv = m->var();
 	    if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV ||
 		av_len((AV*)SvRV(sv)) < 0) {
-		m->item().s_voidp = 0;
+		m->item().s_voidp = nullptr;
 		break;
 	    }
 
@@ -844,7 +844,7 @@ static void marshall_charP_array(Marshall *m) {
 		strncpy(argv[i], s, len);
 		argv[i][len] = 0;	// null terminazi? yes
 	    }
-	    argv[i] = 0;
+	    argv[i] = nullptr;
 	    m->item().s_voidp = argv;
 	    m->next();
 	    if(m->cleanup()) {
@@ -869,7 +869,7 @@ static void marshall_TQStringList(Marshall *m) {
 	    SV *sv = m->var();
 	    if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV ||
 		av_len((AV*)SvRV(sv)) < 0) {
-		m->item().s_voidp = 0;
+		m->item().s_voidp = nullptr;
 		break;
 	    }
 	    AV *list = (AV*)SvRV(sv);
@@ -960,7 +960,7 @@ static void marshall_TQValueListInt(Marshall *m) {
 	    SV *sv = m->var();
 	    if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV ||
 		av_len((AV*)SvRV(sv)) < 0) {
-		m->item().s_voidp = 0;
+		m->item().s_voidp = nullptr;
 		break;
 	    }
 	    AV *list = (AV*)SvRV(sv);
@@ -1027,7 +1027,7 @@ void marshall_voidP(Marshall *m) {
 	    if(SvROK(sv) && SvRV(sv) && SvOK(SvRV(sv)))
 		m->item().s_voidp = (void*)SvIV(SvRV(m->var()));
 	    else
-		m->item().s_voidp = 0;
+		m->item().s_voidp = nullptr;
 	}
 	break;
       case Marshall::ToSV:
@@ -1049,14 +1049,14 @@ void marshall_TQRgb_array(Marshall *m) {
       case Marshall::FromSV:
 	{
 	    SV* sv = m->var();
-	    TQRgb* s = 0;
-	    MAGIC* mg = 0;
+	    TQRgb* s = nullptr;
+	    MAGIC* mg = nullptr;
 	    if( SvOK(sv) && SvTYPE(sv) == SVt_PVMG  && (mg = mg_find(sv, PERL_MAGIC_tiedscalar))
                              && sv_derived_from(mg->mg_obj, "TQt::_internal::TQRgbStar") ) {
 		s = (TQRgb*)SvIV((SV*)SvRV(mg->mg_obj));
             } else if(!SvROK(sv) || SvREADONLY(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV ||
 		av_len((AV*)SvRV(sv)) < 0) {
-		m->item().s_voidp = 0;
+		m->item().s_voidp = nullptr;
 		break;
 	    } else {
 	        AV *list = (AV*)SvRV(sv);
@@ -1135,7 +1135,7 @@ static void marshall_ ## FNAME (Marshall *m) {
                     warn("References can't be null or undef\n");                          \
                     m->unsupported();                                                     \
                 }                                                                         \
-                m->item().s_voidp = 0;                                                    \
+                m->item().s_voidp = nullptr;                                                    \
                 break;                                                                    \
             }                                                                             \
             AV *list = (AV*)SvRV(sv);                                                     \
@@ -1306,10 +1306,10 @@ TypeHandler TQt_handlers[] = {
     { "TQPtrList<TQNetworkOperation>", marshall_TQPtrListTQNetworkOperation },
     { "TQPtrList<TQNetworkOperation>*", marshall_TQPtrListTQNetworkOperation },
     { "TQPtrList<TQNetworkOperation>&", marshall_TQPtrListTQNetworkOperation },
-    { 0, 0 }
+    { nullptr, nullptr }
 };
 
-static HV *type_handlers = 0;
+static HV *type_handlers = nullptr;
 
 void install_handlers(TypeHandler *h) {
     if(!type_handlers) type_handlers = newHV();
diff --git a/PerlTQt/perlqt.h b/PerlTQt/perlqt.h
index 7eb240a..c1dfb07 100644
--- a/PerlTQt/perlqt.h
+++ b/PerlTQt/perlqt.h
@@ -40,12 +40,12 @@ extern struct mgvtbl vtbl_smoke;
 
 inline smokeperl_object *sv_obj_info(SV *sv) {  // ptr on success, null on fail
     if(!sv || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVHV)
-	return 0;
+	return nullptr;
     SV *obj = SvRV(sv);
     MAGIC *mg = mg_find(obj, '~');
     if(!mg || mg->mg_virtual != &vtbl_smoke) {
 	// FIXME: die or something?
-	return 0;
+	return nullptr;
     }
     smokeperl_object *o = (smokeperl_object*)mg->mg_ptr;
     return o;
diff --git a/PerlTQt/smokeperl.h b/PerlTQt/smokeperl.h
index 21e8298..4071bad 100644
--- a/PerlTQt/smokeperl.h
+++ b/PerlTQt/smokeperl.h
@@ -28,7 +28,7 @@ class SmokeType {
     Smoke *_smoke;
     Smoke::Index _id;
 public:
-    SmokeType() : _t(0), _smoke(0), _id(0) {}
+    SmokeType() : _t(nullptr), _smoke(nullptr), _id(0) {}
     SmokeType(Smoke *s, Smoke::Index i) : _smoke(s), _id(i) {
 	if(_id < 0 || _id > _smoke->numTypes) _id = 0;
 	_t = _smoke->types + _id;
@@ -150,7 +150,7 @@ public:
     bool isStatic() const { return flags() & Smoke::mf_static; }
     bool isConst() const { return flags() & Smoke::mf_const; }
 
-    void call(Smoke::Stack args, void *ptr = 0) const {
+    void call(Smoke::Stack args, void *ptr = nullptr) const {
 	Smoke::ClassFn fn = c().classFn();
 	(*fn)(method(), ptr, args);
     }
@@ -228,7 +228,7 @@ public:
 class SmokePerl {
     void *future_extension;
 public:
-    SmokePerl() : future_extension(0) {}
+    SmokePerl() : future_extension(nullptr) {}
 
     // don't need this, we're only defining an interface
     virtual ~SmokePerl() = 0;
diff --git a/smoke/smoke.h b/smoke/smoke.h
index cf48f76..b973d94 100644
--- a/smoke/smoke.h
+++ b/smoke/smoke.h
@@ -217,7 +217,7 @@ public:
 		ambiguousMethodList(_ambiguousMethodList),
 		castFn(_castFn),
 
-		binding(0)
+		binding(nullptr)
 		{}
 
     inline void *cast(void *ptr, Index from, Index to) {
-- 
cgit v1.2.3

