Hello community,

here is the log from the commit of package qqwing for openSUSE:Factory checked 
in at 2015-09-08 17:39:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qqwing (Old)
 and      /work/SRC/openSUSE:Factory/.qqwing.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qqwing"

Changes:
--------
--- /work/SRC/openSUSE:Factory/qqwing/qqwing.changes    2014-08-25 
11:06:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.qqwing.new/qqwing.changes       2015-09-08 
17:44:43.000000000 +0200
@@ -1,0 +2,15 @@
+Mon May 25 09:12:42 UTC 2015 - zai...@opensuse.org
+
+- Update to version 1.3.4:
+  + Added hasUniqueSolution() method to the API.
+- Changes from version 1.3.3:
+  + Java API improvements.
+- Changes from version 1.3.2:
+  + debian directory included in tar.gz download.
+- Changes from version 1.3.1:
+  + Fix library version number.
+- Changes from version 1.3.0:
+  + Multi-threaded Java version.
+  + Revamp of website and documentation. 
+
+-------------------------------------------------------------------

Old:
----
  qqwing-1.2.0.tar.gz

New:
----
  qqwing-1.3.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qqwing.spec ++++++
--- /var/tmp/diff_new_pack.yFQWwu/_old  2015-09-08 17:44:44.000000000 +0200
+++ /var/tmp/diff_new_pack.yFQWwu/_new  2015-09-08 17:44:44.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package qqwing
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
 # Copyright (c) 2014 Dominique Leuenberger, Amsterdam, The Netherlands.
 #
 # All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
 
 
 Name:           qqwing
-Version:        1.2.0
+Version:        1.3.4
 Release:        0
 Summary:        Sudoku solver and generator
 License:        GPL-2.0+
@@ -69,7 +69,8 @@
 
 %prep
 %setup -q
-%patch0 -p1
+# Disable, needs rebase
+#patch0 -p1
 
 %build
 %configure

++++++ qqwing-1.2.0.tar.gz -> qqwing-1.3.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/Makefile.am new/qqwing-1.3.4/Makefile.am
--- old/qqwing-1.2.0/Makefile.am        2014-08-23 15:11:38.000000000 +0200
+++ new/qqwing-1.3.4/Makefile.am        2015-04-18 02:55:34.000000000 +0200
@@ -1,4 +1,5 @@
 ACLOCAL_AMFLAGS = -I m4
+EXTRA_DIST = debian
 
 include_HEADERS = qqwing.hpp
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/Makefile.in new/qqwing-1.3.4/Makefile.in
--- old/qqwing-1.2.0/Makefile.in        2014-08-23 15:11:45.000000000 +0200
+++ new/qqwing-1.3.4/Makefile.in        2015-04-18 02:55:42.000000000 +0200
@@ -373,6 +373,7 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ACLOCAL_AMFLAGS = -I m4
+EXTRA_DIST = debian
 include_HEADERS = qqwing.hpp
 lib_LTLIBRARIES = libqqwing.la
 libqqwing_la_SOURCES = qqwing.cpp qqwing.hpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/README new/qqwing-1.3.4/README
--- old/qqwing-1.2.0/README     2014-08-23 15:11:38.000000000 +0200
+++ new/qqwing-1.3.4/README     2015-04-18 02:55:34.000000000 +0200
@@ -1,4 +1,4 @@
-See: http://ostermiller.org/qqwing/
+See: http://qqwing.com/
 
 qqwing <options>
 Sudoku solver and generator.
@@ -25,7 +25,7 @@
   --one-line           Print puzzles on one line of 81 characters
   --compact            Print puzzles on 9 lines of 9 characters
   --readable           Print puzzles in human readable form (default)
-  --csv                Ouput CSV format with one line puzzles
+  --csv                Output CSV format with one line puzzles
   --help               Print this message
   --about              Author and license information
   --version            Display current version number
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/aclocal.m4 new/qqwing-1.3.4/aclocal.m4
--- old/qqwing-1.2.0/aclocal.m4 2014-08-23 15:11:43.000000000 +0200
+++ new/qqwing-1.3.4/aclocal.m4 2015-04-18 02:55:40.000000000 +0200
@@ -573,7 +573,8 @@
 END
     AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
   fi
