From bbe9b3ded9062c3d64902dac78c941c15bb24369 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 15 Mar 2017 18:51:19 +0300 Subject: [PATCH] [COTECH 88] Configuration repository XML file filled, pathches added --- config/patches/boost.001_fcontext.patch | 11 + config/patches/boost.002_icu_formatter.patch | 20 + config/patches/freeimage.001_sources.patch | 25 + .../freeimage.002_build_procedure.patch | 62 + .../patches/freeimage.003_gcc47_compat.patch | 11 + config/patches/freeimage.004_gcc66.patch | 71 + config/patches/gl2ps.001_libs.patch | 13 + .../graphviz.001_build_procedure.patch | 21 + config/patches/libxml2.001_64bits_crash.patch | 13 + .../matplotlib.001_build_procedure.patch | 90 + config/patches/medfile.001_parallel.patch | 63 + config/patches/medfile.002_gcc6.patch | 16 + config/patches/netgen.001_sources.patch | 1455 ++++++ .../omniorb.001_omninotify_compilation.patch | 4584 +++++++++++++++++ .../omniorb.002_omninotify_64bits.patch | 94 + config/patches/opencv.001_compile.patch | 22 + config/patches/opencv.002_gcc6.patch | 131 + config/patches/paco++.001_gcc44_compat.patch | 11 + config/patches/paraview.001_vtk_targets.patch | 11 + config/patches/paraview.002_visitbridge.patch | 1822 +++++++ config/patches/paraview.003_surfacelic.patch | Bin 0 -> 564340 bytes config/patches/paraview.004_forwarding.patch | 12 + config/patches/qt.001_proxy_factory.patch | 12 + config/patches/qt.002_webview_include.patch | 11 + config/patches/qt.003_webengine.patch | 25 + config/patches/qt.004_blender_scene.patch | 76 + config/patches/qt.005_null_ptr.patch | 12 + config/patches/scotch.001_pthreads.patch | 50 + config/patches/solvespace.001_nogui.patch | 50 + config/salome.xml | 174 +- 30 files changed, 8967 insertions(+), 1 deletion(-) create mode 100644 config/patches/boost.001_fcontext.patch create mode 100644 config/patches/boost.002_icu_formatter.patch create mode 100644 config/patches/freeimage.001_sources.patch create mode 100644 config/patches/freeimage.002_build_procedure.patch create mode 100644 config/patches/freeimage.003_gcc47_compat.patch create mode 100644 config/patches/freeimage.004_gcc66.patch create mode 100644 config/patches/gl2ps.001_libs.patch create mode 100644 config/patches/graphviz.001_build_procedure.patch create mode 100755 config/patches/libxml2.001_64bits_crash.patch create mode 100644 config/patches/matplotlib.001_build_procedure.patch create mode 100644 config/patches/medfile.001_parallel.patch create mode 100644 config/patches/medfile.002_gcc6.patch create mode 100644 config/patches/netgen.001_sources.patch create mode 100755 config/patches/omniorb.001_omninotify_compilation.patch create mode 100755 config/patches/omniorb.002_omninotify_64bits.patch create mode 100644 config/patches/opencv.001_compile.patch create mode 100644 config/patches/opencv.002_gcc6.patch create mode 100644 config/patches/paco++.001_gcc44_compat.patch create mode 100644 config/patches/paraview.001_vtk_targets.patch create mode 100644 config/patches/paraview.002_visitbridge.patch create mode 100644 config/patches/paraview.003_surfacelic.patch create mode 100644 config/patches/paraview.004_forwarding.patch create mode 100644 config/patches/qt.001_proxy_factory.patch create mode 100644 config/patches/qt.002_webview_include.patch create mode 100755 config/patches/qt.003_webengine.patch create mode 100644 config/patches/qt.004_blender_scene.patch create mode 100644 config/patches/qt.005_null_ptr.patch create mode 100644 config/patches/scotch.001_pthreads.patch create mode 100644 config/patches/solvespace.001_nogui.patch diff --git a/config/patches/boost.001_fcontext.patch b/config/patches/boost.001_fcontext.patch new file mode 100644 index 0000000..e1ea293 --- /dev/null +++ b/config/patches/boost.001_fcontext.patch @@ -0,0 +1,11 @@ +diff -NaurwB boost-1.52.0__0/libs/context/src/fcontext.cpp boost-1.52.0__1/libs/context/src/fcontext.cpp +--- boost-1.52.0__0/libs/context/src/fcontext.cpp 2012-09-18 13:06:47.000000000 +0400 ++++ boost-1.52.0__1/libs/context/src/fcontext.cpp 2017-03-15 15:22:15.633793279 +0300 +@@ -9,6 +9,7 @@ + #include + + #include ++#include + + #ifdef BOOST_HAS_ABI_HEADERS + # include BOOST_ABI_PREFIX diff --git a/config/patches/boost.002_icu_formatter.patch b/config/patches/boost.002_icu_formatter.patch new file mode 100644 index 0000000..150fb96 --- /dev/null +++ b/config/patches/boost.002_icu_formatter.patch @@ -0,0 +1,20 @@ +diff -NaurwB boost-1.52.0__0/libs/locale/src/icu/formatter.cpp boost-1.52.0__1/libs/locale/src/icu/formatter.cpp +--- boost-1.52.0__0/libs/locale/src/icu/formatter.cpp 2017-03-15 15:24:10.538356909 +0300 ++++ boost-1.52.0__1/libs/locale/src/icu/formatter.cpp 2017-03-15 15:24:39.902501313 +0300 +@@ -51,14 +51,14 @@ + virtual string_type format(double value,size_t &code_points) const + { + icu::UnicodeString tmp; +- icu_fmt_->format(value,tmp); ++ icu_fmt_->format(::int64_t(value),tmp); + code_points=tmp.countChar32(); + return cvt_.std(tmp); + } + virtual string_type format(int64_t value,size_t &code_points) const + { + icu::UnicodeString tmp; +- icu_fmt_->format(value,tmp); ++ icu_fmt_->format(::int64_t(value),tmp); + code_points=tmp.countChar32(); + return cvt_.std(tmp); + } diff --git a/config/patches/freeimage.001_sources.patch b/config/patches/freeimage.001_sources.patch new file mode 100644 index 0000000..8bf79df --- /dev/null +++ b/config/patches/freeimage.001_sources.patch @@ -0,0 +1,25 @@ +diff -Naur --exclude=CVS freeimage-3.16.0_orig/Source/LibWebP/src/utils/bit_writer.c freeimage-3.16.0_patch/Source/LibWebP/src/utils/bit_writer.c +--- freeimage-3.16.0_orig/Source/LibWebP/src/utils/bit_writer.c ++++ freeimage-3.16.0_patch/Source/LibWebP/src/utils/bit_writer.c +@@ -226,6 +226,21 @@ + #define htole16(x) (x) + #else // pretty much all linux and/or glibc + #include ++#if !defined(htole32) ++# include ++# ifdef __USE_BSD ++/* Conversion interfaces. */ ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++#define htole16(x) (x) ++#define htole32(x) (x) ++#define htole64(x) (x) ++#else ++#define htole16(x) __bswap_16 (x) ++#define htole32(x) __bswap_32 (x) ++#define htole64(x) __bswap_64 (x) ++#endif ++#endif ++#endif + #endif + + // Returns 1 on success. diff --git a/config/patches/freeimage.002_build_procedure.patch b/config/patches/freeimage.002_build_procedure.patch new file mode 100644 index 0000000..bcbaad3 --- /dev/null +++ b/config/patches/freeimage.002_build_procedure.patch @@ -0,0 +1,62 @@ +diff -NaurwB freeimage-3.16.0__0/Makefile.fip freeimage-3.16.0__1/Makefile.fip +--- freeimage-3.16.0__0/Makefile.fip 2014-03-15 19:35:28.000000000 +0400 ++++ freeimage-3.16.0__1/Makefile.fip 2017-03-15 15:05:20.396869687 +0300 +@@ -4,9 +4,9 @@ + include fipMakefile.srcs + + # General configuration variables: +-DESTDIR ?= / +-INCDIR ?= $(DESTDIR)/usr/include +-INSTALLDIR ?= $(DESTDIR)/usr/lib ++DESTDIR ?= /usr ++INCDIR ?= $(DESTDIR)/include ++INSTALLDIR ?= $(DESTDIR)/lib + + # Converts cr/lf to just lf + DOS2UNIX = dos2unix +@@ -71,10 +71,12 @@ + + install: + install -d $(INCDIR) $(INSTALLDIR) +- install -m 644 -o root -g root $(HEADER) $(INCDIR) +- install -m 644 -o root -g root $(HEADERFIP) $(INCDIR) +- install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR) +- install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR) ++ install -m 644 $(HEADER) $(INCDIR) ++ install -m 644 $(HEADERFIP) $(INCDIR) ++ install -m 644 $(STATICLIB) $(INSTALLDIR) ++ install -m 755 $(SHAREDLIB) $(INSTALLDIR) ++ ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME) ++ ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME) + + clean: + rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME) +diff -NaurwB freeimage-3.16.0__0/Makefile.gnu freeimage-3.16.0__1/Makefile.gnu +--- freeimage-3.16.0__0/Makefile.gnu 2014-03-16 00:02:08.000000000 +0400 ++++ freeimage-3.16.0__1/Makefile.gnu 2017-03-15 15:05:20.384869623 +0300 +@@ -4,9 +4,9 @@ + include Makefile.srcs + + # General configuration variables: +-DESTDIR ?= / +-INCDIR ?= $(DESTDIR)/usr/include +-INSTALLDIR ?= $(DESTDIR)/usr/lib ++DESTDIR ?= /usr ++INCDIR ?= $(DESTDIR)/include ++INSTALLDIR ?= $(DESTDIR)/lib + + # Converts cr/lf to just lf + DOS2UNIX = dos2unix +@@ -70,9 +70,9 @@ + + install: + install -d $(INCDIR) $(INSTALLDIR) +- install -m 644 -o root -g root $(HEADER) $(INCDIR) +- install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR) +- install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR) ++ install -m 644 $(HEADER) $(INCDIR) ++ install -m 644 $(STATICLIB) $(INSTALLDIR) ++ install -m 755 $(SHAREDLIB) $(INSTALLDIR) + ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME) + ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME) + # ldconfig diff --git a/config/patches/freeimage.003_gcc47_compat.patch b/config/patches/freeimage.003_gcc47_compat.patch new file mode 100644 index 0000000..516a499 --- /dev/null +++ b/config/patches/freeimage.003_gcc47_compat.patch @@ -0,0 +1,11 @@ +diff -NaurwB freeimage-3.16.0__0/Source/OpenEXR/IlmImf/ImfAutoArray.h freeimage-3.16.0__1/Source/OpenEXR/IlmImf/ImfAutoArray.h +--- freeimage-3.16.0__0/Source/OpenEXR/IlmImf/ImfAutoArray.h 2014-03-08 01:31:08.000000000 +0400 ++++ freeimage-3.16.0__1/Source/OpenEXR/IlmImf/ImfAutoArray.h 2017-03-15 14:10:35.682298047 +0300 +@@ -45,6 +45,7 @@ + //----------------------------------------------------------------------------- + + #include "OpenEXRConfig.h" ++#include + #if !defined(_WIN32) || defined(__MINGW32__) + // needed for memset + #include diff --git a/config/patches/freeimage.004_gcc66.patch b/config/patches/freeimage.004_gcc66.patch new file mode 100644 index 0000000..614a853 --- /dev/null +++ b/config/patches/freeimage.004_gcc66.patch @@ -0,0 +1,71 @@ +diff -Naur freeimage-3.16.0_SRC_orig/Source/LibRawLite/dcraw/dcraw.c freeimage-3.16.0_SRC_patched/Source/LibRawLite/dcraw/dcraw.c +--- freeimage-3.16.0_SRC_orig/Source/LibRawLite/dcraw/dcraw.c 2014-02-07 23:48:10.000000000 +0400 ++++ freeimage-3.16.0_SRC_patched/Source/LibRawLite/dcraw/dcraw.c 2016-10-14 12:05:37.481253676 +0300 +@@ -4072,22 +4072,22 @@ + -2,+0,+0,-1,0,0x06, -2,+0,+0,+0,1,0x02, -2,+0,+0,+1,0,0x03, + -2,+1,-1,+0,0,0x04, -2,+1,+0,-1,1,0x04, -2,+1,+0,+0,0,0x06, + -2,+1,+0,+1,0,0x02, -2,+2,+0,+0,1,0x04, -2,+2,+0,+1,0,0x04, +- -1,-2,-1,+0,0,0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01, +- -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,0x88, -1,-1,+1,-2,0,0x40, ++ -1,-2,-1,+0,0,(signed char)0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01, ++ -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,(signed char)0x88, -1,-1,+1,-2,0,0x40, + -1,-1,+1,-1,0,0x22, -1,-1,+1,+0,0,0x33, -1,-1,+1,+1,1,0x11, + -1,+0,-1,+2,0,0x08, -1,+0,+0,-1,0,0x44, -1,+0,+0,+1,0,0x11, + -1,+0,+1,-2,1,0x40, -1,+0,+1,-1,0,0x66, -1,+0,+1,+0,1,0x22, + -1,+0,+1,+1,0,0x33, -1,+0,+1,+2,1,0x10, -1,+1,+1,-1,1,0x44, + -1,+1,+1,+0,0,0x66, -1,+1,+1,+1,0,0x22, -1,+1,+1,+2,0,0x10, + -1,+2,+0,+1,0,0x04, -1,+2,+1,+0,1,0x04, -1,+2,+1,+1,0,0x04, +- +0,-2,+0,+0,1,0x80, +0,-1,+0,+1,1,0x88, +0,-1,+1,-2,0,0x40, ++ +0,-2,+0,+0,1,(signed char)0x80, +0,-1,+0,+1,1,(signed char)0x88, +0,-1,+1,-2,0,0x40, + +0,-1,+1,+0,0,0x11, +0,-1,+2,-2,0,0x40, +0,-1,+2,-1,0,0x20, + +0,-1,+2,+0,0,0x30, +0,-1,+2,+1,1,0x10, +0,+0,+0,+2,1,0x08, + +0,+0,+2,-2,1,0x40, +0,+0,+2,-1,0,0x60, +0,+0,+2,+0,1,0x20, + +0,+0,+2,+1,0,0x30, +0,+0,+2,+2,1,0x10, +0,+1,+1,+0,0,0x44, + +0,+1,+1,+2,0,0x10, +0,+1,+2,-1,1,0x40, +0,+1,+2,+0,0,0x60, +- +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,0x80, +- +1,-1,+1,+1,0,0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40, ++ +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,(signed char)0x80, ++ +1,-1,+1,+1,0,(signed char)0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40, + +1,+0,+2,+1,0,0x10 + }, chood[] = { -1,-1, -1,0, -1,+1, 0,+1, +1,+1, +1,0, +1,-1, 0,-1 }; + ushort (*brow[5])[4], *pix; +diff -Naur freeimage-3.16.0_SRC_orig/Source/LibRawLite/internal/dcraw_common.cpp freeimage-3.16.0_SRC_patched/Source/LibRawLite/internal/dcraw_common.cpp +--- freeimage-3.16.0_SRC_orig/Source/LibRawLite/internal/dcraw_common.cpp 2014-02-07 23:48:10.000000000 +0400 ++++ freeimage-3.16.0_SRC_patched/Source/LibRawLite/internal/dcraw_common.cpp 2016-10-14 12:06:27.540395171 +0300 +@@ -3782,22 +3782,22 @@ + -2,+0,+0,-1,0,0x06, -2,+0,+0,+0,1,0x02, -2,+0,+0,+1,0,0x03, + -2,+1,-1,+0,0,0x04, -2,+1,+0,-1,1,0x04, -2,+1,+0,+0,0,0x06, + -2,+1,+0,+1,0,0x02, -2,+2,+0,+0,1,0x04, -2,+2,+0,+1,0,0x04, +- -1,-2,-1,+0,0,0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01, +- -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,0x88, -1,-1,+1,-2,0,0x40, ++ -1,-2,-1,+0,0,(signed char)0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01, ++ -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,(signed char)0x88, -1,-1,+1,-2,0,0x40, + -1,-1,+1,-1,0,0x22, -1,-1,+1,+0,0,0x33, -1,-1,+1,+1,1,0x11, + -1,+0,-1,+2,0,0x08, -1,+0,+0,-1,0,0x44, -1,+0,+0,+1,0,0x11, + -1,+0,+1,-2,1,0x40, -1,+0,+1,-1,0,0x66, -1,+0,+1,+0,1,0x22, + -1,+0,+1,+1,0,0x33, -1,+0,+1,+2,1,0x10, -1,+1,+1,-1,1,0x44, + -1,+1,+1,+0,0,0x66, -1,+1,+1,+1,0,0x22, -1,+1,+1,+2,0,0x10, + -1,+2,+0,+1,0,0x04, -1,+2,+1,+0,1,0x04, -1,+2,+1,+1,0,0x04, +- +0,-2,+0,+0,1,0x80, +0,-1,+0,+1,1,0x88, +0,-1,+1,-2,0,0x40, ++ +0,-2,+0,+0,1,(signed char)0x80, +0,-1,+0,+1,1,(signed char)0x88, +0,-1,+1,-2,0,0x40, + +0,-1,+1,+0,0,0x11, +0,-1,+2,-2,0,0x40, +0,-1,+2,-1,0,0x20, + +0,-1,+2,+0,0,0x30, +0,-1,+2,+1,1,0x10, +0,+0,+0,+2,1,0x08, + +0,+0,+2,-2,1,0x40, +0,+0,+2,-1,0,0x60, +0,+0,+2,+0,1,0x20, + +0,+0,+2,+1,0,0x30, +0,+0,+2,+2,1,0x10, +0,+1,+1,+0,0,0x44, + +0,+1,+1,+2,0,0x10, +0,+1,+2,-1,1,0x40, +0,+1,+2,+0,0,0x60, +- +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,0x80, +- +1,-1,+1,+1,0,0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40, ++ +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,(signed char)0x80, ++ +1,-1,+1,+1,0,(signed char)0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40, + +1,+0,+2,+1,0,0x10 + }, chood[] = { -1,-1, -1,0, -1,+1, 0,+1, +1,+1, +1,0, +1,-1, 0,-1 }; + ushort (*brow[5])[4], *pix; +@@ -7380,7 +7380,7 @@ + { 8035,435,-962,-6001,13872,2320,-1159,3065,5434 } }, + { "Phase One P65", 0, 0, + { 8035,435,-962,-6001,13872,2320,-1159,3065,5434 } }, +- { "Red One", 704, 0xffff, /* DJC */ ++ { "Red One", 704, (short int)0xffff, /* DJC */ + { 21014,-7891,-2613,-3056,12201,856,-2203,5125,8042 } }, + { "Samsung EK-GN120", 0, 0, /* Adobe; Galaxy NX */ + { 7557,-2522,-739,-4679,12949,1894,-840,1777,5311 } }, diff --git a/config/patches/gl2ps.001_libs.patch b/config/patches/gl2ps.001_libs.patch new file mode 100644 index 0000000..68168b3 --- /dev/null +++ b/config/patches/gl2ps.001_libs.patch @@ -0,0 +1,13 @@ +diff -NaurwB gl2ps-1.3.9__1/CMakeLists.txt gl2ps-1.3.9__0/CMakeLists.txt +--- gl2ps-1.3.9__1/CMakeLists.txt 2017-03-15 14:16:29.548325553 +0300 ++++ gl2ps-1.3.9__0/CMakeLists.txt 2017-03-15 14:17:13.060574241 +0300 +@@ -76,6 +76,9 @@ + add_definitions(-DHAVE_NO_VSNPRINTF) + endif(NOT HAVE_VSNPRINTF) + ++find_library(LIBM_LIBRARY NAMES m) ++list(APPEND EXTERNAL_LIBRARIES ${LIBM_LIBRARY}) ++ + find_package(OpenGL) + if(OPENGL_FOUND) + list(APPEND EXTERNAL_INCLUDES ${OPENGL_INCLUDE_DIR}) diff --git a/config/patches/graphviz.001_build_procedure.patch b/config/patches/graphviz.001_build_procedure.patch new file mode 100644 index 0000000..ede5edd --- /dev/null +++ b/config/patches/graphviz.001_build_procedure.patch @@ -0,0 +1,21 @@ +diff -NaurwB graphviz-2.38.0__1/configure graphviz-2.38.0__0/configure +--- graphviz-2.38.0__0/configure 2017-03-15 14:22:15.286297951 +0300 ++++ graphviz-2.38.0__1/configure 2017-03-15 14:23:12.054621051 +0300 +@@ -22415,7 +22415,7 @@ + else + PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"` + PYTHON_INCLUDES=-I$PYTHON_PREFIX/include/python$PYTHON_VERSION_SHORT +- PYTHON_LIBS="-lpython$PYTHON_VERSION_SHORT" ++ PYTHON_LIBS="-L$PYTHON_PREFIX/lib -lpython$PYTHON_VERSION_SHORT" + PYTHON_INSTALL_DIR="`$PYTHON $srcdir/config/config_python.py archsitelib`" + save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" +@@ -23797,7 +23797,7 @@ + fi + + if test "x$use_tcl" = "x"; then +- TCL_VERSION_FOUND=`echo 'puts [info tclversion]' | $TCLSH` ++ TCL_VERSION_FOUND=`echo 'puts [info tclversion]' | $TCLSH 2>/dev/null | grep -E '^[0-9.]+$'` + + # can't assume ksh on all architectures + # TCLSH_EXEC_PREFIX=${TCLSH%%/bin/tclsh.*} diff --git a/config/patches/libxml2.001_64bits_crash.patch b/config/patches/libxml2.001_64bits_crash.patch new file mode 100755 index 0000000..f03153f --- /dev/null +++ b/config/patches/libxml2.001_64bits_crash.patch @@ -0,0 +1,13 @@ +--- libxml.h ++++ libxml.h +@@ -13,6 +13,9 @@ + #ifndef _LARGEFILE_SOURCE + #define _LARGEFILE_SOURCE + #endif ++#ifndef _LARGEFILE64_SOURCE ++#define _LARGEFILE64_SOURCE ++#endif + #ifndef _FILE_OFFSET_BITS + #define _FILE_OFFSET_BITS 64 + #endif + diff --git a/config/patches/matplotlib.001_build_procedure.patch b/config/patches/matplotlib.001_build_procedure.patch new file mode 100644 index 0000000..c74de89 --- /dev/null +++ b/config/patches/matplotlib.001_build_procedure.patch @@ -0,0 +1,90 @@ +diff -NaurwB matplotlib-1.4.3__1/setup.cfg matplotlib-1.4.3__0/setup.cfg +--- matplotlib-1.4.3__0/setup.cfg 1970-01-01 03:00:00.000000000 +0300 ++++ matplotlib-1.4.3__1/setup.cfg 2017-03-15 14:42:36.569265032 +0300 +@@ -0,0 +1,86 @@ ++# Rename this file to setup.cfg to modify matplotlib's ++# build options. ++ ++[egg_info] ++tag_svn_revision = 1 ++ ++[directories] ++# Uncomment to override the default basedir in setupext.py. ++# This can be a single directory or a comma-delimited list of directories. ++#basedirlist = /usr ++ ++[status] ++# To suppress display of the dependencies and their versions ++# at the top of the build log, uncomment the following line: ++#suppress = False ++ ++[packages] ++# There are a number of subpackages of matplotlib that are considered ++# optional. They are all installed by default, but they may be turned ++# off here. ++# ++tests = False ++sample_data = False ++toolkits = False ++# Tests for the toolkits are only automatically installed ++# if the tests and toolkits packages are also getting installed. ++#toolkits_tests = auto ++ ++[gui_support] ++# Matplotlib supports multiple GUI toolkits, including Cocoa, ++# GTK, Fltk, MacOSX, Qt, Qt4, Tk, and WX. Support for many of ++# these toolkits requires AGG, the Anti-Grain Geometry library, ++# which is provided by matplotlib and built by default. ++# ++# Some backends are written in pure Python, and others require ++# extension code to be compiled. By default, matplotlib checks for ++# these GUI toolkits during installation and, if present, compiles the ++# required extensions to support the toolkit. ++# ++# - GTK 2.x support of any kind requires the GTK runtime environment ++# headers and PyGTK. ++# - Tk support requires Tk development headers and Tkinter. ++# - Mac OSX backend requires the Cocoa headers included with XCode. ++# - Windowing is MS-Windows specific, and requires the "windows.h" ++# header. ++# ++# The other GUI toolkits do not require any extension code, and can be ++# used as long as the libraries are installed on your system -- ++# therefore they are installed unconditionally. ++# ++# You can uncomment any the following lines to change this ++# behavior. Acceptible values are: ++# ++# True: build the extension. Exits with a warning if the ++# required dependencies are not available ++# False: do not build the extension ++# auto: build if the required dependencies are available, ++# otherwise skip silently. This is the default ++# behavior ++# ++#agg = auto ++#cairo = auto ++#gtk = auto ++#gtk3agg = auto ++#gtk3cairo = auto ++#gtkagg = auto ++#macosx = auto ++#pyside = auto ++qt4agg = ++#tkagg = auto ++#windowing = auto ++#wxagg = auto ++ ++[rc_options] ++# User-configurable options ++# ++# Default backend, one of: Agg, Cairo, CocoaAgg, GTK, GTKAgg, GTKCairo, ++# FltkAgg, MacOSX, Pdf, Ps, QtAgg, Qt4Agg, SVG, TkAgg, WX, WXAgg. ++# ++# The Agg, Ps, Pdf and SVG backends do not require external ++# dependencies. Do not choose GTK, GTKAgg, GTKCairo, MacOSX, or TkAgg ++# if you have disabled the relevent extension modules. Agg will be used ++# by default. ++# ++backend = ++# diff --git a/config/patches/medfile.001_parallel.patch b/config/patches/medfile.001_parallel.patch new file mode 100644 index 0000000..a6ce332 --- /dev/null +++ b/config/patches/medfile.001_parallel.patch @@ -0,0 +1,63 @@ +diff -NaurwB med-3.2.1__1/config/cmake_files/FindMedfileMPI.cmake med-3.2.1__0/config/cmake_files/FindMedfileMPI.cmake +--- med-3.2.1__0/config/cmake_files/FindMedfileMPI.cmake 2017-03-15 14:49:45.411703541 +0300 ++++ med-3.2.1__1/config/cmake_files/FindMedfileMPI.cmake 2017-03-15 14:50:25.683932187 +0300 +@@ -83,6 +83,8 @@ + + SET(MED_DEFINE_MED_HAVE_MPI "#define MED_HAVE_MPI") + ++ SET(MED_DEFINE_MED_HAVE_MPI "#define MED_HAVE_MPI") ++ + ELSE(MPI_FOUND OR MPIEXEC) + MESSAGE(STATUS "MPI was not found.") + ENDIF(MPI_FOUND OR MPIEXEC) +diff -NaurwB med-3.2.1__1/python/CMakeLists.txt med-3.2.1__0/python/CMakeLists.txt +--- med-3.2.1__1/python/CMakeLists.txt 2017-03-15 14:49:45.643704857 +0300 ++++ med-3.2.1__0/python/CMakeLists.txt 2017-03-15 14:50:25.675932142 +0300 +@@ -6,6 +6,7 @@ + ${PROJECT_BINARY_DIR}/include + ${HDF5_INCLUDE_DIRS} + ${MPI_INCLUDE_DIRS} ++ ${MPI_INCLUDE_DIRS} + ) + + SET(_swig_files +diff -NaurwB med-3.2.1__1/src/cfi/CMakeLists.txt med-3.2.1__0/src/cfi/CMakeLists.txt +--- med-3.2.1__1/src/cfi/CMakeLists.txt 2017-03-15 14:49:45.679705061 +0300 ++++ med-3.2.1__0/src/cfi/CMakeLists.txt 2017-03-15 14:50:25.695932256 +0300 +@@ -21,6 +21,10 @@ + LIST(APPEND cfi_SOURCES parfilecf.c) + ENDIF(MEDFILE_USE_MPI) + ++IF(MEDFILE_USE_MPI) ++ LIST(APPEND cfi_SOURCES parfilecf.c) ++ENDIF(MEDFILE_USE_MPI) ++ + ADD_DEFINITIONS(-DNOGDI) + + # Intermediary target +diff -NaurwB med-3.2.1__1/src/fi/CMakeLists.txt med-3.2.1__0/src/fi/CMakeLists.txt +--- med-3.2.1__1/src/fi/CMakeLists.txt 2017-03-15 14:49:45.679705061 +0300 ++++ med-3.2.1__0/src/fi/CMakeLists.txt 2017-03-15 14:50:25.699932278 +0300 +@@ -20,4 +20,8 @@ + LIST(APPEND fi_SOURCES medparfile.f) + ENDIF(MEDFILE_USE_MPI) + ++IF(MEDFILE_USE_MPI) ++LIST(APPEND fi_SOURCES medparfile.f) ++ENDIF(MEDFILE_USE_MPI) ++ + ADD_LIBRARY(_fi OBJECT ${fi_SOURCES}) +diff -NaurwB med-3.2.1__1/src/hdfi/CMakeLists.txt med-3.2.1__0/src/hdfi/CMakeLists.txt +--- med-3.2.1__1/src/hdfi/CMakeLists.txt 2017-03-15 14:49:45.671705017 +0300 ++++ med-3.2.1__0/src/hdfi/CMakeLists.txt 2017-03-15 14:50:25.707932324 +0300 +@@ -66,6 +66,10 @@ + IF(MEDFILE_USE_MPI) + LIST(APPEND hdfi_SOURCES _MEDparFileOpen.c _MEDparFileCreate.c) + ENDIF(MEDFILE_USE_MPI) ++ ++IF(MEDFILE_USE_MPI) ++ LIST(APPEND hdfi_SOURCES _MEDparFileOpen.c _MEDparFileCreate.c) ++ENDIF(MEDFILE_USE_MPI) + + ADD_LIBRARY(_hdfi OBJECT ${hdfi_SOURCES}) + diff --git a/config/patches/medfile.002_gcc6.patch b/config/patches/medfile.002_gcc6.patch new file mode 100644 index 0000000..7f61fc8 --- /dev/null +++ b/config/patches/medfile.002_gcc6.patch @@ -0,0 +1,16 @@ +diff -Naur med-3.2.0_SRC_orig/include/H5public_extract.h.in med-3.2.0_SRC_modif/include/H5public_extract.h.in +--- med-3.2.0_SRC_orig/include/H5public_extract.h.in 2016-01-14 18:55:27.000000000 +0300 ++++ med-3.2.0_SRC_modif/include/H5public_extract.h.in 2016-10-18 10:12:45.177767056 +0300 +@@ -28,9 +28,9 @@ + @HDF5_TYPEDEF_HID_T@ + @HDF5_TYPEDEF_HSIZE_T@ + +-#typedef int herr_t; +-#typedef int hid_t; +-#typedef unsigned long long hsize_t; ++//#typedef int herr_t; ++//#typedef int hid_t; ++//#typedef unsigned long long hsize_t; + + #ifdef __cplusplus + } diff --git a/config/patches/netgen.001_sources.patch b/config/patches/netgen.001_sources.patch new file mode 100644 index 0000000..ccd4e8c --- /dev/null +++ b/config/patches/netgen.001_sources.patch @@ -0,0 +1,1455 @@ +diff -NaurwB netgen-5.3.1_orig/Makefile.am netgen-5.3.1_new/Makefile.am +--- netgen-5.3.1_orig/Makefile.am 2016-10-21 17:32:01.000000000 +0300 ++++ netgen-5.3.1_new/Makefile.am 2016-10-21 17:31:54.000000000 +0300 +@@ -2,7 +2,7 @@ + + METASOURCES = AUTO + +-SUBDIRS = libsrc ng tutorials doc windows nglib ++SUBDIRS = libsrc nglib #tutorials doc windows nglib + + # TESTS = ng/netgen -batchmode + +diff -NaurwB netgen-5.3.1_orig/Makefile.in netgen-5.3.1_new/Makefile.in +--- netgen-5.3.1_orig/Makefile.in 2014-10-06 15:04:37.000000000 +0400 ++++ netgen-5.3.1_new/Makefile.in 2016-10-03 16:17:10.164707368 +0300 +@@ -280,7 +280,7 @@ + top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I m4 + METASOURCES = AUTO +-SUBDIRS = libsrc ng tutorials doc windows nglib ++SUBDIRS = libsrc nglib #tutorials doc windows nglib + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +diff -NaurwB netgen-5.3.1_orig/configure.ac netgen-5.3.1_new/configure.ac +--- netgen-5.3.1_orig/configure.ac 2014-10-06 15:00:17.000000000 +0400 ++++ netgen-5.3.1_new/configure.ac 2016-09-29 14:34:11.957389447 +0300 +@@ -20,7 +20,7 @@ + CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" + # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS" + +-AM_PROG_AR ++m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) + AC_PROG_LIBTOOL + LT_INIT + +@@ -42,8 +42,8 @@ + + if test a$occon = atrue ; then + +- AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"]) +- AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"]) ++ AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"]) ++ AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"]) + + # -lTKDCAF + +diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/findip.hpp netgen-5.3.1_new/libsrc/meshing/findip.hpp +--- netgen-5.3.1_orig/libsrc/meshing/findip.hpp 2014-08-29 13:54:05.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/meshing/findip.hpp 2016-09-30 20:38:56.662234111 +0300 +@@ -75,6 +75,9 @@ + static int timer = NgProfiler::CreateTimer ("FindInnerPoint"); + NgProfiler::RegionTimer reg (timer); + ++ if ( points.Size() < 3 ) ++ return 0; ++ + Array a; + Array c; + Mat<3> m, inv; +diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_new/libsrc/meshing/improve3.cpp +--- netgen-5.3.1_orig/libsrc/meshing/improve3.cpp 2014-08-29 13:54:05.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/meshing/improve3.cpp 2016-10-03 16:16:57.636639300 +0300 +@@ -1219,6 +1219,7 @@ + + tetused = 0; + tetused[0] = 1; ++ int nbtetused = 0; + + for (int l = 2; l < nsuround; l++) + { +@@ -1239,10 +1240,12 @@ + + tetused[k] = 1; + suroundpts[l] = newpi; ++ ++nbtetused; + } + } + } +- ++ if ( nbtetused < nsuround ) ++ continue; + + bad1 = 0; + for (int k = 0; k < nsuround; k++) +diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_new/libsrc/meshing/meshtype.cpp +--- netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp 2014-08-29 13:54:05.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/meshing/meshtype.cpp 2016-09-29 14:04:51.500148293 +0300 +@@ -1,4 +1,5 @@ + #include ++#include // to get DBL_MIN defined + + #include "meshing.hpp" + +@@ -666,7 +667,8 @@ + + double det = trans.Det(); + +- if (det <= 0) ++ // if (det <= 0) ++ if (det <= DBL_MIN) // avoid FPE + err += 1e12; + else + err += frob * frob / det; +@@ -722,7 +724,8 @@ + + double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1); + +- if (det <= 0) ++ // if (det <= 0) ++ if (det <= DBL_MIN) // avoid FPE + { + dd = 0; + return 1e12; +@@ -806,7 +809,8 @@ + = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0) + + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0); + +- if (det <= 0) ++ // if (det <= 0) ++ if (det <= DBL_MIN) // avoid FPE + err += 1e12; + else + { +@@ -856,7 +860,8 @@ + frob /= 2; + + double det = trans.Det(); +- if (det <= 0) ++ //if (det <= 0) ++ if (det <= DBL_MIN) // avoid FPE + err += 1e12; + else + err += frob * frob / det; +@@ -1864,7 +1869,8 @@ + case PYRAMID: + { + double noz = 1-p(2); +- if (noz == 0.0) noz = 1e-10; ++ //if (noz == 0.0) noz = 1e-10; ++ if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE + + double xi = p(0) / noz; + double eta = p(1) / noz; +@@ -2030,7 +2036,8 @@ + + double det = -trans.Det(); + +- if (det <= 0) ++ //if (det <= 0) ++ if (det <= DBL_MIN) // avoid FPE + err += 1e12; + else + err += frob * frob * frob / det; +@@ -2102,7 +2109,8 @@ + ddet *= -1; + + +- if (det <= 0) ++ //if (det <= 0) ++ if (det <= DBL_MIN) // avoid FPE + err += 1e12; + else + { +@@ -2184,7 +2192,7 @@ + + det *= -1; + +- if (det <= 0) ++ if (det <= DBL_MIN) + err += 1e12; + else + { +diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_new/libsrc/meshing/meshtype.hpp +--- netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp 2014-08-29 13:54:05.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/meshing/meshtype.hpp 2016-09-30 14:28:09.147575801 +0300 +@@ -15,6 +15,7 @@ + Classes for NETGEN + */ + ++class Mesh; // added due to compilation errors on some platforms + + + enum ELEMENT_TYPE { +@@ -360,7 +361,7 @@ + { + #ifdef DEBUG + if (typ != QUAD && typ != QUAD6 && typ != QUAD8) +- PrintSysError ("element2d::GetNV not implemented for typ", typ) ++ PrintSysError ("element2d::GetNV not implemented for typ", typ); + #endif + return 4; + } +@@ -618,7 +619,7 @@ + return 8; + default: + #ifdef DEBUG +- PrintSysError ("Element3d::GetNV not implemented for typ ", typ) ++ PrintSysError ("Element3d::GetNV not implemented for typ ", typ); + #endif + ; + } +@@ -682,7 +683,7 @@ + case PRISM12: return 5; + default: + #ifdef DEBUG +- PrintSysError ("element3d::GetNFaces not implemented for typ", typ) ++ PrintSysError ("element3d::GetNFaces not implemented for typ", typ); + #endif + ; + } +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx 2016-09-29 14:44:01.996464598 +0300 +@@ -47,9 +47,7 @@ + #include + #include + #include +-#include + #include +-#include + #include + #include + #include +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx 2016-09-29 14:44:01.996464598 +0300 +@@ -27,7 +27,9 @@ + #ifndef _Partition_Inter2d_HeaderFile + #define _Partition_Inter2d_HeaderFile + +-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile ++#include ++ ++#if OCC_VERSION_MAJOR < 7 + #include + #endif + #ifndef _Standard_Real_HeaderFile +@@ -36,11 +38,13 @@ + #ifndef _Standard_Boolean_HeaderFile + #include + #endif ++ ++#include ++#include ++ + class BRepAlgo_AsDes; + class TopoDS_Face; +-class TopTools_MapOfShape; + class TopoDS_Vertex; +-class TopTools_ListOfShape; + class TopoDS_Edge; + + +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx 2016-09-29 14:44:02.000464619 +0300 +@@ -48,7 +48,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -206,7 +205,7 @@ + Handle (Geom_Surface) S = BRep_Tool::Surface(F,L); + + if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) { +- S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface(); ++ S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface(); + } + if (!S->IsUPeriodic() && !S->IsVPeriodic()) + return; +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx 2016-09-29 14:44:02.000464619 +0300 +@@ -27,7 +27,9 @@ + #ifndef _Partition_Inter3d_HeaderFile + #define _Partition_Inter3d_HeaderFile + +-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile ++#include ++ ++#if OCC_VERSION_MAJOR < 7 + #include + #endif + #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile +@@ -36,6 +38,9 @@ + #ifndef _TopTools_MapOfShape_HeaderFile + #include + #endif ++#ifndef _TopTools_ListOfShape_HeaderFile ++#include ++#endif + #ifndef _TopTools_DataMapOfShapeShape_HeaderFile + #include + #endif +@@ -43,10 +48,7 @@ + #include + #endif + class BRepAlgo_AsDes; +-class TopTools_ListOfShape; +-class TopTools_DataMapOfShapeShape; + class TopoDS_Face; +-class TopTools_MapOfShape; + class TopoDS_Shape; + class TopoDS_Vertex; + class TopoDS_Edge; +@@ -83,13 +85,13 @@ + void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ; + Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const; + TopTools_MapOfShape& TouchedFaces() ; +- Handle_BRepAlgo_AsDes AsDes() const; ++ Handle(BRepAlgo_AsDes) AsDes() const; + TopTools_MapOfShape& NewEdges() ; + Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const; + Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const; + const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const; + TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const; +- Handle_BRepAlgo_AsDes SectionEdgesAD() const; ++ Handle(BRepAlgo_AsDes) SectionEdgesAD() const; + Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const; + Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const; + Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const; +@@ -121,11 +123,11 @@ + + // Fields PRIVATE + // +- Handle_BRepAlgo_AsDes myAsDes; ++ Handle(BRepAlgo_AsDes) myAsDes; + TopTools_DataMapOfShapeListOfShape myDone; + TopTools_MapOfShape myTouched; + TopTools_MapOfShape myNewEdges; +- Handle_BRepAlgo_AsDes mySectionEdgesAD; ++ Handle(BRepAlgo_AsDes) mySectionEdgesAD; + TopTools_DataMapOfShapeListOfShape mySameDomainFM; + TopTools_DataMapOfShapeShape mySameDomainVM; + +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx 2016-09-29 14:44:02.000464619 +0300 +@@ -38,8 +38,6 @@ + #endif + class TopoDS_Face; + class TopoDS_Edge; +-class TopTools_ListOfShape; +- + + #ifndef _Standard_HeaderFile + #include +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx 2016-09-29 14:04:51.504148314 +0300 +@@ -210,7 +210,7 @@ + Cc->D1(uc, PC, CTg1); + if (!isForward) CTg1.Reverse(); + +- Standard_Real anglemin = 3 * PI, tolAng = 1.e-8; ++ Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8; + + // select an edge whose first derivative is most left of CTg1 + // ie an angle between Tg1 and CTg1 is least +@@ -234,7 +234,7 @@ + // -PI < angle < PI + Standard_Real angle = Tg1.Angle(CTg1); + +- if (PI - Abs(angle) <= tolAng) ++ if (M_PI - Abs(angle) <= tolAng) + { + // an angle is too close to PI; assure that an angle sign really + // reflects an edge position: +PI - an edge is worst, +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx 2016-09-29 14:44:02.000464619 +0300 +@@ -24,7 +24,6 @@ + #endif + class TopoDS_Face; + class TopoDS_Edge; +-class TopTools_ListOfShape; + class BRepAlgo_Image; + + +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx 2016-09-29 14:44:02.000464619 +0300 +@@ -13,6 +13,9 @@ + #ifndef _TopTools_ListOfShape_HeaderFile + #include + #endif ++#ifndef _TopTools_MapOfOrientedShape_HeaderFile ++#include ++#endif + #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile + #include + #endif +@@ -23,8 +26,6 @@ + #include + #endif + class TopoDS_Shape; +-class TopTools_ListOfShape; +-class TopTools_MapOfOrientedShape; + class TopoDS_Edge; + class TopoDS_Face; + class gp_Vec; +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx 2016-09-29 14:44:02.000464619 +0300 +@@ -48,7 +48,6 @@ + #include + #include + #include +-#include + #include + #include + +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx +--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx 2016-09-29 14:44:02.004464639 +0300 +@@ -28,9 +28,6 @@ + #ifndef _TopTools_DataMapOfShapeShape_HeaderFile + #include + #endif +-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile +-#include +-#endif + #ifndef _BRepAlgo_Image_HeaderFile + #include + #endif +@@ -45,7 +42,6 @@ + #endif + class BRepAlgo_AsDes; + class TopoDS_Shape; +-class TopTools_ListOfShape; + class TopoDS_Edge; + + +@@ -129,7 +125,7 @@ + TopTools_DataMapOfShapeShape myFaceShapeMap; + TopTools_DataMapOfShapeShape myInternalFaces; + TopTools_DataMapOfShapeShape myIntNotClFaces; +- Handle_BRepAlgo_AsDes myAsDes; ++ Handle(BRepAlgo_AsDes) myAsDes; + BRepAlgo_Image myImagesFaces; + BRepAlgo_Image myImagesEdges; + BRepAlgo_Image myImageShape; +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_new/libsrc/occ/occconstruction.cpp +--- netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/occconstruction.cpp 2016-09-29 14:04:51.500148293 +0300 +@@ -28,7 +28,7 @@ + #include + #include + #include +-#include ++//#include + //#include + #include + #include +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp +--- netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp 2016-09-29 14:04:51.500148293 +0300 +@@ -171,8 +171,8 @@ + if(h < 1e-4*maxside) + return; + +- +- if (h > 30) return; ++ // commented to restrict H on a large sphere for example ++ //if (h > 30) return; + } + + if (h < maxside && depth < 10) +@@ -250,8 +250,8 @@ + hvalue[0] = 0; + pnt = c->Value(s0); + +- double olddist = 0; +- double dist = 0; ++ //double olddist = 0; -- useless variables ++ //double dist = 0; + + int tmpVal = (int)(DIVIDEEDGESECTIONS); + +@@ -259,15 +259,19 @@ + { + oldpnt = pnt; + pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0)); ++ // -- no more than 1 segment per /DIVIDEEDGESECTIONS + hvalue[i] = hvalue[i-1] + ++ // 1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))* ++ // pnt.Distance(oldpnt); ++ min( 1.0, + 1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))* +- pnt.Distance(oldpnt); ++ pnt.Distance(oldpnt)); + + //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) + // << " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl; + +- olddist = dist; +- dist = pnt.Distance(oldpnt); ++ //olddist = dist; -- useless variables ++ //dist = pnt.Distance(oldpnt); + } + + // nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS])); +@@ -282,7 +286,10 @@ + { + if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i) + { +- params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0); ++ // -- for nsubedges comparable to DIVIDEEDGESECTIONS ++ //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0); ++ double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]); ++ params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0); + pnt = c->Value(params[i]); + ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z())); + i++; +@@ -326,6 +333,9 @@ + (*testout) << "nedges = " << nedges << endl; + + double eps = 1e-6 * geom.GetBoundingBox().Diam(); ++ const double eps2 = eps * eps; // -- small optimization ++ ++ int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes + + for (int i = 1; i <= nvertices; i++) + { +@@ -335,7 +345,8 @@ + bool exists = 0; + if (merge_solids) + for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++) +- if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps) ++ //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps) ++ if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization + { + exists = 1; + break; +@@ -365,6 +376,7 @@ + { + TopoDS_Face face = TopoDS::Face(exp1.Current()); + int facenr = geom.fmap.FindIndex(face); ++ if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes + + if (face2solid[0][facenr-1] == 0) + face2solid[0][facenr-1] = solidnr; +@@ -384,6 +396,7 @@ + int facenr = 0; + int edgenr = 0; + ++ edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes + + (*testout) << "faces = " << geom.fmap.Extent() << endl; + int curr = 0; +@@ -445,6 +458,7 @@ + //(*testout) << "ignoring degenerated edge" << endl; + continue; + } ++ if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes + + if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) == + geom.vmap.FindIndex(TopExp::LastVertex (edge))) +@@ -477,20 +491,104 @@ + + if (!merge_solids) + { +- pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge)); +- pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge)); ++ //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge)); ++ //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge)); ++ MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) ); ++ int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] }; ++ TopoDS_Iterator vIt( edge, false ); ++ TopoDS_Vertex v[2]; ++ v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next(); ++ v[1] = TopoDS::Vertex( vIt.Value() ); ++ if ( v[0].Orientation() == TopAbs_REVERSED ) ++ std::swap( v[0], v[1] ); ++ for ( int i = 0; i < 2; ++i) ++ { ++ int &ip = *ipp[i]; ++ ip = geom.vmap.FindIndex ( v[i] ); ++ if ( ip == 0 || ip > nvertices ) ++ { ++ int iv = ip; ++ if ( ip == 0 ) ++ ip = iv = geom.vmap.Add( v[i] ); ++ gp_Pnt pnt = BRep_Tool::Pnt( v[i] ); ++ MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) ); ++ for (PointIndex pi = 1; pi < first_vp; pi++) ++ if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 ) ++ { ++ ip = pi; ++ if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv ) ++ continue; ++ if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer()) ++ mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv ); ++ break; ++ } + } + else + { +- Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge))); +- Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge))); ++ ip += first_vp - 1; ++ } ++ } ++ } ++ else ++ { ++ TopoDS_Iterator vIt( edge, false ); ++ TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next(); ++ TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() ); ++ if ( v1.Orientation() == TopAbs_REVERSED ) ++ std::swap( v1, v2 ); ++ const bool isClosedEdge = v1.IsSame( v2 ); ++ ++ Point<3> fp = occ2ng (BRep_Tool::Pnt (v1)); ++ Point<3> lp = occ2ng (BRep_Tool::Pnt (v2)); ++ double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp )); ++ if ( isClosedEdge ) ++ tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 ); + + pnums[0] = -1; + pnums.Last() = -1; + for (PointIndex pi = 1; pi < first_ep; pi++) + { +- if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi; +- if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi; ++ if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi; ++ if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi; ++ } ++ if (( isClosedEdge && pnums[0] != pnums.Last() ) || ++ ( !isClosedEdge && pnums[0] == pnums.Last() )) ++ pnums[0] = pnums.Last() = -1; ++ if ( pnums[0] == -1 || pnums.Last() == -1 ) ++ { ++ // take into account a possible large gap between a vertex and an edge curve ++ // end and a large vertex tolerance covering the whole edge ++ if ( pnums[0] == -1 ) ++ { ++ double tol = BRep_Tool::Tolerance( v1 ); ++ for (PointIndex pi = 1; pi < first_ep; pi++) ++ if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol) ++ pnums[0] = pi; ++ ++ if ( pnums[0] == -1 ) ++ pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 ); ++ } ++ if ( isClosedEdge ) ++ { ++ pnums.Last() = pnums[0]; ++ } ++ else ++ { ++ if ( pnums.Last() == -1 ) ++ { ++ double tol = BRep_Tool::Tolerance( v2 ); ++ for (PointIndex pi = 1; pi < first_ep; pi++) ++ if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol) ++ pnums.Last() = pi; ++ ++ if ( pnums.Last() == -1 ) ++ pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 ); ++ } ++ ++ if ( Dist2( fp, mesh[PointIndex(pnums[0])]) > ++ Dist2( lp, mesh[PointIndex(pnums.Last())])) ++ std::swap( pnums[0], pnums.Last() ); ++ } + } + } + +@@ -500,17 +598,20 @@ + bool exists = 0; + int j; + for (j = first_ep; j <= mesh.GetNP(); j++) ++ { ++ if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges + if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps) + { + exists = 1; + break; + } ++ } + + if (exists) + pnums[i] = j; + else + { +- mesh.AddPoint (mp[i-1]); ++ mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges + (*testout) << "add meshpoint " << mp[i-1] << endl; + pnums[i] = mesh.GetNP(); + } +@@ -594,6 +695,8 @@ + // (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si + // << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl; + // exit(10); ++ for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero ++ mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) ); + + mesh.CalcSurfacesOfNode(); + multithread.task = savetask; +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_new/libsrc/occ/occgeom.cpp +--- netgen-5.3.1_orig/libsrc/occ/occgeom.cpp 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/occgeom.cpp 2016-09-29 16:22:31.636328123 +0300 +@@ -8,6 +8,8 @@ + #include "ShapeAnalysis_CheckSmallFace.hxx" + #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx" + #include "ShapeAnalysis_Surface.hxx" ++#include // -- to optimize Project() and FastProject() ++#include + #include "BRepAlgoAPI_Fuse.hxx" + #include "BRepCheck_Analyzer.hxx" + #include "BRepLib.hxx" +@@ -16,9 +18,16 @@ + #include "ShapeFix_FixSmallFace.hxx" + #include "Partition_Spliter.hxx" + +- + namespace netgen + { ++ // free data used to optimize Project() and FastProject() ++ OCCGeometry::~OCCGeometry() ++ { ++ NCollection_DataMap::Iterator it(fclsmap); ++ for (; it.More(); it.Next()) ++ delete it.Value(); ++ } ++ + void OCCGeometry :: PrintNrShapes () + { + TopExp_Explorer e; +@@ -112,7 +121,7 @@ + double surfacecont = 0; + + { +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Apply(shape); + for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next()) + { +@@ -143,7 +152,7 @@ + cout << endl << "- repairing faces" << endl; + + Handle(ShapeFix_Face) sff; +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Apply(shape); + + +@@ -200,7 +209,7 @@ + + + { +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Apply(shape); + for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next()) + { +@@ -217,7 +226,7 @@ + cout << endl << "- fixing small edges" << endl; + + Handle(ShapeFix_Wire) sfw; +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Apply(shape); + + +@@ -284,7 +293,7 @@ + + { + BuildFMap(); +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Apply(shape); + + for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next()) +@@ -312,7 +321,7 @@ + + + { +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Apply(shape); + for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next()) + { +@@ -438,7 +447,7 @@ + + + { +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Apply(shape); + for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next()) + { +@@ -483,7 +492,7 @@ + TopoDS_Solid solid = TopoDS::Solid(exp0.Current()); + TopoDS_Solid newsolid = solid; + BRepLib::OrientClosedSolid (newsolid); +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + // rebuild->Apply(shape); + rebuild->Replace(solid, newsolid, Standard_False); + TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1); +@@ -906,7 +915,7 @@ + TopoDS_Solid solid = TopoDS::Solid(exp0.Current()); + TopoDS_Solid newsolid = solid; + BRepLib::OrientClosedSolid (newsolid); +- Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape; ++ Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape; + rebuild->Replace(solid, newsolid, Standard_False); + + TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1); +@@ -951,25 +960,58 @@ + } + + ++ // returns a projector and a classifier for the given surface ++ void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj, ++ BRepTopAdaptor_FClass2d*& cls) const ++ { ++ //MSV: organize caching projector in the map ++ if (fprjmap.IsBound(surfi)) ++ { ++ proj = fprjmap.Find(surfi); ++ cls = fclsmap.Find(surfi); ++ } ++ else ++ { ++ const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi)); ++ Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace); ++ proj = new ShapeAnalysis_Surface(aSurf); ++ fprjmap.Bind(surfi, proj); ++ cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion()); ++ fclsmap.Bind(surfi, cls); ++ } ++ } + +- +- void OCCGeometry :: Project (int surfi, Point<3> & p) const ++ // void OCCGeometry :: Project (int surfi, Point<3> & p) const ++ bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const + { + static int cnt = 0; + if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl; + + gp_Pnt pnt(p(0), p(1), p(2)); + +- double u,v; +- Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi))); +- Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf ); +- gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) ); +- suval.Coord( u, v); +- pnt = thesurf->Value( u, v ); ++ // -- Optimization: use cached projector and classifier ++ // double u,v; ++ // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi))); ++ // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf ); ++ // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) ); ++ // suval.Coord( u, v); ++ // pnt = thesurf->Value( u, v ); ++ ++ Handle(ShapeAnalysis_Surface) proj; ++ BRepTopAdaptor_FClass2d *cls; ++ GetFaceTools(surfi, proj, cls); + ++ gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion()); ++ if (cls->Perform(p2d) == TopAbs_OUT) ++ { ++ return false; ++ } ++ pnt = proj->Value(p2d); ++ p2d.Coord(u, v); + + p = Point<3> (pnt.X(), pnt.Y(), pnt.Z()); + ++ return true; + } + + +@@ -979,54 +1021,69 @@ + { + gp_Pnt p(ap(0), ap(1), ap(2)); + +- Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi))); +- +- gp_Pnt x = surface->Value (u,v); +- +- if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true; +- +- gp_Vec du, dv; ++ // -- Optimization: use cached projector and classifier ++ // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi))); ++ // ++ // gp_Pnt x = surface->Value (u,v); ++ // ++ // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true; ++ // ++ // gp_Vec du, dv; ++ // ++ // surface->D1(u,v,x,du,dv); ++ // ++ // int count = 0; ++ // ++ // gp_Pnt xold; ++ // gp_Vec n; ++ // double det, lambda, mu; ++ // ++ // do { ++ // count++; ++ // ++ // n = du^dv; ++ // ++ // det = Det3 (n.X(), du.X(), dv.X(), ++ // n.Y(), du.Y(), dv.Y(), ++ // n.Z(), du.Z(), dv.Z()); ++ // ++ // if (det < 1e-15) return false; ++ // ++ // lambda = Det3 (n.X(), p.X()-x.X(), dv.X(), ++ // n.Y(), p.Y()-x.Y(), dv.Y(), ++ // n.Z(), p.Z()-x.Z(), dv.Z())/det; ++ // ++ // mu = Det3 (n.X(), du.X(), p.X()-x.X(), ++ // n.Y(), du.Y(), p.Y()-x.Y(), ++ // n.Z(), du.Z(), p.Z()-x.Z())/det; ++ // ++ // u += lambda; ++ // v += mu; ++ // ++ // xold = x; ++ // surface->D1(u,v,x,du,dv); ++ // ++ // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50); ++ // ++ // // (*testout) << "FastProject count: " << count << endl; ++ // ++ // if (count == 50) return false; ++ // ++ // ap = Point<3> (x.X(), x.Y(), x.Z()); ++ Handle(ShapeAnalysis_Surface) proj; ++ BRepTopAdaptor_FClass2d *cls; ++ GetFaceTools(surfi, proj, cls); + +- surface->D1(u,v,x,du,dv); +- +- int count = 0; +- +- gp_Pnt xold; +- gp_Vec n; +- double det, lambda, mu; +- +- do { +- count++; +- +- n = du^dv; +- +- det = Det3 (n.X(), du.X(), dv.X(), +- n.Y(), du.Y(), dv.Y(), +- n.Z(), du.Z(), dv.Z()); +- +- if (det < 1e-15) return false; +- +- lambda = Det3 (n.X(), p.X()-x.X(), dv.X(), +- n.Y(), p.Y()-x.Y(), dv.Y(), +- n.Z(), p.Z()-x.Z(), dv.Z())/det; +- +- mu = Det3 (n.X(), du.X(), p.X()-x.X(), +- n.Y(), du.Y(), p.Y()-x.Y(), +- n.Z(), du.Z(), p.Z()-x.Z())/det; +- +- u += lambda; +- v += mu; +- +- xold = x; +- surface->D1(u,v,x,du,dv); +- +- } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50); +- +- // (*testout) << "FastProject count: " << count << endl; +- +- if (count == 50) return false; ++ gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion()); ++ if (cls->Perform(p2d) == TopAbs_OUT) ++ { ++ //cout << "Projection fails" << endl; ++ return false; ++ } + +- ap = Point<3> (x.X(), x.Y(), x.Z()); ++ p = proj->Value(p2d); ++ p2d.Coord(u, v); ++ ap = Point<3> (p.X(), p.Y(), p.Z()); + + return true; + } +@@ -1038,9 +1095,9 @@ + { + cout << "writing stl..."; cout.flush(); + StlAPI_Writer writer; +- writer.RelativeMode() = Standard_False; ++ //writer.RelativeMode() = Standard_False; + +- writer.SetDeflection(0.02); ++ //writer.SetDeflection(0.02); + writer.Write(shape,filename); + + cout << "done" << endl; +@@ -1059,10 +1116,10 @@ + occgeo = new OCCGeometry; + + // Initiate a dummy XCAF Application to handle the IGES XCAF Document +- static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication(); ++ static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication(); + + // Create an XCAF Document to contain the IGES file itself +- Handle_TDocStd_Document iges_doc; ++ Handle(TDocStd_Document) iges_doc; + + // Check if a IGES File is already open under this handle, if so, close it to prevent + // Segmentation Faults when trying to create a new document +@@ -1089,8 +1146,8 @@ + reader.Transfer(iges_doc); + + // Read in the shape(s) and the colours present in the IGES File +- Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main()); +- Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main()); ++ Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main()); ++ Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main()); + + TDF_LabelSequence iges_shapes; + iges_shape_contents->GetShapes(iges_shapes); +@@ -1137,10 +1194,10 @@ + occgeo = new OCCGeometry; + + // Initiate a dummy XCAF Application to handle the STEP XCAF Document +- static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication(); ++ static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication(); + + // Create an XCAF Document to contain the STEP file itself +- Handle_TDocStd_Document step_doc; ++ Handle(TDocStd_Document) step_doc; + + // Check if a STEP File is already open under this handle, if so, close it to prevent + // Segmentation Faults when trying to create a new document +@@ -1167,8 +1224,8 @@ + reader.Transfer(step_doc); + + // Read in the shape(s) and the colours present in the STEP File +- Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main()); +- Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main()); ++ Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main()); ++ Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main()); + + TDF_LabelSequence step_shapes; + step_shape_contents->GetShapes(step_shapes); +@@ -1221,7 +1278,7 @@ + // Fixed a bug in the OpenCascade XDE Colour handling when + // opening BREP Files, since BREP Files have no colour data. + // Hence, the face_colours Handle needs to be created as a NULL handle. +- occgeo->face_colours = Handle_XCAFDoc_ColorTool(); ++ occgeo->face_colours = Handle(XCAFDoc_ColorTool)(); + occgeo->face_colours.Nullify(); + occgeo->changed = 1; + occgeo->BuildFMap(); +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_new/libsrc/occ/occgeom.hpp +--- netgen-5.3.1_orig/libsrc/occ/occgeom.hpp 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/occgeom.hpp 2016-09-29 14:44:01.996464598 +0300 +@@ -15,8 +15,8 @@ + #include "Geom_Curve.hxx" + #include "Geom2d_Curve.hxx" + #include "Geom_Surface.hxx" +-#include "GeomAPI_ProjectPointOnSurf.hxx" +-#include "GeomAPI_ProjectPointOnCurve.hxx" ++// #include "GeomAPI_ProjectPointOnSurf.hxx" ++// #include "GeomAPI_ProjectPointOnCurve.hxx" + #include "BRepTools.hxx" + #include "TopExp.hxx" + #include "BRepBuilderAPI_MakeVertex.hxx" +@@ -42,8 +42,8 @@ + #include "Geom_Curve.hxx" + #include "Geom2d_Curve.hxx" + #include "Geom_Surface.hxx" +-#include "GeomAPI_ProjectPointOnSurf.hxx" +-#include "GeomAPI_ProjectPointOnCurve.hxx" ++// #include "GeomAPI_ProjectPointOnSurf.hxx" ++// #include "GeomAPI_ProjectPointOnCurve.hxx" + #include "TopoDS_Wire.hxx" + #include "BRepTools_WireExplorer.hxx" + #include "BRepTools.hxx" +@@ -68,18 +68,26 @@ + #include "IGESToBRep_Reader.hxx" + #include "Interface_Static.hxx" + #include "GeomAPI_ExtremaCurveCurve.hxx" +-#include "Standard_ErrorHandler.hxx" ++//#include "Standard_ErrorHandler.hxx" + #include "Standard_Failure.hxx" + #include "ShapeUpgrade_ShellSewing.hxx" + #include "ShapeFix_Shape.hxx" + #include "ShapeFix_Wireframe.hxx" ++#include ++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702 ++// porting to OCCT6.7.3 + #include "BRepMesh.hxx" ++#endif + #include "BRepMesh_IncrementalMesh.hxx" + #include "BRepBndLib.hxx" + #include "Bnd_Box.hxx" + #include "ShapeAnalysis.hxx" + #include "ShapeBuild_ReShape.hxx" + ++// -- Optimization: to use cached projector and classifier ++#include ++class ShapeAnalysis_Surface; ++class BRepTopAdaptor_FClass2d; + + // Philippose - 29/01/2009 + // OpenCascade XDE Support +@@ -192,6 +200,9 @@ + class OCCGeometry : public NetgenGeometry + { + Point<3> center; ++ // -- Optimization: to use cached projector and classifier ++ mutable NCollection_DataMap fprjmap; ++ mutable NCollection_DataMap fclsmap; + + public: + TopoDS_Shape shape; +@@ -203,7 +214,7 @@ + // OpenCascade XDE Support + // XCAF Handle to make the face colours available to the rest of + // the system +- Handle_XCAFDoc_ColorTool face_colours; ++ Handle(XCAFDoc_ColorTool) face_colours; + + mutable int changed; + Array facemeshstatus; +@@ -247,6 +258,8 @@ + virtual void Save (string filename) const; + + ++ ~OCCGeometry(); // -- to free cached projector and classifier ++ + void BuildFMap(); + + Box<3> GetBoundingBox() +@@ -266,9 +279,14 @@ + Point<3> Center() + { return center;} + +- void Project (int surfi, Point<3> & p) const; ++ // void Project (int surfi, Point<3> & p) const; -- optimization ++ bool Project (int surfi, Point<3> & p, double& u, double& v) const; + bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const; + ++ // -- Optimization: to use cached projector and classifier ++ void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj, ++ BRepTopAdaptor_FClass2d*& cls) const; ++ + OCCSurface GetSurface (int surfi) + { + cout << "OCCGeometry::GetSurface using PLANESPACE" << endl; +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp +--- netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp 2016-09-29 14:08:00.045144560 +0300 +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include // -- moved here from occgeom.hpp + + + namespace netgen +@@ -96,13 +97,16 @@ + + n.Normalize(); + } +- else ++ else if ( lprop.IsNormalDefined() ) + { + n(0)=lprop.Normal().X(); + n(1)=lprop.Normal().Y(); + n(2)=lprop.Normal().Z(); + } +- ++ else ++ { ++ n = 0; ++ } + if(glob_testout) + { + (*testout) << "u " << geominfo.u << " v " << geominfo.v +@@ -434,23 +435,33 @@ + + void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const + { +- geometry.Project (surfind, p); ++ // geometry.Project (surfind, p); -- signature of Project() changed for optimization ++ double u, v; ++ geometry.Project (surfind, p, u, v); + } + + + int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const + { +- double u = gi.u; +- double v = gi.v; ++ //double u = gi.u; ++ //double v = gi.v; + + Point<3> hp = p; +- if (geometry.FastProject (surfind, hp, u, v)) +- { ++ // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo() ++ // if (geometry.FastProject (surfind, hp, u, v)) ++ // { ++ // p = hp; ++ // return 1; ++ // } ++ // ProjectPoint (surfind, p); ++ // return CalcPointGeomInfo (surfind, gi, p); ++ bool ok; ++ if (gi.trignum > 0) ++ ok = geometry.FastProject (surfind, hp, gi.u, gi.v); ++ else ++ ok = geometry.Project (surfind, hp, gi.u, gi.v); + p = hp; +- return 1; +- } +- ProjectPoint (surfind, p); +- return CalcPointGeomInfo (surfind, gi, p); ++ return ok; + } + + +@@ -680,7 +691,8 @@ + if (!geometry.FastProject (surfi, hnewp, u, v)) + { + // cout << "Fast projection to surface fails! Using OCC projection" << endl; +- geometry.Project (surfi, hnewp); ++ // geometry.Project (surfi, hnewp); -- Project() changed for optimization ++ geometry.Project (surfi, hnewp, u, v); + } + + newgi.trignum = 1; +@@ -689,7 +701,7 @@ + } + + newp = hnewp; +- } ++ }//; -- to compile with -Wall -pedantic + + + void OCCRefinementSurfaces :: +@@ -708,14 +720,18 @@ + hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z()); + newp = hnewp; + newgi = ap1; +- }; ++ }//; -- to compile with -Wall -pedantic + + + void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const + { + if (surfi > 0) +- geometry.Project (surfi, p); +- }; ++ //geometry.Project (surfi, p); ++ { ++ double u, v; ++ geometry.Project (surfi, p, u, v); ++ } ++ }//; -- to compile with -Wall -pedantic + + void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const + { +@@ -723,9 +739,10 @@ + if (!geometry.FastProject (surfi, p, gi.u, gi.v)) + { + cout << "Fast projection to surface fails! Using OCC projection" << endl; +- geometry.Project (surfi, p); ++ double u, v; ++ geometry.Project (surfi, p, u, v); ++ } + } +- }; + + + +diff -NaurwB netgen-5.3.1_orig/libsrc/occ/utilities.h netgen-5.3.1_new/libsrc/occ/utilities.h +--- netgen-5.3.1_orig/libsrc/occ/utilities.h 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/utilities.h 2016-09-29 14:04:51.504148314 +0300 +@@ -33,6 +33,7 @@ + + #include + #include ++#include + #include + // #include "SALOME_Log.hxx" + +diff -NaurwB netgen-5.3.1_orig/nglib/nglib.h netgen-5.3.1_new/nglib/nglib.h +--- netgen-5.3.1_orig/nglib/nglib.h 2014-08-29 13:54:00.000000000 +0400 ++++ netgen-5.3.1_new/nglib/nglib.h 2016-09-29 14:04:51.504148314 +0300 +@@ -24,7 +24,7 @@ + // Philippose - 14.02.2009 + // Modifications for creating a DLL in Windows + #ifdef WIN32 +- #ifdef NGLIB_EXPORTS || nglib_EXPORTS ++ #if defined NGLIB_EXPORTS || defined nglib_EXPORTS + #define DLL_HEADER __declspec(dllexport) + #else + #define DLL_HEADER __declspec(dllimport) +diff -Naur netgen-5.3.1_orig/libsrc/csg/Makefile.am netgen-5.3.1_new/libsrc/csg/Makefile.am +--- netgen-5.3.1_orig/libsrc/csg/Makefile.am 2014-08-29 13:54:06.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/csg/Makefile.am 2016-11-08 17:48:02.000000000 +0300 +@@ -8,7 +8,7 @@ + AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES) + METASOURCES = AUTO + +-lib_LTLIBRARIES = libcsg.la ++noinst_LTLIBRARIES = libcsg.la + + + libcsg_la_SOURCES = algprim.cpp brick.cpp \ +@@ -17,12 +17,9 @@ + manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \ + solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp + +-libcsg_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la +- +- + + if NGGUI +-lib_LTLIBRARIES += libcsgvis.la ++lib_LTLIBRARIES = libcsgvis.la + + libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp + libcsgvis_la_LIBADD = libcsg.la +diff -Naur netgen-5.3.1_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_new/libsrc/geom2d/Makefile.am +--- netgen-5.3.1_orig/libsrc/geom2d/Makefile.am 2014-08-29 13:54:06.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/geom2d/Makefile.am 2016-11-08 17:49:13.000000000 +0300 +@@ -4,16 +4,15 @@ + + METASOURCES = AUTO + +-lib_LTLIBRARIES = libgeom2d.la ++noinst_LTLIBRARIES = libgeom2d.la + + if NGGUI +-lib_LTLIBRARIES += libgeom2dvis.la ++lib_LTLIBRARIES = libgeom2dvis.la + endif + + + + libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp +-libgeom2d_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la + + libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp + libgeom2dvis_la_LIBADD = libgeom2d.la +diff -Naur netgen-5.3.1_orig/libsrc/interface/Makefile.am netgen-5.3.1_new/libsrc/interface/Makefile.am +--- netgen-5.3.1_orig/libsrc/interface/Makefile.am 2014-08-29 13:54:02.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/interface/Makefile.am 2016-11-08 17:49:26.000000000 +0300 +@@ -2,14 +2,11 @@ + + AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL + METASOURCES = AUTO +-lib_LTLIBRARIES = libinterface.la ++noinst_LTLIBRARIES = libinterface.la + libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \ + read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \ + writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \ + writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \ + wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp + +- +-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la +- + # libinterface_la_LDFLAGS = -rdynamic +diff -Naur netgen-5.3.1_orig/libsrc/meshing/Makefile.am netgen-5.3.1_new/libsrc/meshing/Makefile.am +--- netgen-5.3.1_orig/libsrc/meshing/Makefile.am 2014-08-29 13:54:05.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/meshing/Makefile.am 2016-11-08 17:48:44.000000000 +0300 +@@ -15,7 +15,7 @@ + + METASOURCES = AUTO + +-lib_LTLIBRARIES = libmesh.la ++noinst_LTLIBRARIES = libmesh.la + + libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \ + clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp \ +@@ -30,8 +30,5 @@ + topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp \ + parallelmesh.cpp paralleltop.cpp paralleltop.hpp basegeom.cpp + +-libmesh_la_LIBADD = $(top_builddir)/libsrc/linalg/libla.la \ +- $(top_builddir)/libsrc/gprim/libgprim.la \ +- $(top_builddir)/libsrc/general/libgen.la \ +- -lz ++libmesh_la_LIBADD = -lz + +diff -Naur netgen-5.3.1_orig/libsrc/occ/Makefile.am netgen-5.3.1_new/libsrc/occ/Makefile.am +--- netgen-5.3.1_orig/libsrc/occ/Makefile.am 2014-08-29 13:54:03.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/occ/Makefile.am 2016-11-08 17:30:53.000000000 +0300 +@@ -14,10 +14,10 @@ + + METASOURCES = AUTO + +-lib_LTLIBRARIES = libocc.la ++noinst_LTLIBRARIES = libocc.la + + if NGGUI +-lib_LTLIBRARIES += liboccvis.la ++lib_LTLIBRARIES = liboccvis.la + endif + + +diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_new/libsrc/stlgeom/Makefile.am +--- netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am 2014-08-29 13:54:05.000000000 +0400 ++++ netgen-5.3.1_new/libsrc/stlgeom/Makefile.am 2016-11-08 18:28:09.000000000 +0300 +@@ -4,10 +4,10 @@ + AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES) + METASOURCES = AUTO + +-lib_LTLIBRARIES = libstl.la ++noinst_LTLIBRARIES = libstl.la + + if NGGUI +-lib_LTLIBRARIES += libstlvis.la ++lib_LTLIBRARIES = libstlvis.la + endif + + libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \ +@@ -16,6 +16,5 @@ + + libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp + libstlvis_la_LIBADD = libstl.la +-libstl_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la + # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la + +diff -Naur netgen-5.3.1_orig/nglib/Makefile.am netgen-5.3.1_new/nglib/Makefile.am +--- netgen-5.3.1_orig/nglib/Makefile.am 2014-08-29 13:54:00.000000000 +0400 ++++ netgen-5.3.1_new/nglib/Makefile.am 2016-11-08 19:01:17.000000000 +0300 +@@ -14,6 +14,9 @@ + $(top_builddir)/libsrc/stlgeom/libstl.la \ + $(top_builddir)/libsrc/occ/libocc.la \ + $(top_builddir)/libsrc/meshing/libmesh.la \ ++ $(top_builddir)/libsrc/general/libgen.la \ ++ $(top_builddir)/libsrc/gprim/libgprim.la \ ++ $(top_builddir)/libsrc/linalg/libla.la + $(OCCLIBS) $(MPI_LIBS) + + libnglib_la_LDFLAGS = -avoid-version diff --git a/config/patches/omniorb.001_omninotify_compilation.patch b/config/patches/omniorb.001_omninotify_compilation.patch new file mode 100755 index 0000000..6ee139f --- /dev/null +++ b/config/patches/omniorb.001_omninotify_compilation.patch @@ -0,0 +1,4584 @@ +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/all_cosnotify_clients.cc omniNotify-2.1.new/examples/all_cosnotify_clients.cc +--- omniNotify-2.1.orig/examples/all_cosnotify_clients.cc 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/examples/all_cosnotify_clients.cc 2009-06-28 17:19:34.000000000 +0400 +@@ -41,7 +41,7 @@ + num_con_events = 6 * num_events; + + // (2) Obtain reference to notification channel +- if (verbose) cout << "Obtaining reference to notification channel" << endl; ++ if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl; + CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose); + if (CORBA::is_nil(channel)) { // name service lookup failed + channel = getchan_from_iorfile(orb, ior_file, verbose); +@@ -51,7 +51,7 @@ + } + + // (3) Create all 12 CosNotify-style clients +- if (verbose) cout << "Creating 12 clients" << endl; ++ if (verbose) std::cout << "Creating 12 clients" << std::endl; + + // (3.1) any_push_consumer + PushConsumer_i* a_push_c = +@@ -59,7 +59,7 @@ + "", "", sample_consume_any_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_push_c) { +- cerr << "Constructing any_push_consumer failed" << endl; ++ std::cerr << "Constructing any_push_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::PushConsumer_var my_a_push_c = a_push_c->_this(); +@@ -71,7 +71,7 @@ + "", "", sample_consume_structured_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_push_c) { +- cerr << "Constructing struct_push_consumer failed" << endl; ++ std::cerr << "Constructing struct_push_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::StructuredPushConsumer_var my_s_push_c = s_push_c->_this(); +@@ -83,7 +83,7 @@ + "", "", sample_consume_batch_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_push_c) { +- cerr << "Constructing batch_push_consumer failed" << endl; ++ std::cerr << "Constructing batch_push_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::SequencePushConsumer_var my_b_push_c = b_push_c->_this(); +@@ -95,7 +95,7 @@ + "", "", sample_consume_any_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_pull_c) { +- cerr << "Constructing any_pull_consumer failed" << endl; ++ std::cerr << "Constructing any_pull_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::PullConsumer_var my_a_pull_c = a_pull_c->_this(); +@@ -107,7 +107,7 @@ + "", "", sample_consume_structured_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_pull_c) { +- cerr << "Constructing struct_pull_consumer failed" << endl; ++ std::cerr << "Constructing struct_pull_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::StructuredPullConsumer_var my_s_pull_c = s_pull_c->_this(); +@@ -119,7 +119,7 @@ + "", "", sample_consume_batch_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_pull_c) { +- cerr << "Constructing batch_pull_consumer failed" << endl; ++ std::cerr << "Constructing batch_pull_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::SequencePullConsumer_var my_b_pull_c = b_pull_c->_this(); +@@ -131,7 +131,7 @@ + "", "", sample_supply_any_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_push_s) { +- cerr << "Constructing any_push_supplier failed" << endl; ++ std::cerr << "Constructing any_push_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::PushSupplier_var my_a_push_s = a_push_s->_this(); +@@ -143,7 +143,7 @@ + "", "", sample_supply_structured_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_push_s) { +- cerr << "Constructing struct_push_supplier failed" << endl; ++ std::cerr << "Constructing struct_push_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::StructuredPushSupplier_var my_s_push_s = s_push_s->_this(); +@@ -155,7 +155,7 @@ + "", "", sample_supply_batch_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_push_s) { +- cerr << "Constructing batch_push_supplier failed" << endl; ++ std::cerr << "Constructing batch_push_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::SequencePushSupplier_var my_b_push_s = b_push_s->_this(); +@@ -167,7 +167,7 @@ + "", "", sample_supply_any_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_pull_s) { +- cerr << "Constructing any_pull_supplier failed" << endl; ++ std::cerr << "Constructing any_pull_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::PullSupplier_var my_a_pull_s = a_pull_s->_this(); +@@ -179,7 +179,7 @@ + "", "", sample_supply_structured_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_pull_s) { +- cerr << "Constructing struct_pull_supplier failed" << endl; ++ std::cerr << "Constructing struct_pull_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::StructuredPullSupplier_var my_s_pull_s = s_pull_s->_this(); +@@ -191,75 +191,75 @@ + "", "", sample_supply_batch_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_pull_s) { +- cerr << "Constructing batch_pull_supplier failed" << endl; ++ std::cerr << "Constructing batch_pull_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + CosNotifyComm::SequencePullSupplier_var my_b_pull_s = b_pull_s->_this(); + b_pull_s->_remove_ref(); // enables POA cleanup of servant + + // (4) Tell POA we are ready to go +- if (verbose) cout << "Activating POA manager" << endl; ++ if (verbose) std::cout << "Activating POA manager" << std::endl; + PortableServer::POAManager_var pman = poa->the_POAManager(); + pman->activate(); + + // (5) Connect clients to their proxies -- consumers first +- if (verbose) cout << "Connecting consumer clients to proxies" << endl; ++ if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl; + + if (a_push_c->connect()) { +- cerr << "Connecting any_push_consumer failed" << endl; ++ std::cerr << "Connecting any_push_consumer failed" << std::endl; + goto error_return; + } + if (s_push_c->connect()) { +- cerr << "Connecting struct_push_consumer failed" << endl; ++ std::cerr << "Connecting struct_push_consumer failed" << std::endl; + goto error_return; + } + if (b_push_c->connect()) { +- cerr << "Connecting batch_push_consumer failed" << endl; ++ std::cerr << "Connecting batch_push_consumer failed" << std::endl; + goto error_return; + } + + if (a_pull_c->connect()) { +- cerr << "Connecting any_pull_consumer failed" << endl; ++ std::cerr << "Connecting any_pull_consumer failed" << std::endl; + goto error_return; + } + if (s_pull_c->connect()) { +- cerr << "Connecting struct_pull_consumer failed" << endl; ++ std::cerr << "Connecting struct_pull_consumer failed" << std::endl; + goto error_return; + } + if (b_pull_c->connect()) { +- cerr << "Connecting batch_pull_consumer failed" << endl; ++ std::cerr << "Connecting batch_pull_consumer failed" << std::endl; + goto error_return; + } + +- if (verbose) cout << "Connecting supplier clients to proxies" << endl; ++ if (verbose) std::cout << "Connecting supplier clients to proxies" << std::endl; + + if (a_push_s->connect()) { +- cerr << "Connecting any_push_supplier failed" << endl; ++ std::cerr << "Connecting any_push_supplier failed" << std::endl; + goto error_return; + } + if (s_push_s->connect()) { +- cerr << "Connecting struct_push_supplier failed" << endl; ++ std::cerr << "Connecting struct_push_supplier failed" << std::endl; + goto error_return; + } + if (b_push_s->connect()) { +- cerr << "Connecting batch_push_supplier failed" << endl; ++ std::cerr << "Connecting batch_push_supplier failed" << std::endl; + goto error_return; + } + + if (a_pull_s->connect()) { +- cerr << "Connecting any_pull_supplier failed" << endl; ++ std::cerr << "Connecting any_pull_supplier failed" << std::endl; + goto error_return; + } + if (s_pull_s->connect()) { +- cerr << "Connecting struct_pull_supplier failed" << endl; ++ std::cerr << "Connecting struct_pull_supplier failed" << std::endl; + goto error_return; + } + if (b_pull_s->connect()) { +- cerr << "Connecting batch_pull_supplier failed" << endl; ++ std::cerr << "Connecting batch_pull_supplier failed" << std::endl; + goto error_return; + } + +- if (verbose) cout << "Waiting for all 12 clients to finish" << endl; ++ if (verbose) std::cout << "Waiting for all 12 clients to finish" << std::endl; + CORBA::Boolean a_push_c_err = a_push_c->wait_done(); + CORBA::Boolean s_push_c_err = s_push_c->wait_done(); + CORBA::Boolean b_push_c_err = b_push_c->wait_done(); +@@ -291,10 +291,10 @@ + b_pull_s_err; + + if (com_err && (num_events > 0)) { +- if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl; ++ if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl; + } + +- if (verbose) cout << "Cleaning up" << endl; ++ if (verbose) std::cout << "Cleaning up" << std::endl; + + if (!a_push_c_err) { a_push_c->cleanup(); } + if (!s_push_c_err) { s_push_c->cleanup(); } +@@ -315,25 +315,25 @@ + goto normal_return; + } + catch(CORBA::SystemException&) { +- cerr << "main caught CORBA::SystemException." << endl; ++ std::cerr << "main caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << "main caught CORBA::Exception." << endl; ++ std::cerr << "main caught CORBA::Exception." << std::endl; + } + #if defined(__OMNIORB3__) || defined(__OMNIORB4__) + catch(omniORB::fatalException& fe) { +- cerr << "main caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "main caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + #endif + catch(...) { + // nameclt comment says it is a bad idea to report an error here + } +- cerr << "main caught an exception." << endl; ++ std::cerr << "main caught an exception." << std::endl; + error_return: +- cerr << "QUITTING due to error" << endl; ++ std::cerr << "QUITTING due to error" << std::endl; + // orb->destroy(); + return -1; + normal_return: +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_add_filter.cc omniNotify-2.1.new/examples/demo_add_filter.cc +--- omniNotify-2.1.orig/examples/demo_add_filter.cc 2003-10-12 22:51:18.000000000 +0400 ++++ omniNotify-2.1.new/examples/demo_add_filter.cc 2009-06-28 17:20:35.000000000 +0400 +@@ -1,5 +1,5 @@ + #include +-#include ++#include + #include + + #include "CosNotifyShorthands.h" +@@ -25,14 +25,14 @@ + CORBA::Boolean verbose); + + void usage(char* pname) { +- cerr << "Usage: " << pname << " [-n name] [-f file] -p file" << endl << endl; +- cout << " -n name : channel name" << endl; +- cout << " => use event service to lookup this name" << endl; +- cout << " -f file : file containing channel IOR" << endl; +- cout << " => use string_to_object on the IOR" << endl; +- cout << " -p file : file with stringified IOR of proxy to be" << endl; +- cout << " sent add_filter messages (REQUIRED)" << endl; +- cout << "(The channel is needed to obtain its default filter factory)" << endl; ++ std::cerr << "Usage: " << pname << " [-n name] [-f file] -p file" << std::endl << std::endl; ++ std::cout << " -n name : channel name" << std::endl; ++ std::cout << " => use event service to lookup this name" << std::endl; ++ std::cout << " -f file : file containing channel IOR" << std::endl; ++ std::cout << " => use string_to_object on the IOR" << std::endl; ++ std::cout << " -p file : file with stringified IOR of proxy to be" << std::endl; ++ std::cout << " sent add_filter messages (REQUIRED)" << std::endl; ++ std::cout << "(The channel is needed to obtain its default filter factory)" << std::endl; + } + + +@@ -84,11 +84,11 @@ + char buf[8096]; + FILE* ifile; + if (! (ifile = fopen(proxy_ior_file, "r")) ) { +- cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl; ++ std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl; + goto cleanup; + } + if (fscanf(ifile, "%s", buf) != 1) { +- cerr << "Failed to get an IOR from file " << proxy_ior_file << endl; ++ std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl; + fclose(ifile); + goto cleanup; + } +@@ -97,32 +97,32 @@ + try { + CORBA::Object_var proxy_ref = orb->string_to_object(buf); + if ( CORBA::is_nil(proxy_ref) ) { +- cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl; ++ std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl; + goto cleanup; + } + proxy = CosNF::FilterAdmin::_narrow(proxy_ref); + if ( CORBA::is_nil(proxy) ) { +- cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl; ++ std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl; + goto cleanup; + } + } catch (...) { +- cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl; ++ std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl; + goto cleanup; + } + + CosNF::Filter_ptr filter = CosNF::Filter::_nil(); + while (1) { +- cout << endl << "Enter a constraint ('exit' to quit, 'remove' to remove all filters): " << endl << flush; ++ std::cout << std::endl << "Enter a constraint ('exit' to quit, 'remove' to remove all filters): " << std::endl << std::flush; + if (!(fgets(buf, 8090, stdin))) break; + if (strlen(buf) < 2) continue; // skip empty lines + buf[strlen(buf)-1] = '\0'; // strip newline from end + if (strcmp(buf, "exit") == 0) { + break; + } +- cout << "Calling remove_all_filters on the proxy" << endl; ++ std::cout << "Calling remove_all_filters on the proxy" << std::endl; + proxy->remove_all_filters(); + if (!CORBA::is_nil(filter)) { +- cout << "Destroying the previous filter, which is no longer in use" << endl; ++ std::cout << "Destroying the previous filter, which is no longer in use" << std::endl; + filter->destroy(); + filter = CosNF::Filter::_nil(); + } +@@ -134,27 +134,27 @@ + evs.length(0); + sample_add_filter(channel, proxy, evs, buf, "demo_add_filter", filter, 1); + } +- cout << endl << "---------------------------------------------------------" << endl; ++ std::cout << std::endl << "---------------------------------------------------------" << std::endl; + } + orb->destroy(); + return 0; // success + } + catch(CORBA::SystemException&) { +- cerr << "Caught CORBA::SystemException." << endl; ++ std::cerr << "Caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << "Caught CORBA::Exception." << endl; ++ std::cerr << "Caught CORBA::Exception." << std::endl; + } + #if defined(__OMNIORB3__) || defined(__OMNIORB4__) + catch(omniORB::fatalException& fe) { +- cerr << "Caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "Caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + #endif + catch(...) { +- cerr << "Caught unknown exception." << endl; ++ std::cerr << "Caught unknown exception." << std::endl; + } + cleanup: + orb->destroy(); +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_offer_change.cc omniNotify-2.1.new/examples/demo_offer_change.cc +--- omniNotify-2.1.orig/examples/demo_offer_change.cc 2003-10-12 22:51:18.000000000 +0400 ++++ omniNotify-2.1.new/examples/demo_offer_change.cc 2009-06-28 17:21:48.000000000 +0400 +@@ -1,5 +1,5 @@ + #include +-#include ++#include + #include + + #include "CosNotifyShorthands.h" +@@ -58,9 +58,9 @@ + } + + void usage(char* pname) { +- cerr << "Usage: " << pname << " -p file" << endl << endl; +- cout << " -p file : file with stringified IOR of proxy to be" << endl; +- cout << " sent offer_change messages (REQUIRED)" << endl; ++ std::cerr << "Usage: " << pname << " -p file" << std::endl << std::endl; ++ std::cout << " -p file : file with stringified IOR of proxy to be" << std::endl; ++ std::cout << " sent offer_change messages (REQUIRED)" << std::endl; + } + + int main(int argc, char** argv) +@@ -96,11 +96,11 @@ + char buf2[8096]; + FILE* ifile; + if (! (ifile = fopen(proxy_ior_file, "r")) ) { +- cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl; ++ std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl; + goto cleanup; + } + if (fscanf(ifile, "%s", buf) != 1) { +- cerr << "Failed to get an IOR from file " << proxy_ior_file << endl; ++ std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl; + fclose(ifile); + goto cleanup; + } +@@ -109,69 +109,69 @@ + try { + CORBA::Object_var proxy_ref = orb->string_to_object(buf); + if ( CORBA::is_nil(proxy_ref) ) { +- cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl; ++ std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl; + goto cleanup; + } + proxy = CosNC::NotifyPublish::_narrow(proxy_ref); + if ( CORBA::is_nil(proxy) ) { +- cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl; ++ std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl; + goto cleanup; + } + } catch (...) { +- cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl; ++ std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl; + goto cleanup; + } + + while (1) { + added.length(0); + deled.length(0); +- cout << endl << "Enter list of removals (or empty for none): " << endl << flush; ++ std::cout << std::endl << "Enter list of removals (or empty for none): " << std::endl << std::flush; + if (!(fgets(buf, 8090, stdin))) break; + if (strlen(buf) < 1) break; + buf[strlen(buf)-1] = '\0'; // strip newline from end + if (strcmp(buf, "exit") == 0) break; + if (strlen(buf)) { + if (parse_etype_list(buf, deled)) { +- cerr << "Failed to parse the input as an event type list" << endl; ++ std::cerr << "Failed to parse the input as an event type list" << std::endl; + continue; + } + } + +- cout << endl << "Enter list of additions (or empty for none): " << endl << flush; ++ std::cout << std::endl << "Enter list of additions (or empty for none): " << std::endl << std::flush; + if (!(fgets(buf2, 8090, stdin))) break; + if (strlen(buf2) < 1) break; + buf2[strlen(buf2)-1] = '\0'; // strip newline from end + if (strcmp(buf2, "exit") == 0) break; + if (strlen(buf2)) { + if (parse_etype_list(buf2, added)) { +- cerr << "Failed to parse the input as an event type list" << endl; ++ std::cerr << "Failed to parse the input as an event type list" << std::endl; + continue; + } + } + +- cout << "Calling offer_change on the proxy" << endl; ++ std::cout << "Calling offer_change on the proxy" << std::endl; + proxy->offer_change(added, deled); +- cout << endl << "---------------------------------------------------------" << endl; ++ std::cout << std::endl << "---------------------------------------------------------" << std::endl; + } + orb->destroy(); + return 0; // success + } + catch(CORBA::SystemException&) { +- cerr << "Caught CORBA::SystemException." << endl; ++ std::cerr << "Caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << "Caught CORBA::Exception." << endl; ++ std::cerr << "Caught CORBA::Exception." << std::endl; + } + #if defined(__OMNIORB3__) || defined(__OMNIORB4__) + catch(omniORB::fatalException& fe) { +- cerr << "Caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "Caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + #endif + catch(...) { +- cerr << "Caught unknown exception." << endl; ++ std::cerr << "Caught unknown exception." << std::endl; + } + cleanup: + orb->destroy(); +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_subscription_change.cc omniNotify-2.1.new/examples/demo_subscription_change.cc +--- omniNotify-2.1.orig/examples/demo_subscription_change.cc 2003-10-12 22:51:18.000000000 +0400 ++++ omniNotify-2.1.new/examples/demo_subscription_change.cc 2009-06-28 17:23:49.000000000 +0400 +@@ -1,5 +1,5 @@ + #include +-#include ++#include + #include + + #include "CosNotifyShorthands.h" +@@ -58,9 +58,9 @@ + } + + void usage(char* pname) { +- cerr << "Usage: " << pname << " -p file" << endl << endl; +- cout << " -p file : file with stringified IOR of proxy to be" << endl; +- cout << " sent subscription_change messages (REQUIRED)" << endl; ++ std::cerr << "Usage: " << pname << " -p file" << std::endl << std::endl; ++ std::cout << " -p file : file with stringified IOR of proxy to be" << std::endl; ++ std::cout << " sent subscription_change messages (REQUIRED)" << std::endl; + } + + int main(int argc, char** argv) +@@ -96,11 +96,11 @@ + char buf2[8096]; + FILE* ifile; + if (! (ifile = fopen(proxy_ior_file, "r")) ) { +- cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl; ++ std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl; + goto cleanup; + } + if (fscanf(ifile, "%s", buf) != 1) { +- cerr << "Failed to get an IOR from file " << proxy_ior_file << endl; ++ std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl; + fclose(ifile); + goto cleanup; + } +@@ -109,69 +109,69 @@ + try { + CORBA::Object_var proxy_ref = orb->string_to_object(buf); + if ( CORBA::is_nil(proxy_ref) ) { +- cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl; ++ std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl; + goto cleanup; + } + proxy = CosNC::NotifySubscribe::_narrow(proxy_ref); + if ( CORBA::is_nil(proxy) ) { +- cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl; ++ std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl; + goto cleanup; + } + } catch (...) { +- cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl; ++ std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl; + goto cleanup; + } + + while (1) { + added.length(0); + deled.length(0); +- cout << endl << "Enter list of removals (or empty for none): " << endl << flush; ++ std::cout << std::endl << "Enter list of removals (or empty for none): " << std::endl << std::flush; + if (!(fgets(buf, 8090, stdin))) break; + if (strlen(buf) < 1) break; + buf[strlen(buf)-1] = '\0'; // strip newline from end + if (strcmp(buf, "exit") == 0) break; + if (strlen(buf)) { + if (parse_etype_list(buf, deled)) { +- cerr << "Failed to parse the input as an event type list" << endl; ++ std::cerr << "Failed to parse the input as an event type list" << std::endl; + continue; + } + } + +- cout << endl << "Enter list of additions (or empty for none): " << endl << flush; ++ std::cout << std::endl << "Enter list of additions (or empty for none): " << std::endl << std::flush; + if (!(fgets(buf2, 8090, stdin))) break; + if (strlen(buf2) < 1) break; + buf2[strlen(buf2)-1] = '\0'; // strip newline from end + if (strcmp(buf2, "exit") == 0) break; + if (strlen(buf2)) { + if (parse_etype_list(buf2, added)) { +- cerr << "Failed to parse the input as an event type list" << endl; ++ std::cerr << "Failed to parse the input as an event type list" << std::endl; + continue; + } + } + +- cout << "Calling subscription_change on the proxy" << endl; ++ std::cout << "Calling subscription_change on the proxy" << std::endl; + proxy->subscription_change(added, deled); +- cout << endl << "---------------------------------------------------------" << endl; ++ std::cout << std::endl << "---------------------------------------------------------" << std::endl; + } + orb->destroy(); + return 0; // success + } + catch(CORBA::SystemException&) { +- cerr << "Caught CORBA::SystemException." << endl; ++ std::cerr << "Caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << "Caught CORBA::Exception." << endl; ++ std::cerr << "Caught CORBA::Exception." << std::endl; + } + #if defined(__OMNIORB3__) || defined(__OMNIORB4__) + catch(omniORB::fatalException& fe) { +- cerr << "Caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "Caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + #endif + catch(...) { +- cerr << "Caught unknown exception." << endl; ++ std::cerr << "Caught unknown exception." << std::endl; + } + cleanup: + orb->destroy(); +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/get_channel.h omniNotify-2.1.new/examples/get_channel.h +--- omniNotify-2.1.orig/examples/get_channel.h 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/examples/get_channel.h 2009-06-28 17:10:29.000000000 +0400 +@@ -19,11 +19,11 @@ + CosNA::EventChannel_ptr channel = CosNA::EventChannel::_nil(); + if (!ior_file || strlen(ior_file) == 0) return channel; // empty string -- ignore + if (! (ifile = fopen(ior_file, "r")) ) { +- cerr << "Failed to open file " << ior_file << " for reading" << endl; ++ std::cerr << "Failed to open file " << ior_file << " for reading" << std::endl; + return channel; // failure + } + if (fscanf(ifile, "%s", buf) != 1) { +- cerr << "Failed to get an IOR from file " << ior_file << endl; ++ std::cerr << "Failed to get an IOR from file " << ior_file << std::endl; + fclose(ifile); + return channel; // failure + } +@@ -31,21 +31,21 @@ + try { + CORBA::Object_var channel_ref = orb->string_to_object(buf); + if ( CORBA::is_nil(channel_ref) ) { +- cerr << "Failed to turn IOR in file " << ior_file << " into object" << endl; ++ std::cerr << "Failed to turn IOR in file " << ior_file << " into object" << std::endl; + return channel; // failure + } + channel = CosNA::EventChannel::_narrow(channel_ref); + if ( CORBA::is_nil(channel) ) { +- cerr << "Failed to narrow object from IOR in file " << ior_file << +- " to type CosNotifyChannelAdmin::EventChannel" << endl; ++ std::cerr << "Failed to narrow object from IOR in file " << ior_file << ++ " to type CosNotifyChannelAdmin::EventChannel" << std::endl; + return channel; // failure + } + } catch (...) { +- cerr << "Failed to convert IOR in file " << ior_file << " to object" << endl; ++ std::cerr << "Failed to convert IOR in file " << ior_file << " to object" << std::endl; + return channel; // failure + } + if (verbose) +- cout << "Found valid channel reference" << endl; ++ std::cout << "Found valid channel reference" << std::endl; + return channel; // success + } + +@@ -59,29 +59,29 @@ + if (!channel_name || strlen(channel_name) == 0) return channel; // empty string -- ignore + + if (verbose) +- cout << "Obtaining naming service reference" << endl; ++ std::cout << "Obtaining naming service reference" << std::endl; + try { + CORBA::Object_var name_service; + name_service = orb->resolve_initial_references("NameService"); + name_context = CosNaming::NamingContext::_narrow(name_service); + if ( CORBA::is_nil(name_context) ) { +- cerr << "Failed to obtain context for NameService" << endl; ++ std::cerr << "Failed to obtain context for NameService" << std::endl; + return channel; // failure + } + } + catch(CORBA::ORB::InvalidName& ex) { +- cerr << "Service required is invalid [does not exist]" << endl; ++ std::cerr << "Service required is invalid [does not exist]" << std::endl; + return channel; // failure + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while resolving the naming service" << endl; ++ std::cerr << "Caught exception while resolving the naming service" << std::endl; + return channel; // failure + } + + if (verbose) +- cout << "Looking up channel name " << channel_name << " . " << channel_name << endl; ++ std::cout << "Looking up channel name " << channel_name << " . " << channel_name << std::endl; + + name.length(1); + name[0].id = CORBA::string_dup((const char*)channel_name); +@@ -91,23 +91,23 @@ + CORBA::Object_var channel_ref = name_context->resolve(name); + channel = CosNA::EventChannel::_narrow(channel_ref); + if ( CORBA::is_nil(channel) ) { +- cerr << "Failed to narrow object found in naming service " << +- " to type CosNotifyChannelAdmin::EventChannel" << endl; ++ std::cerr << "Failed to narrow object found in naming service " << ++ " to type CosNotifyChannelAdmin::EventChannel" << std::endl; + return channel; // failure + } + } + catch(CORBA::ORB::InvalidName& ex) { +- cerr << "Invalid name" << endl; ++ std::cerr << "Invalid name" << std::endl; + return channel; // failure + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE while resolving event channel name" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE while resolving event channel name" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while resolving event channel name" << endl; ++ std::cerr << "Caught exception while resolving event channel name" << std::endl; + return channel; // failure + } + if (verbose) +- cout << "Found valid channel reference" << endl; ++ std::cout << "Found valid channel reference" << std::endl; + return channel; // success + } + +@@ -121,30 +121,30 @@ + CosNaming::Name name; + + if (verbose) +- cout << "Obtaining naming service reference" << endl; ++ std::cout << "Obtaining naming service reference" << std::endl; + if (!factory_name || strlen(factory_name) == 0) return channel; // empty string -- ignore + try { + CORBA::Object_var name_service; + name_service = orb->resolve_initial_references("NameService"); + name_context = CosNaming::NamingContext::_narrow(name_service); + if ( CORBA::is_nil(name_context) ) { +- cerr << "Failed to obtain context for NameService" << endl; ++ std::cerr << "Failed to obtain context for NameService" << std::endl; + return channel; // failure + } + } + catch(CORBA::ORB::InvalidName& ex) { +- cerr << "Service required is invalid [does not exist]" << endl; ++ std::cerr << "Service required is invalid [does not exist]" << std::endl; + return channel; // failure + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while resolving the naming service" << endl; ++ std::cerr << "Caught exception while resolving the naming service" << std::endl; + return channel; // failure + } + + if (verbose) +- cout << "Looking up channel factory name " << factory_name << " . " << factory_name << endl; ++ std::cout << "Looking up channel factory name " << factory_name << " . " << factory_name << std::endl; + + name.length(1); + name[0].id = CORBA::string_dup((const char*)factory_name); +@@ -154,41 +154,41 @@ + CORBA::Object_var factory_ref = name_context->resolve(name); + factory = CosNA::EventChannelFactory::_narrow(factory_ref); + if ( CORBA::is_nil(factory) ) { +- cerr << "Failed to narrow object found in naming service " << +- " to type CosNotifyChannelAdmin::EventChannelFactory" << endl; ++ std::cerr << "Failed to narrow object found in naming service " << ++ " to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl; + return channel; // failure + } + } + catch(CORBA::ORB::InvalidName& ex) { +- cerr << "Invalid name" << endl; ++ std::cerr << "Invalid name" << std::endl; + return channel; // failure + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while resolving event channel factory name" << endl; ++ std::cerr << "Caught exception while resolving event channel factory name" << std::endl; + return channel; // failure + } + if (verbose) { +- cout << "Found valid channel factory reference" << endl; +- cout << "Looking up channel id " << chan_id << endl; ++ std::cout << "Found valid channel factory reference" << std::endl; ++ std::cout << "Looking up channel id " << chan_id << std::endl; + } + + try { + channel = factory->get_event_channel( chan_id ); + if ( CORBA::is_nil(channel) ) { +- cerr << "Failed to find channel id " << chan_id << endl; ++ std::cerr << "Failed to find channel id " << chan_id << std::endl; + return channel; // failure + } + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE while invoking get_event_channel" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE while invoking get_event_channel" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while invoking get_event_channel" << endl; ++ std::cerr << "Caught exception while invoking get_event_channel" << std::endl; + return channel; // failure + } + if (verbose) +- cout << "Found valid channel reference" << endl; ++ std::cout << "Found valid channel reference" << std::endl; + return channel; // success + } + +@@ -201,30 +201,30 @@ + CosNaming::Name name; + + if (verbose) +- cout << "Obtaining naming service reference" << endl; ++ std::cout << "Obtaining naming service reference" << std::endl; + if (!factory_name || strlen(factory_name) == 0) return channel; // empty string -- ignore + try { + CORBA::Object_var name_service; + name_service = orb->resolve_initial_references("NameService"); + name_context = CosNaming::NamingContext::_narrow(name_service); + if ( CORBA::is_nil(name_context) ) { +- cerr << "Failed to obtain context for NameService" << endl; ++ std::cerr << "Failed to obtain context for NameService" << std::endl; + return channel; // failure + } + } + catch(CORBA::ORB::InvalidName& ex) { +- cerr << "Service required is invalid [does not exist]" << endl; ++ std::cerr << "Service required is invalid [does not exist]" << std::endl; + return channel; // failure + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while resolving the naming service" << endl; ++ std::cerr << "Caught exception while resolving the naming service" << std::endl; + return channel; // failure + } + + if (verbose) +- cout << "Looking up channel factory name " << factory_name << " . " << factory_name << endl; ++ std::cout << "Looking up channel factory name " << factory_name << " . " << factory_name << std::endl; + + name.length(1); + name[0].id = CORBA::string_dup((const char*)factory_name); +@@ -234,24 +234,24 @@ + CORBA::Object_var factory_ref = name_context->resolve(name); + factory = CosNA::EventChannelFactory::_narrow(factory_ref); + if ( CORBA::is_nil(factory) ) { +- cerr << "Failed to narrow object found in naming service " << +- " to type CosNotifyChannelAdmin::EventChannelFactory" << endl; ++ std::cerr << "Failed to narrow object found in naming service " << ++ " to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl; + return channel; // failure + } + } + catch(CORBA::ORB::InvalidName& ex) { +- cerr << "Invalid name" << endl; ++ std::cerr << "Invalid name" << std::endl; + return channel; // failure + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while resolving event channel factory name" << endl; ++ std::cerr << "Caught exception while resolving event channel factory name" << std::endl; + return channel; // failure + } + if (verbose) { +- cout << "Found valid channel factory reference" << endl; +- cout << "Creating new channel" << endl; ++ std::cout << "Found valid channel factory reference" << std::endl; ++ std::cout << "Creating new channel" << std::endl; + } + + CosNA::ChannelID chan_id; +@@ -264,18 +264,18 @@ + + channel = factory->create_channel(qosP, admP, chan_id); + if ( CORBA::is_nil(channel) ) { +- cerr << "Failed to create new channel" << endl; ++ std::cerr << "Failed to create new channel" << std::endl; + return channel; // failure + } + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while invoking create_channel" << endl; ++ std::cerr << "Caught exception while invoking create_channel" << std::endl; + return channel; // failure + } + if (verbose) +- cout << "Created a new channel with channel ID " << chan_id << endl; ++ std::cout << "Created a new channel with channel ID " << chan_id << std::endl; + return channel; // success + } + +@@ -289,11 +289,11 @@ + + if (!ior_file || strlen(ior_file) == 0) return channel; // empty string -- ignore + if (! (ifile = fopen(ior_file, "r")) ) { +- cerr << "Failed to open file " << ior_file << " for reading" << endl; ++ std::cerr << "Failed to open file " << ior_file << " for reading" << std::endl; + return channel; // failure + } + if (fscanf(ifile, "%s", buf) != 1) { +- cerr << "Failed to get an IOR from file " << ior_file << endl; ++ std::cerr << "Failed to get an IOR from file " << ior_file << std::endl; + fclose(ifile); + return channel; // failure + } +@@ -301,22 +301,22 @@ + try { + CORBA::Object_var fact_ref = orb->string_to_object(buf); + if ( CORBA::is_nil(fact_ref) ) { +- cerr << "Failed to turn IOR in file " << ior_file << " into object" << endl; ++ std::cerr << "Failed to turn IOR in file " << ior_file << " into object" << std::endl; + return channel; // failure + } + factory = CosNA::EventChannelFactory::_narrow(fact_ref); + if ( CORBA::is_nil(factory) ) { +- cerr << "Failed to narrow object from IOR in file " << ior_file << +- " to type CosNotifyChannelAdmin::EventChannelFactory" << endl; ++ std::cerr << "Failed to narrow object from IOR in file " << ior_file << ++ " to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl; + return channel; // failure + } + } catch (...) { +- cerr << "Failed to convert IOR in file " << ior_file << " to object" << endl; ++ std::cerr << "Failed to convert IOR in file " << ior_file << " to object" << std::endl; + return channel; // failure + } + if (verbose) { +- cout << "Found valid channel factory reference" << endl; +- cout << "Creating new channel" << endl; ++ std::cout << "Found valid channel factory reference" << std::endl; ++ std::cout << "Creating new channel" << std::endl; + } + + CosNA::ChannelID chan_id; +@@ -329,18 +329,18 @@ + + channel = factory->create_channel(qosP, admP, chan_id); + if ( CORBA::is_nil(channel) ) { +- cerr << "Failed to create new channel" << endl; ++ std::cerr << "Failed to create new channel" << std::endl; + return channel; // failure + } + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << endl; ++ std::cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << std::endl; + return channel; // failure + } catch (...) { +- cerr << "Caught exception while invoking create_channel" << endl; ++ std::cerr << "Caught exception while invoking create_channel" << std::endl; + return channel; // failure + } + if (verbose) +- cout << "Created a new channel with channel ID " << chan_id << endl; ++ std::cout << "Created a new channel with channel ID " << chan_id << std::endl; + return channel; // success + } + +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/legacy_clients.cc omniNotify-2.1.new/examples/legacy_clients.cc +--- omniNotify-2.1.orig/examples/legacy_clients.cc 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/examples/legacy_clients.cc 2009-06-28 17:19:01.000000000 +0400 +@@ -4,8 +4,8 @@ + // See legacy_clients.h + // -------------------------------------------------------------- // + +-#include +-#include ++#include ++#include + #include "thread_wrappers.h" + + #include "CosNotifyShorthands.h" +@@ -40,22 +40,22 @@ + try { + admin = channel->for_consumers(); + if ( CORBA::is_nil(admin) ) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } + } catch (...) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } +- if (verbose) cout << "Obtained admin from the channel" << endl; ++ if (verbose) std::cout << "Obtained admin from the channel" << std::endl; + try { + proxy = admin->obtain_push_supplier(); + } catch (...) { } + if ( CORBA::is_nil(proxy) ) { +- cerr << "Failed to obtain proxy" << endl; ++ std::cerr << "Failed to obtain proxy" << std::endl; + return 0; + } +- if (verbose) cout << "Obtained proxy from admin" << endl; ++ if (verbose) std::cout << "Obtained proxy from admin" << std::endl; + + // Construct a client + LegacyPushConsumer_i* client = +@@ -70,16 +70,16 @@ + try { + _my_proxy->connect_push_consumer(_this()); + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + // if _millisecs is set, spawn a thread to ping the proxy + if (_millisecs) + _worker = new GenericBoundWorkerThread(this); +@@ -91,7 +91,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -113,7 +113,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::start_working"); + +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + // invariant: _oplock held at top of loop + while ( 1 ) { + if (_done || (_millisecs == 0)) break; +@@ -138,7 +138,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using connect_push_consumer" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using connect_push_consumer" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -158,16 +158,16 @@ + _num_events++; + if (_consume_fn) + (*_consume_fn)(data, _obj_name, _num_events, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -180,7 +180,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::diconnect_push_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -231,22 +231,22 @@ + try { + admin = channel->for_consumers(); + if ( CORBA::is_nil(admin) ) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } + } catch (...) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } +- if (verbose) cout << "Obtained admin from the channel" << endl; ++ if (verbose) std::cout << "Obtained admin from the channel" << std::endl; + try { + proxy = admin->obtain_pull_supplier(); + } catch (...) { } + if ( CORBA::is_nil(proxy) ) { +- cerr << "Failed to obtain proxy" << endl; ++ std::cerr << "Failed to obtain proxy" << std::endl; + return 0; + } +- if (verbose) cout << "Obtained proxy from admin" << endl; ++ if (verbose) std::cout << "Obtained proxy from admin" << std::endl; + + // Construct a client + LegacyPullConsumer_i* client = +@@ -261,17 +261,17 @@ + try { + _my_proxy->connect_pull_consumer(_this()); + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // spawn a thread to do pulling +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -281,7 +281,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -309,7 +309,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + { // introduce temporary lock release scope; do not hold oplock across pull +@@ -322,7 +322,7 @@ + } // end temporary lock release scope + if (_done) break; // must have disconnected during pull + if (!data) { +- if (_verbose) cout << _obj_name << ": strange failure: pull() returned nil" << endl; ++ if (_verbose) std::cout << _obj_name << ": strange failure: pull() returned nil" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } +@@ -330,11 +330,11 @@ + _num_events++; + if (_consume_fn) + (*_consume_fn)(*data, _obj_name, _num_events, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl; + delete data; + data = 0; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + if (_millisecs) { // sleep for specified interval +@@ -349,7 +349,7 @@ + continue; // continue pulling + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while calling pull()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling pull()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } // end while loop +@@ -370,7 +370,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::disconnect_pull_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -422,22 +422,22 @@ + try { + admin = channel->for_suppliers(); + if ( CORBA::is_nil(admin) ) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } + } catch (...) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } +- if (verbose) cout << "Obtained admin from the channel" << endl; ++ if (verbose) std::cout << "Obtained admin from the channel" << std::endl; + try { + proxy = admin->obtain_push_consumer(); + } catch (...) { } + if ( CORBA::is_nil(proxy) ) { +- cerr << "Failed to obtain proxy" << endl; ++ std::cerr << "Failed to obtain proxy" << std::endl; + return 0; // failure + } +- if (verbose) cout << "Obtained proxy from admin" << endl; ++ if (verbose) std::cout << "Obtained proxy from admin" << std::endl; + + // Construct a client + LegacyPushSupplier_i* client = +@@ -452,17 +452,17 @@ + try { + _my_proxy->connect_push_supplier(_this()); + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // spawn a thread to do pushing +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -472,7 +472,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -500,7 +500,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) { +@@ -515,9 +515,9 @@ + if (_done) break; // must have disconnected during push + _num_events++; + // [rather than doing the following we let supply_fn report if it wants to] +- // if (_verbose) cout << _obj_name << ": Pushed an event, event count = " << _num_events << endl; ++ // if (_verbose) std::cout << _obj_name << ": Pushed an event, event count = " << _num_events << std::endl; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + } +@@ -534,7 +534,7 @@ + continue; // continue pushing + com_fail: + if (_done) break; // must have disconnected during push +- if (_verbose) cout << _obj_name << ": communication error while calling push()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling push()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } // end while loop +@@ -554,7 +554,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::disconnect_push_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -606,22 +606,22 @@ + try { + admin = channel->for_suppliers(); + if ( CORBA::is_nil(admin) ) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } + } catch (...) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return 0; // failure + } +- if (verbose) cout << "Obtained admin from the channel" << endl; ++ if (verbose) std::cout << "Obtained admin from the channel" << std::endl; + try { + proxy = admin->obtain_pull_consumer(); + } catch (...) { } + if ( CORBA::is_nil(proxy) ) { +- cerr << "Failed to obtain proxy" << endl; ++ std::cerr << "Failed to obtain proxy" << std::endl; + return 0; // failure + } +- if (verbose) cout << "Obtained proxy from admin" << endl; ++ if (verbose) std::cout << "Obtained proxy from admin" << std::endl; + + // Construct a client + LegacyPullSupplier_i* client = +@@ -636,16 +636,16 @@ + try { + _my_proxy->connect_pull_supplier(_this()); + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + // if _millisecs is set, spawn a thread to ping the proxy + if (_millisecs) + _worker = new GenericBoundWorkerThread(this); +@@ -657,7 +657,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -678,7 +678,7 @@ + + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::start_working"); +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + // invariant: _oplock held at top of loop + while ( 1 ) { + if (_done || (_millisecs == 0)) break; +@@ -703,7 +703,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using connect_pull_supplier" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using connect_pull_supplier" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -722,7 +722,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::try_pull"); + if (_done) return data; +- if (_verbose) cout << _obj_name << ": Channel called try_pull" << endl; ++ if (_verbose) std::cout << _obj_name << ": Channel called try_pull" << std::endl; + + // If we reached done point during last try_pull, it is broadcast now + // and we return from this try_pull call without an event. +@@ -730,10 +730,10 @@ + // processed the previous try_pull (the final supplied event) before + // we disconnect this supplier. + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl; + _done = 1; + _finish.broadcast(); +- if (_verbose) cout << _obj_name << ": NOT returning an event" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl; + return data; + } + +@@ -741,14 +741,14 @@ + has_event = 1; + _num_events++; + // [rather than doing the following we let supply_fn report if it wants to] +- // if (_verbose) cout << _obj_name << ": Returning an event, event count = " << _num_events << endl; ++ // if (_verbose) std::cout << _obj_name << ": Returning an event, event count = " << _num_events << std::endl; + } else { +- if (_verbose) cout << _obj_name << ": NOT returning an event" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl; + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -771,7 +771,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::pull"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull" << std::endl; + // invariants: _oplock is held entering top of loop and + // also whenever we break out of loop + while ( 1 ) { +@@ -779,9 +779,9 @@ + if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) { + _num_events++; + // [rather than doing the following we let supply_fn report if it wants to] +- // if (_verbose) cout << _obj_name << ": Returning an event, event count = " << _num_events << endl; ++ // if (_verbose) std::cout << _obj_name << ": Returning an event, event count = " << _num_events << std::endl; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -801,7 +801,7 @@ + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -816,7 +816,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::discconnect_pull_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/main_program.h omniNotify-2.1.new/examples/main_program.h +--- omniNotify-2.1.orig/examples/main_program.h 2004-03-19 00:39:20.000000000 +0300 ++++ omniNotify-2.1.new/examples/main_program.h 2009-06-28 17:24:41.000000000 +0400 +@@ -58,7 +58,7 @@ + + #ifndef CREATE_CHANNEL + // (2) Obtain reference to notification channel +- if (verbose) cout << "Obtaining reference to notification channel" << endl; ++ if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl; + CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose); + if (CORBA::is_nil(channel)) { // name service lookup failed + channel = getchan_from_iorfile(orb, ior_file, verbose); +@@ -68,7 +68,7 @@ + } + #else + // (2) Create a new notification channel +- if (verbose) cout << "Creating a new notification channel" << endl; ++ if (verbose) std::cout << "Creating a new notification channel" << std::endl; + CosNA::EventChannel_ptr channel = getnewchan_use_ns(orb, cfact_name, verbose); + if (CORBA::is_nil(channel)) { // name service lookup failed + channel = getnewchan_use_iorfile(orb, cfact_ior_file, verbose); +@@ -79,7 +79,7 @@ + #endif + + // (3) Create a client +- if (verbose) cout << "Creating client" << endl; ++ if (verbose) std::cout << "Creating client" << std::endl; + #ifndef LEGACY_CLIENT + CLIENT_IMPL_CLASS* client = + CLIENT_IMPL_CLASS::create(orb, channel, num_events, batch_size, CLIENT_NAME, proxy_ior_file, admin_ior_file, +@@ -94,55 +94,55 @@ + goto error_return; // failed to create client + } + // Obtain reference to the external client object +- if (verbose) cout << "Obtaining CORBA object ref to client" << endl; ++ if (verbose) std::cout << "Obtaining CORBA object ref to client" << std::endl; + CLIENT_CLASS_VAR myref = client->_this(); // implicit activation + client->_remove_ref(); // enables POA cleanup of servant + + // (4) Tell POA we are ready to go +- if (verbose) cout << "Activating POA manager" << endl; ++ if (verbose) std::cout << "Activating POA manager" << std::endl; + PortableServer::POAManager_var pman = poa->the_POAManager(); + pman->activate(); + + // (5) Connect client to its proxy, wait for desired # of events +- if (verbose) cout << "Connecting client to its proxy" << endl; ++ if (verbose) std::cout << "Connecting client to its proxy" << std::endl; + if (client->connect()) { + // an immediate error occurred + } else { +- if (verbose) cout << "Waiting for desired # of events" << endl; ++ if (verbose) std::cout << "Waiting for desired # of events" << std::endl; + // Wait until num_events has been reached + CORBA::Boolean communication_error = client->wait_done(); + if (communication_error && (num_events > 0)) { +- if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl; ++ if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl; + } +- if (verbose) cout << "Cleaning up" << endl; ++ if (verbose) std::cout << "Cleaning up" << std::endl; + client->cleanup(); + } + goto normal_return; + } + catch(CORBA::SystemException&) { +- cerr << "main caught CORBA::SystemException." << endl; ++ std::cerr << "main caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << "main caught CORBA::Exception." << endl; ++ std::cerr << "main caught CORBA::Exception." << std::endl; + } + #if defined(__OMNIORB3__) || defined(__OMNIORB4__) + catch(omniORB::fatalException& fe) { +- cerr << "main caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "main caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + #endif + catch(...) { + // nameclt comment says it is a bad idea to report an error here + } +- cerr << "main caught an exception." << endl; ++ std::cerr << "main caught an exception." << std::endl; + error_return: + #ifdef CREATE_CHANNEL + #ifdef DESTROY_CHANNEL + try { + if (!CORBA::is_nil(channel)) { +- if (verbose) cout << "Destroying the channel we created" << endl; ++ if (verbose) std::cout << "Destroying the channel we created" << std::endl; + channel->destroy(); + } + } catch(...) { } +@@ -155,7 +155,7 @@ + #ifdef DESTROY_CHANNEL + try { + if (!CORBA::is_nil(channel)) { +- if (verbose) cout << "Destroying the channel we created" << endl; ++ if (verbose) std::cout << "Destroying the channel we created" << std::endl; + channel->destroy(); + } + } catch(...) { } +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/ndadmin.cc omniNotify-2.1.new/examples/ndadmin.cc +--- omniNotify-2.1.orig/examples/ndadmin.cc 2003-10-12 22:51:18.000000000 +0400 ++++ omniNotify-2.1.new/examples/ndadmin.cc 2009-06-28 17:09:16.000000000 +0400 +@@ -6,7 +6,7 @@ + #error COS_USES_BOA should not be set for this example + #endif + +-#include ++#include + + #include "orb_init_name.h" + #include "get_channel.h" +@@ -23,15 +23,15 @@ + + static void usage(const char* pname) + { +- cout << "Usage: " << pname << " [-n name] [-f file] [-v]" << endl; +- cout << " -n name : channel name" << endl; +- cout << " => use event service to lookup this name" << endl; +- cout << " -f file : file containing channel IOR" << endl; +- cout << " => use string_to_object on the IOR" << endl; +- cout << " -v : verbose output" << endl; +- cout << "NOTE: The server has a default channel; " << pname << " finds this channel" << endl; +- cout << " and then goes 'UP' to find the notifd server" << endl; +- cout << endl; ++ std::cout << "Usage: " << pname << " [-n name] [-f file] [-v]" << std::endl; ++ std::cout << " -n name : channel name" << std::endl; ++ std::cout << " => use event service to lookup this name" << std::endl; ++ std::cout << " -f file : file containing channel IOR" << std::endl; ++ std::cout << " => use string_to_object on the IOR" << std::endl; ++ std::cout << " -v : verbose output" << std::endl; ++ std::cout << "NOTE: The server has a default channel; " << pname << " finds this channel" << std::endl; ++ std::cout << " and then goes 'UP' to find the notifd server" << std::endl; ++ std::cout << std::endl; + } + + int main(int argc, char** argv) { +@@ -78,12 +78,12 @@ + } + + // (2) Obtain reference to notification channel +- if (verbose) cout << "Obtaining reference to notification channel" << endl; ++ if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl; + channel = getchan_from_ns(orb, channel_name, verbose); + if (CORBA::is_nil(channel)) { // name service lookup failed + channel = getchan_from_iorfile(orb, ior_file, verbose); + if (CORBA::is_nil(channel)) { +- if (verbose) cout << "Could not find server's default channel" << endl; ++ if (verbose) std::cout << "Could not find server's default channel" << std::endl; + goto err_return; // both methods failed + } + } +@@ -97,7 +97,7 @@ + catch ( CORBA::OBJECT_NOT_EXIST& e ) { docmd_problem = 1; } \ + catch ( CORBA::COMM_FAILURE& e ) { docmd_problem = 1; } + if (!success || !target_changed || docmd_problem) { +- if (verbose) cout << "Could not find server's default channel" << endl; ++ if (verbose) std::cout << "Could not find server's default channel" << std::endl; + goto err_return; + } + target = next_target; +@@ -108,7 +108,7 @@ + catch ( CORBA::OBJECT_NOT_EXIST& e ) { docmd_problem = 1; } \ + catch ( CORBA::COMM_FAILURE& e ) { docmd_problem = 1; } + if (!success || !target_changed || docmd_problem) { +- if (verbose) cout << "Could not find server's default channel" << endl; ++ if (verbose) std::cout << "Could not find server's default channel" << std::endl; + goto err_return; + } + target = AttN::Interactive::_duplicate(next_target); +@@ -119,23 +119,23 @@ + goto norm_return; + } + catch(CORBA::SystemException&) { +- cerr << pname << " main caught CORBA::SystemException." << endl; ++ std::cerr << pname << " main caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << pname << " main caught CORBA::Exception." << endl; ++ std::cerr << pname << " main caught CORBA::Exception." << std::endl; + } + catch(omniORB::fatalException& fe) { +- cerr << "main caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "main caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + catch(...) { + // nameclt comment says it is a bad idea to report an error here + } +- cerr << "main caught an exception." << endl; ++ std::cerr << "main caught an exception." << std::endl; + err_return: +- cerr << "QUITTING due to error" << endl; ++ std::cerr << "QUITTING due to error" << std::endl; + return -1; + norm_return: + return 0; +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/parse_cmd_line.h omniNotify-2.1.new/examples/parse_cmd_line.h +--- omniNotify-2.1.orig/examples/parse_cmd_line.h 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/examples/parse_cmd_line.h 2009-06-28 17:13:49.000000000 +0400 +@@ -4,7 +4,7 @@ + #define _PARSE_CMD_LINE_H + + #include +-#include ++#include + + #include "CosNotifyShorthands.h" + +@@ -18,47 +18,47 @@ + + static void usage(const char* pname, CORBA::Boolean supports_filters) + { +- cout << "Usage: " << pname << " [-d #] [-b #] [-m #] [-M #] [-n name] [-f file] [-N name] [-F file] [-p file] [-a file] [-v]"; ++ std::cout << "Usage: " << pname << " [-d #] [-b #] [-m #] [-M #] [-n name] [-f file] [-N name] [-F file] [-p file] [-a file] [-v]"; + if (supports_filters) { +- cout << " [-t types] [-e expr]" << endl; ++ std::cout << " [-t types] [-e expr]" << std::endl; + } else { +- cout << endl; ++ std::cout << std::endl; + } +- cout << " -d # : disconnect after # events [default 0 means never disconnect]" << endl; +- cout << " -b # : batch size (only relevant for batch supplier programs) [default 5]" << endl; +- cout << " => must be >= 1" << endl; +- cout << " -m # : # of milliseconds to pause between each push/pull [default 0]" << endl; +- cout << " -M # : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << endl; +- cout << " (-M only applies to push consumers and pull suppliers)" << endl; +- cout << " -n name : channel name" << endl; +- cout << " => use event service to lookup this name" << endl; +- cout << " -f file : file containing channel IOR" << endl; +- cout << " => use string_to_object on the IOR" << endl; +- cout << " -N name : factory name" << endl; +- cout << " => use event service to lookup this name" << endl; +- cout << " -F file : file containing channel factory IOR" << endl; +- cout << " => use string_to_object on the IOR" << endl; +- cout << " -p file : file to store IOR of the proxy used by this client" << endl; +- cout << " (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << endl; +- cout << " -a file : file to store IOR of the admin used by this client" << endl; +- cout << " (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << endl; +- cout << " -v : verbose output" << endl; +- cout << endl; ++ std::cout << " -d # : disconnect after # events [default 0 means never disconnect]" << std::endl; ++ std::cout << " -b # : batch size (only relevant for batch supplier programs) [default 5]" << std::endl; ++ std::cout << " => must be >= 1" << std::endl; ++ std::cout << " -m # : # of milliseconds to pause between each push/pull [default 0]" << std::endl; ++ std::cout << " -M # : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << std::endl; ++ std::cout << " (-M only applies to push consumers and pull suppliers)" << std::endl; ++ std::cout << " -n name : channel name" << std::endl; ++ std::cout << " => use event service to lookup this name" << std::endl; ++ std::cout << " -f file : file containing channel IOR" << std::endl; ++ std::cout << " => use string_to_object on the IOR" << std::endl; ++ std::cout << " -N name : factory name" << std::endl; ++ std::cout << " => use event service to lookup this name" << std::endl; ++ std::cout << " -F file : file containing channel factory IOR" << std::endl; ++ std::cout << " => use string_to_object on the IOR" << std::endl; ++ std::cout << " -p file : file to store IOR of the proxy used by this client" << std::endl; ++ std::cout << " (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << std::endl; ++ std::cout << " -a file : file to store IOR of the admin used by this client" << std::endl; ++ std::cout << " (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << std::endl; ++ std::cout << " -v : verbose output" << std::endl; ++ std::cout << std::endl; + if (supports_filters) { +- cout << "Options for adding a filter:" << endl; +- cout << " -t types : add a filter for the specified types, which should be a" << endl; +- cout << " comma-separated list of types of the form D::T" << endl; +- cout << " -e expr : add a filter with the specified boolean expression" << endl; +- cout << endl; +- cout << "If only -t specified, the expression \"true\" is used for the filter" << endl; +- cout << "If only -e specified, the event type \"*::*\" is used for the filter" << endl; +- cout << endl; +- } +- cout << "If both -n and -f are specified, the -n option is tried first" << endl; +- cout << endl; +- cout << "If neither -n or -f is specified, program first tries name service" << endl; +- cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << endl; +- cout << endl; ++ std::cout << "Options for adding a filter:" << std::endl; ++ std::cout << " -t types : add a filter for the specified types, which should be a" << std::endl; ++ std::cout << " comma-separated list of types of the form D::T" << std::endl; ++ std::cout << " -e expr : add a filter with the specified boolean expression" << std::endl; ++ std::cout << std::endl; ++ std::cout << "If only -t specified, the expression \"true\" is used for the filter" << std::endl; ++ std::cout << "If only -e specified, the event type \"*::*\" is used for the filter" << std::endl; ++ std::cout << std::endl; ++ } ++ std::cout << "If both -n and -f are specified, the -n option is tried first" << std::endl; ++ std::cout << std::endl; ++ std::cout << "If neither -n or -f is specified, program first tries name service" << std::endl; ++ std::cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << std::endl; ++ std::cout << std::endl; + } + + // return 0 if etype_list is a valid comma-separated event type list +@@ -201,12 +201,12 @@ + cfact_ior_file = (char*)"/tmp/rdifact.ior"; + } + if ( (!supports_filters) && ( strlen(etype_list) || strlen(constraint_expr) ) ) { +- cout << "Filter options not supported for this client" << endl; ++ std::cout << "Filter options not supported for this client" << std::endl; + usage(pname, supports_filters); + return 1; // error + } + if (strlen(etype_list) && parse_etype_list(etype_list, evs)) { +- cout << "Event type list for -t option must be comma-separated list of D::T" << endl << endl; ++ std::cout << "Event type list for -t option must be comma-separated list of D::T" << std::endl << std::endl; + usage(pname, supports_filters); + return 1; + } +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/sample_clients.cc omniNotify-2.1.new/examples/sample_clients.cc +--- omniNotify-2.1.orig/examples/sample_clients.cc 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/examples/sample_clients.cc 2009-06-28 17:17:16.000000000 +0400 +@@ -7,9 +7,9 @@ + #include + #include + #include +-#include +-#include +-#include ++#include ++#include ++#include + + #ifdef HAVE_UNISTD_H + # include +@@ -70,7 +70,7 @@ + + // This helper routine informs channel that type ANY will be supplied + void offer_any(CosNC::NotifyPublish_ptr proxy, const char* objnm, CORBA::Boolean verbose) { +- if (verbose) cout << objnm << ": offering type %ANY" << endl; ++ if (verbose) std::cout << objnm << ": offering type %ANY" << std::endl; + CosN::EventTypeSeq added, deled; + added.length(1); + added[0].domain_name = CORBA::string_dup(""); +@@ -79,13 +79,13 @@ + try { + proxy->offer_change(added, deled); + } catch (...) { +- if (verbose) cout << "** registration failed **" << endl; ++ if (verbose) std::cout << "** registration failed **" << std::endl; + } + } + + // This helper routine informs channel that types Stock::Ticker and Bond::Ticker will be supplied + void offer_ticker(CosNC::NotifyPublish_ptr proxy, const char* objnm, CORBA::Boolean verbose) { +- if (verbose) cout << objnm << ": offering types Stock::Ticker and Bond::Ticker" << endl; ++ if (verbose) std::cout << objnm << ": offering types Stock::Ticker and Bond::Ticker" << std::endl; + CosN::EventTypeSeq added, deled; + added.length(2); + added[0].domain_name = CORBA::string_dup("Stock"); +@@ -96,7 +96,7 @@ + try { + proxy->offer_change(added, deled); + } catch (...) { +- if (verbose) cout << "** registration failed **" << endl; ++ if (verbose) std::cout << "** registration failed **" << std::endl; + } + } + +@@ -104,19 +104,19 @@ + void write_ior_to_file(CORBA::ORB_ptr orb, CORBA::Object_ptr o, + const char* filenm, CORBA::Boolean verbose) { + if (strlen(filenm) == 0) { +- if (verbose) cout << "ior filename empty -- skipping" << endl; ++ if (verbose) std::cout << "ior filename empty -- skipping" << std::endl; + return; + } +- ofstream file(filenm, ios::out); ++ std::ofstream file(filenm, std::ios::out); + if ( ! file ) { +- if (verbose) cerr << "Failed to open IOR file: " << filenm << endl; ++ if (verbose) std::cerr << "Failed to open IOR file: " << filenm << std::endl; + return; + } + char* ior_name = orb->object_to_string(o); + file << ior_name; + file.close(); + delete [] ior_name; +- if (verbose) cout << "wrote IOR to file: " << filenm << endl; ++ if (verbose) std::cout << "wrote IOR to file: " << filenm << std::endl; + } + + // These 2 helper routines are used to obtain one of the +@@ -138,14 +138,14 @@ + try { + admin = channel->new_for_suppliers(ifoper, admID); + if ( CORBA::is_nil(admin) ) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return generic_proxy; // failure + } + } catch (...) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return generic_proxy; // failure + } +- if (verbose) cout << "Obtained admin from the channel" << endl; ++ if (verbose) std::cout << "Obtained admin from the channel" << std::endl; + + CosNA::ProxyID prxID; + try { +@@ -156,14 +156,14 @@ + } + } catch (...) { } + if (CORBA::is_nil(generic_proxy)) { +- cerr << "Failed to obtain proxy" << endl; ++ std::cerr << "Failed to obtain proxy" << std::endl; + try { + admin->destroy(); + } catch (...) { } + admin = CosNA::SupplierAdmin::_nil(); + return generic_proxy; + } +- if (verbose) cout << "Obtained proxy from admin" << endl; ++ if (verbose) std::cout << "Obtained proxy from admin" << std::endl; + write_ior_to_file(orb, admin, admin_ior_file, verbose); + return generic_proxy; // success if generic_proxy is non-nil, otherwise failure + } +@@ -183,14 +183,14 @@ + try { + admin = channel->new_for_consumers(ifoper, admID); + if ( CORBA::is_nil(admin) ) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return generic_proxy; // failure + } + } catch (...) { +- cerr << "Failed to obtain admin" << endl; ++ std::cerr << "Failed to obtain admin" << std::endl; + return generic_proxy; // failure + } +- if (verbose) cout << "Obtained admin from the channel" << endl; ++ if (verbose) std::cout << "Obtained admin from the channel" << std::endl; + + CosNA::ProxyID prxID; + try { +@@ -201,14 +201,14 @@ + } + } catch (...) { } + if (CORBA::is_nil(generic_proxy)) { +- cerr << "Failed to obtain proxy" << endl; ++ std::cerr << "Failed to obtain proxy" << std::endl; + try { + admin->destroy(); + } catch (...) { } + admin = CosNA::ConsumerAdmin::_nil(); + return generic_proxy; + } +- if (verbose) cout << "Obtained proxy from admin" << endl; ++ if (verbose) std::cout << "Obtained proxy from admin" << std::endl; + write_ior_to_file(orb, admin, admin_ior_file, verbose); + return generic_proxy; // success if generic_proxy is non-nil, otherwise failure + } +@@ -226,24 +226,24 @@ + CORBA::Boolean verbose) { + // if evs and constraint expr are empty, we ignore them + do not add a filter + if ( (evs.length() == 0) && (strlen(constraint_expr) == 0) ) { +- if (verbose) cout << obj_name << ": (no filter used)" << endl; ++ if (verbose) std::cout << obj_name << ": (no filter used)" << std::endl; + return 0; // OK + } + // Obtain a reference to the default filter factory; create a filter object + CosNF::FilterFactory_ptr ffp; + filter = CosNF::Filter::_nil(); + try { +- if (verbose) cout << obj_name << ": Obtaining default filter factory" << endl; ++ if (verbose) std::cout << obj_name << ": Obtaining default filter factory" << std::endl; + ffp = channel->default_filter_factory(); + filter = ffp->create_filter("EXTENDED_TCL"); + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << endl; ++ std::cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << std::endl; + return 1; // error + } catch (...) { +- cerr << obj_name << ": Caught exception obtaining filter object" << endl; ++ std::cerr << obj_name << ": Caught exception obtaining filter object" << std::endl; + return 1; // error + } +- if (verbose) cout << obj_name << ": Obtained filter from default filter factory" << endl; ++ if (verbose) std::cout << obj_name << ": Obtained filter from default filter factory" << std::endl; + + // Construct a simple constraint expression; add it to fadmin + CosNF::ConstraintExpSeq exp; +@@ -252,32 +252,32 @@ + exp[0].constraint_expr = CORBA::string_dup(constraint_expr); + CORBA::Boolean res = 0; // OK + try { +- if (verbose) cout << obj_name << ": Adding constraints to filter" << endl; ++ if (verbose) std::cout << obj_name << ": Adding constraints to filter" << std::endl; + filter->add_constraints(exp); +- if (verbose) cout << obj_name << ": Adding filter to target" << endl; ++ if (verbose) std::cout << obj_name << ": Adding filter to target" << std::endl; + fadmin->add_filter(filter); + if (verbose) { + if (evs.length()) { +- cout << obj_name << ": Added filter for types "; ++ std::cout << obj_name << ": Added filter for types "; + for (unsigned int j = 0; j < evs.length(); j++) { +- cout << (const char*)evs[j].domain_name << "::" << (const char*)evs[j].type_name; ++ std::cout << (const char*)evs[j].domain_name << "::" << (const char*)evs[j].type_name; + if ((j+1) < evs.length()) +- cout << ", "; ++ std::cout << ", "; + } + } else { +- cout << obj_name << ": Added filter for type *::* "; ++ std::cout << obj_name << ": Added filter for type *::* "; + } +- cout << " and constraint expression \"" << constraint_expr << "\" " << endl; ++ std::cout << " and constraint expression \"" << constraint_expr << "\" " << std::endl; + } + } + catch(CosNF::InvalidConstraint& _exobj1) { +- cerr << obj_name << ": Exception thrown : Invalid constraint given " +- << (const char *)constraint_expr << endl; ++ std::cerr << obj_name << ": Exception thrown : Invalid constraint given " ++ << (const char *)constraint_expr << std::endl; + res = 1; // error + } + catch (...) { +- cerr << obj_name << ": Exception thrown while adding constraint " +- << (const char *)constraint_expr << endl; ++ std::cerr << obj_name << ": Exception thrown while adding constraint " ++ << (const char *)constraint_expr << std::endl; + res = 1; // error + } + if (res == 1) { // error so destroy filter +@@ -306,17 +306,17 @@ + CosNF::FilterFactory_ptr ffp; + filter = CosNF::Filter::_nil(); + try { +- if (verbose) cout << obj_name << ": Obtaining default filter factory" << endl; ++ if (verbose) std::cout << obj_name << ": Obtaining default filter factory" << std::endl; + ffp = channel->default_filter_factory(); + filter = ffp->create_filter("EXTENDED_TCL"); + } catch (CORBA::COMM_FAILURE& ex) { +- cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << endl; ++ std::cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << std::endl; + return 1; // error + } catch (...) { +- cerr << obj_name << ": Caught exception obtaining filter object" << endl; ++ std::cerr << obj_name << ": Caught exception obtaining filter object" << std::endl; + return 1; // error + } +- if (verbose) cout << obj_name << ": Obtained filter from default filter factory" << endl; ++ if (verbose) std::cout << obj_name << ": Obtained filter from default filter factory" << std::endl; + + // Construct a simple constraint expression; add it to fadmin + CosNF::ConstraintExpSeq exp; +@@ -327,29 +327,29 @@ + exp[0].constraint_expr = CORBA::string_dup("true"); + CORBA::Boolean res = 0; // OK + try { +- if (verbose) cout << obj_name << ": Adding initial dummy constraint to filter" << endl; ++ if (verbose) std::cout << obj_name << ": Adding initial dummy constraint to filter" << std::endl; + if (verbose) { +- cout << obj_name << ": Adding constraint with dummy type Type_XXX and constraint \"true\" to filter" << endl; ++ std::cout << obj_name << ": Adding constraint with dummy type Type_XXX and constraint \"true\" to filter" << std::endl; + } + filter->add_constraints(exp); +- if (verbose) cout << obj_name << ": Adding filter to target" << endl; ++ if (verbose) std::cout << obj_name << ": Adding filter to target" << std::endl; + fadmin->add_filter(filter); + for (int i = 0; i < 512; i++) { + char buf[1024]; + sprintf(buf, "Type_%03d", i); + exp[0].event_types[0].type_name = CORBA::string_dup(buf); + if (verbose) { +- cout << obj_name << ": Adding constraint with type " << buf << " and constraint \"true\" to filter" << endl; ++ std::cout << obj_name << ": Adding constraint with type " << buf << " and constraint \"true\" to filter" << std::endl; + } + filter->add_constraints(exp); + } + } + catch(CosNF::InvalidConstraint& _exobj1) { +- cerr << obj_name << ": Exception thrown : Invalid constraint given" << endl; ++ std::cerr << obj_name << ": Exception thrown : Invalid constraint given" << std::endl; + res = 1; // error + } + catch (...) { +- cerr << obj_name << ": Exception thrown while adding constraint/filter" << endl; ++ std::cerr << obj_name << ": Exception thrown while adding constraint/filter" << std::endl; + res = 1; // error + } + +@@ -445,16 +445,16 @@ + _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + // if _millisecs is set, spawn a thread to ping the proxy + if (_millisecs) + _worker = new GenericBoundWorkerThread(this); +@@ -466,11 +466,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy +@@ -496,7 +496,7 @@ + + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::start_working"); +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + while ( 1 ) { + if (_done || (_millisecs == 0)) break; + unsigned long t_secs = 0, t_nanosecs = 0; +@@ -518,7 +518,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -538,16 +538,16 @@ + _num_events++; + if (_consume_fn) + (*_consume_fn)(data, _obj_name, _num_events, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -560,7 +560,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::disconnect_push_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -590,11 +590,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -678,16 +678,16 @@ + _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + // if _millisecs is set, spawn a thread to ping the proxy + if (_millisecs) + _worker = new GenericBoundWorkerThread(this); +@@ -699,11 +699,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -730,7 +730,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::start_working"); + +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + while ( 1 ) { + if (_done || (_millisecs == 0)) break; + unsigned long t_secs = 0, t_nanosecs = 0; +@@ -752,7 +752,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -771,16 +771,16 @@ + _num_events++; + if (_consume_fn) + (*_consume_fn)(data, _obj_name, _num_events, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -793,7 +793,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::disconnect_structured_push_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -823,11 +823,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -922,16 +922,16 @@ + _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + // if _millisecs is set, spawn a thread to ping the proxy + if (_millisecs) + _worker = new GenericBoundWorkerThread(this); +@@ -943,11 +943,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -974,7 +974,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::start_working"); + +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + // invariant: _oplock held at top of loop + while ( 1 ) { + if (_done || (_millisecs == 0)) break; +@@ -997,7 +997,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -1016,16 +1016,16 @@ + _num_events++; + if (_consume_fn) + (*_consume_fn)(data, _obj_name, _num_events, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -1038,7 +1038,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::disconnect_structured_push_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -1068,11 +1068,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -1155,16 +1155,16 @@ + _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + // if _millisecs is set, spawn a thread to ping the proxy + if (_millisecs) + _worker = new GenericBoundWorkerThread(this); +@@ -1176,11 +1176,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -1207,7 +1207,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::start_working"); + +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + // invariant: _oplock held at top of loop + while ( 1 ) { + if (_done || (_millisecs == 0)) break; +@@ -1230,7 +1230,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -1250,16 +1250,16 @@ + _num_events += data.length(); + if (_consume_fn) + (*_consume_fn)(data, _obj_name, _num_events, _num_batches, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << std::endl; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying push_structured_events response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying push_structured_events response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -1272,7 +1272,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::disconnect_sequence_push_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -1302,11 +1302,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -1393,17 +1393,17 @@ + _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // spawn a thread to do pulling +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -1413,11 +1413,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -1450,7 +1450,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + { // introduce temporary lock release scope; do not hold oplock across pull +@@ -1463,7 +1463,7 @@ + } // end temporary lock release scope + if (_done) break; // must have disconnected during pull + if (!data) { +- if (_verbose) cout << _obj_name << ": strange failure: pull() returned nil" << endl; ++ if (_verbose) std::cout << _obj_name << ": strange failure: pull() returned nil" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } +@@ -1471,11 +1471,11 @@ + _num_events++; + if (_consume_fn) + (*_consume_fn)(*data, _obj_name, _num_events, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl; + delete data; + data = 0; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + if (_millisecs) { // sleep for specified interval +@@ -1490,7 +1490,7 @@ + continue; // continue pulling + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while calling pull()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling pull()" << std::endl; + _com_err = 1; + break; + } // end while loop +@@ -1510,7 +1510,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::disconnect_pull_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -1540,11 +1540,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -1629,17 +1629,17 @@ + _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // spawn a thread to do pulling +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -1649,11 +1649,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -1686,7 +1686,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + { // introduce temporary lock release scope; do not hold oplock across pull +@@ -1699,7 +1699,7 @@ + } // end temporary lock release scope + if (_done) break; // must have disconnected during pull + if (!data) { +- if (_verbose) cout << _obj_name << ": strange failure: pull_structured_event() returned nil" << endl; ++ if (_verbose) std::cout << _obj_name << ": strange failure: pull_structured_event() returned nil" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } +@@ -1707,11 +1707,11 @@ + _num_events++; + if (_consume_fn) + (*_consume_fn)(*data, _obj_name, _num_events, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl; + delete data; + data = 0; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + if (_millisecs) { // sleep for specified interval +@@ -1726,7 +1726,7 @@ + continue; // continue pulling + com_fail: + if (_done) break; // must have disconnected during pull +- if (_verbose) cout << _obj_name << ": communication error while calling pull_structured_event()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling pull_structured_event()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } // end while loop +@@ -1747,7 +1747,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::disconnect_structured_pull_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -1777,11 +1777,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -1865,17 +1865,17 @@ + _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // spawn a thread to do pulling +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -1885,11 +1885,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::connect"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -1922,7 +1922,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + { // introduce temporary lock release scope; do not hold oplock across pull +@@ -1935,7 +1935,7 @@ + } // end temporary lock release scope + if (_done) break; // must have disconnected during pull + if (!data) { +- if (_verbose) cout << _obj_name << ": strange failure: pull_structured_events() returned nil" << endl; ++ if (_verbose) std::cout << _obj_name << ": strange failure: pull_structured_events() returned nil" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } +@@ -1944,11 +1944,11 @@ + _num_events += data->length(); + if (_consume_fn) + (*_consume_fn)(*data, _obj_name, _num_events, _num_batches, _verbose); +- else if (_verbose) cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << endl; ++ else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << std::endl; + delete data; + data = 0; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + if (_millisecs) { // sleep for specified interval +@@ -1963,7 +1963,7 @@ + continue; // continue pulling + com_fail: + if (_done) break; // must have disconnected during pull +- if (_verbose) cout << _obj_name << ": communication error while calling pull_structured_events()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling pull_structured_events()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } // end while loop +@@ -1983,7 +1983,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::disconnect_sequence_pull_consumer"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -2013,11 +2013,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -2115,19 +2115,19 @@ + _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // register the types to be supplied + offer_any(_my_proxy, _obj_name, _verbose); + // spawn a thread to do pushing +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -2137,11 +2137,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -2174,7 +2174,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) { +@@ -2189,7 +2189,7 @@ + if (_done) break; // must have disconnected during push + _num_events++; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + } +@@ -2206,7 +2206,7 @@ + continue; // continue pushing + com_fail: + if (_done) break; // must have disconnected during push +- if (_verbose) cout << _obj_name << ": communication error while calling push()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling push()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } // end while loop +@@ -2226,7 +2226,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::disconnect_push_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -2256,11 +2256,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -2345,19 +2345,19 @@ + _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // register the types to be supplied + offer_ticker(_my_proxy, _obj_name, _verbose); + // spawn a thread to do pushing +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -2367,11 +2367,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::connect"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -2404,7 +2404,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) { +@@ -2419,7 +2419,7 @@ + if (_done) break; // must have disconnected during push + _num_events++; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + } +@@ -2436,7 +2436,7 @@ + continue; // continue pushing + com_fail: + if (_done) break; // must have disconnected during push +- if (_verbose) cout << _obj_name << ": communication error while calling push_structured_event()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_event()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } // end while loop +@@ -2456,7 +2456,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::disconnect_structured_push_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -2486,11 +2486,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -2575,17 +2575,17 @@ + _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // spawn a thread to do pushing +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -2595,11 +2595,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -2631,7 +2631,7 @@ + CosN::StructuredEvent* data = new CosN::StructuredEvent; + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::start_working"); +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) { +@@ -2646,7 +2646,7 @@ + if (_done) break; // must have disconnected during push + _num_events++; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + } +@@ -2663,7 +2663,7 @@ + continue; // continue pushing + com_fail: + if (_done) break; // must have disconnected during push +- if (_verbose) cout << _obj_name << ": communication error while calling push_structured_event()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_event()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } //end while loop +@@ -2683,7 +2683,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::disconnect_structured_push_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -2713,11 +2713,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -2807,19 +2807,19 @@ + _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } + // register the types to be supplied + offer_ticker(_my_proxy, _obj_name, _verbose); + // spawn a thread to do pushing +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + _worker = new GenericBoundWorkerThread(this); + return 0; // OK + } +@@ -2829,11 +2829,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -2867,7 +2867,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::start_working"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl; + while ( 1 ) { + if (_done) break; // must have disconnected + data->length(0); +@@ -2884,7 +2884,7 @@ + _num_batches++; + _num_events += data->length(); + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + break; // done + } + } +@@ -2901,7 +2901,7 @@ + continue; // continue pushing + com_fail: + if (_done) break; // must have disconnected during push +- if (_verbose) cout << _obj_name << ": communication error while calling push_structured_events()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_events()" << std::endl; + _com_err = 1; + break; // break from while loop -- done + } // end while loop +@@ -2921,7 +2921,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::disconnect_sequence_push_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -2951,11 +2951,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3053,16 +3053,16 @@ + _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + // register the types to be supplied + offer_any(_my_proxy, _obj_name, _verbose); + // if _millisecs is set, spawn a thread to ping the proxy +@@ -3076,11 +3076,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -3107,7 +3107,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::start_working"); + +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + while ( 1 ) { + if (_done || (_millisecs == 0)) break; + unsigned long t_secs = 0, t_nanosecs = 0; +@@ -3129,7 +3129,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -3148,7 +3148,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::try_pull"); + if (_done) return data; +- if (_verbose) cout << _obj_name << ": Channel called try_pull" << endl; ++ if (_verbose) std::cout << _obj_name << ": Channel called try_pull" << std::endl; + + // If we reached done point during last try_pull, it is broadcast now + // and we return from this try_pull call without an event. +@@ -3156,10 +3156,10 @@ + // processed the previous try_pull (the final supplied event) before + // we disconnect this supplier. + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl; + _done = 1; + _finish.broadcast(); +- if (_verbose) cout << _obj_name << ": NOT returning an event" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl; + return data; + } + +@@ -3167,12 +3167,12 @@ + has_event = 1; + _num_events++; + } else { +- if (_verbose) cout << _obj_name << ": NOT returning an event" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl; + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3194,7 +3194,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::pull"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull" << std::endl; + // invariants: _oplock is held entering top of loop and + // also whenever we break out of loop + // (it is *not* held during yield() and timedwait() calls) +@@ -3206,7 +3206,7 @@ + if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) { + _num_events++; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -3227,7 +3227,7 @@ + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3242,7 +3242,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::disconnect_pull_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -3272,11 +3272,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3361,16 +3361,16 @@ + _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + // register the types to be supplied + offer_ticker(_my_proxy, _obj_name, _verbose); + // if _millisecs is set, spawn a thread to ping the proxy +@@ -3384,11 +3384,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -3416,7 +3416,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::start_working"); + +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + while ( 1 ) { + if (_done || (_millisecs == 0)) break; + unsigned long t_secs = 0, t_nanosecs = 0; +@@ -3438,7 +3438,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -3457,7 +3457,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::try_pull_structured_event"); + if (_done) return data; +- if (_verbose) cout << _obj_name << ": Channel called try_pull_structured_event" << endl; ++ if (_verbose) std::cout << _obj_name << ": Channel called try_pull_structured_event" << std::endl; + + // If we reached done point during last try_pull, it is broadcast now + // and we return from this try_pull call without an event. +@@ -3465,10 +3465,10 @@ + // processed the previous try_pull (the final supplied event) before + // we disconnect this supplier. + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl; + _done = 1; + _finish.broadcast(); +- if (_verbose) cout << _obj_name << ": NOT returning an event" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl; + return data; + } + +@@ -3476,12 +3476,12 @@ + has_event = 1; + _num_events++; + } else { +- if (_verbose) cout << _obj_name << ": NOT returning an event" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl; + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying try_pull_structured_event response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying try_pull_structured_event response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3503,7 +3503,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::pull_structured_event"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull_structured_event" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull_structured_event" << std::endl; + // invariants: _oplock is held entering top of loop and + // also whenever we break out of loop + // (it is *not* held during yield() and timedwait() calls) +@@ -3515,7 +3515,7 @@ + if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) { + _num_events++; + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -3536,7 +3536,7 @@ + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying pull_structured_event response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying pull_structured_event response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3551,7 +3551,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::disconnect_structured_pull_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -3581,11 +3581,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3675,16 +3675,16 @@ + _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF); + } + } catch (CORBA::BAD_PARAM& ex) { +- cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl; ++ std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl; + return 1; // error + } catch (CosEvCA::AlreadyConnected& ex) { +- cerr << _obj_name << ": Already connected" << endl; ++ std::cerr << _obj_name << ": Already connected" << std::endl; + return 1; // error + } catch (...) { +- cerr << _obj_name << ": Failed to connect" << endl; ++ std::cerr << _obj_name << ": Failed to connect" << std::endl; + return 1; // error + } +- if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; + // register the types to be supplied + offer_ticker(_my_proxy, _obj_name, _verbose); + // if _millisecs is set, spawn a thread to ping the proxy +@@ -3698,11 +3698,11 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::cleanup"); + if (_worker || (!_done)) { +- cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl; ++ std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl; + return; + } + if (CORBA::is_nil(_my_proxy)) { +- cerr << "Coding error: cleanup already called?" << endl; ++ std::cerr << "Coding error: cleanup already called?" << std::endl; + return; + } + // this method takes sole ownership of _my_proxy ref +@@ -3729,7 +3729,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::start_working"); + +- if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl; ++ if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl; + while ( 1 ) { + if (_done || (_millisecs == 0)) break; + unsigned long t_secs = 0, t_nanosecs = 0; +@@ -3751,7 +3751,7 @@ + continue; // continue ping loop + com_fail: + if (_done) break; +- if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl; ++ if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl; + _done = 1; + _finish.broadcast(); + _com_err = 1; +@@ -3772,7 +3772,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::try_pull_structured_events"); + if (_done) return data; +- if (_verbose) cout << _obj_name << ": Channel called try_pull_structured_events" << endl; ++ if (_verbose) std::cout << _obj_name << ": Channel called try_pull_structured_events" << std::endl; + + // If we reached done point during last try_pull, it is broadcast now + // and we return from this try_pull call without an event batch. +@@ -3780,10 +3780,10 @@ + // processed the previous try_pull (the final supplied event batch) before + // we disconnect this supplier. + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl; + _done = 1; + _finish.broadcast(); +- if (_verbose) cout << _obj_name << ": NOT returning a batch" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning a batch" << std::endl; + return data; + } + +@@ -3792,12 +3792,12 @@ + _num_batches++; + _num_events += data->length(); + } else { +- if (_verbose) cout << _obj_name << ": NOT returning a batch" << endl; ++ if (_verbose) std::cout << _obj_name << ": NOT returning a batch" << std::endl; + } + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying try_pull_structured_events response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying try_pull_structured_events response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3820,7 +3820,7 @@ + { // introduce lock scope + TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::pull_structured_events"); + +- if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull_structured_events" << endl; ++ if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull_structured_events" << std::endl; + // invariants: _oplock is held entering top of loop and + // also whenever we break out of loop + // (it is *not* held during yield() and timedwait() calls) +@@ -3834,7 +3834,7 @@ + _num_batches++; + _num_events += data->length(); + if (_max_events && (_num_events >= _max_events)) { +- if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl; ++ if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -3855,7 +3855,7 @@ + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying pull_structured_events response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying pull_structured_events response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +@@ -3870,7 +3870,7 @@ + + TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::disconnect_sequence_pull_supplier"); + if (_done) return; +- if (_verbose) cout << _obj_name << ": disconnected" << endl; ++ if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl; + _done = 1; + _finish.broadcast(); + } +@@ -3900,11 +3900,11 @@ + if (_done) return; + _num_changes++; + if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose); +- else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl; ++ else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl; + if (!_done && _delay_millisecs) { + unsigned long d_secs = _delay_millisecs / 1000; + unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000; +- if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl; ++ if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl; + unsigned long t_secs, t_nanosecs; + TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs); + _finish.timedwait(t_secs, t_nanosecs); +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/sample_functions.cc omniNotify-2.1.new/examples/sample_functions.cc +--- omniNotify-2.1.orig/examples/sample_functions.cc 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/examples/sample_functions.cc 2009-06-28 17:12:44.000000000 +0400 +@@ -2,8 +2,8 @@ + + #include + #include +-#include +-#include ++#include ++#include + #include "sample_functions.h" + + /////////////////////////////////////////////////////////////////// +@@ -20,7 +20,7 @@ + ) + { + event <<= event_num; +- if (verbose) cout << "Supplied event # " << event_num << endl; ++ if (verbose) std::cout << "Supplied event # " << event_num << std::endl; + return 1; // OK + } + +@@ -33,9 +33,9 @@ + { + CORBA::ULong ul; + if (event >>= ul) { +- if (verbose) cout << obj_name << ": event data = " << ul << ", event count = " << event_num << endl; ++ if (verbose) std::cout << obj_name << ": event data = " << ul << ", event count = " << event_num << std::endl; + } else { +- if (verbose) cout << obj_name << ": event data not known (not a ULong), event count = " << event_num << endl; ++ if (verbose) std::cout << obj_name << ": event data not known (not a ULong), event count = " << event_num << std::endl; + } + } + +@@ -59,9 +59,9 @@ + ) + { + if (verbose) { +- cout << setw(10) << obj_name << " : " << +- setw(4) << event_num << " : " << +- setw(5) << event.header.fixed_header.event_type.domain_name << "::" << ++ std::cout << std::setw(10) << obj_name << " : " << ++ std::setw(4) << event_num << " : " << ++ std::setw(5) << event.header.fixed_header.event_type.domain_name << "::" << + event.header.fixed_header.event_type.type_name << " -- "; + const char* stock_or_bond_name = ""; + CORBA::ULong value = 0; +@@ -71,15 +71,15 @@ + (event.filterable_data.length() > 1) && + (event.filterable_data[0].value >>= stock_or_bond_name) && + (event.filterable_data[1].value >>= value)) { +- cout << "Name: " << stock_or_bond_name << " Value: " << setw(4) << value << " Quote# "; ++ std::cout << "Name: " << stock_or_bond_name << " Value: " << std::setw(4) << value << " Quote# "; + CORBA::ULong l = 0; + if (event.remainder_of_body >>= l) { +- cout << setw(4) << l << endl; ++ std::cout << std::setw(4) << l << std::endl; + } else { +- cout << "????" << endl; ++ std::cout << "????" << std::endl; + } + } else { +- cout << "(not a Stock or Bond quote -- ignoring)" << endl; ++ std::cout << "(not a Stock or Bond quote -- ignoring)" << std::endl; + } + } + } +@@ -121,7 +121,7 @@ + event.filterable_data[1].name = (const char*) "Value"; + event.filterable_data[1].value <<= (CORBA::ULong) sample_stockbond_val[i]; + event.remainder_of_body <<= (CORBA::ULong) event_num; +- if (verbose) cout << "Supplied event # " << event_num << endl; ++ if (verbose) std::cout << "Supplied event # " << event_num << std::endl; + return 1; + } + +@@ -141,8 +141,8 @@ + { + CORBA::ULong evnum = event_num; + // We re-use the singleton example function +- if (verbose) cout << "--------- " << obj_name << " Supplying Event Batch " << +- batch_num << " -------------" << endl; ++ if (verbose) std::cout << "--------- " << obj_name << " Supplying Event Batch " << ++ batch_num << " -------------" << std::endl; + events.length(batch_size); + for (unsigned int i = 0; i < batch_size; i++) { + sample_supply_structured_fn(events[i], obj_name, evnum++, verbose); +@@ -160,8 +160,8 @@ + { + // We re-use the singleton example function + CORBA::ULong evnum = (event_num - events.length()) + 1; +- if (verbose) cout << "--------- " << obj_name << " Got Event Batch " << +- batch_num << " -------------" << endl; ++ if (verbose) std::cout << "--------- " << obj_name << " Got Event Batch " << ++ batch_num << " -------------" << std::endl; + for (unsigned int i = 0; i < events.length(); i++) { + sample_consume_structured_fn(events[i], "", evnum++, verbose); + } +@@ -177,15 +177,15 @@ + ) + { + if (verbose) { +- cout << setw(10) << obj_name << " : " << +- setw(4) << event_num << " : " << +- setw(5) << event.header.fixed_header.event_type.domain_name << "::" << ++ std::cout << std::setw(10) << obj_name << " : " << ++ std::setw(4) << event_num << " : " << ++ std::setw(5) << event.header.fixed_header.event_type.domain_name << "::" << + event.header.fixed_header.event_type.type_name << " -- "; + CORBA::ULong l = 0; + if (event.remainder_of_body >>= l) { +- cout << setw(4) << l << endl; ++ std::cout << std::setw(4) << l << std::endl; + } else { +- cout << "????" << endl; ++ std::cout << "????" << std::endl; + } + } + } +@@ -209,13 +209,13 @@ + event.filterable_data[0].name = (const char*) "TypeNum"; + event.filterable_data[0].value <<= (CORBA::ULong) i; + event.remainder_of_body <<= (CORBA::ULong) event_num; +- if (verbose) cout << "Supplied event # " << event_num << endl; ++ if (verbose) std::cout << "Supplied event # " << event_num << std::endl; + return 1; + } + + // Helper functions + +-ostream& operator<< (ostream& out, const CosN::EventType & t) { ++std::ostream& operator<< (std::ostream& out, const CosN::EventType & t) { + const char* dname = (t.domain_name ? (const char*)t.domain_name : "*"); + const char* tname = (t.type_name ? (const char*)t.type_name : "*"); + return out << dname << "::" << tname; +@@ -228,10 +228,10 @@ + CORBA::ULong indx; + CosN::EventType type; + for (indx = 0; indx < added.length(); indx++) { +- cout << "\t+ " << added[indx] << endl; ++ std::cout << "\t+ " << added[indx] << std::endl; + } + for (indx = 0; indx < deled.length(); indx++) { +- cout << "\t- " << deled[indx] << endl; ++ std::cout << "\t- " << deled[indx] << std::endl; + } + } + +@@ -247,8 +247,8 @@ + ) + { + if (verbose) { +- cout << "Object " << obj_name << +- " received offer_change msg [# " << num_changes << "]:" << endl; ++ std::cout << "Object " << obj_name << ++ " received offer_change msg [# " << num_changes << "]:" << std::endl; + sample_describe_change_fn(added, deled); + } + } +@@ -262,8 +262,8 @@ + ) + { + if (verbose) { +- cout << "Object " << obj_name << +- " received subscription_change msg [# " << num_changes << "]:" << endl; ++ std::cout << "Object " << obj_name << ++ " received subscription_change msg [# " << num_changes << "]:" << std::endl; + sample_describe_change_fn(added, deled); + } + } +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/some_notify_clients.cc omniNotify-2.1.new/examples/some_notify_clients.cc +--- omniNotify-2.1.orig/examples/some_notify_clients.cc 2003-10-12 22:51:18.000000000 +0400 ++++ omniNotify-2.1.new/examples/some_notify_clients.cc 2009-06-28 17:18:19.000000000 +0400 +@@ -4,7 +4,7 @@ + #endif + + #include +-#include ++#include + + #include "orb_init_name.h" + #include "get_channel.h" +@@ -23,58 +23,58 @@ + + static void usage(const char* pname) + { +- cout << "Usage: " << pname << " -u client_type [-u client_type ...] [-c #] [-s #] [-b #] [-m #] [-M #] [-n name] [-f file] [-v] [-t types] [-e expr]" << endl; +- cout << " -u type : use the specified client type (one client of that type is used)." << endl; +- cout << " Specify as many as you like, one -u option for each. Types:" << endl; +- cout << " lpushc : legacy push consumer" << endl; +- cout << " apushc : any push consumer" << endl; +- cout << " spushc : structured push consumer" << endl; +- cout << " bpushc : batch push consumer" << endl; +- cout << endl; +- cout << " lpullc : legacy pull consumer" << endl; +- cout << " apullc : any pull consumer" << endl; +- cout << " spullc : structured pull consumer" << endl; +- cout << " bpullc : batch pull consumer" << endl; +- cout << endl; +- cout << " lpushs : legacy push supplier" << endl; +- cout << " apushs : any push supplier" << endl; +- cout << " spushs : structured push supplier" << endl; +- cout << " bpushs : batch push supplier" << endl; +- cout << endl; +- cout << " lpulls : legacy pull supplier" << endl; +- cout << " apulls : any pull supplier" << endl; +- cout << " spulls : structured pull supplier" << endl; +- cout << " bpulls : batch pull supplier" << endl; +- cout << endl; +- cout << " -s # : for suppliers: disconnect after # events supplied [default 0 means never disconnect]" << endl; +- cout << " -c # : for consumers: disconnect after # events consumed [default 0 means never disconnect]" << endl; +- cout << " ** N.B. You should take # of suppliers into account:" << endl; +- cout << " if 3 suppliers supply 30 events, each consumer should consume 90 events" << endl; +- cout << " -b # : batch size (only relevant for batch supplier programs) [default 5]" << endl; +- cout << " => must be >= 1" << endl; +- cout << " -m # : # of milliseconds to pause between each push/pull [default 0]" << endl; +- cout << " -M # : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << endl; +- cout << " (-M only applies to push consumers and pull suppliers)" << endl; +- cout << " -n name : channel name" << endl; +- cout << " => use event service to lookup this name" << endl; +- cout << " -f file : file containing channel IOR" << endl; +- cout << " => use string_to_object on the IOR" << endl; +- cout << " -v : verbose output" << endl; +- cout << endl; +- cout << "Options for adding a filter **:" << endl; +- cout << " -t types : add a filter for the specified types, which should be a" << endl; +- cout << " comma-separated list of types of the form D::T" << endl; +- cout << " -e expr : add a filter with the specified boolean expression" << endl; +- cout << "** N.B. Only add filters that always evaluate to TRUE to get proper program termination" << endl; +- cout << endl; +- cout << "If only -t specified, the expression \"true\" is used for the filter" << endl; +- cout << "If only -e specified, the event type \"*::*\" is used for the filter" << endl; +- cout << endl; +- cout << "If both -n and -f are specified, the -n option is tried first" << endl; +- cout << endl; +- cout << "If neither -n or -f is specified, program first tries name service" << endl; +- cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << endl; +- cout << endl; ++ std::cout << "Usage: " << pname << " -u client_type [-u client_type ...] [-c #] [-s #] [-b #] [-m #] [-M #] [-n name] [-f file] [-v] [-t types] [-e expr]" << std::endl; ++ std::cout << " -u type : use the specified client type (one client of that type is used)." << std::endl; ++ std::cout << " Specify as many as you like, one -u option for each. Types:" << std::endl; ++ std::cout << " lpushc : legacy push consumer" << std::endl; ++ std::cout << " apushc : any push consumer" << std::endl; ++ std::cout << " spushc : structured push consumer" << std::endl; ++ std::cout << " bpushc : batch push consumer" << std::endl; ++ std::cout << std::endl; ++ std::cout << " lpullc : legacy pull consumer" << std::endl; ++ std::cout << " apullc : any pull consumer" << std::endl; ++ std::cout << " spullc : structured pull consumer" << std::endl; ++ std::cout << " bpullc : batch pull consumer" << std::endl; ++ std::cout << std::endl; ++ std::cout << " lpushs : legacy push supplier" << std::endl; ++ std::cout << " apushs : any push supplier" << std::endl; ++ std::cout << " spushs : structured push supplier" << std::endl; ++ std::cout << " bpushs : batch push supplier" << std::endl; ++ std::cout << std::endl; ++ std::cout << " lpulls : legacy pull supplier" << std::endl; ++ std::cout << " apulls : any pull supplier" << std::endl; ++ std::cout << " spulls : structured pull supplier" << std::endl; ++ std::cout << " bpulls : batch pull supplier" << std::endl; ++ std::cout << std::endl; ++ std::cout << " -s # : for suppliers: disconnect after # events supplied [default 0 means never disconnect]" << std::endl; ++ std::cout << " -c # : for consumers: disconnect after # events consumed [default 0 means never disconnect]" << std::endl; ++ std::cout << " ** N.B. You should take # of suppliers into account:" << std::endl; ++ std::cout << " if 3 suppliers supply 30 events, each consumer should consume 90 events" << std::endl; ++ std::cout << " -b # : batch size (only relevant for batch supplier programs) [default 5]" << std::endl; ++ std::cout << " => must be >= 1" << std::endl; ++ std::cout << " -m # : # of milliseconds to pause between each push/pull [default 0]" << std::endl; ++ std::cout << " -M # : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << std::endl; ++ std::cout << " (-M only applies to push consumers and pull suppliers)" << std::endl; ++ std::cout << " -n name : channel name" << std::endl; ++ std::cout << " => use event service to lookup this name" << std::endl; ++ std::cout << " -f file : file containing channel IOR" << std::endl; ++ std::cout << " => use string_to_object on the IOR" << std::endl; ++ std::cout << " -v : verbose output" << std::endl; ++ std::cout << std::endl; ++ std::cout << "Options for adding a filter **:" << std::endl; ++ std::cout << " -t types : add a filter for the specified types, which should be a" << std::endl; ++ std::cout << " comma-separated list of types of the form D::T" << std::endl; ++ std::cout << " -e expr : add a filter with the specified boolean expression" << std::endl; ++ std::cout << "** N.B. Only add filters that always evaluate to TRUE to get proper program termination" << std::endl; ++ std::cout << std::endl; ++ std::cout << "If only -t specified, the expression \"true\" is used for the filter" << std::endl; ++ std::cout << "If only -e specified, the event type \"*::*\" is used for the filter" << std::endl; ++ std::cout << std::endl; ++ std::cout << "If both -n and -f are specified, the -n option is tried first" << std::endl; ++ std::cout << std::endl; ++ std::cout << "If neither -n or -f is specified, program first tries name service" << std::endl; ++ std::cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << std::endl; ++ std::cout << std::endl; + } + + // return 0 if etype_list is a valid comma-separated event type list +@@ -195,7 +195,7 @@ + } else if (strcmp(optarg, "bpulls") == 0) { + USE_B_PULL_S = 1; num_sup++; + } else { +- cout << endl << "Bad client type (" << optarg << ") for -u option" << endl; ++ std::cout << std::endl << "Bad client type (" << optarg << ") for -u option" << std::endl; + usage(pname); + goto error_return; + } +@@ -250,7 +250,7 @@ + ior_file = (char*)"/tmp/rdichan.ior"; + } + if (strlen(etype_list) && parse_etype_list(etype_list, evs)) { +- cout << "Event type list for -t option must be comma-separated list of D::T" << endl << endl; ++ std::cout << "Event type list for -t option must be comma-separated list of D::T" << std::endl << std::endl; + usage(pname); + goto error_return; + } +@@ -258,19 +258,19 @@ + constraint_expr = (char*)"true"; + } + if (num_con + num_sup == 0) { +- cout << endl << "** You must use at least one -u option to specify a client **" << endl; ++ std::cout << std::endl << "** You must use at least one -u option to specify a client **" << std::endl; + usage(pname); + goto error_return; + } + if (num_con && num_sup && num_con_events && num_sup_events && (num_con_events != (num_sup * num_sup_events))) { +- cout << endl << "** WARNING: Unless filtering or external clients change the count, your math is wrong" << endl; +- cout << " num_con_events != num_sup * num_sup_events" << endl; +- cout << " ( " << num_con_events << " != " << num_sup << " * " << num_sup_events << " )" << endl; +- cout << "Proceeding anyway" << endl; ++ std::cout << std::endl << "** WARNING: Unless filtering or external clients change the count, your math is wrong" << std::endl; ++ std::cout << " num_con_events != num_sup * num_sup_events" << std::endl; ++ std::cout << " ( " << num_con_events << " != " << num_sup << " * " << num_sup_events << " )" << std::endl; ++ std::cout << "Proceeding anyway" << std::endl; + } + + // (2) Obtain reference to notification channel +- if (verbose) cout << "Obtaining reference to notification channel" << endl; ++ if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl; + CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose); + if (CORBA::is_nil(channel)) { // name service lookup failed + channel = getchan_from_iorfile(orb, ior_file, verbose); +@@ -323,12 +323,12 @@ + + // (3.1) legacy_push_consumer + if (USE_L_PUSH_C) { +- cout << "Constructing legacy_push_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing legacy_push_consumer, num_con_events = " << num_con_events << std::endl; + l_push_c = + LegacyPushConsumer_i::create(channel, num_con_events, "legacy_push_consumer", + sample_consume_any_fn, millisecs, delay_millisecs, verbose); + if (! l_push_c) { +- cerr << "Constructing legacy_push_consumer failed" << endl; ++ std::cerr << "Constructing legacy_push_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_l_push_c = l_push_c->_this(); +@@ -337,12 +337,12 @@ + + // (3.2) legacy_pull_consumer + if (USE_L_PULL_C) { +- cout << "Constructing legacy_pull_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing legacy_pull_consumer, num_con_events = " << num_con_events << std::endl; + l_pull_c = + LegacyPullConsumer_i::create(channel, num_con_events, "legacy_pull_consumer", + sample_consume_any_fn, millisecs, delay_millisecs, verbose); + if (! l_pull_c) { +- cerr << "Constructing legacy_pull_consumer failed" << endl; ++ std::cerr << "Constructing legacy_pull_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_l_pull_c = l_pull_c->_this(); +@@ -351,13 +351,13 @@ + + // (3.3) any_push_consumer + if (USE_A_PUSH_C) { +- cout << "Constructing any_push_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing any_push_consumer, num_con_events = " << num_con_events << std::endl; + a_push_c = + PushConsumer_i::create(orb, channel, num_con_events, batch_size, "any_push_consumer", + "", "", sample_consume_any_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_push_c) { +- cerr << "Constructing any_push_consumer failed" << endl; ++ std::cerr << "Constructing any_push_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_a_push_c = a_push_c->_this(); +@@ -366,13 +366,13 @@ + + // (3.4) struct_push_consumer + if (USE_S_PUSH_C) { +- cout << "Constructing struct_push_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing struct_push_consumer, num_con_events = " << num_con_events << std::endl; + s_push_c = + StructuredPushConsumer_i::create(orb, channel, num_con_events, batch_size, "struct_push_consumer", + "", "", sample_consume_structured_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_push_c) { +- cerr << "Constructing struct_push_consumer failed" << endl; ++ std::cerr << "Constructing struct_push_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_s_push_c = s_push_c->_this(); +@@ -381,13 +381,13 @@ + + // (3.5) batch_push_consumer + if (USE_B_PUSH_C) { +- cout << "Constructing batch_push_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing batch_push_consumer, num_con_events = " << num_con_events << std::endl; + b_push_c = + SequencePushConsumer_i::create(orb, channel, num_con_events, batch_size, "batch_push_consumer", + "", "", sample_consume_batch_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_push_c) { +- cerr << "Constructing batch_push_consumer failed" << endl; ++ std::cerr << "Constructing batch_push_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_b_push_c = b_push_c->_this(); +@@ -396,13 +396,13 @@ + + // (3.6) any_pull_consumer + if (USE_A_PULL_C) { +- cout << "Constructing any_pull_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing any_pull_consumer, num_con_events = " << num_con_events << std::endl; + a_pull_c = + PullConsumer_i::create(orb, channel, num_con_events, batch_size, "any_pull_consumer", + "", "", sample_consume_any_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_pull_c) { +- cerr << "Constructing any_pull_consumer failed" << endl; ++ std::cerr << "Constructing any_pull_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_a_pull_c = a_pull_c->_this(); +@@ -411,13 +411,13 @@ + + // (3.7) struct_pull_consumer + if (USE_S_PULL_C) { +- cout << "Constructing struct_pull_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing struct_pull_consumer, num_con_events = " << num_con_events << std::endl; + s_pull_c = + StructuredPullConsumer_i::create(orb, channel, num_con_events, batch_size, "struct_pull_consumer", + "", "", sample_consume_structured_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_pull_c) { +- cerr << "Constructing struct_pull_consumer failed" << endl; ++ std::cerr << "Constructing struct_pull_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_s_pull_c = s_pull_c->_this(); +@@ -426,13 +426,13 @@ + + // (3.8) batch_pull_consumer + if (USE_B_PULL_C) { +- cout << "Constructing batch_pull_consumer, num_con_events = " << num_con_events << endl; ++ std::cout << "Constructing batch_pull_consumer, num_con_events = " << num_con_events << std::endl; + b_pull_c = + SequencePullConsumer_i::create(orb, channel, num_con_events, batch_size, "batch_pull_consumer", + "", "", sample_consume_batch_fn, sample_offer_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_pull_c) { +- cerr << "Constructing batch_pull_consumer failed" << endl; ++ std::cerr << "Constructing batch_pull_consumer failed" << std::endl; + goto error_return; // failed to create a client + } + my_b_pull_c = b_pull_c->_this(); +@@ -441,12 +441,12 @@ + + // (3.9) legacy_push_supplier + if (USE_L_PUSH_S) { +- cout << "Constructing legacy_push_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing legacy_push_supplier, num_sup_events = " << num_sup_events << std::endl; + l_push_s = + LegacyPushSupplier_i::create(channel, num_sup_events, "legacy_push_supplier", + sample_supply_any_fn, millisecs, delay_millisecs, verbose); + if (! l_push_s) { +- cerr << "Constructing legacy_push_supplier failed" << endl; ++ std::cerr << "Constructing legacy_push_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_l_push_s = l_push_s->_this(); +@@ -455,12 +455,12 @@ + + // (3.10) legacy_pull_supplier + if (USE_L_PULL_S) { +- cout << "Constructing legacy_pull_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing legacy_pull_supplier, num_sup_events = " << num_sup_events << std::endl; + l_pull_s = + LegacyPullSupplier_i::create(channel, num_sup_events, "legacy_pull_supplier", + sample_supply_any_fn, millisecs, delay_millisecs, verbose); + if (! l_pull_s) { +- cerr << "Constructing legacy_pull_supplier failed" << endl; ++ std::cerr << "Constructing legacy_pull_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_l_pull_s = l_pull_s->_this(); +@@ -469,13 +469,13 @@ + + // (3.11) any_push_supplier + if (USE_A_PUSH_S) { +- cout << "Constructing any_push_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing any_push_supplier, num_sup_events = " << num_sup_events << std::endl; + a_push_s = + PushSupplier_i::create(orb, channel, num_sup_events, batch_size, "any_push_supplier", + "", "", sample_supply_any_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_push_s) { +- cerr << "Constructing any_push_supplier failed" << endl; ++ std::cerr << "Constructing any_push_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_a_push_s = a_push_s->_this(); +@@ -484,13 +484,13 @@ + + // (3.12) struct_push_supplier + if (USE_S_PUSH_S) { +- cout << "Constructing struct_push_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing struct_push_supplier, num_sup_events = " << num_sup_events << std::endl; + s_push_s = + StructuredPushSupplier_i::create(orb, channel, num_sup_events, batch_size, "struct_push_supplier", + "", "", sample_supply_structured_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_push_s) { +- cerr << "Constructing struct_push_supplier failed" << endl; ++ std::cerr << "Constructing struct_push_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_s_push_s = s_push_s->_this(); +@@ -499,13 +499,13 @@ + + // (3.13) batch_push_supplier + if (USE_B_PUSH_S) { +- cout << "Constructing batch_push_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing batch_push_supplier, num_sup_events = " << num_sup_events << std::endl; + b_push_s = + SequencePushSupplier_i::create(orb, channel, num_sup_events, batch_size, "batch_push_supplier", + "", "", sample_supply_batch_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_push_s) { +- cerr << "Constructing batch_push_supplier failed" << endl; ++ std::cerr << "Constructing batch_push_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_b_push_s = b_push_s->_this(); +@@ -514,13 +514,13 @@ + + // (3.14) any_pull_supplier + if (USE_A_PULL_S) { +- cout << "Constructing any_pull_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing any_pull_supplier, num_sup_events = " << num_sup_events << std::endl; + a_pull_s = + PullSupplier_i::create(orb, channel, num_sup_events, batch_size, "any_pull_supplier", + "", "", sample_supply_any_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! a_pull_s) { +- cerr << "Constructing any_pull_supplier failed" << endl; ++ std::cerr << "Constructing any_pull_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_a_pull_s = a_pull_s->_this(); +@@ -529,13 +529,13 @@ + + // (3.15) struct_pull_supplier + if (USE_S_PULL_S) { +- cout << "Constructing struct_pull_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing struct_pull_supplier, num_sup_events = " << num_sup_events << std::endl; + s_pull_s = + StructuredPullSupplier_i::create(orb, channel, num_sup_events, batch_size, "struct_pull_supplier", + "", "", sample_supply_structured_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! s_pull_s) { +- cerr << "Constructing struct_pull_supplier failed" << endl; ++ std::cerr << "Constructing struct_pull_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_s_pull_s = s_pull_s->_this(); +@@ -544,13 +544,13 @@ + + // (3.16) batch_pull_supplier + if (USE_B_PULL_S) { +- cout << "Constructing batch_pull_supplier, num_sup_events = " << num_sup_events << endl; ++ std::cout << "Constructing batch_pull_supplier, num_sup_events = " << num_sup_events << std::endl; + b_pull_s = + SequencePullSupplier_i::create(orb, channel, num_sup_events, batch_size, "batch_pull_supplier", + "", "", sample_supply_batch_fn, sample_subscription_change_fn, + &evs, constraint_expr, millisecs, delay_millisecs, verbose); + if (! b_pull_s) { +- cerr << "Constructing batch_pull_supplier failed" << endl; ++ std::cerr << "Constructing batch_pull_supplier failed" << std::endl; + goto error_return; // failed to create a client + } + my_b_pull_s = b_pull_s->_this(); +@@ -558,116 +558,116 @@ + } + + // (4) Tell POA we are ready to go +- if (verbose) cout << "Activating POA manager" << endl; ++ if (verbose) std::cout << "Activating POA manager" << std::endl; + PortableServer::POAManager_var pman = poa->the_POAManager(); + pman->activate(); + + // (5) Connect clients to their proxies -- consumers first +- if (verbose) cout << "Connecting consumer clients to proxies" << endl; ++ if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl; + + if (USE_L_PUSH_C) { + if (l_push_c->connect()) { +- cerr << "Connecting legacy_push_consumer failed" << endl; ++ std::cerr << "Connecting legacy_push_consumer failed" << std::endl; + goto error_return; + } + } + if (USE_A_PUSH_C) { + if (a_push_c->connect()) { +- cerr << "Connecting any_push_consumer failed" << endl; ++ std::cerr << "Connecting any_push_consumer failed" << std::endl; + goto error_return; + } + } + if (USE_S_PUSH_C) { + if (s_push_c->connect()) { +- cerr << "Connecting struct_push_consumer failed" << endl; ++ std::cerr << "Connecting struct_push_consumer failed" << std::endl; + goto error_return; + } + } + if (USE_B_PUSH_C) { + if (b_push_c->connect()) { +- cerr << "Connecting batch_push_consumer failed" << endl; ++ std::cerr << "Connecting batch_push_consumer failed" << std::endl; + goto error_return; + } + } + + if (USE_L_PULL_C) { + if (l_pull_c->connect()) { +- cerr << "Connecting legacy_pull_consumer failed" << endl; ++ std::cerr << "Connecting legacy_pull_consumer failed" << std::endl; + goto error_return; + } + } + if (USE_A_PULL_C) { + if (a_pull_c->connect()) { +- cerr << "Connecting any_pull_consumer failed" << endl; ++ std::cerr << "Connecting any_pull_consumer failed" << std::endl; + goto error_return; + } + } + if (USE_S_PULL_C) { + if (s_pull_c->connect()) { +- cerr << "Connecting struct_pull_consumer failed" << endl; ++ std::cerr << "Connecting struct_pull_consumer failed" << std::endl; + goto error_return; + } + } + if (USE_B_PULL_C) { + if (b_pull_c->connect()) { +- cerr << "Connecting batch_pull_consumer failed" << endl; ++ std::cerr << "Connecting batch_pull_consumer failed" << std::endl; + goto error_return; + } + } + +- if (verbose) cout << "Connecting supplier clients to proxies" << endl; ++ if (verbose) std::cout << "Connecting supplier clients to proxies" << std::endl; + + if (USE_L_PUSH_S) { + if (l_push_s->connect()) { +- cerr << "Connecting legacy_push_supplier failed" << endl; ++ std::cerr << "Connecting legacy_push_supplier failed" << std::endl; + goto error_return; + } + } + if (USE_A_PUSH_S) { + if (a_push_s->connect()) { +- cerr << "Connecting any_push_supplier failed" << endl; ++ std::cerr << "Connecting any_push_supplier failed" << std::endl; + goto error_return; + } + } + if (USE_S_PUSH_S) { + if (s_push_s->connect()) { +- cerr << "Connecting struct_push_supplier failed" << endl; ++ std::cerr << "Connecting struct_push_supplier failed" << std::endl; + goto error_return; + } + } + if (USE_B_PUSH_S) { + if (b_push_s->connect()) { +- cerr << "Connecting batch_push_supplier failed" << endl; ++ std::cerr << "Connecting batch_push_supplier failed" << std::endl; + goto error_return; + } + } + + if (USE_L_PULL_S) { + if (l_pull_s->connect()) { +- cerr << "Connecting legacy_pull_supplier failed" << endl; ++ std::cerr << "Connecting legacy_pull_supplier failed" << std::endl; + goto error_return; + } + } + if (USE_A_PULL_S) { + if (a_pull_s->connect()) { +- cerr << "Connecting any_pull_supplier failed" << endl; ++ std::cerr << "Connecting any_pull_supplier failed" << std::endl; + goto error_return; + } + } + if (USE_S_PULL_S) { + if (s_pull_s->connect()) { +- cerr << "Connecting struct_pull_supplier failed" << endl; ++ std::cerr << "Connecting struct_pull_supplier failed" << std::endl; + goto error_return; + } + } + if (USE_B_PULL_S) { + if (b_pull_s->connect()) { +- cerr << "Connecting batch_pull_supplier failed" << endl; ++ std::cerr << "Connecting batch_pull_supplier failed" << std::endl; + goto error_return; + } + } + +- if (verbose) cout << "Waiting for all 16 clients to finish" << endl; ++ if (verbose) std::cout << "Waiting for all 16 clients to finish" << std::endl; + + CORBA::Boolean l_push_c_err = 0, l_pull_c_err = 0, l_push_s_err = 0, l_pull_s_err = 0; + CORBA::Boolean a_push_c_err = 0, a_pull_c_err = 0, a_push_s_err = 0, a_pull_s_err = 0; +@@ -745,13 +745,13 @@ + s_pull_s_err || + b_pull_s_err; + if (sup_com_err && (num_sup_events > 0)) { +- if (verbose) cout << "Supplier communication error -- probably did not supply desired # of events" << endl; ++ if (verbose) std::cout << "Supplier communication error -- probably did not supply desired # of events" << std::endl; + } + if (con_com_err && (num_con_events > 0)) { +- if (verbose) cout << "Consumer communication error -- probably did not consume desired # of events" << endl; ++ if (verbose) std::cout << "Consumer communication error -- probably did not consume desired # of events" << std::endl; + } + +- if (verbose) cout << "Cleaning up" << endl; ++ if (verbose) std::cout << "Cleaning up" << std::endl; + + if (USE_L_PUSH_C) { + if (!l_push_c_err) { l_push_c->cleanup(); } +@@ -808,23 +808,23 @@ + goto normal_return; + } + catch(CORBA::SystemException&) { +- cerr << "main caught CORBA::SystemException." << endl; ++ std::cerr << "main caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << "main caught CORBA::Exception." << endl; ++ std::cerr << "main caught CORBA::Exception." << std::endl; + } + catch(omniORB::fatalException& fe) { +- cerr << "main caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "main caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + catch(...) { + // nameclt comment says it is a bad idea to report an error here + } +- cerr << "main caught an exception." << endl; ++ std::cerr << "main caught an exception." << std::endl; + error_return: +- cerr << "QUITTING due to error" << endl; ++ std::cerr << "QUITTING due to error" << std::endl; + // orb->destroy(); + return -1; + normal_return: +diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/ten_any_pull_consumers.cc omniNotify-2.1.new/examples/ten_any_pull_consumers.cc +--- omniNotify-2.1.orig/examples/ten_any_pull_consumers.cc 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/examples/ten_any_pull_consumers.cc 2009-06-28 17:14:26.000000000 +0400 +@@ -32,7 +32,7 @@ + PortableServer::POA_var poa = PortableServer::POA::_narrow(obj); + + // (1) Tell POA we are ready to go +- if (verbose) cout << "Activating POA manager" << endl; ++ if (verbose) std::cout << "Activating POA manager" << std::endl; + PortableServer::POAManager_var pman = poa->the_POAManager(); + pman->activate(); + +@@ -46,7 +46,7 @@ + num_con_events = num_events; + + // (3) Obtain reference to notification channel +- if (verbose) cout << "Obtaining reference to notification channel" << endl; ++ if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl; + CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose); + if (CORBA::is_nil(channel)) { // name service lookup failed + channel = getchan_from_iorfile(orb, ior_file, verbose); +@@ -56,14 +56,14 @@ + } + + // (4) Create all 12 CosNotify-style clients +- if (verbose) cout << "Creating 10 any_pull_consumer clients" << endl; ++ if (verbose) std::cout << "Creating 10 any_pull_consumer clients" << std::endl; + + PullConsumer_i* a_pull_c[10]; + CosNotifyComm::PullConsumer_var my_a_pull_c[10]; + char buf[100]; + for (i = 0; i < 10; i++) { + sprintf(buf, "any_pull_consumer%d", i); +- if (verbose) cout << "Creating " << buf << endl; ++ if (verbose) std::cout << "Creating " << buf << std::endl; + a_pull_c[i] = + PullConsumer_i::create(orb, channel, num_con_events, batch_size, CORBA::string_dup(buf), + "", "", sample_consume_any_fn, sample_offer_change_fn, +@@ -76,14 +76,14 @@ + } + + // (5) Connect clients to their proxies -- consumers first +- if (verbose) cout << "Connecting consumer clients to proxies" << endl; ++ if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl; + + for (i = 0; i < 10; i++) { +- if (verbose) cout << "Connecting Client # " << i+1 << endl; ++ if (verbose) std::cout << "Connecting Client # " << i+1 << std::endl; + if (a_pull_c[i]->connect()) { goto error_return; } + } + +- if (verbose) cout << "Waiting for all 10 clients to finish" << endl; ++ if (verbose) std::cout << "Waiting for all 10 clients to finish" << std::endl; + + CORBA::Boolean a_com_err[10]; + CORBA::Boolean com_err = 0; +@@ -95,10 +95,10 @@ + } + + if (com_err && (num_events > 0)) { +- if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl; ++ if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl; + } + +- if (verbose) cout << "Cleaning up" << endl; ++ if (verbose) std::cout << "Cleaning up" << std::endl; + + for (i = 0; i < 10; i++) { + if (!a_com_err[i]) { a_pull_c[i]->cleanup(); } +@@ -107,23 +107,23 @@ + goto normal_return; + } + catch(CORBA::SystemException&) { +- cerr << "main caught CORBA::SystemException." << endl; ++ std::cerr << "main caught CORBA::SystemException." << std::endl; + } + catch(CORBA::Exception&) { +- cerr << "main caught CORBA::Exception." << endl; ++ std::cerr << "main caught CORBA::Exception." << std::endl; + } + #if defined(__OMNIORB3__) || defined(__OMNIORB4__) + catch(omniORB::fatalException& fe) { +- cerr << "main caught omniORB::fatalException:" << endl; +- cerr << " file: " << fe.file() << endl; +- cerr << " line: " << fe.line() << endl; +- cerr << " mesg: " << fe.errmsg() << endl; ++ std::cerr << "main caught omniORB::fatalException:" << std::endl; ++ std::cerr << " file: " << fe.file() << std::endl; ++ std::cerr << " line: " << fe.line() << std::endl; ++ std::cerr << " mesg: " << fe.errmsg() << std::endl; + } + #endif + catch(...) { + // nameclt comment says it is a bad idea to report an error here + } +- cerr << "main caught an exception." << endl; ++ std::cerr << "main caught an exception." << std::endl; + error_return: + // orb->destroy(); + return -1; +diff -Naur --exclude=CVS omniNotify-2.1.orig/include/ModFlexLexer.h omniNotify-2.1.new/include/ModFlexLexer.h +--- omniNotify-2.1.orig/include/ModFlexLexer.h 2003-10-23 08:39:11.000000000 +0400 ++++ omniNotify-2.1.new/include/ModFlexLexer.h 2009-06-28 17:03:57.000000000 +0400 +@@ -31,10 +31,10 @@ + + // XXX ModFlexLexer overrides the 2 yylex decls, from + // XXX int yylex() +-// XXX int yylex( istream* new_in, ostream* new_out = 0 ) ++// XXX int yylex( std::istream* new_in, std::ostream* new_out = 0 ) + // XXX to + // XXX int yylex(YYSTYPE* lvalp, RDI_PCState* ps) +-// XXX int yylex(YYSTYPE* lvalp, RDI_PCState* ps, istream* new_in, ostream* new_out = 0 ) ++// XXX int yylex(YYSTYPE* lvalp, RDI_PCState* ps, std::istream* new_in, std::ostream* new_out = 0 ) + // XXX + // XXX It therefore requires these 2 lines: + #include "RDIConstraint.h" +@@ -88,7 +88,8 @@ + // Never included before - need to define base class. + #define __FLEX_LEXER_H + +-#include ++#include ++ + + extern "C++" { + +@@ -105,16 +106,16 @@ + virtual void + yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0; + virtual struct yy_buffer_state* +- yy_create_buffer( istream* s, int size ) = 0; ++ yy_create_buffer( std::istream* s, int size ) = 0; + virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0; +- virtual void yyrestart( istream* s ) = 0; ++ virtual void yyrestart( std::istream* s ) = 0; + + virtual int yylex(YYSTYPE* lvalp, RDI_PCState* ps) = 0; + // virtual int yylex() = 0; + + // Call yylex with new input/output sources. +- int yylex(YYSTYPE* lvalp, RDI_PCState* ps, istream* new_in, ostream* new_out = 0 ) +- // int yylex( istream* new_in, ostream* new_out = 0 ) ++ int yylex(YYSTYPE* lvalp, RDI_PCState* ps, std::istream* new_in, std::ostream* new_out = 0 ) ++ // int yylex( std::istream* new_in, std::ostream* new_out = 0 ) + { + switch_streams( new_in, new_out ); + return yylex(lvalp, ps); +@@ -122,8 +123,8 @@ + + // Switch to new input/output streams. A nil stream pointer + // indicates "keep the current one". +- virtual void switch_streams( istream* new_in = 0, +- ostream* new_out = 0 ) = 0; ++ virtual void switch_streams( std::istream* new_in = 0, ++ std::ostream* new_out = 0 ) = 0; + + int lineno() const { return yylineno; } + +@@ -150,17 +151,17 @@ + public: + // arg_yyin and arg_yyout default to the cin and cout, but we + // only make that assignment when initializing in yylex(). +- yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 ); ++ yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 ); + + virtual ~yyFlexLexer(); + + void yy_switch_to_buffer( struct yy_buffer_state* new_buffer ); +- struct yy_buffer_state* yy_create_buffer( istream* s, int size ); ++ struct yy_buffer_state* yy_create_buffer( std::istream* s, int size ); + void yy_delete_buffer( struct yy_buffer_state* b ); +- void yyrestart( istream* s ); ++ void yyrestart( std::istream* s ); + + virtual int yylex(YYSTYPE* lvalp, RDI_PCState* ps); +- virtual void switch_streams( istream* new_in, ostream* new_out ); ++ virtual void switch_streams( std::istream* new_in, std::ostream* new_out ); + + protected: + virtual int LexerInput( char* buf, int max_size ); +@@ -171,7 +172,7 @@ + int yyinput(); + + void yy_load_buffer_state(); +- void yy_init_buffer( struct yy_buffer_state* b, istream* s ); ++ void yy_init_buffer( struct yy_buffer_state* b, std::istream* s ); + void yy_flush_buffer( struct yy_buffer_state* b ); + + int yy_start_stack_ptr; +@@ -186,8 +187,8 @@ + yy_state_type yy_try_NUL_trans( yy_state_type current_state ); + int yy_get_next_buffer(); + +- istream* yyin; // input source for default LexerInput +- ostream* yyout; // output sink for default LexerOutput ++ std::istream* yyin; // input source for default LexerInput ++ std::ostream* yyout; // output sink for default LexerOutput + + struct yy_buffer_state* yy_current_buffer; + +diff -Naur --exclude=CVS omniNotify-2.1.orig/lib/RDIParser_l.cc omniNotify-2.1.new/lib/RDIParser_l.cc +--- omniNotify-2.1.orig/lib/RDIParser_l.cc 2003-10-23 08:39:12.000000000 +0400 ++++ omniNotify-2.1.new/lib/RDIParser_l.cc 2009-06-28 17:06:28.000000000 +0400 +@@ -53,7 +53,7 @@ + #ifdef __cplusplus + + #include +-#include ++#include + + /* Use prototypes in function declarations. */ + #define YY_USE_PROTOS +@@ -172,7 +172,7 @@ + + struct yy_buffer_state + { +- istream* yy_input_file; ++ std::istream* yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ +@@ -1764,10 +1764,10 @@ + yy_start = 1; /* first start state */ + + if ( ! yyin ) +- yyin = &cin; ++ yyin = &std::cin; + + if ( ! yyout ) +- yyout = &cout; ++ yyout = &std::cout; + + if ( ! yy_current_buffer ) + yy_current_buffer = +@@ -2123,7 +2123,7 @@ + } /* end of scanning one token */ + } /* end of yylex */ + +-yyFlexLexer::yyFlexLexer( istream* arg_yyin, ostream* arg_yyout ) ++yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ) + { + yyin = arg_yyin; + yyout = arg_yyout; +@@ -2157,7 +2157,7 @@ + yy_delete_buffer( yy_current_buffer ); + } + +-void yyFlexLexer::switch_streams( istream* new_in, ostream* new_out ) ++void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out ) + { + if ( new_in ) + { +@@ -2497,7 +2497,7 @@ + } + + +-void yyFlexLexer::yyrestart( istream* input_file ) ++void yyFlexLexer::yyrestart( std::istream* input_file ) + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); +@@ -2541,7 +2541,7 @@ + } + + +-YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( istream* file, int size ) ++YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size ) + { + YY_BUFFER_STATE b; + +@@ -2582,7 +2582,7 @@ + + + extern "C" int isatty YY_PROTO(( int )); +-void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, istream* file ) ++void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file ) + + { + yy_flush_buffer( b ); +@@ -2681,7 +2681,7 @@ + + void yyFlexLexer::LexerError( yyconst char msg[] ) + { +- cerr << msg << '\n'; ++ std::cerr << msg << '\n'; + exit( YY_EXIT_FAILURE ); + } + diff --git a/config/patches/omniorb.002_omninotify_64bits.patch b/config/patches/omniorb.002_omninotify_64bits.patch new file mode 100755 index 0000000..ed9997a --- /dev/null +++ b/config/patches/omniorb.002_omninotify_64bits.patch @@ -0,0 +1,94 @@ +diff -Naur omniNotify-orig/include/RDIstrstream.h omniNotify/include/RDIstrstream.h +--- omniNotify/include/RDIstrstream.h 2003-10-12 22:51:15.000000000 +0400 ++++ omniNotify/include/RDIstrstream.h 2006-09-28 17:44:20.000000000 +0400 +@@ -57,8 +57,10 @@ + RDIstrstream& operator<<(const void *p); + RDIstrstream& operator<<(int n); + RDIstrstream& operator<<(unsigned int n); ++#ifndef HAS_LongLong + RDIstrstream& operator<<(long n); + RDIstrstream& operator<<(unsigned long n); ++#endif + RDIstrstream& operator<<(short n) {return operator<<((int)n);} + RDIstrstream& operator<<(unsigned short n) {return operator<<((unsigned int)n);} + #ifdef HAS_LongLong +diff -Naur omniNotify-orig/include/RDITimeWrappers.h omniNotify/include/RDITimeWrappers.h +--- omniNotify/include/RDITimeWrappers.h 2003-10-23 17:28:18.000000000 +0400 ++++ omniNotify/include/RDITimeWrappers.h 2006-09-28 18:10:41.000000000 +0400 +@@ -236,8 +236,11 @@ + // pretty-printing of absolute local time -- no newline + void out_local(RDIstrstream& str) { + CORBA::ULong ts, tn; +- get_posixbase_secs_nanosecs(ts, tn); +- RDI_posixbase_out_time(str, ts, tn); ++ unsigned long ts3, tn3; ++ get_posixbase_secs_nanosecs(ts3, tn3); ++ RDI_posixbase_out_time(str, ts3, tn3); ++ ts = (CORBA::ULong)ts3; ++ tn = (CORBA::ULong)tn3; + str << " (local time)"; + } + +@@ -396,8 +399,11 @@ + // pretty-printing of absolute univ time -- no newline + void out_gmt(RDIstrstream& str) { + CORBA::ULong ts, tn; +- get_gmt_posixbase_secs_nanosecs(ts, tn); +- RDI_posixbase_out_time(str, ts, tn); ++ unsigned long ts4, tn4; ++ get_gmt_posixbase_secs_nanosecs(ts4, tn4); ++ RDI_posixbase_out_time(str, ts4, tn4); ++ ts = (CORBA::ULong)ts4; ++ tn = (CORBA::ULong)tn4; + str << " (greenwich mean time)"; + } + // static helpers for producing TimeBase::UtcT min and max +diff -Naur omniNotify-orig/lib/RDIstrstream.cc omniNotify/lib/RDIstrstream.cc +--- omniNotify/lib/RDIstrstream.cc 2003-10-23 08:39:12.000000000 +0400 ++++ omniNotify/lib/RDIstrstream.cc 2006-09-28 16:56:03.000000000 +0400 +@@ -175,6 +175,7 @@ + return *this; + } + ++#ifndef HAS_LongLong + RDIstrstream& + RDIstrstream::operator<<(long n) + { +@@ -194,6 +195,7 @@ + width_fill(); + return *this; + } ++#endif + + #ifdef HAS_LongLong + RDIstrstream& +diff -Naur omniNotify-orig/lib/RDITimeWrappers.cc omniNotify/lib/RDITimeWrappers.cc +--- omniNotify/lib/RDITimeWrappers.cc 2003-10-23 08:39:12.000000000 +0400 ++++ omniNotify/lib/RDITimeWrappers.cc 2006-09-28 16:56:09.000000000 +0400 +@@ -147,7 +147,10 @@ + #define WHATFN "RDI_TimeT::fmt_local" + const char *RDI_TimeT::fmt_local() { + CORBA::ULong ts, tm; +- get_posixbase_secs_msecs(ts, tm); ++ unsigned long ts2, tm2; ++ get_posixbase_secs_msecs(ts2, tm2); ++ ts = (CORBA::ULong)ts2; ++ tm = (CORBA::ULong)tm2; + time_t secs_as_time_t = ts; + TW_SCOPE_LOCK(otime_lock, RDI_out_time_lock, "RDI_out_time", WHATFN); + RDI_TimeT_fmt_local_buf_idx = (RDI_TimeT_fmt_local_buf_idx + 1) % 10; +diff -Naur omniNotify/mk/beforeauto.mk.in omniNotify/mk/beforeauto.mk.in +--- omniNotify/mk/beforeauto.mk.in 2003-10-29 22:18:36.000000000 +0300 ++++ omniNotify/mk/beforeauto.mk.in 2006-10-13 16:58:26.000000000 +0400 +@@ -95,9 +95,9 @@ + + CPPFLAGS = $(DIR_CPPFLAGS) $(IMPORT_CPPFLAGS) + +-CFLAGS = $(CDEBUGFLAGS) $(COPTIONS) $(CPPFLAGS) ++CFLAGS = -m64 $(CDEBUGFLAGS) $(COPTIONS) $(CPPFLAGS) + +-CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(CPPFLAGS) ++CXXFLAGS = -m64 $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(CPPFLAGS) + + + ############################################################################# diff --git a/config/patches/opencv.001_compile.patch b/config/patches/opencv.001_compile.patch new file mode 100644 index 0000000..9550f24 --- /dev/null +++ b/config/patches/opencv.001_compile.patch @@ -0,0 +1,22 @@ +diff -NaurwB opencv-2.4.6.1__0/cmake/OpenCVCompilerOptions.cmake opencv-2.4.6.1__1/cmake/OpenCVCompilerOptions.cmake +--- opencv-2.4.6.1__0/cmake/OpenCVCompilerOptions.cmake 2013-07-10 15:49:00.000000000 +0400 ++++ opencv-2.4.6.1__1/cmake/OpenCVCompilerOptions.cmake 2017-03-15 17:06:11.464387144 +0300 +@@ -1,14 +1,14 @@ +-if(MINGW OR (X86 AND UNIX AND NOT APPLE)) +- # mingw compiler is known to produce unstable SSE code with -O3 hence we are trying to use -O2 instead ++if(1 OR MINGW OR (X86 AND UNIX AND NOT APPLE)) ++ # mingw compiler is known to produce unstable SSE code with -O3 hence we are trying to use -O0 instead + if(CMAKE_COMPILER_IS_GNUCXX) + foreach(flags CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG) +- string(REPLACE "-O3" "-O2" ${flags} "${${flags}}") ++ string(REPLACE "-O3" "-O0" ${flags} "${${flags}}") + endforeach() + endif() + + if(CMAKE_COMPILER_IS_GNUCC) + foreach(flags CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG) +- string(REPLACE "-O3" "-O2" ${flags} "${${flags}}") ++ string(REPLACE "-O3" "-O0" ${flags} "${${flags}}") + endforeach() + endif() + endif() diff --git a/config/patches/opencv.002_gcc6.patch b/config/patches/opencv.002_gcc6.patch new file mode 100644 index 0000000..79c8045 --- /dev/null +++ b/config/patches/opencv.002_gcc6.patch @@ -0,0 +1,131 @@ +diff -Naur opencv-2.4.6.1_SRC_orig/cmake/OpenCVPCHSupport.cmake opencv-2.4.6.1_SRC_modif/cmake/OpenCVPCHSupport.cmake +--- opencv-2.4.6.1_SRC_orig/cmake/OpenCVPCHSupport.cmake 2013-07-10 15:49:00.000000000 +0400 ++++ opencv-2.4.6.1_SRC_modif/cmake/OpenCVPCHSupport.cmake 2016-10-17 17:34:32.000000000 +0300 +@@ -19,7 +19,7 @@ + ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion + OUTPUT_VARIABLE gcc_compiler_version) + #MESSAGE("GCC Version: ${gcc_compiler_version}") +- IF(gcc_compiler_version VERSION_GREATER "4.2.-1") ++ IF(gcc_compiler_version VERSION_GREATER "4.2.-1" AND gcc_compiler_version VERSION_LESS "6.0.0") + SET(PCHSupport_FOUND TRUE) + ENDIF() + +diff -Naur opencv-2.4.6.1_SRC_orig/modules/contrib/src/chamfermatching.cpp opencv-2.4.6.1_SRC_modif/modules/contrib/src/chamfermatching.cpp +--- opencv-2.4.6.1_SRC_orig/modules/contrib/src/chamfermatching.cpp 2013-07-10 15:49:00.000000000 +0400 ++++ opencv-2.4.6.1_SRC_modif/modules/contrib/src/chamfermatching.cpp 2016-10-17 18:11:47.000000000 +0300 +@@ -959,10 +959,8 @@ + for (int y=0;y(y,x)[0]=x; +- annotate_img.at(y,x)[1]=y; +- } ++ annotate_img.at(y,x)[0]=x; ++ annotate_img.at(y,x)[1]=y; + + uchar edge_val = edges_img.at(y,x); + if( (edge_val!=0) ) { +@@ -1005,11 +1003,9 @@ + if (dt==-1 || dt>dist) { + dist_img.at(ny,nx) = dist; + q.push(std::make_pair(nx,ny)); +- +- if (&annotate_img!=NULL) { +- annotate_img.at(ny,nx)[0]=annotate_img.at(y,x)[0]; +- annotate_img.at(ny,nx)[1]=annotate_img.at(y,x)[1]; +- } ++ ++ annotate_img.at(ny,nx)[0]=annotate_img.at(y,x)[0]; ++ annotate_img.at(ny,nx)[1]=annotate_img.at(y,x)[1]; + } + } + } +@@ -1101,26 +1097,24 @@ + float cost = (sum_distance/truncate_)/addr.size(); + + +- if (&orientation_img!=NULL) { +- float* optr = orientation_img.ptr(y)+x; +- float sum_orientation = 0; +- int cnt_orientation = 0; +- +- for (size_t i=0;iorientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) { +- sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i]))); +- cnt_orientation++; +- } +- } +- } + +- if (cnt_orientation>0) { +- cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation); +- } +- +- } ++ float* optr = orientation_img.ptr(y)+x; ++ float sum_orientation = 0; ++ int cnt_orientation = 0; ++ ++ for (size_t i=0;iorientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) { ++ sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i]))); ++ cnt_orientation++; ++ } ++ } ++ } ++ ++ if (cnt_orientation>0) { ++ cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation); ++ } + + if(cost > 0){ + ChamferMatcher::Match* istance = new ChamferMatcher::Match(); +diff -Naur opencv-2.4.6.1_SRC_orig/modules/legacy/src/dpstereo.cpp opencv-2.4.6.1_SRC_modif/modules/legacy/src/dpstereo.cpp +--- opencv-2.4.6.1_SRC_orig/modules/legacy/src/dpstereo.cpp 2013-07-10 15:49:00.000000000 +0400 ++++ opencv-2.4.6.1_SRC_modif/modules/legacy/src/dpstereo.cpp 2016-10-18 10:22:03.257968598 +0300 +@@ -76,8 +76,8 @@ + uchar min_val, max_val; + } _CvRightImData; + +-#define CV_IMAX3(a,b,c) ((temp3 = (a) >= (b) ? (a) : (b)),(temp3 >= (c) ? temp3 : (c))) +-#define CV_IMIN3(a,b,c) ((temp3 = (a) <= (b) ? (a) : (b)),(temp3 <= (c) ? temp3 : (c))) ++#define CV_IMAX3(a,b,c) (std::max(std::max((a), (b)), (c))) ++#define CV_IMIN3(a,b,c) (std::min(std::min((a), (b)), (c))) + + static void icvFindStereoCorrespondenceByBirchfieldDP( uchar* src1, uchar* src2, + uchar* disparities, +@@ -87,7 +87,7 @@ + float _param3, float _param4, + float _param5 ) + { +- int x, y, i, j, temp3; ++ int x, y, i, j; + int d, s; + int dispH = maxDisparity + 3; + uchar *dispdata; +diff -Naur opencv-2.4.6.1_SRC_orig/modules/ts/include/opencv2/ts/ts_perf.hpp opencv-2.4.6.1_SRC_modif/modules/ts/include/opencv2/ts/ts_perf.hpp +--- opencv-2.4.6.1_SRC_orig/modules/ts/include/opencv2/ts/ts_perf.hpp 2013-07-10 15:49:00.000000000 +0400 ++++ opencv-2.4.6.1_SRC_modif/modules/ts/include/opencv2/ts/ts_perf.hpp 2016-10-17 17:52:29.000000000 +0300 +@@ -475,9 +475,16 @@ + INSTANTIATE_TEST_CASE_P(/*none*/, fixture##_##name, params);\ + void fixture##_##name::PerfTestBody() + ++ #if defined(_MSC_VER) && (_MSC_VER <= 1400) ++ #define CV_PERF_TEST_MAIN_INTERNALS_ARGS(...) \ ++ while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/ ++ #else ++ #define CV_PERF_TEST_MAIN_INTERNALS_ARGS(...) \ ++ __VA_ARGS__; ++ #endif + + #define CV_PERF_TEST_MAIN_INTERNALS(modulename, impls, ...) \ +- while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/\ ++ CV_PERF_TEST_MAIN_INTERNALS_ARGS(__VA_ARGS__) \ + ::perf::Regression::Init(#modulename);\ + ::perf::TestBase::Init(std::vector(impls, impls + sizeof impls / sizeof *impls),\ + argc, argv);\ diff --git a/config/patches/paco++.001_gcc44_compat.patch b/config/patches/paco++.001_gcc44_compat.patch new file mode 100644 index 0000000..79433d0 --- /dev/null +++ b/config/patches/paco++.001_gcc44_compat.patch @@ -0,0 +1,11 @@ +diff -NaurwB paco++-0.5.5__0/src/kernel/PaCO++_InterfaceParallel_impl.cc paco++-0.5.5__1/src/kernel/PaCO++_InterfaceParallel_impl.cc +--- paco++-0.5.5__0/src/kernel/PaCO++_InterfaceParallel_impl.cc 2009-03-27 11:35:04.000000000 +0300 ++++ paco++-0.5.5__1/src/kernel/PaCO++_InterfaceParallel_impl.cc 2017-03-15 17:13:17.906662733 +0300 +@@ -16,6 +16,7 @@ + // + // Author : André RIBES (EDF R&D) + ++#include + #include "PaCO++_InterfaceParallel_impl.h" + + InterfaceParallel_impl::InterfaceParallel_impl(CORBA::ORB_ptr orb, diff --git a/config/patches/paraview.001_vtk_targets.patch b/config/patches/paraview.001_vtk_targets.patch new file mode 100644 index 0000000..2830ed5 --- /dev/null +++ b/config/patches/paraview.001_vtk_targets.patch @@ -0,0 +1,11 @@ +--- a/VTK/CMake/vtkModuleTop.cmake 2015-12-16 20:17:55.000000000 +0300 ++++ b/VTK/CMake/vtkModuleTop.cmake 2016-02-08 16:12:02.000000000 +0300 +@@ -503,6 +503,7 @@ + get_property(VTK_TARGETS GLOBAL PROPERTY VTK_TARGETS) + if(VTK_TARGETS) + install(EXPORT ${VTK_INSTALL_EXPORT_NAME} DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE ${VTK_INSTALL_EXPORT_NAME}.cmake) ++ install(EXPORT ${VTK_INSTALL_EXPORT_NAME} DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE VTKTargets.cmake) + else() + set(CMAKE_CONFIGURABLE_FILE_CONTENT "# No targets!") + configure_file(${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in + diff --git a/config/patches/paraview.002_visitbridge.patch b/config/patches/paraview.002_visitbridge.patch new file mode 100644 index 0000000..dd460f1 --- /dev/null +++ b/config/patches/paraview.002_visitbridge.patch @@ -0,0 +1,1822 @@ +--- ParaView-5.0.1_SRC.orig/Utilities/VisItBridge/databases/paraDIS/paraDIS_lib/paradis.C 2016-05-11 15:00:58.000000000 +0300 ++++ ParaView-5.0.1_SRC.patch/Utilities/VisItBridge/databases/paraDIS/paraDIS_lib/paradis.C 2016-05-11 15:04:14.000000000 +0300 +@@ -203,28 +203,28 @@ + + rclib::Point FullNode::mBoundsMin, FullNode::mBoundsMax, FullNode::mBoundsSize; + string FullNode::mTraceFileBasename; +- vector FullNode::mTraceNodes; +- std::map FullNode::mFullNodes; ++ vector FullNode::mTraceNodes; ++ std::map FullNode::mFullNodes; + vector FullNode::mFullNodeVector; +- uint32_t FullNode::mNextNodeID = 0; ++ boost::uint32_t FullNode::mNextNodeID = 0; + +- std::map ArmSegment::mArmSegments; ++ std::map ArmSegment::mArmSegments; + vector ArmSegment::mArmSegmentVector; + +- uint32_t ArmSegment::mNextSegmentID = 0; ++ boost::uint32_t ArmSegment::mNextSegmentID = 0; + double ArmSegment::mSegLen = 0 ; +- uint32_t ArmSegment::mNumClassified = 0; +- uint32_t ArmSegment::mNumWrapped = 0; +- uint32_t ArmSegment::mNumArmSegmentsMeasured=0; ++ boost::uint32_t ArmSegment::mNumClassified = 0; ++ boost::uint32_t ArmSegment::mNumWrapped = 0; ++ boost::uint32_t ArmSegment::mNumArmSegmentsMeasured=0; + + vector Arm::mArms; +- vector Arm::mTraceArms; +- uint8_t Arm::mTraceDepth; ++ vector Arm::mTraceArms; ++ boost::uint8_t Arm::mTraceDepth; + string Arm::mTraceFileBasename; + double Arm::mLongestLength = 0.0; + double Arm::mDecomposedLength = 0.0; +- vector Arm::mNumDecomposed(7, 0); // statistics +- int32_t Arm::mNumDestroyedInDetachment = 0; ++ vector Arm::mNumDecomposed(7, 0); // statistics ++ boost::int32_t Arm::mNumDestroyedInDetachment = 0; + double Arm::mTotalArmLengthBeforeDecomposition = 0.0; + double Arm::mTotalArmLengthAfterDecomposition = 0.0; + double Arm::mThreshold = -1; +@@ -236,7 +236,7 @@ + + //=========================================================================== + +- void WriteTraceFiles(string filebase, string description, vector&arms, vector &armdepths, vector &action) { ++ void WriteTraceFiles(string filebase, string description, vector&arms, vector &armdepths, vector &action) { + // =================================== + // FIRST, PRINT THE TEXT FILE + string filename = filebase + ".txt"; +@@ -249,8 +249,8 @@ + } + textfile << "Tracefile for " << description << ", written by paraDIS_lib" << endl; + textfile.flush(); +- uint32_t level = 0; +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ boost::uint32_t level = 0; ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + if (armdepths[arm] == level) { // this is weird, don't worry + textfile << str(boost::format("\n****************\nARM LEVEL %1%\n****************\n\n")%level); + textfile.flush(); +@@ -285,23 +285,23 @@ + + // next, the points + vectornodes; +- vectornumArmNodes; +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ vectornumArmNodes; ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + vector armnodes = arms[arm]->GetNodes(); + numArmNodes.push_back(armnodes.size()); + nodes.insert(nodes.end(), armnodes.begin(), armnodes.end()); + } +- uint32_t armnum = 0, armnode = 0; ++ boost::uint32_t armnum = 0, armnode = 0; + vector previous; + vtkfile << str(boost::format("POINTS %d float") % nodes.size()) << endl; +- for (uint32_t point = 0; point < nodes.size(); point++) { ++ for (boost::uint32_t point = 0; point < nodes.size(); point++) { + if (armnode == numArmNodes[armnum]) { + armnode = 0; + armnum++; + } + vector xyz = nodes[point]->GetLocation(); + if (point > 0) { +- for (uint32_t i=0; i<3; i++) { ++ for (boost::uint32_t i=0; i<3; i++) { + if (xyz[i] - previous[i] > FullNode::mBoundsSize[i]/2){ + xyz[i] -= FullNode::mBoundsSize[i]; + } +@@ -323,10 +323,10 @@ + // next the lines + int numlines = nodes.size() - arms.size(); + vtkfile << str(boost::format("LINES %d %d") % numlines % (3*numlines)) << endl; +- uint32_t currentIndex = 0; +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ boost::uint32_t currentIndex = 0; ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + if (numArmNodes[arm]) { +- for (uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { ++ for (boost::uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { + vtkfile << str(boost::format("2 %d %d")% currentIndex % (currentIndex+1)) << endl; + currentIndex++; + } +@@ -340,12 +340,12 @@ + vtkfile << "SCALARS armnum int" << endl; + vtkfile << "LOOKUP_TABLE default" << endl; + vtkfile.flush(); +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + if (!numArmNodes[arm]) { + continue; + } +- uint32_t armnum = arms[arm]->mArmID; +- for (uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { ++ boost::uint32_t armnum = arms[arm]->mArmID; ++ for (boost::uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { + vtkfile << armnum << " " ; + vtkfile.flush(); + } +@@ -355,12 +355,12 @@ + // next the burgers type for each line + vtkfile << "SCALARS burgers_type int" << endl; + vtkfile << "LOOKUP_TABLE default" << endl; +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + if (!numArmNodes[arm]) { + continue; + } +- uint32_t armtype = arms[arm]->GetBurgersType(); +- for (uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { ++ boost::uint32_t armtype = arms[arm]->GetBurgersType(); ++ for (boost::uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { + vtkfile << armtype << " " ; + vtkfile.flush(); + } +@@ -371,11 +371,11 @@ + // next the arm depths for each line + vtkfile << "SCALARS BFS_depth int" << endl; + vtkfile << "LOOKUP_TABLE default" << endl; +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + if (!numArmNodes[arm]) { + continue; + } +- for (uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { ++ for (boost::uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { + vtkfile << armdepths[arm] << " " ; + } + } +@@ -384,11 +384,11 @@ + // next the "action" for each line + vtkfile << "SCALARS action int" << endl; + vtkfile << "LOOKUP_TABLE default" << endl; +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + if (!numArmNodes[arm]) { + continue; + } +- for (uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { ++ for (boost::uint32_t nodenum = 0; nodenum < numArmNodes[arm]-1; nodenum++) { + vtkfile << action[arm] << " " ; + } + } +@@ -421,14 +421,14 @@ + // next, the points + armnum = 0; armnode = 0; + vtkfile << str(boost::format("POINTS %d float") % nodes.size()) << endl; +- for (uint32_t point = 0; point < nodes.size(); point++) { ++ for (boost::uint32_t point = 0; point < nodes.size(); point++) { + if (armnode == numArmNodes[armnum]) { + armnode = 0; + armnum++; + } + vector xyz = nodes[point]->GetLocation(); + if (point > 0) { +- for (uint32_t i=0; i<3; i++) { ++ for (boost::uint32_t i=0; i<3; i++) { + if (xyz[i] - previous[i] > FullNode::mBoundsSize[i]/2){ + xyz[i] -= FullNode::mBoundsSize[i]; + } +@@ -449,7 +449,7 @@ + + // now node vertices to allow node plotting + vtkfile << str(boost::format("VERTICES %d %d") % nodes.size() % (2*nodes.size())) << endl; +- for (uint32_t point = 0; point < nodes.size(); point++) { ++ for (boost::uint32_t point = 0; point < nodes.size(); point++) { + vtkfile << "1 " << point << endl; + vtkfile.flush(); + } +@@ -459,8 +459,8 @@ + vtkfile << str(boost::format("CELL_DATA %d") % nodes.size()) << endl; + vtkfile << "SCALARS node_index int" << endl; + vtkfile << "LOOKUP_TABLE default" << endl; +- for (uint32_t point = 0; point < nodes.size(); point++) { +- uint32_t nodeID = nodes[point]->GetIndex(); ++ for (boost::uint32_t point = 0; point < nodes.size(); point++) { ++ boost::uint32_t nodeID = nodes[point]->GetIndex(); + vtkfile << nodeID << " "; + vtkfile.flush(); + } +@@ -558,7 +558,7 @@ + + //=========================================================================== + void FullNode::PrintAllNodeTraces(string stepname) { +- for (vector::iterator nodeid = FullNode::mTraceNodes.begin(); ++ for (vector::iterator nodeid = FullNode::mTraceNodes.begin(); + nodeid != mTraceNodes.end(); nodeid++) { + if (FullNode::mFullNodes.find(*nodeid) == FullNode::mFullNodes.end()) { + if (*nodeid < FullNode::mFullNodes.size()) { +@@ -582,7 +582,7 @@ + dbprintf(5, "Node::WriteTraceFiles(node %d)\n", mNodeIndex); + string filebase = str(boost::format("%s-%s-Node_%d") % mTraceFileBasename % stepname % mNodeIndex); + vector arms; +- vector armdepths; ++ vector armdepths; + vector action; + + if (mNeighborArms.size() ) { +@@ -672,7 +672,7 @@ + s += ""; + } else { + s += "<"; +- uint32_t i=0; while (i < mNeighborSegments.size()) { ++ boost::uint32_t i=0; while (i < mNeighborSegments.size()) { + if (mNeighborSegments[i]) { + s += intToString(mNeighborSegments[i]->GetID()); + } else { +@@ -688,7 +688,7 @@ + } + } else { + s += "\n"; +- uint32_t i=0; while (i < mNeighborSegments.size()) { ++ boost::uint32_t i=0; while (i < mNeighborSegments.size()) { + s += INDENT(indent) + "neighbor " + intToString(i) + ": "; + if (mNeighborSegments[i]) { + s+= mNeighborSegments[i]->Stringify(indent+1); +@@ -719,7 +719,7 @@ + while (neighbor--) { + const ArmSegment *theSegment = + dynamic_cast(mNeighborSegments[neighbor]); +- int8_t btype = theSegment->GetBurgersType(); ++ boost::int8_t btype = theSegment->GetBurgersType(); + if (btypes[btype] || btype < 0) { + continue; //not a monster, we're done + } +@@ -765,12 +765,12 @@ + vector armpair(2,NULL); + vector matched(mNeighborSegments.size(), false); + // first, identify looped cross arms +- for (uint32_t segnum = 0; segnum < mNeighborSegments.size()-1; segnum++) { ++ for (boost::uint32_t segnum = 0; segnum < mNeighborSegments.size()-1; segnum++) { + if (!matched[segnum] && + mNeighborSegments[segnum]->mParentArm->mTerminalNodes.size() == 1) { + dbprintf(4, str(boost::format("FullNode::IdentifyCrossArms(): node(%1%): found crossing loop arm %2%.\n") % GetNodeIDString() % mNeighborSegments[segnum]->mParentArm->mArmID).c_str()); + armpair[0] = NULL; +- for (uint32_t match = segnum+1; match < mNeighborSegments.size(); ++match) { ++ for (boost::uint32_t match = segnum+1; match < mNeighborSegments.size(); ++match) { + if (!matched[match] && + mNeighborSegments[match]->mParentArm == mNeighborSegments[segnum]->mParentArm ) { + matched[segnum] = true; +@@ -792,10 +792,10 @@ + + + // next, identify non-looped cross arms +- for (uint32_t segnum = 0; segnum < mNeighborSegments.size()-1; ++segnum) { +- int8_t btype = mNeighborSegments[segnum]->GetBurgersType(); ++ for (boost::uint32_t segnum = 0; segnum < mNeighborSegments.size()-1; ++segnum) { ++ boost::int8_t btype = mNeighborSegments[segnum]->GetBurgersType(); + if (!matched[segnum]) { +- for (uint32_t match = segnum+1; match < mNeighborSegments.size(); ++match) { ++ for (boost::uint32_t match = segnum+1; match < mNeighborSegments.size(); ++match) { + if (!matched[match] && + mNeighborSegments[match]->GetBurgersType() == btype) { + matched[match] = matched[segnum] = true; +@@ -821,7 +821,7 @@ + void FullNode::DetachCrossArms(void) { + + vector >crossarms = IdentifyCrossArms(); +- for (uint32_t armpair = 0; armpair < crossarms.size(); ++armpair) { ++ for (boost::uint32_t armpair = 0; armpair < crossarms.size(); ++armpair) { + crossarms[armpair][0]->mExtendOrDetach = false; + if (crossarms[armpair][1] == NULL) { + crossarms[armpair][0]->DetachLoopFromNode(this); +@@ -844,7 +844,7 @@ + } else { + s += "(NONE)\n"; + } +- uint32_t epnum = 0; ++ boost::uint32_t epnum = 0; + while (epnum < 2) { + s+= INDENT(indent+1) + "ep "+intToString(epnum)+": "; + if (mEndpoints[epnum]) s+= mEndpoints[epnum]->Stringify(0); +@@ -985,17 +985,17 @@ + + + //=========================================================================== +- int8_t ArmSegment::GetMNType(void) const { ++ boost::int8_t ArmSegment::GetMNType(void) const { + return mParentArm->mArmType; + } + + //=========================================================================== +- uint32_t ArmSegment::GetArmID(void) { ++ boost::uint32_t ArmSegment::GetArmID(void) { + return mParentArm->mArmID; + } + + //=========================================================================== +- uint32_t ArmSegment::GetMetaArmID(void) { ++ boost::uint32_t ArmSegment::GetMetaArmID(void) { + if (!mParentArm) { + dbprintf(0, "ERROR: GetMetaArmID() called on parentless segment.\n"); + return METAARM_UNKNOWN; +@@ -1004,7 +1004,7 @@ + } + + //=========================================================================== +- uint8_t ArmSegment::GetMetaArmType(void) { ++ boost::uint8_t ArmSegment::GetMetaArmType(void) { + if (!mParentArm) { + dbprintf(0, "ERROR: GetMetaArmType() called on parentless segment.\n"); + return METAARM_UNKNOWN; +@@ -1021,7 +1021,7 @@ + */ + void Arm::WriteTraceFiles(string stepname) { + bool trace = false; +- for (uint32_t n = 0; n arms; +- vector armdepths; ++ vector armdepths; + vector action; + FindBFSNeighbors(arms, armdepths, action); + string description = str(boost::format("arm %1%")%mArmID); +@@ -1040,21 +1040,21 @@ + } + + //=========================================================================== +- void Arm::FindBFSNeighbors(vector &arms, vector &armdepths, vector &action) { ++ void Arm::FindBFSNeighbors(vector &arms, vector &armdepths, vector &action) { + arms.push_back(this); + armdepths.push_back(0); + action.push_back(2); + + // first, collect the list of arms in BFS order: +- uint32_t armnum = 0; +- uint32_t depth = 0; ++ boost::uint32_t armnum = 0; ++ boost::uint32_t depth = 0; + while (depth++ < mTraceDepth && armnum < arms.size()) { +- uint32_t lastInLevel = arms.size(); ++ boost::uint32_t lastInLevel = arms.size(); + for (; armnum < lastInLevel; armnum++) { + // append arm's neighbors onto arms + Arm *arm = arms[armnum]; + arm->mSeen = true; +- uint32_t numneighbors = arm->GetNumNeighborArms(); ++ boost::uint32_t numneighbors = arm->GetNumNeighborArms(); + dbprintf(5, "Arm::WriteTraceFiles(arm %d): arm %d, depth %d: looking at %d neighbor arms\n", mArmID, arm->mArmID, depth, numneighbors); + while (numneighbors--) { + Arm *nei = arm->GetNeighborArm(numneighbors); +@@ -1072,7 +1072,7 @@ + } + } + } +- for (uint32_t arm = 0; arm < arms.size(); arm++) { ++ for (boost::uint32_t arm = 0; arm < arms.size(); arm++) { + arms[arm]->mSeen = false; + } + return ; +@@ -1176,7 +1176,7 @@ + + + //=========================================================================== +- uint32_t Arm::GetMetaArmID(void) { ++ boost::uint32_t Arm::GetMetaArmID(void) { + if (!mParentMetaArm) { + dbprintf(0, "Error: GetMetaArmID() called on parentless arm.\n"); + return METAARM_UNKNOWN; +@@ -1185,7 +1185,7 @@ + } + + //=========================================================================== +- uint8_t Arm::GetMetaArmType(void) { ++ boost::uint8_t Arm::GetMetaArmType(void) { + if (!mParentMetaArm) { + dbprintf(0, "Error: GetMetaArmType() called on parentless arm.\n"); + return METAARM_UNKNOWN; +@@ -1317,7 +1317,7 @@ + startNode = mTerminalNodes[0]; + } + +- uint32_t startnodenum = 0; ++ boost::uint32_t startnodenum = 0; + for (startnodenum = 0; startnodenum < mTerminalNodes.size(); startnodenum++) { + if (startNode == mTerminalNodes[startnodenum]) { + break; +@@ -1750,7 +1750,7 @@ + int btype = GetBurgersType(); + FullNode *sourceNode = sharedNode; // for iterating through source arm + dbprintf(6, "ExtendBySegments(%d): iterating through %d source segments\n", mArmID, sourceSegments.size()); +- uint32_t seg = 0; ++ boost::uint32_t seg = 0; + while (seg < sourceSegments.size()) { + sourceNode = sourceSegments[seg]->GetOtherEndpoint(sourceNode); + +@@ -1864,7 +1864,7 @@ + */ + bool Arm::Decompose(int energy) { + +- int8_t burgtype = GetBurgersType(); ++ boost::int8_t burgtype = GetBurgersType(); + if (burgtype/10 != energy) + return false; // not yet + +@@ -1880,7 +1880,7 @@ + // This will be the one with the least number of neighbors. If two terminal nodes have the same number of neighbors, use the one that has the lowest maximum energy level. + // I believe this greedy algorithm results in the global minimum decomposition too. + +- uint32_t numTermNodes = mTerminalNodes.size(); ++ boost::uint32_t numTermNodes = mTerminalNodes.size(); + vector maxEnergies; // we'll analyze this later. + vector numneighbors; + vector extendedArmIDs; +@@ -1903,7 +1903,7 @@ + WriteTraceFiles("1-before-detachment"); + + // Actually perform detachment +- for (uint32_t n = 0; nDetachCrossArms(); + } + +@@ -1915,7 +1915,7 @@ + + WriteTraceFiles("2-before-decomposition"); + int sharedNodeNum = -1; +- for (uint32_t termnode = 0; termnode < numTermNodes; termnode++) { ++ for (boost::uint32_t termnode = 0; termnode < numTermNodes; termnode++) { + numneighbors.push_back(mTerminalNodes[termnode]->mNeighborArms.size()); + maxEnergies.push_back(0); + int neighbor = 0; +@@ -1972,7 +1972,7 @@ + double decomposedLength = 0; + neighbornum = neighborArms.size(); + vector sourceSegments = this->GetSegments(sharedNode); +- uint32_t decomposed = 0; ++ boost::uint32_t decomposed = 0; + while (neighbornum--) { + Arm *neighborArm = neighborArms[neighbornum]; + if (neighborArm != this) { +@@ -2084,7 +2084,7 @@ + string MetaArm::Stringify(int indent) { + int atype = mMetaArmType; + string s = INDENT(indent) + str(boost::format("(MetaArm): mLength: %1%, mMetaArmType: %2% (%3%), mMetaArmID: %4%\n\n")%mLength % atype % MetaArmTypeNames(mMetaArmType) % mMetaArmID); +- uint32_t i = 0; ++ boost::uint32_t i = 0; + while (iStringify(indent+1); + s += INDENT(indent+1); +@@ -2155,7 +2155,7 @@ + else { + dbprintf(4, "Candidate is type 200 and we shall try to recurse..\n", mMetaArmID); + } +- uint32_t nodenum = candidate->mTerminalNodes.size(); ++ boost::uint32_t nodenum = candidate->mTerminalNodes.size(); + if (nodenum < 2) { + dbprintf(0, "Error: Found candidate with %d terminal node(s), but we already tested for loops. \n", mMetaArmID, nodenum); + errexit1; +@@ -2175,7 +2175,7 @@ + return true; + } + +- uint32_t neighbornum = node->mNeighborArms.size(); ++ boost::uint32_t neighbornum = node->mNeighborArms.size(); + dbprintf(4, "FindEndpoint(metaarm %d): Candidate has N node on other end. Recursing on %d neighbors.\n", mMetaArmID, neighbornum); + Arm *foundseed = NULL; + while (neighbornum--) { +@@ -2280,11 +2280,11 @@ + // Best algorithm: + + // A metaarm can continue in up to two directions, call them paths. +- //uint32_t pathsTaken = 0; ++ //boost::uint32_t pathsTaken = 0; + + // First, check each terminal node of the arm. If it's a monster, add it as a meta arm terminal node and mark off a path. If it's not, then recurse on it to extend the arm. + dbprintf(4, "FindEndpoints(metaarm %d) (seed %d): Checking terminal nodes of seed arm.\n", mMetaArmID, seed->mArmID); +- uint32_t nodenum = 0; // seed->mTerminalNodes.size(); ++ boost::uint32_t nodenum = 0; // seed->mTerminalNodes.size(); + bool seedIsTerminal = false; + while (nodenum < seed->mTerminalNodes.size() && mMetaArmType != METAARM_LOOP_111) { + FullNode * node = seed->mTerminalNodes[nodenum]; +@@ -2444,7 +2444,7 @@ + vector > points; + if (mMetaArmType == METAARM_LOOP_111 || mMetaArmType == METAARM_LOOP_HIGH_ENERGY) { + vectornodes = GetNodes(); +- uint32_t p = 0; ++ boost::uint32_t p = 0; + while (p < nodes.size()-1) { + vector f = nodes[p]->GetLocation(); + points.push_back(f); +@@ -2507,11 +2507,11 @@ + double armLengths[11] = {0}, totalArmLength=0; + + +- uint32_t numArms[11] = {0}; // number of arms of each type +- uint32_t totalArms=0; ++ boost::uint32_t numArms[11] = {0}; // number of arms of each type ++ boost::uint32_t totalArms=0; + #if LINKED_LOOPS + double linkedLoopLength = 0; +- uint32_t numLinkedLoops = 0; ++ boost::uint32_t numLinkedLoops = 0; + #endif + + double *armLengthBins = NULL; +@@ -2532,7 +2532,7 @@ + }; + + double shortLengths[16] = {0}, longLengths[16]={0}; +- uint32_t numShortArms[16]={0}, numLongArms[16]={0}; ++ boost::uint32_t numShortArms[16]={0}, numLongArms[16]={0}; + + vector::iterator armpos = Arm::mArms.begin(), armend = Arm::mArms.end(); + while (armpos != armend) { +@@ -2543,7 +2543,7 @@ + continue; + } + if (mThreshold >= 0) { +- int8_t btype = (*armpos)->GetBurgersType(); ++ boost::int8_t btype = (*armpos)->GetBurgersType(); + if (!btype) { + printf("Error: armpos has no terminal segments!\n"); + } +@@ -2683,9 +2683,9 @@ + fprintf(thefile, "========================================\n\n\n"); + #ifdef DEBUG_SEGMENTS + // check against segment lengths: +- uint32_t numSegments[11] = {0}, totalSegments=0, culledSegments=0; // number of arms of each type ++ boost::uint32_t numSegments[11] = {0}, totalSegments=0, culledSegments=0; // number of arms of each type + double segmentLengths[11] = {0}, totalSegmentLength=0, culledLength=0; +- for (std::map::iterator segpos = ArmSegments.begin(); segpos != mArmSegments.end(); ++segpos) { ++ for (std::map::iterator segpos = ArmSegments.begin(); segpos != mArmSegments.end(); ++segpos) { + ArmSegment *seg = segpos->second; + double length = seg->GetLength(); + // Cull out half the wrapped segments in such a way that for each culled, there is an identical one remaining: +@@ -2849,7 +2849,7 @@ + } + + //====================================================================== +- void DataSet::CopyNodeFromFile(uint32_t &lineno, map &nodehash, std::ifstream &datafile, std::ofstream &tagfile) { ++ void DataSet::CopyNodeFromFile(boost::uint32_t &lineno, map &nodehash, std::ifstream &datafile, std::ofstream &tagfile) { + // read the first line of the next node in the file: + char comma; + int domainID, nodeID; +@@ -2923,7 +2923,7 @@ + } + + //====================================================================== +- void DataSet::ReadMinimalNodeFromFile(uint32_t &lineno, std::ifstream &datafile) { ++ void DataSet::ReadMinimalNodeFromFile(boost::uint32_t &lineno, std::ifstream &datafile) { + MinimalNode theNode; + char comma; + int domainID, nodeID; +@@ -2997,8 +2997,8 @@ + STARTPROGRESS(); + dbprintf(2, "Size of a minimal_node is %d bytes\n", sizeof(MinimalNode)); + char linebuf[2048]=""; +- uint32_t nodenum = 0; +- uint32_t lineno = 1; ++ boost::uint32_t nodenum = 0; ++ boost::uint32_t lineno = 1; + ReadBounds(); + try { + ifstream datafile(mDataFilename.c_str()); +@@ -3127,7 +3127,7 @@ + debugfile << "subspace bounds: " << mSubspaceMin.Stringify() << ", " << mSubspaceMax.Stringify() << endl; + std::vector::iterator pos = MinimalNode::mMinimalNodes.begin(), + endpos = MinimalNode::mMinimalNodes.end(); +- uint32_t nodenum = 0; ++ boost::uint32_t nodenum = 0; + while (pos != endpos) { + debugfile << "MinimalNode " << nodenum++ <<":\n"<< pos->Stringify(false) << endl; + debugfile << "***************************************************" << endl << endl; +@@ -3412,7 +3412,7 @@ + theTimer.start(); + dbprintf(2, "Size of a full node is %d bytes, so expect to use %d megabytes\n", sizeof(FullNode), MinimalNode::mMinimalNodes.size()*sizeof(FullNode)/1000000); + char linebuf[2048]=""; +- uint32_t nodenum = 0; ++ boost::uint32_t nodenum = 0; + try { + ifstream datafile(mDataFilename.c_str()); + if (!datafile.good()){ +@@ -3435,7 +3435,7 @@ + throw string( "Error: cannot find first node in data file"); + } + STARTPROGRESS(); +- uint32_t nodelimit = MinimalNode::mMinimalNodes.size(); ++ boost::uint32_t nodelimit = MinimalNode::mMinimalNodes.size(); + std::vector::reverse_iterator rpos = MinimalNode::mMinimalNodes.rbegin(), rend = MinimalNode::mMinimalNodes.rend(); + //dbprintf(2, "\n"); + while (datafile.good() && nodenum < nodelimit && rpos != rend) { +@@ -3462,10 +3462,10 @@ + //=========================================================================== + void DataSet::WrapBoundarySegments(void) { + STARTPROGRESS(); +- uint32_t segnum = 0, totalsegs = ArmSegment::mArmSegments.size(); ++ boost::uint32_t segnum = 0, totalsegs = ArmSegment::mArmSegments.size(); + ArmSegment *newSegment = NULL; + FullNode *newnode0, *newnode1; +- for (map ::const_iterator segpos = ArmSegment::mArmSegments.begin(); segpos != ArmSegment::mArmSegments.end(); segpos++, segnum++) { ++ for (map ::const_iterator segpos = ArmSegment::mArmSegments.begin(); segpos != ArmSegment::mArmSegments.end(); segpos++, segnum++) { + ArmSegment *seg = segpos->second; + if (seg && seg->Wrap(mDataSize, newSegment, newnode0, newnode1)) { + newnode0->SetWrappedCopy(true); +@@ -3483,11 +3483,11 @@ + + //=========================================================================== + string DataSet::GetMonsterNodeSummary(void) { +- vector monsterTypes(1); +- for (std::map::iterator nodepos = FullNode::mFullNodes.begin(); nodepos != FullNode::mFullNodes.end(); nodepos++) { ++ vector monsterTypes(1); ++ for (std::map::iterator nodepos = FullNode::mFullNodes.begin(); nodepos != FullNode::mFullNodes.end(); nodepos++) { + FullNode *node = nodepos->second; + if (node && node->GetNodeType() < 0 && !node->IsWrappedCopy()) { +- uint8_t theType = - node->GetNodeType(); ++ boost::uint8_t theType = - node->GetNodeType(); + if (theType >= monsterTypes.size()) { + monsterTypes.resize(theType+1); + } +@@ -3497,7 +3497,7 @@ + } + string s; + s += str(boost::format("Total monster nodes: %1%\n") %monsterTypes[0]); +- for (uint8_t t = 1; t < monsterTypes.size(); t++) { ++ for (boost::uint8_t t = 1; t < monsterTypes.size(); t++) { + if (monsterTypes[t]) { + s += str(boost::format("Type -%1% monster nodes: %2%\n") % (int)t % monsterTypes[t]); + } +@@ -3524,8 +3524,8 @@ + debugfile << "=================================================" << endl; + debugfile << endl << endl; + +- for (std::map::iterator nodepos = FullNode::mFullNodes.begin(); nodepos != FullNode::mFullNodes.end(); nodepos++) { +- uint32_t key = nodepos->first; ++ for (std::map::iterator nodepos = FullNode::mFullNodes.begin(); nodepos != FullNode::mFullNodes.end(); nodepos++) { ++ boost::uint32_t key = nodepos->first; + FullNode *node = nodepos->second; + debugfile << "mFullNodes[" << key <<"]: " << node->Stringify(false ) << endl; + debugfile << "**************************************************************" << endl << endl; +@@ -3582,7 +3582,7 @@ + + STARTPROGRESS(); + +- uint32_t armnum = 0; ++ boost::uint32_t armnum = 0; + /*! + For now, just look at every inbounds node and if it has not been looked at, make an arm out of it. + */ +@@ -3592,7 +3592,7 @@ + If you start from an out of bounds node, you will often trace out arms that have no nodes in them! That would be segfault fodder. + */ + try { +- for (map::iterator nodepos = FullNode::mFullNodes.begin(); nodepos != FullNode::mFullNodes.end(); ++nodepos, ++nodenum) { ++ for (map::iterator nodepos = FullNode::mFullNodes.begin(); nodepos != FullNode::mFullNodes.end(); ++nodepos, ++nodenum) { + FullNode *node = nodepos->second; + if (!node->InBounds()) { + continue; +@@ -3664,10 +3664,10 @@ + + //=========================================================================== + void DataSet::DecomposeArms(void) { +- uint32_t armnum = 0; ++ boost::uint32_t armnum = 0; + vector newArms; + int energyLevel = 7, numarms=Arm::mArms.size(); +- vector numDecomposed(7, 0); ++ vector numDecomposed(7, 0); + while (energyLevel-- > 1) { + if (energyLevel == 1 && !Arm::mTraceArms.size()) { + // skip level 1; the only reason to do level 1 is to trace arms +@@ -3710,7 +3710,7 @@ + + debugfile <<"There are " << Arm::mArms.size() << " arms." << endl; + vector::iterator pos = Arm::mArms.begin(), endpos = Arm::mArms.end(); +- uint32_t armnum = 0, empty=0; ++ boost::uint32_t armnum = 0, empty=0; + while (pos != endpos) { + debugfile << "Arm #" << armnum << ": " << (*pos)->Stringify(0) << endl; + debugfile << "******************************************************" << endl << endl; +@@ -3745,7 +3745,7 @@ + + debugfile <<"There are " << mMetaArms.size() << " MetaArms." << endl; + vector >::iterator pos = mMetaArms.begin(), endpos = mMetaArms.end(); +- uint32_t armnum = 0; ++ boost::uint32_t armnum = 0; + while (pos != endpos) { + debugfile << "MetaArm #" << armnum << ": " << (*pos)->Stringify(0) << endl; + debugfile.flush(); +@@ -3797,11 +3797,11 @@ + // ======================================================= + // SEGMENT FILES + // We go by arm by arm to save writing duplicate points everywhere. +- uint32_t numsegfiles = ArmSegment::mArmSegments.size()/mElementsPerVTKFile + 1; ++ boost::uint32_t numsegfiles = ArmSegment::mArmSegments.size()/mElementsPerVTKFile + 1; + dbecho(0, str(boost::format("DataSet::WriteVTKFiles() will write %d segment files. \n")% numsegfiles)); + vector segfiles; + vector segfilenames; +- for (uint32_t fileno = 0; fileno < numsegfiles; fileno++) { ++ for (boost::uint32_t fileno = 0; fileno < numsegfiles; fileno++) { + string filename = str(boost::format("%s/%s-segments-%04d.vtk")%mOutputDir%mOutputBasename%fileno); + FILE * fp = fopen(filename.c_str(), "w"); + if (!fp) { +@@ -3815,14 +3815,14 @@ + // ---------------------------------------------------------- + // WRITE THE SEGMENT FILES + float armsperfile = (float)(Arm::mArms.size())/segfiles.size(); +- for (uint32_t fileno = 0; fileno < segfiles.size(); fileno++) { ++ for (boost::uint32_t fileno = 0; fileno < segfiles.size(); fileno++) { + FILE *segfile = segfiles[fileno]; + string filename = segfilenames[fileno]; +- uint32_t firstarm = armsperfile * fileno; +- uint32_t lastarm = armsperfile *(fileno + 1) - 1; ++ boost::uint32_t firstarm = armsperfile * fileno; ++ boost::uint32_t lastarm = armsperfile *(fileno + 1) - 1; + if (fileno == segfiles.size()-1) + lastarm = Arm::mArms.size() - 1; +- uint32_t numarms = lastarm-firstarm+1; ++ boost::uint32_t numarms = lastarm-firstarm+1; + // ---------------------------------------------------------- + // 1. Segment file: the header + fprintf(segfile,"# vtk DataFile Version 3.0\n" ); +@@ -3836,13 +3836,13 @@ + // cause us to write too many duplicate points. This of course + // comes at a minor expense in imperfect load balancing due to + // unequal unpredictable arm lengths. +- uint32_t numnodes = 0, numsegs = 0; +- for (uint32_t armnum = 0; armnum < numarms; armnum++) { ++ boost::uint32_t numnodes = 0, numsegs = 0; ++ for (boost::uint32_t armnum = 0; armnum < numarms; armnum++) { + numnodes += Arm::mArms[armnum+firstarm]->GetNumNodes(); + } + fprintf(segfile, "\nPOINTS %d float\n", numnodes); +- vector nodecounts; +- for (uint32_t armnum = 0; armnum < numarms; armnum++) { ++ vector nodecounts; ++ for (boost::uint32_t armnum = 0; armnum < numarms; armnum++) { + vector nodes = Arm::mArms[armnum+firstarm]->GetNodes(); + nodecounts.push_back(0); + FullNode *previous = NULL; +@@ -3864,12 +3864,12 @@ + // 3. Segment file: Segments (connectivity) + fprintf(segfile, "\nLINES %d %d\n", numsegs, 3*numsegs); + +- uint32_t nodenum = 0, previousnodenum = 0; +- for (uint32_t armnum = 0; armnum < numarms; armnum++) { ++ boost::uint32_t nodenum = 0, previousnodenum = 0; ++ for (boost::uint32_t armnum = 0; armnum < numarms; armnum++) { + Arm *theArm = Arm::mArms[armnum+firstarm]; + if (!theArm->mNumSegments) continue; + +- uint32_t armsegs = 0; ++ boost::uint32_t armsegs = 0; + if (theArm->mNumWrappedSegments) { + vector nodes = theArm->GetNodes(); + FullNode *previous = NULL; +@@ -3890,7 +3890,7 @@ + } + else { + // no wrapped segments +- for (uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { ++ for (boost::uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { + fprintf(segfile, "2 %d %d\n", nodenum, nodenum+1); + ++nodenum; + armsegs ++; +@@ -3911,10 +3911,10 @@ + fprintf(segfile, "\nCELL_DATA %d\n", numsegs); + fprintf(segfile, "SCALARS armnum int\n"); + fprintf(segfile, "LOOKUP_TABLE default\n"); +- uint32_t testsegs = 0; +- for (uint32_t armnum = 0; armnum < numarms; armnum++) { ++ boost::uint32_t testsegs = 0; ++ for (boost::uint32_t armnum = 0; armnum < numarms; armnum++) { + Arm *theArm = Arm::mArms[armnum+firstarm]; +- for (uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { ++ for (boost::uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { + fprintf(segfile, "%d ", armnum); + ++testsegs; + } +@@ -3927,10 +3927,10 @@ + // 5. Segment file: Segment Burgers type + fprintf(segfile, "SCALARS burgers_type int\n"); + fprintf(segfile, "LOOKUP_TABLE default\n"); +- for (uint32_t armnum = 0; armnum < numarms; armnum++) { ++ for (boost::uint32_t armnum = 0; armnum < numarms; armnum++) { + Arm *theArm = Arm::mArms[armnum+firstarm]; +- uint32_t burgertype = theArm->GetBurgersType(); +- for (uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { ++ boost::uint32_t burgertype = theArm->GetBurgersType(); ++ for (boost::uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { + fprintf(segfile, "%d ", burgertype); + ++testsegs; + } +@@ -3942,10 +3942,10 @@ + // ---------------------------------------------------------- + fprintf(segfile, "SCALARS metaarm_type int\n"); + fprintf(segfile, "LOOKUP_TABLE default\n"); +- for (uint32_t armnum = 0; armnum < numarms; armnum++) { ++ for (boost::uint32_t armnum = 0; armnum < numarms; armnum++) { + Arm *theArm = Arm::mArms[armnum+firstarm]; +- uint32_t matype = theArm->GetMetaArmType(); +- for (uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { ++ boost::uint32_t matype = theArm->GetMetaArmType(); ++ for (boost::uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { + fprintf(segfile, "%d ", matype); + ++testsegs; + } +@@ -3957,9 +3957,9 @@ + // ---------------------------------------------------------- + fprintf(segfile, "SCALARS block_number int\n"); + fprintf(segfile, "LOOKUP_TABLE default\n"); +- for (uint32_t armnum = 0; armnum < numarms; armnum++) { ++ for (boost::uint32_t armnum = 0; armnum < numarms; armnum++) { + Arm *theArm = Arm::mArms[armnum+firstarm]; +- for (uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { ++ for (boost::uint32_t segnum = 0; segnum < theArm->mNumSegments; segnum++) { + fprintf(segfile, "%d ", fileno); + ++testsegs; + } +@@ -3976,7 +3976,7 @@ + string visitsegfilename = str(boost::format("%s/%s-segments.visit")%mOutputDir%mOutputBasename); + FILE *visitsegfile = fopen(visitsegfilename.c_str(), "w"); + fprintf(visitsegfile, "!NBLOCKS %d\n", (int)segfiles.size()); +- for (uint32_t fileno = 0; fileno < segfiles.size(); fileno++) { ++ for (boost::uint32_t fileno = 0; fileno < segfiles.size(); fileno++) { + fprintf(visitsegfile, "%s\n", Basename(segfilenames[fileno]).c_str()); + } + fclose(visitsegfile); +@@ -3986,11 +3986,11 @@ + // ============================================================ + // NODE FILES + // We use mElementsPerVTKFile to limit our node file size too. +- uint32_t numnodefiles = FullNode::mFullNodes.size()/mElementsPerVTKFile + 1; ++ boost::uint32_t numnodefiles = FullNode::mFullNodes.size()/mElementsPerVTKFile + 1; + dbecho(0, str(boost::format("DataSet::WriteVTKFiles() will write %d node files. \n")% numnodefiles)); + vector nodefiles; + vector nodefilenames; +- for (uint32_t fileno = 0; fileno < numnodefiles; fileno++) { ++ for (boost::uint32_t fileno = 0; fileno < numnodefiles; fileno++) { + string filename = str(boost::format("%s/%s-nodes-%04d.vtk")%mOutputDir%mOutputBasename%fileno); + FILE * fp = fopen(filename.c_str(), "w"); + if (!fp) { +@@ -4003,20 +4003,20 @@ + + // ---------------------------------------------------------- + // WRITE THE NODE FILES +- map::iterator nodepos = FullNode::mFullNodes.begin(), ++ map::iterator nodepos = FullNode::mFullNodes.begin(), + nodeend = FullNode::mFullNodes.end(); + float nodesperfile = (float)(FullNode::mFullNodes.size())/numnodefiles; +- uint32_t firstnode = 0; ++ boost::uint32_t firstnode = 0; + +- for (uint32_t fileno = 0; fileno < nodefiles.size(); fileno++) { ++ for (boost::uint32_t fileno = 0; fileno < nodefiles.size(); fileno++) { + FILE *nodefile = nodefiles[fileno]; + string filename = nodefilenames[fileno]; +- uint32_t lastnode = nodesperfile *(fileno + 1.0) - 1; ++ boost::uint32_t lastnode = nodesperfile *(fileno + 1.0) - 1; + if (fileno == nodefiles.size()-1) + lastnode = FullNode::mFullNodes.size()-1; +- uint32_t numnodes = lastnode - firstnode + 1; ++ boost::uint32_t numnodes = lastnode - firstnode + 1; + +- map::iterator firstnodepos = nodepos; ++ map::iterator firstnodepos = nodepos; + + // ---------------------------------------------------------- + // 1. Node file: the header +@@ -4028,7 +4028,7 @@ + // ---------------------------------------------------------- + // 2. Node file: Points. + fprintf(nodefile, "\nPOINTS %d float\n", numnodes); +- uint32_t nodecount = 0; ++ boost::uint32_t nodecount = 0; + for (nodecount = 0; + nodecount < numnodes && nodepos != nodeend; + nodecount++, nodepos++) { +@@ -4041,14 +4041,14 @@ + + // ---------------------------------------------------------- + // 2. Node file: Vertices +- for (uint32_t nodenum = 0; nodenum < numnodes; nodenum++) { ++ for (boost::uint32_t nodenum = 0; nodenum < numnodes; nodenum++) { + fprintf(nodefile, "1 %d\n", nodenum); + } + + // ---------------------------------------------------------- + // Node file: Node Index + nodepos = firstnodepos; +- for (uint32_t nodenum = 0; nodenum < numnodes; nodenum++, nodepos++) { ++ for (boost::uint32_t nodenum = 0; nodenum < numnodes; nodenum++, nodepos++) { + fprintf(nodefile, "1 %d\n", nodepos->second->GetIndex()); + } + // ---------------------------------------------------------- +@@ -4071,8 +4071,8 @@ + // Write a file containing all tagged nodes with their tag values. + void DataSet::WriteTagFile(void) { + // First, create a fast searchable map for lookups, as our global map is ordered by global Node Index, which is not necessarily in file order any more at this point. +- map nodehash; +- for (map::iterator pos = FullNode::mFullNodes.begin(); ++ map nodehash; ++ for (map::iterator pos = FullNode::mFullNodes.begin(); + pos != FullNode::mFullNodes.end(); pos++) { + nodehash[pos->second->Hash()] = pos->second; + } +@@ -4081,8 +4081,8 @@ + dbecho(1, str(boost::format("DataSet::WriteTagFile: Writing node tags to file %s... ")% tagfilename)); + + +- uint32_t nodenum = 0; +- uint32_t lineno = 1; ++ boost::uint32_t nodenum = 0; ++ boost::uint32_t lineno = 1; + char linebuf[2048]=""; + STARTPROGRESS(); + +@@ -4135,7 +4135,7 @@ + string metaArmFile = mOutputDir + "/" + mOutputBasename + ".metaarms"; + dbecho(0, str(boost::format("Writing metaarms to metaarm file %s... ")% metaArmFile)); + +- uint32_t a = Arm::mArms.size(); ++ boost::uint32_t a = Arm::mArms.size(); + while (a--) { + Arm::mArms[a]->mSeen = false; + } +@@ -4148,9 +4148,9 @@ + fprintf(armfile, "DISCUSSION: \n%s\n", doctext.c_str()); + + vector >::iterator pos = mMetaArms.begin(), endpos = mMetaArms.end(); +- uint32_t armnum = 0, metaarmcounts[7]={0}; ++ boost::uint32_t armnum = 0, metaarmcounts[7]={0}; + double metaarmtypelengths[7] = {0.0}, totalEPDist = 0.0; +- uint32_t numarms = 0; ++ boost::uint32_t numarms = 0; + while (pos != endpos) { + if ((*pos)->mTerminalNodes.size() == 2) { + totalEPDist += (*pos)->mTerminalNodes[0]->Distance(*( (*pos)->mTerminalNodes[1]), true); +@@ -4239,7 +4239,7 @@ + dbprintf(0, "WARNING: arm # %d has %d terminal arms\n", armnum, numtermnodes); + dbprintf(0, (*pos)->Stringify(0).c_str()); + } else { +- uint32_t i = numtermnodes, numarms = (*pos)->mAllArms.size(); ++ boost::uint32_t i = numtermnodes, numarms = (*pos)->mAllArms.size(); + while (i--) { + (*pos)->mTerminalNodes[i]->GetLocation(loc[i]); + ntypes[i] = (*pos)->mTerminalNodes[i]->GetNodeType(); +@@ -4307,7 +4307,7 @@ + "EP1-ID", "EP1-Type", "EP1-Nbrs", "EP1-X", "EP1-Y", "EP1-Z", + "EP2-ID", "EP2-Type", "EP2-Nbrs", "EP2-X", "EP2-Y", "EP2-Z"); + vector::iterator pos = Arm::mArms.begin(), endpos = Arm::mArms.end(); +- uint32_t armnum = 0; ++ boost::uint32_t armnum = 0; + while (pos != endpos) { + if ((*pos)->mArmType == ARM_EMPTY) { + ++pos; +@@ -4466,14 +4466,14 @@ + + //========================================================================= + void DataSet::CreateNodeSegmentVectors(void) { +- uint32_t index = 0; +- for (map::iterator pos = FullNode::mFullNodes.begin(); pos != FullNode::mFullNodes.end(); pos++, index++) { ++ boost::uint32_t index = 0; ++ for (map::iterator pos = FullNode::mFullNodes.begin(); pos != FullNode::mFullNodes.end(); pos++, index++) { + pos->second->SetIndex(index); + FullNode::mFullNodeVector.push_back(pos->second); + } + + index = 0; +- for (map::iterator pos = ArmSegment::mArmSegments.begin(); pos != ArmSegment::mArmSegments.end(); pos++, index++) { ++ for (map::iterator pos = ArmSegment::mArmSegments.begin(); pos != ArmSegment::mArmSegments.end(); pos++, index++) { + pos->second->SetIndex(index); + ArmSegment::mArmSegmentVector.push_back(pos->second); + } +@@ -4483,7 +4483,7 @@ + + //========================================================================= + void DataSet::ComputeNodeTypes(void) { +- for (map::iterator pos = FullNode::mFullNodes.begin(); pos != FullNode::mFullNodes.end(); pos++) { ++ for (map::iterator pos = FullNode::mFullNodes.begin(); pos != FullNode::mFullNodes.end(); pos++) { + pos->second->ComputeNodeType(); + } + } +@@ -4494,7 +4494,7 @@ + (*currentArm)->mSeen = false; + } + +- uint32_t numMetaArms = 0, numArms = 0, totalArms = Arm::mArms.size(); ++ boost::uint32_t numMetaArms = 0, numArms = 0, totalArms = Arm::mArms.size(); + STARTPROGRESS(); + dbprintf(4, "FindMetaArms: %s\n", datestring()); + for (vector::iterator currentArm = Arm::mArms.begin(); currentArm != Arm::mArms.end(); ++currentArm, ++numArms) { +@@ -4545,7 +4545,7 @@ + + for (vector::iterator currentArm = Arm::mArms.begin(); currentArm != Arm::mArms.end(); ++currentArm) { + if (!(*currentArm)->mSeen && (*currentArm)->mArmType != ARM_EMPTY) { +- uint32_t id = (*currentArm)->mArmID; ++ boost::uint32_t id = (*currentArm)->mArmID; + dbprintf(0, "\n\nError: arm %d has not been seen!\n", id); + errexit; + } +@@ -4559,11 +4559,11 @@ + bool DataSet::Test(void) { + dbprintf(0, "DataSet::Test(): called\n"); + +- vectorsegsperarm(Arm::mArms.size(), 0), segspermetaarm(mMetaArms.size(), 0); ++ vectorsegsperarm(Arm::mArms.size(), 0), segspermetaarm(mMetaArms.size(), 0); + + //================================================================ + dbprintf(0, "DataSet::Test(): enumerating segsperarm\n"); +- for (map::iterator segpos = ArmSegment::mArmSegments.begin(); segpos != ArmSegment::mArmSegments.end(); ++segpos) { ++ for (map::iterator segpos = ArmSegment::mArmSegments.begin(); segpos != ArmSegment::mArmSegments.end(); ++segpos) { + ArmSegment * seg = segpos->second; + if (!seg->mParentArm) { + dbprintf(0, "DataSet::Test(): seg %d has NULL parent \n", seg->mSegmentID); +@@ -4581,7 +4581,7 @@ + //================================================================ + dbprintf(0, "DataSet::Test(): checking arms \n"); + bool success = true; +- uint32_t numArms = 0, numsegs = 0, numnodes = 0; ++ boost::uint32_t numArms = 0, numsegs = 0, numnodes = 0; + for (vector::iterator arm = Arm::mArms.begin(); arm != Arm::mArms.end(); ++arm, ++numArms) { + vector segs = (*arm)->GetSegments(); + numsegs += segs.size(); +@@ -4593,7 +4593,7 @@ + for (vector::iterator seg = segs.begin(); seg != segs.end(); seg++, ++segnum) { + dbprintf(0, "armseg %d: %s\n", segnum, (*seg)->Stringify(0).c_str()); + } +- for (map::iterator seg = ArmSegment::mArmSegments.begin(); seg != ArmSegment::mArmSegments.end(); ++seg) { ++ for (map::iterator seg = ArmSegment::mArmSegments.begin(); seg != ArmSegment::mArmSegments.end(); ++seg) { + if (seg->second->mParentArm == *arm) { + vector::iterator pos = find(segs.begin(), segs.end(), seg->second); + if (pos == segs.end()) { +@@ -4628,11 +4628,11 @@ + Checking metaarm segments counts is wrong -- for VisIt, a 'MetaArm' always has only a single segment, connecting its endpoints. The entire metaarm is returned only if it is a LOOP. + + dbprintf(0, "DataSet::Test(): checking meta-arms \n"); +- uint32_t manum = 0; ++ boost::uint32_t manum = 0; + numsegs = 0; + for (vector >::iterator metaarm = mMetaArms.begin(); metaarm != mMetaArms.end(); ++metaarm, ++manum) { +- uint32_t masegs = (*metaarm)->GetNumSegments(false); +- uint32_t shouldbe = segspermetaarm[(*metaarm)->GetMetaArmID()]; ++ boost::uint32_t masegs = (*metaarm)->GetNumSegments(false); ++ boost::uint32_t shouldbe = segspermetaarm[(*metaarm)->GetMetaArmID()]; + if (masegs != shouldbe) { + dbprintf(0, "DataSet::Test(): numsegs %d != segspermetaarm[%d] %d \n", masegs, (*metaarm)->GetMetaArmID(), shouldbe); + return false; +@@ -4649,7 +4649,7 @@ + dbprintf(0, "DataSet::Test(): checking arm segments \n"); + if (numnodes != FullNode::mFullNodes.size()) { + dbprintf(0, "DataSet::Test(): numnodes %d != FullNode::mFullNodes.size() %d. Searching for extra node...\n", numnodes, FullNode::mFullNodes.size()); +- for (map::iterator node = FullNode::mFullNodes.begin(); node != FullNode::mFullNodes.end(); ++node) { ++ for (map::iterator node = FullNode::mFullNodes.begin(); node != FullNode::mFullNodes.end(); ++node) { + if (!node->second->mSeen) { + dbprintf(0, "DataSet::Test(): unseen node: %s\n", node->second->Stringify(0, false).c_str()); + } +--- ParaView-5.0.1_SRC.orig/Utilities/VisItBridge/databases/paraDIS/paraDIS_lib/paradis.h 2016-05-11 13:07:50.000000000 +0300 ++++ ParaView-5.0.1_SRC.patch/Utilities/VisItBridge/databases/paraDIS/paraDIS_lib/paradis.h 2016-05-11 15:03:40.000000000 +0300 +@@ -1,3 +1,4 @@ ++ + /*! + \file paradis.h + +@@ -30,13 +31,13 @@ + + /* now for the API */ + #include +-using boost::int8_t; +-using boost::int16_t; +-using boost::int32_t; +-using boost::uint8_t; +-using boost::uint16_t; +-using boost::uint32_t; +-using boost::uint64_t; ++//using boost::int8_t; ++//using boost::int16_t; ++//using boost::int32_t; ++//using boost::uint8_t; ++//using boost::uint16_t; ++//using boost::uint32_t; ++//using boost::uint64_t; + #include + #include + +@@ -141,12 +142,12 @@ + mNodeID = other.mNodeID; + } + // ------------------------------------------------- +- NodeID(int16_t domain, int32_t node) { ++ NodeID(boost::int16_t domain, boost::int32_t node) { + mDomainID = domain; + mNodeID = node; + } + // ------------------------------------------------- +- uint64_t Hash(void) const { ++ boost::uint64_t Hash(void) const { + if (mNodeID >= 1000*1000) { + cerr << "Warning: Hash() is no longer unique" << endl; + } +@@ -157,8 +158,8 @@ + return INDENT(indent) + str(boost::format("NodeID: (%1%,%2%)")% mDomainID % mNodeID); + } + +- uint32_t mDomainID; +- uint64_t mNodeID; ++ boost::uint32_t mDomainID; ++ boost::uint64_t mNodeID; + }; + + /*! +@@ -203,7 +204,7 @@ + } + + // return a hash based on NodeID +- uint64_t Hash(void) const { ++ boost::uint64_t Hash(void) const { + return mID.Hash(); + } + +@@ -229,9 +230,9 @@ + */ + const NodeID &GetNodeID(void) const { return mID; } + +- int32_t GetNodeSimulationDomain(void) const { return mID.mDomainID; } ++ boost::int32_t GetNodeSimulationDomain(void) const { return mID.mDomainID; } + +- int32_t GetNodeSimulationID(void) const { return mID.mNodeID; } ++ boost::int32_t GetNodeSimulationID(void) const { return mID.mNodeID; } + + /*! + conversion of Node to string +@@ -360,12 +361,12 @@ + /*! + Accessor + */ +- uint32_t GetFileOrderIndex(void) const { return mFileOrderIndex; } ++ boost::uint32_t GetFileOrderIndex(void) const { return mFileOrderIndex; } + + /*! + Accessor + */ +- void SetFileOrderIndex(uint32_t index) { mFileOrderIndex = index; } ++ void SetFileOrderIndex(boost::uint32_t index) { mFileOrderIndex = index; } + + /*! + For sorting by file order +@@ -381,7 +382,7 @@ + virtual std::string Stringify(int indent, bool shortform=true) const { + std::string s =std::string("MinimalNode: ")+Node::Stringify(0) + string("\nClassification: ") + string(mKeep?"KEEP":"DON'T KEEP") + string("\n"); + s += (intToString(mNeighbors.size()) + " neighbors --------------:\n"); +- uint32_t n = 0; ++ boost::uint32_t n = 0; + if (!shortform) { + while (n < mNeighbors.size()) { + s += "neighbor " + intToString(n) + ": "; +@@ -402,7 +403,7 @@ + /*! + Accessor function -- returns const due to the fact that neighbors are stored in a set in the data set. But you can always create a copy of what you get, or use const_cast<> on it. + */ +- /* const Neighbor *GetNeighbor(uint32_t num) const { ++ /* const Neighbor *GetNeighbor(boost::uint32_t num) const { + if (num >= mNeighbors.size()) + throw std::string("subscript out of range in BaseNode::GtNeighbor"); + return mNeighbors[num]; +@@ -436,7 +437,7 @@ + /*! + Nodes must be sorted to find while classifying, then resorted in "file order" to most quickly load the full nodes later. So we keep an index into the file. + */ +- uint32_t mFileOrderIndex; ++ boost::uint32_t mFileOrderIndex; + + /*! + The neighbors for this particular node +@@ -466,7 +467,7 @@ + */ + FullNode(const FullNode &other, bool skipneighbors=false) { + init(); +- uint32_t saved = mNodeIndex; ++ boost::uint32_t saved = mNodeIndex; + *this = other; + mNodeIndex = saved; + if (skipneighbors) { +@@ -490,7 +491,7 @@ + =========================================== + constructor + */ +- FullNode(int16_t domain, int32_t nodeID) { ++ FullNode(boost::int16_t domain, boost::int32_t nodeID) { + init(); + mID = NodeID(domain, nodeID); + } +@@ -499,7 +500,7 @@ + Clear all nodes + */ + static void Clear(void) { +- for (map::iterator nodepos = mFullNodes.begin(); nodepos != mFullNodes.end(); nodepos++) { ++ for (map::iterator nodepos = mFullNodes.begin(); nodepos != mFullNodes.end(); nodepos++) { + delete nodepos->second; + } + mFullNodes.clear(); +@@ -547,7 +548,7 @@ + Add the given arm to the list of arms to trace. + See WriteTraceFiles() + */ +- static void TraceNode(int32_t nodeID){ ++ static void TraceNode(boost::int32_t nodeID){ + mTraceNodes.push_back(nodeID); + } + +@@ -630,7 +631,7 @@ + /*! + Accessor function set the node type. + */ +- void SetNodeType(int8_t itype) { ++ void SetNodeType(boost::int8_t itype) { + mNodeType = itype; + return; + } +@@ -638,7 +639,7 @@ + /*! + Accessor function + */ +- int8_t GetNodeType(void) { return mNodeType; } ++ boost::int8_t GetNodeType(void) { return mNodeType; } + + + /*! +@@ -746,13 +747,13 @@ + /*! + Accessor function + */ +- ArmSegment *GetNeighborSegment(uint32_t num) const { ++ ArmSegment *GetNeighborSegment(boost::uint32_t num) const { + if (num >= mNeighborSegments.size()) + throw std::string("subscript out of range in GetNeighborSegment"); + return mNeighborSegments[num]; + } + +- struct Arm *GetNeighborArm(uint32_t num) const { ++ struct Arm *GetNeighborArm(boost::uint32_t num) const { + if (num >= mNeighborArms.size()) + throw std::string("subscript out of range in GetNeighborArm"); + return mNeighborArms[num]; +@@ -798,14 +799,14 @@ + /*! + Accessor function + */ +- int32_t GetIndex(void) { return mNodeIndex; } ++ boost::int32_t GetIndex(void) { return mNodeIndex; } + + string GetNodeIDString(void) { return GetNodeID().Stringify(0); } + + /*! + Accessor + */ +- void SetIndex(int32_t index) { ++ void SetIndex(boost::int32_t index) { + mNodeIndex = index; + } + +@@ -828,10 +829,10 @@ + /*! + all fullnodes in the data set. DO NOT SORT THIS -- each node has an Index which is its position in this array when created -- used to find its counterpart in the wrapped nodes for tracing along arms to find their endpoints and lengths. + */ +- static std::map mFullNodes; ++ static std::map mFullNodes; + static std::vector mFullNodeVector; + +- static uint32_t mNextNodeID; ++ static boost::uint32_t mNextNodeID; + + /*! + Static member to keep track of subspace bounds for checking if we are in bounds or not +@@ -848,7 +849,7 @@ + /*! + Node Type is whether we are a butterfly, monster, or normal node (or a placeholder in a segment) + */ +- int8_t mNodeType; ++ boost::int8_t mNodeType; + + bool mIsLoopNode; + +@@ -857,7 +858,7 @@ + /*! + This is needed for things like Visit, where nodes are accessed by node ID, whereas this library uses pointers. Since it is also our index inthe global array of nodes, it turns out to be a good way to get the "real" counterpart of a wrapped node. + */ +- int32_t mNodeIndex; ++ boost::int32_t mNodeIndex; + + /*! + Connectivity to our neighboring nodes encapsulated in ArmSegments +@@ -865,10 +866,10 @@ + std::vector< ArmSegment *> mNeighborSegments; + + static string mTraceFileBasename; +- static vector mTraceNodes; ++ static vector mTraceNodes; + + // statistics: +- std::vector mNumMonsterNodes; ++ std::vector mNumMonsterNodes; + + }; /* end FullNode */ + +@@ -886,7 +887,7 @@ + } + ArmSegment(const ArmSegment &other){ + init(); +- uint32_t saved = mSegmentID; ++ boost::uint32_t saved = mSegmentID; + *this = other; + mSegmentID = saved; + } +@@ -921,7 +922,7 @@ + + static void Clear(void) { + +- for (map::iterator pos = mArmSegments.begin(); pos != mArmSegments.end(); ++pos) { ++ for (map::iterator pos = mArmSegments.begin(); pos != mArmSegments.end(); ++pos) { + delete pos->second; + } + mArmSegments.clear(); +@@ -952,14 +953,14 @@ + /*! + Accessor function + */ +- /*static ArmSegment *GetArmSegment(uint32_t segnum) { ++ /*static ArmSegment *GetArmSegment(boost::uint32_t segnum) { + return mArmSegments[segnum]; + }*/ + + /*! + Accessor function. + */ +- /* static uint32_t GetNumArmSegments(void) { ++ /* static boost::uint32_t GetNumArmSegments(void) { + return mArmSegments.size(); + } + */ +@@ -1001,7 +1002,7 @@ + } + + +- int8_t GetBurgersType(void) const { return mBurgersType; } ++ boost::int8_t GetBurgersType(void) const { return mBurgersType; } + + /*! + Return the distance between the endpoints +@@ -1013,42 +1014,42 @@ + /*! + Accessor function + */ +- int32_t GetNodeIndex(int num) { ++ boost::int32_t GetNodeIndex(int num) { + return mEndpoints[num]->GetIndex(); + } + + /*! + Set the segment id to the next available global ID + */ +- void SetIndex(uint32_t id) { ++ void SetIndex(boost::uint32_t id) { + mSegmentID = id; + return; + } + /*! + accessor -- noop if not debug mode + */ +- uint32_t GetID(void) { ++ boost::uint32_t GetID(void) { + return mSegmentID; + } + + /* Get the metaarm ID for the parent of this segment */ +- uint32_t GetMetaArmID(void); ++ boost::uint32_t GetMetaArmID(void); + + /* Get the metaarm Type for the parent of this segment */ +- uint8_t GetMetaArmType(void); ++ boost::uint8_t GetMetaArmType(void); + + /*! + Accessor for MN type + */ +- int8_t GetMNType(void) const; ++ boost::int8_t GetMNType(void) const; + + /* Get the arm ID for the parent of this segment */ +- uint32_t GetArmID(void); ++ boost::uint32_t GetArmID(void); + + /*! + Accessor function + */ +- void GetNodeIndices(uint32_t indices[2]) { ++ void GetNodeIndices(boost::uint32_t indices[2]) { + indices[0] = mEndpoints[0]->GetIndex(); + indices[1] = mEndpoints[1]->GetIndex(); + } +@@ -1079,7 +1080,7 @@ + /*! + SetEndpoint -- given an actual new FullNode and ID information for an as-yet uncreated neighborNode, we set the endpoints to be the address of the actualNode and the address of an internal placeholder, a copy of neighborNode. We will delete the placeholder FullNode later, either when the actual FullNode is created, or when our destructor is called. + */ +- void SetEndpoints(FullNode *actualNode, int16_t neighborDomain, int32_t neighborNodeID) { ++ void SetEndpoints(FullNode *actualNode, boost::int16_t neighborDomain, boost::int32_t neighborNodeID) { + FullNode *placeholder = new FullNode(neighborDomain, neighborNodeID); + placeholder->SetNodeType(PLACEHOLDER_NODE); //mark as a dummy node; + SetEndpoints(actualNode, placeholder); +@@ -1211,7 +1212,7 @@ + /*! + purely for debugging + */ +- int32_t mSegmentID; ++ boost::int32_t mSegmentID; + + /*! + to find out if wrapped +@@ -1225,23 +1226,23 @@ + + + static double mSegLen; +- static uint32_t mNumClassified, mNumWrapped, mNumArmSegmentsMeasured; +- static uint32_t mNextSegmentID; ++ static boost::uint32_t mNumClassified, mNumWrapped, mNumArmSegmentsMeasured; ++ static boost::uint32_t mNextSegmentID; + + protected: + + /*! + The burgers-type is defined above. + */ +- int8_t mBurgersType; ++ boost::int8_t mBurgersType; + + /*! + The MN_type of the segment is set by its parent arm. See Arm struct for definitions, but it describes whether the segment is 200 or 111 and whether its parent arm has any monsters at either end. + */ +- //int8_t mMNType; ++ //boost::int8_t mMNType; + + /* The metaArm type that it belongs to. */ +- int8_t mMetaArmType; ++ boost::int8_t mMetaArmType; + + /*! + Marker used for "once-through" operations like building arms that must look at every segment, but which will usually discover echo particular segment more than once. +@@ -1258,7 +1259,7 @@ + /*! + The global list of valid arm segments + */ +- static std::map mArmSegments; ++ static std::map mArmSegments; + static vector mArmSegmentVector; + + struct Arm *mParentArm; +@@ -1321,7 +1322,7 @@ + return 1000*(id0.GetDomainID() + id1.GetDomainID()) + id0.GetNodeID() + id1.GetNodeID(); + } + private: +- uint32_t mDenominator; ++ boost::uint32_t mDenominator; + }; + */ + //============================================== +@@ -1384,7 +1385,7 @@ + */ + void MakeAncestor(Arm *sourceArm) { + mAncestorArms.push_back(sourceArm->mArmID); +- for (uint32_t a = 0; a < sourceArm->mAncestorArms.size(); a++) { ++ for (boost::uint32_t a = 0; a < sourceArm->mAncestorArms.size(); a++) { + mAncestorArms.push_back(sourceArm->mAncestorArms[a]); + } + return; +@@ -1432,7 +1433,7 @@ + Give the exact Burgers type of its segments. + Return 0 is no terminal segments. + */ +- int8_t GetBurgersType(void) const { ++ boost::int8_t GetBurgersType(void) const { + if (!mTerminalSegments.size() || !mTerminalSegments[0]) { + return BURGERS_UNKNOWN; + } +@@ -1441,10 +1442,10 @@ + + + /* Get the metaarm ID for the parent of this arm */ +- uint32_t GetMetaArmID(void); ++ boost::uint32_t GetMetaArmID(void); + + /* Get the metaarm Type for the parent of this arm */ +- uint8_t GetMetaArmType(void); ++ boost::uint8_t GetMetaArmType(void); + + #if LINKED_LOOPS + /*! +@@ -1465,7 +1466,7 @@ + */ + vector GetNodes(FullNode *startNode = NULL) const; + +- uint32_t GetNumNodes(void) { ++ boost::uint32_t GetNumNodes(void) { + // The math here is a bit odd, due to wrapping: + if (!mNumSegments) return 0; + return mNumSegments + 1 + mNumWrappedSegments; +@@ -1534,9 +1535,9 @@ + } + + FullNode *GetCommonNode(Arm *other) { +- uint32_t myNode = mTerminalNodes.size(); ++ boost::uint32_t myNode = mTerminalNodes.size(); + while (myNode--) { +- uint32_t otherNode = other->mTerminalNodes.size(); ++ boost::uint32_t otherNode = other->mTerminalNodes.size(); + while (otherNode--) { + if (mTerminalNodes[myNode] == other->mTerminalNodes[otherNode]) { + return mTerminalNodes[myNode]; +@@ -1549,10 +1550,10 @@ + /*! + Return number of neighbor arms, not including this arm, but including duplicates + */ +- uint32_t GetNumNeighborArms(void) { +- uint32_t num = 0; +- for (uint32_t node = 0; node < mTerminalNodes.size(); node++) { +- for (uint32_t arm=0; arm < mTerminalNodes[node]->mNeighborArms.size(); arm++) { ++ boost::uint32_t GetNumNeighborArms(void) { ++ boost::uint32_t num = 0; ++ for (boost::uint32_t node = 0; node < mTerminalNodes.size(); node++) { ++ for (boost::uint32_t arm=0; arm < mTerminalNodes[node]->mNeighborArms.size(); arm++) { + if (mTerminalNodes[node]->mNeighborArms[arm] != this) { + num++; + } +@@ -1565,8 +1566,8 @@ + Return nth neighbor arm, not including this but including duplicates + */ + Arm *GetNeighborArm (int num) { +- for (uint32_t node = 0; node < mTerminalNodes.size(); node++) { +- for (uint32_t arm=0; arm < mTerminalNodes[node]->mNeighborArms.size(); arm++) { ++ for (boost::uint32_t node = 0; node < mTerminalNodes.size(); node++) { ++ for (boost::uint32_t arm=0; arm < mTerminalNodes[node]->mNeighborArms.size(); arm++) { + if (mTerminalNodes[node]->mNeighborArms[arm] != this) { + if (!num) + return mTerminalNodes[node]->mNeighborArms[arm]; +@@ -1585,7 +1586,7 @@ + return mArmLength; + } + +- uint8_t GetArmType(void) const { return mArmType; } ++ boost::uint8_t GetArmType(void) const { return mArmType; } + + struct MetaArm *GetParentMetaArm(void) const { return mParentMetaArm; } + +@@ -1603,13 +1604,13 @@ + /*! + Helper function for Arm::WriteTraceFiles and FullNode::WriteTraceFiles + */ +- void FindBFSNeighbors(vector &arms, vector &armdepths, vector &action); ++ void FindBFSNeighbors(vector &arms, vector &armdepths, vector &action); + + /*! + Add the given arm to the list of arms to trace. + See WriteTraceFiles() + */ +- static void TraceArm(int32_t armID){ ++ static void TraceArm(boost::int32_t armID){ + mTraceArms.push_back(armID); + } + +@@ -1617,7 +1618,7 @@ + Set the tracing depth for all traced arms. + See WriteTraceFiles() + */ +- static void SetTraceDepth(uint32_t depth) { ++ static void SetTraceDepth(boost::uint32_t depth) { + mTraceDepth = depth; + } + +@@ -1642,8 +1643,8 @@ + vector < ArmSegment *> mTerminalSegments; // At least one, but not more than two + vector mTerminalNodes; // At least one, but not more than two + +- int8_t mArmType; +- int8_t mMetaArmType; // of its parent if it exists ++ boost::int8_t mArmType; ++ boost::int8_t mMetaArmType; // of its parent if it exists + double mArmLength; + /*! + This is useless to the user, only used for classification +@@ -1651,8 +1652,8 @@ + static std::vector mArms; + static double mThreshold; // shorter than this and an arm is "short" + static double mDecomposedLength; // statistics +- static vector mNumDecomposed; // statistics +- static int32_t mNumDestroyedInDetachment; // statistics ++ static vector mNumDecomposed; // statistics ++ static boost::int32_t mNumDestroyedInDetachment; // statistics + static double mTotalArmLengthBeforeDecomposition, + mTotalArmLengthAfterDecomposition; + bool mDecomposing, mExtendOrDetach; +@@ -1664,27 +1665,27 @@ + /*! + number of segments in arm + */ +- uint32_t mNumSegments; ++ boost::uint32_t mNumSegments; + /*! + number of segments that got wrapped (affects node and segments counts) + */ +- uint8_t mNumWrappedSegments; ++ boost::uint8_t mNumWrappedSegments; + /*! + purely for debugging + */ +- int32_t mArmID; ++ boost::int32_t mArmID; + + + /*! + An ancestor of this arm was one which was assimilated into this arm, + during decomposition. Useful for history tracing. + */ +- vector mAncestorArms; ++ vector mAncestorArms; + + /*! + To trace out arms in a text and vtk file, add them to this vector + */ +- static vector mTraceArms; ++ static vector mTraceArms; + + /*! + uniquify files from this run +@@ -1695,7 +1696,7 @@ + When tracing arms, how deep to BFS for neighbors? + 0 is no neighbors. 1 is immediate neighbors, etc. + */ +- static uint8_t mTraceDepth; ++ static boost::uint8_t mTraceDepth; + + private: + struct MetaArm * mParentMetaArm; +@@ -1734,7 +1735,7 @@ + + vector > GetNodeLocations(bool wrapEndpoints); + +- uint32_t GetNumSegments(bool wrapEndpoints) { ++ boost::uint32_t GetNumSegments(bool wrapEndpoints) { + if (!mNumSegments) { + dbprintf(1, "WARNING: MetaArm::GetNumSegments(): mNumSegments is 0. You should call GetNodeLocations() before GetNumSegments() to avoid a permormance penalty.\n"); + GetNodeLocations(wrapEndpoints); +@@ -1758,7 +1759,7 @@ + } + // ====================== + inline void AddTerminalNode(FullNode *node) { +- uint16_t nodenum = mTerminalNodes.size(); ++ boost::uint16_t nodenum = mTerminalNodes.size(); + while (nodenum--) { + if (mTerminalNodes[nodenum] == node) { + dbprintf(4, "Warning: node not added as it is a duplicate.\n"); +@@ -1770,7 +1771,7 @@ + } + // ====================== + inline void AddTerminalArm(Arm *arm) { +- uint16_t armnum = mTerminalArms.size(); ++ boost::uint16_t armnum = mTerminalArms.size(); + while (armnum--) { + if (mTerminalArms[armnum] == arm) { + dbprintf(4, "Warning: arm not added as it is a duplicate.\n"); +@@ -1785,7 +1786,7 @@ + if (doreverse) { + reverse(mFoundArms.begin(), mFoundArms.end()); + } +- uint32_t i = 0; ++ boost::uint32_t i = 0; + while (i < mFoundArms.size()) { + dbprintf(4, "Capture Path: add arm %d\n", mFoundArms[i]->mArmID); + i++; +@@ -1795,16 +1796,16 @@ + return; + } + +- int8_t GetMetaArmType(void) { return mMetaArmType; } +- int32_t GetMetaArmID(void) { return mMetaArmID; } ++ boost::int8_t GetMetaArmType(void) { return mMetaArmType; } ++ boost::int32_t GetMetaArmID(void) { return mMetaArmID; } + + + vectormTerminalNodes; // + vector mTerminalArms; // one or two arms + double mLength; +- int8_t mMetaArmType; +- uint32_t mMetaArmID; +- uint32_t mNumSegments, mNumNodes; ++ boost::int8_t mMetaArmType; ++ boost::uint32_t mMetaArmID; ++ boost::uint32_t mNumSegments, mNumNodes; + static rclib::Point mWrappedNode; // Used in GetNodeLocations -- used to indicate a gap in the point list from a MetaArm where a segment is skipped due to wrapping. + bool mCombo; + bool mFound111; // if we see a 111 on our search +@@ -1922,21 +1923,21 @@ + /*! + Trace decomposition of the given arm to the given depth. + */ +- void TraceNode(int32_t nodeID){ ++ void TraceNode(boost::int32_t nodeID){ + FullNode::TraceNode(nodeID); + } + + /*! + Trace decomposition of the given arm to the given depth. + */ +- void TraceArm(int32_t armID){ ++ void TraceArm(boost::int32_t armID){ + Arm::TraceArm(armID); + } + + /*! + Set trace depth for arm tracing + */ +- void SetTraceDepth(uint32_t depth) { ++ void SetTraceDepth(boost::uint32_t depth) { + Arm::SetTraceDepth(depth); + } + +@@ -2044,7 +2045,7 @@ + /*! + Accessor function. + */ +- uint32_t GetNumNodes(void) { return FullNode::mFullNodeVector.size(); } ++ boost::uint32_t GetNumNodes(void) { return FullNode::mFullNodeVector.size(); } + /*! + Accessor returns begin of node vector. + */ +@@ -2063,7 +2064,7 @@ + /*! + Accessor function. + */ +- FullNode * GetNode(uint32_t nodenum) { ++ FullNode * GetNode(boost::uint32_t nodenum) { + if (nodenum >= FullNode::mFullNodeVector.size()) { + cerr << "ERROR: GetNode() -- out of bounds index" << endl; + return NULL; +@@ -2104,19 +2105,19 @@ + /*! + Accessor function + */ +- uint32_t GetNumMetaArms(void) { return mMetaArms.size(); } ++ boost::uint32_t GetNumMetaArms(void) { return mMetaArms.size(); } + + /*! + Accessor function + */ +- boost::shared_ptr GetMetaArm(uint32_t metaArmNum) { ++ boost::shared_ptr GetMetaArm(boost::uint32_t metaArmNum) { + return mMetaArms[metaArmNum]; + } + + /*! + Accessor function + */ +- ArmSegment *GetArmSegment(uint32_t segnum) { ++ ArmSegment *GetArmSegment(boost::uint32_t segnum) { + if (segnum >= ArmSegment::mArmSegmentVector.size()) { + cerr << "" << endl; + return NULL; +@@ -2127,7 +2128,7 @@ + /*! + Accessor function. + */ +- uint32_t GetNumArmSegments(void) { ++ boost::uint32_t GetNumArmSegments(void) { + return ArmSegment::mArmSegmentVector.size(); + } + +@@ -2200,11 +2201,11 @@ + /*! + Read a node from the input file and write it out with its tag to the tagfile + */ +- void CopyNodeFromFile(uint32_t &lineno, map &nodehash, std::ifstream &datafile, std::ofstream &tagfile); ++ void CopyNodeFromFile(boost::uint32_t &lineno, map &nodehash, std::ifstream &datafile, std::ofstream &tagfile); + /*! + Read a node and its neighbors from a file. This has to be done in DataSet because we avoid duplicate neighbor structs by using pointers into a global neighbor array. + */ +- void ReadMinimalNodeFromFile(uint32_t &lineno, std::ifstream &datafile); ++ void ReadMinimalNodeFromFile(boost::uint32_t &lineno, std::ifstream &datafile); + /*! + Make a first pass through the file: load all as MinimalNodes, with minimal info: {domain and ID, whether out of bounds, neighbor IDs} + */ +@@ -2317,12 +2318,12 @@ + When writing out VTK files, this is how many to put per block max. + Aids in speedy visualization. + */ +- uint32_t mElementsPerVTKFile; ++ boost::uint32_t mElementsPerVTKFile; + + /*! + Number of nodes in full dump data + */ +- uint32_t mTotalDumpNodes; ++ boost::uint32_t mTotalDumpNodes; + + /*! + if this is true, then complete dumps of all data are done, diff --git a/config/patches/paraview.003_surfacelic.patch b/config/patches/paraview.003_surfacelic.patch new file mode 100644 index 0000000000000000000000000000000000000000..ac9039248a431df8ade4986294cc7acdc1bea5de GIT binary patch literal 564340 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

