From: Bruno Haible Date: Mon, 27 Nov 2006 12:36:42 +0000 (+0000) Subject: Add operator==. X-Git-Tag: v0.17~637 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=63eb88048e86ec314d1b02a2c45e87ab4b699afe;p=thirdparty%2Fgettext.git Add operator==. --- diff --git a/gnulib-local/ChangeLog b/gnulib-local/ChangeLog index bf1bc462b..02450cd6a 100644 --- a/gnulib-local/ChangeLog +++ b/gnulib-local/ChangeLog @@ -1,3 +1,8 @@ +2006-11-26 Bruno Haible + + * build-aux/moopp: In the C++ class definition, add 'operator ==', + 'operator !=' members, and add constructors for downcasting. + 2006-11-25 Bruno Haible * lib/glibconfig_.h (g_return_if_fail, g_return_val_if_fail, diff --git a/gnulib-local/build-aux/moopp b/gnulib-local/build-aux/moopp index 4093c57f9..4fa445570 100755 --- a/gnulib-local/build-aux/moopp +++ b/gnulib-local/build-aux/moopp @@ -368,6 +368,9 @@ func_start_creation "$newfile" done # The 'operator void *' is needed to avoid ambiguous conversion chains. echo " operator void * () { return _pointer; }" + # The 'operator ==' and 'operator !=' are needed to avoid ambiguous comparisons with NULL. + echo " bool operator == (const void *p) { return _pointer == p; }" + echo " bool operator != (const void *p) { return _pointer != p; }" atroot=yes for classname in $all_superclasses; do if test -n "$atroot"; then @@ -375,7 +378,9 @@ func_start_creation "$newfile" else repclassalias="${classname}_representation" fi - echo " operator ${classname}_t () { return (${classname}_t) ($struct ${repclassalias} *) _pointer; }" + echo " operator ${classname}_t () { return (${classname}_t) (struct ${repclassalias} *) _pointer; }" + # The 'explicit' constructors allow to downcast. + echo " explicit ${main_classname}_t (${classname}_t x) : _pointer ((struct ${main_repclassalias} *) (void *) x) {}" atroot= done echo "};"