-fi])
+fi
+])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/config.guess 
new/qqwing-1.3.4/config.guess
--- old/qqwing-1.2.0/config.guess       2014-08-23 15:11:45.000000000 +0200
+++ new/qqwing-1.3.4/config.guess       2015-04-18 02:55:42.000000000 +0200
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-06-10'
+timestamp='2014-03-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +149,7 @@
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, 
,,g'`
        ;;
 esac
 
@@ -826,7 +826,7 @@
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
-    i*:MSYS*:*)
+    *:MSYS*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
@@ -969,10 +969,10 @@
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
-    or1k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+    openrisc*:Linux:*:*)
+       echo or1k-unknown-linux-${LIBC}
        exit ;;
-    or32:Linux:*:*)
+    or32:Linux:*:* | or1k*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
@@ -1260,16 +1260,26 @@
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
+       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') 
| \
+                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                   grep IS_64BIT_ARCH >/dev/null
+               then
+                   case $UNAME_PROCESSOR in
+                       i386) UNAME_PROCESSOR=x86_64 ;;
+                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
+                   esac
+               fi
            fi
+       elif test "$UNAME_PROCESSOR" = i386 ; then
+           # Avoid executing cc on OS X 10.9, as it ships with a stub
+           # that puts up a graphical alert prompting to install
+           # developer tools.  Any system running Mac OS X 10.7 or
+           # later (Darwin 11 and later) is required to have a 64-bit
+           # processor. This is not true of the ARM version of Darwin
+           # that Apple uses in portable devices.
+           UNAME_PROCESSOR=x86_64
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
@@ -1361,154 +1371,6 @@
        exit ;;
 esac
 
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
 cat >&2 <<EOF
 $0: unable to guess system type
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/config.sub new/qqwing-1.3.4/config.sub
--- old/qqwing-1.2.0/config.sub 2014-08-23 15:11:45.000000000 +0200
+++ new/qqwing-1.3.4/config.sub 2015-04-18 02:55:42.000000000 +0200
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-08-10'
+timestamp='2014-09-11'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -68,7 +68,7 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -265,6 +265,7 @@
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -282,8 +283,10 @@
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa32r6 | mipsisa32r6el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64r6 | mipsisa64r6el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipsr5900 | mipsr5900el \
@@ -295,11 +298,11 @@
        | nds32 | nds32le | nds32be \
        | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
-       | open8 \
-       | or1k | or32 \
+       | open8 | or1k | or1knd | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
+       | riscv32 | riscv64 \
        | rl78 | rx \
        | score \
        | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | 
shbe | shle | sh[1234]le | sh3ele \
@@ -324,7 +327,7 @@
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -381,6 +384,7 @@
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -400,8 +404,10 @@
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa32r6-* | mipsisa32r6el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64r6-* | mipsisa64r6el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
        | mipsr5900-* | mipsr5900el-* \
@@ -413,6 +419,7 @@
        | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
+       | or1k*-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -822,6 +829,10 @@
                basic_machine=powerpc-unknown
                os=-morphos
                ;;
+       moxiebox)
+               basic_machine=moxie-unknown
+               os=-moxiebox
+               ;;
        msdos)
                basic_machine=i386-pc
                os=-msdos
@@ -1367,14 +1378,14 @@
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* 
\
              | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | 
-tirtos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1592,9 +1603,6 @@
        mips*-*)
                os=-elf
                ;;
-       or1k-*)
-               os=-elf
-               ;;
        or32-*)
                os=-coff
                ;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/configure new/qqwing-1.3.4/configure
--- old/qqwing-1.2.0/configure  2014-08-23 15:11:44.000000000 +0200
+++ new/qqwing-1.3.4/configure  2015-04-18 02:55:41.000000000 +0200
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for qqwing 1.2.0.
+# Generated by GNU Autoconf 2.69 for qqwing 1.3.4.
 #
-# Report bugs to <http://ostermiller.org/qqwing/>.
+# Report bugs to <http://qqwing.com/>.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -274,11 +274,11 @@
     $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoc...@gnu.org and