5_Byv 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%0DDJU| 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 WG2%7{& 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�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%0AeSB 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�A?O>Lw?6&e?HQo>|>!%X#p{1#zvmJ5I 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 ret; + + if (factory) { +- char **proxies = px_proxy_factory_get_proxies(factory, url.toEncoded()); ++ char **proxies = px_proxy_factory_get_proxies(factory, url.toEncoded().data()); + if (proxies) { + for (int i = 0; proxies[i]; i++) { + ret.append(QUrl::fromEncoded(proxies[i])); diff --git a/config/patches/qt.002_webview_include.patch b/config/patches/qt.002_webview_include.patch new file mode 100644 index 0000000..1cb42bf --- /dev/null +++ b/config/patches/qt.002_webview_include.patch @@ -0,0 +1,11 @@ +diff -Naur a/qtwebengine/examples/webenginewidgets/simplebrowser/webview.cpp b/qtwebengine/examples/webenginewidgets/simplebrowser/webview.cpp +--- a/qtwebengine/examples/webenginewidgets/simplebrowser/webview.cpp 2016-05-26 21:01:25.000000000 +0300 ++++ b/qtwebengine/examples/webenginewidgets/simplebrowser/webview.cpp 2016-06-22 11:19:20.000000000 +0300 +@@ -49,6 +49,7 @@ + #include + #include + #include ++#include + + WebView::WebView(QWidget *parent) + : QWebEngineView(parent) diff --git a/config/patches/qt.003_webengine.patch b/config/patches/qt.003_webengine.patch new file mode 100755 index 0000000..a9d3063 --- /dev/null +++ b/config/patches/qt.003_webengine.patch @@ -0,0 +1,25 @@ +diff -Naur qt-5.5.1_SRC_orig/qtwebengine/src/3rdparty/chromium/third_party/mojo/src/mojo/public/c/system/macros.h qt-5.5.1_SRC_modif/qtwebengine/src/3rdparty/chromium/third_party/mojo/src/mojo/public/c/system/macros.h +--- qt-5.5.1_SRC_orig/qtwebengine/src/3rdparty/chromium/third_party/mojo/src/mojo/public/c/system/macros.h 2015-10-13 07:35:48.000000000 +0300 ++++ qt-5.5.1_SRC_modif/qtwebengine/src/3rdparty/chromium/third_party/mojo/src/mojo/public/c/system/macros.h 2015-12-23 11:18:45.000000000 +0300 +@@ -66,10 +66,18 @@ + // Unlike the C++11 |alignas()|, |alignment| must be an integer. It may not be a + // type, nor can it be an expression like |MOJO_ALIGNOF(type)| (due to the + // non-C++11 MSVS version). +-#if __cplusplus >= 201103L ++#if defined(__GNUC__) ++ #if (__GNUC__<=4) and (_GNUC_MINOR__<= 7) ++ #define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment))) ++ #else ++ #if __cplusplus >= 201103L ++ #define MOJO_ALIGNAS(alignment) alignas(alignment) ++ #else ++ #define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment))) ++ #endif ++ #endif ++#elif __cplusplus >= 201103L + #define MOJO_ALIGNAS(alignment) alignas(alignment) +-#elif defined(__GNUC__) +-#define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment))) + #elif defined(_MSC_VER) + #define MOJO_ALIGNAS(alignment) __declspec(align(alignment)) + #else diff --git a/config/patches/qt.004_blender_scene.patch b/config/patches/qt.004_blender_scene.patch new file mode 100644 index 0000000..11b5c6f --- /dev/null +++ b/config/patches/qt.004_blender_scene.patch @@ -0,0 +1,76 @@ +diff -NaurwB /tmp/qt/qt-5.6.1__0/qt3d/src/3rdparty/assimp/code/BlenderScene.cpp /tmp/qt/qt-5.6.1__1/qt3d/src/3rdparty/assimp/code/BlenderScene.cpp +--- /tmp/qt/qt-5.6.1__0/qt3d/src/3rdparty/assimp/code/BlenderScene.cpp 2017-03-15 17:56:09.572756601 +0300 ++++ /tmp/qt/qt-5.6.1__1/qt3d/src/3rdparty/assimp/code/BlenderScene.cpp 2017-03-15 18:00:35.950259586 +0300 +@@ -677,39 +677,39 @@ + //-------------------------------------------------------------------------------- + void DNA::RegisterConverters() { + +- converters["Object"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Group"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MTex"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["TFace"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["SubsurfModifierData"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MFace"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Lamp"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MDeformWeight"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["PackedFile"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Base"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MTFace"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Material"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MTexPoly"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Mesh"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MDeformVert"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["World"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MLoopCol"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MVert"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MEdge"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MLoopUV"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["GroupObject"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["ListBase"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MLoop"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["ModifierData"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["ID"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MCol"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MPoly"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Scene"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Library"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Tex"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Camera"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["MirrorModifierData"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); +- converters["Image"] = DNA::FactoryPair( &Structure::Allocate, &Structure::Convert ); ++ converters["Object"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Group"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MTex"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["TFace"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["SubsurfModifierData"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MFace"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Lamp"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MDeformWeight"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["PackedFile"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Base"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MTFace"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Material"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MTexPoly"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Mesh"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MDeformVert"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["World"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MLoopCol"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MVert"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MEdge"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MLoopUV"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["GroupObject"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["ListBase"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MLoop"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["ModifierData"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["ID"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MCol"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MPoly"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Scene"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Library"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Tex"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Camera"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["MirrorModifierData"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); ++ converters["Image"] = DNA::FactoryPair( (DNA::AllocProcPtr)&Structure::Allocate, (DNA::ConvertProcPtr)&Structure::Convert ); + } + + diff --git a/config/patches/qt.005_null_ptr.patch b/config/patches/qt.005_null_ptr.patch new file mode 100644 index 0000000..78c01e9 --- /dev/null +++ b/config/patches/qt.005_null_ptr.patch @@ -0,0 +1,12 @@ +diff -Naur a/qtmultimedia/src/gsttools/qgstreamerbushelper.cpp b/qtmultimedia/src/gsttools/qgstreamerbushelper.cpp +--- a/qtmultimedia/src/gsttools/qgstreamerbushelper.cpp 2016-05-31 13:23:00.000000000 +0300 ++++ b/qtmultimedia/src/gsttools/qgstreamerbushelper.cpp 2016-06-22 12:03:49.000000000 +0300 +@@ -52,7 +52,7 @@ + m_tag(0), + m_bus(bus), + m_helper(parent), +- m_intervalTimer(nullptr) ++ m_intervalTimer(NULL) + { + // glib event loop can be disabled either by env variable or QT_NO_GLIB define, so check the dispacher + QAbstractEventDispatcher *dispatcher = QCoreApplication::eventDispatcher(); diff --git a/config/patches/scotch.001_pthreads.patch b/config/patches/scotch.001_pthreads.patch new file mode 100644 index 0000000..b654d1f --- /dev/null +++ b/config/patches/scotch.001_pthreads.patch @@ -0,0 +1,50 @@ +diff -NaurwB scotch-5.1.11__0/src/Make.inc/Makefile.inc.x86-64_pc_linux2.prof scotch-5.1.11__1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.prof +--- scotch-5.1.11__0/src/Make.inc/Makefile.inc.x86-64_pc_linux2.prof 1970-01-01 03:00:00.000000000 +0300 ++++ scotch-5.1.11__1/src/Make.inc/Makefile.inc.x86-64_pc_linux2.prof 2017-03-15 18:17:53.536110097 +0300 +@@ -0,0 +1,21 @@ ++EXE = ++LIB = .a ++OBJ = .o ++ ++MAKE = make ++AR = ar ++ARFLAGS = -ruv ++CAT = cat ++CCS = gcc ++CCP = mpicc ++CCD = gcc ++CFLAGS = -fPIC -pg -O3 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER ++CLIBFLAGS = ++LDFLAGS = -lz -lm -lrt -lpthread ++CP = cp ++LEX = flex -Pscotchyy -olex.yy.c ++LN = ln ++MKDIR = mkdir ++MV = mv ++RANLIB = ranlib ++YACC = bison -pscotchyy -y -b y +diff -NaurwB scotch-5.1.11__0/src/Makefile.inc scotch-5.1.11__1/src/Makefile.inc +--- scotch-5.1.11__0/src/Makefile.inc 1970-01-01 03:00:00.000000000 +0300 ++++ scotch-5.1.11__1/src/Makefile.inc 2017-03-15 18:17:53.536110097 +0300 +@@ -0,0 +1,21 @@ ++EXE = ++LIB = .a ++OBJ = .o ++ ++MAKE = make ++AR = ar ++ARFLAGS = -ruv ++CAT = cat ++CCS = gcc ++CCP = mpicc ++CCD = gcc ++CFLAGS = -fPIC -pg -O3 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER ++CLIBFLAGS = ++LDFLAGS = -lz -lm -lrt -lpthread ++CP = cp ++LEX = flex -Pscotchyy -olex.yy.c ++LN = ln ++MKDIR = mkdir ++MV = mv ++RANLIB = ranlib ++YACC = bison -pscotchyy -y -b y diff --git a/config/patches/solvespace.001_nogui.patch b/config/patches/solvespace.001_nogui.patch new file mode 100644 index 0000000..b273ca6 --- /dev/null +++ b/config/patches/solvespace.001_nogui.patch @@ -0,0 +1,50 @@ +diff -Naur '--exclude=CVS' '--exclude=.git' solvespace-2.1.orig/CMakeLists.txt solvespace-2.1.p1/CMakeLists.txt +--- solvespace-2.1.orig/CMakeLists.txt 2015-09-28 17:55:15.000000000 +0300 ++++ solvespace-2.1.p1/CMakeLists.txt 2015-09-28 18:05:50.000000000 +0300 +@@ -28,6 +28,10 @@ + set(GUI gtk2 CACHE STRING "GUI toolkit to use (one of: gtk2 gtk3)") + endif() + ++# options ++ ++option(BUILD_GUI "Build only the library part" ON) ++ + # compiler + + if(WIN32) +@@ -54,6 +58,8 @@ + + CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H) + ++if(BUILD_GUI) ++ + find_package(OpenGL REQUIRED) + + find_package(Perl) +@@ -125,6 +131,8 @@ + endif() + endif() + ++endif(BUILD_GUI) ++ + # components + + if(WIN32) +diff -Naur '--exclude=CVS' '--exclude=.git' solvespace-2.1.orig/src/CMakeLists.txt solvespace-2.1.p1/src/CMakeLists.txt +--- solvespace-2.1.orig/src/CMakeLists.txt 2015-09-28 17:55:15.000000000 +0300 ++++ solvespace-2.1.p1/src/CMakeLists.txt 2015-09-28 18:07:31.000000000 +0300 +@@ -79,6 +79,8 @@ + + # generated files + ++if(BUILD_GUI) ++ + file(GLOB icons "${CMAKE_CURRENT_SOURCE_DIR}/icons/*.png") + + if(PERL_FOUND AND PERLMODULES_FOUND) +@@ -384,3 +386,5 @@ + --malloc-fill=0xac + --free-fill=0xde + $) ++ ++endif(BUILD_GUI) diff --git a/config/salome.xml b/config/salome.xml index 8e8c7ff..542b5db 100644 --- a/config/salome.xml +++ b/config/salome.xml @@ -1,3 +1,175 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.39.2