-$0: http://ostermiller.org/qqwing/ about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
+    $as_echo "$0: Please tell bug-autoc...@gnu.org and http://qqwing.com/
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
   fi
   exit 1
 fi
@@ -590,9 +590,9 @@
 # Identity of this package.
 PACKAGE_NAME='qqwing'
 PACKAGE_TARNAME='qqwing'
-PACKAGE_VERSION='1.2.0'
-PACKAGE_STRING='qqwing 1.2.0'
-PACKAGE_BUGREPORT='http://ostermiller.org/qqwing/'
+PACKAGE_VERSION='1.3.4'
+PACKAGE_STRING='qqwing 1.3.4'
+PACKAGE_BUGREPORT='http://qqwing.com/'
 PACKAGE_URL=''
 
 ac_unique_file="config.h.in"
@@ -1324,7 +1324,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures qqwing 1.2.0 to adapt to many kinds of systems.
+\`configure' configures qqwing 1.3.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1394,7 +1394,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of qqwing 1.2.0:";;
+     short | recursive ) echo "Configuration of qqwing 1.3.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1439,7 +1439,7 @@
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
-Report bugs to <http://ostermiller.org/qqwing/>.
+Report bugs to <http://qqwing.com/>.
 _ACEOF
 ac_status=$?
 fi
@@ -1502,7 +1502,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-qqwing configure 1.2.0
+qqwing configure 1.3.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1968,9 +1968,9 @@
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" 
>&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the 
compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## --------------------------------------------- ##
-## Report this to http://ostermiller.org/qqwing/ ##
-## --------------------------------------------- ##"
+( $as_echo "## --------------------------------- ##
+## Report this to http://qqwing.com/ ##
+## --------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
@@ -2046,7 +2046,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by qqwing $as_me 1.2.0, which was
+It was created by qqwing $as_me 1.3.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2406,9 +2406,9 @@
 # - If binary compatibility has been broken (eg removed or changed interfaces)
 #   change to C+1:0:0
 # - If the interface is the same as the previous version, change to C:R+1:A
-QQWING_CURRENT=2
+QQWING_CURRENT=3
 QQWING_REVISION=0
-QQWING_AGE=0
+QQWING_AGE=1
 
 
 
@@ -2929,7 +2929,7 @@
 
 # Define the identity of the package.
  PACKAGE='qqwing'
- VERSION='1.2.0'
+ VERSION='1.3.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3022,6 +3022,7 @@
   fi
 fi
 
+
 # Checks for programs.
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -16177,7 +16178,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by qqwing $as_me 1.2.0, which was
+This file was extended by qqwing $as_me 1.3.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16237,13 +16238,13 @@
 Configuration commands:
 $config_commands
 
-Report bugs to <http://ostermiller.org/qqwing/>."
+Report bugs to <http://qqwing.com/>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-qqwing config.status 1.2.0
+qqwing config.status 1.3.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/configure.ac 
new/qqwing-1.3.4/configure.ac
--- old/qqwing-1.2.0/configure.ac       2014-08-23 15:11:38.000000000 +0200
+++ new/qqwing-1.3.4/configure.ac       2015-04-18 02:55:34.000000000 +0200
@@ -1,5 +1,5 @@
 AC_PREREQ(2.59)
-AC_INIT(qqwing, 1.2.0, http://ostermiller.org/qqwing/)
+AC_INIT(qqwing, 1.3.4, http://qqwing.com/)
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_SRCDIR([config.h.in])
 AC_CONFIG_HEADER([config.h])
@@ -11,9 +11,9 @@
 # - If binary compatibility has been broken (eg removed or changed interfaces)
 #   change to C+1:0:0
 # - If the interface is the same as the previous version, change to C:R+1:A
-QQWING_CURRENT=2
+QQWING_CURRENT=3
 QQWING_REVISION=0
-QQWING_AGE=0
+QQWING_AGE=1
 
 AC_SUBST([QQWING_CURRENT])
 AC_SUBST([QQWING_REVISION])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/debian/changelog 
new/qqwing-1.3.4/debian/changelog
--- old/qqwing-1.2.0/debian/changelog   1970-01-01 01:00:00.000000000 +0100
+++ new/qqwing-1.3.4/debian/changelog   2015-04-18 02:55:34.000000000 +0200
@@ -0,0 +1,69 @@
+qqwing (1.3.4-1) RELEASED; urgency=medium
+
+  * Added hasUniqueSolution() method to the API
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Fri, 17 Apr 2015 20:55:00 
-0400
+
+qqwing (1.3.3-1) RELEASED; urgency=medium
+
+  * Java API improvements 
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Sun, 05 Oct 2014 06:46:18 
-0400
+
+qqwing (1.3.2-1) RELEASED; urgency=medium
+
+  * debian directory included in tar.gz download 
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Thu, 25 Sep 2014 10:27:35 
-0400
+
+qqwing (1.3.1-1) RELEASED; urgency=medium
+
+  * Fix library version number 
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Sun, 21 Sep 2014 16:36:59 
-0400
+
+qqwing (1.3.0-1) RELEASED; urgency=medium
+
+  * Multi-threaded Java version
+  * Revamp of website and documentation 
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Fri, 19 Sep 2014 06:38:28 
-0400
+
+qqwing (1.2.0-1) RELEASED; urgency=medium
+
+  * Fix bug that caused generated puzzles with symmetry not to be unique
+  * Remove duplicated constants and unused methods from library
+  * Javascript version with online generator
+  * The JavaScript port powers the online playing board 
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Sat, 23 Aug 2014 00:03:46 
-0400
+
+qqwing (1.1.3-1) RELEASED; urgency=medium
+
+  * Method for getting the puzzle as an integer array for Gnome Sudoku 
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Sun, 10 Aug 2014 22:59:11 
-0400
+
+qqwing (1.1.2-1) RELEASED; urgency=medium
+
+  * Add "any" for difficulty command line option
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Wed, 23 Jul 2014 08:36:57 
-0400
+
+qqwing (1.1.1-1) RELEASED; urgency=medium
+
+  * Split into a library and a main method
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Wed, 23 Jul 2014 08:36:57 
-0400
+
+qqwing (1.1.0-1) RELEASED; urgency=medium
+
+  * Added symmetry
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Wed, 23 Jul 2014 08:36:57 
-0400
+
+qqwing (1.0.3-1) RELEASED; urgency=medium
+
+  * Initial release
+
+ -- Stephen Ostermiller <deb...@ostermiller.org>  Wed, 23 Jul 2014 08:36:57 
-0400
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/debian/compat 
new/qqwing-1.3.4/debian/compat
--- old/qqwing-1.2.0/debian/compat      1970-01-01 01:00:00.000000000 +0100
+++ new/qqwing-1.3.4/debian/compat      2015-04-18 02:55:34.000000000 +0200
@@ -0,0 +1 @@
+9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/debian/control 
new/qqwing-1.3.4/debian/control
--- old/qqwing-1.2.0/debian/control     1970-01-01 01:00:00.000000000 +0100
+++ new/qqwing-1.3.4/debian/control     2015-04-18 02:55:34.000000000 +0200
@@ -0,0 +1,12 @@
+Source: qqwing
+Maintainer: Stephen Ostermiller <deb...@ostermiller.org>
+Section: misc
+Priority: optional
+Standards-Version: 3.9.5
+Build-Depends: debhelper (>= 9)
+
+Package: qqwing
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: can solve or generate Sudoku puzzles
+       It is fast, uses logic, rates puzzles, and prints instructions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/debian/copyright 
new/qqwing-1.3.4/debian/copyright
--- old/qqwing-1.2.0/debian/copyright   1970-01-01 01:00:00.000000000 +0100
+++ new/qqwing-1.3.4/debian/copyright   2015-04-18 02:55:34.000000000 +0200
@@ -0,0 +1,32 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: qqwing
+Source: http://qqwing.com/
+
+Files: *
+Copyright: Copyright (C) 2006-2014 Stephen Ostermiller http://ostermiller.org/
+License: GPL-2+
+ This program is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later
+ version.
+ .
+ This program is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE.  See the GNU General Public License for more
+ details.
+ .
+ You should have received a copy of the GNU General Public
+ License along with this package; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA  02110-1301 USA
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+
+Files: debian/*
+Copyright: Copyright 2006-2014 Stephen Ostermiller http://ostermiller.org/
+License: GPL-2+
+ [LICENSE TEXT]
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/debian/rules 
new/qqwing-1.3.4/debian/rules
--- old/qqwing-1.2.0/debian/rules       1970-01-01 01:00:00.000000000 +0100
+++ new/qqwing-1.3.4/debian/rules       2015-04-18 02:55:34.000000000 +0200
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+%:
+       dh $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/debian/source/format 
new/qqwing-1.3.4/debian/source/format
--- old/qqwing-1.2.0/debian/source/format       1970-01-01 01:00:00.000000000 
+0100
+++ new/qqwing-1.3.4/debian/source/format       2015-04-18 02:55:34.000000000 
+0200
@@ -0,0 +1 @@
+3.0 (quilt)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/ltmain.sh new/qqwing-1.3.4/ltmain.sh
--- old/qqwing-1.2.0/ltmain.sh  2014-08-23 15:11:41.000000000 +0200
+++ new/qqwing-1.3.4/ltmain.sh  2015-04-18 02:55:38.000000000 +0200
@@ -70,7 +70,7 @@
 #         compiler:            $LTCC
 #         compiler flags:              $LTCFLAGS
 #         linker:              $LD (gnu? $with_gnu_ld)
-#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.10ubuntu1
 #         automake:    $automake_version
 #         autoconf:    $autoconf_version
 #
@@ -80,7 +80,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
+VERSION="2.4.2 Debian-2.4.2-1.10ubuntu1"
 TIMESTAMP=""
 package_revision=1.3337
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/main.cpp new/qqwing-1.3.4/main.cpp
--- old/qqwing-1.2.0/main.cpp   2014-08-23 15:11:51.000000000 +0200
+++ new/qqwing-1.3.4/main.cpp   2015-04-18 02:55:47.000000000 +0200
@@ -1,7 +1,6 @@
 /*
  * qqwing - Sudoku solver and generator
- * Copyright (C) 2006-2014 Stephen Ostermiller
- * http://ostermiller.org/qqwing/
+ * Copyright (C) 2006-2014 Stephen Ostermiller http://ostermiller.org/
  * Copyright (C) 2007 Jacques Bensimon (jacq...@ipm.com)
  * Copyright (C) 2011 Jean Guillerez (j.guillerez - orange.fr)
  * Copyright (C) 2014 Michael Catanzaro (mcatanz...@gnome.org)
@@ -202,8 +201,7 @@
                }
 
                // Initialize the random number generator
-               int timeSeed = time(NULL);
-               srand(timeSeed);
+               srand ( unsigned ( time(0) ) );
 
                // If printing out CSV, print a header
                if (printStyle == SudokuBoard::CSV){
@@ -276,7 +274,7 @@
                                        havePuzzle = false;
                                        done = true;
                                }
-                               delete puzzle;
+                               delete[] puzzle;
                        }
 
                        int solutions = 0;
@@ -426,8 +424,7 @@
 
 void printAbout(){
        cout << "qqwing - Sudoku solver and generator" << endl;
-       cout << "Copyright (C) 2006-2014 Stephen Ostermiller" << endl;
-       cout << "http://ostermiller.org/qqwing/"; << endl;
+       cout << "Copyright (C) 2006-2014 Stephen Ostermiller 
http://ostermiller.org/"; << endl;
        cout << "Copyright (C) 2007 Jacques Bensimon (jacq...@ipm.com)" << endl;
        cout << "Copyright (C) 2011 Jean Guillerez (j.guillerez - orange.fr)" 
<< endl;
        cout << "Copyright (C) 2014 Michael Catanzaro (mcatanz...@gnome.org)" 
<< endl;
@@ -475,7 +472,7 @@
        cout << "  --one-line           Print puzzles on one line of 81 
characters" << endl;
        cout << "  --compact            Print puzzles on 9 lines of 9 
characters" << endl;
        cout << "  --readable           Print puzzles in human readable form 
(default)" << endl;
-       cout << "  --csv                Ouput CSV format with one line puzzles" 
<< endl;
+       cout << "  --csv                Output CSV format with one line 
puzzles" << endl;
        cout << "  --help               Print this message" << endl;
        cout << "  --about              Author and license information" << endl;
        cout << "  --version            Display current version number" << endl;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/qqwing.1 new/qqwing-1.3.4/qqwing.1
--- old/qqwing-1.2.0/qqwing.1   2014-08-23 15:11:38.000000000 +0200
+++ new/qqwing-1.3.4/qqwing.1   2015-04-18 02:55:34.000000000 +0200
@@ -4,9 +4,9 @@
 
 .SH "SYNOPSIS"
 .PP
-\fBqqwing\fR --generate [\fIOPTIONS...\fP]
+\fBqqwing\fR \-\-generate [\fIOPTIONS...\fP]
 .br
-\fBqqwing\fR --solve [\fIOPTIONS...\fP]
+\fBqqwing\fR \-\-solve [\fIOPTIONS...\fP]
 
 .SH "DESCRIPTION"
 .PP
@@ -94,7 +94,7 @@
 Print puzzles in human readable form (default)
 .TP
 .BR \-\-csv
-Ouput CSV format with one line puzzles
+Output CSV format with one line puzzles
 .TP
 .BR \-h ,\  \-\-help
 Display help message
@@ -107,4 +107,4 @@
 
 .SH "SEE ALSO"
 .PP
-http://ostermiller.org/qqwing/
+http://qqwing.com/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/qqwing.cpp new/qqwing-1.3.4/qqwing.cpp
--- old/qqwing-1.2.0/qqwing.cpp 2014-08-23 15:11:51.000000000 +0200
+++ new/qqwing-1.3.4/qqwing.cpp 2015-04-18 02:55:47.000000000 +0200
@@ -1,7 +1,6 @@
 /*
  * qqwing - Sudoku solver and generator
- * Copyright (C) 2006-2014 Stephen Ostermiller
- * http://ostermiller.org/qqwing/
+ * Copyright (C) 2006-2014 Stephen Ostermiller http://ostermiller.org/
  * Copyright (C) 2007 Jacques Bensimon (jacq...@ipm.com)
  * Copyright (C) 2011 Jean Guillerez (j.guillerez - orange.fr)
  * Copyright (C) 2014 Michael Catanzaro (mcatanz...@gnome.org)
@@ -58,7 +57,7 @@
                                COLUMN_BOX,
                                HIDDEN_PAIR_ROW,
                                HIDDEN_PAIR_COLUMN,
-                               HIDDEN_PAIR_SECTION,
+                               HIDDEN_PAIR_SECTION
                        };
                        LogItem(int round, LogType type);
                        LogItem(int round, LogType type, int value, int 
position);
@@ -109,17 +108,20 @@
        /**
         * Create a new Sudoku board
         */
-       SudokuBoard::SudokuBoard(){
-               puzzle = new int[BOARD_SIZE];
-               solution = new int[BOARD_SIZE];
-               solutionRound = new int[BOARD_SIZE];
-               possibilities = new int[POSSIBILITY_SIZE];
-               recordHistory = false;
-               printStyle = READABLE;
-               randomBoardArray = new int[BOARD_SIZE];
-               randomPossibilityArray = new int[ROW_COL_SEC_SIZE];
-               solveHistory = new vector<LogItem*>();
-               solveInstructions = new vector<LogItem*>();
+       SudokuBoard::SudokuBoard() :
+               puzzle ( new int[BOARD_SIZE] ),
+               solution ( new int[BOARD_SIZE] ),
+               solutionRound ( new int[BOARD_SIZE] ),
+               possibilities ( new int[POSSIBILITY_SIZE] ),
+               randomBoardArray ( new int[BOARD_SIZE] ),
+               randomPossibilityArray ( new int[ROW_COL_SEC_SIZE] ),
+               recordHistory ( false ),
+               logHistory( false ),
+               solveHistory ( new vector<LogItem*>() ),
+               solveInstructions ( new vector<LogItem*>() ),
+               printStyle ( READABLE ),
+               lastSolveRound (0)
+       {
                {for (int i=0; i<BOARD_SIZE; i++){
                        randomBoardArray[i] = i;
                }}
@@ -183,7 +185,7 @@
                        possibilities[i] = 0;
                }}
 
-               {for (int i=0;i<solveHistory->size();i++){
+               {for (unsigned int i=0; i<solveHistory->size(); i++){
                        delete solveHistory->at(i);
                }}
                solveHistory->clear();
@@ -223,11 +225,11 @@
        string SudokuBoard::getDifficultyAsString(){
                SudokuBoard::Difficulty difficulty = getDifficulty();
                switch (difficulty){
-                       case SudokuBoard::EXPERT: return "Expert"; break;
-                       case SudokuBoard::INTERMEDIATE: return "Intermediate"; 
break;
-                       case SudokuBoard::EASY: return "Easy"; break;
-                       case SudokuBoard::SIMPLE: return "Simple"; break;
-                       default: return "Unknown"; break;
+                       case SudokuBoard::EXPERT: return "Expert";
+                       case SudokuBoard::INTERMEDIATE: return "Intermediate";
+                       case SudokuBoard::EASY: return "Easy";
+                       case SudokuBoard::SIMPLE: return "Simple";
+                       default: return "Unknown";
                }
        }
 
@@ -384,6 +386,10 @@
                                        case FLIP:
                                                positionsym1 = 
rowColumnToCell(ROW_COL_SEC_SIZE-1-cellToRow(position),cellToColumn(position));
                                        break;
+                                       case RANDOM: // NOTE: Should never 
happen
+                                       break;
+                                       case NONE: // NOTE: No need to do 
anything
+                                       break;
                                }
                                // try backing out the value and
                                // counting solutions to the puzzle
@@ -468,7 +474,7 @@
                                cout << endl;
                        }
                }
-               {for (int i=0;i<v->size();i++){
+               {for (unsigned int i=0;i<v->size();i++){
                        cout << i+1 << ". ";
                        v->at(i)->print();
                        if (printStyle == CSV){
@@ -523,7 +529,19 @@
                return false;
        }
 
+       bool SudokuBoard::hasUniqueSolution(){
+               return countSolutionsLimited() == 1;
+       }
+
        int SudokuBoard::countSolutions(){
+               return countSolutions(false);
+       }
+
+       int SudokuBoard::countSolutionsLimited(){
+               return countSolutions(true);
+       }
+
+       int SudokuBoard::countSolutions(bool limitToTwo){
                // Don't record history while generating.
                bool recHistory = recordHistory;
                setRecordHistory(false);
@@ -531,7 +549,7 @@
                setLogHistory(false);
 
                reset();
-               int solutionCount = countSolutions(2, false);
+               int solutionCount = countSolutions(2, limitToTwo);
 
                // Restore recording history.
                setRecordHistory(recHistory);
@@ -1377,12 +1395,12 @@
 
        SudokuBoard::~SudokuBoard(){
                clearPuzzle();
-               delete puzzle;
-               delete solution;
-               delete possibilities;
-               delete solutionRound;
-               delete randomBoardArray;
-               delete randomPossibilityArray;
+               delete[] puzzle;
+               delete[] solution;
+               delete[] possibilities;
+               delete[] solutionRound;
+               delete[] randomBoardArray;
+               delete[] randomPossibilityArray;
                delete solveHistory;
                delete solveInstructions;
        }
@@ -1500,8 +1518,8 @@
         * log items in the vector are of the specified type.
         */
        int getLogCount(vector<LogItem*>* v, LogItem::LogType type){
-               int count = 0;
-               {for (int i=0; i<v->size(); i++){
+               unsigned int count = 0;
+               {for (unsigned int i=0; i<v->size(); i++){
                        if(v->at(i)->getType() == type) count++;
                }}
                return count;
@@ -1527,6 +1545,7 @@
                        case 2: return SudokuBoard::MIRROR;
                        case 3: return SudokuBoard::FLIP;
                }
+               return SudokuBoard::ROTATE90; // NOTE: default action
        }
 
        /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/qqwing.hpp new/qqwing-1.3.4/qqwing.hpp
--- old/qqwing-1.2.0/qqwing.hpp 2014-08-23 15:11:51.000000000 +0200
+++ new/qqwing-1.3.4/qqwing.hpp 2015-04-18 02:55:47.000000000 +0200
@@ -1,7 +1,6 @@
 /*
  * qqwing - A Sudoku solver and generator
- * Copyright (C) 2006-2014 Stephen Ostermiller
- * http://ostermiller.org/qqwing/
+ * Copyright (C) 2006-2014 Stephen Ostermiller http://ostermiller.org/
  * Copyright (C) 2007 Jacques Bensimon (jacq...@ipm.com)
  * Copyright (C) 2011 Jean Guillerez (j.guillerez - orange.fr)
  * Copyright (C) 2014 Michael Catanzaro (mcatanz...@gnome.org)
@@ -53,14 +52,14 @@
                                        ONE_LINE,
                                        COMPACT,
                                        READABLE,
-                                       CSV,
+                                       CSV
                                };
                                enum Difficulty {
                                        UNKNOWN,
                                        SIMPLE,
                                        EASY,
                                        INTERMEDIATE,
-                                       EXPERT,
+                                       EXPERT
                                };
                                enum Symmetry {
                                        NONE,
@@ -68,7 +67,7 @@
                                        ROTATE180,
                                        MIRROR,
                                        FLIP,
-                                       RANDOM,
+                                       RANDOM
                                };
                                SudokuBoard();
                                bool setPuzzle(int* initPuzzle);
@@ -77,7 +76,28 @@
                                void printPuzzle();
                                void printSolution();
                                bool solve();
+
+                               /**
+                                * Count the number of solutions to the puzzle
+                                */
                                int countSolutions();
+
+                               /**
+                                * Count the number of solutions to the puzzle
+                                * but return two any time there are two or
+                                * more solutions.  This method will run much
+                                * falter than countSolutions() when there
+                                * are many possible solutions and can be used
+                                * when you are interested in knowing if the
+                                * puzzle has zero, one, or multiple solutions.
+                                */
+                               int countSolutionsLimited();
+
+                               /**
+                                * return true if the puzzle has a solution
+                                * and only a single solution
+                                */
+                               bool hasUniqueSolution();
                                bool isSolved();
                                void printSolveHistory();
                                void setRecordHistory(bool recHistory);
@@ -124,10 +144,10 @@
 
                                /**
                                 * The 729 integers that make up a the possible
-                                * values for a suduko puzzle. (9 possibilities
+                                * values for a Sudoku puzzle. (9 possibilities
                                 * for each of 81 squares).  If possibilities[i]
                                 * is zero, then the possibility could still be
-                                * filled in according to the sudoku rules.  
When
+                                * filled in according to the Sudoku rules.  
When
                                 * a possibility is eliminated, possibilities[i]
                                 * is assigned the round (recursion level) at
                                 * which it was determined that it could not be
@@ -191,6 +211,7 @@
                                bool onlyValueInColumn(int round);
                                bool onlyValueInSection(int round);
                                bool solve(int round);
+                               int countSolutions(bool limitToTwo);
                                int countSolutions(int round, bool limitToTwo);
                                bool guess(int round, int guessNumber);
                                bool isImpossible();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qqwing-1.2.0/qqwing.pc new/qqwing-1.3.4/qqwing.pc
--- old/qqwing-1.2.0/qqwing.pc  2014-08-23 15:11:50.000000000 +0200
+++ new/qqwing-1.3.4/qqwing.pc  2015-04-18 02:55:47.000000000 +0200
@@ -5,6 +5,6 @@
 
 Name: libqqwing
 Description: Sudoku generator and solver library
-Version: 1.2.0
+Version: 1.3.4
 Libs: -L${libdir} -lqqwing
 Cflags: -I${includedir}


Reply via email to