From de564957bc3db08d571c9613a569b089606371c5 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs> Date: Wed, 16 Feb 2011 13:44:26 +0000 Subject: [PATCH] COMP: tecio : move out of thirdparty --- .../dataConversion/foamToTecplot360/Allwmake | 14 + .../foamToTecplot360/Make/options | 4 +- .../foamToTecplot360/tecio/Runmake | 277 + .../tecio/examples/arrow/Arrow.plt | Bin 0 -> 1412 bytes .../tecio/examples/arrow/Makefile | 11 + .../tecio/examples/arrow/arrow.cpp | 530 ++ .../tecio/examples/arrow/arrow.vcproj | 172 + .../tecio/examples/comtest/Makefile | 11 + .../tecio/examples/comtest/comtest.c | 492 ++ .../tecio/examples/comtest/comtest.f | 467 ++ .../tecio/examples/comtest/comtest.f90 | 467 ++ .../tecio/examples/comtest/comtestc.vcproj | 346 + .../tecio/examples/comtest/comtestf.vfproj | 26 + .../examples/faceneighbors/FaceNeighbors.plt | Bin 0 -> 756 bytes .../tecio/examples/faceneighbors/Makefile | 11 + .../examples/faceneighbors/faceneighbors.cpp | 354 + .../faceneighbors/faceneighbors.vcproj | 172 + .../tecio/examples/gridsolution/Makefile | 11 + .../examples/gridsolution/gridsolution.cpp | 376 + .../examples/gridsolution/gridsolution.vcproj | 321 + .../tecio/examples/ij_ordered/Makefile | 11 + .../tecio/examples/ij_ordered/ij_ordered.cpp | 149 + .../tecio/examples/ij_ordered/ij_ordered.plt | Bin 0 -> 584 bytes .../examples/ij_ordered/ij_ordered.vcproj | 172 + .../tecio/examples/multiplefiles/Makefile | 11 + .../tecio/examples/multiplefiles/file1.plt | Bin 0 -> 448 bytes .../tecio/examples/multiplefiles/file2.plt | Bin 0 -> 356 bytes .../examples/multiplefiles/multiplefiles.cpp | 214 + .../multiplefiles/multiplefiles.vcproj | 172 + .../multiplepolygons/HexagonsAndOctagon.plt | Bin 0 -> 1480 bytes .../tecio/examples/multiplepolygons/Makefile | 11 + .../multiplepolygons/multiplepolygons.cpp | 569 ++ .../multiplepolygons/multiplepolygons.vcproj | 172 + .../tecio/examples/octagon/Makefile | 11 + .../tecio/examples/octagon/Octagon.plt | Bin 0 -> 520 bytes .../tecio/examples/octagon/octagon.cpp | 248 + .../tecio/examples/octagon/octagon.vcproj | 172 + .../tecio/examples/pyramid/Makefile | 11 + .../tecio/examples/pyramid/pyramid.cpp | 222 + .../tecio/examples/pyramid/pyramid.plt | Bin 0 -> 600 bytes .../tecio/examples/pyramid/pyramid.vcproj | 172 + .../tecio/examples/simtest/Makefile | 11 + .../tecio/examples/simtest/simtest.c | 100 + .../tecio/examples/simtest/simtest.f | 98 + .../tecio/examples/simtest/simtest.f90 | 98 + .../tecio/examples/simtest/simtestc.vcproj | 346 + .../tecio/examples/simtest/simtestf.vfproj | 26 + .../tecio/examples/squares/Makefile | 11 + .../tecio/examples/squares/squares.cpp | 124 + .../tecio/examples/squares/squares.plt | Bin 0 -> 1304 bytes .../tecio/examples/squares/squares.vcproj | 172 + .../tecio/examples/text/Makefile | 11 + .../tecio/examples/text/text.cpp | 112 + .../tecio/examples/text/text.plt | Bin 0 -> 264 bytes .../tecio/examples/text/text.vcproj | 172 + .../foamToTecplot360/tecio/pltview.cpp | 559 ++ .../foamToTecplot360/tecio/readme.txt | 51 + .../foamToTecplot360/tecio/tecsrc/ALLOC.h | 205 + .../foamToTecplot360/tecio/tecsrc/ARRLIST.h | 626 ++ .../foamToTecplot360/tecio/tecsrc/AUXDATA.h | 130 + .../foamToTecplot360/tecio/tecsrc/DATAIO.h | 63 + .../foamToTecplot360/tecio/tecsrc/DATAIO4.h | 213 + .../foamToTecplot360/tecio/tecsrc/DATASET.h | 90 + .../foamToTecplot360/tecio/tecsrc/DATASET0.h | 404 + .../foamToTecplot360/tecio/tecsrc/DATASHR.h | 70 + .../foamToTecplot360/tecio/tecsrc/DATAUTIL.h | 116 + .../foamToTecplot360/tecio/tecsrc/FACE.h | 149 + .../tecio/tecsrc/FILESTREAM.h | 75 + .../foamToTecplot360/tecio/tecsrc/GEOM.h | 71 + .../foamToTecplot360/tecio/tecsrc/GEOM2.h | 46 + .../foamToTecplot360/tecio/tecsrc/GLOBAL.h | 7271 +++++++++++++++++ .../foamToTecplot360/tecio/tecsrc/INPUT.h | 196 + .../foamToTecplot360/tecio/tecsrc/MASTER.h | 684 ++ .../foamToTecplot360/tecio/tecsrc/Make/files | 21 + .../tecio/tecsrc/Make/options | 7 + .../tecio/tecsrc/Make/tecioOptions | 20 + .../foamToTecplot360/tecio/tecsrc/Q_MSG.h | 72 + .../foamToTecplot360/tecio/tecsrc/Q_UNICODE.h | 93 + .../foamToTecplot360/tecio/tecsrc/SET.h | 283 + .../foamToTecplot360/tecio/tecsrc/STRLIST.h | 122 + .../foamToTecplot360/tecio/tecsrc/STRUTIL.h | 218 + .../foamToTecplot360/tecio/tecsrc/SYSTEM.h | 67 + .../foamToTecplot360/tecio/tecsrc/TASSERT.h | 513 ++ .../foamToTecplot360/tecio/tecsrc/TECIO.h | 24 + .../foamToTecplot360/tecio/tecsrc/TECXXX.h | 698 ++ .../foamToTecplot360/tecio/tecsrc/TEXT.h | 62 + .../tecio/tecsrc/TranslatedString.cpp | 362 + .../tecio/tecsrc/TranslatedString.h | 293 + .../foamToTecplot360/tecio/tecsrc/VERSION.h | 23 + .../foamToTecplot360/tecio/tecsrc/alloc.cpp | 161 + .../foamToTecplot360/tecio/tecsrc/arrlist.cpp | 1671 ++++ .../foamToTecplot360/tecio/tecsrc/auxdata.cpp | 809 ++ .../foamToTecplot360/tecio/tecsrc/dataio.cpp | 695 ++ .../foamToTecplot360/tecio/tecsrc/dataio4.cpp | 3357 ++++++++ .../foamToTecplot360/tecio/tecsrc/dataset.cpp | 283 + .../tecio/tecsrc/dataset0.cpp | 1668 ++++ .../tecio/tecsrc/datautil.cpp | 941 +++ .../tecio/tecsrc/filestream.cpp | 78 + .../foamToTecplot360/tecio/tecsrc/geom2.cpp | 89 + .../foamToTecplot360/tecio/tecsrc/q_msg.cpp | 415 + .../tecio/tecsrc/q_unicode.cpp | 447 + .../foamToTecplot360/tecio/tecsrc/set.cpp | 696 ++ .../foamToTecplot360/tecio/tecsrc/stdafx.h | 130 + .../foamToTecplot360/tecio/tecsrc/strlist.cpp | 1065 +++ .../foamToTecplot360/tecio/tecsrc/strutil.cpp | 936 +++ .../foamToTecplot360/tecio/tecsrc/tassert.cpp | 261 + .../foamToTecplot360/tecio/tecsrc/tecxxx.cpp | 4812 +++++++++++ .../foamToTecplot360/tecio2009.zip | Bin 0 -> 1314306 bytes 108 files changed, 40069 insertions(+), 2 deletions(-) create mode 100755 applications/utilities/postProcessing/dataConversion/foamToTecplot360/Allwmake create mode 100755 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/Runmake create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/Arrow.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.c create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f90 create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestc.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestf.vfproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/FaceNeighbors.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/file1.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/file2.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/HexagonsAndOctagon.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/Octagon.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.c create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f90 create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestc.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestf.vfproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/Makefile create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.plt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.vcproj create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/pltview.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/readme.txt create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ALLOC.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ARRLIST.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/AUXDATA.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO4.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET0.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASHR.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAUTIL.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FACE.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FILESTREAM.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM2.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GLOBAL.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/INPUT.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/MASTER.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/files create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/options create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/tecioOptions create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_MSG.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_UNICODE.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SET.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRLIST.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRUTIL.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SYSTEM.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TASSERT.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECIO.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECXXX.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TEXT.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/VERSION.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/alloc.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/arrlist.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/auxdata.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio4.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset0.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/datautil.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/filestream.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/geom2.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_msg.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_unicode.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/set.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/stdafx.h create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strlist.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strutil.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tassert.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tecxxx.cpp create mode 100644 applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio2009.zip diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/Allwmake b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/Allwmake new file mode 100755 index 00000000000..935e8e3993a --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/Allwmake @@ -0,0 +1,14 @@ +#!/bin/sh +# +# Build optional components (eg, may depend on third-party libraries) +# ----------------------------------------------------------------------------- +cd ${0%/*} || exit 1 # run from this directory +set -x + +# build tecio +wmake libso tecio/tecsrc + +# build converter +wmake + +# ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/Make/options b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/Make/options index 97a2251f7bb..4776ad7d648 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/Make/options +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/Make/options @@ -1,5 +1,5 @@ EXE_INC = \ - -I$(WM_THIRD_PARTY_DIR)/tecio/tecsrc/lnInclude \ + -Itecio/tecsrc/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude @@ -10,4 +10,4 @@ EXE_LIBS = \ -lfiniteVolume \ -lgenericPatchFields \ -lmeshTools \ - -L$(FOAM_EXT_LIBBIN) -ltecio + -ltecio diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/Runmake b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/Runmake new file mode 100755 index 00000000000..a22d0c0a862 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/Runmake @@ -0,0 +1,277 @@ +#!/bin/sh + +MAKEWHAT= +EXTRAFLAGS= +STRIPFLAG=-s +isrelease=n +skipcompile=n +if test $# -ge 1 ; then + Platname=$1 + shift + while test $# -ge 1 + do + if test "$1" = "-release" ; then + isrelease=y + elif test "$1" = "-skipcompile" ; then + skipcompile=y + elif test "$1" = "-tecio" ; then + MAKEWHAT=tecio.a + else + EXTRAFLAGS="$EXTRAFLAGS $1" + fi + shift + done +else + echo "Choose platform:" + echo " " + echo " macux.104" + echo " macix64.105" + echo " sgix.62" + echo " sgix3.62" + echo " sgix.65" + echo " sgix64.65" + echo " sgix2.65" + echo " sun4.57" + echo " sun464.57" + echo " sun86.54" + echo " ibmx.43" + echo " ibmx64.43" + echo " ibmx.51" + echo " ibmx64.51" + echo " ibmx64.53" + echo " decalpha.32" + echo " compaq.51" + echo " hp7xx.11" + echo " hp7xx64.11" + echo " hpi64.11" + echo " linux.24" + echo " linuxi64.24" + echo " linux.22" + echo " linuxa.22" + echo " linuxg248x64.26" + echo " linuxg27x64.26" + echo " crayc90" + echo "->\c" + read Platname + + echo "Choose:" + echo " 1. Make tecio.a only" + echo " 2. Make tecio.a and pltview" + + read choice + + if test $choice -eq 1 ;then + MAKEWHAT=tecio.a + fi +fi + +MAKECMD=make +LINKFLAGS= +LINKLIBS= +AR=ar +ARFLAGS=qv +DISTSUBDIR2= + +case $Platname in + mac*) CCOMP=g++ + FINALCFLAGS="-arch ppc -arch i386 -arch ppc64 -arch x86_64 -DDARWIN -DLONGIS64 -I/usr/X11R6/include" + STRIPFLAG=-Wl,-x + LINKFLAGS="-arch ppc -arch i386 -arch ppc64 -arch x86_64" + ;; + sgix.65-64) CCOMP=CC + FINALCFLAGS="-DIRISX -DLONGIS64 -mips4 -64" + LINKFLAGS="-mips4 -64" + ;; + sgix64.65) CCOMP=CC + FINALCFLAGS="-DIRISX -DLONGIS64 -mips4 -64" + LINKFLAGS="-mips4 -64" + ;; + sgix.65) CCOMP=CC + FINALCFLAGS="-DIRISX -mips4 -n32" + LINKFLAGS="-mips4 -n32" + ;; + sgix2.65) CCOMP=CC + FINALCFLAGS="-DIRISX -o32" + LINKFLAGS="-o32" + ;; + sgix.62-64) CCOMP=CC + FINALCFLAGS="-DIRISX -DIRIX62 -DLONGIS64 -mips4 -64" + LINKFLAGS="-mips4 -64" + ;; + sgix.62) CCOMP=CC + FINALCFLAGS="-DIRISX -DIRIX62 -mips4 -n32" + LINKFLAGS="-mips4 -n32" + ;; + sgix1.62) CCOMP=CC + FINALCFLAGS="-DIRISX -DIRIX62 -mips1 -32" + LINKFLAGS="-mips1 -32" + ;; + sgix3.62) CCOMP=CC + FINALCFLAGS="-DIRISX -DIRIX62 -mips3 -n32" + LINKFLAGS="-mips3 -n32" + ;; + ibmx.*) CCOMP=xlC + FINALCFLAGS=-DIBMRS6000X + ;; + ibmx64.*) CCOMP=xlC + FINALCFLAGS="-DIBMRS6000X -DLONGIS64 -q64" + ARFLAGS="-X64 qv" + ;; + compaq.51) CCOMP=cxx + FINALCFLAGS="-DCOMPAQX -I/usr/include -ieee_with_inexact" + ;; + decalpha.32)CCOMP=cc + FINALCFLAGS="-DDECALPHAX -I/usr/include -ieee_with_inexact" + ;; + hp7xx.*-64) CCOMP=aCC + FINALCFLAGS="+DD64 +DS2.0 -AA -DHPX -DLONGIS64 -I/usr/include/X11R6 -I/usr/include/Motif2.1" + LINKFLAGS="+DA2.0W +DD64 +DS2.0W" + ;; + hp7xx64.11) CCOMP=aCC + FINALCFLAGS="+DA2.0W +DD64 +DS2.0W -AA -DHPX -DLONGIS64 -I/usr/include/X11R6 -I/usr/include/Motif2.1" + LINKFLAGS="+DA2.0W +DD64 +DS2.0W" + ;; + hpi64.11) CCOMP=aCC + FINALCFLAGS="+DD64 -AA -DHPX -DLONGIS64 -I/usr/include/X11R6 -I/usr/include/Motif2.1" + LINKFLAGS="+DD64" + ;; + hp7xx.11) CCOMP=aCC + FINALCFLAGS="+DAportable -AA -DHPX -I/usr/include/X11R6 -I/usr/include/Motif2.1" + LINKFLAGS="+DAportable" + ;; + crayc90) CCOMP=cc + FINALCFLAGS="-DCRAY -DUNIXX" + ;; + linux*i64.*)CCOMP=g++ + FINALCFLAGS="-fPIC -DLINUX -DLINUXI64" + ;; + linux*64.*) CCOMP=g++ + FINALCFLAGS="-fPIC -DLINUX -DLINUX64" + ;; + linux*) CCOMP=g++ + FINALCFLAGS="-fPIC -DLINUX" + ;; + sun4.54) CCOMP=/opt/SUNWspro/bin/CC + FINALCFLAGS="-DSUN -DSUNSOLARISX -I/usr/openwin/include -I/usr/dt/include -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg -xO1" + LINKFLAGS="-library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg" + MAKECMD=/usr/ccs/bin/make + AR=/opt/SUNWspro/bin/CC + ARFLAGS="-xar -o" + ;; + sun4.55) CCOMP=/opt/SUNWspro/bin/CC + FINALCFLAGS="-DSUN -DSUNSOLARISX -I/usr/openwin/include -I/usr/dt/include -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg -xO1" + LINKFLAGS="-library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg" + MAKECMD=/usr/ccs/bin/make + AR=/opt/SUNWspro/bin/CC + ARFLAGS="-xar -o" + ;; + sun4.57) CCOMP=/opt/SUNWspro/bin/CC + FINALCFLAGS="-DSUNSOLARISX -I/usr/openwin/include -I/usr/dt/include -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg -xO1" + LINKFLAGS="-library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg" + MAKECMD=/usr/ccs/bin/make + AR=/opt/SUNWspro/bin/CC + ARFLAGS="-xar -o" + ;; + sun4.57-64) CCOMP=/opt/SUNWspro/bin/CC + FINALCFLAGS="-DSUNSOLARISX -DLONGIS64 -KPIC -xarch=v9 -I/usr/openwin/include -I/usr/dt/include -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg -xO1" + LINKFLAGS="-KPIC -xarch=v9 -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg" + MAKECMD=/usr/ccs/bin/make + AR=/opt/SUNWspro/bin/CC + ARFLAGS="-xar -o" + ;; + sun464.57) CCOMP=/opt/SUNWspro/bin/CC + FINALCFLAGS="-DSUNSOLARISX -DLONGIS64 -KPIC -xarch=v9 -I/usr/openwin/include -I/usr/dt/include -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg -xO1" + LINKFLAGS="-KPIC -xarch=v9 -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg" + MAKECMD=/usr/ccs/bin/make + AR=/opt/SUNWspro/bin/CC + ARFLAGS="-xar -o" + ;; + sun464.59) CCOMP=/opt/SUNWspro/bin/CC + FINALCFLAGS="-DSUNSOLARISX -DLONGIS64 -KPIC -m64 -xarch=generic -I/usr/openwin/include -I/usr/dt/include -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg -xO1" + LINKFLAGS="-KPIC -m64 -xarch=generic -library=libC -library=Cstd -library=no%rwtools7 -library=no%rwtools7_dbg" + MAKECMD=/usr/ccs/bin/make + AR=/opt/SUNWspro/bin/CC + ARFLAGS="-xar -o" + ;; + sun86.54) CCOMP=/opt/SUNWspro/bin/CC + FINALCFLAGS="-DSUN -DSUNSOLARISX -I/usr/openwin/include -I/usr/dt/include" + MAKECMD=/usr/ccs/bin/make + AR=/opt/SUNWspro/bin/CC + ARFLAGS="-xar -o" + ;; + *) echo "Err: Invalid platform" + exit + ;; +esac + +if test "$isrelease" = "y" ; then + EXTRAFLAGS="$EXTRAFLAGS -DNO_ASSERTS" +else + STRIPFLAG= +fi + +if test "$skipcompile" = "n" ; then + rm -f *.o */*.o *.a > /dev/null 2>&1 +fi + +rm -f *.a > /dev/null 2>&1 + + + +FINALCFLAGS="$FINALCFLAGS $EXTRAFLAGS -DUSEENUM -DTHREED" +# +# NOTE: Used to use make here but had problems with using remsh to run +# make multiple times to get 64 bit and 32 bit versions of libraries.... +# +# $MAKECMD $MAKEWHAT AR=$AR CC=$CCOMP LINKFLAGS="$LINKFLAGS" STRIPFLAG=$STRIPFLAG CFLAGS="$EXTRAFLAGS -DUSEENUM -DTHREED $FINALCFLAGS" +# +# +# + +cd tecsrc + +BASELIST=`/bin/ls -1 *.cpp` + +OBJLIST= +for file in $BASELIST +do + OBJNAME=`echo $file | sed 's/\.cpp/.o/'` + OBJLIST="$OBJLIST tecsrc/$OBJNAME" +done + + + +if test "$skipcompile" = "n" ; then + for file in $BASELIST + do + case $file in + tecxxx.cpp) ARCHIVEFLAG=-DMAKEARCHIVE;; + arrlist.cpp) ARCHIVEFLAG=-DMAKEARCHIVE;; + datautil.cpp) ARCHIVEFLAG=-DMAKEARCHIVE;; + *) ARCHIVEFLAG= ;; + esac + echo "$CCOMP $FINALCFLAGS $ARCHIVEFLAG -c $file" + $CCOMP $FINALCFLAGS $ARCHIVEFLAG -c $file + done +fi + +cd .. + +pwd + + +echo "$AR $ARFLAGS tecio.a $OBJLIST" +$AR $ARFLAGS tecio.a $OBJLIST +if test -f /bin/ranlib ; then + /bin/ranlib tecio.a; +elif test -f /usr/bin/ranlib ; then + /usr/bin/ranlib tecio.a; +elif test -f /usr/ucb/ranlib ; then + /usr/ucb/ranlib tecio.a; +fi + +echo "$CCOMP -I./tecsrc -DMAKEARCHIVE $FINALCFLAGS -c pltview.cpp" +$CCOMP -I./tecsrc -DMAKEARCHIVE $FINALCFLAGS -c pltview.cpp + +echo "$CCOMP $FINALCFLAGS pltview.o tecio.a $LINKFLAGS $LINKLIBS $STRIPFLAG -lm -o pltview" +$CCOMP $FINALCFLAGS pltview.o tecio.a $LINKFLAGS $LINKLIBS $STRIPFLAG -lm -o pltview diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/Arrow.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/Arrow.plt new file mode 100644 index 0000000000000000000000000000000000000000..ee207b04df6aaba46a2454f97f3ce51226b5c642 GIT binary patch literal 1412 zcmbW0JxT;Y5QS&`SvL?|#K6E{L@zLlk%<FqDu{}xnW(7XAN~Xy?Ipa3CzvC70`+~< z{iJ7cL@apw>Qz;DS9i^>EbndZ7sa5H1=|um30K0Sa4FnHeJ0MMzKyYG@r6L{RJa$8 z1=i=ni$Lv-K+S`IO$i6Jmt}{Mk0NhJ&PK08V(I!^x)9a{{2hUPPXzkqY|c6td=Fyu zl?%Iqd*^QSjD1E6D(D%BjsuZX-BYY9ED93>xil{stmPg9Wql9sOpo-$8(j<7fBK@Q zX<=TVFZU+5X`{CxZ|oYgi#XeU;9eQ{eWR(fDro<%mccVS?)7HJ&5oPf;y&N(db8tZ z@6*av%(QU02j46+pB4JTg23!C=Fa;~B4jY%4{HE^S70vG!f4hwCbzC7MvgV?<8J`| zNQ6?qn!m-G|1@X6-%{D!xNluG<7+W)9$#;5_P*BN`+EPleOtVFdZMc6k8$WLo!guW j`Cnju`*dd1dX_Mn`M}iSW3EZ(;n9SOpMN=%I<n?3ra_D` literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/Makefile new file mode 100644 index 00000000000..3fa4b11f3f0 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=arrow +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.cpp new file mode 100644 index 00000000000..432022be519 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.cpp @@ -0,0 +1,530 @@ +/* This example creates two simple polyhedral zones in the shape + * of a three-dimensional arrow. Obscured boundary faces are used. + */ + +#include <stdio.h> +#include "TECIO.h" + +int main() +{ + /* DOCSTART:arrow_tecini.txt*/ + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 1; + INTEGER4 FileType = 0; + INTEGER4 I; + + /* Open the file and write the Tecplot datafile + * header information + */ + I = TECINI112((char*)"Multiple polyhedral zones", /* Name of the entire + * dataset. + */ + (char*)"X Y Z P", /* Defines the variables for the data + * file. Each zone must contain each of + * the variables listed here. The order + * of the variables in the list is used + * to define the variable number (e.g. + * X is Var 1). + */ + (char*)"Arrow.plt", + (char*)".", /* Scratch Directory */ + &FileType, + &Debug, + &VIsDouble); + + /* DOCEND */ + + + /* After TECINI is called, call TECZNE to create one or more + * zones for your data file. In this example, Zone 1 contains a + * single rectangular solid created as a face-based finite-element + * (i.e. polyhedral zone). The zone has eight points (or nodes), + * six faces and one element. + */ + /* DOCSTART:arrow_teczne_rect.txt*/ + /* TECZNE Parameters */ + INTEGER4 ZoneType = 7; /* sets the zone type + * to polyhedral */ + INTEGER4 NumPts_Rect = 8; + INTEGER4 NumElems_Rect = 1; + INTEGER4 NumFaces_Rect = 6; + INTEGER4 ICellMax = 0; /* not used */ + INTEGER4 JCellMax = 0; /* not used */ + INTEGER4 KCellMax = 0; /* not used */ + double SolutionTime = 0.0; + INTEGER4 StrandID = 0; + INTEGER4 ParentZone = 0; + INTEGER4 IsBlock = 1; + INTEGER4 NumFaceConnections = 0; /* not used */ + INTEGER4 FaceNeighborMode = 1; /* not used */ + INTEGER4 SharConn = 0; + + /* In a rectangular solid, each face is composed of four nodes. + * As such, the total number of face nodes is twenty-four (four + * nodes for each of the six faces). + */ + INTEGER4 TotalNumFaceNodes_Rect = 24; + + /* There is one connected boundary face in this zone (the face on + * the rectangle adjacent to the arrowhead). Refer to the Data + * Format Guide for additional information. */ + INTEGER4 NumConnBndryFaces_Rect = 1; + + /* The connected boundary face has one connection, the face on + * the bottom of the arrowhead. A connection is an element-zone + * tuple that indicates a neighboring element (and its zone) when + * the neighboring element is in a different zone. Generally, + * there will be one boundary connection for each boundary face. + */ + INTEGER4 TotalNumBndryConns_Rect = 1; + + /* For illustrative purposes, the grid variables (X, Y, and Z) + * are nodal variables (i.e. ValueLocation = 1), and the pressure + * variable (P) is a cell-centered variable (i.e. + * ValueLocation = 0). + */ + INTEGER4 ValueLocation[4] = { 1, 1, 1, 0 }; + + I = TECZNE112((char*)"Zone 1: Rectangular Solid", + &ZoneType, + &NumPts_Rect, + &NumElems_Rect, + &NumFaces_Rect, + &ICellMax, + &JCellMax, + &KCellMax, + &SolutionTime, + &StrandID, + &ParentZone, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + &TotalNumFaceNodes_Rect, + &NumConnBndryFaces_Rect, + &TotalNumBndryConns_Rect, + NULL, + ValueLocation, + NULL, + &SharConn); + + /* DOCEND */ + + /* DOCSTART:arrow_tecdat_rect.txt*/ + //set variable values (X_Rect, Y_Rect, Z_Rect & P_Rect) + double *X_Rect = new double[NumPts_Rect]; + double *Y_Rect = new double[NumPts_Rect]; + double *Z_Rect = new double[NumPts_Rect]; + double *P_Rect = new double[NumElems_Rect]; + + for (INTEGER4 ii = 0; ii <= NumPts_Rect / 2; ii += 4) + { + X_Rect[ii] = 0; + X_Rect[ii+1] = 3; + X_Rect[ii+2] = 3; + X_Rect[ii+3] = 0; + + Y_Rect[ii] = 3; + Y_Rect[ii+1] = 3; + Y_Rect[ii+2] = 1; + Y_Rect[ii+3] = 1; + } + + for (INTEGER4 ii = 0; ii < 4; ii++) + Z_Rect[ii] = 0; + + for (INTEGER4 ii = 4; ii < NumPts_Rect; ii++) + Z_Rect[ii] = -2; + + P_Rect[0] = 10; + + + INTEGER4 IsDouble = 1; + I = TECDAT112(&NumPts_Rect, X_Rect, &IsDouble); + I = TECDAT112(&NumPts_Rect, Y_Rect, &IsDouble); + I = TECDAT112(&NumPts_Rect, Z_Rect, &IsDouble); + I = TECDAT112(&NumElems_Rect, P_Rect, &IsDouble); + /* DOCEND */ + + /* DOCSTART:arrow_facenodes_rect.txt*/ + + /* The FaceNodeCounts array is used to describe the number of + * nodes in each face of the zone. The first value in the array + * is the number of nodes in Face 1, the second value is the + * number of nodes in Face 2 and so forth. In this example, each + * face of the zone has four nodes. + */ + + INTEGER4 *FaceNodeCounts_Rect = new INTEGER4[NumFaces_Rect]; + //For this particular zone, each face has the 4 nodes + for (INTEGER4 ii = 0; ii < NumFaces_Rect; ii++) + FaceNodeCounts_Rect[ii] = 4; + + /* The FaceNodes array is used to specify the nodes that compose + * each face. For each face (n of N), the number of nodes used + * to define the face is specified by the nth value in the + * FaceNodeCounts array. For example, if the first value in the + * FaceNodeCounts array is 4 (indicating Face 1 is composed of + * four nodes), the first four values in the FaceNodes array are + * the node numbers of the nodes in Face 1. + * + * ------------ + * WARNING + * When providing the node numbers for each face, you must + * provide the node numbers in a consistent order (either + * clockwise or counter-clockwise. Providing the node numbers + * out of order results in contorted faces. + * ------------ + */ + + INTEGER4 *FaceNodes_Rect = new INTEGER4[TotalNumFaceNodes_Rect]; + + //Nodes for Face 1 + FaceNodes_Rect[0] = 1; + FaceNodes_Rect[1] = 2; + FaceNodes_Rect[2] = 3; + FaceNodes_Rect[3] = 4; + + //Nodes for Face 2 + FaceNodes_Rect[4] = 1; + FaceNodes_Rect[5] = 4; + FaceNodes_Rect[6] = 8; + FaceNodes_Rect[7] = 5; + + //Nodes for Face 3 + FaceNodes_Rect[8] = 5; + FaceNodes_Rect[9] = 8; + FaceNodes_Rect[10] = 7; + FaceNodes_Rect[11] = 6; + + //Nodes for Face 4 + FaceNodes_Rect[12] = 2; + FaceNodes_Rect[13] = 6; + FaceNodes_Rect[14] = 7; + FaceNodes_Rect[15] = 3; + +//Nodes for Face 5 + FaceNodes_Rect[16] = 6; + FaceNodes_Rect[17] = 2; + FaceNodes_Rect[18] = 1; + FaceNodes_Rect[19] = 5; + + //Nodes for Face 6 + FaceNodes_Rect[20] = 3; + FaceNodes_Rect[21] = 7; + FaceNodes_Rect[22] = 8; + FaceNodes_Rect[23] = 4; + /* DOCEND */ + + /* DOCSTART:arrow_neighbors_rect.txt*/ + INTEGER4 *FaceLeftElems_Rect = new INTEGER4[NumFaces_Rect]; + INTEGER4 *FaceRightElems_Rect = new INTEGER4[NumFaces_Rect]; + + /* Since this zone has just one element, all leftelems are + * NoNeighboring Element and all right elems are itself + */ + for (INTEGER4 ii = 0; ii < NumFaces_Rect; ii++) + { + FaceRightElems_Rect[ii] = 1; + FaceLeftElems_Rect[ii] = 0; + } + + /* The negative value in the FaceLeftElems array indicates that + * the face is connected to an element in another zone. In this + * case, Face 4 is connected to a face in Zone 2 (to be defined + * later in the example). The FaceBoundaryConnectionElems array + * lists all of the element numbers in other zones that the + * current zone shares boundary connections with. Similarly, the + * FaceBoundaryConnectionZones array lists all of the zone numbers + * with which the current zone shares boundaries. A negative + * value in the FaceLeftElems or FaceRightElems array indicates + * the position within these arrays that defines the neighboring + * element and zone for a face. + * + * For example, if the FaceBoundaryConnectionElems array is: + * [1 8 2] and the FaceBoundaryConnectionZones array is: [2 5 3], + * a FaceLeftElems or FaceRightElems value of -2 indicates that + * the face in question has a boundary connection with Element 8 + * in Zone 5. + */ + FaceLeftElems_Rect[3] = -1; + /* DOCEND */ + + /* DOCSTART:arrow_tecpoly_rect.txt*/ + /* The FaceBndryConnectionCounts array is used to define the + * number of boundary connections for each face that has a + * boundary connection. For example, if a zone has three boundary + * connections in total (NumConnectedBoundaryFaces), two of those + * boundary connections are in one face, and the remaining + * boundary connection is in a second face, the + * FaceBndryConnectionCounts array would be: [2 1]. + * In this example, the total number of connected boundary faces + * (specified via TECZNE) is equal to one, so the + * FaceBoundaryConnectionCounts array contains a single value (1). + */ + INTEGER4 *FaceBndryConnCounts_Rect = new INTEGER4[NumConnBndryFaces_Rect]; + FaceBndryConnCounts_Rect[0] = 1; + + /* The value(s) in the FaceBndryConnectionElems and + * FaceBndryConnectionZones arrays specify the element number and + * zone number, respectively, that a given boundary connection is + * connected to. In this case, the boundary connection face is + * connected to Element 1 in Zone 2. + */ + INTEGER4 *FaceBndryConnElems_Rect = new INTEGER4[TotalNumBndryConns_Rect]; + INTEGER4 *FaceBndryConnZones_Rect = new INTEGER4[TotalNumBndryConns_Rect]; + + FaceBndryConnElems_Rect[0] = 1; + FaceBndryConnZones_Rect[0] = 2; + + I = TECPOLY112(FaceNodeCounts_Rect, + FaceNodes_Rect, + FaceLeftElems_Rect, + FaceRightElems_Rect, + FaceBndryConnCounts_Rect, + FaceBndryConnElems_Rect, + FaceBndryConnZones_Rect); + + /* cleanup */ + delete X_Rect; + delete Y_Rect; + delete Z_Rect; + delete P_Rect; + delete FaceNodeCounts_Rect; + delete FaceNodes_Rect; + delete FaceLeftElems_Rect; + delete FaceRightElems_Rect; + delete FaceBndryConnCounts_Rect; + delete FaceBndryConnElems_Rect; + delete FaceBndryConnZones_Rect; + /* DOCEND */ + + /* The data for Zone 1 has been written to the data file, so we + * are ready to create Zone 2. For simplicity, we will reuse many + * of the variables created for the rectangular zone that are not + * relevant to this tutorial. */ + + /* Zone 2 (the arrowhead or prism) has a single element composed + * of six nodes and five faces. + */ + + /* DOCSTART:arrow_teczne_prism.txt*/ + //TECZNE Parameters + INTEGER4 NumPts_Prism = 6; + INTEGER4 NumElems_Prism = 1; + INTEGER4 NumFaces_Prism = 5; + + /* The prism is composed of two triangular faces and three + * rectangular faces. The total number of face nodes is the sum + * of the nodes in each triangular face (2 times 3) and the nodes + * in each rectangular face (3 times 4). + */ + INTEGER4 TotalNumFaceNodes_Prism = 18; + + /* As with Zone 1, Zone 2 has one connected boundary face, the + * face that is connected to Zone 1. + */ + INTEGER4 NumConnBndryFaces_Prism = 1; + + /* In this case, we have set the total number of boundary + * connections for the connected face to two. The first boundary + * connection is the connection to Zone 1. The second boundary + * connection is used to indicate that the face is only partially + * obscured by the face from Zone 1. If we omitted the second + * boundary connection, the connected face of the prism would + * disappear if the rectangular zone was deactivated. + */ + INTEGER4 TotalNumBndryConns_Prism = 2; + + I = TECZNE112((char*)"Zone 2: Prism", + &ZoneType, + &NumPts_Prism, + &NumElems_Prism, + &NumFaces_Prism, + &ICellMax, + &JCellMax, + &KCellMax, + &SolutionTime, + &StrandID, + &ParentZone, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + &TotalNumFaceNodes_Prism, + &NumConnBndryFaces_Prism, + &TotalNumBndryConns_Prism, + NULL, + ValueLocation, + NULL, + &SharConn); + /* DOCEND */ + + /* DOCSTART:arrow_tecdat_prism.txt*/ + + + double *X_Prism = new double[NumPts_Prism]; + double *Y_Prism = new double[NumPts_Prism]; + double *Z_Prism = new double[NumPts_Prism]; + + + /* Set the X and Y variable values, one z-plane at a time */ + double ZVal = 0; + for (INTEGER4 ii = 0; ii < 2; ii++) + { + // triangle in Z=ZVal plane + X_Prism[3*ii] = 3; + Y_Prism[3*ii] = 4; + Z_Prism[3*ii] = ZVal; + + X_Prism[3*ii+1] = 7; + Y_Prism[3*ii+1] = 2; + Z_Prism[3*ii+1] = ZVal; + + X_Prism[3*ii+2] = 3; + Y_Prism[3*ii+2] = 0; + Z_Prism[3*ii+2] = ZVal; + + ZVal = ZVal - 2; + } + + /* When we called TecZne, we specified that the variable 4 + * (pressure) is cell-centered. As such, only NumElements number + * of values needs to be written to the data file for the pressure + * variable. + */ + double *P_Prism = new double[NumElems_Prism]; + P_Prism[0] = 20; + + I = TECDAT112(&NumPts_Prism, X_Prism, &IsDouble); + I = TECDAT112(&NumPts_Prism, Y_Prism, &IsDouble); + I = TECDAT112(&NumPts_Prism, Z_Prism, &IsDouble); + I = TECDAT112(&NumElems_Prism, P_Prism, &IsDouble); + /* DOCEND */ + + /* DOCSTART:arrow_facemap_prism.txt*/ + INTEGER4 *FaceNodeCounts_Prism = new INTEGER4[NumFaces_Prism]; + INTEGER4 *FaceNodes_Prism = new INTEGER4[TotalNumFaceNodes_Prism]; + + /* Because of the way we chose to number our faces, the first + * three faces are rectangular and the last two are triangular. + * The numbering of the faces is arbitrary, but the faces must + * be referred to consistently. + */ + for (INTEGER4 ii = 0; ii < 3; ii++) + FaceNodeCounts_Prism[ii] = 4; + + for (INTEGER4 ii = 3; ii < NumFaces_Prism; ii++) + FaceNodeCounts_Prism[ii] = 3; + + //Nodes for Face 1 + FaceNodes_Prism[0] = 1; + FaceNodes_Prism[1] = 3; + FaceNodes_Prism[2] = 6; + FaceNodes_Prism[3] = 4; + + //Nodes for Face 2 + FaceNodes_Prism[4] = 1; + FaceNodes_Prism[5] = 4; + FaceNodes_Prism[6] = 5; + FaceNodes_Prism[7] = 2; + + //Nodes for Face 3 + FaceNodes_Prism[8] = 3; + FaceNodes_Prism[9] = 2; + FaceNodes_Prism[10] = 5; + FaceNodes_Prism[11] = 6; + + //Nodes for Face 4 + FaceNodes_Prism[12] = 5; + FaceNodes_Prism[13] = 4; + FaceNodes_Prism[14] = 6; + +//Nodes for Face 5 + FaceNodes_Prism[15] = 1; + FaceNodes_Prism[16] = 2; + FaceNodes_Prism[17] = 3; + /* DOCEND */ + + /* DOCSTART:arrow_neighbors_prism.txt*/ + /* Since this zone has just one element, all leftelems are + * NoNeighboring Element and all right elems are itself. + */ + INTEGER4 *FaceLeftElems_Prism = new INTEGER4[NumFaces_Prism]; + INTEGER4 *FaceRightElems_Prism = new INTEGER4[NumFaces_Prism]; + + for (INTEGER4 ii = 0; ii < NumFaces_Prism; ii++) + { + FaceRightElems_Prism[ii] = 1; + FaceLeftElems_Prism[ii] = 0; + } + + /* The negative value in the FaceLeftElems array indicates that + * the face is connected to an element in another zone. In this + * case, Face 1 is connected to a face in Zone 1 (as indicated in + * Line 6). The FaceBoundaryConnectionElems array lists all of + * the element numbers in other zones that the current zone shares + * boundary connections with. Similarly, the + * FaceBoundaryConnectionZones array lists all of the zone numbers + * with which the current zone shares boundaries. A negative + * value in the FaceLeftElems or FaceRightElems array indicates + * the position within these arrays that defines the neighboring + * element and zone for a face. + */ + FaceLeftElems_Prism[0] = -1; + /* DOCEND */ + + /* DOCSTART:arrow_tecpoly_prism.txt*/ + + INTEGER4 *FaceBndryConnCounts_Prism = new INTEGER4[NumConnBndryFaces_Prism]; + FaceBndryConnCounts_Prism[0] = 2; + + INTEGER4 *FaceBndryConnElems_Prism = new INTEGER4[TotalNumBndryConns_Prism]; + INTEGER4 *FaceBndryConnZones_Prism = new INTEGER4[TotalNumBndryConns_Prism]; + + /* As previously mentioned, a connected boundary face is a face + * that has either multiple neighboring faces or neighbor(s) that + * belong to another zone. Those cases are sufficient when the + * combination of all of the face’s neighbors completely cover the + * face. However, there are some cases (such as the bottom of the + * arrowhead) where the face is not completely covered by its + * neighbors. In those cases the face is referred to as “partially + * obscured”. A partially obscured face is indicated by + * incrementing the value in TotalNumConnectedBoundaryFaces and + * entering a value of 0 in both the FaceBndryConnectionElems and + * FaceBoundaryConnectionZones arrays for the boundary connection + * for the partially obscured face. + */ + FaceBndryConnElems_Prism[0] = 0; + FaceBndryConnZones_Prism[0] = 0; + + /* Indicates that Face 1 is connected to Element 1 in Zone 1. */ + FaceBndryConnElems_Prism[1] = 1; + FaceBndryConnZones_Prism[1] = 1; + + I = TECPOLY112(FaceNodeCounts_Prism, + FaceNodes_Prism, + FaceLeftElems_Prism, + FaceRightElems_Prism, + FaceBndryConnCounts_Prism, + FaceBndryConnElems_Prism, + FaceBndryConnZones_Prism); + + /* cleanup */ + delete X_Prism; + delete Y_Prism; + delete Z_Prism; + delete P_Prism; + delete FaceNodeCounts_Prism; + delete FaceNodes_Prism; + delete FaceLeftElems_Prism; + delete FaceRightElems_Prism; + delete FaceBndryConnCounts_Prism; + delete FaceBndryConnElems_Prism; + delete FaceBndryConnZones_Prism; + /* DOCEND */ + + /* DOCSTART:arrow_tecend.txt*/ + I = TECEND112(); + /* DOCEND */ + + return 0; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.vcproj new file mode 100644 index 00000000000..31f69eedf10 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/arrow/arrow.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="arrow" + ProjectGUID="{3C1105D7-5690-48E0-9402-111CBDC84B42}" + RootNamespace="arrow" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\arrow.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/Makefile new file mode 100644 index 00000000000..2c6009b0730 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=comtest +FILES=$(EXECUTABLE).c + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.c b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.c new file mode 100644 index 00000000000..c290dcef40e --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.c @@ -0,0 +1,492 @@ +/* + * Complex example C program to write a + * binary data file for Tecplot. This example + * does the following: + * + * 1. Open a data file called "field.plt." + * 2. Open a data file called "line.plt." + * 3. Assign values for X, Y and P. These will be used + * in both the ordered and finite-element data files. + * 4. Write out an ordered zone dimensioned 4 x 5 to "field.plt." + * 5. Assign values for XL and YL arrays. + * 6. Write out data for line plot to "line.plt." Make the data + * use double precision. + * 7. Write out a finite-element zone to "field.plt." + * 8. Write out a text record to "field.plt." + * 9. Write out a geometry (circle) record to "field.plt." + * 10. Close file 1. + * 11. Close file 2. + */ + +#include <stdio.h> +#include <math.h> +#include "TECIO.h" + +int main(void) +{ + float X[5][4], Y[5][4], P[5][4]; + double XL[50], YL[50]; + double SolTime; + INTEGER4 Debug, I, J, K, L, III, NPts, NElm, DIsDouble, VIsDouble, IMax, JMax, KMax; + INTEGER4 ICellMax, JCellMax, KCellMax, ZoneType, Clipping; + INTEGER4 StrandID, ParentZn, FieldFileType, LineFileType; + INTEGER4 SharingZone[3] = {0, 0, 0}; + INTEGER4 IsBlock, NumFaceConnections, FaceNeighborMode, ShareConnectivityFromZone; + INTEGER4 NM[12][4]; + double XP, YP, ZP, FH, LineSpacing, PatternLength; + double BoxMargin, BoxLineThickness, TextAngle; + INTEGER4 AttachToZone, Zone, Scope, PositionCoordSys, FontType, HeightUnits; + INTEGER4 IsFilled, GeomType, LinePattern, NumEllipsePts; + INTEGER4 Anchor, BoxType, BoxColor, BoxFillColor, TextColor, Color, FillColor; + INTEGER4 ArrowheadStyle, ArrowheadAttachment, NumSegments, NumSegPts[1]; + double LineThickness, ArrowheadSize, ArrowheadAngle; + float XGeomData[1], YGeomData[1], ZGeomData[1]; + enum FileType { FULL = 0, GRID = 1, SOLUTION = 2 }; + + Debug = 2; + VIsDouble = 0; + DIsDouble = 0; + FieldFileType = FULL; + LineFileType = FULL; + /* + * Open order.plt and write the header information. + */ + I = TECINI112((char*)"DATASET WITH ONE ORDERED ZONE AND ONE FE-QUAD ZONE OVER 2 TIME STEPS", + (char*)"X Y P", + (char*)"field.plt", + (char*)".", + &FieldFileType, + &Debug, + &VIsDouble); + /* + * Open line.plt and write the header information. + */ + VIsDouble = 1; + I = TECINI112((char*)"DATASET WITH ONE I-ORDERED ZONE", + (char*)"X Y", + (char*)"line.plt", + (char*)".", + &LineFileType, + &Debug, + &VIsDouble); + + /* + * Calculate values for the field variables. + */ + for (J = 0; J < 5; J++) + for (I = 0; I < 4; I++) + { + X[J][I] = (float)(I + 1); + Y[J][I] = (float)(J + 1); + P[J][I] = (float)((I + 1) * (J + 1)); + } + + /* + * Make sure writing to file #1. + */ + III = 1; + I = TECFIL112(&III); + + /* + * Write the zone header information for the ordered zone. + */ + IMax = 4; + JMax = 5; + KMax = 1; + ICellMax = 0; + JCellMax = 0; + KCellMax = 0; + ZoneType = 0; + SolTime = 10.0; + StrandID = 1; + ParentZn = 0; + IsBlock = 1; + NumFaceConnections = 0; + FaceNeighborMode = 0; + ShareConnectivityFromZone = 0; + I = TECZNE112((char*)"Ordered Zone 1", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + NULL, /* PassiveVarList */ + NULL, /* ValueLocation */ + NULL, /* ShareVarFromZone */ + 0, /* TotalNumFaceNodes */ + 0, /* NumConnectedBoundaryFaces */ + 0, /* TotalNumBoundaryConnections */ + &ShareConnectivityFromZone); + /* + * Write out the field data for the ordered zone. + */ + III = IMax * JMax; + I = TECDAT112(&III, &X[0][0], &DIsDouble); + I = TECDAT112(&III, &Y[0][0], &DIsDouble); + I = TECDAT112(&III, &P[0][0], &DIsDouble); + + /* + * Calculate values for the I-ordered zone. + */ + + for (I = 0; I < 50; I++) + { + XL[I] = I + 1; + YL[I] = sin((double)(I + 1) / 20.0); + } + /* + * Switch to the "line.plt" file (file number 2) + * and write out the line plot data. + */ + + III = 2; + I = TECFIL112(&III); + + /* + * Write the zone header information for the XY-data. + */ + IMax = 50; + JMax = 1; + KMax = 1; + SolTime = 0.0; + StrandID = 0; /* StaticZone */ + I = TECZNE112((char*)"XY Line plot", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + 0, /* TotalNumFaceNodes */ + 0, /* NumConnectedBoundaryFaces */ + 0, /* TotalNumBoundaryConnections */ + NULL, /* PassiveVarList */ + NULL, /* ValueLocation */ + NULL, /* ShareVarFromZone */ + &ShareConnectivityFromZone); + /* + * Write out the line plot. + */ + DIsDouble = 1; + III = IMax; + I = TECDAT112(&III, (float *) & XL[0], &DIsDouble); + I = TECDAT112(&III, (float *) & YL[0], &DIsDouble); + + /* + * Switch back to the field plot file and write out + * the finite-element zone. + */ + III = 1; + I = TECFIL112(&III); + + /* + * Move the coordinates so this zone's not on top of the other + */ + for (J = 0; J < 5; J++) + for (I = 0; I < 4; I++) + { + X[J][I] = (float)(I + 6); + Y[J][I] = (float)(J + 1); + P[J][I] = (float)((I + 1) * (J + 1)); + } + + /* + * Write the zone header information for the finite-element zone. + */ + ZoneType = 3; /* FEQuad */ + NPts = 20; /* Number of points */ + NElm = 12; /* Number of elements */ + KMax = 0; /* Unused */ + SolTime = 10.0; + StrandID = 2; + I = TECZNE112((char*)"Finite Zone 1", + &ZoneType, + &NPts, + &NElm, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + 0, /* TotalNumFaceNodes */ + 0, /* NumConnectedBoundaryFaces */ + 0, /* TotalNumBoundaryConnections */ + NULL, /* PassiveVarList */ + NULL, /* ValueLocation */ + NULL, /* ShareVarFromZone */ + &ShareConnectivityFromZone); + /* + * Write out the field data for the finite-element zone. + */ + IMax = 4; + JMax = 5; + III = IMax * JMax; + DIsDouble = 0; + I = TECDAT112(&III, &X[0][0], &DIsDouble); + I = TECDAT112(&III, &Y[0][0], &DIsDouble); + I = TECDAT112(&III, &P[0][0], &DIsDouble); + + /* + * Calculate and then write out the connectivity list. + * Note: The NM array references cells starting with + * offset of 1. + */ + + for (I = 1; I < IMax; I++) + for (J = 1; J < JMax; J++) + { + K = I + (J - 1) * (IMax - 1); + L = I + (J - 1) * IMax; + NM[K-1][0] = L; + NM[K-1][1] = L + 1; + NM[K-1][2] = L + IMax + 1; + NM[K-1][3] = L + IMax; + } + + I = TECNOD112((INTEGER4 *)NM); + + /* + * Calculate values for the new solution variable. + */ + for (J = 0; J < 5; J++) + for (I = 0; I < 4; I++) + { + P[J][I] = (float)(2.0 * (I + 1) * (J + 1)); + } + + /* + * Write the zone header information for time step 2 + */ + ZoneType = 0; + IMax = 4; + JMax = 5; + KMax = 1; + SolTime = 20.0; + StrandID = 1; + SharingZone[0] = 1; + SharingZone[1] = 1; + SharingZone[2] = 0; /* solution variable is not shared */ + ShareConnectivityFromZone = 0; + + I = TECZNE112((char*)"Ordered Zone 2", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + 0, /* TotalNumFaceNodes */ + 0, /* NumConnectedBoundaryFaces */ + 0, /* TotalNumBoundaryConnections */ + NULL, + NULL, + SharingZone, + &ShareConnectivityFromZone); + + /* + * Write out the solution variable the grid variables are shared. + */ + IMax = 4; + JMax = 5; + III = IMax * JMax; + DIsDouble = 0; + I = TECDAT112(&III, &P[0][0], &DIsDouble); + + /* + * Calculate values for the new solution variable. + */ + for (J = 0; J < 5; J++) + for (I = 0; I < 4; I++) + { + P[J][I] = (float)(3.0 * (I + 1) * (J + 1)); + } + + /* + * Write another time step for the FEZone and share from the first + */ + ZoneType = 3; + SolTime = 20.0; + StrandID = 2; + KMax = 0; + SharingZone[0] = 2; + SharingZone[1] = 2; + SharingZone[2] = 0; /* solution variable is not shared */ + ShareConnectivityFromZone = 2; + I = TECZNE112((char*)"Finite Zone 2", + &ZoneType, + &NPts, + &NElm, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + 0, /* TotalNumFaceNodes */ + 0, /* NumConnectedBoundaryFaces */ + 0, /* TotalNumBoundaryConnections */ + NULL, /* PassiveVarList */ + NULL, /* ValueLocation */ + SharingZone, + &ShareConnectivityFromZone); + + /* + * Write out the solution variable the grid variables are shared. + */ + IMax = 4; + JMax = 5; + III = IMax * JMax; + DIsDouble = 0; + I = TECDAT112(&III, &P[0][0], &DIsDouble); + + /* + * Prepare to write out text record. Text is positioned + * at 0.5, 0.5 in frame units and has a height + * of 0.05 frame units. + */ + XP = 50.0; + YP = 50.0; + ZP = 0.0; + FH = 5.0; + Scope = 1; /* Local */ + Clipping = 1; /* Clip to frame */ + PositionCoordSys = 1; /* Frame */ + FontType = 1; /* Helv Bold */ + HeightUnits = 1; /* Frame */ + AttachToZone = 0; + Zone = 0; + BoxType = 0; /* None */ + BoxMargin = 5.0; + BoxLineThickness = 0.5; + BoxColor = 3; + BoxFillColor = 7; + TextAngle = 0.0; + Anchor = 0; /* Left */ + LineSpacing = 1.0; + TextColor = 0; /* Black */ + + III = TECTXT112(&XP, + &YP, + &ZP, + &PositionCoordSys, + &AttachToZone, + &Zone, + &FontType, + &HeightUnits, + &FH, + &BoxType, + &BoxMargin, + &BoxLineThickness, + &BoxColor, + &BoxFillColor, + &TextAngle, + &Anchor, + &LineSpacing, + &TextColor, + &Scope, + &Clipping, + (char*)"Hi Mom", + (char*)""); + + /* + * Prepare to write out geometry record (circle). Circle is + * positioned at 25, 25 (in frame units) and has a radius of + * 20 percent. Circle is drawn using a dashed line. + */ + + + XP = 25.0; + YP = 25.0; + ZP = 0.0; + IsFilled = 0; + Color = 0; + FillColor = 7; + GeomType = 3; /* Circle */ + LinePattern = 1; /* Dashed */ + LineThickness = 0.3; + PatternLength = 1.5; + NumEllipsePts = 72; + ArrowheadStyle = 0; + ArrowheadAttachment = 0; + ArrowheadSize = 0.1; + ArrowheadAngle = 15.0; + NumSegments = 1; + NumSegPts[0] = 1; + + XGeomData[0] = 20.0; + YGeomData[0] = 0.0; + ZGeomData[0] = 0.0; + + + III = TECGEO112(&XP, + &YP, + &ZP, + &PositionCoordSys, + &AttachToZone, + &Zone, + &Color, + &FillColor, + &IsFilled, + &GeomType, + &LinePattern, + &PatternLength, + &LineThickness, + &NumEllipsePts, + &ArrowheadStyle, + &ArrowheadAttachment, + &ArrowheadSize, + &ArrowheadAngle, + &Scope, + &Clipping, + &NumSegments, + NumSegPts, + &XGeomData[0], + &YGeomData[0], + &ZGeomData[0], + (char*)""); + + /* + * Close out file 1. + */ + I = TECEND112(); + + /* + * Close out file 2. + */ + III = 2; + I = TECFIL112(&III); + I = TECEND112(); + + return 0; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f new file mode 100644 index 00000000000..c8d6e2ce5aa --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f @@ -0,0 +1,467 @@ +C +C Complex example FORTRAN program to write a +C binary data file for Tecplot. This example +C does the following: +C +C 1. Open a data file called "field.plt." +C 2. Open a data file called "line.plt." +C 3. Assign values for X, Y and P. These will be used +C in both the ordered and FE data files. +C 4. Write out an ordered zone dimensioned 4 x 5 to "field.plt." +C 5. Assign values for XL and YL arrays. +C 6. Write out data for line plot to "line.plt." Make the data +C use double precision. +C 7. Write out a finite element zone to "field.plt." +C 8. Write out a text record to "field.plt." +C 9. Write out a geometry (circle) record to "field.plt." +C 10. Close file 1. +C 11. Close file 2. +C + Program ComplexTest + + Include "tecio.inc" + + REAL*4 X(4,5), Y(4,5), P(4,5) + REAL*8 XL(50), YL(50) + REAL*4 XLDummy(1), YLDummy(1) + EQUIVALENCE (XLDummy(1), XL(1)) + EQUIVALENCE (YLDummy(1), YL(1)) + REAL*8 SolTime + INTEGER*4 Debug,I,J,K,L,III,NPts,NElm,DIsDouble,VIsDouble + INTEGER*4 IMax,JMax,KMax,NM(4,12),FileType + INTEGER*4 StrandID,ParentZn + INTEGER*4 SharingZone(3) + REAL*8 XP, YP, ZP, FH, LineSpacing, PatternLength + REAL*8 BoxMargin, BoxLineThickness, TextAngle + INTEGER*4 AttachToZone, Zone, Scope, PositionCoordSys + INTEGER*4 Clipping + INTEGER*4 FontType, HeightUnits, Anchor, BoxType + INTEGER*4 IsFilled, GeomType, LinePattern, NumEllipsePts + INTEGER*4 BoxColor, BoxFillColor, TextColor, Color, FillColor + INTEGER*4 ArrowheadStyle, ArrowheadAttachment, NumSegments + INTEGER*4 NumSegPts(1) + REAL*8 LineThickness, ArrowheadSize, ArrowheadAngle + REAL*4 XGeomData(1), YGeomData(1), ZGeomData(1) + CHARACTER*1 NULCHAR + INTEGER*4 Zero + POINTER (NullPtr,Null) + INTEGER*4 Null(*) + + Debug = 2 + VIsDouble = 0 + FileType = 0 + DIsDouble = 0 + NULCHAR = CHAR(0) + Zero = 0 + NullPtr = 0 +C +C Open field.plt and write the header information. +C + I = TECINI112('DATASET WITH 1 ORDERED ZONE, '// + & '1 QUAD ZONE OVER 2 TIME STEPS'//NULCHAR, + & 'X Y P'//NULCHAR, + & 'field.plt'//NULCHAR, + & '.'//NULCHAR, + & FileType, + & Debug, + & VIsDouble) +C +C Open line.plt and write the header information. +C + VIsDouble = 1 + I = TECINI112('DATASET WITH ONE I-ORDERED ZONE'//NULCHAR, + & 'X Y'//NULCHAR, + & 'line.plt'//NULCHAR, + & '.'//NULCHAR, + & FileType, + & Debug, + & VIsDouble) + +C +C Calculate values for the field variables. +C + Do 10 J = 1,5 + Do 10 I = 1,4 + X(I,J) = I + Y(I,J) = J + P(I,J) = I*J + 10 Continue + +C +C Make sure writing to file #1. +C + III = 1 + I = TECFIL112(III) + +C +C Write the zone header information for the ordered zone. +C + IMax = 4 + JMax = 5 + KMax = 1 + SolTime = 10.0 + StrandID = 1 + ParentZn = 0 + I = TECZNE112('Ordered Zone 1'//NULCHAR, + & 0, ! ZONETYPE + & IMax, + & JMax, + & KMax, + & 0, + & 0, + & 0, + & SolTime, + & StrandID, + & ParentZn, + & 1, ! ISBLOCK + & 0, ! NumFaceConnections + & 0, ! FaceNeighborMode + & 0, ! TotalNumFaceNodes + & 0, ! NumConnectedBoundaryFaces + & 0, ! TotalNumBoundaryConnections + & Null, ! PassiveVarList + & Null, ! ValueLocation + & Null, ! ShareVarFromZone + & 0) ! ShareConnectivityFromZone) + +C +C Write out the field data for the ordered zone. +C + III = IMax*JMax + I = TECDAT112(III,X,DIsDouble) + I = TECDAT112(III,Y,DIsDouble) + I = TECDAT112(III,P,DIsDouble) + +C +C Calculate values for the I-ordered zone. +C + + Do 20 I = 1,50 + XL(I) = I + YL(I) = sin(I/20.0) + 20 Continue +C +C Switch to the 'line.plt' file (file number 2) +C and write out the line plot data. +C + III = 2 + I = TECFIL112(III) +C +C Write the zone header information for the XY-data. +C + IMax = 50 + JMax = 1 + KMax = 1 + SolTime = 0.0 + StrandID = 0 + I = TECZNE112('XY Line plot'//NULCHAR, + & 0, + & IMax, + & JMax, + & KMax, + & 0, + & 0, + & 0, + & SolTime, + & StrandID, + & ParentZn, + & 1, + & 0, + & 0, + & 0, + & 0, + & 0, + & Null, + & Null, + & Null, + & 0) +C +C Write out the line plot. +C + DIsDouble = 1 + III = IMax + I = TECDAT112(III,XLDummy,DIsDouble) + I = TECDAT112(III,YLDummy,DIsDouble) + +C +C Switch back to the field plot file and write out +C the finite-element zone. +C + III = 1 + I = TECFIL112(III) +C +C Move the coordinates so this zone's not on top of the other +C + Do 30 J = 1,5 + Do 30 I = 1,4 + X(I,J) = I+5 + Y(I,J) = J + P(I,J) = I*J + 30 Continue +C +C Write the zone header information for the finite-element zone. +C + NPts = 20 + NElm = 12 + KMax = 1 + SolTime = 10.0 + StrandID = 2 + I = TECZNE112('Finite Zone 1'//NULCHAR, + & 3, ! FEQUADRILATERAL + & NPts, + & NElm, + & KMax, + & 0, + & 0, + & 0, + & SolTime, + & StrandID, + & ParentZn, + & 1, + & 0, + & 0, + & 0, + & 0, + & 0, + & Null, + & Null, + & Null, + & 0) +C +C Write out the field data for the finite-element zone. +C + IMax = 4 + JMax = 5 + III = IMax*JMax + DIsDouble = 0 + I = TECDAT112(III,X,DIsDouble) + I = TECDAT112(III,Y,DIsDouble) + I = TECDAT112(III,P,DIsDouble) + +C +C Calculate and then write out the connectivity list. +C Note: The NM array references cells starting with +C offset of 1. +C + + Do 40 I = 1,IMax-1 + Do 40 J = 1,JMax-1 + K = I+(J-1)*(IMax-1) + L = I+(J-1)*IMax + NM(1,K) = L + NM(2,K) = L+1 + NM(3,K) = L+IMax+1 + NM(4,K) = L+IMax + 40 Continue + + I = TECNOD112(NM) +C +C Calculate vlues for the new solution variable. +C + Do 50 J = 1,5 + Do 50 I = 1,4 + P(I,J) = 2*I*J + 50 Continue +C +C Write the zone header information for time step 2 +C + IMax = 4 + JMax = 5 + KMax = 1 + SolTime = 20.0 + StrandID = 1 + SharingZone(1) = 1 + SharingZone(2) = 1 + SharingZone(3) = 0 + I = TECZNE112('Ordered Zone 2'//NULCHAR, + & 0, ! ORDERED + & IMax, + & JMax, + & KMax, + & 0, + & 0, + & 0, + & SolTime, + & StrandID, + & ParentZn, + & 1, + & 0, + & 0, + & 0, + & 0, + & 0, + & Null, + & Null, + & SharingZone, + & 0) +C +C Write out the solution variable the grid variables are shared. +C + IMax = 4 + JMax = 5 + III = IMax*JMax + DIsDouble = 0 + I = TECDAT112(III,P,DIsDouble) +C +C Calculate values for the new solution variable. +C + Do 60 J = 1,5 + Do 60 I = 1,4 + P(I,J) = 3*I*J + 60 Continue +C +C Write another time step for the FEZone and share from the first +C + SolTime = 20.0 + StrandID = 2 + KMax = 0 + SharingZone(1) = 2 + SharingZone(2) = 2 + SharingZone(3) = 0 + I = TECZNE112('Finite Zone 2'//NULCHAR, + & 3, ! FEQUADRILATERAL + & NPts, + & NElm, + & KMax, + & 0, + & 0, + & 0, + & SolTime, + & StrandID, + & ParentZn, + & 1, + & 0, + & 0, + & 0, + & 0, + & 0, + & Null, + & Null, + & SharingZone, + & 2) +C +C Write out the solution variable the grid variables are shared. +C + IMax = 4 + JMax = 5 + III = IMax*JMax + DIsDouble = 0 + I = TECDAT112(III,P,DIsDouble) + +C +C Prepare to write out text record. Text is positioned +C at 50, 50 in frame units and has a height 5 frame units. +C + XP = 50 + YP = 50 + FH = 5 + Scope = 1 + Clipping = 0 + PositionCoordSys = 1 + FontType = 1 + HeightUnits = 1 + AttachToZone = 0 + Zone = 0 + BoxType = 0 + BoxMargin = 5.0 + BoxLineThickness = 0.5 + BoxColor = 3 + BoxFillColor = 7 + TextAngle = 0.0 + Anchor = 0 + LineSpacing = 1.5 + TextColor = 0 + + III = TECTXT112(XP, + & YP, + & 0.0d0, + & PositionCoordSys, + & AttachToZone, + & Zone, + & FontType, + & HeightUnits, + & FH, + & BoxType, + & BoxMargin, + & BoxLineThickness, + & BoxColor, + & BoxFillColor, + & TextAngle, + & Anchor, + & LineSpacing, + & TextColor, + & Scope, + & Clipping, + & 'Hi Mom'//NULCHAR, + & NULCHAR) + +C +C Prepare to write out geometry record (circle). Circle is +C positioned at 25, 25 in frame units and has a radius of 30. +C Circle is drawn using a dashed line pattern. +C + + + XP = 25 + YP = 25 + ZP = 0.0 + IsFilled = 0 + Color = 0 + FillColor = 7 + GeomType = 2 + LinePattern = 1 + LineThickness = 0.3 + PatternLength = 1 + NumEllipsePts = 72 + ArrowheadStyle = 0 + ArrowheadAttachment = 0 + ArrowheadSize = 0.0 + ArrowheadAngle = 15.0 + NumSegments = 1 + NumSegPts(1) = 1 + + XGeomData(1) = 30 + YGeomData(1) = 0.0 + ZGeomData(1) = 0.0 + + + III = TECGEO112(XP, + & YP, + & ZP, + & PositionCoordSys, + & AttachToZone, + & Zone, + & Color, + & FillColor, + & IsFilled, + & GeomType, + & LinePattern, + & PatternLength, + & LineThickness, + & NumEllipsePts, + & ArrowheadStyle, + & ArrowheadAttachment, + & ArrowheadSize, + & ArrowheadAngle, + & Scope, + & Clipping, + & NumSegments, + & NumSegPts, + & XGeomData, + & YGeomData, + & ZGeomData, + & NULCHAR) + +C +C Close out file 1. +C + I = TECEND112() + +C +C Close out file 2. +C + III = 2 + I = TECFIL112(III) + I = TECEND112() + STOP + END diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f90 b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f90 new file mode 100644 index 00000000000..56b3d560c39 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtest.f90 @@ -0,0 +1,467 @@ +! +! Complex example FORTRAN program to write a +! binary data file for Tecplot. This example +! does the following: +! +! 1. Open a data file called "field.plt." +! 2. Open a data file called "line.plt." +! 3. Assign values for X, Y and P. These will be used +! in both the ordered and FE data files. +! 4. Write out an ordered zone dimensioned 4 x 5 to "field.plt." +! 5. Assign values for XL and YL arrays. +! 6. Write out data for line plot to "line.plt." Make the data +! use double precision. +! 7. Write out a finite element zone to "field.plt." +! 8. Write out a text record to "field.plt." +! 9. Write out a geometry (circle) record to "field.plt." +! 10. Close file 1. +! 11. Close file 2. +! + Program ComplexTest + + Include "tecio.f90" + + REAL*4 X(4,5), Y(4,5), P(4,5) + REAL*8 XL(50), YL(50) + REAL*4 XLDummy(1), YLDummy(1) + EQUIVALENCE (XLDummy(1), XL(1)) + EQUIVALENCE (YLDummy(1), YL(1)) + REAL*8 SolTime + INTEGER*4 Debug,I,J,K,L,III,NPts,NElm,DIsDouble,VIsDouble,FileType + INTEGER*4 IMax,JMax,KMax,NM(4,12) + INTEGER*4 StrandID,ParentZn + INTEGER*4 SharingZone(3) + REAL*8 XP, YP, ZP, FH, LineSpacing, PatternLength + REAL*8 BoxMargin, BoxLineThickness, TextAngle + INTEGER*4 AttachToZone, Zone, Scope, PositionCoordSys + INTEGER*4 Clipping + INTEGER*4 FontType, HeightUnits, Anchor, BoxType + INTEGER*4 IsFilled, GeomType, LinePattern, NumEllipsePts + INTEGER*4 BoxColor, BoxFillColor, TextColor, Color, FillColor + INTEGER*4 ArrowheadStyle, ArrowheadAttachment, NumSegments + INTEGER*4 NumSegPts(1) + REAL*8 LineThickness, ArrowheadSize, ArrowheadAngle + REAL*4 XGeomData(1), YGeomData(1), ZGeomData(1) + CHARACTER*1 NULCHAR + INTEGER*4 Zero + POINTER (NullPtr,Null) + INTEGER*4 Null(*) + + Debug = 2 + VIsDouble = 0 + FileType = 0 + DIsDouble = 0 + NULCHAR = CHAR(0) + Zero = 0 + NullPtr = 0 +! +! Open field.plt and write the header information. +! + I = TECINI112('DATASET WITH 1 ORDERED ZONE, '// & + '1 QUAD ZONE OVER 2 TIME STEPS'//NULCHAR, & + 'X Y P'//NULCHAR, & + 'field.plt'//NULCHAR, & + '.'//NULCHAR, & + FileType, & + Debug, & + VIsDouble) +! +! Open line.plt and write the header information. +! + VIsDouble = 1 + I = TECINI112('DATASET WITH ONE I-ORDERED ZONE'//NULCHAR, & + 'X Y'//NULCHAR, & + 'line.plt'//NULCHAR, & + '.'//NULCHAR, & + FileType, & + Debug, & + VIsDouble) + +! +! Calculate values for the field variables. +! + Do 10 J = 1,5 + Do 10 I = 1,4 + X(I,J) = I + Y(I,J) = J + P(I,J) = I*J + 10 Continue + +! +! Make sure writing to file #1. +! + III = 1 + I = TECFIL112(III) + +! +! Write the zone header information for the ordered zone. +! + IMax = 4 + JMax = 5 + KMax = 1 + SolTime = 10.0 + StrandID = 1 + ParentZn = 0 + I = TECZNE112('Ordered Zone 1'//NULCHAR, & + 0, & ! ZONETYPE + IMax, & + JMax, & + KMax, & + 0, & + 0, & + 0, & + SolTime, & + StrandID, & + ParentZn, & + 1, & ! ISBLOCK + 0, & ! NumFaceConnections + 0, & ! FaceNeighborMode + 0, & ! TotalNumFaceNodes + 0, & ! NumConnectedBoundaryFaces + 0, & ! TotalNumBoundaryConnections + Null, & ! PassiveVarList + Null, & ! ValueLocation + Null, & ! ShareVarFromZone + 0) ! ShareConnectivityFromZone) + +! +! Write out the field data for the ordered zone. +! + III = IMax*JMax + I = TECDAT112(III,X,DIsDouble) + I = TECDAT112(III,Y,DIsDouble) + I = TECDAT112(III,P,DIsDouble) + +! +! Calculate values for the I-ordered zone. +! + + Do 20 I = 1,50 + XL(I) = I + YL(I) = sin(I/20.0) + 20 Continue +! +! Switch to the 'line.plt' file (file number 2) +! and write out the line plot data. +! + III = 2 + I = TECFIL112(III) +! +! Write the zone header information for the XY-data. +! + IMax = 50 + JMax = 1 + KMax = 1 + SolTime = 0.0 + StrandID = 0 + I = TECZNE112('XY Line plot'//NULCHAR, & + 0, & + IMax, & + JMax, & + KMax, & + 0, & + 0, & + 0, & + SolTime, & + StrandID, & + ParentZn, & + 1, & + 0, & + 0, & + 0, & + 0, & + 0, & + Null, & + Null, & + Null, & + 0) +! +! Write out the line plot. +! + DIsDouble = 1 + III = IMax + I = TECDAT112(III,XLDummy,DIsDouble) + I = TECDAT112(III,YLDummy,DIsDouble) + +! +! Switch back to the field plot file and write out +! the finite-element zone. +! + III = 1 + I = TECFIL112(III) +! +! Move the coordinates so this zone's not on top of the other +! + Do 30 J = 1,5 + Do 30 I = 1,4 + X(I,J) = I+5 + Y(I,J) = J + P(I,J) = I*J + 30 Continue +! +! Write the zone header information for the finite-element zone. +! + NPts = 20 + NElm = 12 + KMax = 1 + SolTime = 10.0 + StrandID = 2 + I = TECZNE112('Finite Zone 1'//NULCHAR, & + 3, & ! FEQUADRILATERAL + NPts, & + NElm, & + KMax, & + 0, & + 0, & + 0, & + SolTime, & + StrandID, & + ParentZn, & + 1, & + 0, & + 0, & + 0, & + 0, & + 0, & + Null, & + Null, & + Null, & + 0) +! +! Write out the field data for the finite-element zone. +! + IMax = 4 + JMax = 5 + III = IMax*JMax + DIsDouble = 0 + I = TECDAT112(III,X,DIsDouble) + I = TECDAT112(III,Y,DIsDouble) + I = TECDAT112(III,P,DIsDouble) + +! +! Calculate and then write out the connectivity list. +! Note: The NM array references cells starting with +! offset of 1. +! + + Do 40 I = 1,IMax-1 + Do 40 J = 1,JMax-1 + K = I+(J-1)*(IMax-1) + L = I+(J-1)*IMax + NM(1,K) = L + NM(2,K) = L+1 + NM(3,K) = L+IMax+1 + NM(4,K) = L+IMax + 40 Continue + + I = TECNOD112(NM) +! +! Calculate vlues for the new solution variable. +! + Do 50 J = 1,5 + Do 50 I = 1,4 + P(I,J) = 2*I*J + 50 Continue +! +! Write the zone header information for time step 2 +! + IMax = 4 + JMax = 5 + KMax = 1 + SolTime = 20.0 + StrandID = 1 + SharingZone(1) = 1 + SharingZone(2) = 1 + SharingZone(3) = 0 + I = TECZNE112('Ordered Zone 2'//NULCHAR, & + 0, & ! ORDERED + IMax, & + JMax, & + KMax, & + 0, & + 0, & + 0, & + SolTime, & + StrandID, & + ParentZn, & + 1, & + 0, & + 0, & + 0, & + 0, & + 0, & + Null, & + Null, & + SharingZone, & + 0) +! +! Write out the solution variable the grid variables are shared. +! + IMax = 4 + JMax = 5 + III = IMax*JMax + DIsDouble = 0 + I = TECDAT112(III,P,DIsDouble) +! +! Calculate values for the new solution variable. +! + Do 60 J = 1,5 + Do 60 I = 1,4 + P(I,J) = 3*I*J + 60 Continue +! +! Write another time step for the FEZone and share from the first +! + SolTime = 20.0 + StrandID = 2 + KMax = 0 + SharingZone(1) = 2 + SharingZone(2) = 2 + SharingZone(3) = 0 + I = TECZNE112('Finite Zone 2'//NULCHAR, & + 3, & ! FEQUADRILATERAL + NPts, & + NElm, & + KMax, & + 0, & + 0, & + 0, & + SolTime, & + StrandID, & + ParentZn, & + 1, & + 0, & + 0, & + 0, & + 0, & + 0, & + Null, & + Null, & + SharingZone, & + 2) +! +! Write out the solution variable the grid variables are shared. +! + IMax = 4 + JMax = 5 + III = IMax*JMax + DIsDouble = 0 + I = TECDAT112(III,P,DIsDouble) + +! +! Prepare to write out text record. Text is positioned +! at 50, 50 in frame units and has a height 5 frame units. +! + XP = 50 + YP = 50 + FH = 5 + Scope = 1 + Clipping = 0 + PositionCoordSys = 1 + FontType = 1 + HeightUnits = 1 + AttachToZone = 0 + Zone = 0 + BoxType = 0 + BoxMargin = 5.0 + BoxLineThickness = 0.5 + BoxColor = 3 + BoxFillColor = 7 + TextAngle = 0.0 + Anchor = 0 + LineSpacing = 1.5 + TextColor = 0 + + III = TECTXT112(XP, & + YP, & + 0.0d0, & + PositionCoordSys, & + AttachToZone, & + Zone, & + FontType, & + HeightUnits, & + FH, & + BoxType, & + BoxMargin, & + BoxLineThickness, & + BoxColor, & + BoxFillColor, & + TextAngle, & + Anchor, & + LineSpacing, & + TextColor, & + Scope, & + Clipping, & + 'Hi Mom'//NULCHAR, & + NULCHAR) + +! +! Prepare to write out geometry record (circle). Circle is +! positioned at 25, 25 in frame units and has a radius of 30. +! Circle is drawn using a dashed line pattern. +! + + + XP = 25 + YP = 25 + ZP = 0.0 + IsFilled = 0 + Color = 0 + FillColor = 7 + GeomType = 2 + LinePattern = 1 + LineThickness = 0.3 + PatternLength = 1 + NumEllipsePts = 72 + ArrowheadStyle = 0 + ArrowheadAttachment = 0 + ArrowheadSize = 0.0 + ArrowheadAngle = 15.0 + NumSegments = 1 + NumSegPts(1) = 1 + + XGeomData(1) = 30 + YGeomData(1) = 0.0 + ZGeomData(1) = 0.0 + + + III = TECGEO112(XP, & + YP, & + ZP, & + PositionCoordSys, & + AttachToZone, & + Zone, & + Color, & + FillColor, & + IsFilled, & + GeomType, & + LinePattern, & + PatternLength, & + LineThickness, & + NumEllipsePts, & + ArrowheadStyle, & + ArrowheadAttachment, & + ArrowheadSize, & + ArrowheadAngle, & + Scope, & + Clipping, & + NumSegments, & + NumSegPts, & + XGeomData, & + YGeomData, & + ZGeomData, & + NULCHAR) + +! +! Close out file 1. +! + I = TECEND112() + +! +! Close out file 2. +! + III = 2 + I = TECFIL112(III) + I = TECEND112() + STOP + END diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestc.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestc.vcproj new file mode 100644 index 00000000000..23da375e8d6 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestc.vcproj @@ -0,0 +1,346 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="comtestc" + ProjectGUID="{723FBFD1-5AF2-4154-B77A-CE3849EAFCA2}" + RootNamespace="comtestc" + Keyword="Win32Proj" + > + <Platforms> + <Platform + Name="Win32" + /> + <Platform + Name="x64" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="2" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Debug|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="2" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" + RuntimeLibrary="2" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="1" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" + RuntimeLibrary="2" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="1" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\comtest.c" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestf.vfproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestf.vfproj new file mode 100644 index 00000000000..dc894475f3d --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/comtest/comtestf.vfproj @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<VisualStudioProject ProjectCreator="Intel Fortran" Keyword="Console Application" Version="9.10" ProjectIdGuid="{861BC05F-1E95-401A-A80E-7589ADD1C79E}"> + <Platforms> + <Platform Name="Win32"/></Platforms> + <Configurations> + <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.exe;$(TargetPath)"> + <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/> + <Tool Name="VFPreBuildEventTool"/> + <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" AdditionalIncludeDirectories="$(TEC_360_2009)/Include" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" Traceback="true" BoundsCheck="true" RuntimeLibrary="rtMultiThreadedDebug" CompileOnly="true"/> + <Tool Name="VFPostBuildEventTool"/> + <Tool Name="VFCustomBuildTool"/> + <Tool Name="VFLinkerTool" OutputFile="$(OUTDIR)/comtestf.exe" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TEC_360_2009)/Bin" GenerateDebugInformation="true" ProgramDatabaseFile="$(OUTDIR)/comtestf.pdb" SubSystem="subSystemConsole" AdditionalDependencies="tecio.lib"/> + <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/> + <Tool Name="VFPreLinkEventTool"/></Configuration> + <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.exe;$(TargetPath)" MustRebuild="true"> + <Tool Name="VFMidlTool" SwitchesHaveChanged="true" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/> + <Tool Name="VFPreBuildEventTool"/> + <Tool Name="VFFortranCompilerTool" SwitchesHaveChanged="true" SuppressStartupBanner="true" AdditionalIncludeDirectories="$(TEC_360_2009)/Include" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreaded" CompileOnly="true"/> + <Tool Name="VFPostBuildEventTool"/> + <Tool Name="VFCustomBuildTool"/> + <Tool Name="VFLinkerTool" SwitchesHaveChanged="true" MustRebuild="true" OutputFile="$(OUTDIR)/comtestf.exe" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TEC_360_2009)/Bin" SubSystem="subSystemConsole" AdditionalDependencies="tecio.lib"/> + <Tool Name="VFResourceCompilerTool" SwitchesHaveChanged="true" ResourceOutputFileName="$(IntDir)/$(InputName).res"/> + <Tool Name="VFPreLinkEventTool"/></Configuration></Configurations> + <Files> + <File RelativePath="comtest.f90"/></Files> + <Globals/></VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/FaceNeighbors.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/FaceNeighbors.plt new file mode 100644 index 0000000000000000000000000000000000000000..6581f95bdce627599a21174508c20d3b7eabb0b7 GIT binary patch literal 756 zcmb`FO-=$q5Jnpm*DP6%feQ>5pveeJ!-5cWr^bMZpn-(2>`S=!44!}^aRYr{Pqk?l z#Eq4_`Rb>;t9oX-*VCI>S@s*QwlVSmPw)%{+?xM_E?^0d@CF;$LIES#gZ8iB9bQ4_ z$Sz<WJ?HLBC#EiZRQLEga}B9?Y4vZj7>1o!sPh_D&qcYWC9X0*UvsWs-xmFUzpqL? zHCrOhqh853^{4T1P{&C-Sv^n_PC3iRm@wA^wND7(!O4&3HVM+Zlz$1WEO#>R-*@nA r#o9i~?<38g5<S%okBVS8ET27(wMXj?;D-EpP=D`pcTin5neOrfQGZQ| literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/Makefile new file mode 100644 index 00000000000..cc8b9bf18e2 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=faceneighbors +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.cpp new file mode 100644 index 00000000000..30b949e3f8e --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.cpp @@ -0,0 +1,354 @@ +/* This example illustrates how to create two simple + * FE-quadilateral zones and create a face neighbor + * connection between the two zones. In order to keep the + * example as simple as possible, error checking is not included. + */ + +#include "TECIO.h" +#include "MASTER.h" + +int main() +{ + /* Initialize the Data File using TECINI. TECINI is required + * for all data files. It is used to: open the data file and + * initialize the file header information (name the data file, + * the variables for the data file, and the file type). + */ + + /* DOCSTART:faceneighbors_tecini.txt*/ + + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 0; + INTEGER4 I = 0; /* Used to track return codes */ + + I = TECINI112((char*)"Face Neighbors Example", /* Specifies the name + * of the entire + * dataset + */ + (char*)"X Y P", /* Defines the + * variables for the + * data file. Each + * zone must contain + * each of the vars + * listed. The order + * of the variables in + * the list is used to + * define the variable + * number (e.g. X is + * Var 1.) + */ + + (char*)"FaceNeighbors.plt", /* Specifies the + * file name. + */ + (char*)".", + &FileType, /* The FileType is set to + * zero, indicating it is + * a full file (containing + * both grid and solution + * data). + */ + &Debug, + &VIsDouble); + /* DOCEND */ + + /* After TECINI is called, call TECZNE to create one or + * more zones for your data file. + */ + /* DOCSTART:faceneighbors_teczne1.txt*/ + INTEGER4 ZoneType = 3; /* set the zone type to + * FEQuadrilateral + */ + INTEGER4 NumPts = 6; + INTEGER4 NumElems = 2; + INTEGER4 NumFaces = 8; + INTEGER4 ICellMax = 0; /* not used */ + INTEGER4 JCellMax = 0; /* not used */ + INTEGER4 KCellMax = 0; /* not used */ + double SolTime = 360.0; + INTEGER4 StrandID = 0; /* StaticZone */ + INTEGER4 ParentZn = 0; + INTEGER4 IsBlock = 1; /* Block */ + INTEGER4 NFConns = 1; /* Specify the number of Face + * Neighbor Connections in the + * Zone. When this value is + * greater than zero, TECFACE must + * be called prior to creating the + * next zone or ending the file. + */ + + /* Specify the Face Neighbor Mode. + * A value of 2 indicated that the face neighbor mode is global + * one-to-one. The scope of the face neighbors (local or + * global) is with respect to the zones. A value of global + * indicates that the face neighbor(s) is/are shared aross zones; + * a value of local indicates that the face neighbor(s) are + * shared within the current zone. The terms one-to-one and + * one-to-many are used to indicate whether the face in question + * is shared with one cell or several cells. + * For example, if your data is arranged as follows: + + ----------------------- + | | | | + | 1 | 2 | 3 | + | | | | + ----------------------- + | | | + | 4 | 5 | + | | | + ----------------------- + * The face between 1 & 4 is local-one-to-one. The face between + * 5 and (2 & 3) is local one-to-many. + */ + + INTEGER4 FNMode = 2; + + INTEGER4 TotalNumFaceNodes = 1; /* Not used for + * FEQuad zones*/ + INTEGER4 NumConnectedBoundaryFaces = 1; /* Not used for + * FEQuad zones*/ + INTEGER4 TotalNumBoundaryConnections = 1; /* Not used for + * FEQuad zones*/ + INTEGER4 ShrConn = 0; + + INTEGER4 ValueLocation[3] = {1, 1, 1}; /* Specify the variable + * values at the nodes. + * NOTE: Because all of + * the variables are + * defined at the nodes, + * we can just pass + * NULL for this array. + * We are providing the + * array for illustration + * purposes. + */ + + I = TECZNE112((char*)"Zone 1", + &ZoneType, + &NumPts, + &NumElems, + &NumFaces, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + &TotalNumFaceNodes, + &NumConnectedBoundaryFaces, + &TotalNumBoundaryConnections, + NULL, + ValueLocation, + NULL, + &ShrConn); + /* DOCEND */ + + /* Set up the variable values. The variable values will be + * written to the file using TECDAT. Because we are specifying + * nodal variables (as specified via the ValueLocation + * parameter in TECZNE, each variable is dimensioned by the + * number of points (NumPts) in the Zone. You have the option + * to specify some variables with nodal values and some with + * cell-centered values. Refer to the Binary Function + * Reference for details. + */ + + /* DOCSTART:faceneighbors_tecdat1.txt*/ + float *X = new float[NumPts]; + float *Y = new float[NumPts]; + float *P = new float[NumPts]; + + /* For this example, we will create 2 rectangular cells in Zone + * 1. Before defining your variables, you must establish a + * consistent node numbering scheme for your data. Once the + * node numbers are defined, supply the variable values in the + * node numbering order. In this example, node 1 is defined at + * X = 0 and Y = 0. As such, the first value supplied for X + * (i.e. X[0]) is 0. Similarly, the first value supplied for Y + * is 0. + * + * It is important that you refer to node numbers consistently. + * The node numbers will be used later to define the + * connectivity for each element. + */ + + X[0] = 0; + X[1] = 0; + X[2] = 1; + X[3] = 1; + X[4] = 2; + X[5] = 2; + + Y[0] = 0; + Y[1] = 1; + Y[2] = 0; + Y[3] = 1; + Y[4] = 0; + Y[5] = 1; + + for (INTEGER4 ii = 0; ii < NumPts; ii++) + P[ii] = (float)(NumPts - ii); + + INTEGER4 DIsDouble = 0; /* Set DIsDouble to zero to use + * variables in float format. + */ + + /* Call TECDAT once for each variable */ + I = TECDAT112(&NumPts, &X[0], &DIsDouble); + I = TECDAT112(&NumPts, &Y[0], &DIsDouble); + I = TECDAT112(&NumPts, &P[0], &DIsDouble); + /* DOCEND */ + + /* Define the face neighbors connections. + * The Connectivity List is used to specify the nodes that + * compose each element. When working with nodal variables, the + * numbering of the nodes is implicitly defined when the + * variables are declared. The first value of each variable is + * for node one, the second value for node two, and so on. + * + * Because this zone contains two quadilateral elements, we must + * supply 8 values in the connectivity list. The first four + * values define the nodes that form element 1. Similarly, the + * second four values define the nodes that form element 2. + */ + + /* DOCSTART:faceneighbors_tecnod1.txt*/ + INTEGER4 ConnList[8] = {1, 3, 4, 2, + 3, 5, 6, 4 + }; + I = TECNOD112(ConnList); + /* DOCEND */ + + /* TIP! It is important to provide the node list in either a + * clockwise or counter-clockwise order. Otherwise, your + * elements will be misformed. For example, if the first two + * numbers in the above connectivity list, the zone would + * appear as follows: + */ + + /* Now that TECNOD has been called, the creation of Zone 1 + * is complete. However, in this example, we will define a + * face neighbor between Zone 1 and Zone 2 (to be created + * later in the example). Face Neighbor connections are used + * to define connections that are not created via the + * connectivity list. For example, local face neighbors may + * need to be defined when a zone wraps itself and global face + * neighbors may need to be defined to smooth edges across + * zones. Face Neighbors are used when deriving variables and + * drawing contours. + * + * In this example, we are creating a face neighbor connection + * between cell 2 in Zone 1 and cell 1 in Zone 2. The + * information required when specifying face neighbors + * depends upon the type of connection. + * + * In this case, we must supply (in this order): + * - the cell number in the current zone that contains the + * - the number of the face in that cell that contains the + * face neighbor + * - the number of the other zone to which the face is + * connected + * - the number of the cell in the other zone to which the + * face is connected + * The face numbering for cell-based finite elements is + * defined using the picture displayed in the Data Format + * Guide. In this example, face 2 in cell 2 in the current + * zone is connected to cell 1 in zone 2. + */ + + /* DOCSTART:faceneighbors_tecface1.txt*/ + INTEGER4 FaceConn[4] = {2, 2, 2, 1}; + I = TECFACE112(FaceConn); + /* DOCEND */ + + /* The creation of Zone 1 is complete. We are ready to create + * Zone 2. For simplicity, Zone 2 is a copy of Zone 1 shifted + * along the X-axis. As such, many of the variables used to + * create Zone 1 are re-used here. + */ + /* DOCSTART:faceneighbors_teczne2.txt*/ + /* Call TECZNE to create Zone 2 */ + I = TECZNE112((char*)"Zone 2", + &ZoneType, + &NumPts, + &NumElems, + &NumFaces, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + &TotalNumFaceNodes, + &NumConnectedBoundaryFaces, + &TotalNumBoundaryConnections, + NULL, + ValueLocation, + NULL, + &ShrConn); + /* DOCEND */ + + /* Define the variables for Zone 2. Because Zone 2 is a copy + * of Zone 1, shifted along the X-axis, we can share the Y + * variable definition used to Zone. We will also create a + * second pressure variable for Zone 2 (P2). + */ + + /* DOCSTART:faceneighbors_tecdat2.txt*/ + float *X2 = new float[NumPts]; + float *P2 = new float[NumPts]; + + for (INTEGER4 ii = 0; ii < NumPts; ii++) + { + X2[ii] = X[ii] + 2; + P2[ii] = 2 * (float)ii; + } + + I = TECDAT112(&NumPts, &X2[0], &DIsDouble); + I = TECDAT112(&NumPts, &Y[0], &DIsDouble); + I = TECDAT112(&NumPts, &P2[0], &DIsDouble); + + delete X; + delete Y; + delete P; + delete X2; + delete P2; + /* DOCEND */ + + /* As with Zone 1, we must define the connectivity list for + * Zone 2. Because, the node numbering restarts at one for each + * new zone and the nodal arrangement is identical between the + * two zones, we may reuse the connectivity list from Zone 1. + */ + + /* DOCSTART:faceneighbors_tecnod2.txt*/ + I = TECNOD112(ConnList); + /* DOCEND */ + + /* We will now specify the face neighbor connection with + * respect to our new current zone of Zone 2. + */ + + /* DOCSTART:faceneighbors_tecface2.txt*/ + INTEGER4 FaceConn2[4] = {1, 4, 1, 2}; /* cell 1, face 4 in + * current zone is a + * neighbor to cell 2 in + * zone 1. + */ + I = TECFACE112(FaceConn2); + /* DOCEND */ + + /* Call TECEND to close the file */ + /* DOCSTART:faceneighbors_tecend.txt*/ + I = TECEND112(); + /* DOCEND */ + + return 0; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.vcproj new file mode 100644 index 00000000000..c3099ffedb9 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/faceneighbors/faceneighbors.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="faceneighbors" + ProjectGUID="{1074FD63-4831-4D1B-8A27-94A3AC33A509}" + RootNamespace="faceneighbors" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\faceneighbors.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/Makefile new file mode 100644 index 00000000000..d901ed95c19 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=gridsolution +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.cpp new file mode 100644 index 00000000000..8cf2e548949 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.cpp @@ -0,0 +1,376 @@ +/* This example illustrates using separate grid + * and solution files. + */ + +#include "TECIO.h" +#include "MASTER.h" /* for defintion of NULL */ + +int main() +{ + /* DOCSTART:gridsolution_grid_tecini.txt*/ + INTEGER4 I; /* use to check return values */ + + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 1; /* 1 = grid file. */ + + I = TECINI112((char*)"Example: Separate grid and solution files", + (char*)"X Y Z", /* Defines the variables for the data file. + * Each zone must contain each of the vars + * listed here. The order of the variables + * in the list is used to define the + * variable number (e.g. X is Variable 1). + * When referring to variables in other + * TecIO functions, you will refer to the + * variable by its number. + */ + (char*)"grid.plt", + (char*)".", /* scratch directory */ + &FileType, + &Debug, + &VIsDouble); + /* DOCEND */ + + /* DOCSTART:gridsolution_grid_teczne.txt*/ + /* TECZNE Parameters */ + INTEGER4 ZoneType = 7; /* FE Polyhedron */ + INTEGER4 NumPts = 20; /* the number of unique + * nodes in the zone. + */ + INTEGER4 NumElems = 1; + INTEGER4 NumFaces = 12; /* the number of unique + * faces in the zone. + */ + INTEGER4 ICellMax = 0; /* not used */ + INTEGER4 JCellMax = 0; /* not used */ + INTEGER4 KCellMax = 0; /* not used */ + double SolutionTime = 0.0; + INTEGER4 StrandID = 1; /* time strand for + * unsteady solution. + */ + INTEGER4 ParentZone = 0; + INTEGER4 IsBlock = 1; + INTEGER4 NumFaceConnections = 0; + INTEGER4 FaceNeighborMode = 1; + INTEGER4 SharConn = 0; + + /* For this zone, the total number of face nodes is + * five times number of faces, because each face + * is a pentagon. + */ + INTEGER4 TotalNumFaceNodes = 5 * NumFaces; + + /* This zone has no connected boundary faces. + */ + INTEGER4 TotalNumBndryFaces = 0; + INTEGER4 TotalNumBndryConns = 0; + + I = TECZNE112((char*)"Dodecahedron", /* Name of the zone. */ + &ZoneType, + &NumPts, + &NumElems, + &NumFaces, + &ICellMax, + &JCellMax, + &KCellMax, + &SolutionTime, + &StrandID, + &ParentZone, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + &TotalNumFaceNodes, + &TotalNumBndryFaces, + &TotalNumBndryConns, + NULL, + NULL, /* All nodal variables */ + NULL, + &SharConn); + /* DOCEND */ + + /* DOCSTART:gridsolution_grid_tecdat.txt*/ + + /* TECDAT Parameters */ + double Phi = 0.5 * (1.0 + sqrt(5.0)); + double Pi = 3.141592653578; + double *X = new double[NumPts]; + double *Y = new double[NumPts]; + double *Z = new double[NumPts]; + int Count = 0; + + for(int J = 0; J <= 4; J++) + { + X[Count] = 2.0 * cos(2.0 / 5.0 * Pi * J); + Y[Count] = 2.0 * sin(2.0 / 5.0 * Pi * J); + Z[Count] = Phi + 1.0; + Count++; + + X[Count] = -X[Count - 1]; + Y[Count] = -Y[Count - 1]; + Z[Count] = -Z[Count - 1]; + Count++; + + X[Count] = 2.0 * Phi * cos(2.0 / 5.0 * Pi * J); + Y[Count] = 2.0 * Phi * sin(2.0 / 5.0 * Pi * J); + Z[Count] = Phi - 1.0; + Count++; + + X[Count] = -X[Count - 1]; + Y[Count] = -Y[Count - 1]; + Z[Count] = -Z[Count - 1]; + Count++; + } + + INTEGER4 IsDouble = 1; + + I = TECDAT112(&NumPts, X, &IsDouble); + I = TECDAT112(&NumPts, Y, &IsDouble); + I = TECDAT112(&NumPts, Z, &IsDouble); + + delete X; + delete Y; + delete Z; + + /* DOCEND */ + + /* DOCSTART:gridsolution_grid_facenodes.txt*/ + /* TecPoly Parameters */ + + /* Create a FaceNodes array, dimensioned by the total number + * of face nodes in the zone. + */ + INTEGER4 *FaceNodes = new INTEGER4[TotalNumFaceNodes]; + int n = 0; + + /* Face Nodes for face 1 of the dodecahedron */ + FaceNodes[n++] = 2; + FaceNodes[n++] = 6; + FaceNodes[n++] = 10; + FaceNodes[n++] = 14; + FaceNodes[n++] = 18; + + /* Face Nodes for face 2 */ + FaceNodes[n++] = 6; + FaceNodes[n++] = 8; + FaceNodes[n++] = 19; + FaceNodes[n++] = 12; + FaceNodes[n++] = 10; + + /* Face Nodes for face 3 */ + FaceNodes[n++] = 3; + FaceNodes[n++] = 12; + FaceNodes[n++] = 10; + FaceNodes[n++] = 14; + FaceNodes[n++] = 16; + + /* Face Nodes for face 4 */ + FaceNodes[n++] = 7; + FaceNodes[n++] = 16; + FaceNodes[n++] = 14; + FaceNodes[n++] = 18; + FaceNodes[n++] = 20; + + /* Face Nodes for face 5 */ + FaceNodes[n++] = 2; + FaceNodes[n++] = 4; + FaceNodes[n++] = 11; + FaceNodes[n++] = 20; + FaceNodes[n++] = 18; + + /* Face Nodes for face 6 */ + FaceNodes[n++] = 2; + FaceNodes[n++] = 4; + FaceNodes[n++] = 15; + FaceNodes[n++] = 8; + FaceNodes[n++] = 6; + + /* Face Nodes for face 7 */ + FaceNodes[n++] = 1; + FaceNodes[n++] = 3; + FaceNodes[n++] = 12; + FaceNodes[n++] = 19; + FaceNodes[n++] = 17; + + /* Face Nodes for face 8 */ + FaceNodes[n++] = 1; + FaceNodes[n++] = 3; + FaceNodes[n++] = 16; + FaceNodes[n++] = 7; + FaceNodes[n++] = 5; + + /* Face Nodes for face 9 */ + FaceNodes[n++] = 5; + FaceNodes[n++] = 7; + FaceNodes[n++] = 20; + FaceNodes[n++] = 11; + FaceNodes[n++] = 9; + + /* Face Nodes for face 10 */ + FaceNodes[n++] = 4; + FaceNodes[n++] = 11; + FaceNodes[n++] = 9; + FaceNodes[n++] = 13; + FaceNodes[n++] = 15; + + /* Face Nodes for face 11 */ + FaceNodes[n++] = 8; + FaceNodes[n++] = 15; + FaceNodes[n++] = 13; + FaceNodes[n++] = 17; + FaceNodes[n++] = 19; + + /* Face Nodes for face 12 */ + FaceNodes[n++] = 1; + FaceNodes[n++] = 5; + FaceNodes[n++] = 9; + FaceNodes[n++] = 13; + FaceNodes[n++] = 17; + + /* DOCEND */ + + /* Specify the number of nodes for each face, and the right and + * left neighboring elements. The neighboring elements can be + * determined using the right-hand rule. For each face, curl + * the fingers of your right hand in the direction of + * incrementing node numbers (i.e. from Node 1 to Node 2 and + * so on). Your thumb will point toward the right element. + * A value of zero indicates that there is no + * neighboring element on that side. A negative value + * indicates that the neighboring element is in another zone. + * In that case, the number is a pointer into the + * FaceBndryConnectionElems and FaceBndryConnectionZones arrays. + */ + + /* DOCSTART:gridsolution_grid_tecpoly.txt*/ + INTEGER4 *FaceNodeCounts = new INTEGER4[NumFaces]; + INTEGER4 *FaceLeftElems = new INTEGER4[NumFaces]; + INTEGER4 *FaceRightElems = new INTEGER4[NumFaces]; + + /* For this particular zone, each face has the 5 nodes. */ + for(int J = 0; J < NumFaces; J++) + FaceNodeCounts[J] = 5; + + /* Set the right and left elements for each face. */ + FaceRightElems[0] = 1; + FaceRightElems[1] = 1; + FaceRightElems[2] = 0; + FaceRightElems[3] = 0; + FaceRightElems[4] = 0; + FaceRightElems[5] = 1; + FaceRightElems[6] = 1; + FaceRightElems[7] = 0; + FaceRightElems[8] = 0; + FaceRightElems[9] = 1; + FaceRightElems[10] = 1; + FaceRightElems[11] = 0; + + FaceLeftElems[0] = 0; + FaceLeftElems[1] = 0; + FaceLeftElems[2] = 1; + FaceLeftElems[3] = 1; + FaceLeftElems[4] = 1; + FaceLeftElems[5] = 0; + FaceLeftElems[6] = 0; + FaceLeftElems[7] = 1; + FaceLeftElems[8] = 1; + FaceLeftElems[9] = 0; + FaceLeftElems[10] = 0; + FaceLeftElems[11] = 1; + + I = TECPOLY112(FaceNodeCounts, + FaceNodes, + FaceLeftElems, + FaceRightElems, + NULL, /* No boundary connections. */ + NULL, + NULL); + + delete FaceNodes; + delete FaceLeftElems; + delete FaceRightElems; + + /* DOCEND */ + + + /* DOCSTART:gridsolution_grid_tecend.txt*/ + I = TECEND112(); + /* DOCEND */ + + /* DOCSTART:gridsolution_solution_tecini.txt*/ + for(int J = 0; J < 5; J++) + { + char SolutionFileName[128]; + sprintf(SolutionFileName, "solution%d.plt", J); + + /* DOCSTART:gridsolution_solution_tecini.txt*/ + FileType = 2; /* 1 = solution file. */ + + I = TECINI112((char*)"Example: Separate grid and solution files", + (char*)"P T", /* Defines the variables for the solution file. + * Note that these are different variables from + * the grid file. + */ + SolutionFileName, + (char*)".", /* scratch directory */ + &FileType, + &Debug, + &VIsDouble); + /* DOCEND */ + + /* DOCSTART:gridsolution_solution_teczne.txt*/ + /* TECZNE Parameters are mostly unchanged from creation of the grid file. */ + TotalNumFaceNodes = 0; + SolutionTime = J; + + char ZoneName[128]; + sprintf(ZoneName, "Dodecahedron Time=%g", SolutionTime); + I = TECZNE112(ZoneName, + &ZoneType, + &NumPts, + &NumElems, + &NumFaces, + &ICellMax, + &JCellMax, + &KCellMax, + &SolutionTime, + &StrandID, + &ParentZone, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + &TotalNumFaceNodes, + &TotalNumBndryFaces, + &TotalNumBndryConns, + NULL, + NULL, /* All nodal variables */ + NULL, + &SharConn); + /* DOCEND */ + + /* DOCSTART:gridsolution_solution_tecdat.txt*/ + + /* TECDAT Parameters */ + double *P = new double[NumPts]; + double *T = new double[NumPts]; + + for(int K = 0; K < NumPts; K++) + { + P[K] = (double)(K + J); + T[K] = 1.0 + K + K; + } + + I = TECDAT112(&NumPts, P, &IsDouble); + I = TECDAT112(&NumPts, T, &IsDouble); + + delete P; + delete T; + + /* DOCEND */ + + /* DOCSTART:gridsolution_solution_tecend.txt*/ + I = TECEND112(); + /* DOCEND */ + } + + return 0; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.vcproj new file mode 100644 index 00000000000..7e333fd2270 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/gridsolution/gridsolution.vcproj @@ -0,0 +1,321 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="gridsolution" + ProjectGUID="{D2747EA6-7807-42E1-984D-C946B3D97D95}" + RootNamespace="mulitplepolygons" + > + <Platforms> + <Platform + Name="Win32" + /> + <Platform + Name="x64" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Debug|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\gridsolution.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/Makefile new file mode 100644 index 00000000000..90411d11e22 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=ij_ordered +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.cpp new file mode 100644 index 00000000000..2f13c1f4a37 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.cpp @@ -0,0 +1,149 @@ +/* This example creates a simple set of IJ-ordered zones */ +/* DOCSTART:ij_ordered.txt*/ +#include "TECIO.h" +#include "MASTER.h" /* for defintion of NULL */ + +int main() +{ + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 0; + INTEGER4 I = 0; /* Used to track return codes */ + + /* + * Open the file and write the tecplot datafile + * header information + */ + I = TECINI112((char*)"IJ Ordered Zones", /* Name of the entire + * dataset. + */ + (char*)"X Y P", /* Defines the variables for the data + * file. Each zone must contain each of + * the variables listed here. The order + * of the variables in the list is used + * to define the variable number (e.g. + * X is Var 1). + */ + (char*)"ij_ordered.plt", + (char*)".", /* Scratch Directory */ + &FileType, + &Debug, + &VIsDouble); + + float X1[4]; + float Y1[4]; + float P1[4]; + float X2[4]; + float Y2[4]; + float P2[4]; + + INTEGER4 ICellMax = 0; + INTEGER4 JCellMax = 0; + INTEGER4 KCellMax = 0; + INTEGER4 DIsDouble = 0; + double SolTime = 360.0; + INTEGER4 StrandID = 0; /* StaticZone */ + INTEGER4 ParentZn = 0; + INTEGER4 IsBlock = 1; /* Block */ + INTEGER4 NFConns = 0; + INTEGER4 FNMode = 0; + INTEGER4 TotalNumFaceNodes = 1; + INTEGER4 TotalNumBndryFaces = 1; + INTEGER4 TotalNumBndryConnections = 1; + INTEGER4 ShrConn = 0; + + /*Ordered Zone Parameters*/ + INTEGER4 IMax = 2; + INTEGER4 JMax = 2; + INTEGER4 KMax = 1; + + X1[0] = .125; + Y1[0] = .5; + P1[0] = 5; + + X1[1] = .625; + Y1[1] = .5; + P1[1] = 7.5; + + X1[2] = .125; + Y1[2] = .875; + P1[2] = 10; + + X1[3] = .625; + Y1[3] = .875; + P1[3] = 7.5; + + X2[0] = .375; + Y2[0] = .125; + P2[0] = 5; + + X2[1] = .875; + Y2[1] = .125; + P2[1] = 7.5; + + X2[2] = .375; + Y2[2] = .5; + P2[2] = 10; + + X2[3] = .875; + Y2[3] = .5; + P2[3] = 7.5; + + /* Ordered Zone */ + INTEGER4 ZoneType = 0; + I = TECZNE112((char*)"Ordered Zone", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + &TotalNumFaceNodes, + &TotalNumBndryFaces, + &TotalNumBndryConnections, + NULL, + NULL, + NULL, + &ShrConn); + INTEGER4 III = IMax * JMax * KMax; + I = TECDAT112(&III, X1, &DIsDouble); + I = TECDAT112(&III, Y1, &DIsDouble); + I = TECDAT112(&III, P1, &DIsDouble); + + I = TECZNE112((char*)"Ordered Zone2", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + &TotalNumFaceNodes, + &TotalNumBndryFaces, + &TotalNumBndryConnections, + NULL, + NULL, + NULL, + &ShrConn); + + I = TECDAT112(&III, X2, &DIsDouble); + I = TECDAT112(&III, Y2, &DIsDouble); + I = TECDAT112(&III, P2, &DIsDouble); + + I = TECEND112(); + return 0; +} +/* DOCEND */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.plt new file mode 100644 index 0000000000000000000000000000000000000000..81f210b6c2d7abc0e87795395027da100999e7af GIT binary patch literal 584 zcmY#Z3~>oFG&EvlfB;V*<psnFK<p31ML?Va#Hmm=hz9W$fH(?>^MN=Ih(Y4TKnw!R zKpX*PF)&0z=>RCr&@k1RRC7UE|3d-Tn1(V35Eo`7jAjBdKp5s1a_lmK8b+Rdo18&* zg6xN3sBvKTL)ZuGA@ma{{Qye8fzl!l5P204Z3hf#kT{G6v4J=NiWdOYd;nqvM=(v$ k?i(QeKmfDr0F?g#N+a8S0B9%39vBUB0~mwU0x_!H0FdibfB*mh literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.vcproj new file mode 100644 index 00000000000..94c67c6c071 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/ij_ordered/ij_ordered.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="ij_ordered" + ProjectGUID="{47556A00-C441-4B9A-8920-91CA63AC1595}" + RootNamespace="ij_ordered" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\ij_ordered.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/Makefile new file mode 100644 index 00000000000..d55d2ee0440 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=multiplefiles +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/file1.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/file1.plt new file mode 100644 index 0000000000000000000000000000000000000000..b0c368e03f3ff83c0a739471d901361b130eb257 GIT binary patch literal 448 zcmXxgO=<!`5QgE7ULgk<iEGJZrJFe7NDvYtD56;zP(knq#O&u1*?WeZV2+Z7OBdci z-_Ncpc=)Qihwhnqs*Un-n!Y@QSVN+Z4-D{*9unl}U}ULhwWnEC#RRDaY6|almiM9f z?S3-vF~`DsrRD@**kKE;tFBgYinI5g6&msH3FTX^_tqIp=uF+a!8Z<A!S5Q|`kMTK z-%T5y(Lf7L+^hKO>U(sbvz`0<#=dOFJX!u*o-H4<xL;Sk@&~l;sU9<P;hCfp!jZgW EH(XLQHvj+t literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/file2.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/file2.plt new file mode 100644 index 0000000000000000000000000000000000000000..8a36da392bfd89d1328b3cf5bec0e5bfbb1fbd0d GIT binary patch literal 356 zcmYj~K@I^y5Jh{qf&+|jft~|kGP7qPf)xo1iI4~hySaqDGdRH<!_omP+<;fADpASH z`@g!=-D!`@NsL(%baHfpGi+dMUg85>AcYcScQm8WgegQR%nUq_{&J|U#gH!Vtzd0g zEIoxe>|qD8&p_s5qfNVKcY`1#zNqen{3+e>BY95qqpyCMYxC3G8t8c!*S!!H?A?L> NL+-+jJ8wvH@fYTVE^Yt- literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.cpp new file mode 100644 index 00000000000..b79085ff561 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.cpp @@ -0,0 +1,214 @@ +/* This example illustrates working with TecFil to create multiple + * plt files simultaneously. + */ +#if defined _MSC_VER +#pragma warning (disable: 4996) /* Windows strcpy warning off */ +#endif +/* DOCSTART:mulitplefiles.txt */ +#include "TECIO.h" +#include "MASTER.h" /* for defintion of NULL */ +#include <string.h> + +int main() +{ + /* + * Open the file and write the tecplot datafile + * header information + */ + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 0; + INTEGER4 I = 0; /* Used to check the return value */ + + I = TECINI112((char*)"SIMPLE DATASET", /* Name of the entire dataset.*/ + + (char*)"X1 Y1 P1", /* Defines the variables for the data + * file. Each zone must contain each of + * the variables listed here. The order + * of the variables in the list is used + * to define the variable number (e.g. + * X1 is Var 1). + */ + (char*)"file1.plt", + (char*)".", /* Scratch Directory */ + &FileType, + &Debug, + &VIsDouble); + + /* Set the parameters for TecZne */ + INTEGER4 ZoneType = 0; /* sets the zone type to + * ordered + */ + INTEGER4 IMax = 2; /* Create an IJ-ordered zone, + * by using IMax and JMax + * values that are greater + * than one, and setting KMax + * to one. + */ + INTEGER4 JMax = 2; + INTEGER4 KMax = 1; + + double SolTime = 0; + INTEGER4 StrandID = 0; /* StaticZone */ + INTEGER4 ParentZn = 0; /* used for surface streams */ + + INTEGER4 ICellMax = 0; /* not used */ + INTEGER4 JCellMax = 0; /* not used */ + INTEGER4 KCellMax = 0; /* not used */ + + INTEGER4 IsBlock = 1; /* Block */ + + INTEGER4 NFConns = 0; /* this example does not use + * face neighbors */ + INTEGER4 FNMode = 0; + INTEGER4 TotalNumFaceNodes = 1; + INTEGER4 TotalNumBndryFaces = 1; + INTEGER4 TotalNumBndryConn = 1; + INTEGER4 ShrConn = 0; + + + /* Create an Ordered Zone */ + I = TECZNE112((char*)"Ordered Zone", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + &TotalNumFaceNodes, + &TotalNumBndryFaces, + &TotalNumBndryConn, + NULL, + NULL, + NULL, + &ShrConn); + + /* Set the variable values for the ordered zone. */ + float X1[4]; + float Y1[4]; + float P1[4]; + + X1[0] = 0.125; + Y1[0] = 0.5; + P1[0] = 7.5; + + X1[1] = 0.625; + Y1[1] = 0.5; + P1[1] = 10.0; + + X1[2] = 0.125; + Y1[2] = 0.875; + P1[2] = 5.0; + + X1[3] = 0.625; + Y1[3] = 0.875; + P1[3] = 7.5; + + INTEGER4 DIsDouble = 0; /* set DIsDouble to 0, for float + * values. + */ + + INTEGER4 III = IMax * JMax * KMax; + I = TECDAT112(&III, X1, &DIsDouble); + I = TECDAT112(&III, Y1, &DIsDouble); + I = TECDAT112(&III, P1, &DIsDouble); + + /* Open a new data file. note: the first file is still open + * because TecEnd was not called. + */ + I = TECINI112((char*)"Auxiliary Data", + (char*)"X1 Y1 P1", + (char*)"file2.plt", + (char*)".", + &FileType, + &Debug, + &VIsDouble); + + /* Switch the active file to the newly created data file + * (file2.plt) which is the second file opened with TECINI112 + * so we use 2. + */ + INTEGER4 WhichFile = 2; + I = TECFIL112(&WhichFile); + + /* Create a second zone, using many of the values from the first + * zone, and write it to the second data file. + */ + + I = TECZNE112((char*)"Ordered Zone2", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + &TotalNumFaceNodes, + &TotalNumBndryFaces, + &TotalNumBndryConn, + NULL, + NULL, + NULL, + &ShrConn); + /* set the variable values for the second zone */ + float X2[4]; + float Y2[4]; + float P2[4]; + + X2[0] = 0.375; + Y2[0] = 0.125; + P2[0] = 5; + + X2[1] = 0.875; + Y2[1] = 0.125; + P2[1] = 7.5; + + X2[2] = 0.375; + Y2[2] = 0.5; + P2[2] = 10; + + Y2[3] = 0.5; + X2[3] = 0.875; + P2[3] = 7.5; + + III = IMax * JMax * KMax; + I = TECDAT112(&III, X2, &DIsDouble); + I = TECDAT112(&III, Y2, &DIsDouble); + I = TECDAT112(&III, P2, &DIsDouble); + + /* Switch to the first file. */ + WhichFile = 1; + I = TECFIL112(&WhichFile); + + /* Create an auxiliary data value and write it to the file */ + char DeformationValue[128]; + strcpy(DeformationValue, "0.98"); + + I = TECAUXSTR112((char*)"DeformationValue", + DeformationValue); + /* Close the first file */ + I = TECEND112(); + + /* The remaining file will become the active file. As such, + * TecFil does not need to be called again to close the second + * file. + */ + I = TECEND112(); + + return 0; +} + +/* DOCEND */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.vcproj new file mode 100644 index 00000000000..84651a69d03 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplefiles/multiplefiles.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="multiplefiles" + ProjectGUID="{93CB23B2-530F-4D6F-900F-893815299C7F}" + RootNamespace="multiplefiles" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\multiplefiles.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/HexagonsAndOctagon.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/HexagonsAndOctagon.plt new file mode 100644 index 0000000000000000000000000000000000000000..3b4f3042c69b7ea023e8de723b7e40c5b7f6eaf2 GIT binary patch literal 1480 zcmb7?OG*Pl5QaPP{X!QmL_|hBLE_GhBT;Z8x)4!!K}7^#pn|%ZOSqpic!C_ogZTRX znJQ@}iI{?q`v2~(eoW2k%E8uQqtUE|GPX%i(1vTcgDW_Pbx2?r9zo*|a0&6c#QZH; zYo6f(<ZnQGYdnD$@Nu1S4~ii;DpUx^miH}(?6q}*j_VS91N@F_XpQZF_VqW#_wcj6 zEm&5B>?o>cUMbcy_*qznVbEPgSM<4OlZAdy-8q53?y31U=-Zt^0$#U=J_YqbYvT7| z!=P`Qrbh2u1b<r{-4)qeOMR#@;rJSz>AKAGsd>u_6|ebhgEiz-b5M9>hR)?7g&?i9 zL?<oD$(bSTK1GXQxX$po#(wW!M+@(z-Y!NAQZcXpLW~*XWHDi=UV74)A`5+2p*_7P z`ffVYz2`5)Cush|2Q4$yGrR|${XKE^LO<94S+9xnKYE*%`z=}a-RI1Ej}v?j9eB4a zpFs+-4tS9nsd<e_3-5g({GSP%<^F^9Q+-r_)suextoBhgm6jBJ@}5=a<kdsUdPe-s PtJ(`RUI+EdwR{{uh9t`s literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/Makefile new file mode 100644 index 00000000000..d11ec5afd65 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=multiplepolygons +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.cpp new file mode 100644 index 00000000000..25632634f98 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.cpp @@ -0,0 +1,569 @@ +/* This example illustrates using TecPoly to create two polygonal + * zones. The first zone contains six hexagons, and the second + * zone contains a hexagon and an octagon. Refer to the Data + * Format Guide for a picture of the configuration, including node + * and face numbers. + */ + +#include "TECIO.h" +#include "MASTER.h" /* for defintion of NULL */ + +int main() +{ + /* DOCSTART:hexagons_tecini.txt*/ + INTEGER4 I; /* use to check return values */ + + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 0; + + I = TECINI112((char*)"Example: Multiple polygonal zones", + (char*)"X Y P", /* Defines the variables for the data file. + * Each zone must contain each of the vars + * listed here. The order of the variables + * in the list is used to define the + * variable number (e.g. X is Variable 1). + * When referring to variables in other + * TecIO functions, you will refer to the + * variable by its number. + */ + (char*)"HexagonsAndOctagon.plt", + (char*)".", /* scratch directory */ + &FileType, + &Debug, + &VIsDouble); + /* DOCEND */ + + /* DOCSTART:hexagons_zone1_teczne.txt*/ + /* TECZNE Parameters */ + INTEGER4 ZoneType = 6; /* FE Polygon */ + INTEGER4 NumPts_Z1 = 13; /* the number of unique + * nodes in the zone. + */ + INTEGER4 NumElems_Z1 = 3; + INTEGER4 NumFaces_Z1 = 15; /* the number of unique + * faces in the zone. + */ + INTEGER4 ICellMax = 0; /* not used */ + INTEGER4 JCellMax = 0; /* not used */ + INTEGER4 KCellMax = 0; /* not used */ + double SolutionTime = 0.0; + INTEGER4 StrandID = 0; + INTEGER4 ParentZone = 0; + INTEGER4 IsBlock = 1; + INTEGER4 NumFaceConnections = 0; + INTEGER4 FaceNeighborMode = 1; + INTEGER4 SharConn = 0; + + INTEGER4 ValueLocation[3] = { 1, 1, 0 }; + + /* For a polygonal zone, the total number of face nodes is + * twice the total number of faces. This is because each face + * is composed of exactly two nodes. + */ + INTEGER4 TotalNumFaceNodes_Z1 = 2 * NumFaces_Z1; + + /* A boundary face is a face that is neighbored by an element + * or elements in another zone or zone(s). In Zone 1, Face 9, + * Face 10 and Face 12 have a neighbor in Zone 2. Therefore, + * the total number of boundary faces is “3”. + */ + INTEGER4 TotalNumBndryFaces_Z1 = 3; + + /* Each boundary face has one or more boundary connections. A + * boundary connection is defined as another element in another + * zone. Face 9 has a boundary connection with Element 1 in + * Zone 2. In this example, each boundary face is connected to + * one other element, so the total number of boundary + * connections is equivalent to the total number of boundary + * faces (3). + */ + INTEGER4 TotalNumBndryConns_Z1 = 3; + + I = TECZNE112((char*)"Zone 1: 3 Hexagons", /* Specifies the name of + * the entire dataset. When + * the file is loaded into + * Tecplot, the value is + * available via the Data + * Set Info dialog. + */ + &ZoneType, + &NumPts_Z1, + &NumElems_Z1, + &NumFaces_Z1, + &ICellMax, + &JCellMax, + &KCellMax, + &SolutionTime, + &StrandID, + &ParentZone, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + &TotalNumFaceNodes_Z1, + &TotalNumBndryFaces_Z1, + &TotalNumBndryConns_Z1, + NULL, + ValueLocation, + NULL, + &SharConn); + /* DOCEND */ + + /* DOCSTART:hexagons_zone1_tecdat.txt*/ + + /* TECDAT Parameters */ + double *X_Z1 = new double[NumPts_Z1]; + double *Y_Z1 = new double[NumPts_Z1]; + + X_Z1[0] = 1; + Y_Z1[0] = 6; + + X_Z1[1] = 2; + Y_Z1[1] = 6; + + X_Z1[2] = 3; + Y_Z1[2] = 5; + + X_Z1[3] = 2; + Y_Z1[3] = 4; + + X_Z1[4] = 1; + Y_Z1[4] = 4; + + X_Z1[5] = 0; + Y_Z1[5] = 5; + + X_Z1[6] = 4; + Y_Z1[6] = 5; + + X_Z1[7] = 5; + Y_Z1[7] = 4; + + X_Z1[8] = 4; + Y_Z1[8] = 3; + + X_Z1[9] = 3; + Y_Z1[9] = 3; + + X_Z1[10] = 2; + Y_Z1[10] = 2; + + X_Z1[11] = 1; + Y_Z1[11] = 2; + + X_Z1[12] = 0; + Y_Z1[12] = 3; + + + double *P_Z1 = new double[NumElems_Z1]; + P_Z1[0] = 2; + P_Z1[1] = 4; + P_Z1[2] = 5; + + + INTEGER4 IsDouble = 1; + I = TECDAT112(&NumPts_Z1, X_Z1, &IsDouble); + I = TECDAT112(&NumPts_Z1, Y_Z1, &IsDouble); + I = TECDAT112(&NumElems_Z1, P_Z1, &IsDouble); + delete X_Z1; + delete Y_Z1; + delete P_Z1; + /* DOCEND */ + + /* DOCSTART:hexagons_zone1_facenodes.txt*/ + /* TecPoly Parameters */ + + /* Create a FaceNodes array, dimensioned by the total number + * of face nodes in the zone. + */ + INTEGER4 *FaceNodes_Z1 = new INTEGER4[TotalNumFaceNodes_Z1]; + + /* Face Nodes for Element 1 */ + FaceNodes_Z1[0] = 1; + FaceNodes_Z1[1] = 2; + + FaceNodes_Z1[2] = 2; + FaceNodes_Z1[3] = 3; + + FaceNodes_Z1[4] = 3; + FaceNodes_Z1[5] = 4; + + FaceNodes_Z1[6] = 4; + FaceNodes_Z1[7] = 5; + + FaceNodes_Z1[8] = 5; + FaceNodes_Z1[9] = 6; + + FaceNodes_Z1[10] = 6; + FaceNodes_Z1[11] = 1; + + /* Face Nodes for Element 2 */ + FaceNodes_Z1[12] = 3; + FaceNodes_Z1[13] = 7; + + FaceNodes_Z1[14] = 7; + FaceNodes_Z1[15] = 8; + + FaceNodes_Z1[16] = 8; + FaceNodes_Z1[17] = 9; + + FaceNodes_Z1[18] = 9; + FaceNodes_Z1[19] = 10; + + FaceNodes_Z1[20] = 10; + FaceNodes_Z1[21] = 4; + + /* Face Nodes for Element 3 */ + FaceNodes_Z1[22] = 10; + FaceNodes_Z1[23] = 11; + + FaceNodes_Z1[24] = 11; + FaceNodes_Z1[25] = 12; + + FaceNodes_Z1[26] = 12; + FaceNodes_Z1[27] = 13; + + FaceNodes_Z1[28] = 13; + FaceNodes_Z1[29] = 5; + + /* DOCEND */ + + /* Specify the right and left neighboring elements. + * The neighboring elements can be determined using the + * right-hand rule. For each face, place your right-hand along + * the face with your fingers pointing the direction of + * incrementing node numbers (i.e. from Node 1 to Node 2). The + * right side of your hand will indicate the right element, + * and the left side of your hand will indicate the left + * element. A value of zero indicates that there is no + * neighboring element on that side. A negative value + * indicates that the neighboring element is in another zone. + * The number is a pointer into the FaceBndryConnectionElems + * and FaceBndryConnectionZones arrays. + */ + + /* DOCSTART:hexagons_zone1_neighbors.txt*/ + INTEGER4 *FaceLeftElems_Z1 = new INTEGER4[NumFaces_Z1]; + INTEGER4 *FaceRightElems_Z1 = new INTEGER4[NumFaces_Z1]; + + /* Left Face Elems for Element 1 */ + FaceLeftElems_Z1[0] = 0; + FaceLeftElems_Z1[1] = 0; + FaceLeftElems_Z1[2] = 2; + FaceLeftElems_Z1[3] = 3; + FaceLeftElems_Z1[4] = 0; + + /* Left Face Elems for Element 2 */ + FaceLeftElems_Z1[5] = 0; + FaceLeftElems_Z1[6] = 0; + FaceLeftElems_Z1[7] = 0; + FaceLeftElems_Z1[8] = -1; + FaceLeftElems_Z1[9] = -2; + FaceLeftElems_Z1[10] = 2; + + /* Left Face Elems for Element 3 */ + FaceLeftElems_Z1[11] = -3; + FaceLeftElems_Z1[12] = 0; + FaceLeftElems_Z1[13] = 0; + FaceLeftElems_Z1[14] = 0; + + /* Set Right Face Elems. Because of the way we numbered the + * nodes and faces, the right element for every face is the + * element itself. + */ + for (INTEGER4 ii = 0; ii < 6; ii++) + FaceRightElems_Z1[ii] = 1; + + for (INTEGER4 ii = 6; ii < 10; ii++) + FaceRightElems_Z1[ii] = 2; + + for (INTEGER4 ii = 10; ii <= 14; ii++) + FaceRightElems_Z1[ii] = 3; + /* DOCEND */ + + /* DOCSTART:hexagons_zone1_tecpoly.txt */ + + /* The FaceBndryConnectionCounts array is used to define the + * number of boundary connections for each face that has a + * boundary connection. For example, if a zone has three + * boundary connections in total (NumConnectedBoundaryFaces), + * two of those boundary connections are in one face, and the + * remaining boundary connection is in a second face, the + * FaceBndryConnectionCounts array would be: [2 1]. + * + * In this example, the total number of connected boundary + * faces (specified via TECZNE) is equal to three. Each + * boundary face is connected to only one other element, + * so the FaceBoundaryConnectionCounts array is (1, 1, 1). + */ + INTEGER4 FaceBndryConnectionCounts_Z1[3] = {1, 1, 1}; + + /* The value(s) in the FaceBndryConnectionElems and + * FaceBndryConnectionZones arrays specifies the element number + * and zone number, respectively, that a given boundary + * connection is connected to. In this case, the first + * boundary connection face is connected to Element 1 in Zone 2 + * and the remaining connection is to Element 2 in Zone 2. + */ + INTEGER4 FaceBndryConnectionElems_Z1[3] = {1, 2, 2}; + INTEGER4 FaceBndryConnectionZones_Z1[3] = {2, 2, 2}; + + + I = TECPOLY112(NULL, /* Not used for polygon zones */ + FaceNodes_Z1, + FaceLeftElems_Z1, + FaceRightElems_Z1, + FaceBndryConnectionCounts_Z1, + FaceBndryConnectionElems_Z1, + FaceBndryConnectionZones_Z1); + + delete FaceNodes_Z1; + delete FaceLeftElems_Z1; + delete FaceRightElems_Z1; + + /* DOCEND */ + + /* Define Zone 2. Zone 2 contains an octagon and a hexagon. */ + /* TECZNE Parameters */ + /* DOCSTART:hexagons_zone2_teczne.txt*/ + INTEGER4 NumPts_Z2 = 12; /* number of unique + * nodes in the zone + */ + INTEGER4 NumElems_Z2 = 2; + INTEGER4 NumFaces_Z2 = 13; /* number of unique + * faces in the zone + */ + INTEGER4 NumFaceConnections_Z2 = 0; + /* In polygonal zones, each face has exactly two nodes */ + INTEGER4 TotalNumFaceNodes_Z2 = NumFaces_Z2 * 2; + + /* A boundary face is a face that is neighbored by an element or + * elements from another zone or zone(s). In Zone 2, Face 6, + * Face 7 and Face 13 have a neighbor in Zone 1. Therefore, the + * total number of boundary faces is “3”. + */ + INTEGER4 TotalNumBndryFaces_Z2 = 3; + + /* Each boundary face has one or more boundary connections. In + * this example, each boundary face is connected to one other + * element (i.e. the number of boundary faces and the number of + * boundary connections is one-to-one). + */ + INTEGER4 TotalNumBndryConns_Z2 = 3; + + I = TECZNE112((char*)"Zone 2: 1 Hexagon and 1 Octagon", + &ZoneType, + &NumPts_Z2, + &NumElems_Z2, + &NumFaces_Z2, + &ICellMax, + &JCellMax, + &KCellMax, + &SolutionTime, + &StrandID, + &ParentZone, + &IsBlock, + &NumFaceConnections_Z2, + &FaceNeighborMode, + &TotalNumFaceNodes_Z2, + &TotalNumBndryFaces_Z2, + &TotalNumBndryConns_Z2, + NULL, + ValueLocation, + NULL, + &SharConn); + /* DOCEND */ + + /* TECDAT Parameters */ + /* DOCSTART:hexagons_zone2_tecdat.txt*/ + double *X_Z2 = new double[NumPts_Z2]; + double *Y_Z2 = new double[NumPts_Z2]; + + X_Z2[0] = 5; + Y_Z2[0] = 4; + + X_Z2[1] = 6; + Y_Z2[1] = 4; + + X_Z2[2] = 7; + Y_Z2[2] = 3; + + X_Z2[3] = 6; + Y_Z2[3] = 2; + + X_Z2[4] = 5; + Y_Z2[4] = 2; + + X_Z2[5] = 4; + Y_Z2[5] = 3; + + + X_Z2[6] = 3; + Y_Z2[6] = 3; + + X_Z2[7] = 5; + Y_Z2[7] = 1; + + X_Z2[8] = 4; + Y_Z2[8] = 0; + + X_Z2[9] = 3; + Y_Z2[9] = 0; + + X_Z2[10] = 2; + Y_Z2[10] = 1; + + X_Z2[11] = 2; + Y_Z2[11] = 2; + + /* In the call to TecZne, P was set to a cell centered variable. + * As such, only two values need to be defined. + */ + double *P_Z2 = new double[NumPts_Z2]; + + P_Z2[0] = 8; + P_Z2[1] = 6; + + I = TECDAT112(&NumPts_Z2, X_Z2, &IsDouble); + I = TECDAT112(&NumPts_Z2, Y_Z2, &IsDouble); + I = TECDAT112(&NumElems_Z2, P_Z2, &IsDouble); + + delete X_Z2; + delete Y_Z2; + delete P_Z2; + /* DOCEND */ + + /* TecPoly Parameters */ + /* DOCSTART:hexagons_zone2_facemap.txt*/ + INTEGER4 *FaceNodes_Z2; + FaceNodes_Z2 = new INTEGER4[TotalNumFaceNodes_Z2]; + + /* Face Nodes for Element 1 */ + FaceNodes_Z2[0] = 1; + FaceNodes_Z2[1] = 2; + + FaceNodes_Z2[2] = 2; + FaceNodes_Z2[3] = 3; + + FaceNodes_Z2[4] = 3; + FaceNodes_Z2[5] = 4; + + FaceNodes_Z2[6] = 4; + FaceNodes_Z2[7] = 5; + + FaceNodes_Z2[8] = 5; + FaceNodes_Z2[9] = 6; + + FaceNodes_Z2[10] = 6; + FaceNodes_Z2[11] = 1; + + + /* Face Nodes for Element 2 */ + FaceNodes_Z2[12] = 7; + FaceNodes_Z2[13] = 6; + + FaceNodes_Z2[14] = 5; + FaceNodes_Z2[15] = 8; + + FaceNodes_Z2[16] = 8; + FaceNodes_Z2[17] = 9; + + FaceNodes_Z2[18] = 9; + FaceNodes_Z2[19] = 10; + + FaceNodes_Z2[20] = 10; + FaceNodes_Z2[21] = 11; + + FaceNodes_Z2[22] = 11; + FaceNodes_Z2[23] = 12; + + FaceNodes_Z2[24] = 12; + FaceNodes_Z2[25] = 7; + /* DOCEND */ + + + /* DOCSTART:hexagons_zone2_tecpoly.txt*/ + /* Specify the right and left neighboring elements. + * The neighboring elements can be determined using the + * right-hand rule. For each face, place your right-hand along + * the face with your fingers pointing the direction of + * incrementing node numbers (i.e. from Node 1 to Node 2). The + * right side of your hand will indicate the right element, + * and the left side of your hand will indicate the left + * element. A value of zero indicates that there is no + * neighboring element on that side. A negative value + * indicates that the neighboring element is in another zone. + * The number is a pointer into the FaceBndryConnectionElems + * and FaceBndryConnectionZones arrays. + */ + + INTEGER4 *FaceLeftElems_Z2 = new INTEGER4[NumFaces_Z2]; + INTEGER4 *FaceRightElems_Z2 = new INTEGER4[NumFaces_Z2]; + + /* Left Face Elems for Element 1 */ + FaceLeftElems_Z2[0] = 0; + FaceLeftElems_Z2[1] = 0; + FaceLeftElems_Z2[2] = 0; + FaceLeftElems_Z2[3] = 0; + FaceLeftElems_Z2[4] = 2; + FaceLeftElems_Z2[5] = -1; + + /* Left Face Elems for Element 2 */ + FaceLeftElems_Z2[6] = -2; + FaceLeftElems_Z2[7] = 0; + FaceLeftElems_Z2[8] = 0; + FaceLeftElems_Z2[9] = 0; + FaceLeftElems_Z2[10] = 0; + FaceLeftElems_Z2[11] = 0; + FaceLeftElems_Z2[12] = -3; + + /* Set Right Face Elems. Because of the way we numbered the + * nodes and faces, the right element for every face is the + * element itself. */ + for (INTEGER4 ii = 0; ii < 6; ii++) + FaceRightElems_Z2[ii] = 1; + + for (INTEGER4 ii = 6; ii < 13; ii++) + FaceRightElems_Z2[ii] = 2; + /* DOCEND */ + + /* DOCSTART:hexagons_zone2_tecpoly.txt*/ + /* The FaceBndryConnectionCounts array is used to define the + * number of boundary connections for each face that has a + * boundary connection. In this example, the total number of + * connected boundary faces (specified via TECZNE) is equal to + * three. Each boundary face is connected to only one other + * element, so the FaceBoundaryConnectionCounts array is + * (1, 1, 1). + */ + INTEGER4 FaceBndryConnectionCounts_Z2[3] = {1, 1, 1}; + + /* The value(s) in the FaceBndryConnectionElems and + * FaceBndryConnectionZones arrays specifies that element + * number and zone number, respectively, that a given boundary + * connection is connected to. In this case, the first boundary + * connection face is connected to Element 2 in Zone 1 and the + * remaining connections are Element 3 in Zone 1. + */ + INTEGER4 FaceBndryConnectionElems_Z2[3] = {2, 3, 3}; + INTEGER4 FaceBndryConnectionZones_Z2[3] = {1, 1, 1}; + + I = TECPOLY112(NULL, + FaceNodes_Z2, + FaceLeftElems_Z2, + FaceRightElems_Z2, + FaceBndryConnectionCounts_Z2, + FaceBndryConnectionElems_Z2, + FaceBndryConnectionZones_Z2); + + delete FaceNodes_Z2; + delete FaceLeftElems_Z2; + delete FaceRightElems_Z2; + /* DOCEND */ + + /* DOCSTART:hexagons_tecend.txt*/ + I = TECEND112(); + /* DOCEND */ + + return 0; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.vcproj new file mode 100644 index 00000000000..da0df3a5c35 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/multiplepolygons/multiplepolygons.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="multiplepolygons" + ProjectGUID="{D2747EA6-7807-42E1-984D-C946B3D97D95}" + RootNamespace="mulitplepolygons" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\multiplepolygons.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/Makefile new file mode 100644 index 00000000000..b1a06151656 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=octagon +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/Octagon.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/Octagon.plt new file mode 100644 index 0000000000000000000000000000000000000000..e09f4f79b80a9b520bcfb359211fa932e5f2e8c0 GIT binary patch literal 520 zcmY#Z3~>oFG&EvlfB=6Wl?=osK%5A~=|G$h#Cbpr0?a@h0cJ5UL_+BRD9z9?)fu0D zka;;ktN_GOKnycC703pG|4;ztG?Y1jxNKk!g5Ur$L0AAG!~k<Uk`Mz!!zO2tdq8q9 z43h_$3u8m*5BAvk51`^8y1|Zt!2v`=F_;Y$LkBq3fy}~(;qGJtDg<FrSc5PN6te<p Y5C(+_2(v>mkb;LD$ZyyHNDV#!02MV(`~Uy| literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.cpp new file mode 100644 index 00000000000..c9d64aece17 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.cpp @@ -0,0 +1,248 @@ +/* This example illustrates how to create a zone with a single + * polygonal cell. Please refer to the Data Format Guide for + * additional information, including figures that display node + * numbering. + */ + +#include "TECIO.h" +#include "MASTER.h" /* for defintion of NULL */ + +int main() +{ + /* DOCSTART:octagon_tecini.txt*/ + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 0; + INTEGER4 I; /* used to check return codes */ + + /* + * Open the file and write the Tecplot datafile + * header information + */ + + I = TECINI112((char*)"Octagon", + (char*)"X Y P", /* Defines the variables for the data + * file. Each zone must contain each + * of the vars listed here. The order + * of the variables in the list is + * used to define the variable number + * (e.g. X is Variable 1). When + * referring to variables in other + * TecIO functions, you will refer to + * thevariable by its number. + */ + (char*)"Octagon.plt", + (char*)".", /* scratch directory */ + &FileType, + &Debug, + &VIsDouble); + /* DOCEND */ + + /* Declare TECZNE variables */ + /* DOCSTART:octagon_teczne.txt*/ + /* In this example, we will create a single octagonal cell in + * Tecplot 360's polyhedral file format. + */ + INTEGER4 ZoneType = 6; /* FEPolygon */ + INTEGER4 NumNodes = 8; /* Number of nodes in the octagon.*/ + INTEGER4 NumElems = 1; /* Number of octagonal elements. */ + INTEGER4 NumFaces = 8; /* Number of faces in the octagon.*/ + INTEGER4 ICellMax = 0; /* Not Used */ + INTEGER4 JCellMax = 0; /* Not Used */ + INTEGER4 KCellMax = 0; /* Not Used */ + double SolTime = 360.0; + INTEGER4 StrandID = 0; /* Static Zone */ + INTEGER4 ParentZn = 0; /* No Parent Zone */ + INTEGER4 IsBlock = 1; /* Block */ + INTEGER4 NFConns = 0; + INTEGER4 FNMode = 0; + + + /* For polygonal zones, the total number of face nodes is equal + * to twice the number of nodes. This is because, each face + * has exactly two nodes. + */ + INTEGER4 NumFaceNodes = 2 * NumNodes; + /* Boundary Faces and Boundary Connections are not used in this + * example. + */ + INTEGER4 NumBFaces = 0; + INTEGER4 NumBConnections = 0; + + INTEGER4 ShrConn = 0; + + I = TECZNE112((char*)"Octagonal Zone", + &ZoneType, + &NumNodes, + &NumElems, + &NumFaces, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + &NumFaceNodes, + &NumBFaces, + &NumBConnections, + NULL, + NULL, /* When Value Location is not specified, + * Tecplot will treat all variables as + * nodal variables. + */ + NULL, + &ShrConn); + /* DOCEND */ + + /* Establish numbering. + * For this example, we will a single octagonal cell. + * Before defining your variables, you must establish a + * consistent node numbering scheme for your data. Once the + * node numbers are defined, supply the variable values in the + * node numbering order. In this example, node 1 is defined at + * X = 0 and Y = 0. As such, the first value supplied for X + * (i.e. X[0]) is 0. Similarly, the first value supplied for + * Y is 0. + * + * It is important that you refer to node numbers consistently. + * The node numbers will be used later to define the + * connectivity for each element. + */ + + /* TECDAT Variables */ + /* Set up the variable values. The variable values will be + * written to the file using TECDAT. Because we are specifying + * nodal variables (as specified via the ValueLocation + * parameter in TECZNE, each variable is dimensioned by the + * number of points (NumPts) in the Zone. You have the option + * to specify some variables with nodal values and some with + * cell-centered values. Refer to the Binary Function Reference + * for details. + */ + /* DOCSTART:octagon_tecdat.txt*/ + float *X = new float[NumNodes]; + float *Y = new float[NumNodes]; + float *P = new float[NumNodes]; + + //Define the grid values. + X[0] = 0.25; + Y[0] = 0.0; + + X[1] = 0.75; + Y[1] = 0.0; + + X[2] = 1.0; + Y[2] = 0.25; + + X[3] = 1.0; + Y[3] = 0.75; + + X[4] = 0.75; + Y[4] = 1.0; + + X[5] = 0.25; + Y[5] = 1.0; + + X[6] = 0.0; + Y[6] = 0.75; + + X[7] = 0.0; + Y[7] = 0.25; + + for (INTEGER4 ii = 0; ii < 8; ii++) + P[ii] = .5; + + /* Write out the field data using TECDAT */ + INTEGER4 DIsDouble = 0; /* set IsDouble to 0 to use float + * variables. */ + + I = TECDAT112(&NumNodes, X, &DIsDouble); + I = TECDAT112(&NumNodes, Y, &DIsDouble); + I = TECDAT112(&NumNodes, P, &DIsDouble); + + delete X; + delete Y; + delete P; + /* DOCEND */ + + /* Define the Face Nodes. + + * The FaceNodes array is used to indicate which nodes define + * which face. As mentioned earlier, the number of the nodes is + * implicitly defined by the order in which the nodal data is + * provided. The first value of each nodal variable describes + * node 1, the second value describes node 2, and so on. + * + * The face numbering is implicitly defined. Because there are + * two nodes in each face, the first two nodes provided define + * face 1, the next two define face 2 and so on. If there was + * a variable number of nodes used to define the faces, the + * array would be more complicated. + */ + /* DOCSTART:octagon_facenodes.txt*/ + INTEGER4 *FaceNodes = new INTEGER4[NumFaceNodes]; + + /* + * Loop over number of sides, and set each side to two + * consecutive nodes. + */ + for (INTEGER4 ii = 0; ii < 8; ii++) + { + FaceNodes[2*ii] = ii + 1; + FaceNodes[2*ii+1] = ii + 2; + } + FaceNodes[15] = 1; + + /* DOCEND */ + /* Define the right and left elements of each face. + + * The last step for writing out the polyhedral data is to + * define the right and left neighboring elements for each + * face. The neighboring elements can be determined using the + * right-hand rule. For each face, place your right-hand along + * the face which your fingers pointing the direction of + * incrementing node numbers (i.e. from node 1 to node 2). + * Your right thumb will point towards the right element; the + * element on the other side of your hand is the left element. + * + * The number zero is used to indicate that there isn't an + * element on that side of the face. + * + * Because of the way we numbered the nodes and faces, the + * right element for every face is the element itself + * (element 1) and the left element is "no-neighboring element" + * (element 0). + */ + /* DOCSTART:octagon_rightleft.txt*/ + INTEGER4 *FaceLeftElems = new INTEGER4[NumFaces]; + INTEGER4 *FaceRightElems = new INTEGER4[NumFaces]; + + for (INTEGER4 ii = 0; ii < NumFaces; ii++) + { + FaceLeftElems[ii] = 0; + FaceRightElems[ii] = 1; + } + /* DOCEND */ + /* Write the polyhedral data to the file. */ + /* DOCSTART:octagon_tecpoly.txt*/ + I = TECPOLY112(NULL, + FaceNodes, + FaceLeftElems, + FaceRightElems, + NULL, + NULL, + NULL); + + delete FaceNodes; + delete FaceLeftElems; + delete FaceRightElems; + /* DOCEND */ + /* DOCSTART:octagon_tecend.txt*/ + I = TECEND112(); + /* DOCEND */ + + return 0; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.vcproj new file mode 100644 index 00000000000..9d33ad0bde4 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/octagon/octagon.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="octagon" + ProjectGUID="{C4BEE7D4-6449-468F-81CC-3BEFDA554F31}" + RootNamespace="octagon" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\octagon.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/Makefile new file mode 100644 index 00000000000..38cb009fcab --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=pyramid +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.cpp new file mode 100644 index 00000000000..864bb754bad --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.cpp @@ -0,0 +1,222 @@ +/* This example creates a zone with a single polyhedral cell. */ + +/* DOCSTART:pyramid.txt*/ +#include "TECIO.h" +#include "MASTER.h" /* for defintion of NULL */ + +int main() +{ + /* Call TECINI112 */ + INTEGER4 FileType = 0; /* 0 for full file */ + INTEGER4 Debug = 0; + INTEGER4 VIsDouble = 1; + INTEGER4 I = 0; /* use to check return codes */ + + I = TECINI112((char*)"Pyramid", /* Data Set Title */ + (char*)"X Y Z", /* Variable List */ + (char*)"pyramid.plt", /* File Name */ + (char*)".", /* Scratch Directory */ + &(FileType), + &(Debug), + &(VIsDouble)); + + + /* Call TECZNE112 */ + INTEGER4 ZoneType = 7; /* 7 for FEPolyhedron */ + INTEGER4 NumNodes = 5; /* number of unique nodes */ + INTEGER4 NumElems = 1; /* number of elements */ + INTEGER4 NumFaces = 5; /* number of unique faces */ + + INTEGER4 ICellMax = 0; /* Not Used, set to zero */ + INTEGER4 JCellMax = 0; /* Not Used, set to zero */ + INTEGER4 KCellMax = 0; /* Not Used, set to zero */ + + double SolTime = 12.65; /* solution time */ + INTEGER4 StrandID = 0; /* static zone */ + INTEGER4 ParentZone = 0; /* no parent zone */ + + INTEGER4 IsBlock = 1; /* block format */ + + INTEGER4 NFConns = 0; /* not used for FEPolyhedron + * zones + */ + INTEGER4 FNMode = 0; /* not used for FEPolyhedron + * zones + */ + + INTEGER4 *PassiveVarArray = NULL; + INTEGER4 *ValueLocArray = NULL; + INTEGER4 *VarShareArray = NULL; + + INTEGER4 ShrConn = 0; + + /* The number of face nodes in the zone. This example creates + * a zone with a single pyramidal cell. This cell has four + * triangular faces and one rectangular face, yielding a total + * of 16 face nodes. + */ + INTEGER4 NumFaceNodes = 16; + INTEGER4 NumBConns = 0; /* No Boundary Connections */ + INTEGER4 NumBItems = 0; /* No Boundary Items */ + + I = TECZNE112((char*)"Polyhedral Zone (Octahedron)", + &ZoneType, + &NumNodes, + &NumElems, + &NumFaces, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZone, + &IsBlock, + &NFConns, + &FNMode, + &NumFaceNodes, + &NumBConns, + &NumBItems, + PassiveVarArray, + ValueLocArray, + VarShareArray, + &ShrConn); + + /* Initialize arrays of nodal data */ + double *X = new double[NumNodes]; + double *Y = new double[NumNodes]; + double *Z = new double[NumNodes]; + + X[0] = 0; + Y[0] = 0; + Z[0] = 0; + + X[1] = 1; + Y[1] = 1; + Z[1] = 2; + + X[2] = 2; + Y[2] = 0; + Z[2] = 0; + + X[3] = 2; + Y[3] = 2; + Z[3] = 0; + + X[4] = 0; + Y[4] = 2; + Z[4] = 0; + + /* Write the data (using TECDAT112) */ + INTEGER4 DIsDouble = 1; /* One for double precision */ + I = TECDAT112(&NumNodes, X, &DIsDouble); + I = TECDAT112(&NumNodes, Y, &DIsDouble); + I = TECDAT112(&NumNodes, Z, &DIsDouble); + + delete X; + delete Y; + delete Z; + + /* Define the Face Nodes. + + * The FaceNodes array is used to indicate which nodes define + * which face. As mentioned earlier, the number of the nodes is + * implicitly defined by the order in which the nodal data is + * provided. The first value of each nodal variable describes + * node 1, the second value describes node 2, and so on. + * + * The face numbering is implicitly defined. Because there are + * two nodes in each face, the first two nodes provided define + * face 1, the next two define face 2 and so on. If there was + * a variable number of nodes used to define the faces, the + * array would be more complicated. + */ + + INTEGER4 *FaceNodeCounts = new INTEGER4[NumFaces]; + /* The first four faces are triangular, i.e. have three nodes. + * The fifth face is rectangular, i.e. has four nodes. */ + FaceNodeCounts[0] = 3; + FaceNodeCounts[1] = 3; + FaceNodeCounts[2] = 3; + FaceNodeCounts[3] = 3; + FaceNodeCounts[4] = 4; + + INTEGER4 *FaceNodes = new INTEGER4[NumFaceNodes]; + /* Face Nodes for Face 1 */ + FaceNodes[0] = 1; + FaceNodes[1] = 2; + FaceNodes[2] = 3; + + /* Face Nodes for Face 2 */ + FaceNodes[3] = 3; + FaceNodes[4] = 2; + FaceNodes[5] = 4; + + /* Face Nodes for Face 3 */ + FaceNodes[6] = 5; + FaceNodes[7] = 2; + FaceNodes[8] = 4; + + /* Face Nodes for Face 4 */ + FaceNodes[9] = 1; + FaceNodes[10] = 2; + FaceNodes[11] = 5; + + /* Face Nodes for Face 5 */ + FaceNodes[12] = 1; + FaceNodes[13] = 5; + FaceNodes[14] = 4; + FaceNodes[15] = 3; + + /* Define the right and left elements of each face. + * + * The last step for writing out the polyhedral data is to + * define the right and left neighboring elements for each + * face. The neighboring elements can be determined using the + * right-hand rule. For each face, place your right-hand along + * the face which your fingers pointing the direction of + * incrementing node numbers (i.e. from node 1 to node 2). + * Your right thumb will point towards the right element; the + * element on the other side of your hand is the left element. + * + * The number zero is used to indicate that there isn't an + * element on that side of the face. + * + * Because of the way we numbered the nodes and faces, the + * right element for every face is the element itself + * (element 1) and the left element is "no-neighboring element" + * (element 0). + */ + + INTEGER4 *FaceLeftElems = new INTEGER4[NumFaces]; + FaceLeftElems[0] = 1; + FaceLeftElems[1] = 1; + FaceLeftElems[2] = 0; + FaceLeftElems[3] = 0; + FaceLeftElems[4] = 0; + + INTEGER4 *FaceRightElems = new INTEGER4[NumFaces]; + FaceRightElems[0] = 0; + FaceRightElems[1] = 0; + FaceRightElems[2] = 1; + FaceRightElems[3] = 1; + FaceRightElems[4] = 1; + + /* Write the face map (created above) using TECPOLY112. */ + I = TECPOLY112(FaceNodeCounts, /* The face node counts array */ + FaceNodes, /* The face nodes array */ + FaceLeftElems, /* The left elements array */ + FaceRightElems, /* The right elements array */ + NULL, /* No boundary connection counts */ + NULL, /* No boundary connection elements */ + NULL); /* No boundary connection zones */ + + delete FaceNodeCounts; + delete FaceNodes; + delete FaceLeftElems; + delete FaceRightElems; + + I = TECEND112(); + return 0; +} + +/* DOCEND */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.plt new file mode 100644 index 0000000000000000000000000000000000000000..d85447466118fc7a63af724aa0bd550a2382ac6b GIT binary patch literal 600 zcmb7>I|{-;7=$-I5iC4H#Kx5I0tR9!Xd$9@qJn}C5F5K(!i#tgy^A-{nPg|t?fl`( z%<lgnf6{4B2Gcn11*V8G<O<GU2@YTf)__q4v)maox4N)uvRlgj6W9aJ*@6vVzh*KQ z0`{@?2v`$>E*OCoxB$L`KSMnca*Vf)=L0c}5+3VC$~~)aq~&gm3BJ6u**)bRC0q#Q zI9J|k^56N@_xk*Pn|5^?uR5uJuk(-cU)4YZG=X;K-r9|xbrm2Fn|t0dsH|a+g5Saq G<)|OuL_vB0 literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.vcproj new file mode 100644 index 00000000000..e44e390db6f --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/pyramid/pyramid.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="pyramid" + ProjectGUID="{CFED06AE-48C6-491C-AE5F-E1B7882A44E9}" + RootNamespace="pyramid" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\pyramid.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/Makefile new file mode 100644 index 00000000000..9e40ebe34bc --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=simtest +FILES=$(EXECUTABLE).c + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.c b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.c new file mode 100644 index 00000000000..fe35a33234a --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.c @@ -0,0 +1,100 @@ +/* + * Simple example c program to write a + * binary datafile for tecplot. This example + * does the following: + * + * 1. Open a datafile called "t.plt" + * 2. Assign values for X,Y, and P + * 3. Write out a zone dimensioned 4x5 + * 4. Close the datafile. + */ + +#include "TECIO.h" + +#ifndef NULL +#define NULL 0 +#endif + +enum FileType { FULL = 0, GRID = 1, SOLUTION = 2 }; + +int main(void) +{ + float X[5][4], Y[5][4], P[5][4]; + double SolTime; + INTEGER4 Debug, I, J, III, DIsDouble, VIsDouble, IMax, JMax, KMax, ZoneType, StrandID, ParentZn, IsBlock; + INTEGER4 ICellMax, JCellMax, KCellMax, NFConns, FNMode, ShrConn, FileType; + + Debug = 1; + VIsDouble = 0; + DIsDouble = 0; + IMax = 4; + JMax = 5; + KMax = 1; + ZoneType = 0; /* Ordered */ + SolTime = 360.0; + StrandID = 0; /* StaticZone */ + ParentZn = 0; /* No Parent */ + IsBlock = 1; /* Block */ + ICellMax = 0; + JCellMax = 0; + KCellMax = 0; + NFConns = 0; + FNMode = 0; + ShrConn = 0; + FileType = FULL; + + /* + * Open the file and write the tecplot datafile + * header information + */ + I = TECINI112((char*)"SIMPLE DATASET", + (char*)"X Y P", + (char*)"t.plt", + (char*)".", + &FileType, + &Debug, + &VIsDouble); + + for (J = 0; J < 5; J++) + for (I = 0; I < 4; I++) + { + X[J][I] = (float)(I + 1); + Y[J][I] = (float)(J + 1); + P[J][I] = (float)((I + 1) * (J + 1)); + } + /* + * Write the zone header information. + */ + I = TECZNE112((char*)"Simple Zone", + &ZoneType, + &IMax, + &JMax, + &KMax, + &ICellMax, + &JCellMax, + &KCellMax, + &SolTime, + &StrandID, + &ParentZn, + &IsBlock, + &NFConns, + &FNMode, + 0, /* TotalNumFaceNodes */ + 0, /* NumConnectedBoundaryFaces */ + 0, /* TotalNumBoundaryConnections */ + NULL, /* PassiveVarList */ + NULL, /* ValueLocation = Nodal */ + NULL, /* SharVarFromZone */ + &ShrConn); + /* + * Write out the field data. + */ + III = IMax * JMax; + I = TECDAT112(&III, &X[0][0], &DIsDouble); + I = TECDAT112(&III, &Y[0][0], &DIsDouble); + I = TECDAT112(&III, &P[0][0], &DIsDouble); + + I = TECEND112(); + + return 0; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f new file mode 100644 index 00000000000..d980915100f --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f @@ -0,0 +1,98 @@ +C +C Simple example fortran program to write a +C binary datafile for tecplot. This example +C does the following: +C +C 1. Open a datafile called "t.plt" +C 2. Assign values for X,Y, and P +C 3. Write out a zone dimensioned 4x5 +C 4. Close the datafile. +C +C + program test + + INCLUDE 'tecio.inc' + + character*1 NULLCHR + Integer*4 Debug,III,NPts,NElm + + Dimension X(4,5), Y(4,5), P(4,5) + Real*8 SolTime + Integer*4 VIsDouble, FileType + Integer*4 ZoneType,StrandID,ParentZn,IsBlock + Integer*4 ICellMax,JCellMax,KCellMax,NFConns,FNMode,ShrConn + POINTER (NullPtr,Null) + Integer*4 Null(*) + + NULLCHR = CHAR(0) + NullPtr = 0 + Debug = 1 + FileType = 0 + VIsDouble = 0 + IMax = 4 + JMax = 5 + KMax = 1 + ZoneType = 0 + SolTime = 360.0 + StrandID = 0 + ParentZn = 0 + IsBlock = 1 + ICellMax = 0 + JCellMax = 0 + KCellMax = 0 + NFConns = 0 + FNMode = 0 + ShrConn = 0 +C +C... Open the file and write the tecplot datafile +C... header information. +C + I = TecIni112('SIMPLE DATASET'//NULLCHR, + & 'X Y P'//NULLCHR, + & 't.plt'//NULLCHR, + & '.'//NULLCHR, + & FileType, + & Debug, + & VIsDouble) + + Do 10 I = 1,4 + Do 10 J = 1,5 + X(I,J) = I + Y(I,J) = J + P(I,J) = I*J + 10 Continue +C +C... Write the zone header information. +C + I = TecZne112('Simple Zone'//NULLCHR, + & ZoneType, + & IMax, + & JMax, + & KMax, + & ICellMax, + & JCellMax, + & KCellMax, + & SolTime, + & StrandID, + & ParentZn, + & IsBlock, + & NFConns, + & FNMode, + & 0, + & 0, + & 0, + & Null, + & Null, + & Null, + & ShrConn) +C +C... Write out the field data. +C + III = IMax*JMax + I = TecDat112(III,X,0) + I = TecDat112(III,Y,0) + I = TecDat112(III,P,0) + + I = TecEnd112() + Stop + End diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f90 b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f90 new file mode 100644 index 00000000000..1706de59841 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtest.f90 @@ -0,0 +1,98 @@ +! +! Simple example fortran program to write a +! binary datafile for tecplot. This example +! does the following: +! +! 1. Open a datafile called "t.plt" +! 2. Assign values for X,Y, and P +! 3. Write out a zone dimensioned 4x5 +! 4. Close the datafile. +! +! + program test + + INCLUDE 'tecio.f90' + + character*1 NULLCHR + Integer*4 Debug,III,NPts,NElm + + Dimension X(4,5), Y(4,5), P(4,5) + Real*8 SolTime + Integer*4 VIsDouble, FileType + Integer*4 ZoneType,StrandID,ParentZn,IsBlock + Integer*4 ICellMax,JCellMax,KCellMax,NFConns,FNMode,ShrConn + POINTER (NullPtr,Null) + Integer*4 Null(*) + + NULLCHR = CHAR(0) + NullPtr = 0 + Debug = 1 + FileType = 0 + VIsDouble = 0 + IMax = 4 + JMax = 5 + KMax = 1 + ZoneType = 0 + SolTime = 360.0 + StrandID = 0 + ParentZn = 0 + IsBlock = 1 + ICellMax = 0 + JCellMax = 0 + KCellMax = 0 + NFConns = 0 + FNMode = 0 + ShrConn = 0 +! +!... Open the file and write the tecplot datafile +!... header information. +! + I = TecIni112('SIMPLE DATASET'//NULLCHR, & + 'X Y P'//NULLCHR, & + 't.plt'//NULLCHR, & + '.'//NULLCHR, & + FileType, & + Debug, & + VIsDouble) + + Do 10 I = 1,4 + Do 10 J = 1,5 + X(I,J) = I + Y(I,J) = J + P(I,J) = I*J + 10 Continue +! +!... Write the zone header information. +! + I = TecZne112('Simple Zone'//NULLCHR, & + ZoneType, & + IMax, & + JMax, & + KMax, & + ICellMax, & + JCellMax, & + KCellMax, & + SolTime, & + StrandID, & + ParentZn, & + IsBlock, & + NFConns, & + FNMode, & + 0, & + 0, & + 0, & + Null, & + Null, & + Null, & + ShrConn) +! +!... Write out the field data. +! + III = IMax*JMax + I = TecDat112(III,X,0) + I = TecDat112(III,Y,0) + I = TecDat112(III,P,0) + + I = TecEnd112() + Stop + End diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestc.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestc.vcproj new file mode 100644 index 00000000000..814cc761f3d --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestc.vcproj @@ -0,0 +1,346 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="simtestc" + ProjectGUID="{62FA6E8C-388E-4047-BC9D-574B470B94DE}" + RootNamespace="simtestc" + Keyword="Win32Proj" + > + <Platforms> + <Platform + Name="Win32" + /> + <Platform + Name="x64" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="2" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Debug|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="2" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" + RuntimeLibrary="2" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="1" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="1" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" + RuntimeLibrary="2" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + LinkIncremental="1" + AdditionalLibraryDirectories="" + GenerateDebugInformation="true" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\simtest.c" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestf.vfproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestf.vfproj new file mode 100644 index 00000000000..2b20da05b12 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/simtest/simtestf.vfproj @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<VisualStudioProject ProjectCreator="Intel Fortran" Keyword="Console Application" Version="9.10" ProjectIdGuid="{861BC05F-1E95-401A-A80E-7589ADD1C79E}"> + <Platforms> + <Platform Name="Win32"/></Platforms> + <Configurations> + <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.exe;$(TargetPath)"> + <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/> + <Tool Name="VFPreBuildEventTool"/> + <Tool Name="VFPostBuildEventTool"/> + <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" AdditionalIncludeDirectories="$(TEC_360_2009)/Include" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" Traceback="true" BoundsCheck="true" RuntimeLibrary="rtMultiThreadedDebug" CompileOnly="true"/> + <Tool Name="VFCustomBuildTool"/> + <Tool Name="VFLinkerTool" OutputFile="$(OUTDIR)/simtestf.exe" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TEC_360_2009)/Bin" GenerateDebugInformation="true" ProgramDatabaseFile="$(OUTDIR)/simtestf.pdb" SubSystem="subSystemConsole" AdditionalDependencies="tecio.lib"/> + <Tool Name="VFPreLinkEventTool"/> + <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/></Configuration> + <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)$(PlatformName)/$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.exe;$(TargetPath)"> + <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/> + <Tool Name="VFPreBuildEventTool"/> + <Tool Name="VFPostBuildEventTool"/> + <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" AdditionalIncludeDirectories="$(TEC_360_2009)/Include" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreaded" CompileOnly="true"/> + <Tool Name="VFCustomBuildTool"/> + <Tool Name="VFLinkerTool" OutputFile="$(OUTDIR)/simtestf.exe" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" AdditionalLibraryDirectories="$(TEC_360_2009)/Bin" SubSystem="subSystemConsole" AdditionalDependencies="tecio.lib"/> + <Tool Name="VFPreLinkEventTool"/> + <Tool Name="VFResourceCompilerTool" ResourceOutputFileName="$(IntDir)/$(InputName).res"/></Configuration></Configurations> + <Files> + <File RelativePath="simtest.f90"/></Files> + <Globals/></VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/Makefile new file mode 100644 index 00000000000..120b910d62d --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=squares +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.cpp new file mode 100644 index 00000000000..e5d9a0f5e2b --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.cpp @@ -0,0 +1,124 @@ +/* This example creates a group of square geometries, each with a + * different fill color */ +#if defined _MSC_VER +#pragma warning (disable: 4996) /* Windows strcpy warning off */ +#endif + +/* DOCSTART:tecgeo.txt*/ +#include "TECIO.h" +#include <string.h> + +int main() +{ + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 0; + INTEGER4 I = 0; /* use to check return values */ + + + /* Open the file and write the tecplot datafile + * header information + */ + I = TECINI112((char*)"Square Geometries", + (char*)"X Y P", + (char*)"squares.plt", + (char*)".", + &FileType, + &Debug, + &VIsDouble); + + double ZPos = 0.0; /* N/A for squares */ + double XPos; + double YPos; + + INTEGER4 PosCoordMode = 0; /* use grid coordinates */ + + /* opt not to attach the text to a given zone. When text is + * attached to a given zone, it is displayed only when the zone + * is displayed. + */ + INTEGER4 AttachToZone = 0; + INTEGER4 Zone = 1; + + /* Set the Geometry Style Values */ + INTEGER4 Color = 0; /* set the outline color to + * black + */ + INTEGER4 IsFilled = 1; + INTEGER4 GeomType = 2; /* set the geometry type to + * square + */ + INTEGER4 LinePattern = 5; /* set the line pattern to + * DashDotDot + */ + double PatternLength = .1; + double LineThick = .2; + + /* N/A for square geometries */ + INTEGER4 NumPts = 100; + INTEGER4 ArrowStyle = 1; + INTEGER4 ArrowAttach = 0; + double ArrowSize = 1; + double ArrowAngle = 30; + INTEGER4 NumSegments = 15; + INTEGER4 NumSegPts = 25; + + + INTEGER4 Scope = 1; /* set the text to "local", i.e. + * available in the current frame + * only. + */ + INTEGER4 Clipping = 1; + + /* Specify the length of a side of the square. The units used + * are those defined with PosCoordMode. + */ + float XGeomData = 2.5; + + float YGeomData = 0; /* N/A for square geometries */ + float ZGeomData = 0; /* N/A for square geometries */ + + char * MFC = new char[128]; + strcpy(MFC, "SQUARE"); + + for (INTEGER4 ii = 0; ii <= 7; ii++) + { + INTEGER4 FillColor = ii; + XPos = (double) ii; + YPos = (double) ii; + + I = TECGEO112(&XPos, + &YPos, + &ZPos, + &PosCoordMode, + &AttachToZone, + &Zone, + &Color, + &FillColor, + &IsFilled, + &GeomType, + &LinePattern, + &PatternLength, + &LineThick, + &NumPts, + &ArrowStyle, + &ArrowAttach, + &ArrowSize, + &ArrowAngle, + &Scope, + &Clipping, + &NumSegments, + &NumSegPts, + &XGeomData, + &YGeomData, + &ZGeomData, + MFC); + } + + I = TECEND112(); + + delete MFC; + return 0; +} + +/* DOCEND */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.plt new file mode 100644 index 0000000000000000000000000000000000000000..c8e0848cfae0353501b89930becf07c7dd920c72 GIT binary patch literal 1304 zcmY#Z3~>oFG&EvlfPi2iRS3kTK%5A~ML?Vi#0o&{4rS*9>0Btg1W1F_WJ3AHKpF&? zfj9!pVql1b(g9GKq2ahQhzYY3CX7!12LhNFNG%f(vjXv-l^-wpCI#3-=mh%|pcu@o zYLRvB535@2Q;T&if(|~g2l*!uh(m$c5r~6;*cFID0Hg<^Pr(7Zn?Bfs6*9nR1_qd$ zV0!8ACI$zHo8UCuO(3^`+(mykaX{S!qY>c*N(TeuCIP6MU^K!_ECc2y5vZGBG{Q}w hbUiTPBms33j7GSLZNS_l19cOOM!1QcE^gZ73;-e5)xZD% literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.vcproj new file mode 100644 index 00000000000..359ce967c4d --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/squares/squares.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="squares" + ProjectGUID="{2E5EC0A5-5902-4A66-8A67-A61EC9EB0855}" + RootNamespace="squares" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\squares.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/Makefile b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/Makefile new file mode 100644 index 00000000000..415b65fd133 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/Makefile @@ -0,0 +1,11 @@ +# Set to appropriate C++ compiler +CPP=g++ +CPPFLAGS=-I../../tecsrc ../../tecio.a +EXECUTABLE=text +FILES=$(EXECUTABLE).cpp + +build: + $(CPP) $(FILES) $(CPPFLAGS) -o $(EXECUTABLE) + +clean: + rm -f $(EXECUTABLE) \ No newline at end of file diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.cpp new file mode 100644 index 00000000000..66df8d723d2 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.cpp @@ -0,0 +1,112 @@ +/* This example demonstrates adding a text object to a Tecplot + * data file. + */ +#if defined _MSC_VER +#pragma warning (disable: 4996) /* Windows strcpy warning off */ +#endif + +/* DOCSTART:tectxt.txt*/ +#include "TECIO.h" +#include <string.h> + +int main() +{ + /* Open the file & write the datafile header information */ + INTEGER4 Debug = 1; + INTEGER4 VIsDouble = 0; + INTEGER4 FileType = 0; + INTEGER4 I = 0; /* used to check the return value */ + + I = TECINI112((char*)"Text", + (char*)"X Y P", + (char*)"text.plt", + (char*)".", + &FileType, + &Debug, + &VIsDouble); + + /* Specify the X, Y and Z position of the anchor point */ + double XPos = 0.0; + double YPos = 1.0; + double ZPos = 0.0; /* N/A for 2D text */ + + INTEGER4 PosCoordMode = 0; /* use grid coordinates */ + + /* opt not to attach the text to a given zone. When text is + * attached to a given zone, it is displayed only when the zone + * is displayed. + */ + INTEGER4 AttachToZone = 0; + INTEGER4 Zone = 2; + + + /* Specify the font values */ + INTEGER4 Font = 1; /* Helvetica Bold */ + INTEGER4 FontHeightUnits = 2; /* in grid coordinates */ + double FontHeight = 18; + + /* Set the box style parameters */ + INTEGER4 BoxType = 1; /* filled box */ + double BoxMargin = .5; /* margin between the text + * and the text box + */ + double BoxLineThickness = .1; + INTEGER4 BoxColor = 0; /* set the box line color + * to black. + */ + INTEGER4 BoxFillColor = 1; /* set the box fill color + * to red. + */ + + /* set the font properties */ + double Angle = 30; /* angle of the text */ + INTEGER4 Anchor = 1; /* set the anchor point to + * the center of the text + * box. + */ + double LineSpacing = 1.5; + INTEGER4 TextColor = 7; /* set the font color to + * white + */ + + INTEGER4 Scope = 1; /* set the text to "local", + * i.e. available in the + * current frame only. + */ + INTEGER4 Clipping = 1; + + + char Text[60]; + char MFC[24]; + strcpy(Text, "Sample Text"); + strcpy(MFC, "My Macro"); + + I = TECTXT112(&XPos, + &YPos, + &ZPos, + &PosCoordMode, + &AttachToZone, + &Zone, + &Font, + &FontHeightUnits, + &FontHeight, + &BoxType, + &BoxMargin, + &BoxLineThickness, + &BoxColor, + &BoxFillColor, + &Angle, + &Anchor, + &LineSpacing, + &TextColor, + &Scope, + &Clipping, + Text, + MFC); + + I = TECEND112(); + + return 0; +} + +/* DOCEND */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.plt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.plt new file mode 100644 index 0000000000000000000000000000000000000000..5d0ecd945ad1051efda3afc29c1ee7fcdc53a335 GIT binary patch literal 264 zcmY#Z3~>oFG&EvlfPfGnl?ucaKwJV5VqgZ+5m0s{ln#K>3=Kb>K}?u_m@osw2YVPB zB*z5fFc>+2_|+oo+#gnz*#BAi@se*+09Y+ZJhfQYBIw`)sNNs;AhG{Izz(E+fw&Tg s6`<@yAe{`vML?Vn#2^4t9}L7Gxm+MF0OA}V2Kh+=h_U&Pp<$CV00QeFD*ylh literal 0 HcmV?d00001 diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.vcproj b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.vcproj new file mode 100644 index 00000000000..9018c6a89c0 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/examples/text/text.vcproj @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="text" + ProjectGUID="{FE2A061A-1787-410B-ABA0-366D6EA603FB}" + RootNamespace="text" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="$(SolutionDir)$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="..\TecIO_Examples.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + RuntimeLibrary="2" + WarningLevel="3" + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + GenerateDebugInformation="true" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath=".\text.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/pltview.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/pltview.cpp new file mode 100644 index 00000000000..fd9dd63976d --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/pltview.cpp @@ -0,0 +1,559 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** (C) Copyright 2004-2006 by Tecplot, Inc. ******** +****** (C) Copyright 1989-2003 by AMTEC ENGINEERING INC.******** +******* All Rights Reserved. ******** +******* ******** +***************************************************************** +***************************************************************** +*/ + + +/* +**************************************************************** +****************** BEGIN DEVELOPMENT NOTES ********************* +**************************************************************** + +BEGIN CODELOG PLTVIEW +V 09/04/98 +V **************************************************************** +V * Build 1.0 9-04-98 * +V **************************************************************** +END CODELOG + +********************************************************************* +* IMPORTANT NOTE: Only development notes for "pltview" stand-alone * +* belong in this file. See "ADDONVER.h" for changes * +* related to the add-on. * +********************************************************************* + +**************************************************************** +* V in column 1 marks date information. * +* C in column 1 marks notes on new changes. * +* B in column 1 marks notes on bug fixes. * +**************************************************************** + +**************************************************************** +****************** END DEVELOPMENT NOTES *********************** +**************************************************************** +*/ + +#if defined ADDON +#include "TECADDON.h" +#include "GUIDEFS.h" +#include "GUI.h" +#define READTEC TecUtilReadBinaryData +#define SHOWINFO(S) TecGUITextAppendString(Output_T_D1,S); +#define ERRMSG(S) TecUtilDialogErrMsg(S) +#define ALLOC_ARRAY(N,Type,S) (Type *)TecUtilStringAlloc((N)*sizeof(Type),"debug info") +#define FREE_ARRAY(N,S) TecUtilStringDealloc((char **)&N) +#define STRINGLISTGETSTRING(S,N) TecUtilStringListGetString(S,N) +#define STRINGLISTGETCOUNT(S) TecUtilStringListGetCount(S) +#define STRINGLISTDEALLOC(S) TecUtilStringListDealloc(S) +#else +#include "MASTER.h" +#include "GLOBAL.h" +#include "TASSERT.h" +#define ALLOC_ARRAY(N,Type,S) (Type *)TecAlloc((N)*sizeof(Type)) +#define FREE_ARRAY(N,S) TecFree((void *)N) +#include "ARRLIST.h" +#include "STRLIST.h" +#include "DATAUTIL.h" + +/* +#include "TECADDON.h" +#include "TECXXX.h" +#include "DATAUTIL.h" +#include "STRLIST.h" +*/ + +#define READTEC ReadTec +#define SHOWINFO(S) printf("%s",S); +#define ERRMSG(S) printf("Err: %s\n",S); +#define STRINGLISTGETSTRING(S,N) StringListGetString(S,(N)-1) +#define STRINGLISTGETCOUNT(S) StringListCount(S) +#define STRINGLISTDEALLOC(S) StringListDealloc(S) +#define MaxCharsUserRec 500 +#endif + + +static int GetNumPtsPerCell(ZoneType_e ZoneType) +{ + int NumPts = 0; + switch (ZoneType) + { + case ZoneType_FETriangle : NumPts = 3; break; + case ZoneType_FEQuad : NumPts = 4; break; + case ZoneType_FETetra : NumPts = 4; break; + case ZoneType_FEBrick : NumPts = 8; break; + default : NumPts = 0; + } + return (NumPts); +} + +static int GetNumPts(ZoneType_e ZoneType, + LgIndex_t NumPtsI, + LgIndex_t NumPtsJ, + LgIndex_t NumPtsK) +{ + int NumPts = 0; + switch (ZoneType) + { + case ZoneType_FETriangle : + case ZoneType_FEQuad : + case ZoneType_FETetra : + case ZoneType_FEBrick : + case ZoneType_FEPolygon : + case ZoneType_FEPolyhedron: NumPts = NumPtsI; break; + default : NumPts = NumPtsI*NumPtsJ*NumPtsK; + } + return (NumPts); +} + + + +static void DeallocHeaderInfo(char **DataSetTitle, + StringList_pa *VarNames, + StringList_pa *ZoneNames, + LgIndex_t **NumPtsI, + LgIndex_t **NumPtsJ, + LgIndex_t **NumPtsK, + ZoneType_e **ZoneType, + StringList_pa *UserRec) +{ + if (*DataSetTitle) + FREE_ARRAY(*DataSetTitle, "data set title"); + if (*VarNames) + STRINGLISTDEALLOC(VarNames); + if (*ZoneNames) + STRINGLISTDEALLOC(ZoneNames); + if (*NumPtsI) + FREE_ARRAY(*NumPtsI, "NumPtsI Array"); + if (*NumPtsJ) + FREE_ARRAY(*NumPtsJ, "NumPtsJ Array"); + if (*NumPtsK) + FREE_ARRAY(*NumPtsK, "NumPtsK Array"); + if (*ZoneType) + FREE_ARRAY(*ZoneType, "ZoneType Array"); + if (*UserRec) + STRINGLISTDEALLOC(UserRec); + + *DataSetTitle = NULL; + *VarNames = NULL; + *ZoneNames = NULL; + *NumPtsI = NULL; + *NumPtsJ = NULL; + *NumPtsK = NULL; + *ZoneType = NULL; + *UserRec = NULL; +} + + + +#define MAXCHARSINFOLINE 5000 + + +void ReportFileInfo(char *FName, + Boolean_t LoadRawData, + Boolean_t AllocateRawDataSpaceLocally) +{ + short IVersion; + EntIndex_t NumZones; + EntIndex_t NumVars; + char *DataSetTitle = NULL; + StringList_pa VarNames = NULL; + StringList_pa ZoneNames = NULL; + LgIndex_t *NumPtsI = NULL; + LgIndex_t *NumPtsJ = NULL; + LgIndex_t *NumPtsK = NULL; + ZoneType_e *ZoneType = NULL; + StringList_pa UserRec = NULL; + int CZ, CV; + char InfoLine[MAXCHARSINFOLINE+1]; + double **VDataBase = NULL; + NodeMap_t **NodeMap = NULL; + + /* + * Load in the header information only. + */ + + if (!READTEC(TRUE, + FName, + &IVersion, + &DataSetTitle, + &NumZones, + &NumVars, + &VarNames, + &ZoneNames, + &NumPtsI, + &NumPtsJ, + &NumPtsK, + &ZoneType, + &UserRec, + FALSE, + (NodeMap_t ***)NULL, + (double ***)NULL)) + { + sprintf(InfoLine, "Cannot read file \"%s\"\nor file is not a Tecplot binary data file.\n", FName); + ERRMSG(InfoLine); + } + else + { + Boolean_t IsOk = TRUE; + if (LoadRawData) + { + if (AllocateRawDataSpaceLocally) + { + int NumPts; + VDataBase = ALLOC_ARRAY(NumZones * NumVars, double *, "vdatabase array"); + for (CZ = 0; CZ < NumZones; CZ++) + for (CV = 0; CV < NumVars; CV++) + { + NumPts = GetNumPts(ZoneType[CZ], NumPtsI[CZ], NumPtsJ[CZ], NumPtsK[CZ]); + if (NumPts >= 1) + VDataBase[CZ*NumVars+CV] = ALLOC_ARRAY(NumPts, double, "vdatabase array"); + else + VDataBase[CZ*NumVars+CV] = NULL; + } + + NodeMap = ALLOC_ARRAY(NumZones, NodeMap_t *, "nodemap array"); + for (CZ = 0; CZ < NumZones; CZ++) + { + if (ZoneType[CZ] == ZoneType_Ordered) + NodeMap[CZ] = NULL; + else + { + int PtsPerCell = GetNumPtsPerCell(ZoneType[CZ]); + NodeMap[CZ] = ALLOC_ARRAY(PtsPerCell * NumPtsJ[CZ], + NodeMap_t, "zone nodemap"); + } + } + } + else + { + VDataBase = NULL; + NodeMap = NULL; + } + + /* + * NOTE: If any of the above alloc's failed then no big deal. ReadTec + * itself "skips" vars if memory was not allocated for it. + */ + + DeallocHeaderInfo(&DataSetTitle, + &VarNames, + &ZoneNames, + &NumPtsI, + &NumPtsJ, + &NumPtsK, + &ZoneType, + &UserRec); + + /* + * Reread the datafile. This time load in the header AND the raw data + * Note that VDataBase may be preallocated or may be left up to ReadTec + * to allocate (See AllocateRawDataSpaceLocally above). + */ + if (!READTEC(FALSE, + FName, + &IVersion, + &DataSetTitle, + &NumZones, + &NumVars, + &VarNames, + &ZoneNames, + &NumPtsI, + &NumPtsJ, + &NumPtsK, + &ZoneType, + &UserRec, + AllocateRawDataSpaceLocally, + &NodeMap, + &VDataBase)) + { + if (IVersion > 99) + { + sprintf(InfoLine, + "Error: ***\n" + " This add-on can only display raw nodal data\n" + " and it appears to contain cell centered data.\n"); + SHOWINFO(InfoLine); + } + else + { + sprintf(InfoLine, + "Cannot Read File, %s.\n" + "File may not be a tecplot binary data file.", + FName); + ERRMSG(InfoLine); + } + IsOk = FALSE; + } + } + + SHOWINFO("\n"); + sprintf(InfoLine, "FileName : %s\n", FName); + SHOWINFO(InfoLine); + sprintf(InfoLine, "File Version: %3.1f\n", IVersion / 10.0); + SHOWINFO(InfoLine); + + /* if the file contains filetype, then retrieve that separately since ReadTec should not be changed */ + if (IVersion >= 109) + { + DataFileType_e FileType = DataFileType_Full; + char FileTypeStr[32]; + FILE *F = NULL; + + /* open the file and get the filetype */ + F = fopen(FName, "rb"); + if (F) + { + char Buffer[8]; + Int32_t One; + Int32_t FileTypeInt; + + /* 8 bytes for magic# and version and 4 bytes for Int32 */ + fread(Buffer, sizeof(Buffer[0]), 8, F); + fread(&One, sizeof(One), 1, F); + fread(&FileTypeInt, sizeof(FileTypeInt), 1, F); + FileType = (DataFileType_e)FileTypeInt; + fclose(F); + F = NULL; + } + /* map the filetype */ + switch (FileType) + { + case DataFileType_Full: + strcpy(FileTypeStr, "Full"); + break; + case DataFileType_Grid: + strcpy(FileTypeStr, "Grid"); + break; + case DataFileType_Solution: + strcpy(FileTypeStr, "Solution"); + break; + default: + IsOk = FALSE; + CHECK(FALSE); + break; + } + sprintf(InfoLine, "File Type : %s\n", FileTypeStr); + SHOWINFO(InfoLine); + } + + sprintf(InfoLine, "DataSetTitle: %s\n", DataSetTitle ? DataSetTitle : " "); + SHOWINFO(InfoLine); + sprintf(InfoLine, "NumZones : %d\n", (int)NumZones); + SHOWINFO(InfoLine); + sprintf(InfoLine, "NumVars : %d\n", (int)NumVars); + SHOWINFO(InfoLine); + if (IsOk && (NumZones > 0)) + { + SHOWINFO("Var Names : "); + for (CZ = 0; CZ < NumVars; CZ++) + { + char *VarName = STRINGLISTGETSTRING(VarNames, CZ + 1); + sprintf(InfoLine, "%s", VarName ? VarName : "NULL"); + if (CZ < NumVars - 1) + strcat(InfoLine, ","); + else + strcat(InfoLine, "\n\n"); + SHOWINFO(InfoLine); + if (VarName) + FREE_ARRAY(VarName, "VarName array"); + } + SHOWINFO("ZoneName IMax JMax KMax Node Face Elmt EType\n"); + SHOWINFO("-------------------------------------------------------------------------------\n"); + + for (CZ = 0; CZ < NumZones; CZ++) + { + char *ZoneName = STRINGLISTGETSTRING(ZoneNames, CZ + 1); + if (ZoneType[CZ] != ZoneType_Ordered) + { + if (ZoneType[CZ] == ZoneType_FEPolygon || + ZoneType[CZ] == ZoneType_FEPolyhedron) + sprintf(InfoLine, "%-20s --- --- --- %-8ld %-8ld %-8ld ", + (ZoneName ? ZoneName : "NULL"), + (long)NumPtsI[CZ], + (long)NumPtsK[CZ], + (long)NumPtsJ[CZ]); + else + sprintf(InfoLine, "%-20s --- --- --- %-8ld --- %-8ld ", + (ZoneName ? ZoneName : "NULL"), + (long)NumPtsI[CZ], + (long)NumPtsJ[CZ]); + SHOWINFO(InfoLine); + switch (ZoneType[CZ]) + { + case ZoneType_FETriangle : SHOWINFO("Tri\n"); break; + case ZoneType_FEQuad : SHOWINFO("Quad\n"); break; + case ZoneType_FETetra : SHOWINFO("Tetra\n"); break; + case ZoneType_FEBrick : SHOWINFO("Brick\n"); break; + case ZoneType_FELineSeg : SHOWINFO("LineSeg\n"); break; + case ZoneType_FEPolygon : SHOWINFO("Polygon\n"); break; + case ZoneType_FEPolyhedron: SHOWINFO("Polyhed\n"); break; + default: CHECK(FALSE); break; + } + } + else + { + sprintf(InfoLine, "%-20s %-7ld %-7ld %-7ld --- --- --- ---\n", + (ZoneName ? ZoneName : "NULL"), + (long)NumPtsI[CZ], + (long)NumPtsJ[CZ], + (long)NumPtsK[CZ]); + SHOWINFO(InfoLine); + } + if (ZoneName) + FREE_ARRAY(ZoneName, "ZoneName Array"); + } + } + + if (IsOk) + { + for (CZ = 1; CZ <= STRINGLISTGETCOUNT(UserRec); CZ++) + { + char *S = STRINGLISTGETSTRING(UserRec, CZ); + if (S) + { + int L; + strcpy(InfoLine, "UserRec: "); + L = (int)strlen(InfoLine); + strncat(&InfoLine[L], S, MAXCHARSINFOLINE - L - 2); + strcat(&InfoLine[strlen(InfoLine)], "\n"); + SHOWINFO(InfoLine); + FREE_ARRAY(S, "temp string"); + } + } + + + if (LoadRawData) + { + for (CZ = 0; CZ < NumZones; CZ++) + { + int CV; + for (CV = 0; CV < NumVars; CV++) + if (VDataBase[CZ*NumVars+CV]) + { + int I; + int NumPts = GetNumPts(ZoneType[CZ], NumPtsI[CZ], NumPtsJ[CZ], NumPtsK[CZ]); + int SLen = 0; + sprintf(InfoLine, "\n\nVariable data for zone %d, Var %d\n", CZ + 1, CV + 1); + SHOWINFO(InfoLine); + InfoLine[0] = '\0'; + for (I = 0; I < NumPts; I++) + { + char PString[50]; + if (SLen + 50 > MAXCHARSINFOLINE) + { + SHOWINFO(InfoLine); + InfoLine[0] = '\0'; + SLen = 0; + } + + sprintf(PString, "%lG ", VDataBase[CZ*NumVars+CV][I]); + strcat(InfoLine, PString); + SLen += (int)strlen(PString); + + if ((I % 5) == 4) + { + strcat(InfoLine, "\n"); + SLen++; + } + } + if (*InfoLine) + SHOWINFO(InfoLine); + FREE_ARRAY(VDataBase[CZ*NumVars+CV], "vdatabase double"); + } + if (NodeMap[CZ]) + { + int I, J; + int PtsPerCell = GetNumPtsPerCell(ZoneType[CZ]); + int SLen = 0; + SHOWINFO("\nConnectivity list:\n"); + InfoLine[0] = '\0'; + for (J = 0; J < NumPtsJ[CZ]; J++) + { + if (SLen + 200 > MAXCHARSINFOLINE) + { + SHOWINFO(InfoLine); + InfoLine[0] = '\0'; + SLen = 0; + } + for (I = 0; I < PtsPerCell; I++) + { + char NString[20]; + sprintf(NString, "%u ", (unsigned int)NodeMap[CZ][J*PtsPerCell+I] + 1); + strcat(InfoLine, NString); + SLen += (int)strlen(NString); + } + strcat(InfoLine, "\n"); + SLen++; + } + if (*InfoLine) + SHOWINFO(InfoLine); + FREE_ARRAY(NodeMap[CZ], "nodemap"); + } + } + FREE_ARRAY(NodeMap, "Nodemap base array"); + FREE_ARRAY(VDataBase, "vdatabase base array"); + } + } + + SHOWINFO("\n\n"); + + DeallocHeaderInfo(&DataSetTitle, + &VarNames, + &ZoneNames, + &NumPtsI, + &NumPtsJ, + &NumPtsK, + &ZoneType, + &UserRec); + } +} + + + +#if !defined ADDON +int main(int argc, char *(argv[])) +{ + short CurFile; + + if (argc == 1) + { + printf("Err: Need: pltview file1 [file2] ...\n"); + exit(-1); + } + + for (CurFile = 1; CurFile < argc; CurFile++) + ReportFileInfo(argv[CurFile], FALSE, FALSE); + + return 0; +} +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/readme.txt b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/readme.txt new file mode 100644 index 00000000000..5b47bdb4eae --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/readme.txt @@ -0,0 +1,51 @@ +*********************************************** +** README ** +*********************************************** + +To build the TecIO library and/or the pltview utility +simply run the Runmake script in this directory. + +If customization is needed it will most likely be done +in GLOBAL.h (to identify machine as 64 bit) and/or in +dataio4.c. Just look for CRAY in dataio4.c and you +will find most of the critical areas. Note that the +existing code defined by CRAY is quite old and has +not been in use for some time. + +Each example has its own Makefile. You may have to adjust +the variables at the top of the Makefile for your platform. + + +ReadTec() + +The ReadTec() is included in the tecio library but is +not supported by Tecplot, Inc. ReadTec is used +to read Tecplot binary data files (all versions at or +older than the Tecplot version providing the tecio +library). See tecsrc/DATAUTIL.h for more information. + +The pltview example app gives an example of using ReadTec +to read just the header from a file as well as loading all +field data from a file./* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ALLOC.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ALLOC.h new file mode 100644 index 00000000000..f07fc07f905 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ALLOC.h @@ -0,0 +1,205 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2009 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ +#ifndef ALLOC_H +#define ALLOC_H + +#include "TASSERT.h" +#if defined __cplusplus +#include <new> +#endif + +#if !defined __cplusplus +#define ALLOC_ARRAY(N,Type,str) (Type *)malloc((N)*sizeof(Type)) +#define ALLOC_ITEM(Type,str) (Type *)malloc(sizeof(Type)) +#ifdef _DEBUG +/* NOTE: the pointer is set to 0xFFFF after the free for debug */ +/* versions in the hopes of catching invalid pointer usage */ +#define FREE_ARRAY(X,str) do { free((void *)(X)); *((void **)&(X)) = (void *)0xFFFF; } while (0) +#define FREE_ITEM(X,str) do { free((void *)(X)); *((void **)&(X)) = (void *)0xFFFF; } while (0) +#else +#define FREE_ARRAY(X,str) free((void *)(X)) +#define FREE_ITEM(X,str) free((void *)(X)) +#endif +#else +#ifdef TRACK_MEMORY_USAGE +extern void initMemoryUsageTracking(void); +extern void cleanUpMemoryUsageTracking(void); +extern void trackMemoryAlloc(size_t size); +extern void trackMemoryFree(size_t size); +extern void trackMemoryClearHighMark(void); +extern void trackMemorySaveHighMark(void); +extern void getMemoryUsage(size_t* memoryInUse, + size_t* memoryCurrentHighMark, + size_t* memorySavedHighMark, + size_t* memoryTotalHighMark); +#endif +/* +* Create a version of new that returns NULL instead +* of throwing std::bad_alloc. A lot of code is written using +* ALLOC_ITEM and ALLOC_ARRAY that expect a return value of +* NULL on failure instead of the exception. 2008-05-08 CAM +*/ +#if defined MSWIN && defined _DEBUG +template <typename T> +inline T *nonExceptionNew(size_t numItems, + const char* fileName, + int lineNumber) +{ + REQUIRE(numItems > 0); + REQUIRE(VALID_REF(fileName)); + REQUIRE(lineNumber > 0); + T* result; + try + { +#ifdef DEBUG_NEW +#ifdef new +#undef new +#define USING_DEBUG_NEW +#endif + result = new(fileName, lineNumber) T[numItems]; +#ifdef USING_DEBUG_NEW +#define new DEBUG_NEW +#undef USING_DEBUG_NEW +#endif +#else + result = new T[numItems]; +#endif + } + catch (std::bad_alloc&) + { + result = NULL; + } +#ifdef TRACK_MEMORY_USAGE + if (result != NULL) + { +#ifdef MSWIN + trackMemoryAlloc(_msize(result)); +#else + trackMemoryAlloc(malloc_usable_size(result)); +#endif + } +#endif + ENSURE(VALID_REF_OR_NULL(result)); + return result; +} +#define ALLOC_ARRAY(N,Type,str) nonExceptionNew<Type>((N),__FILE__,__LINE__) +#else +template <typename T> +inline T *nonExceptionNew(size_t numItems) +{ + REQUIRE(numItems > 0); + T *result; + try + { + result = new T[numItems]; + } + catch (std::bad_alloc&) + { + result = NULL; + } +#ifdef TRACK_MEMORY_USAGE + if (result != NULL) + { +#ifdef MSWIN + trackMemoryAlloc(_msize(result)); +#else + trackMemoryAlloc(malloc_usable_size(result)); +#endif + } +#endif + ENSURE(VALID_REF_OR_NULL(result)); + return result; +} +#define ALLOC_ARRAY(N,Type,str) nonExceptionNew<Type>((N)) +#endif +#define ALLOC_ITEM(Type,str) ALLOC_ARRAY(1,Type,str) + +/* +* Although delete doesn't throw exceptions, this function matches +* nonExceptionNew, and also reports the size of the block if we +* are tracking memory. +*/ +template <typename T> +inline void nonExceptionDelete(T* &ptr) +{ +#if defined MSWIN && !defined NO_ASSERTS + CHECK(!IsBadReadPtr((void*)ptr, 1)); +#endif +#if defined TRACK_MEMORY_USAGE + if (ptr != NULL) + { +#ifdef MSWIN + trackMemoryFree(_msize(ptr)); +#else + trackMemoryFree(malloc_usable_size(ptr)); +#endif + } +#endif + + delete [] ptr; +#if !defined NO_ASSERTS + /* + * NOTE: the pointer is set to 0xFFFF after the free for asserted + * builds in the hopes of catching invalid pointer usage + */ + ptr = (T*)(void*)0xFFFF; +#endif +} +#define FREE_ARRAY(ptr,str) nonExceptionDelete((ptr)) +#define FREE_ITEM(ptr,str) FREE_ARRAY(ptr,str) +#endif + +/** +* The following functor can be used to easily deallocate memory from containers +* that hold pointers to allocated objects. For example: +* +* vector<MyObject*> container; +* for (int ii = 0; ii < 10; ii++ +* container.push_back(new MyObject); +* ... do something with the objects ... +* ... now we need to clean up ... +* for_each(container.begin(), +* container.end(), +* DeleteItem()); +*/ +struct DeleteItem +{ + template<typename T> + void operator()(T*& object) + { + delete object; + object = NULL; + } +}; + +#endif /* ALLOC_H */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ARRLIST.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ARRLIST.h new file mode 100644 index 00000000000..0203dae29b7 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/ARRLIST.h @@ -0,0 +1,626 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ +#if !defined ARRLIST_h +#define ARRLIST_h + +#if defined EXTERN +# undef EXTERN +#endif +#if defined ARRLISTMODULE +# define EXTERN +#else +# define EXTERN extern +#endif + +typedef enum +{ + ArrayListType_UnsignedChar, + ArrayListType_UnsignedShort, + ArrayListType_UnsignedInt, + ArrayListType_UnsignedLong, + ArrayListType_Int64, + ArrayListType_Char, + ArrayListType_Short, + ArrayListType_Int, + ArrayListType_Long, + ArrayListType_Float, + ArrayListType_Double, + ArrayListType_LgIndex, + ArrayListType_EntIndex, + ArrayListType_SmInteger, + ArrayListType_Boolean, + ArrayListType_ArbParam, + ArrayListType_UnsignedCharPtr, + ArrayListType_UnsignedShortPtr, + ArrayListType_UnsignedIntPtr, + ArrayListType_UnsignedLongPtr, + ArrayListType_Int64Ptr, + ArrayListType_CharPtr, + ArrayListType_ShortPtr, + ArrayListType_IntPtr, + ArrayListType_LongPtr, + ArrayListType_FloatPtr, + ArrayListType_DoublePtr, + ArrayListType_LgIndexPtr, + ArrayListType_EntIndexPtr, + ArrayListType_SmIntegerPtr, + ArrayListType_BooleanPtr, + ArrayListType_ArbParamPtr, + ArrayListType_VoidPtr, + ArrayListType_FunctionPtr, + ArrayListType_Any, + END_ArrayListType_e, + ArrayListType_Invalid = BadEnumValue +} ArrayListType_e; + +typedef union +{ + unsigned char UnsignedChar; + unsigned short UnsignedShort; + unsigned int UnsignedInt; + unsigned long UnsignedLong; + Int64_t Int64; + char Char; + short Short; + int Int; + long Long; + float Float; + double Double; + LgIndex_t LgIndex; + EntIndex_t EntIndex; + SmInteger_t SmInteger; + Boolean_t BBoolean; /* X-Windows uses Boolean */ + ArbParam_t ArbParam; + unsigned char *UnsignedCharPtr; + unsigned short *UnsignedShortPtr; + unsigned int *UnsignedIntPtr; + unsigned long *UnsignedLongPtr; + Int64_t *Int64Ptr; + char *CharPtr; + short *ShortPtr; + int *IntPtr; + long *LongPtr; + float *FloatPtr; + double *DoublePtr; + LgIndex_t *LgIndexPtr; + EntIndex_t *EntIndexPtr; + SmInteger_t *SmIntegerPtr; + Boolean_t *BooleanPtr; + ArbParam_t *ArbParamPtr; + void *VoidPtr; + void (*FunctionPtr)(void); +} ArrayListItem_u; + +/** + * NULL array list item for added convenience of inserting a NULL item without + * having to declare and assign one. Can be used as follows: + * + * IsOk = ArrayListInsertItem(SomeArrayList, SomeIndex, ArrayListNumItem); + * + * NOTE: This value must be set to zero before Tecplot uses array lists. + * memset(&ArrayListNullItem, 0, sizeof(ArrayListType_Any)); + */ +EXTERN ArrayListItem_u ArrayListNullItem; + +/** + * Visitor for traversing an array list. An iterator may not perform any + * operation that will adjust the size of the list. In other words it may not + * insert or delete items from the list. However an iterator may perform a get + * operation or a set operation that do not expand the list size. + * + * param ItemRef + * Reference to the array list item visited. + * param ClientData + * Any client data required for the visitor. + * + * return + * TRUE to continue visiting items, otherwise + * FALSE to discontinue visiting + */ +typedef Boolean_t (*ArrayListItemVisitor_pf)(void *ItemRef, + ArbParam_t ClientData); +#if 0 /* use this stub as a starting place */ +{ + REQUIRE(VALID_REF(TypeRef)); + REQUIRE(VALID_REF(*TypeRef) || *TypeRef == NULL); + + Boolean_t DoContinue = TRUE; + <type> *TypeRef = (<type> *)ItemRef; + + ENSURE(VALID_BOOLEAN(DoContinue)); + return DoContinue; +} +#endif + + +/** + * Destructor for cleaning up one or more array list items. If a destructor is + * not supplied then the array items are simply discarded. + * + * NOTE: The only change to ArrayListItemVisitor_pf is the policy which + * requires that the return value is TRUE. + * + * param ItemRef + * Reference to the array list item to cleanup. + * param ClientData + * Any client data required for cleanup. + * + * return + * TRUE is a requirement + */ +typedef ArrayListItemVisitor_pf ArrayListItemDestructor_pf; + + +/** + * Duplicator for copying one or more array list items. If a duplicator is not + * supplied then the array items are simply copied. For pointer types this + * means by reference. Note that if a duplicator is used the rules for + * duplication and subsequent cleanup are defined by the client. + * + * param TargetItemRef + * Reference to the array list to receive the duplicate. + * param SourceItemRef + * Reference to the array list item to duplicate. + * param ClientData + * Any client data required for duplication. + * + * return + * TRUE if the duplication was a success + * FALSE otherwise. If the duplication failed it + * is the client's responsibility to cleanup any + * partial duplication + */ +typedef Boolean_t (*ArrayListItemDuplicator_pf)(void *TargetItemRef, + void *SourceItemRef, + ArbParam_t ClientData); +#if 0 /* use this stub as a starting place */ +{ + REQUIRE(VALID_REF(TargetTypeRef)); + REQUIRE(VALID_REF(SourceTypeRef)); + REQUIRE(VALID_REF(*SourceTypeRef) || *SourceTypeRef == NULL); + + Boolean_t IsOk = TRUE; + <type> *TargetTypeRef = (<type> *)TargetItemRef; + <type> *SourceTypeRef = (<type> *)SourceItemRef; + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} +#endif + + +/** + * Adjusts the capacity request as necessary to minimize memory reallocations + * for large lists. Unless the request exceeds the maximum the adjusted + * capacity will be at least as big as requested however it may be larger if it + * is determined that the space requirement is growing faster. If the maximum + * is exceeded zero should be returned. + * + * param ArrayList + * Array list requesting the change in capacity. + * param CurrentCapacity + * Current capacity of the array list. + * param RequestedCapacity + * Capacity request or zero for default size. + * param ClientData + * Any client data needed for the adjustment. + * + * return + * Adjusted capacity that is at least as large as the request or zero if + * unable to satisfy the requested capacity. + */ +typedef LgIndex_t (*ArrayListCapacityRequestAdjuster_pf)(ArrayList_pa ArrayList, + LgIndex_t CurrentCapacity, + LgIndex_t RequestedCapacity, + ArbParam_t ClientData); +#if 0 /* use this stub as a starting place */ +{ + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE((RequestedCapacity == 0 && CurrentCapacity == 0) || + RequestedCapacity > ArrayList->Capacity); + + LgIndex_t Result; + + ENSURE(Result == 0 || Result >= RequestedCapacity); + return Result; +} +#endif + + +/* private ArrayList structure: only exposed so STRUTIL can use it */ +typedef struct _ArrayList_s +{ + char *Array; /* byte array for holding the items */ + ArrayListType_e Type; /* type of array items */ + SmInteger_t ItemSize; /* byte size of an individual item */ + LgIndex_t Count; /* number of items in the array */ + LgIndex_t Capacity; /* maximum holding capacity of the array */ + Boolean_t IsVisitingItems; /* indicates if an iteration is in progress */ + ArrayListCapacityRequestAdjuster_pf CapacityRequestAdjuster; + ArbParam_t CapacityRequestAdjusterClientData; +} ArrayList_s; + + +/** + * Compares two array list elements. Note that either string may be + * NULL as array lists allow for NULL elements. + * + * @param Item1 + * Element to compare against Item2. + * @param Item2 + * Element to compare against Item1. + * @param ClientData + * Contextual information that was passed to the 'ArrayListQSort' function. + * + * @return + * - A value less than zero if Item1 is less than Item2. + * - A value of zero if Item1 is equal to Item2. + * - A value greater than zero if Item1 is greater than Item2. + */ +typedef int (STDCALL *ArrayListItemComparator_pf)(ArrayListItem_u Item1, + ArrayListItem_u Item2, + ArbParam_t ClientData); + +EXTERN Boolean_t ArrayListIsValid(ArrayList_pa ArrayList); +EXTERN ArrayListType_e ArrayListGetType(ArrayList_pa ArrayList); +EXTERN Boolean_t ArrayListEnlargeCapacity(ArrayList_pa ArrayList, + LgIndex_t RequestedCapacity); +EXTERN ArrayList_pa ArrayListAlloc(LgIndex_t EstimatedCapacity, + ArrayListType_e Type, + ArrayListCapacityRequestAdjuster_pf CapacityRequestAdjuster, + ArbParam_t CapacityRequestAdjusterClientData); +EXTERN void ArrayListDealloc(ArrayList_pa *ArrayList, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData); +EXTERN void ArrayListDeleteAllItems(ArrayList_pa ArrayList, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData); +EXTERN void ArrayListDeleteItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData); +EXTERN void ArrayListDeleteItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData); +EXTERN ArrayList_pa ArrayListRemoveItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count); +EXTERN ArrayListItem_u ArrayListRemoveItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset); +EXTERN Boolean_t ArrayListInsertItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + ArrayListItem_u Item); +EXTERN Boolean_t ArrayListInsert(ArrayList_pa Target, + LgIndex_t ItemOffset, + ArrayList_pa Source); +EXTERN Boolean_t ArrayListVisitItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count, + ArrayListItemVisitor_pf ItemVisitor, + ArbParam_t ClientData); +EXTERN ArrayList_pa ArrayListGetItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count); +EXTERN ArrayListItem_u ArrayListGetItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset); +EXTERN Boolean_t ArrayListSetItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + ArrayListItem_u Item, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData); +EXTERN Boolean_t ArrayListAppendItem(ArrayList_pa ArrayList, + ArrayListItem_u Item); +EXTERN Boolean_t ArrayListAppend(ArrayList_pa Target, + ArrayList_pa Source); +EXTERN ArrayList_pa ArrayListCopy(ArrayList_pa ArrayList, + ArrayListItemDuplicator_pf ItemDuplicator, + ArbParam_t ClientData); +EXTERN void *ArrayListToArray(ArrayList_pa ArrayList, + ArrayListItemDuplicator_pf ItemDuplicator, + ArbParam_t ClientData); +EXTERN ArrayList_pa ArrayListFromArray(void *Source, + LgIndex_t Count, + ArrayListType_e Type, + ArrayListItemDuplicator_pf ItemDuplicator, + ArbParam_t ClientData); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +EXTERN void ArrayListQSort(ArrayList_pa ArrayList, + ArrayListItemComparator_pf Comparator, + ArbParam_t ClientData); +EXTERN Boolean_t ArrayListBSearch(ArrayList_pa ArrayList, + ArrayListItem_u Item, + ArrayListItemComparator_pf Comparator, + ArbParam_t ClientData, + LgIndex_t *ItemIndex); + +#if defined USE_MACROS_FOR_FUNCTIONS +/** + * Gets the array list's internal buffer representation. + * Use ArrayListGetXxx accessors whenever possible as their + * implementation in the release build is as fast as using + * the array directly anyway. + * + * WARNING: + * Some array list functions modify the internal buffer. + * This will invalidate this reference however it is + * the client's responsibility not to make further use + * of it. In addition, this reference should never be + * deallocated directly as the array list assumes the + * responsible for the cleanup. + * + * param ArrayList + * Array list for which a reference to the internal + * buffer is desired. + * + * return + * Reference to the array list's internal buffer. + */ +# define ArrayListGetInternalRef ArrayListGetInternalRef_MACRO +/** + * Gets the item's internal reference at the specified offset in the list. + * + * WARNING: + * Some array list functions modify the internal buffer. + * This will invalidate this reference however it is + * the client's responsibility not to make further use + * of it. In addition, this reference should never be + * deallocated directly as the array list assumes the + * responsible for the cleanup. + * + * param ArrayList + * Array list containing the desired item. + * param ItemOffset + * Offset to the item in the list. + * + * return + * The internal reference to the requested item. + */ +# define ArrayListGetItemInternalRef ArrayListGetItemInternalRef_MACRO +# define ArrayListGetCount ArrayListGetCount_MACRO + +# define ArrayListGetUnsignedChar(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned char) +# define ArrayListGetUnsignedShort(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned short) +# define ArrayListGetUnsignedInt(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned int) +# define ArrayListGetUnsignedLong(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned long) +# define ArrayListGetInt64(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, Int64_t) +# define ArrayListGetChar(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, char) +# define ArrayListGetShort(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, short) +# define ArrayListGetInt(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, int) +# define ArrayListGetLong(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, long) +# define ArrayListGetFloat(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, float) +# define ArrayListGetDouble(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, double) +# define ArrayListGetLgIndex(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, LgIndex_t) +# define ArrayListGetEntIndex(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, EntIndex_t) +# define ArrayListGetSmInteger(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, SmInteger_t) +# define ArrayListGetBoolean(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, Boolean_t) +# define ArrayListGetArbParam(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, ArbParam_t) +# define ArrayListGetUnsignedCharPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned char *) +# define ArrayListGetUnsignedShortPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned short *) +# define ArrayListGetUnsignedIntPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned int *) +# define ArrayListGetUnsignedLongPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, unsigned long *) +# define ArrayListGetInt64Ptr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, Int64_t *) +# define ArrayListGetCharPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, char *) +# define ArrayListGetShortPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, short *) +# define ArrayListGetIntPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, int *) +# define ArrayListGetLongPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, long *) +# define ArrayListGetFloatPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, float *) +# define ArrayListGetDoublePtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, double *) +# define ArrayListGetLgIndexPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, LgIndex_t *) +# define ArrayListGetEntIndexPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, EntIndex_t *) +# define ArrayListGetSmIntegerPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, SmInteger_t *) +# define ArrayListGetBooleanPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, Boolean_t *) +# define ArrayListGetArbParamPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, ArbParam_t *) +# define ArrayListGetVoidPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, void *) +# define ArrayListGetFunctionPtr(ArrayList, ItemOffset) ArrayListGetTypedItem(ArrayList, ItemOffset, (**)(void)) +#else +# define ArrayListGetInternalRef ArrayListGetInternalRef_FUNC +# define ArrayListGetItemInternalRef ArrayListGetItemInternalRef_FUNC +# define ArrayListGetCount ArrayListGetCount_FUNC + +# define ArrayListGetUnsignedChar(ArrayList, ItemOffset) (*((unsigned char *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetUnsignedShort(ArrayList, ItemOffset) (*((unsigned short *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetUnsignedInt(ArrayList, ItemOffset) (*((unsigned int *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetUnsignedLong(ArrayList, ItemOffset) (*((unsigned long *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetInt64(ArrayList, ItemOffset) (*((Int64_t *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetChar(ArrayList, ItemOffset) (*((char *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetShort(ArrayList, ItemOffset) (*((short *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetInt(ArrayList, ItemOffset) (*((int *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetLong(ArrayList, ItemOffset) (*((long *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetFloat(ArrayList, ItemOffset) (*((float *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetDouble(ArrayList, ItemOffset) (*((double *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetLgIndex(ArrayList, ItemOffset) (*((LgIndex_t *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetEntIndex(ArrayList, ItemOffset) (*((EntIndex_t *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetSmInteger(ArrayList, ItemOffset) (*((SmInteger_t *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetBoolean(ArrayList, ItemOffset) (*((Boolean_t *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetArbParam(ArrayList, ItemOffset) (*((ArbParam_t *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetUnsignedCharPtr(ArrayList, ItemOffset) (*((unsigned char * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetUnsignedShortPtr(ArrayList, ItemOffset) (*((unsigned short * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetUnsignedIntPtr(ArrayList, ItemOffset) (*((unsigned int * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetUnsignedLongPtr(ArrayList, ItemOffset) (*((unsigned long * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetInt64Ptr(ArrayList, ItemOffset) (*((Int64_t * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetCharPtr(ArrayList, ItemOffset) (*((char * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetShortPtr(ArrayList, ItemOffset) (*((short * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetIntPtr(ArrayList, ItemOffset) (*((int * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetLongPtr(ArrayList, ItemOffset) (*((long * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetFloatPtr(ArrayList, ItemOffset) (*((float * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetDoublePtr(ArrayList, ItemOffset) (*((double * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetLgIndexPtr(ArrayList, ItemOffset) (*((LgIndex_t * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetEntIndexPtr(ArrayList, ItemOffset) (*((EntIndex_t * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetSmIntegerPtr(ArrayList, ItemOffset) (*((SmInteger_t * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetBooleanPtr(ArrayList, ItemOffset) (*((Boolean_t * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetArbParamPtr(ArrayList, ItemOffset) (*((ArbParam_t * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetVoidPtr(ArrayList, ItemOffset) (*((void * *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +# define ArrayListGetFunctionPtr(ArrayList, ItemOffset) (*(((**)(void) *)ArrayListGetItemInternalRef_FUNC(ArrayList, ItemOffset))) +#endif + +#if !defined USE_MACROS_FOR_FUNCTIONS +EXTERN const void *ArrayListGetInternalRef_FUNC(ArrayList_pa ArrayList); +EXTERN const void *ArrayListGetItemInternalRef_FUNC(ArrayList_pa ArrayList, + LgIndex_t ItemOffset); +EXTERN LgIndex_t ArrayListGetCount_FUNC(ArrayList_pa ArrayList); +#endif + +#define ArrayListGetInternalRef_MACRO(ArrayList) ((const void *)((ArrayList)->Array)) +#define ArrayListGetItemInternalRef_MACRO(ArrayList, ItemOffset) ((const void *)&((ArrayList)->Array[(ItemOffset)*(ArrayList)->ItemSize])) +#define ArrayListGetCount_MACRO(ArrayList) ((ArrayList)->Count) +#define ArrayListGetTypedArrayRef(ArrayList, NativeType) ((NativeType *)((ArrayList)->Array)) +#define ArrayListGetTypedItem(ArrayList, ItemOffset, NativeType) (ArrayListGetTypedArrayRef(ArrayList,NativeType)[ItemOffset]) + +/** + * Simple macro to determine if the item offset is within the array list + * capacity. In the debug or checked builds we also perform a lower bound + * assertion check. + */ +#if defined NO_ASSERTS +# define ArrayListOffsetWithinCapacity(ArrayList, ItemOffset) ((ItemOffset) < (ArrayList)->Capacity) +#else +/** + * Using 'assert' rather than 'REQUIRE' because under Windows, REQUIRE (and ASSERT) trickles down to being a + * do-while loop, which doesn't jive well with the comma operator. + */ +# define ArrayListOffsetWithinCapacity(ArrayList, ItemOffset) ((assert((ItemOffset) >= 0),TRUE) && ((ItemOffset) < (ArrayList)->Capacity)) +#endif + +/** + * Places the item at the specified offset. If the offset is beyond the + * end of the list it is sized accordingly and the intervening items + * between the last item of the original state and the last item of the + * new state are guaranteed to be 0. + * + * This is the workhorse of the set and append convenience macros that follow. + * Please note that unlike ArrayListSetItem no destructor facility is provided + * therefore if an item previously occupied 'ItemOffset' it will be replaced. + * + * param ArrayList + * Array list target in which to set the item. + * param ItemOffset + * Offset of the item. + * param Item + * Item to set at the specified offset. Its native type must + * match 'NativeType' + * param NativeType + * Native type of 'Item'. + * + * return + * TRUE if sufficient memory permitted the operation, otherwise FALSE. + */ +#define ArrayListSetTypedItem(ArrayList, ItemOffset, Item, NativeType) \ + ((ArrayListOffsetWithinCapacity((ArrayList), (ItemOffset)) || \ + ArrayListEnlargeCapacity((ArrayList), (ItemOffset)+1)) \ + ? (((((NativeType *)((ArrayList)->Array))[(ItemOffset)]) = (Item)), \ + (((ItemOffset)+1 > (ArrayList)->Count) \ + ? (((ArrayList)->Count = (ItemOffset)+1), TRUE) \ + : (TRUE))) \ + : (FALSE)) + +/** + * This section provides macros for high speed setting and appending to an + * array list of a known type. The only additional overhead incurred versus just + * using a simple array is the cost of testing the array list capacity. + */ +#define ArrayListSetUnsignedChar(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned char) +#define ArrayListSetUnsignedShort(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned short) +#define ArrayListSetUnsignedInt(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned int) +#define ArrayListSetUnsignedLong(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned long) +#define ArrayListSetInt64(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, Int64_t) +#define ArrayListSetChar(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, char) +#define ArrayListSetShort(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, short) +#define ArrayListSetInt(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, int) +#define ArrayListSetLong(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, long) +#define ArrayListSetFloat(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, float) +#define ArrayListSetDouble(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, double) +#define ArrayListSetLgIndex(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, LgIndex_t) +#define ArrayListSetEntIndex(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, EntIndex_t) +#define ArrayListSetSmInteger(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, SmInteger_t) +#define ArrayListSetBoolean(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, Boolean_t) +#define ArrayListSetArbParam(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, ArbParam_t) +#define ArrayListSetUnsignedCharPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned char *) +#define ArrayListSetUnsignedShortPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned short *) +#define ArrayListSetUnsignedIntPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned int *) +#define ArrayListSetUnsignedLongPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, unsigned long *) +#define ArrayListSetInt64Ptr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, Int64_t *) +#define ArrayListSetCharPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, char *) +#define ArrayListSetShortPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, short *) +#define ArrayListSetIntPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, int *) +#define ArrayListSetLongPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, long *) +#define ArrayListSetFloatPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, float *) +#define ArrayListSetDoublePtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, double *) +#define ArrayListSetLgIndexPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, LgIndex_t *) +#define ArrayListSetEntIndexPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, EntIndex_t *) +#define ArrayListSetSmIntegerPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, SmInteger_t *) +#define ArrayListSetBooleanPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, Boolean_t *) +#define ArrayListSetArbParamPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, ArbParam_t *) +#define ArrayListSetVoidPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, void *) +#define ArrayListSetFunctionPtr(ArrayList, ItemOffset, Item) ArrayListSetTypedItem(ArrayList, ItemOffset, Item, (**)(void)) + +#define ArrayListAppendUnsignedChar(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned char) +#define ArrayListAppendUnsignedShort(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned short) +#define ArrayListAppendUnsignedInt(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned int) +#define ArrayListAppendUnsignedLong(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned long) +#define ArrayListAppendInt64(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, Int64_t) +#define ArrayListAppendChar(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, char) +#define ArrayListAppendShort(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, short) +#define ArrayListAppendInt(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, int) +#define ArrayListAppendLong(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, long) +#define ArrayListAppendFloat(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, float) +#define ArrayListAppendDouble(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, double) +#define ArrayListAppendLgIndex(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, LgIndex_t) +#define ArrayListAppendEntIndex(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, EntIndex_t) +#define ArrayListAppendSmInteger(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, SmInteger_t) +#define ArrayListAppendBoolean(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, Boolean_t) +#define ArrayListAppendArbParam(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, ArbParam_t) +#define ArrayListAppendUnsignedCharPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned char *) +#define ArrayListAppendUnsignedShortPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned short *) +#define ArrayListAppendUnsignedIntPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned int *) +#define ArrayListAppendUnsignedLongPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, unsigned long *) +#define ArrayListAppendInt64Ptr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, Int64_t *) +#define ArrayListAppendCharPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, char *) +#define ArrayListAppendShortPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, short *) +#define ArrayListAppendIntPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, int *) +#define ArrayListAppendLongPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, long *) +#define ArrayListAppendFloatPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, float *) +#define ArrayListAppendDoublePtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, double *) +#define ArrayListAppendLgIndexPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, LgIndex_t *) +#define ArrayListAppendEntIndexPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, EntIndex_t *) +#define ArrayListAppendSmIntegerPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, SmInteger_t *) +#define ArrayListAppendBooleanPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, Boolean_t *) +#define ArrayListAppendArbParamPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, ArbParam_t *) +#define ArrayListAppendVoidPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, void *) +#define ArrayListAppendFunctionPtr(ArrayList, Item) ArrayListSetTypedItem(ArrayList, (ArrayList)->Count, Item, (**)(void)) + +#endif /* ARRLIST_h */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/AUXDATA.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/AUXDATA.h new file mode 100644 index 00000000000..27c4747a3d2 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/AUXDATA.h @@ -0,0 +1,130 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* + ***************************************************************** + ***************************************************************** + ******* ******** + ****** Copyright (C) 1988-2008 Tecplot, Inc. ******* + ******* ******** + ***************************************************************** + ***************************************************************** + */ +#if !defined AUXDATA_h +#define AUXDATA_h + +#if defined EXTERN +# undef EXTERN +#endif +#if defined AUXDATAMODULE +# define EXTERN +#else +# define EXTERN extern +#endif + +/** + */ +EXTERN Boolean_t AuxDataIsValidNameChar(char Char, + Boolean_t IsLeadChar); +/** + */ +EXTERN Boolean_t AuxDataIsValidName(const char *Name); + +/** + */ +EXTERN AuxData_pa AuxDataAlloc(void); + +/** + */ +EXTERN void AuxDataDealloc(AuxData_pa *AuxData); + +/** + */ +EXTERN Boolean_t AuxDataItemDestructor(void *ItemRef, + ArbParam_t ClientData); +/** + */ +EXTERN AuxData_pa AuxDataCopy(AuxData_pa AuxData, + Boolean_t ConsiderRetain); + +/** + */ +EXTERN LgIndex_t AuxDataGetNumItems(AuxData_pa AuxData); + +/** + */ +EXTERN Boolean_t AuxDataGetItemIndex(AuxData_pa AuxData, + const char *Name, + LgIndex_t *ItemIndex); +/** + */ +EXTERN void AuxDataGetItemByIndex(AuxData_pa AuxData, + LgIndex_t Index, + const char **Name, + ArbParam_t *Value, + AuxDataType_e *Type, + Boolean_t *Retain); + +/** + */ +EXTERN Boolean_t AuxDataGetItemByName(AuxData_pa AuxData, + const char *Name, + ArbParam_t *Value, + AuxDataType_e *Type, + Boolean_t *Retain); + +/** + */ +EXTERN Boolean_t AuxDataGetBooleanItemByName(AuxData_pa AuxData, + const char *Name, + Boolean_t *Value, + AuxDataType_e *Type, + Boolean_t *Retain); + +/** + */ +EXTERN Boolean_t AuxDataSetItem(AuxData_pa AuxData, + const char *Name, + ArbParam_t Value, + AuxDataType_e Type, + Boolean_t Retain); + +/** + */ +EXTERN Boolean_t AuxDataDeleteItemByName(AuxData_pa AuxData, + const char *Name); + +/** + */ +EXTERN Boolean_t AuxDataAppendItems(AuxData_pa TargetAuxData, + AuxData_pa SourceAuxData); +/** + */ +EXTERN void AuxDataDeleteItemByIndex(AuxData_pa AuxData, + LgIndex_t Index); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +#endif /* !defined AUXDATA_h */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO.h new file mode 100644 index 00000000000..c57df19edd9 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO.h @@ -0,0 +1,63 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#if defined EXTERN +#undef EXTERN +#endif +#if defined DATAIOMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +EXTERN Boolean_t OpenBinaryFileAndCheckMagicNumber(FileStream_s **FileStream, + char *FName, + FileOffset_t StartOffset, + short *IVersion); + +EXTERN Boolean_t ReadDataFileHeader(FileStream_s *FileStream, + short IVersion, + Boolean_t ShowDataIOStatus, + EntIndex_t *NumZones, + EntIndex_t *NumVars, + SmInteger_t *NumCustomLabelSets, + char **DataSetTitle, + Text_s **BaseText, + Geom_s **BaseGeom, + StringList_pa **CustomLabelBase, + StringList_pa *UserRec, + AuxData_pa *DataSetAuxData, + Set_pa **IsVarCellCentered, + Boolean_t *HasText, + Boolean_t *HasGeoms, + ArrayList_pa *ZoneSpecList, + StringList_pa *VarNames, + ArrayList_pa *VarAuxDataList, /*<AuxData_pa>[NumVars]*/ + Set_pa *IsRawFNAvailable, /* classic data only */ + LgIndex_t **FNNumBndryConns, /* classic data only */ + DataFileType_e *FileType); + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO4.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO4.h new file mode 100644 index 00000000000..7e97dc98f64 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAIO4.h @@ -0,0 +1,213 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#ifndef DATAIO4_H +#define DATAIO4_H +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#include <set> + +#if defined EXTERN +#undef EXTERN +#endif +#if defined DATAIO4MODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +EXTERN double GetNextValue(FileStream_s *FileStream, + FieldDataType_e FieldDataType, + double Min, + double Max, + Boolean_t *IsOk); +EXTERN LgIndex_t GetNextI(FileStream_s *FileStream, + Boolean_t *IsOk); +EXTERN LgIndex_t GetIoFileInt(FileStream_s *FileStream, + short Version, + LgIndex_t Min, + LgIndex_t Max, + Boolean_t *IsOk); +EXTERN Boolean_t ReadInString(FileStream_s *FileStream, + short IVersion, + int MaxCharacters, + char **S, + Boolean_t ProcessData); +EXTERN void ReadByteBlock(FileStream_s *FileStream, + Boolean_t DoRead, + Byte_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk); +EXTERN void ReadInt16Block(FileStream_s *FileStream, + Boolean_t DoRead, + Int16_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk); +EXTERN void ReadInt16BlockToInt32(FileStream_s *FileStream, + Boolean_t DoRead, + Int32_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk); +EXTERN void ReadInt32Block(FileStream_s *FileStream, + Boolean_t DoRead, + Int32_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk); +EXTERN void ReadPureBlock(FileStream_s *FileStream, + Boolean_t DoRead, + void *Buffer, + FieldDataType_e FieldDataType, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk); +EXTERN void ReadBlock(FileStream_s *FileStream, + FieldData_pa FieldData, + Boolean_t DoRead, + FieldDataType_e FieldDataTypeInFile, + HgIndex_t StartIndex, + HgIndex_t EndIndex, + Boolean_t *IsOk); +EXTERN void ReadClassicOrderedCCBlock(FileStream_s *DataFileStream, + FieldData_pa FieldData, + FieldDataType_e FieldDataTypeInFile, + LgIndex_t NumIPtsInFile, + LgIndex_t NumJPtsInFile, + LgIndex_t NumKPtsInFile, + Boolean_t *IsOk); +EXTERN Boolean_t ReadInDataFileTypeTitleAndVarNames(FileStream_s *FileStream, + short IVersion, + char **DataSetTitle, + DataFileType_e *FileType, + int *NumVars, + StringList_pa *VarNames); +EXTERN Boolean_t ReadInZoneHeader(FileStream_s *FileStream, + short IVersion, + ZoneSpec_s *ZoneSpec, + Set_pa IsVarCellCentered, + EntIndex_t NumVars, + Boolean_t *IsRawFNAvailable, + LgIndex_t *FNNumBndryConns); +EXTERN Boolean_t ReadInCustomLabels(FileStream_s *FileStream, + short IVersion, + Boolean_t OkToLoad, + StringList_pa *CustomLabelBase); +EXTERN Boolean_t ReadInUserRec(FileStream_s *FileStream, + short IVersion, + int MaxCharactersAllowed, + char **UserRec); +EXTERN Boolean_t ReadInAuxData(FileStream_s *FileStream, + short IVersion, + AuxData_pa AuxData); +EXTERN Boolean_t ReadInGeometry(FileStream_s *FileStream, + short IVersion, + Boolean_t OkToLoad, + Geom_s *G, + LgIndex_t MaxDataPts); +EXTERN Boolean_t ReadInText(FileStream_s *FileStream, + short IVersion, + Boolean_t OkToLoad, + Text_s *T, + LgIndex_t MaxTextLen); +/* + * STDCALL since PreplotAsciiDatafile is sent to RegisterDataSetReader + * which can also be used by addons. + */ +EXTERN Boolean_t STDCALL PreplotAsciiDatafile(char *CurFName, + char *BinaryFName, + char **MessageString); +EXTERN short GetInputVersion(FileStream_s *FileStream); + +EXTERN Boolean_t WriteBinaryInt16BlockUnaligned(FileStream_s *FileStream, + Byte_t *Int16Values, + HgIndex_t NumValues, + Boolean_t ValuesInNativeOrdering); +EXTERN Boolean_t WriteBinaryInt32BlockUnaligned(FileStream_s *FileStream, + Byte_t *Int32Values, + HgIndex_t NumValues, + Boolean_t ValuesInNativeOrdering); +EXTERN Boolean_t WriteBinaryByteBlock(FileStream_s *FileStream, + const Byte_t *ByteValues, + const HgIndex_t NumValues); +EXTERN Boolean_t WriteBinaryInt16(FileStream_s *FileStream, + Int16_t Value); +EXTERN Boolean_t WriteBinaryInt32(FileStream_s *FileStream, + Int32_t Value); +EXTERN Boolean_t WriteBinaryReal(FileStream_s *FileStream, + double RR, + FieldDataType_e FieldDataType); +EXTERN Boolean_t WriteFieldDataType(FileStream_s *FileStream, + FieldDataType_e FDT, + Boolean_t WriteBinary); +EXTERN Boolean_t WriteBinaryFieldDataBlock(FileStream_s *FileStream, + FieldData_pa D, + LgIndex_t StartI, + LgIndex_t NumValues); +EXTERN Boolean_t WriteCCFieldDataBlock(FileStream_s *FileStream, + FieldData_pa FieldData, + Boolean_t IsOrderedData, + LgIndex_t NumIPts, + LgIndex_t NumJPts, + LgIndex_t NumKPts, + Boolean_t WriteBinary, + SmInteger_t AsciiPrecision); +EXTERN Boolean_t DumpDatafileString(FileStream_s *FileStream, + const char *S, + Boolean_t WriteBinary); +bool DumpGeometry(FileStream_s* FileStream, + Geom_s const* Geom, + Boolean_t WriteBinary, + Boolean_t WriteGridDataAsPolar); +bool DumpText(FileStream_s* FileStream, + Text_s const* Text, + Boolean_t WriteBinary, + Boolean_t WriteGridDataAsPolar); +EXTERN Boolean_t DumpCustomAxisLabels(FileStream_s *FileStream, + Boolean_t WriteBinary, + StringList_pa LabelBase); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +EXTERN Boolean_t WriteBinaryMagic(FileStream_s *FileStream); + +bool writeBinaryVersionNumber(FileStream_s& fileStream, + int versionNumber); + +#endif //DATAIO4_H diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET.h new file mode 100644 index 00000000000..89cc27ff9c3 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET.h @@ -0,0 +1,90 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#ifndef DATASET_h__ +#define DATASET_h__ + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + + +/* + * DataSet functions involving zones, vars and the + * DataSet_s structure. See dataset0.c for low level + * dataset functions and dataset2 for higher level + * functions. + */ + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined USE_MACROS_FOR_FUNCTIONS +#else +#endif +#endif /* TECPLOTKERNEL */ + +Boolean_t FieldDataItemDestructor(void *ItemRef, + ArbParam_t ClientData); +Boolean_t ZoneSpecItemDestructor(void *ItemRef, + ArbParam_t ClientData); +LgIndex_t ZoneOrVarListAdjustCapacityRequest(ArrayList_pa ZoneOrVarArrayList, + LgIndex_t CurrentCapacity, + LgIndex_t RequestedCapacity, + ArbParam_t ClientData); +void CleanoutZoneSpec(ZoneSpec_s *ZoneSpec); +void ZoneSpecExcludeBndryConnsFromMetrics(ZoneSpec_s* ZoneSpec); +ZoneSpec_s *ZoneSpecAlloc(void); +void ZoneSpecDealloc(ZoneSpec_s **ZoneSpec); +void SetZoneSpecDefaults(ZoneSpec_s *ZoneSpec); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined USE_MACROS_FOR_FUNCTIONS +#else +#endif +#endif + +#define GetZoneSpec(ZoneSpecList,Zone) ((ZoneSpec_s *)ArrayListGetVoidPtr(ZoneSpecList,Zone)) +#define GetZoneAuxData(DataSet, Zone) (GetZoneSpec((DataSet)->ZoneSpecList, (Zone))->AuxData) +#define GetVarSpec(VarSpecList,Var) ((VarSpec_s *)ArrayListGetVoidPtr(VarSpecList,Var)) +#define GetVarAuxData(DataSet, Var) (GetVarSpec((DataSet)->VarSpecList, (Var))->AuxData) +#define GetStrandInfo(StrandInfoList, StrandID) ((StrandInfo_s *)ArrayListGetVoidPtr(StrandInfoList,StrandID)) + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* defined TECPLOTKERNEL */ + +#endif // DATASET_h__ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET0.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET0.h new file mode 100644 index 00000000000..ee33773f304 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASET0.h @@ -0,0 +1,404 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#if defined EXTERN +#undef EXTERN +#endif +#if defined DATASET0MODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +namespace tecplot +{ +namespace io +{ +class File; +} +} + +EXTERN void OutOfMemoryMsg(void); + +/* + * Turn on DEBUG_FIELDVALUES by default in any build with assertions on + * (including checked builds), but allow turning this off with + * NO_DEBUG_FIELDVALUES + */ +#if !defined NO_ASSERTS && !defined NO_DEBUG_FIELDVALUES && !defined DEBUG_FIELDVALUES +#define DEBUG_FIELDVALUES +#endif + +/* FieldData_a is intentionally not defined to further + * deter usage of this private structure */ +struct _FieldData_a +{ + void *Data; /* ...placed first in the structure for fastest access */ +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else + void *GetValueCallback[1]; /* ...this field is for TecIO only */ + void *SetValueCallback[1]; /* ...this field is for TecIO only */ +# endif + + /* PRIVATE */ + FieldDataType_e Type; + ValueLocation_e ValueLocation; + LgIndex_t RefCount; + LgIndex_t VarShareRefCount; + LgIndex_t NumValues; +# if defined TECPLOTKERNEL /* TecIO doesn't require these features yet. */ +/* CORE SOURCE CODE REMOVED */ +# endif +}; + + +/* * + * * NOTE: "FieldData_pa" here is an "abstract type". + * * Any routines dealing with the internals workings + * * of FieldData_pa must be in the same file as these + * * routines + * */ + +#if defined USE_MACROS_FOR_FUNCTIONS +#define USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +#endif + +/* + * These are low-level (private) FD manipulation functions. In + * most cases, you should use some higher-level function. These + * macros are supplied for the dataset functions to use. + */ +#if defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +#define GetFieldDataType GetFieldDataType_MACRO +#define GetFieldDataGetFunction GetFieldDataGetFunction_MACRO +#define GetFieldDataSetFunction GetFieldDataSetFunction_MACRO +#define GetFieldDataNumValues GetFieldDataNumValues_MACRO +#define GetFieldDataValueLocation GetFieldDataValueLocation_MACRO +#define IsFieldDataDirectAccessAllowed IsFieldDataDirectAccessAllowed_MACRO +#else +#define GetFieldDataType GetFieldDataType_FUNC +#define GetFieldDataGetFunction GetFieldDataGetFunction_FUNC +#define GetFieldDataSetFunction GetFieldDataSetFunction_FUNC +#define GetFieldDataNumValues GetFieldDataNumValues_FUNC +#define GetFieldDataValueLocation GetFieldDataValueLocation_FUNC +#define IsFieldDataDirectAccessAllowed IsFieldDataDirectAccessAllowed_FUNC +#endif + +#define GetFieldDataType_MACRO(FieldData) ((FieldData)->Type) +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else /* ...for TecIO only */ +#define GetFieldDataGetFunction_MACRO(FieldData) ((FieldValueGetFunction_pf)(FieldData)->GetValueCallback[0]) +#define GetFieldDataSetFunction_MACRO(FieldData) ((FieldValueSetFunction_pf)(FieldData)->SetValueCallback[0]) +#endif +#define GetFieldDataNumValues_MACRO(FieldData) ((FieldData)->NumValues) +#define GetFieldDataValueLocation_MACRO(FieldData) ((FieldData)->ValueLocation) + +EXTERN double STDCALL GetFieldValueForFloat(const FieldData_pa fd, LgIndex_t pt); +EXTERN double STDCALL GetFieldValueForDouble(const FieldData_pa fd, LgIndex_t pt); +EXTERN double STDCALL GetFieldValueForInt32(const FieldData_pa fd, LgIndex_t pt); +EXTERN double STDCALL GetFieldValueForInt16(const FieldData_pa fd, LgIndex_t pt); +EXTERN double STDCALL GetFieldValueForByte(const FieldData_pa fd, LgIndex_t pt); +EXTERN double STDCALL GetFieldValueForBit(const FieldData_pa fd, LgIndex_t pt); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else +#define IsFieldDataDirectAccessAllowed_MACRO(FieldData) ((FieldData)->Data != NULL) +#endif + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +EXTERN FieldDataType_e GetFieldDataType_FUNC(FieldData_pa FieldData); +EXTERN FieldValueGetFunction_pf GetFieldDataGetFunction_FUNC(FieldData_pa FieldData); +EXTERN FieldValueSetFunction_pf GetFieldDataSetFunction_FUNC(FieldData_pa FieldData); +EXTERN LgIndex_t GetFieldDataNumValues_FUNC(FieldData_pa FieldData); +EXTERN ValueLocation_e GetFieldDataValueLocation_FUNC(FieldData_pa FieldData); +EXTERN Boolean_t IsFieldDataDirectAccessAllowed_FUNC(FieldData_pa FieldData); +#endif + + +/* + * Use separate types for reversed byte data than unreversed data so we + * have better compiler checking. + */ +typedef UInt32_t FloatRev_t; +typedef UInt64_t DoubleRev_t; +typedef UInt16_t Int16Rev_t; +typedef UInt32_t Int32Rev_t; +typedef UInt64_t Int64Rev_t; + + +/* + * Note: there are so many GetFieldData*Ptr functions because we + * want a bunch of error checking. The Type and TypeRev check + * for that type. The Byte, 2Byte, etc. just make sure it is + * that type. + * GetFieldDataVoidPtr checks nothing, and thus should only be + * used with extreme caution (that is, checking the alignment + * and byte order by hand). + */ +#if defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +#define GetFieldDataFloatPtr GetFieldDataFloatPtr_MACRO +#define GetFieldDataFloatRevPtr GetFieldDataFloatRevPtr_MACRO +#define GetFieldDataDoublePtr GetFieldDataDoublePtr_MACRO +#define GetFieldDataDoubleRevPtr GetFieldDataDoubleRevPtr_MACRO +#define GetFieldDataInt64Ptr GetFieldDataInt64Ptr_MACRO +#define GetFieldDataInt64RevPtr GetFieldDataInt64RevPtr_MACRO +#define GetFieldDataInt32Ptr GetFieldDataInt32Ptr_MACRO +#define GetFieldDataInt32RevPtr GetFieldDataInt32RevPtr_MACRO +#define GetFieldDataInt16Ptr GetFieldDataInt16Ptr_MACRO +#define GetFieldDataInt16RevPtr GetFieldDataInt16RevPtr_MACRO +#define GetFieldDataBytePtr GetFieldDataBytePtr_MACRO +#define GetFieldData2BytePtr GetFieldData2BytePtr_MACRO +#define GetFieldData4BytePtr GetFieldData4BytePtr_MACRO +#define GetFieldData8BytePtr GetFieldData8BytePtr_MACRO +#define GetFieldDataVoidPtr GetFieldDataVoidPtr_MACRO /*danger:see above*/ +#else +#define GetFieldDataFloatPtr GetFieldDataFloatPtr_FUNC +#define GetFieldDataFloatRevPtr GetFieldDataFloatRevPtr_FUNC +#define GetFieldDataDoublePtr GetFieldDataDoublePtr_FUNC +#define GetFieldDataDoubleRevPtr GetFieldDataDoubleRevPtr_FUNC +#define GetFieldDataInt64Ptr GetFieldDataInt64Ptr_FUNC +#define GetFieldDataInt64RevPtr GetFieldDataInt64RevPtr_FUNC +#define GetFieldDataInt32Ptr GetFieldDataInt32Ptr_FUNC +#define GetFieldDataInt32RevPtr GetFieldDataInt32RevPtr_FUNC +#define GetFieldDataInt16Ptr GetFieldDataInt16Ptr_FUNC +#define GetFieldDataInt16RevPtr GetFieldDataInt16RevPtr_FUNC +#define GetFieldDataBytePtr GetFieldDataBytePtr_FUNC +#define GetFieldData2BytePtr GetFieldData2BytePtr_FUNC +#define GetFieldData4BytePtr GetFieldData4BytePtr_FUNC +#define GetFieldData8BytePtr GetFieldData8BytePtr_FUNC +#define GetFieldDataVoidPtr GetFieldDataVoidPtr_FUNC /*danger:see above*/ +#endif + +#define GetFieldDataFloatPtr_MACRO(FieldData) ((float *)((FieldData)->Data)) +#define GetFieldDataFloatRevPtr_MACRO(FieldData) ((FloatRev_t *)((FieldData)->Data)) +#define GetFieldDataDoublePtr_MACRO(FieldData) ((double *)((FieldData)->Data)) +#define GetFieldDataDoubleRevPtr_MACRO(FieldData) ((DoubleRev_t *)((FieldData)->Data)) +#define GetFieldDataInt64Ptr_MACRO(FieldData) ((Int64_t *)((FieldData)->Data)) +#define GetFieldDataInt64RevPtr_MACRO(FieldData) ((Int64Rev_t *)((FieldData)->Data)) +#define GetFieldDataInt32Ptr_MACRO(FieldData) ((Int32_t *)((FieldData)->Data)) +#define GetFieldDataInt32RevPtr_MACRO(FieldData) ((Int32Rev_t *)((FieldData)->Data)) +#define GetFieldDataInt16Ptr_MACRO(FieldData) ((Int16_t *)((FieldData)->Data)) +#define GetFieldDataInt16RevPtr_MACRO(FieldData) ((Int16Rev_t *)((FieldData)->Data)) +#define GetFieldDataBytePtr_MACRO(FieldData) ((Byte_t *)((FieldData)->Data)) +#define GetFieldData2BytePtr_MACRO(FieldData) ((UInt16_t *)((FieldData)->Data)) +#define GetFieldData4BytePtr_MACRO(FieldData) ((UInt32_t *)((FieldData)->Data)) +#define GetFieldData8BytePtr_MACRO(FieldData) ((UInt64_t *)((FieldData)->Data)) +#define GetFieldDataVoidPtr_MACRO(FieldData) ((void *)((FieldData)->Data)) /*danger:see above*/ + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +EXTERN float *GetFieldDataFloatPtr_FUNC(FieldData_pa fd); +EXTERN FloatRev_t *GetFieldDataFloatRevPtr_FUNC(FieldData_pa fd); +EXTERN double *GetFieldDataDoublePtr_FUNC(FieldData_pa fd); +EXTERN DoubleRev_t *GetFieldDataDoubleRevPtr_FUNC(FieldData_pa fd); +EXTERN Int64_t *GetFieldDataInt64Ptr_FUNC(FieldData_pa fd); +EXTERN Int64Rev_t *GetFieldDataInt64RevPtr_FUNC(FieldData_pa fd); +EXTERN Int32_t *GetFieldDataInt32Ptr_FUNC(FieldData_pa fd); +EXTERN Int32Rev_t *GetFieldDataInt32RevPtr_FUNC(FieldData_pa fd); +EXTERN Int16_t *GetFieldDataInt16Ptr_FUNC(FieldData_pa fd); +EXTERN Int16Rev_t *GetFieldDataInt16RevPtr_FUNC(FieldData_pa fd); +EXTERN Byte_t *GetFieldDataBytePtr_FUNC(FieldData_pa fd); +EXTERN UInt16_t *GetFieldData2BytePtr_FUNC(FieldData_pa fd); +EXTERN UInt32_t *GetFieldData4BytePtr_FUNC(FieldData_pa fd); +EXTERN UInt64_t *GetFieldData8BytePtr_FUNC(FieldData_pa fd); +EXTERN void *GetFieldDataVoidPtr_FUNC(FieldData_pa fd); /*danger:see above*/ +#endif + +/** + */ +EXTERN FieldData_pa AllocScratchNodalFieldDataPtr(LgIndex_t NumValues, + FieldDataType_e Type, + Boolean_t ShowErrMsg); + +/** + */ +EXTERN void DeallocScratchNodalFieldDataPtr(FieldData_pa *ScratchFieldData); + +/** + * Assume that indexrange has already been converted to the actual indices. + */ +EXTERN void CalcFieldDataMinMaxUsingRange(FieldData_pa field_data, + double *min_ptr, + double *max_ptr, + LgIndex_t startindex, + IndexRange_s *indexrange); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/** + */ +EXTERN void CopyTypedValueArray(FieldDataType_e ValueType, + void *DstArray, + LgIndex_t DstStart, + void *SrcArray, + LgIndex_t SrcStart, + LgIndex_t SrcEnd); + +EXTERN void SwapBytesInTypedValueArray(FieldDataType_e ValueType, + void *SrcArray, + LgIndex_t SrcStart, + LgIndex_t SrcEnd, + LgIndex_t SrcSkip); + +EXTERN void SwapBytesInUnalignedTypedValueArray(FieldDataType_e ValueType, + void *SrcArray, + LgIndex_t SrcStart, + LgIndex_t SrcEnd, + LgIndex_t SrcSkip); + + +/* + * Copies values from "src" to "dst". "src" or "dst" may + * be differing types. Either or both may be V3D data pointers. + */ +EXTERN void CopyFieldDataRange(FieldData_pa dst, + LgIndex_t dst_start, + FieldData_pa src, + LgIndex_t src_start, + LgIndex_t src_end); /* -1 means last point */ + +/* + * Copy all values in field data + */ +EXTERN void CopyFieldData(FieldData_pa dst, + FieldData_pa src); + +/* + * Like CopyFieldData except for single value. + */ +EXTERN void CopyFieldValue(FieldData_pa dst, + LgIndex_t dstindex, + FieldData_pa src, + LgIndex_t srcindex); + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/* + * Sets all values in the field data pointer "field_data" + * to zero. + */ +EXTERN void SetFieldDataPtrToAllZeros(FieldData_pa field_data); + +/* + * GetFieldValue macro + */ +#if !defined GET_FIELD_VALUE_BY_VIRTUAL_FUNCTION && \ + !defined GET_FIELD_VALUE_BY_FLOAT_ONLY_MACRO && \ + !defined GET_FIELD_VALUE_BY_DOUBLE_ONLY_MACRO && \ + !defined GET_FIELD_VALUE_BY_FLOAT_AND_DOUBLE_MACRO +#if !defined NO_ASSERTS || defined DEBUG_FIELDVALUES +#define GET_FIELD_VALUE_BY_VIRTUAL_FUNCTION +#else +#define GET_FIELD_VALUE_BY_FLOAT_AND_DOUBLE_MACRO +#endif +#endif + +#if defined GET_FIELD_VALUE_BY_VIRTUAL_FUNCTION +#define GetFieldValue(fd,pt) ((GetFieldDataGetFunction(fd))((fd),(pt))) +#elif defined GET_FIELD_VALUE_BY_FLOAT_ONLY_MACRO +#define GetFieldValue(fd,pt) (GetFieldDataGetFunction(fd)==GetFieldValueForFloat \ + ?GetFieldDataFloatPtr(fd)[(pt)] \ + :(GetFieldDataGetFunction(fd))((fd),(pt))) +#elif defined GET_FIELD_VALUE_BY_DOUBLE_ONLY_MACRO +#define GetFieldValue(fd,pt) (GetFieldDataGetFunction(fd)==GetFieldValueForDouble \ + ?GetFieldDataDoublePtr(fd)[(pt)] \ + :(GetFieldDataGetFunction(fd))((fd),(pt))) +#elif defined GET_FIELD_VALUE_BY_FLOAT_AND_DOUBLE_MACRO +#define GetFieldValue(fd,pt) (GetFieldDataGetFunction(fd)==GetFieldValueForFloat \ + ?GetFieldDataFloatPtr(fd)[(pt)] \ + :GetFieldDataGetFunction(fd)==GetFieldValueForDouble \ + ?GetFieldDataDoublePtr(fd)[(pt)] \ + :(GetFieldDataGetFunction(fd))((fd),(pt))) +#else +#error "Need to define one of FIELD_VALUE_MACRO constants" +#endif + + +/* + * SetFieldValue macro + */ +#define SetFieldValue(fd,pt,val) ((GetFieldDataSetFunction(fd))((fd),(pt),(val))) + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +#if defined _DEBUG +#define USEFUNCTIONSFORNODEVALUES +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined NO_ASSERTS +#endif +#endif /* TECPLOTKERNEL */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASHR.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASHR.h new file mode 100644 index 00000000000..ea8b1d26d20 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATASHR.h @@ -0,0 +1,70 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#if defined EXTERN +#undef EXTERN +#endif +#if defined DATASHRMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +/* + * General set of macros for reference count mananagement. + */ +#define IncStructureReference(V) ((V)->RefCount++) +#define DecStructureReference(V) ((V)->RefCount--) +#define IsStructureShared(V) ((V)->RefCount > 1) +#define IsStructureReferenced(V) ((V)->RefCount > 0) + +/* + * Special set of macros for field data that is having variable sharing between + * zones tracked. Field data maintains two reference counts: The first, + * RefCount, is used to keep track of when the field data needs to be + * deallocated; the second, VarShareRefCount, is used to track variable sharing + * between zones. + */ +#define IncVarStructureReference(V) ((V)->VarShareRefCount++) +#define DecVarStructureReference(V) ((V)->VarShareRefCount--) +#define IsVarStructureShared(V) ((V)->VarShareRefCount > 1) +#define IsVarStructureReferenced(V) ((V)->VarShareRefCount > 0) + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAUTIL.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAUTIL.h new file mode 100644 index 00000000000..cf0195fffc2 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/DATAUTIL.h @@ -0,0 +1,116 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* + * DATAUTIL.h : COPYRIGHT (C)1987-2002 Tecplot, Inc. + * ALL RIGHTS RESERVED + * + * NOTE: THIS MODULE NOW IS PART OF THE TECPLOT SOURCE + * ONLY EDIT THIS IN THE MAIN TECPLOT SOURCE DIRECTORY. + * + * + */ +#ifndef DATAUTIL_H +#define DATAUTIL_H +#define DATAUTIL_VERSION 61 + +#if defined MAKEARCHIVE +extern void InitInputSpecs(void); +#endif + + +/* + * + * Read a binary tecplot datafile. + * + * @param GetHeaderInfoOnly + * Return only the header info from the datafile. + * + * @param FName + * Name of the file to read. + * + * @param IVersion + * Returns version of the input file. + * + * @param DataSetTitle + * Allocates space for and returns dataset title. + * + * @param NumZones + * Returns the number of zones. + * + * @param NumVars + * Returns the number of variables. + * + * @param VarNames + * Allocates space for and returns the var names. + * + * @param ZoneNames + * Allocates space for and returns the zone names. + * + * @param NumPtsI, NumPtsJ, NumPtsK + * Zone dimensions loaded into LgIndex_t arrays. + * + * @param ZoneNames + * Zone types loaded into ZoneType_e array. + * + * @param UserRec + * Allocates space for and returns the user records. + * + * @param RawDataspaceAllocated + * Only used if GetHeaderInfoOnly is FALSE. TRUE = calling program has alloced space for + * the raw data. FALSE= let ReadTec allocate space for the raw data. + * + * @param NodeMap + * Finite Element connectivity information. ReadTec + * will allocate the space for you if RawDataspaceAllocated is FALSE. + * + * @param VDataBase + * Raw field data loaded into double arrays. ReadTec + * will allocate the space for you if RawDataspaceAllocated is + * FALSE. If RawDataspaceAllocated is TRUE then ReadTec will + * only load the arrays that have non NULL addresses. + * + */ +LIBFUNCTION Boolean_t STDCALL ReadTec(Boolean_t GetHeaderInfoOnly, + char *FName, + short *IVersion, + char **DataSetTitle, + EntIndex_t *NumZones, + EntIndex_t *NumVars, + StringList_pa *VarNames, + StringList_pa *ZoneNames, + LgIndex_t **NumPtsI, + LgIndex_t **NumPtsJ, + LgIndex_t **NumPtsK, + ZoneType_e **ZoneType, + StringList_pa *UserRec, + Boolean_t RawDataspaceAllocated, + NodeMap_t ***NodeMap, + double ***VDataBase); + +LIBFUNCTION void * STDCALL TecAlloc(size_t size); + +LIBFUNCTION void STDCALL TecFree(void *ptr); + + +#endif /* !DATAUTIL_H */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FACE.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FACE.h new file mode 100644 index 00000000000..c0c89a9b432 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FACE.h @@ -0,0 +1,149 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ +#ifndef _FACE_H_ +#define _FACE_H_ + +#if defined EXTERN +#undef EXTERN +#endif +#if defined FACEMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +namespace tecplot +{ +namespace kernel +{ +class SubElemValueProducerInterface; +} +} + + +/** + */ +inline Boolean_t IsCellFaceLogicallyCollapsed(LgIndex_t I1, + LgIndex_t I2, + LgIndex_t I3, + LgIndex_t I4) +{ + return ((I1 == I2 && I3 == I4) || + (I1 == I4 && I2 == I3) || + (I1 == I3) || + (I2 == I4)); +} + +/** + * IMPORTANT NOTE: + * A face obscuration of FaceObscuration_LogicallyObscured means that the + * face is entirely obscured by either an implicit neighbor for inside faces + * of ordered data or an auto generated neighbor for finite element data. In + * either case, logical obscuration is not considered if user defined + * neighbors have been specified for the face. Therefore, interior faces of + * ordered data can have an indication of FaceObscuration_PartiallyObscured. + */ +typedef enum +{ + FaceObscuration_NotObscured, + FaceObscuration_PartiallyObscured, + FaceObscuration_EntirelyObscured, + FaceObscuration_LogicallyObscured, + END_FaceObscuration_e, + FaceObscuration_Invalid = BadEnumValue +} FaceObscuration_e; + +/** + */ +EXTERN LgIndex_t GetLogicalOrderedNeighbor(LgIndex_t NumIPts, + LgIndex_t NumJPts, + LgIndex_t NumKPts, + LgIndex_t Element, + LgIndex_t Face); + +/** + * Function to determine a cell's neighbor. It calls FaceNeighborGetSurfaceCellNeighbor() + * for classic zones. + */ +EXTERN void GetSurfaceCellNeighbor(CZInfo_s const* CZInfo, + CZData_s const* CZData, + LgIndex_t SurfaceCellIndex, + tecplot::kernel::SubElemValueProducerInterface* NodeValueProducer, + ElemFaceOffset_t PlaneOrFaceOffset, + ElemFaceOffset_t Edge, + LgIndex_t* NeighborSurfaceCellElem, + EntIndex_t* NeighborSurfaceCellZone); +/** + */ +EXTERN FaceObscuration_e GetFaceObscuration(CZInfo_s const* CZInfo, + CZData_s const* CZData, + Set_pa ActiveRelevantZones, + LgIndex_t Element, + LgIndex_t FOffset, + Boolean_t ConsiderValueBlanking, + Boolean_t ConsiderIJKBlanking, + Boolean_t ConsiderDepthBlanking); + +EXTERN EntIndex_t GetNodesPerElementFace(ZoneType_e ZoneType); + +EXTERN EntIndex_t GetFacesPerElement(ZoneType_e ZoneType, + LgIndex_t IMax, + LgIndex_t JMax, + LgIndex_t KMax); + +EXTERN CollapsedStatus_e GetSurfaceCellCollapsedStatus(CZInfo_s const* CZInfo, + CZData_s const* CZData, + tecplot::kernel::SubElemValueProducerInterface* SubElemValueProducer); +EXTERN CollapsedStatus_e GetSurfaceCellCollapsedStatus(CZInfo_s const* CZInfo, + CZData_s const* CZData, + LgIndex_t I1, + LgIndex_t I2, + LgIndex_t I3, + LgIndex_t I4); +EXTERN CollapsedStatus_e GetSurfaceCellLogicalCollapsedStatus(ZoneType_e ZoneType, + LgIndex_t I1, + LgIndex_t I2, + LgIndex_t I3, + LgIndex_t I4); +EXTERN CollapsedStatus_e GetSurfEdgeOrVolFaceLogicalCollapsedStatus(NodeMap_pa NodeMap, + LgIndex_t Element, + EntIndex_t Face); +#if defined ALLOW_USERDEF_NO_NEIGHBORING_ELEMENT +/** + */ +EXTERN Boolean_t IsUserDefFaceNeighborBoundary(FaceNeighbor_pa FaceNeighbor, + LgIndex_t Element, + LgIndex_t Face); +#endif + +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FILESTREAM.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FILESTREAM.h new file mode 100644 index 00000000000..edb10ce2532 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/FILESTREAM.h @@ -0,0 +1,75 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* + ***************************************************************** + ***************************************************************** + ******* ******** + ****** Copyright (C) 1988-2008 Tecplot, Inc. ******* + ******* ******** + ***************************************************************** + ***************************************************************** +*/ +#if !defined FILESTREAM_h +#define FILESTREAM_h + +#if defined EXTERN +# undef EXTERN +#endif +#if defined FILESTREAMMODULE +# define EXTERN +#else +# define EXTERN extern +#endif + +typedef struct +{ + FILE *File; + Boolean_t IsByteOrderNative; +} FileStream_s; + +/** + * Creates a structure for associating an open file stream with its byte + * order. The byte order can changed at any time. + * + * @param File + * Handle to a file which can be NULL. + * @param IsByteOrderNative + * TRUE if the file's byte order is native, FALSE if foreign. + * + * @return + * An allocated structure associating an open file to its byte order. + */ +EXTERN FileStream_s *FileStreamAlloc(FILE *File, + Boolean_t IsByteOrderNative); + +/** + * Deallocates the structure associating the file stream with the byte order. + * This function does NOT close the file. + * + * @param FileStream + * Pointer to an open file stream or a pointer to NULL. + */ +EXTERN void FileStreamDealloc(FileStream_s **FileStream); + +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM.h new file mode 100644 index 00000000000..092b92dfd2d --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM.h @@ -0,0 +1,71 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + +#if defined EXTERN +#undef EXTERN +#endif +#if defined GEOMMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + + +/* * macros for checking CoordSys_e * */ +#define VALID_RECTANGLE_COORDSYS(sys) \ + (((sys)==CoordSys_Frame) || \ + ((sys)==CoordSys_Grid)) +#define VALID_SQUARE_COORDSYS(sys) VALID_RECTANGLE_COORDSYS((sys)) +#define VALID_ELLIPSE_COORDSYS(sys) VALID_RECTANGLE_COORDSYS((sys)) +#define VALID_CIRCLE_COORDSYS(sys) VALID_ELLIPSE_COORDSYS((sys)) +#define VALID_IMAGE_COORDSYS(sys) VALID_RECTANGLE_COORDSYS((sys)) +#define VALID_LINESEG_COORDSYS(sys) \ + (((sys)==CoordSys_Frame) || \ + ((sys)==CoordSys_Grid) || \ + ((sys)==CoordSys_Grid3D)) +#define VALID_GEOM_COORDSYS(sys) \ + (((sys)==CoordSys_Frame) || \ + ((sys)==CoordSys_Grid) || \ + ((sys)==CoordSys_Grid3D)) + +#define VALID_GEOM_TYPE(geomtype) \ + ( VALID_ENUM((geomtype),GeomType_e) && \ + (geomtype)!=GeomType_LineSegs3D ) + +#define VALID_GEOM_FIELD_DATA_TYPE(datatype) \ + ( ( (datatype) == FieldDataType_Float ) || \ + ( (datatype) == FieldDataType_Double ) ) + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM2.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM2.h new file mode 100644 index 00000000000..9dcd68acbac --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GEOM2.h @@ -0,0 +1,46 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ +#if defined EXTERN +#undef EXTERN +#endif +#if defined GEOM2MODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +EXTERN FieldDataType_e GetGeomFieldDataType(Geom_s const* Geom); diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GLOBAL.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GLOBAL.h new file mode 100644 index 00000000000..21e35a947c2 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/GLOBAL.h @@ -0,0 +1,7271 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* BEGINREMOVEFROMADDON */ +/* NOTE: All code contained between comments that look like + * BEGINREMOVEFROMADDON + * ENDREMOVEFROMADDON + * are pulled out to create the GLOBAL.h file used in addons. + */ +/* ENDREMOVEFROMADDON */ + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#ifndef _GLOBAL_H +#define _GLOBAL_H + +#if defined EXTERN +#undef EXTERN +#endif +#if defined Q_MAINMODULE && defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else +#define EXTERN extern +#endif + +#define EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/* BEGINREMOVEFROMADDON */ +/* + * The reason for wrapping this test with "begin and end remove from addon" key + * words is so that the ADK users doesn't have to see this mess. + */ +#if !defined COREAPI && \ + !defined TECUTILMMODULE && \ + !defined TECUTILOMODULE && \ + !defined TECUTILQMODULE && \ + !defined TECUTILSMODULE +/* we don't want Tecplot internals using deprecated interfaces */ +# undef EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +#endif +/* ENDREMOVEFROMADDON */ + + +/**************************************************************** + * * + * MACROS * + * * + ****************************************************************/ +#if defined TRUE +#undef TRUE +#endif +#if defined FALSE +#undef FALSE +#endif +#if defined MIN +#undef MIN +#endif +#if defined MAX +#undef MAX +#endif +#if defined ROUND +#undef ROUND +#endif +#if defined ROUND2 +#undef ROUND2 +#endif +#if defined TRUNC +#undef TRUNC +#endif + +#define TRUE ((Boolean_t)1) +#define FALSE ((Boolean_t)0) + +/**************************************************************** + * * + * MACROS * + * * + ****************************************************************/ +#define ABS(X) ((X) >= 0 ? (X) : -(X) ) +#define MAX(X,Y) ((X) > (Y) ? (X) : (Y) ) +#define MIN(X,Y) ((X) < (Y) ? (X) : (Y) ) +#define BESTSHOWCOLOR(X) ((X) == White_C ? Black_C : White_C) +#define ROUND_TO_BYTE(X) ((BYTE)((X)+0.499)) +#define ROUNDS(X) ((short)((X)+0.499)) +#define ROUNDL(X) ((LgIndex_t)((X)+0.499)) +#define ROUND2(X) ((X) >= 0 ? ((int)((X)+0.499)) : ((int)((X)-0.499))) +#define TRUNC(X) ((short) (X)) +#define RAD_TO_DEG(rad) (180.*(rad)/PI) +#define DEG_TO_RAD(deg) (PI*(deg)/180.) + +# define CAPITAL(C) ( ('a'<=(C)&&(C)<='z') ? ((C)+('A'-'a')) : (C) ) /* okay for UNICODE */ + +#include "TASSERT.h" + +#if defined TECPLOTKERNEL && defined MSWIN +/* CORE SOURCE CODE REMOVED */ +#else +#define ISEMPTYSTRING(S) ( ((const char*)(S))[0] == '\0' ) +#endif + +#define ISWHITESPACE(C) ((C == ' ') || (C == '\t') || (C == '\n')) +#define ISSEPARATOR(C) ((C == ' ') || (C == '\t') || (C == ',')) +/* clamp the input to the specified range */ +#define CLAMP(value,low,high) ((value)<(low) ? (low) : (value) > (high) ? (high) : (value)) +/* integer division rounds any fraction up (for example n=16,d=3 results in 6) */ +#define INTEGER_DIVIDE_AND_ROUND_UP(n, d) (((int)(n)+(int)(d)-1)/(int)(d)) + +/* BEGINREMOVEFROMADDON */ +/** + * Calcualtes the cell's primary corner or cell centered index from the I, J, + * and K indices. + * + * Consider this IJ zone dimensioned 4 by 3: + * @verbatim + +-------+-------+-------+-------+ + | | | | | + | <8> | <9> | <10> | <11> | <--- ghost cells + | | | | | + |8 |9 |10 |11 | + +-------+-------+-------+-------+ + | | | | | + | <4> | <5> | <6> | <7> | + | | | | | + |4 |5 |6 |7 | + +-------+-------+-------+-------+ + | | | | | + | <0> | <1> | <2> | <3> | + | | | | | + |0 |1 |2 |3 | + +-------+-------+-------+-------+ + . + /|\ + | + | + ghost cells +@endverbatim + */ +#define IJKINDEX(CZData,I,J,K) ((I) + \ + ((J)*(CZData)->NumIPts) + \ + ((K)*(CZData)->NumIJPts)) + +/** + * Calculates the I indice from the cell's primary corner or cell centered + * index. See IJKINDEX() for a picture. + */ +#define IINDEX(CZData,N) ((N) % (CZData)->NumIPts) + +/** + * Calculates the J indice from the cell's primary corner or cell centered + * index. See IJKINDEX() for a picture. + */ +#define JINDEX(CZData,N) (((N) % (CZData)->NumIJPts)/(CZData)->NumIPts) + +/** + * Calculates the K indice from the cell's primary corner or cell centered + * index. See IJKINDEX() for a picture. + */ +#define KINDEX(CZData,N) ((N)/(CZData)->NumIJPts) +/* ENDREMOVEFROMADDON */ + +/* */ +#define SWITCH(Type,A,B) do {Type T = (A); (A) = (B); (B) = T;} while (FALSE) +#define SWITCH_DOUBLES(A,B) SWITCH(double, (A), (B)) +#define FPRINTFOK(x) (Boolean_t)((x) > 0) +#define GRAPHICSARE3D(F) ((F->PlotType == PlotType_Cartesian3D)) + +/* convenience macros for implication, P -> Q, and equivalence, P <-> Q. */ +#define IMPLICATION(P,Q) (!(P) || (Q)) +#define EQUIVALENCE(P,Q) ((P) == (Q)) + +/* suppress compiler warnings about unused parameters */ +#if defined UNUSED +#undef UNUSED +#endif +#define UNUSED(param) (void)param + +/** + * Converts a double into a float value + * + * param val + * double value to be converted + */ +#define CONVERT_DOUBLE_TO_FLOAT(val) \ + ( (val) >= SMALLFLOAT \ + ? ( (val) < LARGEFLOAT \ + ? (float)(val) \ + : (float)LARGEFLOAT \ + ) \ + : ( (val) <= -SMALLFLOAT \ + ? ( (val) > -LARGEFLOAT \ + ? (float)(val) \ + : (float)-LARGEFLOAT \ + ) \ + : (float)0.0 \ + ) \ + ) + + +/** + * Clamps a double at the limits of Tecplot's precision + * + * param val + * double value to be clamped + */ +#define CLAMP_DOUBLE(val) \ + ( (val) >= SMALLDOUBLE \ + ? ( (val) < LARGEDOUBLE \ + ? (double)(val) \ + : (double)LARGEDOUBLE \ + ) \ + : ( (val) <= -SMALLDOUBLE \ + ? ( (val) > -LARGEDOUBLE \ + ? (double)(val) \ + : (double)-LARGEDOUBLE \ + ) \ + : (double)0.0 \ + ) \ + ) + + +/** + * Converts a double into a 4-byte (signed) integer value + * + * param val + * double value to be converted + */ +#define CONVERT_DOUBLE_TO_INT32(val) \ + ( (val) >= 1.0 \ + ? ( (val) < MAXINT32 \ + ? (Int32_t)(val) \ + : (Int32_t)MAXINT32 \ + ) \ + : ( (val) <= -1.0 \ + ? ( (val) > (Int32_t)-MAXINT32 \ + ? (Int32_t)(val) \ + : (Int32_t)-MAXINT32 \ + ) \ + : (Int32_t)0.0 \ + ) \ + ) + + +/** + * Converts a double into a 2-byte (signed) integer value + * + * param val + * double value to be converted + */ +#define CONVERT_DOUBLE_TO_INT16(val) \ + ( (val) >= 1.0 \ + ? ( (val) < MAXINT16 \ + ? (Int16_t)(val) \ + : (Int16_t)MAXINT16 \ + ) \ + : ( (val) <= -1.0 \ + ? ( (val) > (Int16_t)-MAXINT16 \ + ? (Int16_t)(val) \ + : (Int16_t)-MAXINT16 \ + ) \ + : (Int16_t)0.0 \ + ) \ + ) + +/** + * Copies two bytes from SrcBuffer to DstBuffer without causing a page + * fault due to misaligned words. + * + * param DstBuffer + * Pointer the buffer to send the two bytes to + * param SrcBuffer + * Pointer the buffer to get the two bytes from + */ +#define COPY_2_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \ + do { \ + /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \ + /* most likely single byte pointers into unaligned blocks of data */ \ + ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[0]; \ + ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[1]; \ + } while (FALSE) + +/** + * Copies two bytes from SrcBuffer to DstBuffer swapping the bytes + * as it copies. Will not cause a page fault due to misaligned words. + * + * param DstBuffer + * Pointer the buffer to send the two bytes to + * param SrcBuffer + * Pointer the buffer to get the two bytes from + */ +#define COPY_AND_REVERSE_2_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \ + do { \ + /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \ + /* most likely single byte pointers into unaligned blocks of data */ \ + ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[1]; \ + ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[0]; \ + } while (FALSE) + +/** + * Copies four bytes from SrcBuffer to DstBuffer without causing a page + * fault due to misaligned words. + * + * param DstBuffer + * Pointer the buffer to send the four bytes to + * param SrcBuffer + * Pointer the buffer to get the four bytes from + */ +#define COPY_4_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \ + do { \ + /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \ + /* most likely single byte pointers into unaligned blocks of data */ \ + ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[0]; \ + ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[1]; \ + ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[2]; \ + ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[3]; \ + } while (FALSE) + +/** + * Copies four bytes from SrcBuffer to DstBuffer swapping the bytes + * as it copies. Will not cause a page fault due to misaligned words. + * + * param DstBuffer + * Pointer the buffer to send the four bytes to + * param SrcBuffer + * Pointer the buffer to get the four bytes from + */ +#define COPY_AND_REVERSE_4_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \ + do { \ + /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \ + /* most likely single byte pointers into unaligned blocks of data */ \ + ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[3]; \ + ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[2]; \ + ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[1]; \ + ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[0]; \ + } while (FALSE) + +/** + * Copies four bytes from SrcBuffer to DstBuffer without causing a page + * fault due to misaligned words. + * + * param DstBuffer + * Pointer the buffer to send the four bytes to + * param SrcBuffer + * Pointer the buffer to get the four bytes from + */ +#define COPY_8_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \ + do { \ + /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \ + /* most likely single byte pointers into unaligned blocks of data */ \ + ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[0]; \ + ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[1]; \ + ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[2]; \ + ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[3]; \ + ((Byte_t *)(DstBuffer))[4] = ((Byte_t *)(SrcBuffer))[4]; \ + ((Byte_t *)(DstBuffer))[5] = ((Byte_t *)(SrcBuffer))[5]; \ + ((Byte_t *)(DstBuffer))[6] = ((Byte_t *)(SrcBuffer))[6]; \ + ((Byte_t *)(DstBuffer))[7] = ((Byte_t *)(SrcBuffer))[7]; \ + } while (FALSE) + +/** + * Copies eight bytes from SrcBuffer to DstBuffer swapping the bytes + * as it copies. Will not cause a page fault due to misaligned words. + * + * param DstBuffer + * Pointer the buffer to send the four bytes to + * param SrcBuffer + * Pointer the buffer to get the four bytes from + */ +#define COPY_AND_REVERSE_8_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \ + do { \ + /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \ + /* most likely single byte pointers into unaligned blocks of data */ \ + ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[7]; \ + ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[6]; \ + ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[5]; \ + ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[4]; \ + ((Byte_t *)(DstBuffer))[4] = ((Byte_t *)(SrcBuffer))[3]; \ + ((Byte_t *)(DstBuffer))[5] = ((Byte_t *)(SrcBuffer))[2]; \ + ((Byte_t *)(DstBuffer))[6] = ((Byte_t *)(SrcBuffer))[1]; \ + ((Byte_t *)(DstBuffer))[7] = ((Byte_t *)(SrcBuffer))[0]; \ + } while (FALSE) + +/** + * Reverses the byte order of the specified 2 byte buffer. + * + * param Buffer + * Pointer to the 2 bytes needing byte order reversal. + */ +#define REVERSE_2_BYTES_1_AT_A_TIME(Buffer) \ + do { \ + Byte_t Byte0 = ((Byte_t *)(Buffer))[0]; \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==2); \ + ((Byte_t *)(Buffer))[0] = ((Byte_t *)(Buffer))[1]; \ + ((Byte_t *)(Buffer))[1] = Byte0; \ + } while (FALSE) + +#define REVERSE_2_BYTES_2_AT_A_TIME(Buffer) \ + do { \ + UInt16_t data_bits = ((UInt16_t *)(Buffer))[0]; \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==2); \ + ((UInt16_t *)(Buffer))[0] = (((data_bits)<<8) | \ + ((data_bits&0xff))); \ + } while (FALSE) + +/* REVERSE_2_BYTES_2_AT_A_TIME may actually be slower, needs testing. */ +#define REVERSE_2_BYTES REVERSE_2_BYTES_1_AT_A_TIME + +/** + * Reverses the byte order of the specified 4 byte buffer. + * + * param Buffer + * Pointer to the 4 bytes needing byte order reversal. + * + * How this works: + * + * ABCD + * D--- <<24 (1) + * + * ABCD + * --C- &0x0000ff00 + * -C-- <<8 (2) + * + * ABCD + * -B-- &0x00ff0000 + * --B- >>8 (3) + * + * ABCD + * ---A >>24 (4) + * + * (1) | (2) | (3) | (4) = DCBA. + * + */ +#define REVERSE_4_BYTES_1_AT_A_TIME(Buffer) \ + do { \ + Byte_t Byte0 = ((Byte_t *)(Buffer))[0]; \ + Byte_t Byte1 = ((Byte_t *)(Buffer))[1]; \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==4); \ + ((Byte_t *)(Buffer))[0] = ((Byte_t *)(Buffer))[3]; \ + ((Byte_t *)(Buffer))[1] = ((Byte_t *)(Buffer))[2]; \ + ((Byte_t *)(Buffer))[2] = Byte1; \ + ((Byte_t *)(Buffer))[3] = Byte0; \ + } while (FALSE) + +#define REVERSE_4_BYTES_4_AT_A_TIME(Buffer) \ + do { \ + UInt32_t data_bits = *((UInt32_t *)(Buffer)); \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==4); \ + *((UInt32_t *)(Buffer)) = (((data_bits)<<24) | \ + ((data_bits&0x0000ff00)<<8) | \ + ((data_bits&0x00ff0000)>>8) | \ + ((data_bits)>>24)); \ + } while (FALSE) + +#if defined MSWIN +/* + * The DevStuido compiler seems to be the only one that can truly handle this + * when optimization is turned on. + */ +#define REVERSE_4_BYTES REVERSE_4_BYTES_4_AT_A_TIME +#else +#define REVERSE_4_BYTES REVERSE_4_BYTES_1_AT_A_TIME +#endif + +/** + * Reverses the byte order of the specified 8 byte buffer. + * + * param Buffer + * Pointer to the 8 bytes needing byte order reversal. + */ +#define REVERSE_8_BYTES_1_AT_A_TIME(Buffer) \ + do { \ + Byte_t Byte0 = ((Byte_t *)(Buffer))[0]; \ + Byte_t Byte1 = ((Byte_t *)(Buffer))[1]; \ + Byte_t Byte2 = ((Byte_t *)(Buffer))[2]; \ + Byte_t Byte3 = ((Byte_t *)(Buffer))[3]; \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \ + ((Byte_t *)(Buffer))[0] = ((Byte_t *)(Buffer))[7]; \ + ((Byte_t *)(Buffer))[1] = ((Byte_t *)(Buffer))[6]; \ + ((Byte_t *)(Buffer))[2] = ((Byte_t *)(Buffer))[5]; \ + ((Byte_t *)(Buffer))[3] = ((Byte_t *)(Buffer))[4]; \ + ((Byte_t *)(Buffer))[4] = Byte3; \ + ((Byte_t *)(Buffer))[5] = Byte2; \ + ((Byte_t *)(Buffer))[6] = Byte1; \ + ((Byte_t *)(Buffer))[7] = Byte0; \ + } while (FALSE) + +#define REVERSE_8_BYTES_2_AT_A_TIME(Buffer) \ + do { \ + UInt16_t data_bits_0 = ((UInt16_t *)(Buffer))[0]; \ + UInt16_t data_bits_1 = ((UInt16_t *)(Buffer))[1]; \ + UInt16_t data_bits_2 = ((UInt16_t *)(Buffer))[2]; \ + UInt16_t data_bits_3 = ((UInt16_t *)(Buffer))[3]; \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \ + ((UInt16_t *)(Buffer))[0] = (((data_bits_3)<<8) | \ + ((data_bits_3&0xff))); \ + ((UInt16_t *)(Buffer))[1] = (((data_bits_2)<<8) | \ + ((data_bits_2&0xff))); \ + ((UInt16_t *)(Buffer))[2] = (((data_bits_1)<<8) | \ + ((data_bits_1&0xff))); \ + ((UInt16_t *)(Buffer))[3] = (((data_bits_0)<<8) | \ + ((data_bits_0&0xff))); \ + } while (FALSE) + +#define REVERSE_8_BYTES_4_AT_A_TIME(Buffer) \ + do { \ + UInt32_t data_bits_0 = ((UInt32_t *)(Buffer))[0]; \ + UInt32_t data_bits_1 = ((UInt32_t *)(Buffer))[1]; \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \ + ((UInt32_t *)(Buffer))[0] = (((data_bits_1)<<24) | \ + ((data_bits_1&0x0000ff00)<<8) | \ + ((data_bits_1&0x00ff0000)>>8) | \ + ((data_bits_1)>>24)); \ + ((UInt32_t *)(Buffer))[1] = (((data_bits_0)<<24) | \ + ((data_bits_0&0x0000ff00)<<8) | \ + ((data_bits_0&0x00ff0000)>>8) | \ + ((data_bits_0)>>24)); \ + } while (FALSE) + +#define REVERSE_8_BYTES_8_AT_A_TIME(Buffer) \ + do { \ + UInt64_t data_bits = *((UInt64_t *)(Buffer)); \ + CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \ + *((UInt64_t *)(Buffer)) = (((data_bits)<<56) | \ + ((data_bits&0x000000000000ff00)<<40) | \ + ((data_bits&0x0000000000ff0000)<<24) | \ + ((data_bits&0x00000000ff000000)<<8) | \ + ((data_bits&0x000000ff00000000)>>8) | \ + ((data_bits&0x0000ff0000000000)>>24) | \ + ((data_bits&0x00ff000000000000)>>40) | \ + ((data_bits)>>56)); \ + } while (FALSE) + + +#if defined MSWIN +/* + * The DevStuido compiler seems to be the only one that can truly handle this + * when optimization is turned on. + */ +#define REVERSE_8_BYTES REVERSE_8_BYTES_4_AT_A_TIME +#else +#define REVERSE_8_BYTES REVERSE_8_BYTES_1_AT_A_TIME +#endif + + +/**************************************************************** + * * + * ADD-ON MSWIN IMPORT/EXPORT DEFINITIONS * + * * + ****************************************************************/ +#if defined MSWIN +# define STDCALL __stdcall +#else +# define STDCALL +#endif /* MSWIN */ + +#if defined (__cplusplus) +# define EXTERNC extern "C" +#else +# define EXTERNC +#endif /* __cplusplus */ + +#if defined MSWIN +#if defined AMTEC_INTERNAL_MAKELIBTEC || defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else +# define TECPLOT_DLLAPI _declspec ( dllimport ) +# endif +#else +# define TECPLOT_DLLAPI +#endif + +#define LINKTOADDON EXTERNC TECPLOT_DLLAPI + + +/* + * + * Usage: + * EXPORTFROMADDON void STDCALL InitTecAddOn(void) { ... } + * + */ +#if defined MSWIN +# define EXPORTFROMADDON EXTERNC _declspec ( dllexport ) +#else +# define EXPORTFROMADDON EXTERNC +#endif /* MSWIN */ + +#define EXPORTFROMDLL EXPORTFROMADDON + +#define InitTecAddOn InitTecAddOn113 +#define TEC_INIT_FUNCTION_NAME "InitTecAddOn113" + +/* BEGINREMOVEFROMADDON */ +/* Use INLINE for static functions that could be optimized as inline. */ +#if defined (__cplusplus) && !defined _DEBUG +# define INLINE inline +#else +# define INLINE static +#endif /* __cplusplus */ +/* ENDREMOVEFROMADDON */ + + +/* BEGINREMOVEFROMADDON */ +#if defined (MSWIN) ||\ + defined (INTERX) ||\ + defined (LINUX) ||\ + defined (SUNSOLARIS86X) ||\ + defined (COMPAQALPHA) ||\ + defined (DEC) ||\ + defined (__LITTLE_ENDIAN__) +#define MACHINE_DOES_INTEL_ORDER +#endif + +#if defined( MACHINE_DOES_INTEL_ORDER ) +# define SwapBytes(IntelOrder) (!(IntelOrder)) +#else +# define SwapBytes(IntelOrder) (IntelOrder) +#endif +/* ENDREMOVEFROMADDON */ + +#if defined DECALPHA || \ + defined LINUXALPHA || \ + defined LINUXI64 || \ + defined LINUX64 || \ + defined MAC64 || \ + defined COMPAQALPHA +#define LONGIS64 +#endif + +/**************************************************************** + * * + * HARD CONSTANTS * + * * + ****************************************************************/ +#define LARGEMEMORY ((size_t)-1) + +/* BEGINREMOVEFROMADDON */ +/* Tclinterp add-on barfs on these huge integer constants */ +/* Note: Tecplot is conservative by one on LARGEINTs max */ +#define LARGEINT64 9223372036854775806LL +/* ENDREMOVEFROMADDON */ +#define LARGEINT32 2147483646 +#define LARGEINT16 32766 +#define LARGEINT8 126 + +/* BEGINREMOVEFROMADDON */ +#define LARGEUINT64 18446744073709551614ULL +/* ENDREMOVEFROMADDON */ +#define LARGEUINT32 4294967294 +#define LARGEUINT16 65534 +#define LARGEUINT8 254 + +#ifdef INDEX_16_BIT +#define MAXINDEX ((LgIndex_t)LARGEINT16) +#else +#define MAXINDEX ((LgIndex_t)LARGEINT32) +#endif +#define MAXZONEMAP MAXINDEX +#define LARGEDOUBLE 1.0e+150 +#define SMALLDOUBLE 1.0e-150 +#define LARGESTEXPONENT 150 +#define SMALLESTEXPONENT -150 + +#define SMALLESTDOUBLE SMALLDOUBLE + +#define LARGESTDOUBLEEXPONENT 308 +#define SMALLESTDOUBLEEXPONENT -307 +#define LARGESTDOUBLE 1.0e+308 +#define LARGEFLOAT 3.40282347E+38 +#define SMALLFLOAT 1.17549435E-38 +#define SMALLSTDOUBLE 1.0e-307 + +/* Visual Studio 2008 defines MAXINT32, MAXINT16 which collide with ours */ +#if defined MAXINT32 +#undef MAXINT32 +#endif +#if defined MAXINT16 +#undef MAXINT16 +#endif + +#define MAXINT32 LARGEINT32 +#define MAXINT16 LARGEINT16 +#define ETX 3 +#define LN2 0.69314718055994530942 +#define LN10 2.30258509299404568402 +#define PIOVER2 1.57079632679489661923 +#define TWOPI 6.28318530717958647692 +#if defined PI +#undef PI +#endif +#define PI 3.14159265358979323846 +#define ANGLEEPSILON 1.0e-10 +#define LARGESTANGLE (4*PI+ANGLEEPSILON) +#define DEGPERRADIANS 57.295779513082323 +#define CMPERINCH 2.54 +#define POINTSPERINCH 72.0 +#define FONTMOVEMARK 192 +#define FONTDECISIONMARK 128 +#define FONTLINEMARK 64 +#define BAD_SET_VALUE ((SetIndex_t)-1) +#define MENU_POSITION_FIRST (0) +#define MENU_POSITION_LAST (-1) +#define INVALID_UNIQUE_ID 0 + +#define BADSETVALUE BAD_SET_VALUE +#define SOLID_TRANSLUCENCY 0 +#define BAD_DISTANCE (-1.0) +/* MIN_CIRCUMFERENTIAL_INDEX is the min J dimension for circular zones */ +#define MIN_CIRCUMFERENTIAL_INDEX 4 + +#define VALID_STRAND_ID(StrandID) (0 <= (StrandID) && (StrandID) < MAXZONEMAP) +#define STRAND_ID_STATIC (-1) +#define STRAND_ID_PENDING (-2) + +/* + * Need 3 passes for "Rest of pie" method but can only use 3 clip planes + * Need only 1 pass for "Piece of pie" method and can use 6 clip planes +*/ +#define MAX_ALLOWABLE_CLIPPASSES 1 +#define MAX_ALLOWABLE_CLIPPLANES 6 + +/* BEGINREMOVEFROMADDON */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined _DEBUG +#else +#endif +#if 0 /* NOTUSED */ +#endif +#endif /* TECPLOTKERNEL */ +/* ENDREMOVEFROMADDON */ + + +/* + * NOTE: If you change TecplotBinaryFileVersion, you MUST also: + * + * 1. Update preplot: + * - Change this define symbol in preplot.cpp + * - Change version number in the data file format in the comments in preplot.cpp + * - Change the version number of Preplot itself in preplot.cpp + * 2. Maintain the ability to write the old plt file format: + * - Add a new entry to BinaryFileVersion_e + * - Add a concrete class of the VersionWriterInterface, and update + * VersionWriterAbstractFactory to return the correct instance for the previous and + * new BinaryFileVersion_e + * - Abstract away the difference in the two versions behind an interface (if one does + * not yet exist) and create concrete implementations that can write the old and the + * new versions. For a trivial example of this, see FileTypeWriterInterface and its + * associated factory and concrete classes. + */ +#define TecplotBinaryFileVersion 112 +#define TecplotInterfaceVersion 120 +#define TecplotInterfaceVersionStr "120" /* stay in lockstep with TecplotInterfaceVersion */ +#if defined FLEXLM +#define TecplotLicenseVersion 119 /* may vary from TecplotInterfaceVersion */ +#define TecplotLicenseVersionStr "11.9" /* stay in lockstep with TecplotLicenseVersion */ +#else /* FLEXLM */ +#define TecplotLicenseVersion 120 /* may vary from TecplotInterfaceVersion */ +#define TecplotLicenseVersionStr "12.0" /* stay in lockstep with TecplotLicenseVersion */ +#endif /* FLEXLM */ +/* Also change the macro version number in COMMAND.MASTER.h */ + +#define MaxNumZonesOrVars MAXZONEMAP +#define MaxXAxes 5 +#define MaxYAxes 5 +#define MaxGeoSegments 50 +#define MaxPtsCircleOrEllipse 720 +#define MaxFrames 2048 +#define MaxCustomLabelSets 10 +#define MaxFontMoves 20000 +#define MaxColorMapOverrides 16 +#define MaxValueBlankConstraints 8 +#define MaxContourGroups 8 +#define MaxIsoSurfaceGroups 8 +#define MaxSliceGroups 8 + +#define MaxColorMapGroups 8 +#define DefaultNumContLevels 15 + + +#define DefaultColorMapGroup ((SmInteger_t)0) +#define BADGROUPNUMBER ((SmInteger_t)-1) +#define UNUSEDGROUPNUMBER ((SmInteger_t)0) + +#define VALID_ISOSURFACE_GROUP(Group) (((((SmInteger_t)Group) >= 0) && (((SmInteger_t)Group) < MaxIsoSurfaceGroups))) +#define VALID_SLICE_GROUP(Group) (((((SmInteger_t)Group) >= 0) && (((SmInteger_t)Group) < MaxSliceGroups))) +#define VALID_COLORMAP_GROUP(Group) (((((SmInteger_t)Group) >= 0) && (((SmInteger_t)Group) < MaxColorMapGroups))) + + + +/* + * If any of these values changes its corresponding value in preplot.c must + * change to match it so that files created by preplot and Tecplot are + * consistent. + */ +#define MaxChrsDatasetTitle 256 +#define MaxChrsZnTitle 128 +#define MaxChrsVarName 128 +#define MaxChrsZnOrVarName 128 +/* currently limited to MaxLineIndex in preplot.c */ +#define MaxChrsAuxValueString 32000 + +#define MaxNumViews 16 +#define MaxBasicSizes 5 +#define MaxColorMapControlPoints 50 +#define MaxRawColorMapEntries 800 +#define MaxDataSetReaders 100 +#define MaxExtendedCurveFits 100 +#define MaxColorMapCycles 20 + + +/* Dimension Limits */ + +#define MinPaperDimInWorkArea 0.5 +#define MinFrameWidth 0.25 +#define MinFrameHeight 0.25 +#define MinAxisLength 0.1 + + +#define BadEnumValue 255 + +/* BEGINREMOVEFROMADDON */ +/* define class element limits */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +/* ENDREMOVEFROMADDON */ + +/* + * Floating point values are written to layouts with a certain precision. + * A high precision is necessary in some cases (like streamtrace starting locations) + * This used to be set to 12 which was not high enough. It is now set to 16 which + * appears to be sufficient. This also seems to jive with the number of digits of + * precision that are found in "ieee double precision" values which is 53 bits or + * equivalent to approximately 16 digits. -bdp + * + */ +#define STYLE_FLOAT_PRECISION 16 + + +/* + * Auxiliary data common names. + * + * Define Name Data Name Data Type Data Location + * ------------------------------------------ ------------------------------------ --------- ------------- + */ +#define AuxData_Common_Incompressible "Common.Incompressible" /* Boolean_t Dataset */ +#define AuxData_Common_Density "Common.Density" /* double Dataset */ +#define AuxData_Common_SpecificHeat "Common.SpecificHeat" /* double Dataset */ +#define AuxData_Common_SpecificHeatVar "Common.SpecificHeatVar" /* int Dataset */ +#define AuxData_Common_GasConstant "Common.GasConstant" /* double Dataset */ +#define AuxData_Common_GasConstantVar "Common.GasConstantVar" /* int Dataset */ +#define AuxData_Common_Gamma "Common.Gamma" /* double Dataset */ +#define AuxData_Common_GammaVar "Common.GammaVar" /* int Dataset */ +#define AuxData_Common_Viscosity "Common.Viscosity" /* double Dataset */ +#define AuxData_Common_ViscosityVar "Common.ViscosityVar" /* int Dataset */ +#define AuxData_Common_Conductivity "Common.Conductivity" /* double Dataset */ +#define AuxData_Common_ConductivityVar "Common.ConductivityVar" /* int Dataset */ +#define AuxData_Common_AngleOfAttack "Common.AngleOfAttack" /* double Dataset */ +#define AuxData_Common_SpeedOfSound "Common.SpeedOfSound" /* double Dataset */ +#define AuxData_Common_ReferenceU "Common.ReferenceU" /* double Dataset */ +#define AuxData_Common_ReferenceV "Common.ReferenceV" /* double Dataset */ +#define AuxData_Common_XVar "Common.XVar" /* int Dataset */ +#define AuxData_Common_YVar "Common.YVar" /* int Dataset */ +#define AuxData_Common_ZVar "Common.ZVar" /* int Dataset */ +#define AuxData_Common_CVar "Common.CVar" /* int Dataset */ +#define AuxData_Common_UVar "Common.UVar" /* int Dataset */ +#define AuxData_Common_VVar "Common.VVar" /* int Dataset */ +#define AuxData_Common_WVar "Common.WVar" /* int Dataset */ +#define AuxData_Common_VectorVarsAreVelocity "Common.VectorVarsAreVelocity" /* Boolean_t Dataset */ +#define AuxData_Common_PressureVar "Common.PressureVar" /* int Dataset */ +#define AuxData_Common_TemperatureVar "Common.TemperatureVar" /* int Dataset */ +#define AuxData_Common_DensityVar "Common.DensityVar" /* int Dataset */ +#define AuxData_Common_StagnationEnergyVar "Common.StagnationEnergyVar" /* int Dataset */ +#define AuxData_Common_MachNumberVar "Common.MachNumberVar" /* int Dataset */ +#define AuxData_Common_ReferenceMachNumber "Common.ReferenceMachNumber" /* double Dataset */ +#define AuxData_Common_ReferenceW "Common.ReferenceW" /* double Dataset */ +#define AuxData_Common_PrandtlNumber "Common.PrandtlNumber" /* double DataSet */ +#define AuxData_Common_Axisymmetric "Common.Axisymmetric" /* Boolean_t Dataset */ +#define AuxData_Common_AxisOfSymmetryVarAssignment "Common.AxisOfSymmetryVarAssignment" /* int Dataset */ +#define AuxData_Common_AxisValue "Common.AxisValue" /* double Dataset */ +#define AuxData_Common_SteadyState "Common.SteadyState" /* Boolean_t Dataset */ +#define AuxData_Common_TurbulentKineticEnergyVar "Common.TurbulentKineticEnergyVar" /* int Dataset */ +#define AuxData_Common_TurbulentDissipationRateVar "Common.TurbulentDissipationRateVar" /* int Dataset */ +#define AuxData_Common_TurbulentViscosityVar "Common.TurbulentViscosityVar" /* int Dataset */ +#define AuxData_Common_TurbulentFrequencyVar "Common.TurbulentFrequencyVar" /* int Dataset */ +#define AuxData_Common_Gravity "Common.Gravity" /* double Dataset */ +#define AuxData_Common_IsBoundaryZone "Common.IsBoundaryZone" /* Boolean_t Zone */ +#define AuxData_Common_BoundaryCondition "Common.BoundaryCondition" /* BCondition Zone */ +#define AuxData_Common_Time "Common.Time" /* double Zone */ +#define AuxData_Common_Mean "Common.Mean" /* double Variable */ +#define AuxData_Common_Median "Common.Median" /* double Variable */ +#define AuxData_Common_Variance "Common.Variance" /* double Variable */ +#define AuxData_Common_StdDev "Common.StdDev" /* double Variable */ +#define AuxData_Common_AvgDev "Common.AvgDev" /* double Variable */ +#define AuxData_Common_GeoMean "Common.GeoMean" /* double Variable */ +#define AuxData_Common_ChiSqre "Common.ChiSqre" /* double Variable */ + + + + + + + +/* BEGINREMOVEFROMADDON */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined THREED +#endif +#endif /* TECPLOTKERNEL */ +/* ENDREMOVEFROMADDON */ + +/* Tecplot Add-on Custom Products */ + +/* BEGINREMOVEFROMADDON */ +/* In activeX, the color constants are an enum type, + so the activeX source code parser handles these as + a special case, and the types do not need to be + indicated as with the other hard #define constants */ +/* ENDREMOVEFROMADDON */ + +#define Black_C ((ColorIndex_t)0) +#define Red_C ((ColorIndex_t)1) +#define Green_C ((ColorIndex_t)2) +#define Blue_C ((ColorIndex_t)3) +#define Cyan_C ((ColorIndex_t)4) +#define Yellow_C ((ColorIndex_t)5) +#define Purple_C ((ColorIndex_t)6) +#define White_C ((ColorIndex_t)7) + +#define Custom1_C ((ColorIndex_t)8) +#define Custom2_C ((ColorIndex_t)9) +#define Custom3_C ((ColorIndex_t)10) +#define Custom4_C ((ColorIndex_t)11) +#define Custom5_C ((ColorIndex_t)12) +#define Custom6_C ((ColorIndex_t)13) +#define Custom7_C ((ColorIndex_t)14) +#define Custom8_C ((ColorIndex_t)15) +#define Custom9_C ((ColorIndex_t)16) + +#define Custom10_C ((ColorIndex_t)17) +#define Custom11_C ((ColorIndex_t)18) +#define Custom12_C ((ColorIndex_t)19) +#define Custom13_C ((ColorIndex_t)20) +#define Custom14_C ((ColorIndex_t)21) +#define Custom15_C ((ColorIndex_t)22) +#define Custom16_C ((ColorIndex_t)23) +#define Custom17_C ((ColorIndex_t)24) +#define Custom18_C ((ColorIndex_t)25) +#define Custom19_C ((ColorIndex_t)26) + +#define Custom20_C ((ColorIndex_t)27) +#define Custom21_C ((ColorIndex_t)28) +#define Custom22_C ((ColorIndex_t)29) +#define Custom23_C ((ColorIndex_t)30) +#define Custom24_C ((ColorIndex_t)31) +#define Custom25_C ((ColorIndex_t)32) +#define Custom26_C ((ColorIndex_t)33) +#define Custom27_C ((ColorIndex_t)34) +#define Custom28_C ((ColorIndex_t)35) +#define Custom29_C ((ColorIndex_t)36) + +#define Custom30_C ((ColorIndex_t)37) +#define Custom31_C ((ColorIndex_t)38) +#define Custom32_C ((ColorIndex_t)39) +#define Custom33_C ((ColorIndex_t)40) +#define Custom34_C ((ColorIndex_t)41) +#define Custom35_C ((ColorIndex_t)42) +#define Custom36_C ((ColorIndex_t)43) +#define Custom37_C ((ColorIndex_t)44) +#define Custom38_C ((ColorIndex_t)45) +#define Custom39_C ((ColorIndex_t)46) + +#define Custom40_C ((ColorIndex_t)47) +#define Custom41_C ((ColorIndex_t)48) +#define Custom42_C ((ColorIndex_t)49) +#define Custom43_C ((ColorIndex_t)50) +#define Custom44_C ((ColorIndex_t)51) +#define Custom45_C ((ColorIndex_t)52) +#define Custom46_C ((ColorIndex_t)53) +#define Custom47_C ((ColorIndex_t)54) +#define Custom48_C ((ColorIndex_t)55) +#define Custom49_C ((ColorIndex_t)56) + +#define Custom50_C ((ColorIndex_t)57) +#define Custom51_C ((ColorIndex_t)58) +#define Custom52_C ((ColorIndex_t)59) +#define Custom53_C ((ColorIndex_t)60) +#define Custom54_C ((ColorIndex_t)61) +#define Custom55_C ((ColorIndex_t)62) +#define Custom56_C ((ColorIndex_t)63) + +#define MultiColor_C ((ColorIndex_t)(-1)) +#define NoColor_C ((ColorIndex_t)(-2)) +#define MultiColor2_C ((ColorIndex_t)(-3)) +#define MultiColor3_C ((ColorIndex_t)(-4)) +#define MultiColor4_C ((ColorIndex_t)(-5)) +#define RGBColor_C ((ColorIndex_t)(-6)) +#define MultiColor5_C ((ColorIndex_t)(-7)) +#define MultiColor6_C ((ColorIndex_t)(-8)) +#define MultiColor7_C ((ColorIndex_t)(-9)) +#define MultiColor8_C ((ColorIndex_t)(-10)) +#define InvalidColor_C ((ColorIndex_t)(-255)) + +#define FirstCustomColor Custom1_C +#define LastCustomColor Custom56_C +#define NumCustomColors (LastCustomColor-FirstCustomColor+1) + +#define FirstBasicColor Black_C +#define LastBasicColor LastCustomColor +#define NumBasicColors (LastBasicColor-FirstBasicColor+1) + +/* BEGINREMOVEFROMADDON */ + +/* + * V8 and earlier used this for MultiColor_C. We adjust this + * to the new value in the SetValue layer so old addons work. + */ +#define OldMultiColor_C ((ColorIndex_t)255) +/* + * Gray is only used in the interface for workspace background and + * for insensitive buttons in Motif. + * True Black and True White are also interface only. They draw + * true black or true white - regardless of what the user has set + * the RGB values for the black and white basic colors. + * XOrColor_C is also for interface only. + */ +#define Gray_C (LastBasicColor+1) +#define DarkGray_C (LastBasicColor+2) /* Used for inactive frame border color */ +#define XOrColor_C (LastBasicColor+3) +#define FirstInterfaceColor Gray_C +#define LastInterfaceColor XOrColor_C + +#define NumInterfaceColors (LastInterfaceColor-FirstInterfaceColor+1) +#define NumContourShades (GeneralBase.Limits.MaxNumContourLevels+1) +#define NumColorsInColorTable (NumBasicColors+NumInterfaceColors+NumContourShades) +#define BasicColorOffset (0) +#define InterfaceColorOffset (NumBasicColors) +#define ContourColorOffset (NumBasicColors+NumInterfaceColors) + +#define BadKey (short)31 +#define Plus (short)43 +#define Minus (short)45 +#define RetKey (short)13 +#define DeleteKey (short)127 +#define ShiftDelete (short)128 +#define BackSpace (short)8 +#define LeftArrow (short)29 +#define RightArrow (short)30 +#define UpArrow (short)11 +#define DownArrow (short)10 +#define Toggle (short)19 +#define Esc (short)27 +#define RegFrame (short)18 +#define DoBitDump (short)2 + + +/* File Markers */ +#define ZoneMarker 299.0 +#define GeomMarker 399.0 +#define TextMarker 499.0 +#define CustomLabelMarker 599.0 +#define UserRecMarker 699.0 +#define DataSetAuxMarker 799.0 +#define VarAuxMarker 899.0 +#define EndHeaderMarker 357.0 + + +/* + * Additional objects that have plotter + * pens assigned to them. + */ +#define AxisPen Custom8_C+1 +#define MajGridPen Custom8_C+2 +#define MinGridPen Custom8_C+3 +#define StreamlinePen Custom8_C+4 +#define ColoredLinePen Custom8_C+5 +#define BoundaryPen Custom8_C+6 +#define LabelPen Custom8_C+7 +#define NumPlotterPens Custom8_C+8 +/* AutoSelectPen will select the correct pen from Black_C thru Custom8_C or ColoredLinePen */ +#define AutoSelectPen Custom8_C+9 +#define InvalidPen Custom8_C+99 + +#define FirstObjectPen AxisPen +#define LastObjectPen LabelPen + +#define DelZFactor 0.0001 + +#define BadBaseValue NULL + + +/* + * NOTES ON TYPEDEFS: + * + * TYPEDEF TYPE Suffix + * ------------ ------ + * simple _t + * enumerated _e + * structure _s + * union _u + * abstract _a + * pointer to simple _pt + * pointer to enumerated _pe + * pointer to structure _ps + * pointer to union _pu + * pointer to abstract _pa + * pointer to function _pf + * + * + * The only execption is char * typedef's these use _t + * + * Abstract types are intentionally made to be + * obscure. The programmer should not have to know + * what the underlying structure really is for abstract + * types. + * + */ + + +#ifdef MSWIN +# define DIR_SEPARATOR "\\" +#else +# define DIR_SEPARATOR "/" +#endif + +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ +#if defined MSWIN +#define TP_FWRITE fwrite +#define TP_FFLUSH fflush +#define TP_FCLOSE fclose + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else +#define TP_UNLINK remove +#define TP_RMDIR _rmdir +#define TP_FREAD ::fread +#define TP_FOPEN ::fopen +#define TP_FREOPEN ::freopen +#define TP_STAT ::_stat +#define TP_GETENV ::getenv +#endif /* TECPLOTKERNEL */ + +#if defined _WIN64 +#define TP_FSEEK(stream,offset,whence) _fseeki64((stream),(__int64)(offset),(whence)) +#define TP_FTELL _ftelli64 +#else +#define TP_FSEEK(stream, offset, whence) fseek((stream), (long)(offset), (whence)) +#define TP_FTELL ftell +#endif + +#else +#define TP_RMDIR rmdir +#define TP_UNLINK unlink +#define TP_FOPEN fopen +#define TP_FREOPEN freopen +#define TP_FCLOSE fclose +#define TP_FREAD fread +#define TP_FWRITE fwrite +#define TP_FFLUSH fflush +#define TP_FSEEK fseeko +#define TP_FTELL ftello +#define TP_STAT stat +#define _stat stat // ...make the UNIXX and MSWIN platforms have the same syntax to use "struct _stat" +#define TP_GETENV getenv +#endif +/* ENDREMOVEFROMADDON */ + +/**************************************************************** + * * + * SIMPLE TYPEDEFS * + * * + ****************************************************************/ + + + +/* How to define UInt64_t/Int64_t is platform specific, but they are always 8-bytes */ +#if defined MSWIN +typedef unsigned __int64 UInt64_t; +typedef __int64 Int64_t; +#else +#if defined CRAY +typedef unsigned int UInt64_t; +typedef int Int64_t; +#else +#if defined LONGIS64 +typedef unsigned long UInt64_t; +typedef long Int64_t; +#else +typedef unsigned long long UInt64_t; +typedef long long Int64_t; +#endif +#endif +#endif + +#if defined LONGIS64 +typedef unsigned int UInt32_t; +typedef int Int32_t; +typedef int LgInteger_t; +#else +typedef unsigned int UInt32_t; +typedef int Int32_t; +typedef int LgInteger_t; +#endif + +typedef short Int16_t; +typedef unsigned short UInt16_t; +typedef signed char Int8_t; +typedef unsigned char UInt8_t; + +#ifdef INDEX_16_BIT +typedef Int16_t LgIndex_t; +#else +typedef Int32_t LgIndex_t; +#endif +typedef LgIndex_t NodeMap_t; +typedef LgIndex_t ScreenDim_t; + +/** + * ArbParam_t type is used for passing arbitrary integers or pointers in + * parameters. HgIndex_t is used for counting node maps and other things that + * may individually be LgIndex_t, but in total exceed 32-bit. + * The general rule is that these are 4 bytes on "32-bit" machines + * and 8 bytes on "64-bit" machines. + */ +#if defined CRAY +typedef char *ArbParam_t; +typedef long HgIndex_t; +#elif defined LONGIS64 +typedef long ArbParam_t; +typedef long HgIndex_t; +#elif defined MSWIN && (defined _M_IA64 || defined _M_AMD64) +typedef INT_PTR ArbParam_t; +typedef INT_PTR HgIndex_t; +#else +typedef int ArbParam_t; +typedef int HgIndex_t; +#endif + +typedef ArbParam_t UniqueID_t; + +/* 64 bit offset used to hold file offset and size values. */ +typedef Int64_t FileOffset_t; + +/** + * 64 bit offset for memory mapped I/O. + */ +typedef UInt64_t MemMapOffset_t; + +/* + * SmInteger must be at least a short.... + */ + +typedef unsigned char Byte_t; +typedef short SmInteger_t; +typedef SmInteger_t ColorIndex_t; +#ifdef INDEX_16_BIT +typedef Int16_t EntIndex_t; +#else +typedef Int32_t EntIndex_t; +#endif +typedef Int16_t SubZoneIndex_t; + +typedef char Boolean_t; +typedef char *ZoneName_t; +typedef char *VarName_t; +typedef char *LString_t; + +typedef LgIndex_t Strand_t; +typedef LgIndex_t HeapLength_t; +typedef LgIndex_t SegPtsArray_t[MaxGeoSegments]; +typedef double BasicSize_t[MaxBasicSizes]; +typedef double *VarList_t; + +typedef long SetIndex_t; + +typedef unsigned long SetData_t; +typedef SetData_t *SetData_pt; + +/* BEGINREMOVEFROMADDON */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +/* The following list identifies items that can be inhibited. */ +#define FEATURE_3D (1L << 0) +#define FEATURE_3DVOLUME (1L << 1) +#define FEATURE_2D (1L << 2) +#define FEATURE_XY (1L << 3) +#define FEATURE_DATAALTER (1L << 4) +#define FEATURE_UNSTRUCTUREDDATA (1L << 5) +#define FEATURE_MULTIPLEFRAMES1 (1L << 6) +#define FEATURE_MULTIPLEZONES1 (1L << 7) +#define FEATURE_MULTIPLEFRAMES5 (1L << 8) +#define FEATURE_MULTIPLEZONES5 (1L << 9) +#define FEATURE_MULTIPLEFRAMES10 (1L << 10) +#define FEATURE_MULTIPLEZONES10 (1L << 11) +#define FEATURE_READNONOEMDATA (1L << 12) /* Added 07/22/2000 */ +#define FEATURE_DATALOADERS (1L << 13) /* Added 07/22/2000 */ +#define FEATURE_DATALOADERS_EXCEPTONE (1L << 14) /* Added 11/26/2001 */ +#define FEATURE_LOADONDEMAND (1L << 15) /* Added 09/13/2007 */ +#define FEATURE_MULTIPLEWORKERTHREADS (1L << 16) /* Added 09/13/2007 */ +#define FEATURE_ISOSURFACEGROUPS (1L << 17) /* Added 09/21/2007 */ +#define FEATURE_SLICEGROUPS (1L << 18) /* Added 09/21/2007 */ +#define FEATURE_STREAMTRACEGROUPS (1L << 19) /* Added 09/25/2007 not used yet */ +#define FEATURE_FEPOLYHEDRON (1L << 20) /* Added 09/25/2007 */ +#define FEATURE_FEPOLYGON (1L << 21) /* Added 09/25/2007 */ + +/* + * KnowFeaturesToInhibit must be updated whenever a new + * item is added above. + */ +#define KnownFeaturesToInhibit (FEATURE_3D |\ + FEATURE_3DVOLUME |\ + FEATURE_2D |\ + FEATURE_XY |\ + FEATURE_DATAALTER |\ + FEATURE_UNSTRUCTUREDDATA |\ + FEATURE_MULTIPLEFRAMES1 |\ + FEATURE_MULTIPLEZONES1 |\ + FEATURE_MULTIPLEFRAMES5 |\ + FEATURE_MULTIPLEZONES5 |\ + FEATURE_MULTIPLEFRAMES10 |\ + FEATURE_MULTIPLEZONES10 |\ + FEATURE_READNONOEMDATA |\ + FEATURE_DATALOADERS |\ + FEATURE_DATALOADERS_EXCEPTONE |\ + FEATURE_LOADONDEMAND |\ + FEATURE_MULTIPLEWORKERTHREADS |\ + FEATURE_ISOSURFACEGROUPS |\ + FEATURE_SLICEGROUPS |\ + FEATURE_STREAMTRACEGROUPS |\ + FEATURE_FEPOLYHEDRON |\ + FEATURE_FEPOLYGON) + +#define VALID_FEATURE_INHIBIT_FLAG(feature) (((feature) & KnownFeaturesToInhibit) != 0) +#define VALID_FEATURE_INHIBIT_MASK(mask) (((mask) & ~KnownFeaturesToInhibit)==0) + + + +/* The following are used by the OEM libs, so they need + to be outside of TECPLOTKERNEL */ +typedef unsigned long FeatureFlag_t; +typedef unsigned long FeatureMask_t; + +/* ENDREMOVEFROMADDON */ + +typedef char SymbolChar_t[3]; + +/** + * Face node offset used for identifying which node of a polytope face is + * desired. + */ +typedef LgIndex_t FaceNodeOffset_t; + +/** + * Element face offset used for identifying which face of a polytope element is + * desired. + */ +typedef LgIndex_t ElemFaceOffset_t; + +/** + * Face boundary item offset used for identifying which boundary item of a + * polytope face is desired. + */ +typedef LgIndex_t FaceBndryItemOffset_t; + +/**************************************************************** + * * + * ENUMERATED TYPEDEFS * + * * + ****************************************************************/ + +typedef enum +{ + PlacementPlaneOrientation_X, + PlacementPlaneOrientation_Y, + PlacementPlaneOrientation_Z, + END_PlacementPlaneOrientation_e, + PlacementPlaneOrientation_Invalid = BadEnumValue +} PlacementPlaneOrientation_e; + +typedef enum +{ + StringMode_ASCII, + StringMode_UTF8, + StringMode_Blend, + END_StringMode_e, + StringMode_Invalid = BadEnumValue + +} StringMode_e; + +typedef enum +{ + SidebarSizing_MaxOfAll, + SidebarSizing_Dynamic, + END_SidebarSizing_e, + SidebarSizing_Invalid = BadEnumValue + +} SidebarSizing_e; + +typedef enum +{ + SidebarLocation_Left, + SidebarLocation_Right, /* Not allowed at this time */ + SidebarLocation_Top, /* Not allowed at this time */ + SidebarLocation_Bottom, /* Not allowed at this time */ + END_SidebarLocation_e, + SidebarLocation_Invalid = BadEnumValue + +} SidebarLocation_e; + +typedef enum +{ + MenuItem_Option, + MenuItem_Toggle, + MenuItem_Separator, + MenuItem_SubMenu, + END_MenuItem_e, + MenuItem_Invalid = BadEnumValue +} MenuItem_e; + +typedef enum +{ + StandardMenu_File, + StandardMenu_Edit, + StandardMenu_View, + StandardMenu_Plot, + StandardMenu_Insert, + StandardMenu_Data, + StandardMenu_Frame, + StandardMenu_Workspace, /* deprecated: use Options instead */ + StandardMenu_Tools, + StandardMenu_Help, + StandardMenu_Animate, + StandardMenu_Options, + StandardMenu_Scripting, + END_StandardMenu_e, + StandardMenu_Invalid = BadEnumValue +} StandardMenu_e; + +typedef enum +{ + FieldProbeDialogPage_NodalValues, + FieldProbeDialogPage_CellCenteredValues, + FieldProbeDialogPage_ZoneCellInfo, + FieldProbeDialogPage_FaceNeighbors, + END_FieldProbeDialogPage_e, + FieldProbeDialogPage_Invalid = BadEnumValue +} FieldProbeDialogPage_e; + +/* BEGINREMOVEFROMADDON */ + +/* used for caches of boolean type */ +typedef enum +{ + BooleanCache_False, /* Value is cached and is FALSE */ + BooleanCache_True, /* Value is cached and is TRUE */ + BooleanCache_Uncached, /* Value is not cached. Value is unknown. */ + END_BooleanCache_e, + BooleanCache_Invalid = BadEnumValue +} BooleanCache_e; + +/* + * For determining pick location along a line + */ +typedef enum +{ + LinePickLocation_None, + LinePickLocation_StartHandle, + LinePickLocation_MidLineOnHandle, + LinePickLocation_MidLineOffHandles, + LinePickLocation_EndHandle, + END_LinePickLocation_e, + LinePickLocation_Invalid = BadEnumValue +} LinePickLocation_e; + + +/* + * Defines destination for setting up views: hardware (ie, OpenGL) or + * software (ie, internal transformation matrices). + */ +typedef enum +{ + ViewDest_Hardware, + ViewDest_Software, + END_ViewDest_e, + ViewDest_Invalid = BadEnumValue +} ViewDest_e; + +/* used for identifying the origin of the dataset reader */ +typedef enum +{ + DataSetReaderOrigin_Native, /* created by Tecplot */ + DataSetReaderOrigin_Foreign, /* created by an add-on */ + END_DataSetReaderOrigin_e, + DataSetReaderOrigin_Invalid = BadEnumValue +} DataSetReaderOrigin_e; + +/* used for identifying the origin of the extended curve fit */ +typedef enum +{ + ExtendedCurveFitOrigin_Native, /* created by Tecplot */ + ExtendedCurveFitOrigin_Foreign, /* created by an add-on */ + END_ExtendedCurveFitOrigin_e, + ExtendedCurveFitOrigin_Invalid = BadEnumValue +} ExtendedCurveFitOrigin_e; + +typedef enum +{ + CollapsedStatus_NotCollapsed, + CollapsedStatus_CollapsedToPoint, + CollapsedStatus_CollapsedToLine, + CollapsedStatus_CollapsedToSegmentedLine, + CollapsedStatus_CollapsedToTriangle, + END_CollapsedStatus_e, + CollapsedStatus_Invalid = BadEnumValue +} CollapsedStatus_e; +/* ENDREMOVEFROMADDON */ + +/** + */ +typedef enum +{ + UndoStateCategory_Frame, + UndoStateCategory_Picked, /* picked changes, not the pick itself */ + UndoStateCategory_Text, + UndoStateCategory_Geom, + UndoStateCategory_View, + UndoStateCategory_WorkspaceView, + UndoStateCategory_Style, /* style less text and geometries */ + UndoStateCategory_SpecificStyle, /* meaning that specific undo style will be added by the caller */ + UndoStateCategory_Data, + UndoStateCategory_DataAndStyle, + UndoStateCategory_StyleIncTextGeom, /* style including text and geometires */ + UndoStateCategory_GlobalStyle, /* style less field, map, text and geometries */ + UndoStateCategory_PageAction, + END_UndoStateCategory_e, + UndoStateCategory_Invalid = BadEnumValue +} UndoStateCategory_e; + + +/* + * Used only for Action_PropagateLinking + */ +typedef enum +{ + LinkType_WithinFrame, + LinkType_BetweenFrames, + END_LinkType_e, + LinkType_Invalid = BadEnumValue +} LinkType_e; + +typedef enum +{ + FrameCollection_All, + FrameCollection_Picked, + END_FrameCollection_e, + FrameCollection_Invalid = BadEnumValue +} FrameCollection_e; + + + +typedef enum +{ + LegendProcess_DrawLegend, + LegendProcess_EraseLegend, + LegendProcess_GetExtents, + END_LegendProcess_e, + LegendProcess_Invalid = BadEnumValue +} LegendProcess_e; + + +typedef enum +{ + RGBLegendOrientation_RGB, + RGBLegendOrientation_GBR, + RGBLegendOrientation_BRG, + RGBLegendOrientation_RBG, + RGBLegendOrientation_GRB, + RGBLegendOrientation_BGR, + END_RGBLegendOrientation_e, + RGBLegendOrientation_Invalid = BadEnumValue +} RGBLegendOrientation_e; + + + +/* BEGINREMOVEFROMADDON */ +/* Used by some of the image exporters/animators */ +typedef struct +{ + Byte_t R; + Byte_t G; + Byte_t B; +} RGBTriple_s; + +typedef RGBTriple_s RGBPalette_t[256]; + +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ +/* The tag on the following line is so that the Windows + build script can parse all of the current state changes + out of this file, and compare them to the state changes + found in the main.c template file. + Do not change or delete the line below.*/ +/*StateChange_e_BeginDef*/ +/* ENDREMOVEFROMADDON */ + +typedef enum +{ + StateChange_VarsAltered, + StateChange_VarsAdded, + StateChange_ZonesDeleted, + StateChange_ZonesAdded, + StateChange_NodeMapsAltered, + StateChange_FrameDeleted, + StateChange_NewTopFrame, /* deprecated: use NewActiveFrame and/or FrameOrderChange */ + StateChange_Style, + StateChange_DataSetReset, + StateChange_NewLayout, + StateChange_CompleteReset, /* deprecated: no longer broadcast */ + StateChange_LineMapAssignment, /* was StateChange_XYMapAssignment */ + StateChange_ContourLevels, + StateChange_ModalDialogLaunch, + StateChange_ModalDialogDismiss, + StateChange_QuitTecplot, + StateChange_ZoneName, + StateChange_VarName, + StateChange_LineMapName, /* was StateChange_XYMapName */ + StateChange_LineMapAddDeleteOrReorder, /* was StateChange_XYMapAddDeleteOrReorder */ + StateChange_View, + StateChange_ColorMap, + StateChange_ContourVar, + StateChange_Streamtrace, + StateChange_NewAxisVariables, + StateChange_MouseModeUpdate, + StateChange_PickListCleared, + StateChange_PickListGroupSelect, + StateChange_PickListSingleSelect, + StateChange_PickListStyle, + StateChange_DataSetFileName, + StateChange_UnsuspendInterface, /* was StateChange_DrawGraphicsOn */ + StateChange_SuspendInterface, /* was StateChange_DrawGraphicsOff */ + StateChange_DataSetLockOn, + StateChange_DataSetLockOff, + StateChange_Text, + StateChange_Geom, + StateChange_DataSetTitle, + StateChange_DrawingInterrupted, + StateChange_PrintPreviewLaunch, + StateChange_PrintPreviewDismiss, + StateChange_AuxDataAdded, + StateChange_AuxDataDeleted, + StateChange_AuxDataAltered, + StateChange_VarsDeleted, + StateChange_TecplotIsInitialized, + StateChange_ImageExported, + StateChange_VariableLockOn, + StateChange_VariableLockOff, + StateChange_PageDeleted, + StateChange_NewTopPage, + StateChange_NewActiveFrame, + StateChange_FrameOrderChanged, + END_StateChange_e, + StateChange_Invalid = BadEnumValue, + /* deprecated values */ + StateChange_DrawGraphicsOn = StateChange_UnsuspendInterface, + StateChange_DrawGraphicsOff = StateChange_SuspendInterface, + StateChange_XYMapAssignment = StateChange_LineMapAssignment, + StateChange_XYMapName = StateChange_LineMapName, + StateChange_XYMapAddDeleteOrReorder = StateChange_LineMapAddDeleteOrReorder +} StateChange_e; + +typedef enum +{ + StateChangeMode_v75, + StateChangeMode_v80, + StateChangeMode_v100, + StateChangeMode_v113, + END_StateChangeMode_e, + StateChangeMode_Invalid = BadEnumValue +} StateChangeMode_e; + +typedef enum +{ + StateChangeCallbackAPI_Classic, + StateChangeCallbackAPI_ChangeOnly, + StateChangeCallbackAPI_ChangePlusClient, + END_StateChangeCallbackAPI_e, + StateChangeCallbackAPI_Invalid = BadEnumValue +} StateChangeCallbackAPI_e; + +typedef enum +{ + AppMode_Normal, + AppMode_Demo, + AppMode_OEM, + END_AppMode_e, + AppMode_Invalid = BadEnumValue +} AppMode_e; + +typedef enum +{ + ProductFlavor_TecplotFocus, + ProductFlavor_Tecplot360, + ProductFlavor_TecplotRS, + ProductFlavor_TecplotSDK, + END_ProductFlavor_e, + ProductFlavor_Invalid = BadEnumValue, + ProductFlavor_Focus = ProductFlavor_TecplotFocus, /* deprecated */ + ProductFlavor_360 = ProductFlavor_Tecplot360, /* deprecated */ + ProductFlavor_RS = ProductFlavor_TecplotRS, /* deprecated */ + ProductFlavor_SDK = ProductFlavor_TecplotSDK /* deprecated */ +} ProductFlavor_e; + +typedef enum +{ + LayoutPackageObject_Image, + LayoutPackageObject_Layout, + LayoutPackageObject_Data, + END_LayoutPackageObject_e, + LayoutPackageObject_Invalid = BadEnumValue +} LayoutPackageObject_e; + +typedef enum +{ + VarLoadMode_ByName, + VarLoadMode_ByPosition, + END_VarLoadMode_e, + VarLoadMode_Invalid = BadEnumValue +} VarLoadMode_e; + +typedef enum +{ + ImageSelection_OnePerFrame, + ImageSelection_WorkspaceOnly, + END_ImageSelection_e, + ImageSelection_Invalid = BadEnumValue +} ImageSelection_e; + +typedef enum +{ + LibraryType_Foreign, + LibraryType_V7Standard, + LibraryType_V7ActiveX, + END_LibraryType_e, + LibraryType_Invalid = BadEnumValue +} LibraryType_e; /* <help> "Add-on types" */ + + +typedef enum +{ + AssignOp_Equals, + AssignOp_PlusEquals, + AssignOp_MinusEquals, + AssignOp_TimesEquals, + AssignOp_DivideEquals, + AssignOp_ConvertFromCm, + AssignOp_ConvertFromIn, + AssignOp_ConvertFromPt, + AssignOp_ConvertFromPix, + END_AssignOp_e, + AssignOp_Invalid = BadEnumValue +} AssignOp_e; + +typedef enum +{ + Dialog_ColorMap, + Dialog_Equation, + Dialog_MacroViewer, + Dialog_ZoneMapStyle, /* was Dialog_PlotAttributes*/ + Dialog_QuickEdit, + Dialog_QuickMacroPanel, + Dialog_ValueBlanking, + Dialog_Probe, /* used for dialog positioning only */ + Dialog_ProbeAt, + Dialog_NewLayout, + Dialog_OpenLayout, + Dialog_Save, + Dialog_SaveAs, + Dialog_LoadData, + Dialog_WriteData, + Dialog_Print, + Dialog_Import, + Dialog_Export, + Dialog_MacroPlay, + Dialog_MacroRecord, + Dialog_AxisEdit, + Dialog_SpatialVars, + Dialog_Reset3DAxes, + Dialog_ThreeDAxisLimits, + Dialog_ThreeDOrientationAxis, + Dialog_Streamtraces, + Dialog_IsoSurfaces, + Dialog_Slices, + Dialog_Contour, + Dialog_VectorLength, + Dialog_VectorVars, + Dialog_VectorArrowheads, + Dialog_VectorReferenceVector, + Dialog_ScatterSizeAndFont, + Dialog_ScatterLegend, + Dialog_ScatterReferenceSymbol, + Dialog_RGBColorVarsAndRange, + Dialog_RGBColorLegend, + Dialog_LineMapLegend, + Dialog_IJKBlanking, + Dialog_DepthBlanking, + Dialog_LightSource, + Dialog_Advanced3DControl, + Dialog_TwoDDrawOrder, + Dialog_PolarDrawingOptions, + Dialog_DataLabels, + Dialog_StyleLinking, + Dialog_Smooth, + Dialog_TransformCoordinates, + Dialog_Rotate2DData, + Dialog_Create1DLine, + Dialog_CreateRectangularZone, + Dialog_CreateCircularZone, + Dialog_DuplicateZone, + Dialog_MirrorZone, + Dialog_CreateZoneFromPolylines, + Dialog_CreateZoneFromValues, + Dialog_DeleteVariables, + Dialog_DeleteZones, + Dialog_ExtractContourLines, + Dialog_ExtractFEBoundary, + Dialog_ExtractIsoSurfaces, + Dialog_ExtractSlices, + Dialog_ExtractSliceFromPlane, + Dialog_ExtractStreamtraces, + Dialog_ExtractSubZone, + Dialog_ExtractDiscretePoints, + Dialog_ExtractPointsFromPolyline, + Dialog_ExtractPointsFromGeometry, + Dialog_LinearInterpolation, + Dialog_InverseDistanceInterpolation, + Dialog_KrigingInterpolation, + Dialog_Triangulate, + Dialog_DataInfo, + Dialog_CurveInfo, + Dialog_DataSpreadsheet, + Dialog_PaperSetup, + Dialog_OrderFrames, + Dialog_RulerGrid, + Dialog_ThreeDViewRotate, + Dialog_ThreeDViewDetails, + Dialog_TranslateMagnify, + Dialog_PrintPreview, + Dialog_ColorPreferences, + Dialog_MiscPreferences, + Dialog_SizePreferences, + Dialog_SaveConfiguration, + Dialog_SaveColorMap, + Dialog_LoadColorMap, + Dialog_HelpAboutTecplot, + Dialog_HelpAboutAddOns, + Dialog_Publish, + Dialog_EditFrame, + Dialog_CopyToClipboard, + Dialog_ThreeDEdge, + Dialog_TimeDetails, + Dialog_Performance, + END_Dialog_e, + Dialog_Invalid = BadEnumValue, + /* deprecated values */ + Dialog_PlotAttributes = Dialog_ZoneMapStyle +} Dialog_e; /* <help> "Tecplot dialog types" */ + +typedef enum +{ + AnchorAlignment_TopLeft, + AnchorAlignment_TopCenter, + AnchorAlignment_TopRight, + AnchorAlignment_MiddleLeft, + AnchorAlignment_MiddleCenter, + AnchorAlignment_MiddleRight, + AnchorAlignment_BottomLeft, + AnchorAlignment_BottomCenter, + AnchorAlignment_BottomRight, + END_AnchorAlignment_e, + AnchorAlignment_Invalid = BadEnumValue +} AnchorAlignment_e; + +/* BEGINREMOVEFROMADDON */ +typedef enum +{ + PositionAtAnchor_Never, + PositionAtAnchor_Once, + PositionAtAnchor_Always, + END_PositionAtAnchor_e, + PositionAtAnchor_Invalid = BadEnumValue +} PositionAtAnchor_e; +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ +typedef struct +{ + AnchorAlignment_e AnchorAlignment; + Boolean_t AnchorHorizontalInside; + Boolean_t AnchorVerticalInside; + SmInteger_t MinVisibilityPercentage; + LgIndex_t IOffset; + LgIndex_t JOffset; + PositionAtAnchor_e PositionAtAnchor; + Boolean_t HasBeenPositioned; /* not persistent */ +} DialogPosition_s; +/* ENDREMOVEFROMADDON */ + + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref CurveInfoMode_e instead. + */ +typedef enum +{ + ProcessXYMode_NotUsed1, /* deprecated: do not use */ + ProcessXYMode_NotUsed2, /* deprecated: do not use */ + ProcessXYMode_NotUsed3, /* deprecated: do not use */ + ProcessXYMode_NotUsed4, /* deprecated: do not use */ + ProcessXYMode_NotUsed5, /* deprecated: do not use */ + ProcessXYMode_NotUsed6, /* deprecated: do not use */ + ProcessXYMode_NotUsed7, /* deprecated: do not use */ + ProcessXYMode_NotUsed8, /* deprecated: do not use */ + ProcessXYMode_NotUsed9, /* deprecated: do not use */ + ProcessXYMode_WriteCurveCoef, /* deprecated: use CurveInfoMode_Coefficients */ + ProcessXYMode_WriteCurvePoints, /* deprecated: use CurveInfoMode_RawData */ + END_ProcessXYMode_e, + ProcessXYMode_Invalid = BadEnumValue +} ProcessXYMode_e; +#endif + +typedef enum +{ + CurveInfoMode_Coefficients, /* ProcessXYMode_WriteCurveCoef */ + CurveInfoMode_RawData, /* ProcessXYMode_WriteCurvePoints */ + CurveInfoMode_Macro, /* ProcessXYMode_WriteCurveCoefMacro */ + END_CurveInfoMode_e, + CurveInfoMode_Invalid = BadEnumValue +} CurveInfoMode_e; + +/* BEGINREMOVEFROMADDON */ +typedef enum +{ + ProcessLineMapMode_Draw, + ProcessLineMapMode_GetXYMinMax, + ProcessLineMapMode_GetDataMinMax, + ProcessLineMapMode_GetSinglePick, + ProcessLineMapMode_CheckOnlyForGroupPick, + ProcessLineMapMode_GetGroupPick, + ProcessLineMapMode_GetFirstValidDataPoint, + ProcessLineMapMode_GetNearestPoint, + ProcessLineMapMode_GetDependentValue, + ProcessLineMapMode_GetRSquaredGoodness, + ProcessLineMapMode_DisplayCurveCoef, + ProcessLineMapMode_WriteCurveCoef, + ProcessLineMapMode_WriteCurvePoints, + ProcessLineMapMode_InsertLabels, + ProcessLineMapMode_GetIndependentValue, + ProcessLineMapMode_WriteCurveCoefMacro, + END_ProcessLineMapMode_e, + ProcessLineMapMode_Invalid = BadEnumValue +} ProcessLineMapMode_e; +/* ENDREMOVEFROMADDON */ + +typedef enum +{ + StyleBase_Factory, + StyleBase_Config, + END_StyleBase_e, + StyleBase_Invalid = BadEnumValue +} StyleBase_e; + + +typedef enum +{ + ReadDataOption_NewData, + ReadDataOption_AppendData, + ReadDataOption_ReplaceData, + END_ReadDataOption_e, + ReadDataOption_Invalid = BadEnumValue +} ReadDataOption_e; + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref LabelType_e instead. + */ +typedef enum +{ + NodeLabel_Index, /* deprecated: use LabelType_Index */ + NodeLabel_VarValue, /* deprecated: use LabelType_VarValue */ + NodeLabel_XAndYVarValue, /* deprecated: use LabelType_XAndYVarValue */ + END_NodeLabel_e, + NodeLabel_Invalid = BadEnumValue +} NodeLabel_e; +#endif + +typedef enum +{ + LabelType_Index, /* NodeLabel_Index */ + LabelType_VarValue, /* NodeLabel_VarValue */ + LabelType_XAndYVarValue, /* NodeLabel_XAndYVarValue */ + END_LabelType_e, + LabelType_Invalid = BadEnumValue +} LabelType_e; + + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref BorderAction_e instead. + */ +typedef enum +{ + SubBoundaryEditOption_All, /* deprecated: use BorderAction_AddAll */ + SubBoundaryEditOption_Add, /* deprecated: use BorderAction_Add */ + SubBoundaryEditOption_Remove, /* deprecated: use BorderAction_Remove */ + SubBoundaryEditOption_AddOnly, /* deprecated: use BorderAction_AddOnly */ + END_SubBoundaryEditOption_e, + SubBoundaryEditOption_Invalid = BadEnumValue +} SubBoundaryEditOption_e; +#endif + +typedef enum +{ + BorderAction_AddAll, /* SubBoundaryEditOption_All */ + BorderAction_Add, /* SubBoundaryEditOption_Add */ + BorderAction_Remove, /* SubBoundaryEditOption_Remove */ + BorderAction_AddOnly, /* SubBoundaryEditOption_AddOnly */ + END_BorderAction_e, + BorderAction_Invalid = BadEnumValue +} BorderAction_e; + + +typedef enum +{ + PointerStyle_NotUsed1, + PointerStyle_NotUsed2, + PointerStyle_NotUsed3, + PointerStyle_AllDirections, + PointerStyle_NotUsed4, + PointerStyle_NotUsed5, + PointerStyle_NotUsed6, + PointerStyle_UpperLeftBracket, + PointerStyle_UpperRightBracket, + PointerStyle_LeftBracket, + PointerStyle_LowerLeftBracket, + PointerStyle_LowerRightBracket, + PointerStyle_RightBracket, + PointerStyle_BottomBracket, + PointerStyle_TopBracket, + PointerStyle_UpDown, + PointerStyle_LeftRight, + END_PointerStyle_e, + PointerStyle_Invalid = BadEnumValue +} PointerStyle_e; + +typedef enum +{ + CursorStyle_Undefined, + CursorStyle_StandardArrow, + CursorStyle_AdjusterArrow, + CursorStyle_AllDirections, + CursorStyle_Rotate, + CursorStyle_Zoom, + CursorStyle_Locate, + CursorStyle_UpperLeftBracket, + CursorStyle_UpperRightBracket, + CursorStyle_LeftBracket, + CursorStyle_LowerLeftBracket, + CursorStyle_LowerRightBracket, + CursorStyle_RightBracket, + CursorStyle_BottomBracket, + CursorStyle_TopBracket, + CursorStyle_UpDown, + CursorStyle_LeftRight, + CursorStyle_Waiting, + END_CursorStyle_e, + CursorStyle_Invalid = BadEnumValue +} CursorStyle_e; + + +typedef enum +{ + PickSubPosition_All, + PickSubPosition_Top, + PickSubPosition_Bottom, + PickSubPosition_Left, + PickSubPosition_Right, + PickSubPosition_TopLeft, + PickSubPosition_TopRight, + PickSubPosition_BottomLeft, + PickSubPosition_BottomRight, + PickSubPosition_BottomAndTop, + PickSubPosition_LeftAndRight, + END_PickSubPosition_e, + PickSubPosition_Invalid = BadEnumValue +} PickSubPosition_e; + +typedef enum +{ + TecEngInitReturnCode_Ok, + TecEngInitReturnCode_LicenseIsInvalid, + TecEngInitReturnCode_LicenseExpired, + TecEngInitReturnCode_InternalInitializationError, + END_TecEngInitReturnCode_e, + TecEngInitReturnCode_Invalid = BadEnumValue +} TecEngInitReturnCode_e; + +typedef enum +{ + GetValueReturnCode_Ok, + GetValueReturnCode_ResultTypeError, + GetValueReturnCode_SyntaxError, + GetValueReturnCode_ContextError, + GetValueReturnCode_DeprecatedError, + END_GetValueReturnCode_e, + GetValueReturnCode_Invalid = BadEnumValue, + /* deprecated values */ + GetValue_Ok = GetValueReturnCode_Ok, /* deprecated */ + GetValue_ResultTypeError = GetValueReturnCode_ResultTypeError, /* deprecated */ + GetValue_SyntaxError = GetValueReturnCode_SyntaxError, /* deprecated */ + GetValue_ContextError = GetValueReturnCode_ContextError, /* deprecated */ + GetValue_DeprecatedError = GetValueReturnCode_DeprecatedError, /* deprecated */ + GetValue_Invalid = GetValueReturnCode_Invalid /* deprecated */ +} GetValueReturnCode_e; + +typedef enum +{ + SetValueReturnCode_Ok, + SetValueReturnCode_DuplicateValue, + SetValueReturnCode_InvalidCommandOption, + SetValueReturnCode_NoAttachedDatasetError, + SetValueReturnCode_NoAttachedFrameError, + SetValueReturnCode_NotAllowedInConfigError, + SetValueReturnCode_ValueRangeError, + SetValueReturnCode_ValueSyntaxError, + SetValueReturnCode_AssignOpError, + SetValueReturnCode_InvalidVarOrZone, + SetValueReturnCode_InternalMemoryError, + SetValueReturnCode_ContextError1, + SetValueReturnCode_ContextError2, + SetValueReturnCode_OnlyAllowedInConfigError, + SetValueReturnCode_FeatureNotAvailable, + END_SetValueReturnCode_e, + /* BEGINREMOVEFROMADDON */ + /* For now this value is only used in Tecplot code. + * the value is here as an option for the future. */ + SetValueReturnCode_Ignored = SetValueReturnCode_DuplicateValue, + /* ENDREMOVEFROMADDON */ + SetValueReturnCode_Invalid = BadEnumValue, + /* deprecated values */ + SetValue_Ok = SetValueReturnCode_Ok, /* deprecated */ + SetValue_DuplicateValue = SetValueReturnCode_DuplicateValue, /* deprecated */ + SetValue_InvalidCommandOption = SetValueReturnCode_InvalidCommandOption, /* deprecated */ + SetValue_NoAttachedDatasetError = SetValueReturnCode_NoAttachedDatasetError, /* deprecated */ + SetValue_NoAttachedFrameError = SetValueReturnCode_NoAttachedFrameError, /* deprecated */ + SetValue_NotAllowedInConfigError = SetValueReturnCode_NotAllowedInConfigError, /* deprecated */ + SetValue_ValueRangeError = SetValueReturnCode_ValueRangeError, /* deprecated */ + SetValue_ValueSyntaxError = SetValueReturnCode_ValueSyntaxError, /* deprecated */ + SetValue_AssignOpError = SetValueReturnCode_AssignOpError, /* deprecated */ + SetValue_InvalidVarOrZone = SetValueReturnCode_InvalidVarOrZone, /* deprecated */ + SetValue_InternalMemoryError = SetValueReturnCode_InternalMemoryError, /* deprecated */ + SetValue_ContextError1 = SetValueReturnCode_ContextError1, /* deprecated */ + SetValue_ContextError2 = SetValueReturnCode_ContextError2, /* deprecated */ + SetValue_OnlyAllowedInConfigError = SetValueReturnCode_OnlyAllowedInConfigError, /* deprecated */ + SetValue_FeatureNotAvailable = SetValueReturnCode_FeatureNotAvailable, /* deprecated */ + /* BEGINREMOVEFROMADDON */ + SetValue_Ignored = SetValueReturnCode_Ignored, /* deprecated */ + /* ENDREMOVEFROMADDON */ + SetValue_Invalid = SetValueReturnCode_Invalid /* deprecated */ +} SetValueReturnCode_e; + + +typedef enum +{ + ObjectAlign_LeftJustify, + ObjectAlign_RightJustify, + ObjectAlign_Center, + ObjectAlign_Top, + ObjectAlign_Bottom, + END_ObjectAlign_e, + ObjectAlign_Invalid = BadEnumValue +} ObjectAlign_e; + + +/* + * For 3D axis labels only. + */ +typedef enum +{ + LabelAlignment_ByAngle, + LabelAlignment_AlongAxis, + LabelAlignment_PerpendicularToAxis, + END_LabelAlignment_e, + LabelAlignment_Invalid = BadEnumValue +} LabelAlignment_e; /* <help> Label alignment for 3D axis labels only" */ + +/* + * View_SetMagnification added 02/24/03 so all plot types + * can behave the same way "do a 'centered' magnifacation change". + * Line plots will still accept View_Scale option and zoom towards + * the corner so old macros/addons still work. + */ +typedef enum +{ + View_Fit, + View_DataFit, + View_AxisFit, + View_Scale, /* deprecated, Use SetMagnification */ + View_Center, + View_Translate, + View_Zoom, + View_Last, + View_Copy, + View_Paste, + View_Push, /* End of V9 enums */ + View_SetMagnification, + View_NiceFit, + View_AxisNiceFit, + View_MakeCurrentViewNice, + View_AxisMakeCurrentValuesNice, + View_AxisResetToEntireCircle, + View_FitSurfaces, + END_View_e, + View_Invalid = BadEnumValue +} View_e; + + + +typedef enum +{ + WorkspaceView_FitSelectedFrames, + WorkspaceView_FitAllFrames, + WorkspaceView_FitPaper, + WorkspaceView_Maximize, + WorkspaceView_LastView, + WorkspaceView_Zoom, + WorkspaceView_Translate, + WorkspaceView_UnMaximize, + END_WorkspaceView_e, + WorkspaceView_Invalid = BadEnumValue +} WorkspaceView_e; + + +typedef enum +{ + ArrowheadStyle_Plain, + ArrowheadStyle_Filled, + ArrowheadStyle_Hollow, + END_ArrowheadStyle_e, + ArrowheadStyle_Invalid = BadEnumValue, + /* deprecated values */ + Arrowhead_Plain = ArrowheadStyle_Plain, /* deprecated */ + Arrowhead_Filled = ArrowheadStyle_Filled, /* deprecated */ + Arrowhead_Hollow = ArrowheadStyle_Hollow, /* deprecated */ + Arrowhead_Invalid = ArrowheadStyle_Invalid /* deprecated */ +} ArrowheadStyle_e; + + +typedef enum +{ + ArrowheadAttachment_None, + ArrowheadAttachment_AtBeginning, + ArrowheadAttachment_AtEnd, + ArrowheadAttachment_AtBothEnds, + END_ArrowheadAttachment_e, + ArrowheadAttachment_Invalid = BadEnumValue, + /* deprecated values */ + ArrowheadAttach_None = ArrowheadAttachment_None, /* deprecated */ + ArrowheadAttach_AtBeginning = ArrowheadAttachment_AtBeginning, /* deprecated */ + ArrowheadAttach_AtEnd = ArrowheadAttachment_AtEnd, /* deprecated */ + ArrowheadAttach_AtBothEnds = ArrowheadAttachment_AtBothEnds, /* deprecated */ + ArrowheadAttach_Invalid = ArrowheadAttachment_Invalid /* deprecated */ +} ArrowheadAttachment_e; + +typedef enum +{ + Clipping_ClipToViewport, + Clipping_ClipToFrame, + END_Clipping_e, + Clipping_Invalid = BadEnumValue +} Clipping_e; + +typedef enum +{ + StatusInfo_Hover, + StatusInfo_Identify, + StatusInfo_Instruction, + StatusInfo_Working, + StatusInfo_PercentDone, + END_StatusInfo_e, + StatusInfo_Invalid = BadEnumValue +} StatusInfo_e; + + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref PlotType_e instead. + */ +typedef enum +{ + FrameMode_Empty, /* deprecated: use PlotType_Automatic */ + FrameMode_ThreeD, /* deprecated: use PlotType_Cartesian3D */ + FrameMode_TwoD, /* deprecated: use PlotType_Cartesian2D */ + FrameMode_XY, /* deprecated: use PlotType_XYLine */ + FrameMode_Sketch, /* deprecated: use PlotType_Sketch */ + END_FrameMode_e, + FrameMode_Invalid = BadEnumValue, + /* deprecated values */ + Frame_Empty = FrameMode_Empty, /* deprecated */ + Frame_ThreeD = FrameMode_ThreeD, /* deprecated */ + Frame_TwoD = FrameMode_TwoD, /* deprecated */ + Frame_XY = FrameMode_XY, /* deprecated */ + Frame_Sketch = FrameMode_Sketch, /* deprecated */ + Frame_Invalid = FrameMode_Invalid /* deprecated */ +} FrameMode_e; +#endif + + +typedef enum +{ + PlotType_Automatic, /* Frame_Empty */ + PlotType_Cartesian3D, /* Frame_ThreeD */ + PlotType_Cartesian2D, /* Frame_TwoD */ + PlotType_XYLine, /* Frame_XY */ + PlotType_Sketch, /* Frame_Sketch */ + PlotType_PolarLine, + END_PlotType_e, + PlotType_Invalid = BadEnumValue +} PlotType_e; + + +#define VALID_PLOTTYPE(PlotType) ( VALID_ENUM((PlotType), PlotType_e) && \ + ((PlotType) != PlotType_Automatic) ) +#define VALID_LINEPLOT_PLOTTYPE(PlotType) ( (PlotType) == PlotType_XYLine || \ + (PlotType) == PlotType_PolarLine ) +#define VALID_FIELDPLOT_PLOTTYPE(PlotType) ( (PlotType) == PlotType_Cartesian2D || \ + (PlotType) == PlotType_Cartesian3D ) +#define PLOTTYPE_USES_FIELDZONES(PlotType) VALID_FIELDPLOT_PLOTTYPE((PlotType)) +#define PLOTTYPE_USES_LINEMAPS(PlotType) VALID_LINEPLOT_PLOTTYPE((PlotType)) +#define VALID_V9_PLOTTYPE(PlotType) ( (PlotType) == PlotType_Sketch || \ + (PlotType) == PlotType_XYLine || \ + (PlotType) == PlotType_Cartesian2D || \ + (PlotType) == PlotType_Cartesian3D ) + + +typedef enum +{ + ContLineCreateMode_OneZonePerContourLevel, + ContLineCreateMode_OneZonePerIndependentPolyline, + END_ContLineCreateMode_e, + ContLineCreateMode_Invalid = BadEnumValue +} ContLineCreateMode_e; + + +typedef enum +{ + PickObjects_None, + PickObjects_Frame, + PickObjects_Axis, + PickObjects_ThreeDOrientationAxis, + PickObjects_Geom, + PickObjects_Text, + PickObjects_ContourLegend, + PickObjects_ContourLabel, + PickObjects_ScatterLegend, + PickObjects_LineLegend, + PickObjects_ReferenceVector, + PickObjects_ReferenceScatterSymbol, + PickObjects_StreamtracePosition, + PickObjects_StreamtraceTermLine, + PickObjects_Paper, + PickObjects_Zone, + PickObjects_XYMapping, /* deprecated: use PickObject_LineMapping */ + PickObjects_StreamtraceCOB, + PickObjects_SliceCOB, + PickObjects_IsoSurfaceCOB, + PickObjects_RGBLegend, + PickObjects_LineMapping, + END_PickObjects_e, + PickObjects_Invalid = BadEnumValue, + /* deprecated values */ + PickObject_None = PickObjects_None, /* deprecated */ + PickObject_Frame = PickObjects_Frame, /* deprecated */ + PickObject_Axis = PickObjects_Axis, /* deprecated */ + PickObject_3DOrientationAxis = PickObjects_ThreeDOrientationAxis, /* deprecated */ + PickObject_Geom = PickObjects_Geom, /* deprecated */ + PickObject_Text = PickObjects_Text, /* deprecated */ + PickObject_ContourLegend = PickObjects_ContourLegend, /* deprecated */ + PickObject_ContourLabel = PickObjects_ContourLabel, /* deprecated */ + PickObject_ScatterLegend = PickObjects_ScatterLegend, /* deprecated */ + PickObject_LineLegend = PickObjects_LineLegend, /* deprecated */ + PickObject_XYLegend = PickObjects_LineLegend, /* deprecated */ + PickObject_ReferenceVector = PickObjects_ReferenceVector, /* deprecated */ + PickObject_ReferenceScatterSymbol = PickObjects_ReferenceScatterSymbol, /* deprecated */ + PickObject_StreamtracePosition = PickObjects_StreamtracePosition, /* deprecated */ + PickObject_StreamtraceTermLine = PickObjects_StreamtraceTermLine, /* deprecated */ + PickObject_Paper = PickObjects_Paper, /* deprecated */ + PickObject_Zone = PickObjects_Zone, /* deprecated */ + PickObject_XYMapping = PickObjects_XYMapping, /* deprecated */ + PickObject_StreamtraceCOB = PickObjects_StreamtraceCOB, /* deprecated */ + PickObject_SliceCOB = PickObjects_SliceCOB, /* deprecated */ + PickObject_IsoSurfaceCOB = PickObjects_IsoSurfaceCOB, /* deprecated */ + PickObject_RGBLegend = PickObjects_RGBLegend, /* deprecated */ + PickObject_LineMapping = PickObjects_LineMapping, /* deprecated */ + PickObject_Invalid = PickObjects_Invalid /* deprecated */ +} PickObjects_e; + + +/* BEGINREMOVEFROMADDON */ +typedef enum +{ + SingleEditState_NotEditing, + SingleEditState_ActivelyEditing, + SingleEditState_WasEditing, + END_SingleEditState_e, + EditingInvalid = BadEnumValue +} SingleEditState_e; + + +typedef enum +{ + AxisSubObject_GridArea, + AxisSubObject_AxisLine, + AxisSubObject_Title, + END_AxisSubObject_e, + AxisSubObject_Invalid = BadEnumValue +} AxisSubObject_e; + +typedef enum +{ + AxisSubPosition_GridMinBorder, + AxisSubPosition_GridMaxBorder, + AxisSubPosition_MainAxisLine, + AxisSubPosition_BackAxisLine, + AxisSubPosition_PerpAxisLine, + AxisSubPosition_PerpBackAxisLine, + END_AxisSubPosition_e, + AxisSubPosition_Invalid = BadEnumValue, + AxisSubPosition_2DStart = AxisSubPosition_GridMinBorder, + AxisSubPosition_2DEnd = AxisSubPosition_MainAxisLine, + AxisSubPosition_PolarStart = AxisSubPosition_GridMinBorder, + AxisSubPosition_PolarEnd = AxisSubPosition_PerpBackAxisLine +} AxisSubPosition_e; +/* ENDREMOVEFROMADDON */ + +/* + * NOTE: The _NoOp value is not at the top so this + * enumeration aligns with the old AltMouseButtonMode_e + * enumeration. + */ +typedef enum +{ + MouseButtonClick_Redraw, + MouseButtonClick_RevertToSelect, + MouseButtonClick_NoOp, + END_MouseButtonClick_e, + MouseButtonClick_Invalid = BadEnumValue +} MouseButtonClick_e; + + +typedef enum +{ + MouseButtonDrag_NoOp, + MouseButtonDrag_ZoomPaper, + MouseButtonDrag_TranslatePaper, + MouseButtonDrag_ZoomData, + MouseButtonDrag_TranslateData, + MouseButtonDrag_RlrBallRtatData, + MouseButtonDrag_SpherRtatData, + MouseButtonDrag_XRotateData, + MouseButtonDrag_YRotateData, + MouseButtonDrag_ZRotateData, + MouseButtonDrag_TwistRotateData, + MouseButtonDrag_ZoomViewer, + MouseButtonDrag_TranslateViewer, + MouseButtonDrag_RlrBallRtatVwr, + MouseButtonDrag_SpherRotateVwr, + MouseButtonDrag_XRotateViewer, + MouseButtonDrag_YRotateViewer, + MouseButtonDrag_ZRotateViewer, + MouseButtonDrag_TwistRotateViewer, + END_MouseButtonDrag_e, + MouseButtonDrag_Invalid = BadEnumValue +} MouseButtonDrag_e; + + +/* BEGINREMOVEFROMADDON */ +typedef struct +{ + MouseButtonClick_e ButtonClick; + MouseButtonDrag_e SimpleDrag; + MouseButtonDrag_e ControlledDrag; + MouseButtonDrag_e AltedDrag; + MouseButtonDrag_e ShiftedDrag; + MouseButtonDrag_e ControlAltedDrag; + MouseButtonDrag_e ControlShiftedDrag; + MouseButtonDrag_e AltShiftedDrag; + MouseButtonDrag_e ControlAltShiftedDrag; +} MouseButtonAction_s; + + +typedef struct +{ + MouseButtonAction_s MiddleButton; + MouseButtonAction_s RightButton; +} MouseActions_s; +/* ENDREMOVEFROMADDON */ + + +typedef enum /* deprecated */ +{ + AltMouseButtonMode_Regen, + AltMouseButtonMode_RevertToSelect, + END_AltMouseButtonMode_e, + AltMouseButtonMode_Invalid = BadEnumValue +} AltMouseButtonMode_e; + + +typedef enum +{ + MouseButtonMode_NoMode, + MouseButtonMode_Select, + MouseButtonMode_Adjust, + MouseButtonMode_Zoom, + MouseButtonMode_Translate, + MouseButtonMode_Probe, + MouseButtonMode_Text, + MouseButtonMode_GeomPolyline, + MouseButtonMode_GeomSquare, + MouseButtonMode_GeomCircle, + MouseButtonMode_GeomRectangle, + MouseButtonMode_GeomEllipse, + MouseButtonMode_GeomSpline, + MouseButtonMode_CreateFrame, + MouseButtonMode_RotateSpherical, + MouseButtonMode_RotateRollerBall, + MouseButtonMode_RotateTwist, + MouseButtonMode_RotateXAxis, + MouseButtonMode_RotateYAxis, + MouseButtonMode_RotateZAxis, + MouseButtonMode_ContourLabel, + MouseButtonMode_ContourAdd, + MouseButtonMode_ContourDelete, + MouseButtonMode_StreamPoints, + MouseButtonMode_StreamEndLine, + MouseButtonMode_ExtractPoints, + MouseButtonMode_ExtractLine, + MouseButtonMode_CreateRectangularZone, + MouseButtonMode_CreateCircularZone, + MouseButtonMode_Slice, + MouseButtonMode_LightSource, + MouseButtonMode_User1, + MouseButtonMode_User2, + MouseButtonMode_User3, + MouseButtonMode_User4, + END_MouseButtonMode_e, + MouseButtonMode_Invalid = BadEnumValue, + /* deprecated values */ + Mouse_NoMode = MouseButtonMode_NoMode, /* deprecated */ + Mouse_Select = MouseButtonMode_Select, /* deprecated */ + Mouse_Adjust = MouseButtonMode_Adjust, /* deprecated */ + Mouse_Zoom = MouseButtonMode_Zoom, /* deprecated */ + Mouse_Translate = MouseButtonMode_Translate, /* deprecated */ + Mouse_Probe = MouseButtonMode_Probe, /* deprecated */ + Mouse_Text = MouseButtonMode_Text, /* deprecated */ + Mouse_GeomPolyline = MouseButtonMode_GeomPolyline, /* deprecated */ + Mouse_GeomSquare = MouseButtonMode_GeomSquare, /* deprecated */ + Mouse_GeomCircle = MouseButtonMode_GeomCircle, /* deprecated */ + Mouse_GeomRectangle = MouseButtonMode_GeomRectangle, /* deprecated */ + Mouse_GeomEllipse = MouseButtonMode_GeomEllipse, /* deprecated */ + Mouse_GeomSpline = MouseButtonMode_GeomSpline, /* deprecated */ + Mouse_CreateFrame = MouseButtonMode_CreateFrame, /* deprecated */ + Mouse_RotateSpherical = MouseButtonMode_RotateSpherical, /* deprecated */ + Mouse_RotateRollerBall = MouseButtonMode_RotateRollerBall, /* deprecated */ + Mouse_RotateTwist = MouseButtonMode_RotateTwist, /* deprecated */ + Mouse_RotateXAxis = MouseButtonMode_RotateXAxis, /* deprecated */ + Mouse_RotateYAxis = MouseButtonMode_RotateYAxis, /* deprecated */ + Mouse_RotateZAxis = MouseButtonMode_RotateZAxis, /* deprecated */ + Mouse_ContourLabel = MouseButtonMode_ContourLabel, /* deprecated */ + Mouse_ContourAdd = MouseButtonMode_ContourAdd, /* deprecated */ + Mouse_ContourDelete = MouseButtonMode_ContourDelete, /* deprecated */ + Mouse_StreamPoints = MouseButtonMode_StreamPoints, /* deprecated */ + Mouse_StreamEndLine = MouseButtonMode_StreamEndLine, /* deprecated */ + Mouse_ExtractPoints = MouseButtonMode_ExtractPoints, /* deprecated */ + Mouse_ExtractLine = MouseButtonMode_ExtractLine, /* deprecated */ + Mouse_CreateRectangularZone = MouseButtonMode_CreateRectangularZone, /* deprecated */ + Mouse_CreateCircularZone = MouseButtonMode_CreateCircularZone, /* deprecated */ + Mouse_Slice = MouseButtonMode_Slice, /* deprecated */ + Mouse_User1 = MouseButtonMode_User1, /* deprecated */ + Mouse_User2 = MouseButtonMode_User2, /* deprecated */ + Mouse_User3 = MouseButtonMode_User3, /* deprecated */ + Mouse_User4 = MouseButtonMode_User4, /* deprecated */ + Mouse_Invalid = MouseButtonMode_Invalid /* deprecated */ +} MouseButtonMode_e; + + +typedef enum +{ + DetailsButtonState_QuickEdit, + DetailsButtonState_ObjectDetails, + DetailsButtonState_ToolDetails, + END_DetailsButtonState_e, + DetailsButtonState_Invalid = BadEnumValue +} DetailsButtonState_e; + + +typedef enum +{ + Event_ButtonPress, + Event_ButtonRelease, + Event_ButtonDoublePress, + Event_Motion, + Event_Drag, + Event_KeyPress, + END_Event_e, + Event_Invalid = BadEnumValue +} Event_e; + + +typedef enum +{ + ObjectDrawMode_DrawFirst, + ObjectDrawMode_Move, + ObjectDrawMode_Remove, + ObjectDrawMode_Place, + END_ObjectDrawMode_e, + ObjectDrawMode_Invalid = BadEnumValue +} ObjectDrawMode_e; + + +typedef enum +{ + ThreeDViewChangeDrawLevel_Full, + ThreeDViewChangeDrawLevel_Trace, + END_ThreeDViewChangeDrawLevel_e, + ThreeDViewChangeDrawLevel_Invalid = BadEnumValue +} ThreeDViewChangeDrawLevel_e; /* <help> "ThreeDViewChangeDrawLevel is deprecated. Use PlotApproximateMode.\n"*/ + +typedef enum +{ + NonCurrentFrameRedrawLevel_Full, + NonCurrentFrameRedrawLevel_Trace, + END_NonCurrentFrameRedrawLevel_e, + NonCurrentFrameRedrawLevel_Invalid = BadEnumValue +} NonCurrentFrameRedrawLevel_e; /* <help> "NonCurrentFrameRedrawLevel is deprecated. Use PlotApproximateMode.\n"*/ + + +/** + * Enumerates the redraw reasons and is passed as an argument to registered + * draw event callbacks. + * + * - RedrawReason_UserReqRedrawActiveFrame:\n + * The full draw event is in response to the "redraw" action function. + * + * - RedrawReason_UserReqTraceActiveFrame:\n + * The approximate draw event is in response to the "redraw" action function. + * + * - RedrawReason_UserReqRedrawAllFrames:\n + * The full draw event is in response to the "redraw all" action function. + * + * - RedrawReason_UserReqTraceAllFrames:\n + * The approximate draw event is in response to the "redraw all" action function. + * + * - RedrawReason_InteractiveDataViewChange:\n + * The draw event is in response to an interactive data view change such as + * rotate, translate, zoom, etc. + * + * - RedrawReason_InteractivePaperViewChange:\n + * The draw event is in response to an interactive paper translate view or + * paper zoom view change. + * + * - RedrawReason_InteractiveStyleChange:\n + * The draw event is in response to an interactive style changes such as + * dragging a contour level or a slice. + * + * - RedrawReason_Animation:\n + * The draw event is in response to an animation. + * + * - RedrawReason_AutoRedraw:\n + * The draw event is in response to an auto redraw. + * + * - RedrawReason_RedrawForcedViewUpdate:\n + * The draw event is in response to forced view update when auto redraw is + * off such as a view fit or movement of the frame. + * + * - RedrawReason_RedrawForcedStyleUpdate:\n + * The draw event is in response to forced view update when auto redraw is + * off such as deleting a contour level. + * + * - RedrawReason_PreFullRedrawTraceOfAllFrames:\n + * The draw event is an approximate redraw done prior to a full redraw. + * + * @sa TecUtilEventAddPreDrawCallback(), TecUtilEventAddPostDrawCallback() + */ +typedef enum +{ + RedrawReason_UserReqRedrawActiveFrame, + RedrawReason_UserReqTraceActiveFrame, + RedrawReason_UserReqRedrawAllFrames, + RedrawReason_UserReqTraceAllFrames, + RedrawReason_InteractiveDataViewChange, + RedrawReason_InteractivePaperViewChange, + RedrawReason_InteractiveStyleChange, + RedrawReason_Animation, + RedrawReason_AutoRedraw, + RedrawReason_RedrawForcedViewUpdate, + RedrawReason_RedrawForcedStyleUpdate, + RedrawReason_PreFullRedrawTraceOfAllFrames, + END_RedrawReason_e, + RedrawReason_Invalid = BadEnumValue, + RedrawReason_UserReqRedrawCurrentFrame = RedrawReason_UserReqRedrawActiveFrame, + RedrawReason_UserReqTraceCurrentFrame = RedrawReason_UserReqTraceActiveFrame +} RedrawReason_e; + +typedef enum +{ + RotationMode_XYZAxis, + RotationMode_Spherical, + RotationMode_RollerBall, + END_RotationMode_e, + RotationMode_Invalid = BadEnumValue +} RotationMode_e; + +typedef enum +{ + RotateAxis_X, + RotateAxis_Y, + RotateAxis_Z, + RotateAxis_Psi, + RotateAxis_Theta, + RotateAxis_Alpha, + RotateAxis_Twist, + RotateAxis_VertRollerBall, + RotateAxis_HorzRollerBall, + RotateAxis_AboutVector, + /* BEGINREMOVEFROMADDON */ + RotateAxis_DontCare, /* internal use only */ + /* ENDREMOVEFROMADDON */ + END_RotateAxis_e, + RotateAxis_Invalid = BadEnumValue +} RotateAxis_e; + +typedef enum +{ + RotateOriginLocation_DefinedOrigin, + RotateOriginLocation_Viewer, + END_RotateOriginLocation_e, + RotateOriginLocation_Invalid = BadEnumValue +} RotateOriginLocation_e; + +/* + * NOTE: This is only used with the $!Reset3DOrigin command. + */ +typedef enum +{ + OriginResetLocation_DataCenter, + OriginResetLocation_ViewCenter, + END_OriginResetLocation_e, + OriginResetLocation_Invalid = BadEnumValue +} OriginResetLocation_e; + +/* + * NOTE: This is only used with the $!CreateSliceZoneFromPlane command. + */ +typedef enum +{ + SliceSource_SurfaceZones, + SliceSource_VolumeZones, + SliceSource_SurfacesOfVolumeZones, + SliceSource_LinearZones, + END_SliceSource_e, + SliceSource_Invalid = BadEnumValue +} SliceSource_e; + + + + + +typedef enum +{ + Input_SmInteger, + Input_Short, + Input_Integer, + Input_Float, + Input_Double, + Input_Radians, + Input_TimeDateDouble, + Input_ElapsedTimeDouble, + END_Input_e, + Input_Invalid = BadEnumValue +} Input_e; + + + +typedef enum +{ + PtSelection_All, + PtSelection_NearestN, + PtSelection_OctantN, + END_PtSelection_e, + PtSelection_Invalid = BadEnumValue +} PtSelection_e; + + + +typedef enum +{ + Drift_None, + Drift_Linear, + Drift_Quad, + END_Drift_e, + Drift_Invalid = BadEnumValue +} Drift_e; + + + +/* atpoint is simple boundary condition. + atpointb2 is better boundary condition. +*/ +typedef enum +{ + DerivPos_atpoint, + DerivPos_atpointb2, + DerivPos_kphalf, + DerivPos_jphalf, + DerivPos_iphalf, + END_DerivPos_e, + DerivPos_Invalid = BadEnumValue +} DerivPos_e; /*<help>"atpoint is the simple boundary condition\n"*/ +/*<help>"atpointb2 is a better boundary condition"*/ + + +typedef enum +{ + LinearInterpMode_DontChange, + LinearInterpMode_SetToConst, + END_LinearInterpMode_e, + LinearInterpMode_Invalid = BadEnumValue +} LinearInterpMode_e; + +typedef enum +{ + VolumeCellInterpolationMode_PiecewiseLinear, + VolumeCellInterpolationMode_TriLinear, + END_VolumeCellInterpolationMode_e, + VolumeCellInterpolationMode_Invalid = BadEnumValue +} VolumeCellInterpolationMode_e; + +typedef enum +{ + PolyCellInterpolationMode_UseCCValue, + PolyCellInterpolationMode_AverageNodes, + END_PolyCellInterpolationMode_e, + PolyCellInterpolationMode_Invalid = BadEnumValue +} PolyCellInterpolationMode_e; + +typedef enum +{ + ConstraintOp2Mode_UseVar, + ConstraintOp2Mode_UseConstant, + END_ConstraintOp2Mode_e, + ConstraintOp2Mode_Invalid = BadEnumValue +} ConstraintOp2Mode_e; + +/** + * Controls how data is loaded for interactive probe events. + * DataProbeVarLoadMode_IncrementallyLoadAll will load as much data as possible within + * load-on-demand time/space thresholds. DataProbeVarLoadMode_LoadRequiredVarsOnly will + * load only the data necessary to complete the probe request. + * DataProbeVarLoadMode_IncrementallyLoadAll is the default. + */ +typedef enum +{ + DataProbeVarLoadMode_IncrementallyLoadAll, + DataProbeVarLoadMode_LoadRequiredVarsOnly, + END_DataProbeVarLoadMode_e, + DataProbeVarLoadMode_Invalid = BadEnumValue +} DataProbeVarLoadMode_e; + +typedef enum +{ + ValueBlankCellMode_AllCorners, + ValueBlankCellMode_AnyCorner, + ValueBlankCellMode_PrimaryValue, + END_ValueBlankCellMode_e, + ValueBlankCellMode_Invalid = BadEnumValue, + /* deprecated values */ + ValueBlankCellMode_PrimaryCorner = ValueBlankCellMode_PrimaryValue +} ValueBlankCellMode_e; + + +/* + * deprecated: ValueBlankMode_e enumeration will not be supported after + * version 8. This API was retained for add-on developers + * using the TecUtilStyleSetLowLevel API. + */ +typedef enum +{ + ValueBlankMode_AndRule, + ValueBlankMode_OrRule, + ValueBlankMode_CornerRule, + END_ValueBlankMode_e, + ValueBlankMode_Invalid = BadEnumValue +} ValueBlankMode_e; /*<help>"DEPRECATED: ValueBlankMode_e will not be supported after version 8"*/ + + +typedef enum +{ + CellBlankedCond_NotBlanked, + CellBlankedCond_PartiallyBlanked, + CellBlankedCond_EntirelyBlanked, + CellBlankedCond_Uncertain, + END_CellBlankedCond_e, + CellBlankedCond_Invalid = BadEnumValue +} CellBlankedCond_e; + + +typedef enum +{ + RelOp_LessThanOrEqual, + RelOp_GreaterThanOrEqual, + RelOp_LessThan, + RelOp_GreaterThan, + RelOp_EqualTo, + RelOp_NotEqualTo, + END_RelOp_e, + RelOp_Invalid = BadEnumValue +} RelOp_e; + + + +typedef enum +{ + IJKBlankMode_BlankInterior, + IJKBlankMode_BlankExterior, + END_IJKBlankMode_e, + IJKBlankMode_Invalid = BadEnumValue +} IJKBlankMode_e; + + +typedef enum +{ + PlotApproximationMode_Automatic, + PlotApproximationMode_NonCurrentAlwaysApproximated, + PlotApproximationMode_AllFramesAlwaysApproximated, + END_PlotApproximationMode_e, + PlotApproximationMode_Invalid = BadEnumValue +} PlotApproximationMode_e; + +typedef enum +{ + SphereScatterRenderQuality_Low, + SphereScatterRenderQuality_Medium, + SphereScatterRenderQuality_High, + END_SphereScatterRenderQuality_e, + SphereScatterRenderQuality_Invalid = BadEnumValue +} SphereScatterRenderQuality_e; + +/* + * NOTE: FillPat_e is deprecated. It must be retained to maintain + * backward compatibility with the TecUtil layer however. + * This has been replaced by Translucency_e. + */ +typedef enum +{ + Pattern_Solid, + Pattern_LowTranslucent, + Pattern_MedTranslucent, + Pattern_HighTranslucent, + END_FillPat_e, + Pattern_Invalid = BadEnumValue +} FillPat_e; /*<help>"DEPRECATED: Replaced by Translucency_e"*/ + + +typedef enum +{ + Translucency_Solid, + Translucency_Low, + Translucency_Medium, + Translucency_High, + END_Translucency_e, + Translucency_Invalid = BadEnumValue +} Translucency_e; + + + +typedef enum +{ + SunRaster_OldFormat, + SunRaster_Standard, + SunRaster_ByteEncoded, + END_SunRaster_e, + SunRaster_Invalid = BadEnumValue +} SunRaster_e; + + +typedef enum +{ + BoundaryCondition_Fixed, + BoundaryCondition_ZeroGradient, + BoundaryCondition_Zero2nd, + END_BoundaryCondition_e, + BoundaryCondition_Invalid = BadEnumValue +} BoundaryCondition_e; + + + +/* Note: + * In 2D: AxisMode_Independent and AxisMode_XYDependent are used; + * in 3D: AxisMode_Independent, AxisMode_XYZDependent, and AxisMode_XYDependent are used. + */ +typedef enum +{ + AxisMode_Independent, + AxisMode_XYZDependent, + AxisMode_XYDependent, + END_AxisMode_e, + AxisMode_Invalid = BadEnumValue +} AxisMode_e;/*<help>"In 2D AxisMode_Independent and AxisMode_XYDependent are used\n"*/ +/*<help>"In 3D AxisMode_Independent, "*/ +/*<help>"AxisMode_XYZDependent, and AxisMode_XYDependent are used."*/ + +typedef enum +{ + Quick_LineColor, + Quick_FillColor, + Quick_TextColor, + END_QuickColorMode_e, + Quick_Invalid = BadEnumValue +} QuickColorMode_e; + + +typedef enum +{ + FillMode_None, + FillMode_UseSpecificColor, + FillMode_UseLineColor, + FillMode_UseBackgroundColor, + END_FillMode_e, + FillMode_Invalid = BadEnumValue +} FillMode_e; + + +typedef enum +{ + LinePattern_Solid, + LinePattern_Dashed, + LinePattern_DashDot, + LinePattern_Dotted, + LinePattern_LongDash, + LinePattern_DashDotDot, + END_LinePattern_e, + LinePattern_Invalid = BadEnumValue +} LinePattern_e; + + + +typedef enum +{ + Join_Miter, + Join_Round, + Join_Bevel, + END_LineJoin_e, + Join_Invalid = BadEnumValue +} LineJoin_e; + + + +typedef enum +{ + Cap_Flat, + Cap_Round, + Cap_Square, + END_LineCap_e, + Cap_Invalid = BadEnumValue +} LineCap_e; + + + +typedef enum +{ + GeomForm_LineSegs, + GeomForm_Rectangle, + GeomForm_Square, + GeomForm_Circle, + GeomForm_Ellipse, + GeomForm_LineSegs3D, /* deprecated: use GeomForm_LineSegs with CoordSys_Grid3D */ + GeomForm_Image, + END_GeomForm_e, + GeomForm_Invalid = BadEnumValue, + /* new value names */ + GeomType_LineSegs = GeomForm_LineSegs, + GeomType_Rectangle = GeomForm_Rectangle, + GeomType_Square = GeomForm_Square, + GeomType_Circle = GeomForm_Circle, + GeomType_Ellipse = GeomForm_Ellipse, + GeomType_LineSegs3D = GeomForm_LineSegs3D, /* deprecated: use GeomType_LineSegs with CoordSys_Grid3D */ + GeomType_Image = GeomForm_Image, + END_GeomType_e = END_GeomForm_e, + GeomType_Invalid = GeomForm_Invalid +} GeomForm_e; + +typedef GeomForm_e GeomType_e; + +typedef enum +{ + VariableDerivationMethod_Fast, + VariableDerivationMethod_Accurate, + END_VariableDerivationMethod_e, + VariableDerivationMethod_Invalid = BadEnumValue +} VariableDerivationMethod_e; + +/** + */ +typedef enum +{ + AuxDataType_String, + END_AuxDataType_e, + AuxDataType_Invalid = BadEnumValue +} AuxDataType_e; + +/** + */ +typedef enum +{ + AuxDataLocation_Zone, + AuxDataLocation_DataSet, + AuxDataLocation_Frame, + AuxDataLocation_Var, + AuxDataLocation_LineMap, + AuxDataLocation_Page, + END_AuxDataLocation_e, + AuxDataLocation_Invalid = BadEnumValue +} AuxDataLocation_e; + + +/* Note: This replaces Element_e */ +typedef enum +{ + ZoneType_Ordered, + ZoneType_FETriangle, + ZoneType_FEQuad, + ZoneType_FETetra, + ZoneType_FEBrick, + ZoneType_FELineSeg, + ZoneType_FEPolygon, + ZoneType_FEPolyhedron, + END_ZoneType_e, + ZoneType_Invalid = BadEnumValue +} ZoneType_e; + +typedef enum +{ + ZoneOrder_I, + ZoneOrder_J, + ZoneOrder_K, + ZoneOrder_IJ, + ZoneOrder_IK, + ZoneOrder_JK, + ZoneOrder_IJK, + END_ZoneOrder_e, + ZoneOrder_Invalid = BadEnumValue +} ZoneOrder_e; + +/* deprecated: replaced by ZoneType_e DataPacking_e */ +typedef enum +{ + DataFormat_IJKBlock, + DataFormat_IJKPoint, + DataFormat_FEBlock, + DataFormat_FEPoint, + END_DataFormat_e, + DataFormat_Invalid = BadEnumValue +} DataFormat_e; + +typedef enum +{ + DataPacking_Block, + DataPacking_Point, + END_DataPacking_e, + DataPacking_Invalid = BadEnumValue +} DataPacking_e; + + + +typedef enum +{ + PD_HPGL, + PD_HPGL2, + PD_PS, + PD_LASERG, /* deprecated */ + PD_EPS, + PD_WINDOWS, /* Windows Print Driver */ + PD_WMF, /* Windows MetaFile (used from Export only) */ + PD_X3D, + END_PrinterDriver_e, + PD_Invalid = BadEnumValue +} PrinterDriver_e; + + + +typedef enum +{ + Image_None, + Image_TIFF, + Image_EPSI2, + Image_FRAME, + END_EPSPreviewImage_e, + Image_Invalid = BadEnumValue +} EPSPreviewImage_e; + +typedef enum +{ + TIFFByteOrder_Intel, + TIFFByteOrder_Motorola, + END_TIFFByteOrder_e, + TIFFByteOrder_Invalid = BadEnumValue +} TIFFByteOrder_e; + +typedef enum +{ + JPEGEncoding_Standard, + JPEGEncoding_Progressive, + END_JPEGEncoding_e, + JPEGEncoding_Invalid = BadEnumValue +} JPEGEncoding_e; + + +typedef enum +{ + FlashImageType_Lossless, + FlashImageType_JPEG, + FlashImageType_Color256, + END_FlashImageType_e, + FlashImageType_Invalid = BadEnumValue, + /* deprecated values */ + FlashImageType_256Color = FlashImageType_Color256 +} FlashImageType_e; + +typedef enum +{ + FlashCompressionType_BestSpeed, + FlashCompressionType_SmallestSize, + END_FlashCompressionType_e, + FlashCompressionType_Invalid = BadEnumValue +} FlashCompressionType_e; + + +typedef enum +{ + ExportFormat_RasterMetafile, + ExportFormat_TIFF, + ExportFormat_SGI, + ExportFormat_SunRaster, + ExportFormat_XWindows, + ExportFormat_PSImage, /* deprecated */ + ExportFormat_HPGL, + ExportFormat_HPGL2, + ExportFormat_PS, + ExportFormat_EPS, + ExportFormat_LaserGraphics, /* deprecated */ + ExportFormat_WindowsMetafile, + ExportFormat_BMP, + ExportFormat_PNG, + ExportFormat_AVI, + ExportFormat_Custom, /* May be used in a future version */ + ExportFormat_JPEG, + ExportFormat_Flash, + ExportFormat_X3D, + ExportFormat_TecplotViewer, + END_ExportFormat_e, + ExportFormat_Invalid = BadEnumValue +} ExportFormat_e; + +typedef enum +{ + AVICompression_ColorPreserving, + AVICompression_LinePreserving, + AVICompression_LosslessUncompressed, + END_AVICompression_e, + AVICompression_Invalid = BadEnumValue +} AVICompression_e; + +typedef enum +{ + AnimationDest_Screen, + AnimationDest_AVI, + AnimationDest_RM, + AnimationDest_Flash, + END_AnimationDest_e, + AnimationDest_Invalid = BadEnumValue +} AnimationDest_e; + + + +typedef enum +{ + AnimationOperation_Forward, + AnimationOperation_Backward, + AnimationOperation_Loop, + AnimationOperation_Bounce, + END_AnimationOperation_e, + AnimationOperation_Invalid = BadEnumValue +} AnimationOperation_e; + +typedef enum +{ + AnimationStep_First, + AnimationStep_Second, + AnimationStep_Current, + AnimationStep_SecondToLast, + AnimationStep_Last, + AnimationStep_Previous, + AnimationStep_Next, + END_AnimationStep_e, + AnimationStep_Invalid = BadEnumValue +} AnimationStep_e; + +typedef enum +{ + ZoneAnimationMode_StepByNumber, + ZoneAnimationMode_GroupStepByNumber, + ZoneAnimationMode_StepByTime, + END_ZoneAnimationMode_e, + ZoneAnimationMode_Invalid = BadEnumValue +} ZoneAnimationMode_e; + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref ExportRegion_e instead. + */ +typedef enum +{ + BitDumpRegion_CurrentFrame, + BitDumpRegion_AllFrames, + BitDumpRegion_WorkArea, + END_BitDumpRegion_e, + BitDumpRegion_Invalid = BadEnumValue +} BitDumpRegion_e; +#endif + +typedef enum +{ + ExportRegion_CurrentFrame, + ExportRegion_AllFrames, + ExportRegion_WorkArea, + END_ExportRegion_e, + ExportRegion_Invalid = BadEnumValue +} ExportRegion_e; + +typedef enum +{ + Paper_Letter, + Paper_Double, + Paper_A4, + Paper_A3, + Paper_Custom1, + Paper_Custom2, + END_PaperSize_e, + Paper_Invalid = BadEnumValue +} PaperSize_e; + + + +typedef enum +{ + PaperUnitSpacing_HalfCentimeter, + PaperUnitSpacing_OneCentimeter, + PaperUnitSpacing_TwoCentimeters, + PaperUnitSpacing_QuarterInch, + PaperUnitSpacing_HalfInch, + PaperUnitSpacing_OneInch, + PaperUnitSpacing_TenPoints, + PaperUnitSpacing_TwentyFourPoints, + PaperUnitSpacing_ThirtySixPoints, + PaperUnitSpacing_FiftyPoints, + PaperUnitSpacing_SeventyTwoPoints, + PaperUnitSpacing_OneTenthInch, + PaperUnitSpacing_OneTenthCentimeter, + END_PaperUnitSpacing_e, + PaperUnitSpacing_Invalid = BadEnumValue +} PaperUnitSpacing_e; + + +typedef enum +{ + Palette_Monochrome, + Palette_PenPlotter, + Palette_Color, + END_Palette_e, + Palette_Invalid = BadEnumValue +} Palette_e; + + +typedef enum +{ + PrintRenderType_Vector, + PrintRenderType_Image, + END_PrintRenderType_e, + PrintRenderType_Invalid = BadEnumValue +} PrintRenderType_e; + + +typedef enum +{ + Units_Grid, + Units_Frame, + Units_Point, + Units_Screen, + Units_AxisPercentage, + END_Units_e, + Units_Invalid = BadEnumValue +} Units_e; + + +typedef enum +{ + CoordScale_Linear, + CoordScale_Log, + END_CoordScale_e, + CoordScale_Invalid = BadEnumValue, + /* old names for the same values */ + Scale_Linear = CoordScale_Linear, + Scale_Log = CoordScale_Log, + Scale_Invalid = CoordScale_Invalid +} CoordScale_e; + +/* BEGINREMOVEFROMADDON */ +#define GetLog10(R) ( ((R) < SMALLDOUBLE) ? SMALLESTEXPONENT : ( ((R) > LARGEDOUBLE) ? LARGESTEXPONENT : log10((R)) ) ) +/* ENDREMOVEFROMADDON */ + +typedef enum +{ + CoordSys_Grid, + CoordSys_Frame, + CoordSys_FrameOffset, + CoordSys_Paper, + CoordSys_Screen, + CoordSys_Hardcopy, + CoordSys_Grid3D, + END_CoordSys_e, + CoordSys_Invalid = BadEnumValue +} CoordSys_e; + +/* + * NOTE: CoordSys_FrameOffset always is stored in inches internally. + * in stylesheet this may be written in other units if + * appropriate suffix is added. + * + */ + + + +typedef enum +{ + Scope_Global, + Scope_Local, + END_Scope_e, + Scope_Invalid = BadEnumValue +} Scope_e; + + +typedef enum +{ + TextAnchor_Left, + TextAnchor_Center, + TextAnchor_Right, + TextAnchor_MidLeft, + TextAnchor_MidCenter, + TextAnchor_MidRight, + TextAnchor_HeadLeft, + TextAnchor_HeadCenter, + TextAnchor_HeadRight, + TextAnchor_OnSide, + END_TextAnchor_e, + TextAnchor_Invalid = BadEnumValue +} TextAnchor_e; + + + +typedef enum +{ + TextBox_None, + TextBox_Filled, + TextBox_Hollow, + END_TextBox_e, + TextBox_Invalid = BadEnumValue +} TextBox_e; + + + +typedef enum +{ + GeomShape_Square, + GeomShape_Del, + GeomShape_Grad, + GeomShape_RTri, + GeomShape_LTri, + GeomShape_Diamond, + GeomShape_Circle, + GeomShape_Cube, + GeomShape_Sphere, + GeomShape_Octahedron, + GeomShape_Point, + END_GeomShape_e, + GeomShape_Invalid = BadEnumValue +} GeomShape_e; + + +typedef enum +{ + BasicSize_Tiny, + BasicSize_Small, + BasicSize_Medium, + BasicSize_Large, + BasicSize_Huge, + END_BasicSize_e, + BasicSize_Invalid = BadEnumValue +} BasicSize_e; + + + +/* + * NOTE: LineForm_e is deprecated. It must be retained to maintain + * backward compatibility with the TecUtil layer however. + * This has been replaced by CurveType_e. + */ +typedef enum +{ + LineForm_LineSeg, + LineForm_CurvFit, + LineForm_EToRFit, + LineForm_PowerFit, + LineForm_Spline, + LineForm_ParaSpline, + END_LineForm_e, + LineForm_Invalid = BadEnumValue +} LineForm_e; + + +typedef enum +{ + CurveType_LineSeg, + CurveType_PolynomialFit, + CurveType_EToRFit, + CurveType_PowerFit, + CurveType_Spline, + CurveType_ParaSpline, + CurveType_Extended, + END_CurveType_e, + CurveType_Invalid = BadEnumValue, + CurveType_CurvFit = CurveType_PolynomialFit +} CurveType_e; + +typedef enum +{ + Script_None, + Script_Super, + Script_Sub, + END_Script_e, + Script_Invalid = BadEnumValue +} Script_e; + + +typedef enum +{ + Font_Helvetica, + Font_HelveticaBold, + Font_Greek, + Font_Math, + Font_UserDefined, + Font_Times, + Font_TimesItalic, + Font_TimesBold, + Font_TimesItalicBold, + Font_Courier, + Font_CourierBold, + END_Font_e, + Font_Invalid = BadEnumValue +} Font_e; + +typedef enum +{ + TwoDDrawOrder_ByZone, + TwoDDrawOrder_ByLayer, + END_TwoDDrawOrder_e, + TwoDDrawOrder_Invalid = BadEnumValue +} TwoDDrawOrder_e; + +typedef enum +{ + DrawOrder_AfterData, + DrawOrder_BeforeData, + END_DrawOrder_e, + DrawOrder_Invalid = BadEnumValue +} DrawOrder_e; + +/* + * + * NOTE: Streamtrace_TwoDLine is new. All 2D + * streamtraces are assigned this value. + */ +typedef enum +{ + Streamtrace_SurfaceLine, + Streamtrace_SurfaceRibbon, + Streamtrace_VolumeLine, + Streamtrace_VolumeRibbon, + Streamtrace_VolumeRod, + Streamtrace_TwoDLine, + END_Streamtrace_e, + Streamtrace_Invalid = BadEnumValue +} Streamtrace_e; + + + +typedef enum +{ + StreamDir_Forward, + StreamDir_Reverse, + StreamDir_Both, + END_StreamDir_e, + StreamDir_Invalid = BadEnumValue +} StreamDir_e; + +typedef enum +{ + IsoSurfaceSelection_AllContourLevels, + IsoSurfaceSelection_OneSpecificValue, + IsoSurfaceSelection_TwoSpecificValues, + IsoSurfaceSelection_ThreeSpecificValues, + END_IsoSurfaceSelection_e, + IsoSurfaceSelection_Invalid = BadEnumValue +} IsoSurfaceSelection_e; + + +typedef enum +{ + ValueLocation_CellCentered, + ValueLocation_Nodal, + END_ValueLocation_e, + ValueLocation_Invalid = BadEnumValue +} ValueLocation_e; + +typedef enum +{ + FieldDataType_Reserved, /* never use */ + FieldDataType_Float, + FieldDataType_Double, + FieldDataType_Int32, + FieldDataType_Int16, + FieldDataType_Byte, + FieldDataType_Bit, + END_FieldDataType_e, + FieldDataType_IJKFunction, /* Not used yet */ + FieldDataType_Int64, /* Not used yet */ +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY + FieldDataType_LongInt = FieldDataType_Int32, + FieldDataType_ShortInt = FieldDataType_Int16, +#endif + FieldDataType_Invalid = BadEnumValue +} FieldDataType_e; + +#define VALID_FIELD_DATA_TYPE(FieldDataType) (VALID_ENUM((FieldDataType),FieldDataType_e) && \ + (FieldDataType)!=FieldDataType_Reserved) + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref MeshType_e instead. + */ +typedef enum +{ + Mesh_Wireframe, /* deprecated: use MeshType_Wireframe */ + Mesh_Overlay, /* deprecated: use MeshType_Overlay */ + Mesh_HiddenLine, /* deprecated: use MeshType_HiddenLine */ + END_MeshPlotType_e, + Mesh_Invalid = BadEnumValue +} MeshPlotType_e; +#endif + +typedef enum +{ + MeshType_Wireframe, /* Mesh_Wireframe */ + MeshType_Overlay, /* Mesh_Overlay */ + MeshType_HiddenLine, /* Mesh_HiddenLine */ + END_MeshType_e, + MeshType_Invalid = BadEnumValue +} MeshType_e; + + + + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref ContourType_e instead. + */ +typedef enum +{ + Contour_Lines, /* deprecated: use ContourType_Lines */ + Contour_Flood, /* deprecated: use ContourType_Flood */ + Contour_Overlay, /* deprecated: use ContourType_Overlay */ + Contour_AverageCell, /* deprecated: use ContourType_AverageCell */ + Contour_CornerCell, /* deprecated: use ContourType_PrimaryValue */ + END_ContourPlotType_e, + Contour_Invalid = BadEnumValue +} ContourPlotType_e; +#endif + + +typedef enum +{ + ContourType_Lines, /* Contour_Lines */ + ContourType_Flood, /* Contour_Flood */ + ContourType_Overlay, /* Contour_Overlay */ + ContourType_AverageCell, /* Contour_AverageCell */ + ContourType_PrimaryValue, /* Contour_CornerCell */ + END_ContourType_e, + ContourType_Invalid = BadEnumValue +} ContourType_e; + +typedef enum +{ + ContourColoring_RGB, + ContourColoring_Group1, + ContourColoring_Group2, + ContourColoring_Group3, + ContourColoring_Group4, + ContourColoring_Group5, + ContourColoring_Group6, + ContourColoring_Group7, + ContourColoring_Group8, + END_ContourColoring_e, + ContourColoring_Invalid = BadEnumValue +} ContourColoring_e; + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref VectorType_e instead. + */ +typedef enum +{ + Vector_TailAtPoint, /* deprecated: use VectorType_TailAtPoint */ + Vector_HeadAtPoint, /* deprecated: use VectorType_HeadAtPoint */ + Vector_MidAtPoint, /* deprecated: use VectorType_MidAtPoint */ + Vector_HeadOnly, /* deprecated: use VectorType_HeadOnly */ + END_VectorPlotType_e, + Vector_Invalid = BadEnumValue +} VectorPlotType_e; +#endif + + +typedef enum +{ + VectorType_TailAtPoint, /* Vector_TailAtPoint */ + VectorType_HeadAtPoint, /* Vector_HeadAtPoint */ + VectorType_MidAtPoint, /* Vector_MidAtPoint */ + VectorType_HeadOnly, /* Vector_HeadOnly */ + END_VectorType_e, + VectorType_Invalid = BadEnumValue +} VectorType_e; + + +/* + * NOTE: ShadePlotType_e is deprecated. It must be retained to maintain + * backward compatibility with the TecUtil layer however. + * This has been replaced by LightingEffect_e. + */ +typedef enum +{ + Shade_SolidColor, + Shade_Paneled, + Shade_Gouraud, + Shade_ColoredPaneled, + Shade_ColoredGouraud, + END_ShadePlotType_e, + Shade_Invalid = BadEnumValue +} ShadePlotType_e; + +/* + * NOTE: LightingEffect_None is deprecated. It must remain + * in the list to allow macro processing of older + * (i.e. early v9) macros. + */ +typedef enum +{ + LightingEffect_Paneled, + LightingEffect_Gouraud, + LightingEffect_None, + END_LightingEffect_e, + LightingEffect_Invalid = BadEnumValue +} LightingEffect_e; + +typedef enum +{ + IJKLines_I, + IJKLines_J, + IJKLines_K, + END_IJKLines_e, + IJKLines_Invalid = BadEnumValue, + /* deprecated values */ + Lines_I = IJKLines_I, /* deprecated */ + Lines_J = IJKLines_J, /* deprecated */ + Lines_K = IJKLines_K, /* deprecated */ + Lines_Invalid = IJKLines_Invalid /* deprecated */ +} IJKLines_e; + +typedef enum +{ + IJKCellType_Planes, + IJKCellType_FacePlanes, + IJKCellType_Volume, + END_IJKCellType_e, + IJKCellType_Invalid = BadEnumValue +} IJKCellType_e; + + +/* + * Ver 6 used PlaneSet. Ver 7 uses CellType and Planes variables. + * + * "PlaneSet" in version 6 vs. IJKPlanes in v7: + * + * 'A' = AllPlanes CellType = IJKCellType_Volume + * 'd','e','f','C' = ComboPlanes CellType = IJKCellType_Planes, IJKPlanes = depends on defC + * 'F' = Faces Planes Only CellType = IJKCellType_FacePlanes + * 'I' = I-Planes CellType = IJKCellType_Planes, IJKPlanes = IJKPlanes_I + * 'J' = J-Planes CellType = IJKCellType_Planes, IJKPlanes = IJKPlanes_J + * 'K' = K-Planes CellType = IJKCellType_Planes, IJKPlanes = IJKPlanes_K + * + * + * NOTE: IJKPlanes_e is still used internally in tecplot (and in the TecUtil layer). + * it has been relagated to communicating which planes of an IJK zone are in + * use. + * + */ + +typedef enum +{ + IJKPlanes_I, + IJKPlanes_J, + IJKPlanes_K, + IJKPlanes_Face, /* used on the panel heap */ + IJKPlanes_IJ, /* deprecated */ + IJKPlanes_JK, /* deprecated */ + IJKPlanes_IK, /* deprecated */ + IJKPlanes_IJK, /* deprecated */ + IJKPlanes_Volume, + IJKPlanes_Unused, + END_IJKPlanes_e, + IJKPlanes_Invalid = BadEnumValue, + /* deprecated values */ + Planes_I = IJKPlanes_I, /* deprecated */ + Planes_J = IJKPlanes_J, /* deprecated */ + Planes_K = IJKPlanes_K, /* deprecated */ + Planes_IJ = IJKPlanes_IJ, /* deprecated */ + Planes_JK = IJKPlanes_JK, /* deprecated */ + Planes_IK = IJKPlanes_IK, /* deprecated */ + Planes_IJK = IJKPlanes_IJK, /* deprecated */ + Planes_Face = IJKPlanes_Face, /* deprecated */ + Planes_Volume = IJKPlanes_Volume, /* deprecated */ + Planes_Unused = IJKPlanes_Unused, /* deprecated */ + Planes_Invalid = IJKPlanes_Invalid /* deprecated */ +} IJKPlanes_e; + + + +typedef enum +{ + SurfacesToPlot_BoundaryFaces, + SurfacesToPlot_ExposedCellFaces, + SurfacesToPlot_IPlanes, + SurfacesToPlot_JPlanes, + SurfacesToPlot_KPlanes, + SurfacesToPlot_IJPlanes, + SurfacesToPlot_JKPlanes, + SurfacesToPlot_IKPlanes, + SurfacesToPlot_IJKPlanes, + SurfacesToPlot_All, + SurfacesToPlot_None, + END_SurfacesToPlot_e, + SurfacesToPlot_Invalid = BadEnumValue +} SurfacesToPlot_e; + +typedef enum +{ + PointsToPlot_SurfaceNodes, /* was _SurfacesOnly */ + PointsToPlot_AllNodes, /* was _All */ + PointsToPlot_SurfaceCellCenters, + PointsToPlot_AllCellCenters, + PointsToPlot_AllConnected, + END_PointsToPlot_e, +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY + PointsToPlot_SurfacesOnly = PointsToPlot_SurfaceNodes, /* deprecated */ + PointsToPlot_All = PointsToPlot_AllNodes, /* deprecated */ +#endif + PointsToPlot_Invalid = BadEnumValue +} PointsToPlot_e; + + +typedef enum +{ + SliceSurface_XPlanes, + SliceSurface_YPlanes, + SliceSurface_ZPlanes, + SliceSurface_IPlanes, + SliceSurface_JPlanes, + SliceSurface_KPlanes, + END_SliceSurface_e, + SliceSurface_Invalid = BadEnumValue +} SliceSurface_e; + + +typedef enum +{ + ClipPlane_None, + ClipPlane_BelowPrimarySlice, + ClipPlane_AbovePrimarySlice, + END_ClipPlane_e, + ClipPlane_Invalid = BadEnumValue +} ClipPlane_e; + +typedef enum +{ + Skip_ByIndex, + Skip_ByFrameUnits, + END_SkipMode_e, + Skip_Invalid = BadEnumValue +} SkipMode_e; + + +typedef enum +{ + EdgeType_Borders, + EdgeType_Creases, + EdgeType_BordersAndCreases, + END_EdgeType_e, + EdgeType_Invalid = BadEnumValue +} EdgeType_e; + +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref BorderLocation_e instead. + */ +typedef enum +{ + Boundary_None, /* deprecated: use BoundaryType_None */ + Boundary_Min, /* deprecated: use BoundaryType_Min */ + Boundary_Max, /* deprecated: use BoundaryType_Max */ + Boundary_Both, /* deprecated: use BoundaryType_Both */ + END_BoundPlotType_e, + Boundary_Invalid = BadEnumValue +} BoundPlotType_e; +#endif + +typedef enum +{ + BoundaryType_None, /* Boundary_None */ + BoundaryType_Min, /* Boundary_Min */ + BoundaryType_Max, /* Boundary_Max */ + BoundaryType_Both, /* Boundary_Both */ + END_BoundaryType_e, + BoundaryType_Invalid = BadEnumValue +} BoundaryType_e; /* deprecated */ + +typedef enum +{ + BorderLocation_None, /* Boundary_None */ + BorderLocation_Min, /* Boundary_Min */ + BorderLocation_Max, /* Boundary_Max */ + BorderLocation_Both, /* Boundary_Both */ + END_BorderLocation_e, + BorderLocation_Invalid = BadEnumValue +} BorderLocation_e; + +typedef enum +{ + ContourColorMap_SmRainbow, + ContourColorMap_LgRainbow, + ContourColorMap_Modern, + ContourColorMap_GrayScale, + ContourColorMap_Wild, + ContourColorMap_UserDef, + ContourColorMap_TwoColor, + ContourColorMap_RawUserDef, + END_ContourColorMap_e, + ContourColorMap_Invalid = BadEnumValue, + /* deprecated values */ + ColorMap_SmRainbow = ContourColorMap_SmRainbow, /* deprecated */ + ColorMap_LgRainbow = ContourColorMap_LgRainbow, /* deprecated */ + ColorMap_Modern = ContourColorMap_Modern, /* deprecated */ + ColorMap_GrayScale = ContourColorMap_GrayScale, /* deprecated */ + ColorMap_Wild = ContourColorMap_Wild, /* deprecated */ + ColorMap_UserDef = ContourColorMap_UserDef, /* deprecated */ + ColorMap_TwoColor = ContourColorMap_TwoColor, /* deprecated */ + ColorMap_RawUserDef = ContourColorMap_RawUserDef, /* deprecated */ + ColorMap_Invalid = ContourColorMap_Invalid /* deprecated */ +} ContourColorMap_e; + + + +typedef enum +{ + ErrorBar_Up, + ErrorBar_Down, + ErrorBar_Left, + ErrorBar_Right, + ErrorBar_Horz, + ErrorBar_Vert, + ErrorBar_Cross, + END_ErrorBar_e, + ErrorBar_Invalid = BadEnumValue +} ErrorBar_e; + + + +typedef enum +{ + ContourLineMode_UseZoneLineType, + ContourLineMode_SkipToSolid, + ContourLineMode_DashNegative, + END_ContourLineMode_e, + ContourLineMode_Invalid = BadEnumValue +} ContourLineMode_e; + + +/* BEGINREMOVEFROMADDON */ +typedef enum +{ + Panel_Bad, + Panel_Cell, /* FieldZone */ + Panel_Vector, /* FieldZone */ + Panel_Scatter, /* FieldZone */ + Panel_IJKBorderLine, /* FieldZone IJK border lines */ + Panel_CellEdge, /* FieldZone border lines and creases */ + Panel_FEBoundaryCell, /* FieldZone */ + Panel_NodeLabel, /* FieldZone */ + Panel_CellLabel, /* FieldZone */ + Panel_StreamtraceCell, /* Streamtrace COB */ + Panel_StreamtraceMarker, /* StreamtraceMarker COB (Scatter Symbol) */ + Panel_StreamtraceArrowhead, /* StreamtraceArrowhead COB (Vector) */ + Panel_IsoSurfaceCell, /* IsoSurface COB */ + Panel_IsoSurfaceCellEdge, /* IsoSurface COB border lines and creases (border lines and creases not currently used) */ + Panel_SliceCell, /* Slice COB */ + Panel_SliceVector, /* Slice COB */ + Panel_SliceIJKBorderLine, /* Slice COB IJK border lines */ + Panel_SliceCellEdge, /* Slice COB border lines and creases (creases not currently used) */ + Panel_Geom, /* Misc */ + Panel_Text, /* Misc */ + END_Panel_e, + Panel_Invalid = BadEnumValue +} Panel_e; +/* ENDREMOVEFROMADDON */ + + +typedef enum +{ + MessageBoxType_Error, + MessageBoxType_Warning, + MessageBoxType_Information, + MessageBoxType_Question, /* Ok, Cancel buttons */ + MessageBoxType_YesNo, + MessageBoxType_YesNoCancel, + MessageBoxType_WarningOkCancel, + END_MessageBoxType_e, + MessageBoxType_Invalid = BadEnumValue, + /* deprecated values */ + MessageBox_Error = MessageBoxType_Error, /* deprecated */ + MessageBox_Warning = MessageBoxType_Warning, /* deprecated */ + MessageBox_Information = MessageBoxType_Information, /* deprecated */ + MessageBox_Question = MessageBoxType_Question, /* deprecated */ + MessageBox_YesNo = MessageBoxType_YesNo, /* deprecated */ + MessageBox_YesNoCancel = MessageBoxType_YesNoCancel, /* deprecated */ + MessageBox_WarningOkCancel = MessageBoxType_WarningOkCancel, /* deprecated */ + MessageBox_Invalid = MessageBoxType_Invalid /* deprecated */ +} MessageBoxType_e; + + +typedef enum +{ + MessageBoxReply_Yes, + MessageBoxReply_No, + MessageBoxReply_Cancel, + MessageBoxReply_Ok, + END_MessageBoxReply_e, + MessageBoxReply_Invalid = BadEnumValue +} MessageBoxReply_e; + +typedef enum +{ + NumberFormat_Integer, + NumberFormat_FixedFloat, + NumberFormat_Exponential, + NumberFormat_BestFloat, + NumberFormat_SuperScript, + NumberFormat_CustomLabel, + NumberFormat_LogSuperScript, + NumberFormat_RangeBestFloat, + NumberFormat_DynamicLabel, + NumberFormat_TimeDate, + END_NumberFormat_e, + NumberFormat_Invalid = BadEnumValue +} NumberFormat_e; + +/* For backward compatibility with v9- */ +typedef NumberFormat_e ValueFormat_e; + + +typedef enum +{ + BackingStoreMode_QuickAndDirty, + BackingStoreMode_RealTimeUpdate, + BackingStoreMode_PeriodicUpdate, + END_BackingStoreMode_e, + BackingStoreMode_Invalid = BadEnumValue +} BackingStoreMode_e; + + +typedef enum +{ + TickDirection_In, + TickDirection_Out, + TickDirection_Centered, + END_TickDirection_e, + TickDirection_Invalid = BadEnumValue +} TickDirection_e; + +/* This enumerated type is no longer used as of Tecplot V10. */ +typedef enum +{ + AxisTitlePosition_Left, + AxisTitlePosition_Center, + AxisTitlePosition_Right, + END_AxisTitlePosition_e, + AxisTitlePosition_Invalid = BadEnumValue +} AxisTitlePosition_e; + +typedef enum +{ + AxisTitleMode_NoTitle, + AxisTitleMode_UseVarName, + AxisTitleMode_UseText, + END_AxisTitleMode_e, + AxisTitleMode_Invalid = BadEnumValue +} AxisTitleMode_e; + +typedef enum +{ + AxisAlignment_WithViewport, + AxisAlignment_WithOpposingAxisValue, + AxisAlignment_WithGridMin, + AxisAlignment_WithGridMax, + AxisAlignment_WithSpecificAngle, + AxisAlignment_WithGridAreaTop, + AxisAlignment_WithGridAreaBottom, + AxisAlignment_WithGridAreaLeft, + AxisAlignment_WithGridAreaRight, + END_AxisAlignment_e, + AxisAlignment_Invalid = BadEnumValue +} AxisAlignment_e; + +typedef enum +{ + FunctionDependency_XIndependent, + FunctionDependency_YIndependent, + END_FunctionDependency_e, + FunctionDependency_Invalid = BadEnumValue, + FunctionDependency_ThetaIndependent = FunctionDependency_XIndependent, + FunctionDependency_RIndependent = FunctionDependency_YIndependent +} FunctionDependency_e; + +typedef enum +{ + LegendShow_Yes, + LegendShow_No, + LegendShow_Auto, + END_LegendShow_e, + LegendShow_Invalid = BadEnumValue +} LegendShow_e; + +typedef enum +{ + LineMapSort_None, + LineMapSort_IndependentVar, + LineMapSort_DependentVar, + LineMapSort_SpecificVar, + END_LineMapSort_e, + LineMapSort_Invalid = BadEnumValue +} LineMapSort_e; + +typedef enum +{ + ContLegendLabelLocation_ContourLevels, + ContLegendLabelLocation_Increment, + ContLegendLabelLocation_ColorMapDivisions, + END_ContLegendLabelLocation_e, + ContLegendLabelLocation_Invalid = BadEnumValue +} ContLegendLabelLocation_e; + +typedef enum +{ + ThetaMode_Degrees, + ThetaMode_Radians, + ThetaMode_Arbitrary, + END_ThetaMode_e, + ThetaMode_Invalid = BadEnumValue +} ThetaMode_e; + +typedef enum +{ + Transform_PolarToRect, + Transform_SphericalToRect, + Transform_RectToPolar, + Transform_RectToSpherical, + END_Transform_e, + Transform_Invalid = BadEnumValue +} Transform_e; + +typedef enum +{ + LaunchDialogMode_ModalSync, + LaunchDialogMode_Modeless, + LaunchDialogMode_ModalAsync, + END_LaunchDialogMode_e, + LaunchDialogMode_Invalid = BadEnumValue +} LaunchDialogMode_e; + + +typedef enum +{ + SelectFileOption_ReadSingleFile, + SelectFileOption_ReadMultiFile, + SelectFileOption_AllowMultiFileRead, + SelectFileOption_WriteFile, + SelectFileOption_SelectDirectory, + END_SelectFileOption_e, + SelectFileOption_Invalid = BadEnumValue +} SelectFileOption_e; + +typedef enum +{ + BinaryFileVersion_Tecplot2006, + BinaryFileVersion_Tecplot2008, + BinaryFileVersion_Tecplot2009, + BinaryFileVersion_Current, + END_BinaryFileVersion_e, + BinaryFileVersion_Invalid = BadEnumValue +} BinaryFileVersion_e; + +/* CURRENTLY NOT USED .... */ +typedef enum +{ + ViewActionDrawMode_NoDraw, + ViewActionDrawMode_DrawTrace, + ViewActionDrawMode_DrawFull, + END_ViewActionDrawMode_e, + ViewActionDrawMode_Invalid = BadEnumValue +} ViewActionDrawMode_e; + +typedef enum +{ + PageAction_Create, + PageAction_Delete, + PageAction_Clear, + PageAction_SetCurrentToNext, + PageAction_SetCurrentToPrev, + PageAction_SetCurrentByName, + PageAction_SetCurrentByUniqueID, + END_PageAction_e, + PageAction_Invalid = BadEnumValue +} PageAction_e; + +typedef enum +{ + FrameAction_PushTop, + FrameAction_PopByNumber, + FrameAction_PopAtPosition, + FrameAction_DeleteActive, + FrameAction_FitAllToPaper, + FrameAction_PushByName, + FrameAction_PopByName, + FrameAction_PushByNumber, + FrameAction_ActivateTop, + FrameAction_ActivateNext, + FrameAction_ActivatePrevious, + FrameAction_ActivateAtPosition, + FrameAction_ActivateByName, + FrameAction_ActivateByNumber, + FrameAction_MoveToTopActive, + FrameAction_MoveToTopByName, + FrameAction_MoveToTopByNumber, + FrameAction_MoveToBottomActive, + FrameAction_MoveToBottomByName, + FrameAction_MoveToBottomByNumber, + END_FrameAction_e, + FrameAction_Invalid = BadEnumValue, + FrameAction_Pop = FrameAction_PopByNumber, + FrameAction_Push = FrameAction_PushByNumber, + FrameAction_DeleteTop = FrameAction_DeleteActive +} FrameAction_e; + +typedef enum +{ + DoubleBufferAction_On, + DoubleBufferAction_Off, + DoubleBufferAction_Swap, + END_DoubleBufferAction_e, + DoubleBufferAction_Invalid = BadEnumValue +} DoubleBufferAction_e; + +/* + * PickAction_CheckToAdd had the side effects of popping a frame that was selected + * only if not collecting. Pick_AddAtPosition avoids this. + */ +typedef enum +{ + PickAction_CheckToAdd, /* deprecated: use Pick_AddAtPosition */ + PickAction_AddAll, + PickAction_AddAllInRegion, + PickAction_Edit, + PickAction_Cut, + PickAction_Copy, + PickAction_Clear, + PickAction_Paste, + PickAction_PasteAtPosition, + PickAction_Shift, + PickAction_Magnify, + PickAction_Push, + PickAction_Pop, + PickAction_SetMouseMode, + PickAction_DeselectAll, + PickAction_AddZones, + PickAction_AddXYMaps, /* deprecated: use PickAction_AddLineMaps */ + PickAction_AddLineMaps, + PickAction_AddAtPosition, + END_PickAction_e, + PickAction_Invalid = BadEnumValue +} PickAction_e; + + +typedef enum +{ + ContourLevelAction_Add, + ContourLevelAction_New, + ContourLevelAction_DeleteRange, + ContourLevelAction_Reset, + ContourLevelAction_ResetToNice, + ContourLevelAction_DeleteNearest, + END_ContourLevelAction_e, + ContourLevelAction_Invalid = BadEnumValue +} ContourLevelAction_e; + +typedef enum +{ + ContourLabelAction_Add, + ContourLabelAction_DeleteAll, + END_ContourLabelAction_e, + ContourLabelAction_Invalid = BadEnumValue +} ContourLabelAction_e; + +typedef enum +{ + StreamtraceAction_Add, + StreamtraceAction_DeleteAll, + StreamtraceAction_DeleteRange, + StreamtraceAction_SetTerminationLine, + StreamtraceAction_ResetDeltaTime, + END_StreamtraceAction_e, + StreamtraceAction_Invalid = BadEnumValue +} StreamtraceAction_e; + +typedef enum +{ + ColorMapControlAction_RedistributeControlPoints, + ColorMapControlAction_CopyCannedColorMap, + ColorMapControlAction_ResetToFactoryDefaults, + END_ColorMapControlAction_e, + ColorMapControlAction_Invalid = BadEnumValue +} ColorMapControlAction_e; + +typedef enum +{ + ColorMapDistribution_Continuous, + ColorMapDistribution_Banded, + END_ColorMapDistribution_e, + ColorMapDistribution_Invalid = BadEnumValue +} ColorMapDistribution_e; + +typedef enum +{ + RGBMode_SpecifyRGB, + RGBMode_SpecifyRG, + RGBMode_SpecifyRB, + RGBMode_SpecifyGB, + END_RGBMode_e, + RGBMode_Invalid = BadEnumValue +} RGBMode_e; + +typedef enum +{ + TecUtilErr_None, + TecUtilErr_Undetermined, + END_TecUtilErr_e, + TecUtilErr_Invalid = BadEnumValue +} TecUtilErr_e; + +/* BEGINREMOVEFROMADDON */ +/* deprecated type from alpha/beta v10 */ +typedef enum +{ + AxisShape_Ray, + AxisShape_LineTwoDirections, + AxisShape_LShape, + AxisShape_CrossOrBox, + END_AxisShape_e, + AxisShape_Invalid = BadEnumValue +} AxisShape_e; + +/* licensing enums : keep hidden */ +typedef enum +{ + RunMode_Demo, + RunMode_Eval, + RunMode_Full, + /**/ + END_RunMode_e, + /**/ + RunMode_Invalid = BadEnumValue +} RunMode_e; + +/* ENDREMOVEFROMADDON */ + +typedef enum /* Custom exporter error message */ +{ + ExportCustReturnCode_Ok, + ExportCustReturnCode_Failed, + ExportCustReturnCode_TecplotLocked, + ExportCustReturnCode_ExporterNotLoaded, + ExportCustReturnCode_ExportCallbackFailed, + ExportCustReturnCode_NotAnImageExporter, + ExportCustReturnCode_NotAFieldDataExporter, + END_ExportCustReturnCode_e, + ExportCustReturnCode_Invalid = BadEnumValue +} ExportCustReturnCode_e; + +/** + * COB/Zone types. + */ +typedef enum +{ + CZType_FieldDataZone, + CZType_FEBoundaryCOB, + CZType_IsoSurfaceCOB, + CZType_SliceCOB, + CZType_StreamtraceCOB, + CZType_StreamtraceMarkerCOB, + CZType_StreamtraceArrowheadCOB, + END_CZType_e, + CZType_Invalid = BadEnumValue +} CZType_e; + +/** + */ +typedef enum +{ + FaceNeighborMode_LocalOneToOne, + FaceNeighborMode_LocalOneToMany, + FaceNeighborMode_GlobalOneToOne, + FaceNeighborMode_GlobalOneToMany, + END_FaceNeighborMode_e, + FaceNeighborMode_Invalid = BadEnumValue +} FaceNeighborMode_e; + + +/** + * Page render destinations. + */ +typedef enum +{ + PageRenderDest_None, + PageRenderDest_OnScreen, + PageRenderDest_OffScreen, + END_PageRenderDest_e, + PageRenderDest_Invalid = BadEnumValue +} PageRenderDest_e; + +/* BEGINREMOVEFROMADDON */ +/* + * Destination for all internal rendering (VDI/Gr) functions. For external + * linkage we translate RenderDest_WorkArea to PageRenderDest_OnScreen, + * RenderDest_OffscreenBitmap to PageRenderDest_OffScreen and + * RenderDest_Invalid to PageRenderDest_None. + */ +typedef enum +{ + RenderDest_WorkArea, /* Do not move from start of screen entries */ + RenderDest_ExampleText, + RenderDest_ExampleLightSourcePosition, + RenderDest_ExampleColorMap, + RenderDest_ExampleBasicColor, /* Do not move from end of screen entries */ + RenderDest_OffscreenBitmap, + RenderDest_Hardcopy, + END_RenderDest_e, + RenderDest_Invalid = BadEnumValue, + /* + * These next two are optimizations to make the + * RDT_IsScreen() macro as efficient as possible. + */ + RenderDest_FirstScreenEntry = RenderDest_WorkArea, + RenderDest_LastScreenEntry = RenderDest_ExampleBasicColor +} RenderDest_e; +/* ENDREMOVEFROMADDON */ + +typedef enum +{ + Stipple_All, + Stipple_Critical, + Stipple_None, + END_Stipple_e, + Stipple_Invalid = BadEnumValue +} Stipple_e; + +typedef enum +{ + DataFileType_Full, + DataFileType_Grid, + DataFileType_Solution, + END_DataFileType_e, + DataFileType_Invalid = BadEnumValue +} DataFileType_e; + +typedef enum +{ + ConditionAwakeReason_Signaled, + ConditionAwakeReason_TimedOut, + END_ConditionAwakeReason_e, + ConditionAwakeReason_Invalid = BadEnumValue +} ConditionAwakeReason_e; + +/**************************************************************** + * * + * STRUCTURE TYPEDEFS * + * * + ****************************************************************/ + +/* + * These are defined to work with pthreads, more work for WINAPI needed + */ +typedef struct _Mutex_a* Mutex_pa; + +typedef void*(STDCALL *ThreadFunction_pf)(ArbParam_t ThreadData); + +typedef struct _Condition_a* Condition_pa; + +typedef struct _JobControl_s* JobControl_pa; + +typedef void (STDCALL *ThreadPoolJob_pf)(ArbParam_t JobData); + +/* BEGINREMOVEFROMADDON */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined USE_OOSTYLE +#endif +#endif /* TECPLOTKERNEL */ +/* ENDREMOVEFROMADDON */ + +typedef struct _StringList_s *StringList_pa; +typedef struct _Menu_s *Menu_pa; +/* BEGINREMOVEFROMADDON */ +typedef struct _ArrayList_s *ArrayList_pa; +/* ENDREMOVEFROMADDON */ + +typedef enum +{ + ImageResizeFilter_Texture, + ImageResizeFilter_Box, + ImageResizeFilter_Lanczos2, + ImageResizeFilter_Lanczos3, + ImageResizeFilter_Triangle, + ImageResizeFilter_Bell, + ImageResizeFilter_BSpline, + ImageResizeFilter_Cubic, + ImageResizeFilter_Mitchell, + ImageResizeFilter_Gaussian, + END_ImageResizeFilter_e, + ImageResizeFilter_Invalid = BadEnumValue +} ImageResizeFilter_e; + +typedef enum +{ + VarStatus_Passive, + VarStatus_Custom, + VarStatus_Map, + VarStatus_Heap, + VarStatus_NotLoaded, + END_VarStatus_e, + VarStatus_Invalid = BadEnumValue +} VarStatus_e; + + + +/* BEGINREMOVEFROMADDON */ + +/* here until GR and GRHW layer can be rearranged. */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# if !defined NO_ASSERTS +# endif +#endif /* TECPLOTKERNEL */ + +/* ENDREMOVEFROMADDON */ + +typedef struct _Set_a *Set_pa; + +typedef struct +{ + double X; + double Y; + double Z; +} XYZ_s; + +/* BEGINREMOVEFROMADDON */ + +typedef struct _Generic3Var_s +{ + double V1; + double V2; + double V3; +} Generic3Var_s; + +typedef struct _ThetaR_s +{ + double Theta; + double R; +} ThetaR_s; + +/* + * This union is designed to allow different plottypes + * to access the same values by different names. In + * C++ we could use member access functions, or we + * could have used macros, but instead we use this + * union. NOTE: This only works if all the structures + * have the same alignment. + */ +typedef union _AnchorPos_u +{ + Generic3Var_s Generic; + XYZ_s XYZ; + ThetaR_s ThetaR; +} AnchorPos_u; + +typedef struct _DataFileInfo_s +{ + char *PrimaryFName; + char *TempBinaryFName; + DataFileType_e FileType; + FileOffset_t DataFileOffset; + StringList_pa VarName; + EntIndex_t NumZones; + EntIndex_t NumVars; + double SolutionFileTime; + struct _DataFileInfo_s *NextFile; +} DataFileInfo_s; + +typedef struct _StylesheetIOFlags_s +{ + Boolean_t IncludePlotStyle; + Boolean_t IncludeFieldAndMapStyle; /* Only used for undo */ + Boolean_t IncludeUniqueIDs; /* Only used for undo */ + Boolean_t IncludeText; + Boolean_t IncludeGeom; + Boolean_t IncludeGeomImageData; + Boolean_t IncludeAuxData; + Boolean_t IncludeStreamPositions; + Boolean_t IncludeContourLevels; + Boolean_t IncludeFactoryDefaults; /* Only used when writing */ + Boolean_t CompressStyleCommands; /* Only used when writing */ + Boolean_t MergeStyle; /* Only used when reading */ + Boolean_t IncludeFrameSizeAndPosition; /* Only used when reading */ + Boolean_t UseRelativePaths; +} StylesheetIOFlags_s; + + +/** + */ +typedef struct +{ + Boolean_t Show; /* power switch */ + Boolean_t ShowMesh; + Boolean_t ShowContour; + Boolean_t ShowShade; + Boolean_t UseLightingEffect; + Boolean_t UseTranslucency; +} IsoSurfaceLayers_s; + +/** + */ +typedef struct +{ + Boolean_t Show; /* power switch */ + Boolean_t ShowMesh; + Boolean_t ShowContour; + Boolean_t ShowVector; + Boolean_t ShowShade; + Boolean_t ShowEdge; + Boolean_t UseLightingEffect; + Boolean_t UseTranslucency; +} SliceLayers_s; + +/** + */ +typedef struct +{ + Boolean_t Show; /* power switch */ + Boolean_t ShowPaths; + Boolean_t ShowDashes; + Boolean_t ShowArrowheads; + Boolean_t ShowMesh; + Boolean_t ShowContour; + Boolean_t ShowShade; + Boolean_t ShowMarkers; + Boolean_t UseLightingEffect; + Boolean_t UseTranslucency; +} StreamtraceLayers_s; + +/** + */ +typedef struct +{ +#if 0 /* in the future we may add a main power switch */ + Boolean_t Show; /* power switch */ +#endif + TwoDDrawOrder_e TwoDDrawOrder; + Boolean_t ShowMesh; + Boolean_t ShowContour; + Boolean_t ShowVector; + Boolean_t ShowScatter; + Boolean_t ShowShade; + Boolean_t ShowEdge; + Boolean_t UseLightingEffect; + Boolean_t UseTranslucency; +} FieldLayers_s; + +/** + * General purpose field layers structure used for low level drawing code only. + * SetupXxxx is responsible for populating this general field layers structure + * from the specific layer structures above for CZInfo. + */ +typedef struct +{ + Boolean_t ShowMesh; + Boolean_t ShowContour; + Boolean_t ShowVector; + Boolean_t ShowScatter; + Boolean_t ShowShade; + Boolean_t ShowEdge; + Boolean_t UseLightingEffect; + Boolean_t UseTranslucency; +} CZFieldLayers_s; + +/** + */ +typedef struct _LinePlotLayers_s +{ +#if 0 /* in the future we may add a main power switch */ + Boolean_t Show; /* power switch */ +#endif + Boolean_t ShowLines; + Boolean_t ShowSymbols; + Boolean_t ShowBarCharts; + Boolean_t ShowErrorBars; +} LinePlotLayers_s; + + +typedef union _InterfaceAdjust_u +{ + double ScaleFact; + LgIndex_t Shift; +} InterfaceAdjust_u; + +typedef Boolean_t (*SuffixModifier_pf)(TP_IN_OUT double* Value, + const char* Suffix); + +typedef struct _InputSpecs_s +{ + Input_e Type; + double Min; + double Max; + InterfaceAdjust_u InterfaceAdjust; + SuffixModifier_pf SuffixModifier; +} InputSpec_s; + + +typedef struct _RGB_s +{ + ColorIndex_t R; + ColorIndex_t G; + ColorIndex_t B; +} RGB_s; + + +typedef struct _ControlPoint_s +{ + double ColorMapFraction; + RGB_s LeadRGB; + RGB_s TrailRGB; +} ControlPoint_s; + + +typedef struct _ColorMapBand_s +{ + short NumControlPoints; + ControlPoint_s ControlPoint[MaxColorMapControlPoints]; +} ColorMapBand_s; + + +typedef struct _EventAction_s +{ + int I; + int J; + int LastI; + int LastJ; + int BaseI; + int BaseJ; + int ButtonOrKey; + Event_e Event; + Boolean_t IsShifted; + Boolean_t IsAlted; + Boolean_t IsControlled; + Boolean_t WasShiftedOnButtonPress; + Boolean_t WasAltedOnButtonPress; + Boolean_t WasControlledOnButtonPress; +} EventAction_s; + +typedef struct _MacroCmd_s +{ + LString_t MacroLine; + struct _MacroCmd_s *NextCmd; +} MacroCmd_s; + + +typedef struct _IntegerRect_s +{ + LgIndex_t X1; + LgIndex_t Y1; + LgIndex_t X2; + LgIndex_t Y2; +} IntegerRect_s; + + +typedef struct _Rect_s +{ + double X1; + double Y1; + double X2; + double Y2; +} Rect_s; + +typedef struct _XY_s +{ + double X; + double Y; +} XY_s; + +typedef struct _IJKSkip_s +{ + LgIndex_t I; + LgIndex_t J; + LgIndex_t K; +} IJKSkip_s; + + + +/* + * + * NOTE ON RANGES (Ent and Index) + * + * Min, Max and Skip all use the following assignment logic: + * + * 0 = First element + * -1 = mxindex value, (X[mxindex-1] in c) + * -n = mxindex-n+1 value (X[mxindex+n] in c) + * n = n+1 value (X[n] in c) + * + */ + +/* + * 2/28/95: NOTE: EntRange_s is no longer used but may be + * needed later. + */ + +typedef struct _EntRange_s +{ + EntIndex_t Min; + EntIndex_t Max; + EntIndex_t Skip; +} EntRange_s; + + +typedef struct _IndexRange_s +{ + LgIndex_t Min; + LgIndex_t Max; + LgIndex_t Skip; +} IndexRange_s; + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined (THREED) +#endif +#endif /* TECPLOTKERNEL */ + +typedef struct _TextShape_s +{ + Font_e Font; + double Height; + Units_e SizeUnits; +} TextShape_s; + +#define AsciiShapeFontIsGreek(S) (((S)->UseBaseFont == FALSE) && ((S)->FontOverride == Font_Greek)) +#define AsciiShapeFontIsMath(S) (((S)->UseBaseFont == FALSE) && ((S)->FontOverride == Font_Math)) +#define AsciiShapeFontIsUserDefined(S) (((S)->UseBaseFont == FALSE) && ((S)->FontOverride == Font_UserDefined)) + + +typedef struct +{ + Boolean_t UseBaseFont; /* (Default = TRUE) */ + Font_e FontOverride;/* (Default = Font_Math)*/ + SymbolChar_t Char; +} AsciiShape_s; + +typedef struct _SymbolShape_s +{ + GeomShape_e GeomShape; + Boolean_t IsAscii; + AsciiShape_s AsciiShape; +} SymbolShape_s; + +#ifdef NOT_USED +struct _AddOnList_a +{ + /* added temporarily so Windows makelibtec works */ + int dummy; +}; +#endif + +/* ENDREMOVEFROMADDON */ + +typedef struct _AddOnList_a *AddOn_pa; + +typedef struct _NodeMap_a *NodeMap_pa; + +/* BEGINREMOVEFROMADDON */ +typedef struct _StylePointState_a *StylePointState_pa; +typedef struct _DataElementState_a *DataElementState_pa; +typedef struct _StyleElementState_a *StyleElementState_pa; +typedef struct _NormalCache_a *NormalCache_pa; +/* ENDREMOVEFROMADDON */ + + +#define INVALID_INDEX (-1) + +/* used to indicate that no neighboring element or zone exists */ +#define NO_NEIGHBORING_ELEMENT (-1) +#define NO_NEIGHBORING_ZONE (-1) + +typedef struct _FaceNeighbor_a *FaceNeighbor_pa; + +/** + */ +typedef struct _FaceMap_a *FaceMap_pa; + +/** + */ +typedef struct _ElemToFaceMap_a *ElemToFaceMap_pa; + +/** + */ +typedef struct _NodeToElemMap_a *NodeToElemMap_pa; + +/* BEGINREMOVEFROMADDON */ + +/* + * Enumerates the face neighbor array members to make indexed members + * identifiable. + */ +typedef enum +{ + FaceNeighborMemberArray_CellFaceNbrs, + FaceNeighborMemberArray_BndryConnectNbrsCompObscure, + FaceNeighborMemberArray_BndryConnectFaceToCellsMap, + FaceNeighborMemberArray_BndryConnectIsPerfectNbr, + FaceNeighborMemberArray_BndryConnectCellList, + FaceNeighborMemberArray_BndryConnectZoneList, + END_FaceNeighborMemberArray_e, + FaceNeighborMemberArray_Invalid = BadEnumValue +} FaceNeighborMemberArray_e; + +int const FaceNeighborNumMemberArrays = (int)END_FaceNeighborMemberArray_e; + +/* + * Enumerates the face map's array members to make indexed members + * identifiable. + */ +typedef enum +{ + FaceMapMemberArray_FaceNodeOffsets, + FaceMapMemberArray_FaceNodes, + FaceMapMemberArray_FaceLeftElems, + FaceMapMemberArray_FaceRightElems, + FaceMapMemberArray_FaceBndryItemOffsets, + FaceMapMemberArray_FaceBndryItemElems, + FaceMapMemberArray_FaceBndryItemElemZones, + END_FaceMapMemberArray_e, + FaceMapMemberArray_Invalid = BadEnumValue +} FaceMapMemberArray_e; + +const int FaceMapNumMemberArrays = (int)END_FaceMapMemberArray_e; + +/* + * Enumerates the element to face map's array members to make indexed members + * identifiable. + */ +typedef enum +{ + ElemToFaceMapMemberArray_ElemFaceOffsets, + ElemToFaceMapMemberArray_ElemFaces, + END_ElemToFaceMapMemberArray_e, + ElemToFaceMapMemberArray_Invalid = BadEnumValue +} ElemToFaceMapMemberArray_e; + +const int ElemToFaceMapNumMemberArrays = (int)END_ElemToFaceMapMemberArray_e; + +/* + * Enumerates the element map's array members to make indexed members + * identifiable. + */ +typedef enum +{ + NodeToElemMapMemberArray_NodeElemOffsets, + NodeToElemMapMemberArray_NodeElems, + END_NodeToElemMapMemberArray_e, + NodeToElemMapMemberArray_Invalid = BadEnumValue +} NodeToElemMapMemberArray_e; + +const int NodeToElemMapNumMemberArrays = (int)END_NodeToElemMapMemberArray_e; + +/* ENDREMOVEFROMADDON */ + + +typedef struct _FieldData_a *FieldData_pa; + +/** + */ +typedef struct _AuxData_s *AuxData_pa; + + +/** + * Enumerates the data value structure of a variable in a data file. + * For all but ordered cell centered data the classic, classic padded and + * classic plus formats are identical. All values are laid out contiguously + * in the file. The number of values written depends upon the value location: + * + * - FE nodal:\n + * The number of values equals the number of data points. + * - FE cell centered:\n + * The number of values equals the number of elements. + * - Ordered nodal:\n + * The number of values equals the number of data points. + * - Ordered cell centered:\n + * There are three formats: + * -# Classic (binary version < 103):\n + * Classic is a compressed format of ordered cell centered data in + * that it does not include ghost cells. The cell index of each cell + * does not correspond to the lowest corner point index of each cell + * as it does internally in Tecplot.\n + * The number of values in the data file is calculated as follows: + * @code + * NumValues = MAX(IMax-1,1) * MAX(JMax-1,1) * MAX(KMax-1,1); + * @endcode + * Where IMax, JMax, and KMax are the maximum point dimensions of the + * zone. + * -# Classic padded (binary version < 104):\n + * Classic padded is an intermediary format that was available only + * within Tecplot, Inc. The cell centered data includes the ghost cells + * and each cell index corresponds to the lowest corner point index of + * each cell.\n + * The number of values in the data file (including ghost cells) is + * calculated as follows: + * @code + * NumValues = IMax * JMax * KMax; + * @endcode + * Where IMax, JMax, and KMax are the maximum point dimensions of the + * zone. The contents of the ghost cells is undefined and should not + * be used. + * -# Classic plus (binary version >= 104):\n + * Classic plus is similar to classic padded except that it does not + * include the ghost cells of the slowest moving index greater than + * one.\n + * The number of values in the data file (including ghost cells) is + * calculated as follows: + * @code + * FinalIMax = IMax; + * FinalJMax = JMax; + * FinalKMax = KMax; + * + * // decrement the max index of the slowest moving index greater than 1 + * if (KMax > 1) + * FinalKMax--; + * else if (JMax > 1) + * FinalJMax--; + * else if (IMax > 1) + * FinalIMax--; + * + * NumValues = FinalIMax * FinalJMax * FinalKMax; + * @endcode + * Where IMax, JMax, and KMax are the maximum point dimensions of the + * zone. The contents of the ghost cells is undefined and should not + * be used. + */ +typedef enum +{ + DataValueStructure_Classic, + DataValueStructure_ClassicPadded, + DataValueStructure_ClassicPlus, + END_DataValueStructure_e, + /* BEGINREMOVEFROMADDON */ + DataValueStructure_Latest = (END_DataValueStructure_e - 1), + /* ENDREMOVEFROMADDON */ + DataValueStructure_Invalid = BadEnumValue +} DataValueStructure_e; + +/** + * Enumerates the data node structure of a node map in a data file. The classic + * format uses 1 based nodes while the classic plus format uses zero based + * node. + */ +typedef enum +{ + DataNodeStructure_Classic, /* ones based node maps */ + DataNodeStructure_ClassicPlus, /* zero based node maps */ + END_DataNodeStructure_e, + DataNodeStructure_Invalid = BadEnumValue +} DataNodeStructure_e; + +/** + * Enumerates the variable locking modes. The \ref VarLockMode_ValueChange mode + * prevents modification of the values in a variable but permits deletion, and + * the \ref VarLockMode_Delete mode prevents deletion of a varaible but permits + * modification. + */ +typedef enum +{ + VarLockMode_ValueChange, + VarLockMode_Delete, + END_VarLockMode_e, + VarLockMode_Invalid = BadEnumValue +} VarLockMode_e; + +typedef enum +{ + FieldMapMode_UseStrandID, + FieldMapMode_UseZoneSet, + END_FieldMapMode_e, + FieldMapMode_Invalid = BadEnumValue +} FieldMapMode_e; + +typedef enum +{ + UnloadStrategy_Auto, + UnloadStrategy_NeverUnload, + UnloadStrategy_MinimizeMemoryUse, + END_UnloadStrategy_e, + UnloadStrategy_Invalid = BadEnumValue +} UnloadStrategy_e; + +/* BEGINREMOVEFROMADDON */ + + + +typedef struct +{ + ColorIndex_t PresetZoneColor; + Boolean_t IsInBlockFormat; +} ZoneLoadInfo_s; + +/* + * Note: For FE Data, NumPtsI = Number of data points. + * NumPtsJ = Number of elements. + * NumPtsK = Number of points per element. + */ + +typedef struct _ZoneSpec_s +{ + UniqueID_t UniqueID; + ZoneName_t Name; + EntIndex_t ParentZone; + Strand_t StrandID; + double SolutionTime; + LgIndex_t NumPtsI; // ...NumDataPts + LgIndex_t NumPtsJ; // ...NumElements + LgIndex_t NumPtsK; // ...NumPtsPerElem or NumFaces + LgIndex_t ICellDim; // ...currently not used + LgIndex_t JCellDim; // ...currently not used + LgIndex_t KCellDim; // ...currently not used + ZoneType_e Type; + ZoneLoadInfo_s ZoneLoadInfo; + AuxData_pa AuxData; + Boolean_t BuildZoneOptInfo; + + /* classic data only */ + FaceNeighborMode_e FNMode; + Boolean_t FNAreCellFaceNbrsSupplied; // ...meaning we don't need to update them + + /* polytope data only */ + LgIndex_t NumFaceNodes; + LgIndex_t NumFaceBndryFaces; + LgIndex_t NumFaceBndryItems; +} ZoneSpec_s; + + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +typedef struct _GenericImage_a *GenericImage_pa; + +typedef struct _TextBox_s +{ + TextBox_e BoxType; /* Used to be textbox */ + double Margin; /* Used to be textboxmargin */ + double LineThickness; /* Used to be textboxmargin */ + ColorIndex_t BColor; /* Used to be textboxcolor */ + ColorIndex_t FillBColor; /* Used to be textboxfillcolor */ +} TextBox_s; + + +typedef struct _Text_s +{ + UniqueID_t UniqueID; /* Not used yet */ + AnchorPos_u AnchorPos; + CoordSys_e PositionCoordSys; + EntIndex_t Zone; + Boolean_t AttachToZone; /* New */ + ColorIndex_t BColor; /* Used to be TextColor */ + TextShape_s TextShape; + TextBox_s Box; /* Box items used to be here*/ + double Angle; /* NOTE: short in v6, now in rad */ + TextAnchor_e Anchor; /* New */ + double LineSpacing; /* New */ + Scope_e Scope; + char *MacroFunctionCommand; + Clipping_e Clipping; + char *Text; + struct _Text_s *NextText; + struct _Text_s *PrevText; +} Text_s; + + +typedef struct _GenericGeomData_s +{ + FieldData_pa V1Base; + FieldData_pa V2Base; + FieldData_pa V3Base; +} GenericGeomData_s; + +typedef struct _PolarGeomData_s +{ + FieldData_pa ThetaBase; + FieldData_pa RBase; +} PolarGeomData_s; + +typedef struct _CartesianGeomData_s +{ + FieldData_pa XBase; + FieldData_pa YBase; + FieldData_pa ZBase; +} CartesianGeomData_s; + +/* + * This union is designed to allow different plottypes + * to access the same values by different names. In + * C++ we could use member access functions, or we + * could have used macros, but instead we use this + * union. NOTE: This only works if all the structures + * have the same alignment. + */ +typedef union _GeomData_u +{ + GenericGeomData_s Generic; + CartesianGeomData_s XYZ; + PolarGeomData_s ThetaR; +} GeomData_u; + +typedef struct _Geom_s +{ + UniqueID_t UniqueID; + GeomType_e GeomType; + CoordSys_e PositionCoordSys; + AnchorPos_u AnchorPos; + Boolean_t AttachToZone; + EntIndex_t Zone; + ColorIndex_t BColor; + Boolean_t IsFilled; + ColorIndex_t FillBColor; + LinePattern_e LinePattern; + double PatternLength; + double LineThickness; + Scope_e Scope; + DrawOrder_e DrawOrder; + Clipping_e Clipping; + FieldDataType_e DataType; + char *MacroFunctionCommand; + ArrowheadStyle_e ArrowheadStyle; + ArrowheadAttachment_e ArrowheadAttachment; + double ArrowheadSize; + double ArrowheadAngle; + SmInteger_t NumEllipsePts; + char *ImageFileName; + LgIndex_t ImageNumber; /* used only to locate images within .lpk files */ + Boolean_t MaintainAspectRatio; + double PixelAspectRatio; /* VerticalPixelsPerHorizontalPixel */ + SmInteger_t NumSegments; + SegPtsArray_t NumSegPts; + GeomData_u GeomData; + ImageResizeFilter_e ImageResizeFilter; + /* Internal Scratch */ + GenericImage_pa _ImageData; + struct _Geom_s *_NextGeom; + struct _Geom_s *_PrevGeom; +} Geom_s; + + +typedef struct _Text_s *Text_pa; +typedef struct _Geom_s *Geom_pa; + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined USE_OOSTYLE +#endif +#if defined USE_OOSTYLE +#endif +#endif /* TECPLOTKERNEL */ + +/* ENDREMOVEFROMADDON */ +/* - NO DOXYGEN COMMENT GENERATION - + * Page creation callback is responsible for creating a RenderHandler for the page and + * calling @ref TecEngPageCreateNew(ArbParam_t RenderHandle) + * + * The RenderHandler type can be anything, for example,a pointer to a class instance that will + * be responsible for handling requests from the engine to perform operations on + * a page. + * + * @param PageConstructionHints a string list of construction hints that can be used for deciding + * how the page should be displayed in an application's UI. The construction hints could have been + * restored from a saved layout file or passed to @ref TecUtilPageCreateNew function. + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @return TRUE if page create request was handled and TecEngPageCreateNew() returned TRUE. + * + * @sa TecEngPageCreateRegisterCallback, TecEngPageCreateNew + * + * @since + * 11.0-5-014 + */ +typedef Boolean_t (STDCALL *PageCreateCallback_pf)(StringList_pa PageConstructionHints, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Page destruction callback responsible for destroying a page. + * + * @param PageClientData + * Data associated with a page that was returned from the PageCreateCallback_pf + * callback function. You will get a different value for each page. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @sa TecEngPageDestroyRegisterCallback, PageCreateCallback_pf + * + * @since + * 11.0-5-014 + */ +typedef void (STDCALL *PageDestroyCallback_pf)(ArbParam_t PageClientData, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for informing the parent application of a new current page. + * Note that this could be done via a state change monitor but a more secure method + * is needed as state changes may be shut down from time to time. + * + * @param PageClientData + * Data associated with a page that was returned from the PageCreateCallback_pf + * callback function. You will get a different value for each page. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @since + * 11.0-5-017 + */ +typedef void (STDCALL *PageNewCurrentCallback_pf)(ArbParam_t PageClientData, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for creation of an offscreen image. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @param ImageHandle handle to a newly created image. This is an output parameter. + * + * @return TRUE if an offscreen image was created successfully. + * + * @since + * 11.2-0-054 + */ +typedef Boolean_t (STDCALL *OffscreenImageCreateCallback_pf)(ScreenDim_t Width, + ScreenDim_t Height, + ArbParam_t RegistrationClientData, + TP_OUT ArbParam_t* ImageHandle); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for destruction of an offscreen image. + * + * @param ImageHandle handle to an offscreen image to be destroyed. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @since + * 11.2-0-054 + */ +typedef void (STDCALL *OffscreenImageDestroyCallback_pf)(ArbParam_t ImageHandle, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for returning RGB values for a row. + * + * @param ImageHandle + * Handle to an off-screen image from which RGB values to be retrieved. + * + * @param Row + * Row for which RGB values to be retrieved. + * + * @param RedArray + * Array to receive the red byte values for the specified Row. The number of values in + * the array must equal the width of the image. The array address is maintained by the + * Tecplot Engine until the image is destroyed however it is reused for each invocation + * of this callback. + * + * @param GreenArray + * Array to receive the green byte values for the specified Row. The number of values in + * the array must equal the width of the image. The array address is maintained by the + * Tecplot Engine until the image is destroyed however it is reused for each invocation + * of this callback. + * + * @param BlueArray + * Array to receive the blue byte values for the specified Row. The number of values in + * the array must equal the width of the image. The array address is maintained by the + * Tecplot Engine until the image is destroyed however it is reused for each invocation + * of this callback. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @return TRUE if successful, FALSE otherwise. + * + * @since + * 11.2-0-054 + */ +typedef Boolean_t (STDCALL *OffscreenImageGetRGBRowCallback_pf)(ArbParam_t ImageHandle, + ScreenDim_t Row, + ArbParam_t RegistrationClientData, + TP_ARRAY_OUT Byte_t* RedArray, + TP_ARRAY_OUT Byte_t* GreenArray, + TP_ARRAY_OUT Byte_t* BlueArray); + +#if defined MSWIN +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for printing an image on the specified printer DC + * + * @param PrintDC a device context of a printer on which the printing should be performed. + * + * @param ImageHandle handle to an image to print. + * + * @param Palette specifies if an image should be printed as a color or monochrome image. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @return TRUE if the printing operation was successfull. + * + * @since + * 11.2-0-463 + */ +typedef Boolean_t (STDCALL *WinPrintImageCallback_pf)(HDC PrintDC, + ArbParam_t ImageHandle, + Palette_e Palette, + ArbParam_t RegistrationClientData); + +#endif /* MSWIN */ + +#if defined MSWIN +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for providing a printer context. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @return HDC context of the destination printer. + * + * @since + * 11.2-0-468 + */ +typedef HDC(STDCALL *WinPrinterGetContextCallback_pf)(ArbParam_t RegistrationClientData); + +#endif /* MSWIN */ + +/* - NO DOXYGEN COMMENT GENERATION - + * Render destination callback responsible for switching the render destination + * of the OpenGL drawing state when requested by the Tecplot engine. + * + * @since + * 11.0-0-397 + * + * @param PageRenderDest + * Enumeration of page render destination of interest. + * + * @param RenderDestClientData + * Data associated with a render destination, such as returned from the PageCreateCallback_pf or + * OffscreenImageCreate_pf callback functions. + * + * @param RegistrationClientData + * Data associated with the registration of this function. This will always return + * the value supplied in the original registration of this function. + * + * @return + * TRUE if render destination was set successfully. FALSE, otherwise. + * + * @sa TecEngRenderDestRegisterCallback + */ +typedef Boolean_t (STDCALL *RenderDestCallback_pf)(PageRenderDest_e PageRenderDest, + ArbParam_t RenderDestClientData, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Render query callback responsible for informing Tecplot if the page + * associated with the PageClientData should be rendered into. + * + * @since + * 11.0-5-018 + * + * @param PageClientData + * Data associated with a page that was returned from the + * PageCreateCallback_pf callback function. + * @param RegistrationClientData + * Data associated with the registration of this function. This will always + * return the value supplied in the original registration of this function. + * + * + * @return + * TRUE if Tecplot should render to the page identified by the + * PageClientData, FALSE otherwise. + * + * @sa TecEngRenderQueryRegisterCallback + */ +typedef Boolean_t (STDCALL *RenderQueryCallback_pf)(ArbParam_t PageClientData, + ArbParam_t RegistrationClientData); +/* - NO DOXYGEN COMMENT GENERATION - + * Render destination size callback responsible for returning the size of the + * specified render destination when requested by the Tecplot engine. + * + * @since + * 11.0-0-397 + * + * @param PageClientData + * Data associated with a page that was returned from the + * PageCreateCallback_pf callback function. + * @param RegistrationClientData + * Client data that was registered with the callback. + * @param Width + * Pointer who's contents should receive the width of the current render + * destination. + * @param Height + * Pointer who's contents should receive the height of the current render + * destination. + * + * @sa TecEngRenderDestSizeRegisterCallback + */ +typedef void (STDCALL *RenderDestSizeCallback_pf)(ArbParam_t PageClientData, + ArbParam_t RegistrationClientData, + TP_OUT LgIndex_t* Width, + TP_OUT LgIndex_t* Height); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for swapping the front and back buffers for the current + * OpenGL drawing state's render destination when requested by the Tecplot + * engine. + * + * @since + * 11.0-0-397 + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @sa TecUtilpBuffersRegisterCallback + */ +typedef void (STDCALL *SwapBuffersCallback_pf)(ArbParam_t RegistrationClientData); + + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for querying of key states. + * + * @since + * 11.0-0-399 + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * @param IsShiftKeyDown + * Boolean pointer. If non-NULL, set the boolean to TRUE if the Shift key is + * down or FALSE if it is up. + * @param IsAltKeyDown + * Boolean pointer. If non-NULL, set the boolean to TRUE if the Alt key is + * down or FALSE if it is up. + * @param IsCntrlKeyDown + * Boolean pointer. If non-NULL, set the boolean to TRUE if the Cntrl key is + * down or FALSE if it is up. + * + * @sa TecEngKeyStateRegisterCallback + */ +typedef void (STDCALL *KeyStateCallback_pf)(ArbParam_t RegistrationClientData, + TP_OUT Boolean_t* IsShiftKeyDown, + TP_OUT Boolean_t* IsAltKeyDown, + TP_OUT Boolean_t* IsCntrlKeyDown); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for querying of a mouse button state. + * + * @since + * 11.0-0-424 + * + * @param Button + * Mouse button number to query. Button numbers start at one. + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @return + * TRUE if the specified mouse button is down, FALSE otherwise. + * + * @sa TecEngMouseButtonStateRegisterCallback + */ +typedef Boolean_t (STDCALL *MouseButtonStateCallback_pf)(int Button, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for setting wait cursor when requested by the kernel + * + * @since + * 11.2-0-302 + * + * @param Activate + * TRUE if the kernel is requesting that the wait cursor be activated. + * FALSE if the kernel is requesting that the wait cursor be deactivated. + * @param RegistractionClientData + * Client data that was registered with the callback. + * + * @sa TecEngWaitCursorStateRegisterCallback + */ +typedef void (STDCALL *WaitCursorStateCallback_pf)(Boolean_t Activate, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for setting cursor style when requested by the kernel + * + * @since + * 11.2-0-302 + * + * @param CursorStyle + * The cursor style which the kernel is requesting. + * @param RenderHandle + * Handle to page where new cursor shape is being set. + * @param RegistractionClientData + * Client data that was registered with the callback. + * + * @sa TecEngBaseCursorStyleRegisterCallback + */ +typedef void (STDCALL *BaseCursorStyleCallback_pf)(CursorStyle_e CursorStyle, + ArbParam_t RenderHandle, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for processing events when the Tecplot engine is busy + * peforming a requested operation. This callback will be called at regular + * intervals to repair the interface and if required check for interrupts. Very + * little work should be done by this function. + * + * @since + * 11.0-0-415 + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @sa TecEngProcessBusyEventsRegisterCallback, TecUtilInterrupt + */ +typedef void (STDCALL *ProcessBusyEventsCallback_pf)(ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for launching a dialog. + * + * @since + * 11.0-0-415 + * + * @param RegistrationClientData + * Client data that was registered with this launch dialog callback. + * + * @return + * TRUE if the dialog was launched, FALSE if it could not be launched + * programmatically. + * + * @sa TecUtilDialogLaunch, TecUtilDialogDrop + */ +typedef Boolean_t (STDCALL *DialogLaunchCallback_pf)(ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for dropping a dialog. + * + * @since + * 11.0-0-407 + * + * @param RegistrationClientData + * Client data that was registered with this drop dialog callback. + * + * @sa TecUtilDialogLaunch, TecUtilDialogDrop + */ +typedef void (STDCALL *DialogDropCallback_pf)(ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for querying of the physical display's horizontal and + * vertical dot pitch. + * + * @since + * 11.0-0-407 + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * @param IDotsPerCm + * Pointer who's contents should receive the physical display's horizontal + * dot pitch in terms of the number of dots per centimeter. + * @param JDotsPerCm + * Pointer who's contents should receive the physical display's vertical + * dot pitch in terms of the number of dots per centimeter. + * + * @sa TecEngDotPitchRegisterCallback + */ +typedef void (STDCALL *DotPitchCallback_pf)(ArbParam_t RegistrationClientData, + TP_OUT double* IDotsPerCm, + TP_OUT double* JDotsPerCm); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for querying of the physical display's width and + * height in pixels. + * + * @since + * 11.2-0-471 + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * @param WidthInPixels + * Pointer who's contents should receive the physical display's width + * in pixels. NULL may be passed. + * @param HeightInPixels + * Pointer who's contents should receive the physical display's height + * in pixels. NULL may be passed. + * + * @sa TecEngScreenSizeRegisterCallback + */ +typedef void (STDCALL *ScreenSizeCallback_pf)(ArbParam_t RegistrationClientData, + TP_OUT int* WidthInPixels, + TP_OUT int* HeightInPixels); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for displaying a message box dialog and returning the + * user's response. + * + * @since + * 11.0-0-415 + * + * @param MessageString + * Message string to display in the dialog. + * @param MessageBoxType + * Type of message box to display. + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @return + * Result of user's response to the dialog. + * + * @sa TecEngDialogMessageBoxRegisterCallback + */ +typedef MessageBoxReply_e(STDCALL *DialogMessageBoxCallback_pf)(const char* MessageString, + MessageBoxType_e MessageBoxType, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback responsible for displaying a status line + * + * @since + * 11.2-0-085 + * + * @param StatusString + * Message string to display in the dialog. + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @sa TecEngStatusLineRegisterCallback + */ +typedef void (STDCALL *StatusLineCallback_pf)(const char* StatusString, + ArbParam_t RegistrationClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback that will be called with the updated progress status. + * + * @since 11.2-0-098 + * + * + * @param ProgressStatus + * Percentage of the progress. + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @sa TecEngProgressMonitorRegisterCallback + */ +typedef void (STDCALL *ProgressMonitorCallback_pf)(int ProgressStatus, + ArbParam_t RegistrationClientData); +/* - NO DOXYGEN COMMENT GENERATION - + * Callback that will be called with Tecplot Engine is about to perform a lengthy operation. + * The client that registers such the callback may present a user with a progress bar, + * if the ShowProgressBar argument is TRUE, and a stop button that would interrupt the operation by + * calling TecUtilInterrupt(). + * + * @since 11.2-0-098 + * + * @param ShowProgressBar + * Boolean indicating if the progress steps can be monitored for an operation. If TRUE, Tecplot Engine will be calling + * the registered ProgressMonitorCallback_pf function with the updated progress status. + * + * @param IsInterruptible + * Boolean indicating if the operation can be interrupted before completion. + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @sa TecEngProgressMonitorRegisterCallback + */ +typedef void (STDCALL *ProgressMonitorStartCallback_pf)(Boolean_t ShowProgressBar, + Boolean_t IsInterruptible, + ArbParam_t RegistrationClientData); +/* - NO DOXYGEN COMMENT GENERATION - + * Callback tht will be called with Tecplot Engine has finished performing a lengthy operation. + * At this point, client may hide progress bar that was shown during handling of ProgressMonitorStartCallback callback and + * disable or hide the stop button. + * + * @since 11.2-0-098 + * + * @param RegistrationClientData + * Client data that was registered with the callback. + * + * @sa TecEngProgressMonitorRegisterCallback + */ +typedef void (STDCALL *ProgressMonitorFinishCallback_pf)(ArbParam_t RegistrationClientData); + +/********************************************************* + * Add-on Timers + *********************************************************/ +/** + * This is called when a registered timer fires. + * + * @par Limitation: + * Unix and Linux versions of Tecplot currently do not fire timer events when + * Tecplot is running in batch mode (with the -b flag). This behavior + * limitation is subject to change. + * + * @param ClientData + * Arbitrary client data. + * + * @return + * Return TRUE if the timer should be reinstated. Return FALSE + * to stop subsequent callbacks. + * + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyAddOnTimerCallback( + * & ClientDataPtr) + * POINTER (ClientDataPtr,DummyClientData) + * </FortranSyntax> + */ +typedef Boolean_t (STDCALL *AddOnTimerCallback_pf)(ArbParam_t ClientData); + +/* - NO DOXYGEN COMMENT GENERATION - + * Callback that will be called when Tecplot Engine has requested an event timer to be created. + * + * @since 12.0.1.5642 + * + * @param ClientData + * ClientData that should be sent in the callback. + * + * @param TimerCallback + * Callback to fire when the timer interval has expired. + * + * @param Interval + * The time (in milliseconds) after which the timer callback should be called. + * + * @param RegistrationClientData + * Client data that was registered via TecEngTimerRegisterCallback. + * + * @return + * Return TRUE if the timer was successfully created, FALSE if not. + */ +typedef Boolean_t (STDCALL *TimerCallback_pf)(AddOnTimerCallback_pf TimerCallback, + ArbParam_t ClientData, + UInt32_t Interval, + ArbParam_t RegistrationClientData); + +/** + * This function is called when the user activates a menu item + * added via TecUtilMenuInsertOption or TecUtilMenuInsertToggle. + * + * @param RegistrationClientData + * Arbitrary client data. + */ +typedef void (STDCALL *MenuActivateCallback_pf)(ArbParam_t RegistrationClientData); + +/** + * This function is called when the a menu is deleted. + * + * @param RegistrationClientData + * Arbitrary client data. + */ +typedef void (STDCALL *MenuDeleteCallback_pf)(ArbParam_t RegistrationClientData); + +/** + * This function is called to determine the sensitivity for a menu item (option, + * toggle or submenu). + * + * @param RegistrationClientData + * Arbitrary client data. + * + * @return + * Return TRUE if the menu item should be sensitive to user input, + * or FALSE if it should be insensitive to user input (gray). + */ +typedef Boolean_t (STDCALL *MenuGetSensitivityCallback_pf)(ArbParam_t RegistrationClientData); + +/** + * This function is called to determine the checked state for a toggle menu item. + * + * @param RegistrationClientData + * Arbitrary client data. + * + * @return + * Return TRUE if the toggle should be checked, + * or FALSE if it should be unchecked. + */ +typedef Boolean_t (STDCALL *MenuGetToggleStateCallback_pf)(ArbParam_t RegistrationClientData); + + +/** + * This function is called when the user performs a probe event. + * + * @param IsNearestPoint + * This is TRUE if the previous probe event was a nearest point probe. + * This is FALSE if it was an interpolated probe. + * + * <FortranSyntax> + * SUBROUTINE MyProbeDestinationCallback( + * IsNearestPoint) + * INTEGER*4 IsNearestPoint + * </FortranSyntax> + */ +typedef void (STDCALL *ProbeDestination_pf)(Boolean_t IsNearestPoint); + + +/** + * This function type called when a probe callback is installed via + * TecUtilProbeInstallCallbackX. + * + * @param WasSuccessful + * This is TRUE if the previous probe event was successful. + * This is FALSE if it was the probe failed. Probe events may fail if the + * user probes in a region of the plot that contains no data. + * + * @param IsNearestPoint + * This is TRUE if the previous probe event was a nearest point probe. + * This is FALSE if it was an interpolated probe. + * + * @param ClientData + * Arbitrary client data. + * + */ +typedef void (STDCALL *ProbeDestinationX_pf)(Boolean_t WasSuccessful, + Boolean_t IsNearestPoint, + ArbParam_t ClientData); + + +/** + * DynamicMenu Functions are called upon a user selecting + * a menu item added via TecUtilMenuAddOption. + * + * <FortranSyntax> + * SUBROUTINE MyDynamicMenuCallback() + * </FortranSyntax> + */ +typedef void (STDCALL *DynamicMenuCallback_pf)(void); + +/** + * This callback signature is used to perform redraw events. + * + * @since + * 11.0-0-363 + * + * @param RedrawReason + * An enumerated value describing the reason for the re-draw event. + * @param ClientData + * Client data that was registered with the callback. + * + * @return + * TRUE if successfull, FALSE otherwise. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION DrawEventCallback( + * & RedrawReason, + * & ClientDataPtr) + * INTEGER*4 RedrawReason + * POINTER (ClientDataPtr,ClientData) + * </FortranSyntax> + * + * @sa TecUtilEventAddPreDrawCallback(), TecUtilEventAddPostDrawCallback() + */ +typedef Boolean_t (STDCALL *DrawEventCallback_pf)(RedrawReason_e RedrawReason, + ArbParam_t ClientData); + + +/** + * Compares two strings from a list string. Note that either string may be NULL + * as StringLists allow for NULL elements. + * + * @param String1 + * String to compare against String2. + * @param String2 + * String to compare against String1. + * @param ClientData + * Contextual information that was passed to the 'StringListSort' function. + * + * @return + * - A value less than zero if String1 is less than String2. + * - A value of zero if String1 is equal to String2. + * - A value greater than zero if String1 is greater than String2. + */ +typedef int (STDCALL *StringListStringComparator_pf)(const char* String1, + const char* String2, + ArbParam_t ClientData); + +/** + * Gets a value at the specified point index using, if necessary, the private + * client data retrieved from the field data handle. + * + * @par Note: + * This callback is called asynchronously. This callback should NOT + * lock/unlock Tecplot. + * + * @since + * 10.0-3-128 + * + * @param FD + * Field data handle for which to set the value. This + * FieldValueGetFunction_pf must have been retrieved from this field data + * handle via TecUtilDataValueRefGetGetFunc. + * + * @param pt + * Zero-based index into the field data. + * + * @return + * Value for that index, always passed as a double precision floating-point + * value regardless of the data type of the field data handle. + * + * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData() + */ +typedef double(STDCALL *FieldValueGetFunction_pf)(const FieldData_pa FD, + LgIndex_t pt); + +/** + * Sets a value at the specified index using the private client data retrieved + * from the field data handle. + * + * @par Note: + * This callback is called asynchronously. This callback should NOT + * lock/unlock Tecplot. + * + * @since + * 10.0-3-128 + * + * @param FD + * Field data handle for which to set the value. This + * FieldValueSetFunction_pf must have been retrieved from this field data + * handle via TecUtilDataValueRefGetSetFunc. + * + * @param pt + * Zero-based index into the field data. + * + * @param val + * New value for that index, always passed as a double precision + * floating-point value regardless of the data type of the field data handle. + * + * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData() + */ +typedef void (STDCALL *FieldValueSetFunction_pf)(FieldData_pa FD, + LgIndex_t pt, + double val); + +/** + * Callback responsible for loading the specified variable for Tecplot using + * the private client data retrieved from the field data handle. + * + * @par Note: + * This callback is called asynchronously. With the exception of calls to + * modify the field data all calls back to Tecplot through the TecUtil layer + * should be limited to queries. + * + * @since + * 11.0-0-001 + * + * @param FieldData + * Field data handle of the variable load. + * + * @result + * TRUE if the variable was loaded, FALSE if unable to do so. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * LgIndex_t NumValues; + * ... other information needed to load variable data + * } MyVariableClientData_s; + * + * Boolean_t STDCALL MyVariableLoader(FieldData_pa FieldData) + * { + * REQUIRE(VALID_REF(FieldData)); + * + * MyVariableClientData_s *MyClientData = (MyVariableClientData_s *)TecUtilDataValueGetClientData(FieldData); + * + * // open the data file + * FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb"); + * Boolean_t IsOk = (MyDataFile != NULL); + * + * // seek to the place in the file where the variable data is located + * IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0); + * if (IsOk) + * { + * // load the data into the variable's field data + * IsOk = ReadMyDataInfoVariable(MyDataFile, MyClientData, FieldData); + * } + * + * // cleanup + * if (MyDataFile != NULL) + * fclose(MyDataFile); + * + * ENSURE(VALID_BOOLEAN(IsOk)); + * return IsOk; + * } + * @endcode + * + * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandVarLoad_pf)(FieldData_pa FieldData); + +/** + * Callback responsible for performing private actions associated with a + * variable being unloaded using the private client data retrieved from the + * field data handle. Whenever possible the callback should honor Tecplot's + * request to unload the variable by returning TRUE. This callback is + * responsible for performing private actions associated with a variable being + * unloaded. + * + * Most add-ons should simply supply NULL for this callback thereby instructing + * Tecplot to handle the unloading (and subsequent reloading) of the variable + * without the intervention of the add-on. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.0-0-001 + * + * @param FieldData + * Field data handle of the variable Tecplot wants to unload. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * LgIndex_t NumValues; + * ... other information needed to load variable data + * } MyVariableClientData_s; + * + * Boolean_t STDCALL MyVariableUnload(FieldData_pa FieldData) + * { + * REQUIRE(VALID_REF(FieldData)); + * + * // We don't have any private data to cleanup (i.e in addition to the + * // private client data which we don't cleanup here) so all we have to do + * // is return TRUE or FALSE letting Tecplot know that it can or can not + * // unload the variable. + * Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the variable + * + * ENSURE(VALID_BOOLEAN(Result)); + * return Result; + * } + * @endcode + * + * @result + * TRUE if the variable can be unloaded, FALSE otherwise. The add-on should + * if at all possible honor the request to unload the variable. Most add-ons + * should return TRUE. + * + * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandVarUnload_pf)(FieldData_pa FieldData); + +/** + * Callback responsible for performing private actions associated with a + * variable being cleaned up using the private client data retrieved from the + * field data handle. Most add-ons will need to register this callback in order + * to cleanup privately allocated client data. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.0-0-001 + * + * @param FieldData + * Field data handle of the variable being cleaned up. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * LgIndex_t NumValues; + * ... other information needed to load variable data + * } MyVariableClientData_s; + * + * void STDCALL MyVariableCleanup(FieldData_pa FieldData) + * { + * REQUIRE(VALID_REF(FieldData)); + * + * MyVariableClientData_s *MyClientData = (MyVariableClientData_s *)TecUtilDataValueGetClientData(FieldData); + * + * // cleanup privately allocated resources + * free(MyClientData->DataFileName); + * free(MyClientData); + * } + * @endcode + * + * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData() + */ +typedef void (STDCALL *LoadOnDemandVarCleanup_pf)(FieldData_pa FieldData); + +/** + * Callback responsible for loading the specified node mapping for Tecplot + * using the private client data retrieved from the node mapping handle. + * + * @par Note: + * This callback is called asynchronously. With the exception of calls to + * modify the node mapping, all calls back to Tecplot through the TecUtil + * layer should be limited to queries. + * + * @since + * 11.3-0-010 + * + * @param NodeMap + * Handle of the node mapping. + * + * @result + * TRUE if the node mapping was loaded, FALSE if unable to do so. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * ... other information needed to load node map data + * } MyNodeMapClientData_s; + * + * Boolean_t STDCALL MyNodeMapLoader(NodeMap_pa NodeMap) + * { + * REQUIRE(VALID_REF(NodeMap)); + * + * MyNodeMapClientData_s *MyClientData = + * (MyNodeMapClientData_s *)TecUtilDataNodeGetClientData(NodeMap); + * + * // open the data file + * FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb"); + * Boolean_t IsOk = (MyDataFile != NULL); + * + * // seek to the place in the file where the node map data is located + * IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0); + * if (IsOk) + * { + * // load the data into the zone's node map + * IsOk = ReadMyNodeMapDataIntoZone(MyDataFile, MyClientData, NodeMap); + * } + * + * // cleanup + * if (MyDataFile != NULL) + * fclose(MyDataFile); + * + * ENSURE(VALID_BOOLEAN(IsOk)); + * return IsOk; + * } + * @endcode + * + * @sa TecUtilDataNodeCustomLOD(), TecUtilDataNodeGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandNodeMapLoad_pf)(NodeMap_pa NodeMap); + +/** + * Callback responsible for performing private actions associated with a + * node mapping being unloaded using the private client data retrieved from the + * node mapping handle. Whenever possible the callback should honor Tecplot's + * request to unload the node mapping by returning TRUE. + * + * Most add-ons should simply supply NULL for this callback thereby instructing + * Tecplot to handle the unloading (and subsequent reloading) of the node mapping + * without the intervention of the add-on. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.3-0-010 + * + * @param NodeMap + * Node mapping handle of the node mapping Tecplot wants to unload. + * + * @code + * Boolean_t STDCALL MyNodeMapUnload(NodeMap_pa NodeMap) + * { + * REQUIRE(VALID_REF(NodeMap)); + * + * // We don't have any private data to cleanup (i.e in addition to the + * // private client data which we don't cleanup here) so all we have to do + * // is return TRUE or FALSE letting Tecplot know that it can or can not + * // unload the variable. + * Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the node mapping + * + * ENSURE(VALID_BOOLEAN(Result)); + * return Result; + * } + * @endcode + * + * @result + * TRUE if the node mapping can be unloaded, FALSE otherwise. The add-on should + * if at all possible honor the request to unload the node mapping. Most add-ons + * should return TRUE. + * + * @sa TecUtilDataNodeCustomLOD(), TecUtilDataNodeGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandNodeMapUnload_pf)(NodeMap_pa NodeMap); + +/** + * Callback responsible for performing private actions associated with a + * node mapping being cleaned up using the private client data retrieved from the + * node mapping handle. Most add-ons will need to register this callback in order + * to cleanup privately allocated client data. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.3-0-010 + * + * @param NodeMap + * Node Mapping data handle of the node mapping being cleaned up. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * ... other information needed to load node map data + * } MyNodeMapClientData_s; + * + * void STDCALL MyNodeMapCleanup(NodeMap_pa NodeMap) + * { + * REQUIRE(VALID_REF(NodeMap)); + * + * MyNodeMapClientData_s *MyClientData = (MyNodeMapClientData_s *)TecUtilDataNodeGetClientData(NodeMap); + * + * // cleanup privately allocated resources + * free(MyClientData->DataFileName); + * free(MyClientData); + * } + * @endcode + * + * @sa TecUtilDataNodeCustomLOD(), TecUtilDataNodeGetClientData() + */ +typedef void (STDCALL *LoadOnDemandNodeMapCleanup_pf)(NodeMap_pa NodeMap); + +/** + * Callback responsible for loading the specified face neighbor for Tecplot + * using the private client data retrieved from the face neighbor handle. + * + * @par Note: + * This callback is called asynchronously. With the exception of calls to + * modify the face neighbors, all calls back to Tecplot through the TecUtil + * layer should be limited to queries. + * + * @since + * 11.3-0-010 + * + * @param FaceNeighbor + * Handle of the face neighbors. + * + * @result + * TRUE if the face neighbors was loaded, FALSE if unable to do so. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * ...other information needed to load face neighbor data + * } MyFaceNeighborClientData_s; + * + * Boolean_t STDCALL MyFaceNeighborLoader(FaceNeighbor_pa FaceNeighbor) + * { + * REQUIRE(VALID_REF(FaceNeighbor)); + * + * MyFaceNeighborClientData_s *MyClientData = + * (MyFaceNeighborClientData_s*)TecUtilDataFaceNbrGetClientData(FaceNeighbor); + * + * // open the data file + * FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb"); + * Boolean_t IsOk = (MyDataFile != NULL); + * + * // seek to the place in the file where the face neighbor data is located + * IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0); + * if (IsOk) + * { + * // load the data into the zone's face neighbor + * IsOk = ReadMyFaceNeighborDataIntoZone(MyDataFile, MyClientData, FaceNeighbor); + * } + * + * // cleanup + * if (MyDataFile != NULL) + * fclose(MyDataFile); + * + * ENSURE(VALID_BOOLEAN(IsOk)); + * return IsOk; + * } + * @endcode + * + * @sa TecUtilDataFaceNbrCustomLOD(), TecUtilDataFaceNbrGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandFaceNeighborLoad_pf)(FaceNeighbor_pa FaceNeighbor); + +/** + * Callback responsible for performing private actions associated with a + * face neighbors being unloaded using the private client data retrieved from + * the face neighbor handle. Whenever possible the callback should honor + * Tecplot's request to unload the face neighbors by returning TRUE. + * + * Most add-ons should simply supply NULL for this callback thereby instructing + * Tecplot to handle the unloading (and subsequent reloading) of the face + * neighbors without the intervention of the add-on. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.3-0-010 + * + * @param FaceNeighbor + * Face neighbor handle of the face neighbors Tecplot wants to unload. + * + * @code + * Boolean_t STDCALL MyFaceNeighborUnload(FaceNeighbor_pa FaceNeighbor) + * { + * REQUIRE(VALID_REF(FaceNeighbor)); + * + * // We don't have any private data to cleanup (i.e in addition to the + * // private client data which we don't cleanup here) so all we have to do + * // is return TRUE or FALSE letting Tecplot know that it can or can not + * // unload the variable. + * Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the face neighbors + * + * ENSURE(VALID_BOOLEAN(Result)); + * return Result; + * } + * @endcode + * + * @result + * TRUE if the face neighbors can be unloaded, FALSE otherwise. The add-on + * should if at all possible honor the request to unload the face neighbors. + * Most add-ons should return TRUE. + * + * @sa TecUtilDataFaceNbrCustomLOD(), TecUtilDataFaceNbrGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandFaceNeighborUnload_pf)(FaceNeighbor_pa FaceNeighbor); + +/** + * Callback responsible for performing private actions associated with a face + * neighbors being cleaned up using the private client data retrieved from the + * face neighbor handle. Most add-ons will need to register this callback in + * order to cleanup privately allocated client data. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.3-0-010 + * + * @param FaceNeighbor + * Face neighbor data handle of the Face neighbors being cleaned up. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * ... other information needed to load face neighbor data + * } MyFaceNeighborClientData_s; + * + * void STDCALL MyFaceNeighborCleanup(FaceNeighbor_pa FaceNeighbor) + * { + * REQUIRE(VALID_REF(FaceNeighbor)); + * + * MyFaceNeighborClientData_s *MyClientData = (MyFaceNeighborClientData_s *)TecUtilDataFaceNbrGetClientData(FaceNeighbor); + * + * // cleanup privately allocated resources + * free(MyClientData->DataFileName); + * free(MyClientData); + * } + * @endcode + * + * @sa TecUtilDataFaceNbrCustomLOD(), TecUtilDataFaceNbrGetClientData() + */ +typedef void (STDCALL *LoadOnDemandFaceNeighborCleanup_pf)(FaceNeighbor_pa FaceNeighbor); + +/** + * Callback responsible for loading the specified face mapping for Tecplot + * using the private client data retrieved from the face mapping handle. + * + * @par Note: + * This callback is called asynchronously. With the exception of calls to + * modify the face mapping, all calls back to Tecplot through the TecUtil + * layer should be limited to queries. + * + * @since + * 11.2-1-0 + * + * @param FaceMap + * Handle of the face mapping. + * + * @result + * TRUE if the face mapping was loaded, FALSE if unable to do so. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * ... other information needed to load face map data + * } MyFaceMapClientData_s; + * + * Boolean_t STDCALL MyFaceMapLoader(FaceMap_pa FaceMap) + * { + * REQUIRE(VALID_REF(FaceMap)); + * + * MyFaceMapClientData_s *MyClientData = + * (MyFaceMapClientData_s *)TecUtilDataFaceMapGetClientData(FaceMap); + * + * // open the data file + * FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb"); + * Boolean_t IsOk = (MyDataFile != NULL); + * + * // seek to the place in the file where the face map data is located + * IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0); + * if (IsOk) + * { + * // load the data into the zone's face map + * IsOk = ReadMyFaceMapDataIntoZone(MyDataFile, MyClientData, FaceMap); + * } + * + * // cleanup + * if (MyDataFile != NULL) + * fclose(MyDataFile); + * + * ENSURE(VALID_BOOLEAN(IsOk)); + * return IsOk; + * } + * @endcode + * + * @sa TecUtilDataFaceMapCustomLOD(), TecUtilDataFaceMapGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandFaceMapLoad_pf)(FaceMap_pa FaceMap); + +/** + * Callback responsible for performing private actions associated with a + * face mapping being unloaded using the private client data retrieved from the + * face mapping handle. Whenever possible the callback should honor Tecplot's + * request to unload the face mapping by returning TRUE. + * + * Most add-ons should simply supply NULL for this callback thereby instructing + * Tecplot to handle the unloading (and subsequent reloading) of the face mapping + * without the intervention of the add-on. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.2-1-0 + * + * @param FaceMap + * Face mapping handle of the face mapping Tecplot wants to unload. + * + * @code + * Boolean_t STDCALL MyFaceMapUnload(FaceMap_pa FaceMap) + * { + * REQUIRE(VALID_REF(FaceMap)); + * + * // We don't have any private data to cleanup (i.e in addition to the + * // private client data which we don't cleanup here) so all we have to do + * // is return TRUE or FALSE letting Tecplot know that it can or can not + * // unload the variable. + * Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the face mapping + * + * ENSURE(VALID_BOOLEAN(Result)); + * return Result; + * } + * @endcode + * + * @result + * TRUE if the face mapping can be unloaded, FALSE otherwise. The add-on should + * if at all possible honor the request to unload the face mapping. Most add-ons + * should return TRUE. + * + * @sa TecUtilDataFaceMapCustomLOD(), TecUtilDataFaceMapGetClientData() + */ +typedef Boolean_t (STDCALL *LoadOnDemandFaceMapUnload_pf)(FaceMap_pa FaceMap); + +/** + * Callback responsible for performing private actions associated with a + * face mapping being cleaned up using the private client data retrieved from the + * face mapping handle. Most add-ons will need to register this callback in order + * to cleanup privately allocated client data. + * + * @par Note: + * This callback is called asynchronously. All calls back to Tecplot through + * the TecUtil layer should be limited to queries. + * + * @since + * 11.2-1-0 + * + * @param FaceMap + * Face Mapping data handle of the face mapping being cleaned up. + * + * @code + * typedef struct + * { + * char *DataFileName; + * long SeekOffset; + * ... other information needed to load face map data + * } MyFaceMapClientData_s; + * + * void STDCALL MyFaceMapCleanup(FaceMap_pa FaceMap) + * { + * REQUIRE(VALID_REF(FaceMap)); + * + * MyFaceMapClientData_s *MyClientData = (MyFaceMapClientData_s *)TecUtilDataFaceMapGetClientData(FaceMap); + * + * // cleanup privately allocated resources + * free(MyClientData->DataFileName); + * free(MyClientData); + * } + * @endcode + * + * @sa TecUtilDataFaceMapCustomLOD(), TecUtilDataFaceMapGetClientData() + */ +typedef void (STDCALL *LoadOnDemandFaceMapCleanup_pf)(FaceMap_pa FaceMap); + + +/** + * ExtractDestination functions are called upon successful completion of an + * extract polyline or extract discrete points operation. + * + * @param NumPts + * Number of points extracted. + * + * @param XValues + * Double precision array of X-Coordinates of the extracted polyline. + * + * @param YValues + * Double precision array of Y-Coordinates of the extracted polyline. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyExtractDestinationCallback( + * & NumPts, + * & XValues, + * & YValues) + * INTEGER*4 NumPts + * REAL*8 XValues + * REAL*8 YValues + * </FortranSyntax> + */ +typedef void (STDCALL *ExtractDestination_pf)(LgIndex_t NumPts, + double* XValues, + double* YValues); + + + +/** + * SelectFileOptionsCallback Functions are called when the + * "Options" button is pressed in the modal file selection + * dialog. + * + * <FortranSyntax> + * SUBROUTINE MySelectFileOptionsCallback() + * </FortranSyntax> + */ +typedef void (STDCALL *SelectFileOptionsCallback_pf)(void); + + + + +/** + * Post data load instruction callback for "Converter-Plus" addons. + * + * @param PreviousInstructions + * The previous set of instructions used by the converter. + * + * @param PreviousRawData + * The previous raw data associated with the instructions. + * + * @param PreviousZones + * Set of zones loaded with the previous instructions. + * + * <FortranSyntax> + * SUBROUTINE MyConverterPostReadCallback( + * & PreviousInstructions, + * & PreviousRawData, + * & PreviousZones) + * CHARACTER*(*) CommandString + * CHARACTER*(*) ErrMsgString + * POINTER (PreviousZones,DummyPreviousZonesData) + * </FortranSyntax> + * + */ +typedef void (STDCALL *ConverterPostReadCallback_pf)(const char* PreviousInstructions, + const char* PreviousRawData, + const Set_pa PreviousZones); + + +/** + * Callback registered by your addon to convert a foreign datafile into a + * Tecplot Binary datafile format. + * + * @return + * Return TRUE if the conversion is successful. Otherwise return FALSE. + * If FALSE is returned then *MessageString is assumed to contain an error + * message. + * + * @param DataFName + * Name of the original foreign data file to be converted. + * + * @param TempBinFName + * Name of the temporary binary datafile that is created (by your converter). + * + * @param MessageString + * Reference to a string. If an error occurs during conversion allocate space + * for an error message and copy the message string into that allocated + * space otherwise be sure to assign *MessageString to NULL. If + * *MessageString is non NULL Tecplot will release the allocated memory when + * finished. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyDataSetConverterCallback( + * & DataFName, + * & TempBinFName, + * & MessageString) + * CHARACTER*(*) DataFName + * CHARACTER*(*) TempBinFName + * CHARACTER*(*) MessageString + * </FortranSyntax> + * + */ +typedef Boolean_t (STDCALL *DataSetConverter_pf)(char* DataFName, + char* TempBinFName, + TP_GIVES char** MessageString); + + + + + + + +/** + * Callback registered by your addon to process foreign loader instructions. + * When called, it must parse the supplied instructions and load the data into Tecplot. + * + * @return + * Return TRUE if the data is loaded successfully. Otherwise, FALSE. + * + * @param Instructions + * This contains all of the instructions needed to load the data. + * + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyDataSetLoaderCallback( + * & Instructions) + * POINTER (Instructions,DummyInstructionsData) + * </FortranSyntax> + */ +typedef Boolean_t (STDCALL *DataSetLoader_pf)(StringList_pa Instructions); + + + + + +/** + * Callback used to provide the ability to override data loader instructions + * while processing a layout. + * + * @return + * Return TRUE if the instructions are successfully replaced or left alone. + * Return FALSE if the user cancels the operation. + * + * @param Instructions + * The original instructions needed to load the data. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyDataSetLoaderInstOverCallback( + * & Instructions) + * POINTER (Instructions,DummyInstructionsData) + * </FortranSyntax> + * + */ +typedef Boolean_t (STDCALL *DataSetLoaderInstructionOverride_pf)(StringList_pa Instructions); + + + +/** + * Callback used to assign extended curve settings. + * This is called when the user presses the "Curve Settings" + * button in the mapping style dialog. + * + * @param LineMapSet + * Set of line maps currently selected. + * @param SelectedLineMapSettings + * A string list of the curve settings for the Line-maps that are selected in the + * Line mappings dialog. + * + * <FortranSyntax> + * SUBROUTINE MyGetCurveSettingsCallback( + * & LineMapSet, + * & SelectedLineMapSettings) + * POINTER (LineMapSet,DummyLineMapData) + * POINTER (SelectedLineMapSettings,DummyLineMapSettings) + * </FortranSyntax> + */ +typedef void (STDCALL *GetCurveSettingsCallback_pf)(Set_pa LineMapSet, + StringList_pa SelectedLineMapSettings); + + + + +/** + * Callback function that returns an abbreviated version of the curve settings + * for a particular Line Map for display in the Line Mappings dialog. + * + * @param LineMap + * The map number that is currently being operated on. + * @param CurveSettings + * The string that Tecplot maintains which contains the extended curve fit + * settings for the current Line-map. This argument may be NULL indicating + * that defaults should be used. + * @param AbbreviatedSettings + * The short form of the CurveSettings that is allocated and returned from + * your function and used by Tecplot. This must be allocated by the addon + * using TecUtilStringAlloc(). + * + * <FortranSyntax> + * SUBROUTINE MyGetAbrevSettingsStringCallback( + * & LineMap, + * & CurveSettings, + * & AbbreviatedSettings), + * INTEGER*4 LineMap + * CHARACTER*(*) CurveSettings + * CHARACTER*(*) AbbreviatedSettings + * </FortranSyntax> + */ +typedef void (STDCALL *GetAbbreviatedSettingsStringCallback_pf)(EntIndex_t LineMap, + char* CurveSettings, + TP_GIVES char** AbbreviatedSettings); + + + + +/** + * This function returns a string (CurveInfoString) for Tecplot to display + * information about a particular curve in the curve info dialog. + * + * @param RawIndV + * The handle to the raw field data of the independent variable. + * @param RawDepV + * The handle to the raw field data of the dependent variable. + * @param IndVCoordScale + * An enumerated variable whose values are Scale_linear when the independent variable + * axis has a linear scale and Scale_log when it has a log scale. + * @param DepVCoordScale + * An enumerated variable whose values are Scale_linear when the dependent variable axis + * has a linear scale and Scale_log when it has a log scale. + * @param NumRawPts + * number of raw field data values. + * @param LineMap + * The map number that is currently being operated on. + * @param CurveSettings + * The curve settings string for the current Line-map. This argument may be + * NULL indicating that defaults should be used. + * @param CurveInfoString + * The string that is allocated and returned by your function and be + * presented in the Data/XY-Plot Curve Info dialog. The CurveInfoString must + * be allocated by the addon using TecUtilStringAlloc(). + * + * @return + * Return TRUE if the curve info string can be generated, otherwise FALSE. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyGetCurveInfoStringCallback( + * & RawIndV, + * & RawDepV, + * & IndVCoordScale, + * & DepVCoordScale, + * & NumRawPts, + * & LineMap, + * & CurveSettings, + * & CurveInfoString) + * POINTER (RawIndV,DummyRawIndVData) + * POINTER (RawDepV,DummyRawDepVData) + * INTEGER*4 IndVCoordScale + * INTEGER*4 DepVCoordScale + * INTEGER*4 NumRawPts + * INTEGER*4 LineMap + * CHARACTER*(*) CurveSettings + * CHARACTER*(*) CurveInfoString + * </FortranSyntax> + */ +typedef Boolean_t (STDCALL *GetCurveInfoStringCallback_pf)(FieldData_pa RawIndV, + FieldData_pa RawDepV, + CoordScale_e IndVCoordScale, + CoordScale_e DepVCoordScale, + LgIndex_t NumRawPts, + EntIndex_t LineMap, + char* CurveSettings, + TP_GIVES char** CurveInfoString); + +/** + * Callback function used to calculate data points for an extended curve fit. + * + * @return + * Return TRUE if the curve can be calculated, otherwise FALSE. + * + * @param RawIndV + * The handle to the raw field data of the independent variable. + * @param RawDepV + * The handle to the raw field data of the dependent variable. + * @param IndVCoordScale + * An enumerated variable whose values are Scale_linear when the independent variable + * axis has a linear scale and Scale_log when it has a log scale. + * @param DepVCoordScale + * An enumerated variable whose values are Scale_linear when the dependent variable axis + * has a linear scale and Scale_log when it has a log scale. + * @param NumRawPts + * number of raw field data values. + * @param NumCurvePts + * The number of points that will construct the curve fit. + * @param LineMap + * The line map to operated on. + * @param CurveSettings + * The curve settings string for the current Line-map. This argument may be + * NULL indicating that defaults should be used. + * @param IndCurveValues + * A pre-allocated array of size NumCurvePts which the addon will populate with + * the independent values for the curve fit + * @param DepCurveValues. + * A pre-allocated array of size NumCurvePts which the add-on will populate + * with the dependent values for the curve fit. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyGetLinePlotDataPointsCallback( + * & RawIndV, + * & RawDepV, + * & IndVCoordScale, + * & DepVCoordScale, + * & NumRawPts, + * & NumCurvePts, + * & LineMap, + * & CurveSettings, + * & IndCurveValues, + * & DepCurveValues) + * POINTER (RawIndV,DummyRawIndVData) + * POINTER (RawDepV,DummyRawDepVData) + * INTEGER*4 IndVCoordScale + * INTEGER*4 DepVCoordScale + * INTEGER*4 NumRawPts + * INTEGER*4 NumCurvePts + * INTEGER*4 LineMap + * CHARACTER*(*) CurveSettings + * REAL*8 IndCurveValues() + * REAL*8 DepCurveValues() + * </FortranSyntax> + */ +typedef Boolean_t (STDCALL *GetLinePlotDataPointsCallback_pf)(FieldData_pa RawIndV, + FieldData_pa RawDepV, + CoordScale_e IndVCoordScale, + CoordScale_e DepVCoordScale, + LgIndex_t NumRawPts, + LgIndex_t NumCurvePts, + EntIndex_t LineMap, + char* CurveSettings, + TP_OUT double* IndCurveValues, + TP_OUT double* DepCurveValues); +#if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY +/** + * @deprecated + * Please use \ref GetLinePlotDataPointsCallback_pf instead. + */ +typedef GetLinePlotDataPointsCallback_pf GetXYDataPointsCallback_pf; +#endif + + + + +/** + * A Callback function used to obtain an interpolated dependent value for an + * extended curve fit given an independent value. + * + * @return + * Return TRUE if it is possible to obtain the interpolated value, otherwise FALSE. + * + * @param RawIndV + * handle to the raw field data of the independent variable. + * @param RawDepV + * The handle to the raw field data of the dependent variable. + * @param IndVCoordScale + * An enumerated variable whose values are Scale_linear when the independent variable + * axis has a linear scale and Scale_log when it has a log scale. + * @param DepVCoordScale + * An enumerated variable whose values are Scale_linear when the dependent variable axis + * has a linear scale and Scale_log when it has a log scale. + * @param NumRawPts + * The number of field data values. + * @param NumCurvePts + * The number of points used to construct the curve fit. + * @param LineMapNum + * The line map number currently being operated on. + * @param CurveSettings + * The curve settings string for the current Line-map. This argument may be + * NULL indicating that defaults should be used. + * @param ProbeIndValue + * The independent value location of the probe (supplied). + * @param ProbeDepValue + * Reference to the calculated dependent value location of the probe. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyGetProbeValueCallback( + * & RawIndV, + * & RawDepV, + * & IndVCoordScale, + * & DepVCoordScale, + * & NumRawPts, + * & NumCurvePts, + * & LineMapNum, + * & CurveSettings, + * & CurveInfoString, + * & ProbeIndValue, + * & ProbeDepValue) + * POINTER (RawIndV,DummyRawIndVData) + * POINTER (RawDepV,DummyRawDepVData) + * INTEGER*4 IndVCoordScale + * INTEGER*4 DepVCoordScale + * INTEGER*4 NumRawPts + * INTEGER*4 NumCurvePts + * INTEGER*4 LineMapNum + * CHARACTER*(*) CurveSettings + * REAL*8 ProbeIndValue + * REAL*8 ProbeDepValue + * </FortranSyntax> + * + */ +typedef Boolean_t (STDCALL *GetProbeValueCallback_pf)(FieldData_pa RawIndV, + FieldData_pa RawDepV, + CoordScale_e IndVCoordScale, + CoordScale_e DepVCoordScale, + LgIndex_t NumRawPts, + LgIndex_t NumCurvePts, + EntIndex_t LineMapNum, + char* CurveSettings, + double ProbeIndValue, + TP_OUT double* ProbeDepValue); + + + +#if defined MSWIN +typedef Boolean_t (STDCALL *PreTranslateMessage_pf)(MSG *pMsg); +#endif + + +/** + * Callback function pointer for providing a Dynamic Axis labels. + * @since + * 10.0-6-015 + * @param Value + * Value that corresponds to a tick label that will be drwan. + * + * @param ClientData + * Convenience storage of user client data. + * + * @param LabelString + * Output label for the tick mark. + * This must be allocated by the addon using TecUtilStringAlloc(). + * + * @return + * Returns TRUE if the LabelString has been successfully allocated. + * Otherwise, FALSE is returned. + */ +typedef Boolean_t (STDCALL *DynamicLabelCallback_pf)(double Value, + ArbParam_t ClientData, + TP_GIVES char** LabelString); + +/** + * This is called when Tecplot is idle. + * + * @par Note: + * Tecplot is never idle when running in batch mode (with the -b flag). + * + * @param ClientData + * Arbitrary client data. + * + * <FortranSyntax> + * INTEGER*4 FUNCTION MyOnIdleCallback( + * & ClientDataPtr) + * POINTER (ClientDataPtr,DummyClientData) + * </FortranSyntax> + * + */ +typedef void (STDCALL *OnIdleCallback_pf)(ArbParam_t ClientData); + +/** + * Callback responsible for executing the specified script file. + * + * @since + * 11.0-2-005 + * + * @param ScriptFileName + * Relative or absolute file name of the script to execute. If the path + * is relative it is relative to the current working directory. + * @param ClientData + * Client data registered with the callback. + * + * @return + * TRUE if the script executed successfully, FALSE otherwise. + * + * @sa TecUtilScriptExecRegisterCallback + */ +typedef Boolean_t (STDCALL *ScriptExecCallback_pf)(const char *ScriptFileName, + ArbParam_t ClientData); + +/* BEGINREMOVEFROMADDON */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if 0 /* NOTUSED */ +#endif +#if !defined NO_ASSERTS +#endif +#if defined MSWIN +#endif /* MSWIN */ +#if !defined (MSWIN) +#endif +#if defined Q_MAINMODULE +#else +#endif +#if 0 /* NOTUSED */ +#endif +#endif /* TECPLOTKERNEL */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + + +/* ENDREMOVEFROMADDON */ +struct _ViewState_a; +typedef struct _ViewState_a *SavedView_pa, *ViewState_pa; + + +#endif /* _GLOBAL_H */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/INPUT.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/INPUT.h new file mode 100644 index 00000000000..d778ee59846 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/INPUT.h @@ -0,0 +1,196 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ +#if defined EXTERN +#undef EXTERN +#endif +#if defined INITMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +/* Input Specification limits */ + +/* General */ +EXTERN InputSpec_s /*X*/ GridCoordInputSpec; +EXTERN InputSpec_s /*X*/ GridCoordFloatInputSpec; +EXTERN InputSpec_s /*X*/ XFrameCoordInputSpec; +EXTERN InputSpec_s /*X*/ YFrameCoordInputSpec; +EXTERN InputSpec_s /*X*/ XFrameCoordFloatInputSpec; +EXTERN InputSpec_s /*X*/ YFrameCoordFloatInputSpec; +EXTERN InputSpec_s /*X*/ XFrameCoordDeltaInputSpec; +EXTERN InputSpec_s /*X*/ YFrameCoordDeltaInputSpec; +EXTERN InputSpec_s /*X*/ XFrameCoordFloatDeltaInputSpec; +EXTERN InputSpec_s /*X*/ YFrameCoordFloatDeltaInputSpec; +EXTERN InputSpec_s /*X*/ FrameOffsetCoordInputSpec; +EXTERN InputSpec_s /*X*/ XPaperCoordInputSpec; +EXTERN InputSpec_s /*X*/ YPaperCoordInputSpec; +EXTERN InputSpec_s /*X*/ AxisPercentageInputSpec; +EXTERN InputSpec_s /*X*/ AngleInputSpec; +EXTERN InputSpec_s /*X*/ AngleToApproxInputSpec; +EXTERN InputSpec_s /*X*/ FieldOfViewInputSpec; +EXTERN InputSpec_s /*X*/ ZeroAndAboveLgIndexInputSpec; +EXTERN InputSpec_s /*X*/ ZeroAndAboveSmIntegerInputSpec; +EXTERN InputSpec_s /*X*/ ZeroAndAboveDoubleInputSpec; +EXTERN InputSpec_s /*X*/ AboveZeroLgIndexInputSpec; +EXTERN InputSpec_s /*X*/ AboveZeroDoubleInputSpec; +EXTERN InputSpec_s /*X*/ DoubleInputSpec; +EXTERN InputSpec_s /*X*/ EntIndexInputSpec; +EXTERN InputSpec_s /*X*/ EntRangeInputSpec; +EXTERN InputSpec_s /*X*/ IndexRangeInputSpec; +EXTERN InputSpec_s /*X*/ AboveZeroIndexRangeInputSpec; +EXTERN InputSpec_s /*X*/ ZeroToOneInputSpec; +EXTERN InputSpec_s /*X*/ PercentageInputSpec; +EXTERN InputSpec_s /*X*/ AboveZeroPercentageInputSpec; +EXTERN InputSpec_s /*X*/ SignedPercentageInputSpec; +EXTERN InputSpec_s /*X*/ RadiansInputSpec; +EXTERN InputSpec_s /*X*/ AboveZeroRadiansInputSpec; +EXTERN InputSpec_s /*X*/ TimeDateDoubleInputSpec; +EXTERN InputSpec_s /*X*/ AboveZeroTimeDateDoubleInputSpec; +EXTERN InputSpec_s /*X*/ AboveZeroElapsedTimeInputSpec; + + +/* Specific */ +#define MIN_VIEWPORT_SIZE 0.05 +EXTERN InputSpec_s /*X*/ SurfaceTranslucencyInputSpec; +EXTERN InputSpec_s /*X*/ MaxDepthBufferSizeInputSpec; +EXTERN InputSpec_s /*X*/ MaxMultiSamplesInputSpec; +EXTERN InputSpec_s /*X*/ MinBitsPerRGBPlaneInputSpec; +EXTERN InputSpec_s /*X*/ AnimationSpeedInputSpec; +EXTERN InputSpec_s /*X*/ AnimationNumStepsInputSpec; +EXTERN InputSpec_s /*X*/ MaxCustomColorsInInterfaceInputSpec; +EXTERN InputSpec_s /*X*/ MaxReducedPointsInputSpec; +EXTERN InputSpec_s /*X*/ MaxStripLengthInputSpec; +EXTERN InputSpec_s /*X*/ MaxPrimativesPerBlockInputSpec; +EXTERN InputSpec_s /*X*/ MaxTextureSizeInputSpec; +EXTERN InputSpec_s /*X*/ SuperSampleFactorInputSpec; +EXTERN InputSpec_s /*X*/ TickLengthInputSpec; +EXTERN InputSpec_s /*X*/ BorrowLicenseInputSpec; + + + + +/* I/O Related */ +EXTERN InputSpec_s /*X*/ HardcopyPaperSizeInputSpec; +EXTERN InputSpec_s /*X*/ HardcopyNumCopiesInputSpec; +EXTERN InputSpec_s /*X*/ HardcopyPrecisionInputSpec; +EXTERN InputSpec_s /*X*/ HardcopyPenSpeedInputSpec; +EXTERN InputSpec_s /*X*/ PenPlotterPenNumberInputSpec; +EXTERN InputSpec_s /*X*/ BitDumpDepthInputSpec; + + +/* Widths, physical lengths, etc. */ +EXTERN InputSpec_s /*X*/ XFrameDimensionInputSpec; +EXTERN InputSpec_s /*X*/ YFrameDimensionInputSpec; +EXTERN InputSpec_s /*X*/ LineThicknessInputSpec; +EXTERN InputSpec_s /*X*/ PatternLengthInputSpec; +EXTERN InputSpec_s /*X*/ AxisPercentageTextSizeInputSpec; +EXTERN InputSpec_s /*X*/ FrameTextSizeInputSpec; +EXTERN InputSpec_s /*X*/ GridTextSizeInputSpec; +EXTERN InputSpec_s /*X*/ PointTextSizeInputSpec; +EXTERN InputSpec_s /*X*/ TextBoxMarginInputSpec; +EXTERN InputSpec_s /*X*/ TextLineSpacingInputSpec; +EXTERN InputSpec_s /*X*/ ArrowheadSizeInputSpec; +EXTERN InputSpec_s /*X*/ AxisLabelOffsetInputSpec; +EXTERN InputSpec_s /*X*/ LegendLineSpacingInputSpec; +EXTERN InputSpec_s /*X*/ StreamStepSizeInputSpec; +EXTERN InputSpec_s /*X*/ StreamMaxStepsInputSpec; +EXTERN InputSpec_s /*X*/ ArrowheadSpacingInputSpec; +EXTERN InputSpec_s /*X*/ RulerPaddingInputSpec; +EXTERN InputSpec_s /*X*/ RulerThicknessInputSpec; +EXTERN InputSpec_s /*X*/ PickHandleWidthInputSpec; +EXTERN InputSpec_s /*X*/ ImageDimensionInputSpec; +EXTERN InputSpec_s /*X*/ ZoomScalePerFrameUnitInputSpec; +EXTERN InputSpec_s /*X*/ RGBLegendHeightInputSpec; + + + +/* Limit the number of objects or limit which object can be selected*/ +EXTERN InputSpec_s /*X*/ ColorMapGroupInputSpec; +EXTERN InputSpec_s /*X*/ SliceGroupInputSpec; +EXTERN InputSpec_s /*X*/ IsoSurfaceGroupInputSpec; +EXTERN InputSpec_s /*X*/ ContourGroupInputSpec; +EXTERN InputSpec_s /*X*/ ColorIndexInputSpec; +EXTERN InputSpec_s /*X*/ NumLightSourceShadesInputSpec; +EXTERN InputSpec_s /*X*/ NumberOfControlPointsInputSpec; +EXTERN InputSpec_s /*X*/ CustomLabelNumberInputSpec; +EXTERN InputSpec_s /*X*/ NumMinorTicksInputSpec; +EXTERN InputSpec_s /*X*/ AxisEdgeNumberInputSpec; +EXTERN InputSpec_s /*X*/ LineMapWhichXAxisInputSpec; +EXTERN InputSpec_s /*X*/ LineMapWhichYAxisInputSpec; +EXTERN InputSpec_s /*X*/ NumberOfCurvePointsInputSpec; +EXTERN InputSpec_s /*X*/ NumberOfContourLevelsInputSpec; +EXTERN InputSpec_s /*X*/ ColorMapOverrideLevelInputSpec; +EXTERN InputSpec_s /*X*/ ColorMapOverrideNumberInputSpec; +EXTERN InputSpec_s /*X*/ NumberOfColorMapCyclesInputSpec; +EXTERN InputSpec_s /*X*/ NumberOfRodPointsInputSpec; +EXTERN InputSpec_s /*X*/ NumberOfStreamtracesInputSpec; +EXTERN InputSpec_s /*X*/ NumberOfEllipsePointsInputSpec; +EXTERN InputSpec_s /*X*/ MaxPtsInALineInputSpec; +EXTERN InputSpec_s /*X*/ MaxChrsTextLabelsInputSpec; +EXTERN InputSpec_s /*X*/ MaxContourLevelsInputSpec; +EXTERN InputSpec_s /*X*/ MaxLinkGroupsInputSpec; + + +/* Ratios */ +EXTERN InputSpec_s /*X*/ DataAspectRatioLimitInputSpec; +EXTERN InputSpec_s /*X*/ DataAspectRatioResetInputSpec; +EXTERN InputSpec_s /*X*/ AxisBoxAspectRatioLimitInputSpec; +EXTERN InputSpec_s /*X*/ AxisBoxAspectRatioResetInputSpec; +EXTERN InputSpec_s /*X*/ AxisRatioInputSpec; +EXTERN InputSpec_s /*X*/ AxisBoxPaddingInputSpec; +EXTERN InputSpec_s /*X*/ ScreenDistanceRatioInputSpec; +EXTERN InputSpec_s /*X*/ LiftFractionInputSpec; +EXTERN InputSpec_s /*X*/ ZClipInputSpec; +EXTERN InputSpec_s /*X*/ VectorHeadSizeFractionInputSpec; + + +/* Misc */ +EXTERN InputSpec_s /*X*/ ValuePrecisionInputSpec; +EXTERN InputSpec_s /*X*/ PolynomialOrderInputSpec; +EXTERN InputSpec_s /*X*/ SplineSlopeInputSpec; +EXTERN InputSpec_s /*X*/ RotationStepSizeInputSpec; +EXTERN InputSpec_s /*X*/ SmoothRotationDegPerFrameUnitInputSpec; +EXTERN InputSpec_s /*X*/ TranslationStepSizeInputSpec; +EXTERN InputSpec_s /*X*/ ScaleStepSizeInputSpec; +EXTERN InputSpec_s /*X*/ SortLevelInputSpec; +EXTERN InputSpec_s /*X*/ AxisLabelSkipInputSpec; +EXTERN InputSpec_s /*X*/ TextAngleInputSpec; +EXTERN InputSpec_s /*X*/ ArrowheadAngleInputSpec; +EXTERN InputSpec_s /*X*/ MinCreaseAngleInputSpec; +EXTERN InputSpec_s /*X*/ ExponentInputSpec; +EXTERN InputSpec_s /*X*/ SmoothWeightInputSpec; +EXTERN InputSpec_s /*X*/ TriangleKeepFactorInputSpec; +EXTERN InputSpec_s /*X*/ PlotAttrColumnWidthInputSpec; +EXTERN InputSpec_s /*X*/ ImageQualityInputSpec; + diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/MASTER.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/MASTER.h new file mode 100644 index 00000000000..38c495dcf8c --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/MASTER.h @@ -0,0 +1,684 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/***************************************************************** + ***************************************************************** + ******* ******** + ****** Copyright (C) 1988-2008 Tecplot, Inc. ******* + ******* ******** + ***************************************************************** + *****************************************************************/ +/* BEGINREMOVEFROMADDON */ +/* NOTE: All code contained between comments that look like + * BEGINREMOVEFROMADDON + * ENDREMOVEFROMADDON + * are pulled out to create the MASTER.h file used in addons. + */ +/* ENDREMOVEFROMADDON */ + +#ifndef _MASTER_H_ +#define _MASTER_H_ + +/* + * Annotations that specify the life cycle of objects returned from functions + * and input and output parameters sent as function parameters. The following + * table specifies the meaning in their context. The annotations provide code + * generation tools with information for building language bindings to various + * Tecplot 360 and Tecplot SDK related libraries. + * + * For purposes of this table the client is one making the call and the service + * is the recipient. + * + * +==================+=========================+=================================================================+ + * | Function Context | Annotation | Meaning | + * | Result or | | | + * | Parameter | | | + * |==================+=========================+=================================================================| + * | Result | TP_OUT | Default for a function return value that does not transfer | + * | | | ownership. Because this is the most common scenario this | + * | | | annotation is implied and never explicitly used in this | + * | | | context. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Scalar Result | TP_GIVES | Annotates a function scalar return value as one who's ownership | + * | | | is transfered to the client. The client is responsible for | + * | | | properly disposing the value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Array Result | TP_ARRAY_GIVES | Annotates a function array return value as one who's ownership | + * | | | is transfered to the client. The client is responsible for | + * | | | properly disposing the value. | + * |==================+=========================+=================================================================| + * | Parameter | TP_IN | Default for a function input parameter value sent to the | + * | | | service. Because this is the most common scenario this | + * | | | annotation is implied and never explicitly used. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Parameter | TP_ACQUIRES | Annotates a function parameter as one that sends a value to | + * | | | the service through the parameter and acquires shared | + * | | | ownership of the input value with the client. The service is | + * | | | not responsible for disposing the value however it is | + * | | | expected that a symmetric API exists that "releases" the | + * | | | library of this shared ownership. For example: | + * | | | void addListener(TP_ACQUIRES Listener& listener); | + * | | | void removeListener(TP_RELEASES Listener& listener); | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Parameter | TP_RELEASES | Annotates a function parameter as one that sends a value to | + * | | | the service through the parameter and releases previously | + * | | | shared ownership of the | + * | | | input value with the client. The service is not responsible | + * | | | for disposing the value however it is expected that a | + * | | | symmetric API exists that "releases" the library of this | + * | | | shared ownership. For example: | + * | | | void addListener(TP_ACQUIRES Listener& listener); | + * | | | void removeListener(TP_RELEASES Listener& listener); | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Scalar Parameter | TP_OUT | Annotates a function scalar parameter as one that returns a | + * | | | value to the client through the parameter but does not | + * | | | transfer ownership of the output value to the client. | + * | | | The client is not responsible for disposing the value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Scalar Parameter | TP_IN_OUT | Annotates a function scalar parameter as one that both sends | + * | | | a value to the service and returns a value to the client | + * | | | through the parameter. Ownership of the input value is not | + * | | | transfered to the service nor is ownership of the output value | + * | | | transfered to the client. The service is not responsible for | + * | | | disposing the input value and the client is not responsible | + * | | | for disposing the output value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Array Parameter | TP_ARRAY_OUT | Annotates a function array parameter as one that returns a | + * | | | value to the client through the parameter but does not | + * | | | transfer ownership of the output value to the client. | + * | | | The client is not responsible for disposing the value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Array Parameter | TP_ARRAY_IN_OUT | Annotates a function array parameter as one that both sends | + * | | | a value to the service and returns a value to the client | + * | | | through the parameter. Ownership of the input value is not | + * | | | transfered to the service nor is ownership of the output value | + * | | | transfered to the client. The service is not responsible for | + * | | | disposing the input value and the client is not responsible | + * | | | for disposing the output value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Scalar Parameter | TP_GIVES | Annotates a function scalar parameter as one that returns a | + * | | | value to the client through the parameter and transfers | + * | | | ownership of the output value to the client. The client is | + * | | | responsible for properly disposing the value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Scalar Parameter | TP_RECEIVES | Annotates a function scalar parameter as one that sends a value | + * | | | to the service through the parameter and transfers ownership | + * | | | of the input value to the service. The service is responsible | + * | | | for properly disposing the value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Scalar Parameter | TP_RECEIVES_GIVES | Annotates a function scalar parameter as one that both sends | + * | | | a value to the service and returns a value to the client | + * | | | through the parameter. Ownership of the input value is | + * | | | transfered to the service and ownership of the output value is | + * | | | transfered to the client. The service is responsible for | + * | | | properly disposing the input value and the client is | + * | | | responsible for properly disposing the output value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Array Parameter | TP_ARRAY_GIVES | Annotates a function array parameter as one that returns a | + * | | | value to the client through the parameter and transfers | + * | | | ownership of the output value to the client. The client is | + * | | | responsible for properly disposing the value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Array Parameter | TP_ARRAY_RECEIVES | Annotates a function array parameter as one that sends a value | + * | | | to the service through the parameter and transfers ownership | + * | | | of the input value to the service. The service is responsible | + * | | | for properly disposing the value. | + * |------------------+-------------------------+-----------------------------------------------------------------| + * | Array Parameter | TP_ARRAY_RECEIVES_GIVES | Annotates a function array parameter as one that both sends | + * | | | a value to the service and returns a value to the client | + * | | | through the parameter. Ownership of the input value is | + * | | | transfered to the service and ownership of the output value is | + * | | | transfered to the client. The service is responsible for | + * | | | properly disposing the input value and the client is | + * | | | responsible for properly disposing the output value. | + * |==================+===================+=======================================================================| + */ + +/* + * First check to make sure that our life-cycle keywords are not in conflict with any system defines. + */ +#if defined TP_ACQUIRES || \ + defined TP_RELEASES || \ + defined TP_OUT || \ + defined TP_IN_OUT || \ + defined TP_ARRAY_OUT || \ + defined TP_ARRAY_IN_OUT || \ + defined TP_GIVES || \ + defined TP_RECEIVES || \ + defined TP_RECEIVES_GIVES || \ + defined TP_ARRAY_GIVES || \ + defined TP_ARRAY_RECEIVES || \ + defined TP_ARRAY_RECEIVES_GIVES + #error "Tecplot's parameter life-cycle keywords are in direct conflict with other meanings." +#endif + +#if defined INCLUDE_OBJECT_LIFECYCLE_ANNOTATIONS + #define TP_ACQUIRES __attribute((gccxml("acquires","in"))) + #define TP_RELEASES __attribute((gccxml("releases","in"))) + #define TP_OUT __attribute((gccxml("out"))) + #define TP_IN_OUT __attribute((gccxml("in","out"))) + #define TP_ARRAY_OUT __attribute((gccxml("array","out"))) + #define TP_ARRAY_IN_OUT __attribute((gccxml("array","in","out"))) + #define TP_GIVES __attribute((gccxml("gives","out"))) + #define TP_RECEIVES __attribute((gccxml("receives","in"))) + #define TP_RECEIVES_GIVES __attribute((gccxml("receives","in","gives","out"))) + #define TP_ARRAY_GIVES __attribute((gccxml("array","gives","out"))) + #define TP_ARRAY_RECEIVES __attribute((gccxml("array","receives","in"))) + #define TP_ARRAY_RECEIVES_GIVES __attribute((gccxml("array","receives","in","gives","out"))) +#else + #define TP_ACQUIRES + #define TP_RELEASES + #define TP_OUT + #define TP_IN_OUT + #define TP_ARRAY_OUT + #define TP_ARRAY_IN_OUT + #define TP_GIVES + #define TP_RECEIVES + #define TP_RECEIVES_GIVES + #define TP_ARRAY_GIVES + #define TP_ARRAY_RECEIVES + #define TP_ARRAY_RECEIVES_GIVES +#endif + +/* BEGINREMOVEFROMADDON */ +#ifdef NO_ASSERTS /* obfuscate names */ +#define ShutDownLicensing FreeAllExtraMapData +#define ProcessYMapInXDirection +#endif /* NO_ASSERTS */ + + +/************************************** + * LICENSING + **************************************/ +#if defined TECPLOTKERNEL && !defined ENGINE +/* CORE SOURCE CODE REMOVED */ +#if defined FLEXLM && defined RLM +#endif +#if !defined FLEXLM && !defined RLM +#endif +#endif + +#include "stdafx.h" + +#if defined MSWIN +#include "W__BASE.h" +#endif + +#include <string> +#include <map> +#include <vector> +#include <queue> + +#include "TranslatedString.h" + +/* + * The following is a temporary fix for figuring out which product is + * running. In the future when Focus and 360 use the same code base, + * we will have to do this dynamically (either with flags on the compiler + * or variables within Tecplot). + */ +/* ENDREMOVEFROMADDON */ + +#if defined _WIN32 + +#if !defined TECPLOTKERNEL + +#if !defined MSWIN +#define MSWIN +#endif /* !MSWIN */ + +/* For the sake of some older add-ons, + defined _WINDOWS, WINDOWS, and WIN32 + New code should always use MSWIN */ + +#if !defined WINDOWS +#define WINDOWS +#endif /* WINDOWS */ + +#if !defined _WINDOWS +#define _WINDOWS +#endif /* !_WINDOWS */ + +#if !defined WIN32 +#define WIN32 +#endif /* !WIN32 */ + +#if defined _DEBUG +#if !defined DEBUG +#define DEBUG +#endif +#elif defined CHECKED_BUILD +#if defined NO_ASSERTS +#undef NO_ASSERTS +#endif +#if defined NDEBUG +#undef NDEBUG +#endif +#else /* RELEASE */ +#if !defined NDEBUG +#define NDEBUG +#endif +#if !defined NO_ASSERTS +#define NO_ASSERTS +#endif +#endif /* _DEBUG */ +#endif /* TECPLOTKERNEL */ + +#if _MSC_VER >= 1400 +#define VS_2005 /* Using VS2005 Compiler */ +#endif + +#if !defined TECPLOTKERNEL && defined VS_2005 +/* Suppress the warnings about the + deprecated c runtime functions. */ + +#if !defined _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#endif /* !TECPLOTKERNEL && VS_2005 */ + +#endif /* MSWIN */ + +#ifdef NDEBUG +# ifdef _DEBUG +# error "Both NDEBUG and _DEBUG defined" +# endif +#elif defined TECPLOTKERNEL +# ifndef _DEBUG +# define _DEBUG +# endif +#endif + +/* Now a requirement */ +#define USE_3D_HARDWARE + +#ifndef THREED +# define THREED +#endif + +#include <stdio.h> +#include <ctype.h> +#include <math.h> + +#if defined QUICKDEMO +#define DEMO +#endif + +#if defined MicrosoftC +#define DOS +#endif + +#if defined CRAYX +#define CRAY +#endif + +#if defined IRISX +#define IRIS +#endif + +#if defined HPX +#define HPUX +#define HP +#endif + +#if defined IBMRS6000X +#define IBMRS6000 +#endif + +#if defined COMPAQALPHAX +#define COMPAQALPHA +#define COMPAQX +#define COMPAQ +#endif + +#if defined DECALPHAX +#define DECALPHA +#define DECX +#endif + +#if defined DECX +#define DEC +#endif + +#if defined SUNSOLARISX || defined SUNSOLARIS86X +#define SUNX +#endif + +#if defined SUNX +#define SUN +#endif + +#if defined IRISX || defined CRAYX || defined HPX || defined SUNX || defined CONVEXX +#define UNIXX +#define SYSV +#endif + +#if defined DECX || defined LINUX || defined IBMRS6000X || defined COMPAQX || defined DARWIN +#define UNIXX +#endif + +/* BEGINREMOVEFROMADDON */ +#include <stdarg.h> + + +/* A bit of OEM stuff */ +#define OEM_INVALID_CHECKSUM (LgIndex_t) -1 + +/* Hide the name of the checksum function */ +#if defined NDEBUG +# define DECRYPTTIMEDCODE FixupPlot +# define CHECKHASHEDCODE ExpandPlot +# define UPDATECLASSICOEMEHCKSUM ToggleQuadrants +# define UPDATEOEMCHECKSUM ComputeAngleFromQuatrant +# define InitOemSettings InitAngleQuatrantSettings +#endif + +#if defined MSWIN +#define USE_TRUETYPEFONTS +#endif +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ + +#ifdef __cplusplus // STL + +#ifdef MSWIN + +#pragma warning(push, 1) /* warning disabling bellow doesn't actually have any effect on compiler warning. +* It appears that Microsft STL enables all the warning right back on. +* Therefore, the only way to hide them is to push existing warning level, +* lower the level for the time while STL headers are included and then restore + * previous warning level with a "pragma warning(pop)" + */ + +#pragma warning(disable: 4018) // signed/unsigned mismatch +#pragma warning(disable: 4100) // unreferenced formal parameter +#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, + // result still unsigned +#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', + // possible loss of data +#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned + // mismatch +#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated +#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated +#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class + // template 'vector' +#pragma warning(disable: 4710) // 'function' : function not inlined +#pragma warning(disable: 4786) // identifier was truncated to 'number' characters + // in the debug information +#endif + +#ifdef MSWIN +#pragma warning(pop) //Restore old warning state. +#endif //MSWIN + +#endif //__cplusplus + + /* ENDREMOVEFROMADDON */ + +#ifdef MSWIN + /* BEGINREMOVEFROMADDON */ +#ifdef TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#ifdef _DEBUG +#endif +#endif /* TECPLOTKERNEL */ + /* ENDREMOVEFROMADDON */ + +#ifndef TECPLOTKERNEL +#if defined VS_2005 +#define Widget LONG_PTR /* correct for 32 & 64 bit builds */ +#else +#define Widget long +#endif +#endif + + + +#endif /* MSWIN */ + + +#if defined UNIXX && defined ENGINE + typedef void *Widget; +#endif + + +#include <string.h> + +#if !defined SYSV && !defined MSWIN +#include <strings.h> +#endif + +#if defined (MicrosoftC) +#include <stdlib.h> +#define EXECOS +#ifndef FAR +#define FAR +#endif +#define VOID void +#endif + +#include <sys/types.h> +#include <stdlib.h> + +#if defined UNIXX +#if !defined ENGINE +#define X11 +#define MOTIF +#endif +#define FAR +#define NEAR +#include <unistd.h> +#endif + +/* BEGINREMOVEFROMADDON */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined THREADS_BY_PTHREADS && !defined THREADS_BY_WINAPI +#endif +#if defined THREADS_BY_PTHREADS +#endif +#endif +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ +/* OPENGL currently a must have */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# if !defined ENGINE +# if defined UNIXX +# endif +# endif +#endif +/* ENDREMOVEFROMADDON */ +/* + * If not building the tecplot kernel then at least + * include the X Instrinsics. This will make most + * development for addons etc work. + */ + +/* NOTE: MOTIF not defined if ENGINE is defined */ +#if defined MOTIF +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# if XmVERSION == 1 && XmREVISION == 0 +# endif +# else +# include <X11/Intrinsic.h> +# endif +#endif + +#if defined MOTIF +#define CREATE_DIALOG_PARAMS Widget W +typedef Widget ComboBoxWidget_t; +typedef Widget DropDownListWidget_t; +typedef Widget FileDialogWidget_t; +typedef Widget LabelWidget_t; +typedef Widget ListWidget_t; +typedef Widget OptionMenuWidget_t; +typedef Widget PullDownMenuWidget_t; +typedef Widget ScaleWidget_t; +typedef Widget TextFieldWidget_t; +typedef Widget ToggleWidget_t; +typedef Widget ButtonWidget_t; +typedef Widget GridWidget_t; +#endif +#if defined MSWIN +#include <windows.h> +#define CREATE_DIALOG_PARAMS CWnd *, LaunchDialogMode_e +typedef Widget ComboBoxWidget_t; +typedef Widget DropDownListWidget_t; +typedef Widget FileDialogWidget_t; +typedef Widget LabelWidget_t; +typedef Widget ListWidget_t; +typedef Widget OptionMenuWidget_t; +typedef Widget PullDownMenuWidget_t; +typedef Widget ScaleWidget_t; +typedef Widget TextFieldWidget_t; +typedef Widget ToggleWidget_t; +typedef Widget ButtonWidget_t; +typedef Widget GridWidget_t; +#endif + +/* BEGINREMOVEFROMADDON */ +#if defined MSWIN && defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined TRACE +#endif +#if defined TRACE0 +#endif +#if defined TRACE1 +#endif +#if defined TRACE2 +#endif +#if defined TRACE3 +#endif +#if defined NDEBUG +#else +#endif +#endif /* MSWIN */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ +/* ENDREMOVEFROMADDON */ + +/* Assume that if TRACE is not defined, then none of the TRACE macros are */ +#if !defined (TRACE) +/* TRACE is not used by non-debug builds */ +#if defined NDEBUG +#if defined MSWIN +#define TRACE __noop +#define TRACE0(s) __noop +#define TRACE1(S,a1) __noop +#define TRACE2(s,a1,a2) __noop +#define TRACE3(s,a1,a2,a3) __noop +#else +#define TRACE(str) ((void)0) +#define TRACE0(str) ((void)0) +#define TRACE1(str,a1) ((void)0) +#define TRACE2(str,a1,a2) ((void)0) +#define TRACE3(str,a1,a2,a3) ((void)0) +#endif /* MSWIN */ +#else /* DEBUG */ +#if defined MSWIN +/* If the add-on is running in debug mode but does not + * use MFC, then no TRACE macro is available. Thus, to make tracing available, + * map TRACE to the win32 OutpuDebugString() function. + */ +# define TRACE(str) do { OutputDebugStringA(str); } while (0) +# define TRACE1(str,a1) do { char s[5000]; sprintf(s,str,a1); OutputDebugStringA(s); } while (0) +# define TRACE2(str,a1,a2) do { char s[5000]; sprintf(s,str,a1,a2); OutputDebugStringA(s); } while (0) +# define TRACE3(str,a1,a2,a3) do { char s[5000]; sprintf(s,str,a1,a2,a3); OutputDebugStringA(s); } while (0) +# define TRACE0(str) TRACE(str) +#else +#define TRACE printf +#define TRACE0 printf +#define TRACE1 printf +#define TRACE2 printf +#define TRACE3 printf +#endif /* MSWIN */ +#endif /* NDEBUG */ +#endif /* !defined (TRACE) */ + + +/* + Platform independent way for add-ons to know how much space + to allocate for a filename. +*/ +#if !defined MAX_SIZEOFUTF8CHAR +#define MAX_SIZEOFUTF8CHAR 1 +#endif + +#if !defined (MaxCharsFilePath) +# if defined (MSWIN) +# define MaxCharsFilePath (_MAX_PATH*MAX_SIZEOFUTF8CHAR+1) /* Includes traling '\0' */ +# else +# define MaxCharsFilePath 2047 /* ...not really a hard limit for Linux/Unix */ +# endif /* MSWIN */ +#endif /* !MaxCharsFilePath */ + +/* BEGINREMOVEFROMADDON */ + +/* + * Under Windows, if we are doing a release build (NDEBUG) that is not a CHECKED_BUILD + * then NO_ASSERTS should be defined + */ +#if defined MSWIN && defined NDEBUG && !defined NO_ASSERTS && !defined CHECKED_BUILD +/* intentionally break the compile */ +# error "define NO_ASSERTS for release builds" +#endif + +/* + * Under Windows, if we are doing a CHECKED_BUILD then it should + * also be a release build (NDEBUG) + */ +#if defined MSWIN && defined CHECKED_BUILD && !defined NDEBUG +# error "CHECKED_BUILDS must also be release builds" +#endif + + +#if defined NO_ASSERTS +# define USE_MACROS_FOR_FUNCTIONS +#endif +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ +/* + * Under Linux the definition of NULL has a cast that conflicts with our own + * casting causing warnings that make it tough to find real problems. + */ +#if defined LINUX && defined NULL +# undef NULL +# define NULL 0 +#endif + +/* + */ +#if !defined MSWIN && !defined ENGINE && !defined ISMESA +#define DISALLOW_OFFSCREEN_EXPORT_IN_BATCH +#endif + +/* ENDREMOVEFROMADDON */ + +#endif /* _MASTER_H_ */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/files b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/files new file mode 100644 index 00000000000..084478a07ad --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/files @@ -0,0 +1,21 @@ +alloc.cpp +arrlist.cpp +auxdata.cpp +dataio4.cpp +dataio.cpp +dataset0.cpp +dataset.cpp +datautil.cpp +filestream.cpp +geom2.cpp +q_msg.cpp +q_unicode.cpp +set.cpp +strlist.cpp +strutil.cpp +tassert.cpp +tecxxx.cpp +TranslatedString.cpp + +LIB = $(FOAM_LIBBIN)/libtecio + diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/options b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/options new file mode 100644 index 00000000000..a355d90c5ee --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/options @@ -0,0 +1,7 @@ +#include "tecioOptions" + +EXE_INC = \ + $(TECIO_FLAGS) $(TECIO_INC) + +LIB_LIBS = \ + $(TECIO_LIBS) diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/tecioOptions b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/tecioOptions new file mode 100644 index 00000000000..f8dcf487594 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Make/tecioOptions @@ -0,0 +1,20 @@ +#if defined(linux64) + + TECIO_FLAGS = -DMAKEARCHIVE -DLINUX -DLINUX64 -DUSEENUM -DTHREED -U_WIN32 + +#elif defined(linuxIA64) + + TECIO_FLAGS = -DMAKEARCHIVE -DLINUX -DLINUXI64 -DUSEENUM -DTHREED -U_WIN32 + +#elif defined(linux) + + TECIO_FLAGS = -DMAKEARCHIVE -DLINUX -DUSEENUM -DTHREED -U_WIN32 + +#else + +# error architecture not supported for compiling tecio. + +#endif + +TECIO_INC = +TECIO_LIBS = diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_MSG.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_MSG.h new file mode 100644 index 00000000000..84f1d1af76e --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_MSG.h @@ -0,0 +1,72 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#ifndef Q_MSG_H +#define Q_MSG_H +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ +#if defined EXTERN +#undef EXTERN +#endif +#if defined Q_MSGMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +#define MAX_STATUS_LINE_MSG_LEN 255 + +#include "TranslatedString.h" + +EXTERN Boolean_t WrapString(const char *OldString, + char **NewString); +EXTERN void Warning(tecplot::strutil::TranslatedString Format, + ...); /* zero or more arguments */ +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +EXTERN void ErrMsg(tecplot::strutil::TranslatedString Format, + ...); /* zero or more arguments */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE +#endif +#if !defined ENGINE +#if defined MOTIF +#endif +#endif +#if !defined ENGINE +#endif +#if defined Q_MSGMODULE +#else +#endif +#endif // TECPLOTKERNEL + +#endif // Q_MSG_H diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_UNICODE.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_UNICODE.h new file mode 100644 index 00000000000..b91c2ca65ec --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/Q_UNICODE.h @@ -0,0 +1,93 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + + +#if !defined Q_UNICODE_H_ +# define Q_UNICODE_H_ + +#if defined EXTERN +#undef EXTERN +#endif +#if defined Q_UNICODEMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +namespace tecplot +{ +namespace strutil +{ + +// functions +Boolean_t IsValidUtf8LeadByte(Byte_t ch); +Boolean_t IsValidUtf8ContinuingByte(Byte_t ch); +Boolean_t IsValidUtf8Byte(Byte_t ch); + +Boolean_t IsValidUtf8String(const char *str); +Boolean_t ShouldConvertWideStringToUtf8String(const wchar_t *str); +void InitTranslatedStrings(); +void CleanUpTranslatedStrings(); + +Boolean_t IsNullOrZeroLengthString(const char *S); +Boolean_t IsNullOrZeroLengthString(tecplot::strutil::TranslatedString TS); + +Boolean_t IsEmptyString(const char *S); +Boolean_t IsEmptyString(tecplot::strutil::TranslatedString S); +Boolean_t IsEmptyString(const wchar_t* S); + +#if defined MSWIN + +std::string LookUpTranslation(std::string& strEnglish); +void MsWinInitTranslatedStrings(); + +std::string WStringToString(std::wstring str); +std::wstring StringToWString(std::string str); + +std::wstring MultiByteToWideChar(const char *Utf8Str, + unsigned int CodePage); + +std::string WideCharToMultiByte(const wchar_t *WideStr, + unsigned int CodePage); + +// Conversion +std::string WideCharToUtf8(const wchar_t* str); +std::wstring Utf8ToWideChar(const char *str); +char *getenv(const char *str); + +#endif + +} +} + +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SET.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SET.h new file mode 100644 index 00000000000..2ab99f64a03 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SET.h @@ -0,0 +1,283 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#if defined EXTERN +#undef EXTERN +#endif +#if defined SETMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +#ifndef _SET_H_INCLUDED +#define _SET_H_INCLUDED + +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + +#define PadOut(X,Y) ((int)(((X)-1)/(Y)+1)*(Y)) +#define SetBitSize (8*sizeof(SetData_t)) +#define SetLastBit (((unsigned long)1)<<(SetBitSize-1)) + +#if defined _DEBUG +# define USE_FUNCTIONS_FOR_SETS +#endif + +/* * + * * NOTE: "Set_pa" is a pointer to an "abstract type", + * * hence the "_pa". Pointer here is akin to "handle". + * * Any routines dealing with the internals of Set_pa + * * or Set_a must be in the same file as these routines + * */ + +/* Set_a is intentionally not defined to further + * deter usage of this private structure */ +struct _Set_a +{ + /* * PRIVATE * */ + SetIndex_t size; + SetData_pt data; +}; + +/* + * Checks set for NULL. + */ +#define IsSetNull(Set) ((Set)==NULL) + +/** + * Indicates how many bytes are required to store the set data. + */ +inline size_t SetDataSizeInBytes(Set_pa Set) +{ + REQUIRE(VALID_REF(Set)); + return Set->size / SetBitSize * sizeof(SetData_t); +} + +/* + * Allocates a new empty set. Returns NULL if not enough memory. + */ +EXTERN Set_pa AllocSet(Boolean_t show_error_msg); + +/* + * Frees all memory associated with set "*set", and + * sets "*set" to NULL. + */ +EXTERN void DeallocSet(Set_pa *Set); + +/** + * This function adapts the DeallocSet function to work with the + * ArrayList's deallocation callback. + */ +EXTERN Boolean_t SetItemDestructor(void *ItemRef, + ArbParam_t ClientData); +/* + * Makes sure set "set" can hold at least "max_val" elements. + * Returns TRUE if successful, FALSE otherwise. A successful + * call to ExpandSet() guarentees that any calls to AddToSet() + * will be successful as long as the elements added are less + * than "max_val". + */ +EXTERN Boolean_t ExpandSet(Set_pa Set, + SetIndex_t max_val, + Boolean_t show_error_msg); + +/* + * Copies set "src" to set "dst". Returns TRUE if successful, + * FALSE if "src" contains elements it is unable to add to "dst". + */ +EXTERN Boolean_t CopySet(Set_pa dst, + Set_pa src, + Boolean_t show_error_msg); + +/* + * Appends set "src" to set "dst". Returns TRUE if successful, + * FALSE if "src" contains elements it is unable to add to "dst". + */ +EXTERN Boolean_t AppendSet(Set_pa dst, + Set_pa src, + Boolean_t show_error_msg); +/* + * Empties the set "set". + */ +EXTERN void ClearSet(Set_pa Set); + +/* + * Adds "member" to set "set". Returns TRUE if successful, + * FALSE otherwise. AddToSet() can only return FALSE if + * "member" is greater than any previous member of "set" and + * also greater that any "max_val" set with ExpandSet(). + */ +#if defined USE_FUNCTIONS_FOR_SETS +EXTERN Boolean_t AddToSet(Set_pa Set, + SetIndex_t member, + Boolean_t show_error_msg); +#else +# if defined __cplusplus +inline Boolean_t AddToSet(Set_pa Set, + SetIndex_t member, + Boolean_t show_error_msg) +{ + if (Set && + (member + 1 <= Set->size || + ExpandSet(Set, member + 1, show_error_msg))) + { + SetIndex_t word = member / SetBitSize; + SetData_t bit = (SetData_t)1 << (member % SetBitSize); + Set->data[word] |= bit; + return TRUE; + } + else + return FALSE; +} /* AddToSet() */ +# else +# define AddToSet(Set,member,show_error_msg) \ + (((Set) && \ + ((member)+1 <= (Set)->size || \ + ExpandSet((Set), (member)+1, (show_error_msg)))) \ + ? (((Set)->data[(member) / SetBitSize] |= (SetData_t)1 << ((member) % SetBitSize)), TRUE) \ + : FALSE) +# endif +#endif + +/* + * Removes "member" from set "set". + */ +EXTERN void RemoveFromSet(Set_pa Set, + SetIndex_t member); + +EXTERN void DeleteSetMember(Set_pa Set, + SetIndex_t Member); +EXTERN Boolean_t InsertSetMember(Set_pa Set, + SetIndex_t Member, + Boolean_t ShowErrMsg); +/* + * Test for membership of "member" in set "set". This is the only + * function worth making into a macro or inline function. + */ +#if defined USE_FUNCTIONS_FOR_SETS +EXTERN Boolean_t InSet(Set_pa Set, + SetIndex_t member); +#else +# if defined __cplusplus +inline Boolean_t InSet(Set_pa Set, + SetIndex_t member) +{ + if (Set && (0 <= member && member < Set->size)) + { + SetIndex_t word = member / SetBitSize; + SetData_t bit = (SetData_t)1 << (member % SetBitSize); + return (Set->data[word]&bit) != 0; + } + else + return FALSE; +} /* InSet() */ +# else +# define InSet(Set,member) ((Set && (0<=(member) && (member)<(Set)->size)) \ + ? ((Set)->data[(member)/SetBitSize]&((SetData_t)1<<((member)%SetBitSize)))!=0 \ + : FALSE) +# endif +#endif + +/* + * Returns TRUE if set "set" is empty. + */ +EXTERN Boolean_t IsEmpty(Set_pa Set); + +/* + * Returns TRUE if Set has voids. + */ +EXTERN Boolean_t HasVoids(Set_pa Set); + +/* + * Returns number of members in Set "Set". + */ +EXTERN SetIndex_t MemberCount(Set_pa Set); + +/* + * Returns the next member in set "set" after member "start_at". + * Use "start_at" of BAD_ZV_VALUE to find first member. + */ +EXTERN SetIndex_t GetNextMember(Set_pa Set, + SetIndex_t start_at); + +/* + * Returns the previous member in set "set" before member + * "start_at". Use "start_at" of BAD_ZV_VALUE to find last member. + */ +EXTERN SetIndex_t GetPrevMember(Set_pa Set, + SetIndex_t start_at); + +/* + * Returns TRUE if sets are equal (have same members). FALSE otherwise. + */ +EXTERN Boolean_t EqualSets(Set_pa set1, + Set_pa set2); + +/* + * Returns TRUE if all members of childset are contained in parentset. + */ +EXTERN Boolean_t IsSubSet(Set_pa childset, + Set_pa parentset); + +EXTERN SetIndex_t MemberOffset(Set_pa Set, + SetIndex_t Member); + +EXTERN SetIndex_t OffsetMember(Set_pa Set, + SetIndex_t Offset); + + +EXTERN Boolean_t CopySetMember(Set_pa DstSet, + SetIndex_t DstOffset, + Set_pa SrcSet, + SetIndex_t SrcOffset); + +EXTERN void ShiftSet(Set_pa Set, + SetIndex_t ShiftPos1, + SetIndex_t ShiftPos2, + SetIndex_t ShiftAmount); + + +/* + * Handy macros + */ +#define GetFirstSetMember(Set) (GetNextMember((Set), BAD_SET_VALUE)) +#define GetLastSetMember(Set) (GetPrevMember((Set), BAD_SET_VALUE)) + +#define ForAllMembersInSet(Member, Set) \ + for (Member = GetFirstSetMember((Set)); \ + Member != BAD_SET_VALUE; \ + Member = GetNextMember((Set), (Member))) +#define ForAllMembersInReversedSet(Member, Set) \ + for (Member = GetLastSetMember((Set)); \ + Member != BAD_SET_VALUE; \ + Member = GetPrevMember((Set), (Member))) + +#endif // _SET_H_INCLUDED diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRLIST.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRLIST.h new file mode 100644 index 00000000000..04d1673b118 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRLIST.h @@ -0,0 +1,122 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ +#if defined EXTERN +# undef EXTERN +#endif +#if defined STRLISTMODULE +# define EXTERN +#else +# define EXTERN extern +#endif + +#if !defined ARRLIST_h +# error "Include ARRLIST.h before including STRLIST.h" +#endif + +/* + * + * For building pltview.exe under Windows, we use + * tecio.dll (which is linked to pltview). + * Since pltview.exe uses a few of the + * functions here, they need to be exported into + * the tecio.dll, thus "TECXXX.h" is included for the + * LIBFUNCTION & LIBCALL keywords. They are not + * documented with the other TECXXX() functions, + * however. + * + * If pltview requires other string functions + * in the future, they can be added to the dll + * by adding LIBFUNCTION & LIBCALL as in + * StringListDealloc(), etc. below. + * + * When building the tecplot kernal, LIBFUNCTION + * and LIBCALL are nop's. + * + */ +#include "TECXXX.h" + +EXTERN Boolean_t StringListValid(StringList_pa StringList); +EXTERN void StringListClear(StringList_pa StringList); +EXTERN void StringListRemoveStrings(StringList_pa StringList, + LgIndex_t StringOffset, + LgIndex_t Count); +EXTERN void StringListRemoveString(StringList_pa StringList, + LgIndex_t StringOffset); +LIBFUNCTION void LIBCALL StringListDealloc(StringList_pa *StringList); +EXTERN StringList_pa StringListAlloc(void); +EXTERN Boolean_t StringListAppendString(StringList_pa StringList, + const char *String); +LIBFUNCTION LgIndex_t LIBCALL StringListCount(StringList_pa StringList); +LIBFUNCTION char * LIBCALL StringListGetString(StringList_pa StringList, + LgIndex_t StringOffset); + +#if defined USE_MACROS_FOR_FUNCTIONS +# define StringListGetStringRef StringListGetStringRef_MACRO +#else +# define StringListGetStringRef StringListGetStringRef_FUNC +#endif + +#if !defined USE_MACROS_FOR_FUNCTIONS +EXTERN const char * StringListGetStringRef_FUNC(StringList_pa StringList, + LgIndex_t StringOffset); +#endif +/** + * To maintain the string list's integrity the result is cast to a + * (const char *) to minimize the risk of users passing the result + * to FREE_ARRAY. + */ +#define StringListGetStringRef_MACRO(StringList, StringOffset) \ + ((const char *)ArrayListGetCharPtr((ArrayList_pa)(StringList), StringOffset)) + +EXTERN Boolean_t StringListSetString(StringList_pa StringList, + LgIndex_t StringOffset, + const char *String); +EXTERN Boolean_t StringListInsertString(StringList_pa StringList, + LgIndex_t StringOffset, + const char *String); +EXTERN StringList_pa StringListCopy(StringList_pa StringList); +EXTERN Boolean_t StringListAppend(StringList_pa Target, + StringList_pa Source); + +EXTERN char *StringListToNLString(StringList_pa StringList); +EXTERN StringList_pa StringListFromNLString(const char *String); +EXTERN char **StringListToArray(StringList_pa StringList); +EXTERN StringList_pa StringListFromArray(const char **StringArray, + LgIndex_t Count); +EXTERN StringList_pa StringListFromCompound(const char *String); +EXTERN char *StringListToCompound(StringList_pa StringList, + char GroupJoinCharacter, + const char *CharsToEscape); +EXTERN void StringListSort(StringList_pa StringList, + StringListStringComparator_pf Comparator, + ArbParam_t ClientData); diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRUTIL.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRUTIL.h new file mode 100644 index 00000000000..c8e0c2b5a33 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/STRUTIL.h @@ -0,0 +1,218 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#if defined EXTERN +#undef EXTERN +#endif +#if defined STRUTILMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +#include <string> + +namespace tecplot +{ +namespace strutil +{ +class Scanner; +} +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + + +EXTERN void FormatStringBufferCleanup(void); + +/* + * This is a helper function for FormatString or any other functions that want + * to format a string based on a format string followed by a set of arguments. + * See FormatString or ErrMsg functions for example usage. + * + * @param Format + * C format string. + * @param Arguments + * Variable argument list already fetched using va_start(). + * + * @return + * Allocated string with the formatted string or NULL if it failed. + */ +EXTERN char *vFormatString(const char *Format, + va_list Arguments); + +/** + * Formats a string using the specified C format string. + * + * @param Format + * C format string. + * @param ... + * Any arguments needed by the C format string. + * + * @return + * Allocated string with the formatted string or NULL if it failed. The + * client is responsible for deallocating the resource. + */ +EXTERN char *FormatString(tecplot::strutil::TranslatedString Format, + ...); /* 0 or more variable arguments */ + +/** + * Formats a string using the specified C format string and places the result + * in the string buffer. + * + * @param Buffer + * String buffer to receive the formatted string. + * @param Format + * C format string. + * @param ... + * Any arguments needed by the C format string. + * + * @return + * Upon successful return, these functions return the number of characters + * printed, not including the trailing '\0' used to end output to strings. If + * unsuccessful -1 is returned. + */ +EXTERN int FormatString(std::string& Buffer, + tecplot::strutil::TranslatedString Format + ...); /* 0 or more variable arguments */ +EXTERN char *DupString(tecplot::strutil::TranslatedString String); +EXTERN void CopySubString(char *Target, + const char *Source, + int Index, + int Count); + +#if !defined MSWIN + +EXTERN void ReplaceCharInString(char *S, + short OldChar, + short NewChar); +#endif + +EXTERN void MakeStringLowerCase(char *str); +EXTERN void MakeStringUpperCase(char *str); +EXTERN char *TrimLeadAndTrailSpaces(char *String); +EXTERN char *StringFlushLeft(char *String); +EXTERN char *StringTruncate(char *String, + LgIndex_t MaxLength); +EXTERN char *StringTrimAndTruncate(char *String, + LgIndex_t MaxLength); + +#ifndef MSWIN +EXTERN StringList_pa LineBreakString(const char *String, + UInt32_t WrapMargin); +#endif + +EXTERN Boolean_t MatchKey(char *StringToMatch, + char *Key); +EXTERN void RemoveSeparator(const char **CPtr); +EXTERN void SkipWhiteSpace(const char **CPtr); +EXTERN void SkipNonWhiteSpace(char **CPtr); +EXTERN const char *ustrstr(const char *s1, + const char *s2); +EXTERN int ustrncmp(const char *s1, + const char *s2, + size_t Len); +EXTERN int ustrcmp(const char *s1, + const char *s2); +/* public access */ +/* InternalResetString should not be used directly (use ResetString macro) */ +#if !defined NO_ASSERTS +EXTERN Boolean_t InternalResetString(char **SBase, + const char *NewString, + Boolean_t IssueErrMsg, + const char *FileName, + int LineNumber); +# define ResetString(SBase, NewString, IssueErrMsg) InternalResetString( \ + SBase, \ + NewString, \ + IssueErrMsg, \ + __FILE__, __LINE__) +#else +EXTERN Boolean_t InternalResetString(char **SBase, + const char *NewString, + Boolean_t IssueErrMsg); +# define ResetString(SBase, NewString, IssueErrMsg) InternalResetString( \ + SBase, \ + NewString, \ + IssueErrMsg) +#endif + +EXTERN Boolean_t ScanForString(tecplot::strutil::Scanner &scanner, + std::string &DestString, + Boolean_t GrabEntireStringIncludingDelimiters); +EXTERN Boolean_t TackOnString(char **SBase, + const char *StringToAdd, + Boolean_t DeleteStringToAdd, + Boolean_t ConvertNewlineToAscii); +EXTERN Boolean_t TackOnConstString(char **SBase, + const char *StringToAdd, + Boolean_t ConvertNewlineToAscii); +EXTERN Boolean_t TackOnChar(char **SBase, + char CharToAdd); +EXTERN Boolean_t ReplaceNewlineWithBackslashN(char **String); +EXTERN Boolean_t ReplaceBackslashNWithNewline(char **S); + +EXTERN Boolean_t EscapeOutDelimitersInString(char **S, + char Delimiter); +EXTERN Boolean_t ScanForSymbol(tecplot::strutil::Scanner &scanner, + char Symbol, + Boolean_t OnlySkipWhiteSpace); + + +/* Newline Delimited Strings */ +EXTERN char *ConvertStringToNewlineDelimitedString(const char *OriginalString); +EXTERN char *ConvertNewlineDelimitedStringToQuotedString(const char *NewlineDelimitedString, + Boolean_t SeparateInstructionsWithPlus); + + + +EXTERN char *InsertNameAtPlaceHolder(char *BaseString, + char *NameToInsert); +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined NO_ASSERTS +#endif /* !NO_ASSERTS */ +#endif //TECPLOTKERNEL + +inline char* EndOfString(char* str) +{ + return str + strlen(str); +}; +inline char const* EndOfString(char const* str) +{ + return str + strlen(str); +}; diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SYSTEM.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SYSTEM.h new file mode 100644 index 00000000000..6e510359a5b --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/SYSTEM.h @@ -0,0 +1,67 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ +#if defined EXTERN +#undef EXTERN +#endif +#if defined SYSTEMMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +EXTERN int OpenFileListGetCount(void); +EXTERN char *GetLongFileName(const char *FileName); +EXTERN Boolean_t VerifyToOverwriteFile(const char *FName); +EXTERN Boolean_t IsValidDirectory(const char *FName); +EXTERN Boolean_t FileExists(const char *F, + Boolean_t ShowErr); +EXTERN Boolean_t IsOkFNameChar(unsigned char ch); +EXTERN void ErrFName(const char *FName); +EXTERN Boolean_t IsValidFileName(const char *FileName, + Boolean_t IsReading, + Boolean_t ShowError); +EXTERN Boolean_t ResizeFile(FILE *File, + Int64_t Length); +EXTERN Boolean_t Close_File(FILE **F, + Boolean_t ShowErr); +EXTERN Boolean_t Open_File(FILE **F, + const char *FName, + Boolean_t IsReading, + Boolean_t IsAppending, + Boolean_t ForceOpen, + Boolean_t ShowErr, + Boolean_t IsAscii); + diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TASSERT.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TASSERT.h new file mode 100644 index 00000000000..78252294d34 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TASSERT.h @@ -0,0 +1,513 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ +/* + * Provide four levels of assertion control. Assertions provide a mechanism + * to enforce a contract between a client and service provider. The assertions + * are listed in order of highest to lowest priority. Assertions can be turned + * off individually by defining the appropriate name (see preprossessor + * definitions below), however, lower priority assertions should be turned + * off prior to higher ones. As confidence in the code increases all assertions + * can be turned off by defining NO_ASSERTS. + * + * The assertions defined below have the following meanings: + * + * INVARIANT - Asserts that a property's state is invariant throughout the + * life of the property's scope. Stating invariant properties + * of an application provides a deeper understanding of the + * application's state. These statements are usually + * positioned just ahead of the preconditions and just after + * the postconditions. + * + * REQUIRE - Asserts that a method's preconditions are within their + * valid domains. Preconditions are conditions placed upon + * any state information relied upon for the call. These + * statements should be as close to the top of the method + * as possible (except for assertions on invariant properties). + * + * ENSURE - Asserts that a method's postconditions are within their + * valid ranges. Postconditions are conditions placed upon + * any state information modified by the call. These + * statements should be as close to the bottom of the method + * (presumably there is only one exit point) as possible + * (except for assertions on invariant properties). + * + * CHECK - Any other assertion not covered by the above assertions. + * These are often added within a method body to specify + * something that may not be immediately obvious to the reader + * or to validate your assumptions about a call to a 3rd party + * method that does not use runtime assertions for its + * preconditions or postconditions. Obviously if the 3rd party + * method uses assertions then there is no need for the CHECK. + * + * Additionally a convenience macro is available to place in code that is + * pending implementation. + * + * NOT_IMPLEMENTED - Assertion that always fails during runtime for debug + * builds and always fails at compile time for release + * builds. + */ +#if !defined TASSERT_H +#define TASSERT_H + +#if defined (MSWIN) +# include <assert.h> +#endif /* MSWIN */ + +#if !defined TECPLOTKERNEL && !defined STD_ASSERTS +#define STD_ASSERTS +#endif + +#if !defined (MSWIN) +# include <assert.h> +# if !defined ASSERT +# define ASSERT assert +# endif +#endif + +#if defined MSWIN +/* MFC .NET defines ENSURE, so we undefine it here */ +#if defined ENSURE +#undef ENSURE +#endif /* ENSURE */ +#endif /* MSWIN */ + +/* BEGINREMOVEFROMADDON */ +#define INVALID_REF ((void *)0x0000FFFF) +/* + * Chances are low the address 0x11111111 will be used, so we'll risk asserting + * against it (see unitialized assignment in newmalloc). + */ +#define UNINITIALIZED_REF ((void *)0x11111111) +#define INVALID_FN_REF ((void *)NULL) +/* ENDREMOVEFROMADDON */ + +#ifdef UNIXX +/* BEGINREMOVEFROMADDON */ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# if defined NO_ASSERTS +# else +# endif +#endif /* TECPLOTKERNAL */ +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ +#if !defined TECPLOTKERNEL +/* For add-ons, there is a problem with VALID_REF, so just test for non-NULL */ +/* ENDREMOVEFROMADDON */ +# define VALID_REF(p) ( (p) != NULL ) +# define VALID_FN_REF(fp) ( (fp) != NULL ) +/* BEGINREMOVEFROMADDON */ +#endif /* !defined TECPLOTKERNAL */ +/* ENDREMOVEFROMADDON */ + +/* BEGINREMOVEFROMADDON */ +/* Widgets are pointers under Motif */ +# define VALID_WIDGET(widget) VALID_REF((widget)) +/* Menu widgets are pointers too */ +# define VALID_MENU_WIDGET(widget) VALID_REF((widget)) +/* ENDREMOVEFROMADDON */ +#endif /* UNIXX */ + +#ifdef MSWIN +/* BEGINREMOVEFROMADDON */ +/* Don't use AfxIsValidAddress()! See Bug <7245>. + 1/4/08, dto. */ +/* ENDREMOVEFROMADDON */ + +#if defined NO_ASSERTS +/* release build in TecUtil layer uses these for TUASSERT */ +# define VALID_REF(p) ((p) != NULL) +# define VALID_FN_REF(pf) ((pf) != NULL) +#else +# define VALID_REF(p) ((p) != NULL && !IsBadReadPtr((const void *)(p), 1)) +# define VALID_FN_REF(pf) ((pf) != NULL && !IsBadReadPtr((const void *)(pf),(UINT_PTR)sizeof(const void*))) +#endif + +/* BEGINREMOVEFROMADDON */ +/* Widgets are numbers under Windows, so we decode it with GetWindowFromWidget */ +# if defined ENGINE +# define VALID_WIDGET(widget) ((widget) != NULL) +# else +# define VALID_WIDGET(widget) ((widget) != NULL && GetWindowFromWidget((widget))!=NULL) +# endif // ENGINE + +/* Menu widgets are numbers too, so we just check against zero */ +# define VALID_MENU_WIDGET(widget) ((widget)!=NULL) +/* ENDREMOVEFROMADDON */ +#endif /* MSWIN */ +/* BEGINREMOVEFROMADDON */ +/* handles are not pointers to memory, so the only test we can */ +/* perform is to check for 0 */ +#define VALID_HANDLE(handle) ((handle)!=0) + +#if defined FLEXLM +#define VALID_FLEX_JOB_HANDLE(handle) ((handle) != NULL) +#define VALID_FLEX_ERROR_CODE(ErrorCode)(ErrorCode <= 0) +#endif /* FLEXLM */ + +/* ENDREMOVEFROMADDON */ +/* other useful validity checks */ +#define VALID_BOOLEAN(b) ((b) == TRUE || (b) == FALSE) +#define VALID_ENUM(value, type) (0 <= (value) && \ + (value) < END_##type) + +/* Test a parameter than can be NULL or a valid pointer */ +#define VALID_REF_OR_NULL(ptr) IMPLICATION((ptr) != NULL, VALID_REF(ptr)) +#define VALID_FN_REF_OR_NULL(ptr) IMPLICATION((ptr) != NULL, VALID_FN_REF(ptr)) + +/* BEGINREMOVEFROMADDON */ +#define VALID_TRANSLATED_STRING(ts) (!(ts).isNull()) + +/** + * These macros are a little complicated but it allows one to + * write a simple assertion regardless of the zone type or + * selected plane: + * + * REQUIRE(VALID_CELL_INDEX(CZData, CellIndex, Plane))); + * + * Prior to using the macros a call to SetupXxx, + * or at a minimum SetupCZData, must be called to setup + * the globals defining the dataset structure. + */ +#define VALID_FE_CELL_INDEX(CZData, CellIndex) \ + (/* CellIndex range test */ \ + 0 <= (CellIndex) && \ + (CellIndex) < (CZData)->NumElements) + +#define VALID_IPLANE_CELL_INDEX(CZData,CellIndex) \ + (/* CellIndex range test */ \ + (CellIndex) >= 0 && \ + IINDEX((CZData),CellIndex) <= MAX((CZData)->NumIPtsM1,1) && \ + JINDEX((CZData),CellIndex) < MAX((CZData)->NumJPtsM1,1) && \ + KINDEX((CZData),CellIndex) < MAX((CZData)->NumKPtsM1,1)) + +#define VALID_JPLANE_CELL_INDEX(CZData,CellIndex) \ + (/* CellIndex range test */ \ + (CellIndex) >= 0 && \ + IINDEX((CZData),CellIndex) < MAX((CZData)->NumIPtsM1,1) && \ + JINDEX((CZData),CellIndex) <= MAX((CZData)->NumJPtsM1,1) && \ + KINDEX((CZData),CellIndex) < MAX((CZData)->NumKPtsM1,1)) + +#define VALID_KPLANE_CELL_INDEX(CZData,CellIndex) \ + (/* CellIndex range test */ \ + (CellIndex) >= 0 && \ + IINDEX((CZData),CellIndex) < MAX((CZData)->NumIPtsM1,1) && \ + JINDEX((CZData),CellIndex) < MAX((CZData)->NumJPtsM1,1) && \ + KINDEX((CZData),CellIndex) <= MAX((CZData)->NumKPtsM1,1)) + +#define VALID_ORDERED_CELL_INDEX(CZData, CellIndex, Plane) \ + (/* macro preconditions */ \ + ((IJKPlanes_e)(Plane) == IJKPlanes_I || \ + (IJKPlanes_e)(Plane) == IJKPlanes_J || \ + (IJKPlanes_e)(Plane) == IJKPlanes_K || \ + (IJKPlanes_e)(Plane) == IJKPlanes_Volume) && \ +\ + /* CellIndex range test */ \ + (IMPLICATION(((IJKPlanes_e)(Plane) == IJKPlanes_I || \ + (IJKPlanes_e)(Plane) == IJKPlanes_Volume), \ + VALID_IPLANE_CELL_INDEX((CZData),CellIndex)) && \ + IMPLICATION(((IJKPlanes_e)(Plane) == IJKPlanes_J || \ + (IJKPlanes_e)(Plane) == IJKPlanes_Volume), \ + VALID_JPLANE_CELL_INDEX((CZData),CellIndex)) && \ + IMPLICATION(((IJKPlanes_e)(Plane) == IJKPlanes_K || \ + (IJKPlanes_e)(Plane) == IJKPlanes_Volume), \ + VALID_KPLANE_CELL_INDEX((CZData),CellIndex)))) + +#define VALID_CELL_INDEX(CZData, CellIndex, Plane) \ + (((CZData)->NM != NULL || (CZData)->FM != NULL) ? \ + VALID_FE_CELL_INDEX((CZData), (CellIndex)) : \ + VALID_ORDERED_CELL_INDEX((CZData), (CellIndex), (Plane))) + +#define VALID_DATASET(dataSet,checkNumZones) (((dataSet) != NULL) && \ + IMPLICATION((checkNumZones),(dataSet)->NumZones >= 1)) + + + +#ifdef MSWIN +/* Here is a more specific check in Windows for a valid + pointer to an MFC Window object. + Note that GetSafeHwnd() works even if pWnd is NULL, because + it checks the 'this' pointer first */ +# define VALID_WND(pWnd) (::IsWindow((pWnd)->GetSafeHwnd())) + +#else /* !MSWIN */ +# define VALID_WND(pWnd) /* Should not be used in Motif */ +#endif /* MSWIN */ +/* ENDREMOVEFROMADDON */ + +/* Check for a non-zero length string */ +#if defined MSWIN +# if defined NO_ASSERTS +# define VALID_NON_ZERO_LEN_STR(str) (VALID_REF(str) && !ISEMPTYSTRING(str)) +# else +# define VALID_NON_ZERO_LEN_STR(str) \ + (VALID_REF(str) && \ + !IsBadReadPtr((const void*)(str),(UINT_PTR)(1+strlen((const char*)(str)))) && \ + !ISEMPTYSTRING(str)) +# endif +#else +# define VALID_NON_ZERO_LEN_STR(str) (VALID_REF(str) && !ISEMPTYSTRING(str)) +#endif + +#define VALID_SET_INDEX(setIndex) (((SetIndex_t)setIndex)>=(SetIndex_t)1) + +/* Check for valid stdio file handle */ +#define VALID_FILE_HANDLE(stream) ((stream) != NULL) + +/* To check colors and pen numbers */ +/* BEGINREMOVEFROMADDON */ +#define VALID_BASIC_COLOR(BColor) \ + (FirstBasicColor<=(BColor) && (BColor)<=LastBasicColor) +#define VALID_CONTOUR_COLOR(Color) \ + (ContourColorOffset<=(Color) && \ + (Color)<ContourColorOffset+GeneralBase.Limits.MaxNumContourLevels+1) +#define VALID_PLOTTING_COLOR(Color) \ + (VALID_BASIC_COLOR(Color) || VALID_CONTOUR_COLOR(Color)) +#define VALID_INTERFACE_SPECIFIC_COLOR(BColor) \ + (FirstInterfaceColor<=(BColor) && (BColor)<=LastInterfaceColor) +#define VALID_INTERFACE_COLOR(Color) \ + (VALID_PLOTTING_COLOR(Color) || VALID_INTERFACE_SPECIFIC_COLOR(Color)) +#define VALID_MULTICOLOR_COLOR(Color) \ + (((Color) == MultiColor_C) || ((Color) == MultiColor2_C) || \ + ((Color) == MultiColor3_C) || ((Color) == MultiColor4_C) || \ + ((Color) == MultiColor5_C) || ((Color) == MultiColor6_C) || \ + ((Color) == MultiColor7_C) || ((Color) == MultiColor8_C)) +#define VALID_RGB_COLOR(Color) \ + ((Color) == RGBColor_C) +#define VALID_ASSIGNABLE_COLOR(C) \ + (VALID_BASIC_COLOR(C) || \ + VALID_MULTICOLOR_COLOR(C) || \ + VALID_RGB_COLOR(C)) +#define VALID_PEN_OFFSET(PenOffset) \ + (Black_C<=(PenOffset) && (PenOffset)<=NumPlotterPens) +#define VALID_PEN_OFFSET_FOR_OBJECT(PenOffset) \ + (FirstObjectPen<=(PenOffset) && (PenOffset)<=LastObjectPen) + + +/* to check FE cells */ +#define VALID_ELEMENT_TYPE(element_type) \ + ((element_type) == ZoneType_FETriangle || \ + (element_type) == ZoneType_FEQuad || \ + (element_type) == ZoneType_FETetra || \ + (element_type) == ZoneType_FEBrick || \ + (element_type) == ZoneType_FELineSeg) + + + +/* + * Test validity of zone and variable names. A valid name is one that has a + * valid reference, is not padded with spaces and is within the maximum + * specified length. + */ +#define VALID_NAME(Name, MaxLength) \ + (VALID_REF(Name) && \ + (ISEMPTYSTRING(Name) || \ + (!isspace((Name)[0]) && !isspace((Name)[strlen(Name)-1]))) && \ + strlen(Name) <= (MaxLength)) +#define VALID_ZONE_NAME(Name) VALID_NAME((Name), MaxChrsZnTitle) +#define VALID_VAR_NAME(Name) VALID_NAME((Name), MaxChrsVarName) + + +/* Special test for lighting effect (don't allow "none" in some cases) */ +#define VALID_LIGHTINGEFFECT(L) \ + (((L) == LightingEffect_Paneled) || ((L) == LightingEffect_Gouraud)) + + +/* type definition for assert failure notification function */ +typedef void (*TAssertFailureNotifyFunc)( + const char *expression, /* text representation of the assertion */ + const char *file_name, /* name of the file containing the assertion */ + int line); /* line number in the file of the assertion */ + +#if !defined STD_ASSERTS +/* external function prototypes */ +extern void TAssert( + const char *expression, /* text representation of the assertion */ + const char *file_name, /* name of the file containing the assertion */ + int line); /* line number in the file of the assertion */ + +extern TAssertFailureNotifyFunc InstallTAssertFailureNotify( + TAssertFailureNotifyFunc new_function); /* new notification function */ +#endif /* !STD_ASSERTS */ +/* ENDREMOVEFROMADDON */ + +#if defined NO_ASSERTS +/* BEGINREMOVEFROMADDON */ +# define TASSERT(EXPR) +/* ENDREMOVEFROMADDON */ +# define INVARIANT(EXPR) +# define REQUIRE(EXPR) +# define ENSURE(EXPR) +# define CHECK(EXPR) +# ifdef VERIFY +# undef VERIFY +# endif +# define VERIFY(EXPR) ((void)(EXPR)) +/* + * Only define IGNORENOTIMPLEMENTED if building a "test" release build + * that you are fully aware may contain unimplemented features. + */ +# if defined IGNORENOTIMPLEMENTED +# define NOT_IMPLEMENTED() CHECK(FALSE) +# else +# if defined MSWIN +/* + * NOT_IMPLEMENTED is defined using a parameter, but should be called with none, + * this will then throw a warning and not break the compile. Unix doesn't pick + * up this warning, so break the compile under Unix + */ +# define NOT_IMPLEMENTED(x) TAssert("Not Implemented", __FILE__, __LINE__) +# endif +# if defined UNIXX +# define NOT_IMPLEMENTED() not implemented /* intentionally break the compile */ +# endif +# endif +#elif defined STD_ASSERTS +/* BEGINREMOVEFROMADDON */ +# define TASSERT(EXPR) assert(EXPR) +/* ENDREMOVEFROMADDON */ +# define INVARIANT(EXPR) assert(EXPR) +# define REQUIRE(EXPR) assert(EXPR) +# define ENSURE(EXPR) assert(EXPR) +# define CHECK(EXPR) assert(EXPR) +# ifdef VERIFY +# undef VERIFY +# endif +# ifndef VERIFY +# if defined NDEBUG +# define VERIFY(EXPR) ((void)(EXPR)) +# else +# define VERIFY(EXPR) assert(EXPR) +# endif +# endif /* VERIFY */ +# define NOT_IMPLEMENTED() assert(!("Not Implemented")) +#else +/* BEGINREMOVEFROMADDON */ +#if defined (MSWIN) +#if defined CHECKED_BUILD +#include <string> +#include <vector> +#include <algorithm> + +class AssertionLog +{ +public: + static void initializeAssertLog(const std::string &fileName); + static bool isLoggingAssertions(); + static void addAssertion(const std::string &message); +private: + static void writeOutAssertion(const std::string &message); +private: + static bool logAssertions; + static std::string logFileName; + static std::vector<std::string> assertList; +}; + +extern void TWinCheckedFailedLine(const char *Expr, + const char *FileName, + int LineNum); + +#define TASSERT(EXPR)\ + do { if (!(EXPR)) { TWinCheckedFailedLine(#EXPR,__FILE__,__LINE__); } } while (0) +#else +#define TASSERT(EXPR) ASSERT(EXPR) /* MFC assert. +Works in both release & debug builds */ +#endif /* CHECKED_BUILD */ +#else +#define TASSERT(EXPR) (void)((EXPR) || (TAssert(#EXPR, __FILE__, __LINE__), 0)) +#endif + +# if defined NO_INVARIANTS +# define INVARIANT(EXPR) +# else +# define INVARIANT(EXPR) TASSERT(EXPR) +# endif + +# if defined NO_PRECONDITIONS +# define REQUIRE(EXPR) +# else +# define REQUIRE(EXPR) TASSERT(EXPR) +# endif + +# if defined NO_POSTCONDITIONS +# define ENSURE(EXPR) +# else +# define ENSURE(EXPR) TASSERT(EXPR) +# endif + +# if defined VERIFY +# undef VERIFY +# endif + +# if defined NO_CHECKS +# define CHECK(EXPR) +# define VERIFY(EXPR) ((void)(EXPR)) +# else +# define CHECK(EXPR) TASSERT(EXPR) +# if defined NDEBUG +# define VERIFY(EXPR) ((void)(EXPR)) +# else +# define VERIFY(EXPR) TASSERT(EXPR) +# endif +# endif + +# if defined NICE_NOT_IMPLEMENTED +# define NOT_IMPLEMENTED() NiceNotImplemented() +# else +# define NOT_IMPLEMENTED() TASSERT(!("Not Implemented")) +# endif +/* ENDREMOVEFROMADDON */ +#endif +/* BEGINREMOVEFROMADDON */ +#if !defined STD_ASSERTS +extern void TecplotMopupOnAssert(void); +#endif /* !STD_ASSERTS */ + +#if defined NICE_NOT_IMPLEMENTED +extern void NiceNotImplemented(void); +#endif +/* ENDREMOVEFROMADDON */ + +/* convenience macros for implication, P -> Q, and equivalence, P <-> Q. */ +#define IMPLICATION(P,Q) (!(P) || (Q)) +#define EQUIVALENCE(P,Q) ((P) == (Q)) + +/* BEGINREMOVEFROMADDON */ +#if defined RLM +#define VALID_RLM_HANDLE(h) ((h) != NULL) +#endif /* RLM */ +/* ENDREMOVEFROMADDON */ + + +#endif /* TASSERT_H */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECIO.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECIO.h new file mode 100644 index 00000000000..fabb1344b0b --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECIO.h @@ -0,0 +1,24 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "TECXXX.h" diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECXXX.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECXXX.h new file mode 100644 index 00000000000..a61539e90bc --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TECXXX.h @@ -0,0 +1,698 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* + * TECXXX.h: Copyright (C) 1988-2008 Tecplot, Inc. + */ + +#if !defined TECXXX_H_ +#define TECXXX_H_ + +#if !defined CRAY +# define TECFOREIGN112 tecforeign112 +# define TECINI112 tecini112 +# define TECZNE112 teczne112 +# define TECDAT112 tecdat112 +# define TECNOD112 tecnod112 +# define TECGEO112 tecgeo112 +# define TECTXT112 tectxt112 +# define TECLAB112 teclab112 +# define TECFIL112 tecfil112 +# define TECEND112 tecend112 +# define TECUSR112 tecusr112 +# define TECAUXSTR112 tecauxstr112 +# define TECZAUXSTR112 teczauxstr112 +# define TECVAUXSTR112 tecvauxstr112 +# define TECFACE112 tecface112 +# define TECPOLY112 tecpoly112 + +# define TECFOREIGN111 tecforeign111 +# define TECINI111 tecini111 +# define TECZNE111 teczne111 +# define TECDAT111 tecdat111 +# define TECNOD111 tecnod111 +# define TECGEO111 tecgeo111 +# define TECTXT111 tectxt111 +# define TECLAB111 teclab111 +# define TECFIL111 tecfil111 +# define TECEND111 tecend111 +# define TECUSR111 tecusr111 +# define TECAUXSTR111 tecauxstr111 +# define TECZAUXSTR111 teczauxstr111 +# define TECVAUXSTR111 tecvauxstr111 +# define TECFACE111 tecface111 +# define TECPOLY111 tecpoly111 + +# define TECFOREIGN110 tecforeign110 +# define TECINI110 tecini110 +# define TECZNE110 teczne110 +# define TECDAT110 tecdat110 +# define TECNOD110 tecnod110 +# define TECGEO110 tecgeo110 +# define TECTXT110 tectxt110 +# define TECLAB110 teclab110 +# define TECFIL110 tecfil110 +# define TECEND110 tecend110 +# define TECUSR110 tecusr110 +# define TECAUXSTR110 tecauxstr110 +# define TECZAUXSTR110 teczauxstr110 +# define TECVAUXSTR110 tecvauxstr110 +# define TECFACE110 tecface110 + +# define TECFOREIGN100 tecforeign100 +# define TECINI100 tecini100 +# define TECZNE100 teczne100 +# define TECDAT100 tecdat100 +# define TECNOD100 tecnod100 +# define TECGEO100 tecgeo100 +# define TECTXT100 tectxt100 +# define TECLAB100 teclab100 +# define TECFIL100 tecfil100 +# define TECEND100 tecend100 +# define TECUSR100 tecusr100 +# define TECAUXSTR100 tecauxstr100 +# define TECZAUXSTR100 teczauxstr100 +# define TECVAUXSTR100 tecvauxstr100 +# define TECFACE100 tecface100 + +# define TECINI tecini +# define TECZNE teczne +# define TECDAT tecdat +# define TECNOD tecnod +# define TECGEO tecgeo +# define TECTXT tectxt +# define TECLAB teclab +# define TECFIL tecfil +# define TECEND tecend +# define TECUSR tecusr +#endif + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else +#define INTEGER4 int +#define INTEGER2 short +#endif + +#if defined _WIN32 +#if !defined MSWIN +#define MSWIN /* MSWIN */ +#endif +#endif /* _WIN32 */ + +#if !defined (EXTERNC) +# if defined (__cplusplus) +# define EXTERNC extern "C" +# else +# define EXTERNC +# endif /* __cplusplus */ +#endif /* EXTERN_C */ + +#if !defined (STDCALL) +# if defined MSWIN +# define STDCALL __stdcall +# else /* !MSWIN */ +# define STDCALL +# endif /* MSWIN */ +#endif /* STDCALL */ + +#if !defined (DLLEXPORT) +# if defined (MSWIN) +# define DLLEXPORT _declspec (dllexport) +# else +# define DLLEXPORT +# endif /* MSWIN */ +#endif /* DLLEXPORT */ + +#if !defined (DLLIMPORT) +# if defined (MSWIN) +# define DLLIMPORT _declspec (dllimport) +# else +# define DLLIMPORT +# endif /* MSWIN */ +#endif /* DLLIMPORT */ + + +#if defined (TECPLOTKERNEL) +/* CORE SOURCE CODE REMOVED */ +#else /* !TECPLOTKERNAL && !MAKEARCHIVE */ +# define LIBCALL STDCALL +# define LIBFUNCTION EXTERNC DLLIMPORT +#endif + +/* + * V11.3 tecio functions + */ + +LIBFUNCTION void LIBCALL TECFOREIGN112(INTEGER4 *OutputForeignByteOrder); + +LIBFUNCTION INTEGER4 LIBCALL TECINI112(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *FileType, + INTEGER4 *Debug, + INTEGER4 *VIsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECZNE112(char *ZoneTitle, + INTEGER4 *ZoneType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMxOrNumFaces, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlock, + INTEGER4 *NumFaceConnections, + INTEGER4 *FaceNeighborMode, + INTEGER4 *TotalNumFaceNodes, + INTEGER4 *NumConnectedBoundaryFaces, + INTEGER4 *TotalNumBoundaryConnections, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone); + +LIBFUNCTION INTEGER4 LIBCALL TECDAT112(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECNOD112(INTEGER4 *NData); + +LIBFUNCTION INTEGER4 LIBCALL TECEND112(void); + +LIBFUNCTION INTEGER4 LIBCALL TECLAB112(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECUSR112(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECGEO112(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECTXT112(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECFIL112(INTEGER4 *F); + +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR112(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR112(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR112(INTEGER4 *Var, + char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECFACE112(INTEGER4 *FaceConnections); + +LIBFUNCTION INTEGER4 LIBCALL TECPOLY112(INTEGER4 *FaceNodeCounts, + INTEGER4 *FaceNodes, + INTEGER4 *FaceLeftElems, + INTEGER4 *FaceRightElems, + INTEGER4 *FaceBndryConnectionCounts, + INTEGER4 *FaceBndryConnectionElems, + INTEGER4 *FaceBndryConnectionZones); + +/* + * V11.1 tecio functions TODO (JN): Tecplot's version is still in flux so the .1 may change + */ + +LIBFUNCTION void LIBCALL TECFOREIGN111(INTEGER4 *OutputForeignByteOrder); + +LIBFUNCTION INTEGER4 LIBCALL TECINI111(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *FileType, + INTEGER4 *Debug, + INTEGER4 *VIsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECZNE111(char *ZoneTitle, + INTEGER4 *ZoneType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMxOrNumFaces, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlock, + INTEGER4 *NumFaceConnections, + INTEGER4 *FaceNeighborMode, + INTEGER4 *TotalNumFaceNodes, + INTEGER4 *NumConnectedBoundaryFaces, + INTEGER4 *TotalNumBoundaryConnections, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone); + +LIBFUNCTION INTEGER4 LIBCALL TECDAT111(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECNOD111(INTEGER4 *NData); + +LIBFUNCTION INTEGER4 LIBCALL TECEND111(void); + +LIBFUNCTION INTEGER4 LIBCALL TECLAB111(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECUSR111(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECGEO111(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECTXT111(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECFIL111(INTEGER4 *F); + +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR111(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR111(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR111(INTEGER4 *Var, + char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECFACE111(INTEGER4 *FaceConnections); + +LIBFUNCTION INTEGER4 LIBCALL TECPOLY111(INTEGER4 *FaceNodeCounts, + INTEGER4 *FaceNodes, + INTEGER4 *FaceLeftElems, + INTEGER4 *FaceRightElems, + INTEGER4 *FaceBndryConnectionCounts, + INTEGER4 *FaceBndryConnectionElems, + INTEGER2 *FaceBndryConnectionZones); + + +/* + * V11 tecio functions + */ + +LIBFUNCTION void LIBCALL TECFOREIGN110(INTEGER4 *OutputForeignByteOrder); + +LIBFUNCTION INTEGER4 LIBCALL TECINI110(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECZNE110(char *ZoneTitle, + INTEGER4 *ZoneType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMxOrNumFaces, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlock, + INTEGER4 *NumFaceConnections, + INTEGER4 *FaceNeighborMode, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone); + +LIBFUNCTION INTEGER4 LIBCALL TECDAT110(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECNOD110(INTEGER4 *NData); + +LIBFUNCTION INTEGER4 LIBCALL TECEND110(void); + +LIBFUNCTION INTEGER4 LIBCALL TECLAB110(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECUSR110(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECGEO110(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECTXT110(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECFIL110(INTEGER4 *F); + +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR110(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR110(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR110(INTEGER4 *Var, + char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECFACE110(INTEGER4 *FaceConnections); + + +/* + * V10 tecio functions kept for backward compatability. + */ + +LIBFUNCTION void LIBCALL TECFOREIGN100(INTEGER4 *OutputForeignByteOrder); + +LIBFUNCTION INTEGER4 LIBCALL TECINI100(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECZNE100(char *ZoneTitle, + INTEGER4 *ZoneType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMxOrNumFaces, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + INTEGER4 *IsBlock, + INTEGER4 *NumFaceConnections, + INTEGER4 *FaceNeighborMode, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone); + +LIBFUNCTION INTEGER4 LIBCALL TECDAT100(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECNOD100(INTEGER4 *NData); + +LIBFUNCTION INTEGER4 LIBCALL TECEND100(void); + +LIBFUNCTION INTEGER4 LIBCALL TECLAB100(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECUSR100(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECGEO100(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECTXT100(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECFIL100(INTEGER4 *F); + +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR100(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR100(char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR100(INTEGER4 *Var, + char *Name, + char *Value); + +LIBFUNCTION INTEGER4 LIBCALL TECFACE100(INTEGER4 *FaceConnections); + +/* Old V9 functions retained for backward compatibility */ + +LIBFUNCTION INTEGER4 LIBCALL TECINI(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECZNE(char *ZoneTitle, + INTEGER4 *IMx, + INTEGER4 *JMx, + INTEGER4 *KMx, + char *ZFormat, + char *DupList); + +LIBFUNCTION INTEGER4 LIBCALL TECDAT(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble); + +LIBFUNCTION INTEGER4 LIBCALL TECNOD(INTEGER4 *NData); + +LIBFUNCTION INTEGER4 LIBCALL TECEND(void); + +LIBFUNCTION INTEGER4 LIBCALL TECLAB(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECUSR(char *S); + +LIBFUNCTION INTEGER4 LIBCALL TECGEO(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECTXT(double *XPos, + double *YPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + char *Text, + char *mfc); + +LIBFUNCTION INTEGER4 LIBCALL TECFIL(INTEGER4 *F); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#endif /* TECXXX_H_ */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TEXT.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TEXT.h new file mode 100644 index 00000000000..06887c923bf --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TEXT.h @@ -0,0 +1,62 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#if defined EXTERN +#undef EXTERN +#endif +#if defined TEXTMODULE +#define EXTERN +#else +#define EXTERN extern +#endif + +#define _TEXT_H_INCLUDED + +/* These macros for checking CoordSys_e and Units of text objects (i.e., those associated with the text tool). */ +#define VALID_TEXT_COORDSYS(sys) (((sys)==CoordSys_Frame)||((sys)==CoordSys_Grid)||((sys)==CoordSys_Grid3D)) +#define VALID_TEXT_UNITS(units) (((units)==Units_Grid)||((units)==Units_Frame)||((units)==Units_Point)) +#define VALID_TEXT_COORDSYS_AND_UNITS(pos_sys, size_units) \ + ( VALID_TEXT_COORDSYS((pos_sys)) && \ + VALID_TEXT_UNITS((size_units)) && \ + ! ((pos_sys) == CoordSys_Frame && (size_units) == Units_Grid) ) + +/* This is for any type of font in Tecplot. */ +#define VALID_FONT_SIZEUNITS(units) (((units)==Units_Grid)||((units)==Units_Frame)||((units)==Units_Point)||(units)==Units_AxisPercentage) + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if 0 /* contract template */ +#endif +#if 0 /* contract template */ +#endif +#endif /* TECPLOTKERNEL */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.cpp new file mode 100644 index 00000000000..5ae0cb73a0a --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.cpp @@ -0,0 +1,362 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" + + +using namespace std; + +namespace tecplot +{ +namespace strutil +{ + +#if defined MSWIN && !defined TECPLOTKERNEL +/** + * Stub function for non-TECPLOTKERNEL + */ +string LookUpTranslation(string& str) +{ + return string(str); +} +#endif + +/** + * Convenience function for creating Utf8 string translations. + * + * @param str + * String to translate. + * + * @return + * A new Utf8 translated string. + */ +static inline string* createUtf8StringTranslation(string& str) +{ +#if defined MSWIN + string *result = new string(LookUpTranslation(str)); +#else + string *result = new string(str); +#endif + ENSURE(VALID_REF(result)); + return result; +} + +#if defined MSWIN +/** + * Convenience function for creating wide string translations. + * + * @param str + * String to translate. + * + * @return + * A new wide translated string. + */ +static inline wstring* createWideStringTranslation(string& str) +{ + wstring *result = new wstring; + *result = StringToWString(LookUpTranslation(str)); + + ENSURE(VALID_REF(result)); + return result; +} +#endif + +#if defined MSWIN +/** + * Convenience function for creating wide string with the given mode. + * + * @param mode + * Indicates if this string is to be translated or not. + * @param str + * String to translate. + * + * @return + * A new wide translated string. + */ +static inline wstring* createWideString(TranslatedString::Mode mode, + string& str) +{ + REQUIRE(mode == TranslatedString::DoTranslate || mode == TranslatedString::DontTranslate); + + wstring* result; + if (mode == TranslatedString::DoTranslate) + result = createWideStringTranslation(str); + else + result = new wstring(StringToWString(str)); + + return result; +} +#endif + +/** + */ +void TranslatedString::init(TranslatedString::Mode mode, + const char* str, + const char* translatorNotes) +{ + REQUIRE(mode == DoTranslate || mode == DontTranslate); + REQUIRE(VALID_REF_OR_NULL(str)); + REQUIRE(VALID_REF_OR_NULL(translatorNotes)); + + m_mode = mode; + m_isNull = (str == NULL); + if (!m_isNull) + m_string = str; + m_utf8String = NULL; // ...on demand resource +#if defined MSWIN + m_wideString = NULL; // ...on demand resource +#endif +} + +/** + */ +TranslatedString::TranslatedString() +{ + init(DontTranslate, (const char*)NULL, (const char*)NULL); + ENSURE(this->isValid()); +} + +/** + */ +TranslatedString TranslatedString::null() +{ + return dontTranslate(NULL); +} + +/** + */ +TranslatedString::TranslatedString(TranslatedString::Mode mode, + const char* str, + const char* translatorNotes) +{ + + REQUIRE(mode == DoTranslate || mode == DontTranslate); + REQUIRE(VALID_REF_OR_NULL(str)); + REQUIRE(VALID_REF_OR_NULL(translatorNotes)); + + init(mode, str, translatorNotes); + ENSURE(this->isValid()); +} + +/** + */ +TranslatedString::~TranslatedString() +{ + delete m_utf8String; +#if defined MSWIN + delete m_wideString; +#endif +} + +#if !defined NO_ASSERTS +/** + */ +bool TranslatedString::isValid() const +{ + CHECK(IMPLICATION(m_isNull, m_string.length() == 0)); +#if 0 + /* TODO(DTO/RMS/CAM): 11/2/2007 + * Code currently exists in Tecplot where we call translate() on a + * variable. This seems wrong and at times (PleaseWait() in + * particular) the variable passed is a NULL pointer which causes + * this assertion to fail. There is not enough time before v11.2 + * release to remove all translate() calls to non-literal strings so + * we'll have to do this as a post release cleanup. For now just + * deactivate this assertion. + */ + CHECK(IMPLICATION(m_isNull, m_mode == DontTranslate)); +#endif + + return true; +} +#endif + +/** + */ +bool TranslatedString::isNull() const +{ + INVARIANT(this->isValid()); + return m_isNull; +} + +/** + */ +bool TranslatedString::isNullOrZeroLength() const +{ + INVARIANT(this->isValid()); + return m_isNull || m_string.length() == 0; +} + +/** + */ +const char* TranslatedString::c_str() +{ + INVARIANT(this->isValid()); + + const char* result = NULL; + if (!isNull()) + { + if (m_mode == DoTranslate) + { + if (m_utf8String == NULL) + m_utf8String = createUtf8StringTranslation(m_string); + result = m_utf8String->c_str(); + } + else // ...if we aren't translating don't bother creating another Utf8 copy just use m_string + result = m_string.c_str(); + } + + ENSURE(result == NULL || VALID_REF(result)); + return result; +} + +#if defined MSWIN +/** + */ +const wchar_t *TranslatedString::c_wstr() +{ + INVARIANT(this->isValid()); + + const wchar_t *result = NULL; + if (!isNull()) + { + if (m_wideString == NULL) + m_wideString = createWideString(m_mode, m_string); + result = m_wideString->c_str(); + } + + ENSURE(result == NULL || VALID_REF(result)); + return result; +} +#endif + +/** + */ +TranslatedString::operator string() +{ + INVARIANT(this->isValid()); + REQUIRE(!isNull()); + + string* result; + if (m_mode == DoTranslate) + { + if (m_utf8String == NULL) + m_utf8String = createUtf8StringTranslation(m_string); + result = m_utf8String; + } + else // ...if we aren't translating don't bother creating another Utf8 copy just use m_string + result = &m_string; + + return *result; +} + +#if defined MSWIN +/** + */ +TranslatedString::operator wstring() +{ + INVARIANT(this->isValid()); + REQUIRE(!isNull()); + + if (m_wideString == NULL) + m_wideString = createWideString(m_mode, m_string); + + return *m_wideString; +} +#endif + +/** + */ +TranslatedString& TranslatedString::operator =(const TranslatedString& other) +{ + REQUIRE(other.isValid()); + + if (this != &other) // ...only perform if not self assignment + { + m_mode = other.m_mode; + m_isNull = other.m_isNull; + m_string = other.m_string; + m_utf8String = (other.m_utf8String != NULL ? new string(*other.m_utf8String) : NULL); +#if defined MSWIN + m_wideString = (other.m_wideString != NULL ? new wstring(*other.m_wideString) : NULL); +#endif + } + + ENSURE(this->isValid()); + return *this; +} + +/** + */ +TranslatedString::TranslatedString(const TranslatedString& other) +{ + REQUIRE(other.isValid()); + + m_mode = other.m_mode; + m_isNull = other.m_isNull; + m_string = other.m_string; + m_utf8String = (other.m_utf8String != NULL ? new string(*other.m_utf8String) : NULL); +#if defined MSWIN + m_wideString = (other.m_wideString != NULL ? new wstring(*other.m_wideString) : NULL); +#endif + + ENSURE(this->isValid()); +} + +/** + */ +TranslatedString TranslatedString::translate(const char* str, + const char* translatorNotes) +{ + REQUIRE(VALID_REF_OR_NULL(str)); + REQUIRE(VALID_REF_OR_NULL(translatorNotes)); + + return TranslatedString(DoTranslate, str, translatorNotes); +} + +/** + */ +TranslatedString TranslatedString::dontTranslate(const char* str) +{ + REQUIRE(VALID_REF_OR_NULL(str)); + + return TranslatedString(DontTranslate, str, NULL); +} + +} +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.h new file mode 100644 index 00000000000..9e3311a2e36 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/TranslatedString.h @@ -0,0 +1,293 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + +#ifndef TECPLOT_STRUTIL_TRANSLATEDSTRING +#define TECPLOT_STRUTIL_TRANSLATEDSTRING + +#if defined MSWIN +#pragma warning(disable : 4181) +#endif + +namespace tecplot +{ +namespace strutil +{ + +/** + * Class responsible for translating strings for internationalization. This + * class is used both to perform the translation and to identify which strings + * are/aren't in need of translation. + * + * With the exception of the empty constructor all translated strings are + * created via static methods or inline helper functions named translate() and + * dontTranslate(). Translated strings created with a call to translate() are + * flagged as needing human translation and return the translated value at + * runtime. Translated strings created with a call to dontTranslate() are + * flagged as not needing human translation and return the non-translated value + * at runtime. Examples: + * + * ErrMsg(translate("Can I have %d cookies?", numCookies); + * ErrMsg(dontTranslate("%s"), errMsgString); + * + * Conversion methods exists for std::string so that they operate well + * together. Therefore you can pass translated strings to methods or functions + * that receive std::string or std::string references. Additionally you can + * perform std::string operations by casting the translated string to a + * std::string. For example: + * + * if (string(dialogTitle).size() != 0) + * ...do something useful + * + * We have intentionally not provided conversion methods for "const char*" (an + * internal representation of the object's string) because of the risk of the + * client using the pointer after the translated string object goes out of + * scope. + * + * @author David Ossorio + */ +class TranslatedString +{ +public: + /** + * Enumeration describing available translation modes. + */ + typedef enum { DontTranslate, DoTranslate } Mode; + + /** + * Constructs an empty translated string. It is equivalent to calling + * TranslatedString::null(). + */ + TranslatedString(); + + /** + * Convenience function for creating a NULL translated string. + * + * @return + * NULL translated string. + */ + static TranslatedString null(); + + /** + * Creates a translated string object and marks it as a string needing + * translation. + * + * @param str + * Character string to translate. + * @param translatorNotes + * Optional notes for the human translator describing the meaning + * of the string. + */ + static TranslatedString translate(const char* str, + const char* translatorNotes = NULL); + + /** + * Creates a translated string object and marks it as a string not needing + * translation. + * + * @param str + * Character string to translate. The str parameter can be a NULL + * pointer. + */ + static TranslatedString dontTranslate(const char* str); + + /** + * Destructor. + */ + virtual ~TranslatedString(); + + /** + * Indicates if the object's string is NULL. + * + * @return + * true if the object's string is NULL, false otherwise. + */ + virtual bool isNull() const; + + /** + * Indicates if the object's string is NULL or zero length. + * + * @return + * true if the object's string is NULL or zero length, false otherwise. + */ + virtual bool isNullOrZeroLength() const; + + /** + * Returns the internal representation of the object's string. Use this + * result carefully. When this object goes out of scope so does this + * references. + * + * @return + * Pointer to the internal representation of the object's string. + */ + virtual const char* c_str(); + +#if defined MSWIN + /** + * Returns the internal representation of the wide character version of the + * object's string. Use this result carefully. When this object goes out of + * scope so does this references. + * + * @return + * Pointer to the internal representation of the object's string. + */ + virtual const wchar_t* c_wstr(); +#endif + + /** + * Returns a copy of the object's string by this object. The result is + * translated or not depending on the platform and how it was created. + * + * @return + * Copy of the object's string. + */ + virtual operator std::string(); + +#if defined MSWIN + /** + * Returns a copy of the wide character version of the object's string. + * The result is translated or not depending on the platform and how it was + * created. + * + * @return + * Copy of the wide character version of the object's string. + */ + virtual operator std::wstring(); +#endif + + /** + * Assignment operator. + */ + virtual TranslatedString& operator =(const TranslatedString& other); + + /** + * Copy constructor. + */ + TranslatedString(const TranslatedString& other); + +#if !defined NO_ASSERTS + /** + * Used only for assertions. + */ + virtual bool isValid() const; +#endif /* !NO_ASSERTS */ + +private: + /** + * Constructs a translated string. This is declared private to make sure + * clients use translate() or dontTranslate() so that Tecplot's translation + * parser can easily extract strings from the source code. + * + * @param mode + * Indicates if this string is to be translated or not at runtime. + * @param str + * Character string to translate. + * @param translatorNotes + * Optional notes for the human translator describing the meaning + * of the string. + */ + TranslatedString(TranslatedString::Mode mode, + const char* str, + const char* translatorNotes); + + /** + * Convenience method for initialize a translated string. + * + * @param mode + * Indicates if this string is to be translated or not at runtime. + * @param str + * Character string to translate. + * @param translatorNotes + * Optional notes for the human translator describing the meaning + * of the string. + */ + void init(TranslatedString::Mode mode, + const char* str, + const char* translatorNotes); + + /** + * Private instance data. + */ + TranslatedString::Mode m_mode; + bool m_isNull; + std::string m_string; + std::string *m_utf8String; +#if defined MSWIN + std::wstring *m_wideString; +#endif +}; + +/** + * Convenience function for creating a translated string object and marking it + * as a string needing translation. + * + * @param str + * Character string to translate. + * @param translatorNotes + * Optional notes for the human translator describing the meaning + * of the string. + */ +inline TranslatedString translate(const char* str, + const char* translatorNotes = NULL) +{ + return TranslatedString::translate(str, translatorNotes); +} + +/** + * Convenience function for creating a translated string object and marking it + * as a string not needing translation. + * + * @param str + * Character string to translate. The str parameter can be a NULL + * pointer. + */ +inline TranslatedString dontTranslate(const char* str) +{ + return TranslatedString::dontTranslate(str); +} + +/** + * Convenience function for creating a translated string object and marks it as + * a string not needing translation. + * + * @param str + * String to translate. + */ +inline TranslatedString dontTranslate(const std::string& str) +{ + return TranslatedString::dontTranslate(str.c_str()); +} + +} +} + +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/VERSION.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/VERSION.h new file mode 100644 index 00000000000..a6528cf9dea --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/VERSION.h @@ -0,0 +1,23 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/alloc.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/alloc.cpp new file mode 100644 index 00000000000..be5a0b0127a --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/alloc.cpp @@ -0,0 +1,161 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" + +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define ALLOCMODULE +#include "GLOBAL.h" +#include "ALLOC.h" +#include "TASSERT.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TRACK_MEMORY_USAGE +static size_t memInUse = 0; +static size_t memTotalHighMark = 0; +static size_t memCurrentHighMark = 0; +static size_t memSavedHighMark = 0; +Mutex_pa memMutex; + +void initMemoryUsageTracking(void) +{ + REQUIRE(!Thread_ThreadingIsInitialized()); + Thread_InitMutex(&memMutex); +} + +void cleanUpMemoryUsageTracking(void) +{ + REQUIRE(!Thread_ThreadingIsInitialized()); + Thread_FreeMutex(&memMutex); +} + +void trackMemoryClearHighMark(void) +{ + memCurrentHighMark = memInUse; +} + +void trackMemorySaveHighMark(void) +{ + memSavedHighMark = memCurrentHighMark; +} + +void trackMemoryAlloc(size_t size) +{ + REQUIRE(memInUse >= 0); + + if (Thread_ThreadingIsInitialized()) + Thread_LockMutex(memMutex); + + memInUse += size; + if (memInUse > memTotalHighMark) + memTotalHighMark = memInUse; + if (memInUse > memCurrentHighMark) + memCurrentHighMark = memInUse; + + if (Thread_ThreadingIsInitialized()) + Thread_UnlockMutex(memMutex); +} + +void trackMemoryFree(size_t size) +{ + if (Thread_ThreadingIsInitialized()) + Thread_LockMutex(memMutex); + + memInUse -= size; + + if (Thread_ThreadingIsInitialized()) + Thread_UnlockMutex(memMutex); + + ENSURE(memInUse >= 0); +} + +void getMemoryUsage(size_t* memoryInUse, + size_t* memoryCurrentHighMark, + size_t* memorySavedHighMark, + size_t* memoryTotalHighMark) +{ + REQUIRE(VALID_REF_OR_NULL(memoryInUse)); + REQUIRE(VALID_REF_OR_NULL(memoryCurrentHighMark)); + REQUIRE(VALID_REF_OR_NULL(memorySavedHighMark)); + REQUIRE(VALID_REF_OR_NULL(memoryTotalHighMark)); + if (memoryInUse != NULL) + *memoryInUse = memInUse; + if (memoryCurrentHighMark != NULL) + *memoryCurrentHighMark = memCurrentHighMark; + if (memorySavedHighMark != NULL) + *memorySavedHighMark = memSavedHighMark; + if (memoryTotalHighMark != NULL) + *memoryTotalHighMark = memTotalHighMark; +} +#endif + +#if defined MSWIN && defined ALLOC_HEAP +#define HEAPMIN 512 +#endif + +#if defined MSWIN && defined ALLOC_HEAP +/** + */ +void *MSWinAlloc(DWORD nSize) +{ + long *pMem = NULL; + if (nSize < HEAPMIN) + pMem = (long *)malloc(sizeof(long) + nSize); + else + pMem = (long *)HeapAlloc(GetProcessHeap(), NULL, sizeof(long) + nSize); + if (pMem) + pMem[0] = nSize; + return (void *)&(pMem[1]); +} +#endif + +#if defined MSWIN && defined ALLOC_HEAP +/** + */ +void MSWinFree(void *pMem) +{ + REQUIRE(VALID_REF(pMem)); + if (pMem) + { + long *pMemLong = &(((long *)pMem)[-1]); + if (pMemLong[0] < HEAPMIN) + free((void *)pMemLong); + else + HeapFree(GetProcessHeap(), NULL, (void *)pMemLong); + } +} +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/arrlist.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/arrlist.cpp new file mode 100644 index 00000000000..c4955817eed --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/arrlist.cpp @@ -0,0 +1,1671 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* + ***************************************************************** + ***************************************************************** + ******* ******** + ****** Copyright (C) 1988-2008 Tecplot, Inc. ******** + ******* All Rights Reserved. ******** + ******* ******** + ***************************************************************** + ***************************************************************** + */ + +#define ARRLISTMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "ALLOC.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "ARRLIST.h" + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/* + * ABSTRACT: + * + * This general purpose list uses an array implementation. The high use member + * functions have macro covers to make the implementation both efficient with + * respect to speed without compromising the internal representation. The + * internal array is allocated to fit the requested type's item size. Most + * intrinsic 'C' and Tecplot types are available. + */ + + +/** + * Copies the private array items from the specified source to the target + * location. The buffers may overlap. + * + * note + * Originally this function was a macro that called memmove + * directly: + * + * #define CopyArrayItems(TargetArray, TargetOffset, \ + * SourceArray, SourceOffset, \ + * Count, ItemSize) \ + * (memmove(&((TargetArray)[(TargetOffset)*ItemSize]), \ + * &((SourceArray)[(SourceOffset)*ItemSize]), \ + * Count*ItemSize)) + * + * This however proved troublesome as some machines replaced the memmove + * with a call to memcpy in the linker. The memcpy function does not support + * overlapping moves so I could not use it. This function should be just + * about as fast however so it is no big deal. + * + * param TargetArray + * Base address of the target array to receive the items. + * param TargetOffset + * Target offset of the first item. + * param SourceArray + * Base address of the source array supplying the items. + * param SourceOffset + * Source offset of the first item. + * param Count + * Number of items to copy. + * param ItemSize + * Item size in bytes. + */ +static void CopyArrayItems(char *TargetArray, + LgIndex_t TargetOffset, + char *SourceArray, + LgIndex_t SourceOffset, + LgIndex_t Count, + SmInteger_t ItemSize) +{ + REQUIRE(VALID_REF(TargetArray)); + REQUIRE(TargetOffset >= 0); + REQUIRE(VALID_REF(SourceArray)); + REQUIRE(SourceOffset >= 0); + REQUIRE(&TargetArray[TargetOffset] != &SourceArray[SourceOffset]); + REQUIRE(Count >= 1); + REQUIRE(1 <= ItemSize && ItemSize <= (SmInteger_t)sizeof(ArrayListItem_u)); + + void* TargetPtr = &TargetArray[TargetOffset * ItemSize]; + void* SourcePtr = &SourceArray[SourceOffset * ItemSize]; + memmove(TargetPtr, SourcePtr, ((size_t)Count) * ItemSize); +} + + +/** + * Adjusts the capacity request as necessary to minimize memory reallocations + * for large lists. Unless the request exceeds the maximum the adjusted + * capacity will be at least as big as requested however it may be larger if it + * is determined that the space requirement is growing faster. If the maximum + * is exceeded zero should be returned. + * + * param ArrayList + * Array list requesting the change in capacity. + * param CurrentCapacity + * Current capacity of the array list. + * param RequestedCapacity + * Capacity request or zero for default size. + * param ClientData + * Any client data needed for the adjustment. + * + * return + * Adjusted capacity that is at least as large as the request or zero if + * unable to satisfy the requested capacity. + */ +static LgIndex_t AdjustCapacityRequest(ArrayList_pa ArrayList, + LgIndex_t CurrentCapacity, + LgIndex_t RequestedCapacity, + ArbParam_t ClientData) +{ + LgIndex_t Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE((RequestedCapacity == 0 && CurrentCapacity == 0) || + RequestedCapacity > CurrentCapacity); + + if (RequestedCapacity != 0 && CurrentCapacity == 0) + { + /* first allocation; assume the request is the desired capacityy */ + Result = RequestedCapacity; + } + else + { + const LgIndex_t DEFAULT_CAPACITY = 32; + LgIndex_t BlockSize = MAX(DEFAULT_CAPACITY, CurrentCapacity / 2); + if (RequestedCapacity == 0) + Result = DEFAULT_CAPACITY; + else + Result = ((RequestedCapacity - 1) / BlockSize + 1) * BlockSize; + } + + ENSURE(Result == 0 || Result >= RequestedCapacity); + return Result; +} + + +/** + * Gets the size of an individual element. + * + * param Type + * Array list element type. + * + * return + * Element size corresponding to the type. + */ +static SmInteger_t GetElementSize(ArrayListType_e Type) +{ + SmInteger_t Result; + + REQUIRE(VALID_ENUM(Type, ArrayListType_e)); + + switch (Type) + { + case ArrayListType_UnsignedChar: + Result = (SmInteger_t)sizeof(unsigned char); + break; + case ArrayListType_UnsignedShort: + Result = (SmInteger_t)sizeof(unsigned short); + break; + case ArrayListType_UnsignedInt: + Result = (SmInteger_t)sizeof(unsigned int); + break; + case ArrayListType_UnsignedLong: + Result = (SmInteger_t)sizeof(unsigned long); + break; + case ArrayListType_Int64: + Result = (SmInteger_t)sizeof(Int64_t); + break; + case ArrayListType_Char: + Result = (SmInteger_t)sizeof(char); + break; + case ArrayListType_Short: + Result = (SmInteger_t)sizeof(short); + break; + case ArrayListType_Int: + Result = (SmInteger_t)sizeof(int); + break; + case ArrayListType_Long: + Result = (SmInteger_t)sizeof(long); + break; + case ArrayListType_Float: + Result = (SmInteger_t)sizeof(float); + break; + case ArrayListType_Double: + Result = (SmInteger_t)sizeof(double); + break; + case ArrayListType_LgIndex: + Result = (SmInteger_t)sizeof(LgIndex_t); + break; + case ArrayListType_EntIndex: + Result = (SmInteger_t)sizeof(EntIndex_t); + break; + case ArrayListType_SmInteger: + Result = (SmInteger_t)sizeof(SmInteger_t); + break; + case ArrayListType_Boolean: + Result = (SmInteger_t)sizeof(Boolean_t); + break; + case ArrayListType_ArbParam: + Result = (SmInteger_t)sizeof(ArbParam_t); + break; + + case ArrayListType_UnsignedCharPtr: + Result = (SmInteger_t)sizeof(unsigned char *); + break; + case ArrayListType_UnsignedShortPtr: + Result = (SmInteger_t)sizeof(unsigned short *); + break; + case ArrayListType_UnsignedIntPtr: + Result = (SmInteger_t)sizeof(unsigned int *); + break; + case ArrayListType_UnsignedLongPtr: + Result = (SmInteger_t)sizeof(unsigned long *); + break; + case ArrayListType_Int64Ptr: + Result = (SmInteger_t)sizeof(Int64_t *); + break; + case ArrayListType_CharPtr: + Result = (SmInteger_t)sizeof(char *); + break; + case ArrayListType_ShortPtr: + Result = (SmInteger_t)sizeof(short *); + break; + case ArrayListType_IntPtr: + Result = (SmInteger_t)sizeof(int *); + break; + case ArrayListType_LongPtr: + Result = (SmInteger_t)sizeof(long *); + break; + case ArrayListType_FloatPtr: + Result = (SmInteger_t)sizeof(float *); + break; + case ArrayListType_DoublePtr: + Result = (SmInteger_t)sizeof(double *); + break; + case ArrayListType_LgIndexPtr: + Result = (SmInteger_t)sizeof(LgIndex_t *); + break; + case ArrayListType_EntIndexPtr: + Result = (SmInteger_t)sizeof(EntIndex_t *); + break; + case ArrayListType_SmIntegerPtr: + Result = (SmInteger_t)sizeof(SmInteger_t *); + break; + case ArrayListType_BooleanPtr: + Result = (SmInteger_t)sizeof(Boolean_t *); + break; + case ArrayListType_ArbParamPtr: + Result = (SmInteger_t)sizeof(ArbParam_t *); + break; + + case ArrayListType_VoidPtr: + Result = (SmInteger_t)sizeof(void *); + break; + case ArrayListType_FunctionPtr: + Result = (SmInteger_t)sizeof(void (*)()); + break; + case ArrayListType_Any: /* allows a mixed bag of items */ + Result = (SmInteger_t)sizeof(ArrayListItem_u); + break; + + default: + Result = 0; /* make some compilers happy. */ + CHECK(FALSE); + break; + } + + ENSURE(1 <= Result && Result <= (SmInteger_t)sizeof(ArrayListItem_u)); + return Result; +} + + +/** + * Calls the item destructor for each item specified. + * + * param ArrayList + * Array list needing its items destroyed. + * param ItemOffset + * Offset to the first item to destroy in the list. + * param ItemSize + * Size of each array list item. + * param Count + * Number of items to destroy. + * param ItemDestructor + * Function called for each array list item. + * param CientData + * Any client data needed for the destructor. + */ +static void DestroyItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + SmInteger_t ItemSize, + LgIndex_t Count, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData) +{ + LgIndex_t Index; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + REQUIRE(1 <= Count && ItemOffset + Count <= ArrayList->Count); + REQUIRE(VALID_FN_REF(ItemDestructor)); + + for (Index = 0; + Index < Count; + Index++) + { + LgIndex_t ItemIndex = (Index + ItemOffset) * ItemSize; +#if !defined NO_ASSERTS + Boolean_t DoContinue = ItemDestructor((void *) & ArrayList->Array[ItemIndex], ClientData); + CHECK(DoContinue); /* this is a requirement of ArrayListItemDestructor_pf */ +#else + ItemDestructor((void *)&ArrayList->Array[ItemIndex], ClientData); +#endif + } +} + + +/** + * Calls the item duplicator for each item specified. + * + * param TargetArray + * Target array needing its items duplicated. + * param TargetItemOffset + * Target offset to the first duplicated item. + * param SourceArray + * Source array needing its items duplicated. + * param SourceItemOffset + * Source offset to the first item to duplicate in the list. + * param ItemSize + * Size of each array list item. + * param Count + * Number of items to duplicate. + * param ItemDuplicator + * Function called for each array list item. + * param CientData + * Any client data needed for the destructor. + * + * return + * TRUE if the duplication was a success + * FALSE otherwise + */ +static Boolean_t DuplicateItems(char *TargetArray, + LgIndex_t TargetItemOffset, + char *SourceArray, + LgIndex_t SourceItemOffset, + SmInteger_t ItemSize, + LgIndex_t Count, + ArrayListItemDuplicator_pf ItemDuplicator, + ArbParam_t ClientData) +{ + Boolean_t IsOk = TRUE; + LgIndex_t Index; + + REQUIRE(VALID_REF(TargetArray)); + REQUIRE(TargetItemOffset >= 0); + REQUIRE(VALID_REF(SourceArray)); + REQUIRE(SourceItemOffset >= 0); + REQUIRE(1 <= ItemSize && + ItemSize <= (SmInteger_t)sizeof(ArrayListItem_u)); + REQUIRE(Count >= 1); + REQUIRE(VALID_FN_REF(ItemDuplicator)); + + for (Index = 0; + Index < Count && IsOk; + Index++) + { + LgIndex_t TargetItemIndex = (Index + TargetItemOffset) * ItemSize; + LgIndex_t SourceItemIndex = (Index + SourceItemOffset) * ItemSize; + IsOk = ItemDuplicator((void *) & TargetArray[TargetItemIndex], + (void *) & SourceArray[SourceItemIndex], + ClientData); + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Determine if the list handle is sane. + * + * param ArrayList + * Array list in question. + * + * return + * TRUE if the array list is valid, otherwise FALSE. + */ +Boolean_t ArrayListIsValid(ArrayList_pa ArrayList) +{ + Boolean_t IsValid; + + /* this just makes sure that the NULL item global was initialized */ + INVARIANT(ArrayListNullItem.Double == 0.0); + + IsValid = (VALID_REF(ArrayList) && + VALID_ENUM(ArrayList->Type, ArrayListType_e) && + (1 <= ArrayList->ItemSize && + ArrayList->ItemSize <= (SmInteger_t)sizeof(ArrayListItem_u)) && + (0 <= ArrayList->Count && + ArrayList->Count <= ArrayList->Capacity)); + + ENSURE(VALID_BOOLEAN(IsValid)); + return IsValid; +} + + +/** + * Gets the specified array list's type. + * + * param ArrayList + * Array list of which the type is desired. + * + * return + * Array list type. + */ +ArrayListType_e ArrayListGetType(ArrayList_pa ArrayList) +{ + ArrayListType_e Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + + Result = ArrayList->Type; + + ENSURE(VALID_ENUM(Result, ArrayListType_e)); + return Result; +} + + +/** + * Enlarge the list capacity to accommodate, at a minimum, the requested + * capacity (number of items). The enlarged section is initialized with zeros. + * This function can be called by clients who want to ensure that calls to + * the ArrayListSetXxx class of functions will never fail for offsets within + * the RequestedCapacity. + * + * param ArrayList + * Current capacity used as a helpful hint for the adjustment algorythm. + * param RequestedCapacity + * Capacity (number ot items) request or zero for default size. + * + * return + * TRUE if the list could be enlarged (or was large enough), + * otherwise FALSE. + */ +Boolean_t ArrayListEnlargeCapacity(ArrayList_pa ArrayList, + LgIndex_t RequestedCapacity) +{ + Boolean_t IsOk; + LgIndex_t AdjustedCapacity; + char *EnlargedArray; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(IMPLICATION(RequestedCapacity == 0, ArrayList->Capacity == 0)); + + if (RequestedCapacity == 0 || + RequestedCapacity > ArrayList->Capacity) + { + AdjustedCapacity = + ArrayList->CapacityRequestAdjuster(ArrayList, + ArrayList->Capacity, + RequestedCapacity, + ArrayList->CapacityRequestAdjusterClientData); + CHECK(AdjustedCapacity == 0 || + AdjustedCapacity >= RequestedCapacity); + + IsOk = (AdjustedCapacity != 0); /* ...were we able to meet the request? */ + if (IsOk) + { + EnlargedArray = ALLOC_ARRAY(AdjustedCapacity * ArrayList->ItemSize, + char, "array list"); + if (EnlargedArray == NULL) + { + /* try again with minimum capacity request */ + if (RequestedCapacity != 0) + AdjustedCapacity = RequestedCapacity; + else + AdjustedCapacity = 1; /* can't get smaller than this */ + EnlargedArray = ALLOC_ARRAY(AdjustedCapacity * ArrayList->ItemSize, + char, "array list"); + } + IsOk = (EnlargedArray != NULL); + } + + if (IsOk) + { + /* + * Initialize the expanded section of the array with zeros. This default + * value of zero is necessary for many other array list operations. + */ + memset(&EnlargedArray[ArrayList->Count*ArrayList->ItemSize], 0, + (AdjustedCapacity - ArrayList->Count)*ArrayList->ItemSize); + + if (ArrayList->Array != NULL) + { + if (ArrayList->Count != 0) + CopyArrayItems(EnlargedArray, 0, + ArrayList->Array, 0, + ArrayList->Count, + ArrayList->ItemSize); + FREE_ARRAY(ArrayList->Array, "array list"); + } + + ArrayList->Array = EnlargedArray; + ArrayList->Capacity = AdjustedCapacity; + } + } + else + { + IsOk = TRUE; + } + + ENSURE(ArrayListIsValid(ArrayList)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Allocates an array list handle with the estimated capacity + * or a suitable default if an estimate is unavailable. + * + * param EstimatedCapacity + * Clients best guess at the estimated capacity (number of items) needed. + * If an estimate is not available zero the zero should be used to get the + * default capacity. + * param Type + * Type of array list being allocated. + * param CapacityRequestAdjuster + * Function to use to adjust any capacity change requests or + * NULL if the default adjuster is good enough. + * param CapacityRequestAdjusterClientData + * Any client data needed for the capacity adjustment. + * + * return + * Array list handle if sufficient memory was available, + * otherwise a handle to NULL. + */ +ArrayList_pa ArrayListAlloc(LgIndex_t EstimatedCapacity, + ArrayListType_e Type, + ArrayListCapacityRequestAdjuster_pf CapacityRequestAdjuster, + ArbParam_t CapacityRequestAdjusterClientData) +{ + ArrayList_pa Result; + + REQUIRE(EstimatedCapacity >= 0); + REQUIRE(VALID_ENUM(Type, ArrayListType_e)); + + Result = ALLOC_ITEM(ArrayList_s, "ArrayList structure"); + if (Result != NULL) + { + Result->Array = NULL; + Result->Type = Type; + Result->ItemSize = GetElementSize(Type); + Result->Count = 0; + Result->Capacity = 0; + Result->IsVisitingItems = FALSE; + if (CapacityRequestAdjuster != NULL) + { + /* install the client's capacity request adjuster */ + Result->CapacityRequestAdjuster = CapacityRequestAdjuster; + Result->CapacityRequestAdjusterClientData = CapacityRequestAdjusterClientData; + } + else + { + /* install the default capacity request adjuster */ + Result->CapacityRequestAdjuster = AdjustCapacityRequest; + Result->CapacityRequestAdjusterClientData = 0; + } + + /* enalarge the list to the estimated capacity */ + if (!ArrayListEnlargeCapacity(Result, EstimatedCapacity)) + ArrayListDealloc(&Result, NULL, 0); + } + + ENSURE(ArrayListIsValid(Result) || Result == NULL); + ENSURE(IMPLICATION(Result != NULL, Result->Capacity >= EstimatedCapacity)); + return Result; +} + + +/** + * Deallocates the list handle and set the handle to NULL. + * + * param ArrayList + * Reference to an array list handle. + * param ItemDestructor + * Destructor responsible for array list item cleanup or + * NULL if no item cleanup is desired. + * param ClientData + * Any client data needed for cleanup. + */ +void ArrayListDealloc(ArrayList_pa *ArrayList, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData) +{ + REQUIRE(VALID_REF(ArrayList)); + REQUIRE(ArrayListIsValid(*ArrayList) || *ArrayList == NULL); + REQUIRE(VALID_FN_REF(ItemDestructor) || ItemDestructor == NULL); + + if (*ArrayList != NULL) + { + /* request item cleanup if a destructor was supplied */ + if (ItemDestructor != NULL && (*ArrayList)->Count != 0) + DestroyItems(*ArrayList, 0, (*ArrayList)->ItemSize, (*ArrayList)->Count, + ItemDestructor, ClientData); + + /* release the list */ + if ((*ArrayList)->Capacity != 0) + FREE_ARRAY((*ArrayList)->Array, "array list"); + + /* release the list structure itself */ + FREE_ITEM(*ArrayList, "ArrayList structure"); + *ArrayList = NULL; + } + + ENSURE(*ArrayList == NULL); +} + + +#if !defined USE_MACROS_FOR_FUNCTIONS +/** + * Gets the number of items currently maintained by the list. + * + * param + * Array list in question. + * + * return + * Number of items maintained by the list. + */ +LgIndex_t ArrayListGetCount_FUNC(ArrayList_pa ArrayList) +{ + LgIndex_t Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + + Result = ArrayListGetCount_MACRO(ArrayList); + + ENSURE(Result >= 0); + return Result; +} +#endif + + +/** + * Empties the array list of all items. + * + * param ArrayList + * Array list from which to delete all items. + * param ItemDestructor + * Destructor responsible for array list item cleanup or + * NULL if no item cleanup is desired. + * param ClientData + * Any client data needed for cleanup. + */ +void ArrayListDeleteAllItems(ArrayList_pa ArrayList, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData) +{ + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(VALID_FN_REF(ItemDestructor) || ItemDestructor == NULL); + REQUIRE(!ArrayList->IsVisitingItems); + + /* request item cleanup if a destructor was supplied */ + if (ItemDestructor != NULL && ArrayList->Count != 0) + DestroyItems(ArrayList, 0, ArrayList->ItemSize, ArrayList->Count, + ItemDestructor, ClientData); + + /* + * Fill the vacated items with zeros. This default value of zero is necessary + * for many other array list operations. + */ + if (ArrayList->Count != 0) + memset(&ArrayList->Array[0], 0, ArrayList->Count*ArrayList->ItemSize); + + ArrayList->Count = 0; + + ENSURE(ArrayListIsValid(ArrayList) && ArrayList->Count == 0); +} + + +/** + * Deletes 'Count' items from the array list. The members following the + * items deleted are shifted down accordingly to fill the vacated space. + * + * param ArrayList + * Array list containing the items to delete. + * param ItemOffset + * Offset to the first item to delete in the list. + * param Count + * Number of items to delete. + * param ItemDestructor + * Destructor responsible for array list item cleanup or + * NULL if no item cleanup is desired. + * param ClientData + * Any client data needed for cleanup. + */ +void ArrayListDeleteItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData) +{ + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + REQUIRE(1 <= Count && ItemOffset + Count <= ArrayList->Count); + REQUIRE(VALID_FN_REF(ItemDestructor) || ItemDestructor == NULL); + REQUIRE(!ArrayList->IsVisitingItems); + + /* release the items if a destructor is installed */ + if (ItemDestructor != NULL) + DestroyItems(ArrayList, ItemOffset, ArrayList->ItemSize, Count, + ItemDestructor, ClientData); + + /* if we deleted the items from the middle of the array then */ + /* shift the end items down by 'Count' to fill the vacated space */ + if (ItemOffset + Count < ArrayList->Count) + CopyArrayItems(ArrayList->Array, ItemOffset, + ArrayList->Array, ItemOffset + Count, + ArrayList->Count - (ItemOffset + Count), + ArrayList->ItemSize); + /* + * Fill the vacated items with zeros. This default value of zero is necessary + * for many other array list operations. + */ + memset(&ArrayList->Array[(ArrayList->Count - Count)*ArrayList->ItemSize], + 0, Count*ArrayList->ItemSize); + + /* update the count but leave the capacity alone */ + ArrayList->Count -= Count; + + ENSURE(ArrayListIsValid(ArrayList)); +} + + +/** + * Deletes an item from the array list. The members following the item + * deleted are shifted down accordingly to fill the vacated space. + * + * param ArrayList + * Array list containing the item to delete. + * param ItemOffset + * Offset to the item in the list. + * param ItemDestructor + * Destructor responsible for array list item cleanup or + * NULL if no item cleanup is desired. + * param ClientData + * Any client data needed for cleanup. + */ +void ArrayListDeleteItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData) +{ + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + REQUIRE(VALID_FN_REF(ItemDestructor) || ItemDestructor == NULL); + + ArrayListDeleteItems(ArrayList, ItemOffset, 1, ItemDestructor, ClientData); + + ENSURE(ArrayListIsValid(ArrayList)); +} + + +/** + * Removes 'Count' items from the array list beginning at the specified + * item offset. The members following the items removed are shifted down + * accordingly to fill the vacated space. + * + * param ArrayList + * Array list containing the items to remove. + * param ItemOffset + * Offset to the first item to remove in the list. + * param Count + * Number of items to remove. + * + * return + * Array list handle referring to the removed items if sufficient + * memory was available, otherwise a handle to NULL. + */ +ArrayList_pa ArrayListRemoveItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count) +{ + ArrayList_pa Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + REQUIRE(1 <= Count && ItemOffset + Count <= ArrayList->Count); + REQUIRE(!ArrayList->IsVisitingItems); + + /* get a copy of the items and delete them from the source */ + Result = ArrayListGetItems(ArrayList, ItemOffset, Count); + if (Result != NULL) + ArrayListDeleteItems(ArrayList, ItemOffset, Count, NULL, 0); + + ENSURE(ArrayListIsValid(ArrayList)); + ENSURE(ArrayListIsValid(Result) || Result == NULL); + return Result; +} + + +/** + * Removes an item from the array list. The members following the item + * removed are shifted down accordingly to fill the vacated space. + * + * param ArrayList + * Array list containing the item to remove. + * param ItemOffset + * Offset to the item in the list. + * + * return + * Item removed from the array list. + */ +ArrayListItem_u ArrayListRemoveItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset) +{ + ArrayListItem_u Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + REQUIRE(!ArrayList->IsVisitingItems); + + /* record the original item */ + CopyArrayItems((char *)&Result, 0, + ArrayList->Array, ItemOffset, + 1, ArrayList->ItemSize); + + /* delete the item from the array */ + ArrayListDeleteItems(ArrayList, ItemOffset, 1, NULL, 0); + + ENSURE(ArrayListIsValid(ArrayList)); + return Result; +} + + +/** + * Inserts copies of the items from the source list to the target list at + * the specified offset. The target list will expand to accommodate the + * additional items. The source list remains unchanged. + * + * param Target + * Array list receiving the source items. + * param ItemOffset + * Offset at which to insert the source list items. + * param Source + * Array list supplying the source items. + * + * return + * TRUE if sufficient memory permitted the operation, otherwise FALSE. + */ +Boolean_t ArrayListInsert(ArrayList_pa Target, + LgIndex_t ItemOffset, + ArrayList_pa Source) +{ + Boolean_t IsOk = TRUE; + + REQUIRE(ArrayListIsValid(Target)); + REQUIRE(ItemOffset >= 0); + REQUIRE(ArrayListIsValid(Source)); + REQUIRE(Target != Source); + REQUIRE(Target->Type == Source->Type); + REQUIRE(!Target->IsVisitingItems); + + if (Source->Count != 0) + { + LgIndex_t NeededCapacity; + + /* if necessary enlarge the target list to accommodate the request */ + if (ItemOffset > Target->Count) + NeededCapacity = ItemOffset + Source->Count; + else + NeededCapacity = Target->Count + Source->Count; + if (NeededCapacity > Target->Capacity) + IsOk = ArrayListEnlargeCapacity(Target, NeededCapacity); + + if (IsOk) + { + if (ItemOffset < Target->Count) + { + /* shift all items in the target list ahead of the */ + /* insert position up by the number of items in the */ + /* source list to make room for the new items */ + CopyArrayItems(Target->Array, ItemOffset + Source->Count, + Target->Array, ItemOffset, + Target->Count - ItemOffset, + Target->ItemSize); + Target->Count += Source->Count; + } + else + { + /* no shifting to do, just update the count */ + if (ItemOffset > Target->Count) + Target->Count = ItemOffset + Source->Count; + else + Target->Count += Source->Count; + } + + /* insert the items and update the count */ + CopyArrayItems(Target->Array, ItemOffset, + Source->Array, 0, + Source->Count, Source->ItemSize); + } + } + + ENSURE(ArrayListIsValid(Target)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Inserts the item into the array list at the specified offset. The list will + * be expanded to accommodate the additional item. If the offset is beyond the + * end of the list it is sized accordingly and the intervening items between + * the last item of the original state and the last item of the new state are + * guaranteed to be 0. + * + * param ArrayList + * Array list target in which to insert the item. + * param ItemOffset + * Offset at which to insert the item. + * param Item + * Item to insert at the specified offset. + * + * return + * TRUE if sufficient memory permitted the operation, otherwise FALSE. + */ +Boolean_t ArrayListInsertItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + ArrayListItem_u Item) +{ + Boolean_t IsOk = TRUE; + LgIndex_t NeededCapacity; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(ItemOffset >= 0); + REQUIRE(!ArrayList->IsVisitingItems); + + /* if necessary enlarge the list to accommodate the request */ + if (ItemOffset > ArrayList->Count) + NeededCapacity = ItemOffset + 1; + else + NeededCapacity = ArrayList->Count + 1; + if (NeededCapacity > ArrayList->Capacity) + IsOk = ArrayListEnlargeCapacity(ArrayList, NeededCapacity); + + if (IsOk) + { + if (ItemOffset < ArrayList->Count) + { + /* shift all items in the target list ahead of the insert */ + /* position up by one to make room for the new item */ + CopyArrayItems(ArrayList->Array, ItemOffset + 1, + ArrayList->Array, ItemOffset, + ArrayList->Count - ItemOffset, + ArrayList->ItemSize); + ArrayList->Count++; + } + else + { + /* no shifting to do, just update the count */ + if (ItemOffset > ArrayList->Count) + ArrayList->Count = ItemOffset + 1; + else + ArrayList->Count++; + } + + /* insert the item */ + CopyArrayItems(ArrayList->Array, ItemOffset, + (char *)&Item, 0, + 1, ArrayList->ItemSize); + } + + ENSURE(ArrayListIsValid(ArrayList)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Visits array list items calling the item visitor for each item. + * + * param ArrayList + * Array list needing its items destroyed. + * param ItemOffset + * Offset to the first item to visit from the list. + * param Count + * Number of items to visit. + * param ItemVisitor + * Function called for each array list item. + * param CientData + * Any client data needed for the visitor. + * + * return + * TRUE if the all element were visited, otherwise + * FALSE if the visitation was terminated early + */ +Boolean_t ArrayListVisitItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count, + ArrayListItemVisitor_pf ItemVisitor, + ArbParam_t ClientData) +{ + Boolean_t DoContinue = TRUE; + Boolean_t IsVisitingItems; + SmInteger_t ItemSize; + LgIndex_t Index; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(VALID_FN_REF(ItemVisitor)); + + IsVisitingItems = ArrayList->IsVisitingItems; + ArrayList->IsVisitingItems = TRUE; /* guards against structure changes */ + + for (Index = 0, ItemSize = ArrayList->ItemSize; + Index < Count && DoContinue; + Index++) + { + LgIndex_t ItemIndex = (Index + ItemOffset) * ItemSize; + DoContinue = ItemVisitor((void *) & ArrayList->Array[ItemIndex], ClientData); + } + + ArrayList->IsVisitingItems = IsVisitingItems; + + ENSURE(ArrayList->IsVisitingItems == IsVisitingItems); + ENSURE(VALID_BOOLEAN(DoContinue)); + return DoContinue; +} + + +/** + * Gets copies of 'Count' items from the array list beginning at the + * specified item offset. Note that if the items are pointer types + * the copies are of the pointers and not the pointees. + * + * param ArrayList + * Array list containing the items to copy. + * param ItemOffset + * Offset to the first item to copy from the list. + * param Count + * Number of items to copy. + * + * return + * Array list handle referring to the copied items if sufficient + * memory was available, otherwise a handle to NULL. + */ +ArrayList_pa ArrayListGetItems(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + LgIndex_t Count) +{ + ArrayList_pa Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + REQUIRE(1 <= Count && ItemOffset + Count <= ArrayList->Count); + + Result = ArrayListAlloc(Count, ArrayList->Type, + ArrayList->CapacityRequestAdjuster, + ArrayList->CapacityRequestAdjusterClientData); + if (Result != NULL) + { + /* copy the original items into the result */ + CopyArrayItems(Result->Array, 0, + ArrayList->Array, ItemOffset, + Count, ArrayList->ItemSize); + Result->Count = Count; + } + + ENSURE(ArrayListIsValid(ArrayList)); + ENSURE(ArrayListIsValid(Result) || Result == NULL); + return Result; +} + + +/** + * Gets the item at the specified offset in the list. + * + * param ArrayList + * Array list containing the desired item. + * param ItemOffset + * Offset to the item in the list. + * + * return + * The requested item. + */ +ArrayListItem_u ArrayListGetItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset) +{ + ArrayListItem_u Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + + CopyArrayItems((char *)&Result, 0, + ArrayList->Array, ItemOffset, + 1, ArrayList->ItemSize); + + return Result; +} + + +#if !defined USE_MACROS_FOR_FUNCTIONS +/** + * Gets the item's internal reference at the specified offset in the list. + * + * WARNING: + * Some array list functions modify the internal buffer. + * This will invalidate this reference however it is + * the client's responsibility not to make further use + * of it. In addition, this reference should never be + * deallocated directly as the array list assumes the + * responsible for the cleanup. + * + * param ArrayList + * Array list containing the desired item. + * param ItemOffset + * Offset to the item in the list. + * + * return + * The internal reference to the requested item. + */ +const void *ArrayListGetItemInternalRef_FUNC(ArrayList_pa ArrayList, + LgIndex_t ItemOffset) +{ + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(0 <= ItemOffset && ItemOffset <= ArrayList->Count - 1); + + const void *Result = ArrayListGetItemInternalRef_MACRO(ArrayList, ItemOffset); + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; +} +#endif + + +/** + * Places the item at the specified offset. If the offset is beyond the + * end of the list it is sized accordingly and the intervening items + * between the last item of the original state and the last item of the + * new state are guaranteed to be 0. + * + * param ArrayList + * Array list target in which to set the item. + * param ItemOffset + * Offset of the item. + * param Item + * Item to set at the specified offset. + * param ItemDestructor + * Destructor responsible for array list item cleanup or + * NULL if no item cleanup is desired. + * param ClientData + * Any client data needed for cleanup. + * + * return + * TRUE if sufficient memory permitted the operation, otherwise FALSE. + */ +Boolean_t ArrayListSetItem(ArrayList_pa ArrayList, + LgIndex_t ItemOffset, + ArrayListItem_u Item, + ArrayListItemDestructor_pf ItemDestructor, + ArbParam_t ClientData) +{ + Boolean_t IsOk = TRUE; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(ItemOffset >= 0); + REQUIRE(VALID_FN_REF(ItemDestructor) || ItemDestructor == NULL); + REQUIRE(IMPLICATION(ItemOffset + 1 > ArrayList->Count, + !ArrayList->IsVisitingItems)); + + /* release the item if a destructor is installed */ + if (ItemDestructor != NULL && ItemOffset < ArrayList->Count) + DestroyItems(ArrayList, ItemOffset, ArrayList->ItemSize, 1, + ItemDestructor, ClientData); + + /* if necessary enlarge the list to accommodate the request */ + if (ItemOffset + 1 > ArrayList->Capacity) + IsOk = ArrayListEnlargeCapacity(ArrayList, ItemOffset + 1); + + if (IsOk) + { + if (ItemOffset + 1 > ArrayList->Count) + ArrayList->Count = ItemOffset + 1; + CopyArrayItems(ArrayList->Array, ItemOffset, + (char *)&Item, 0, + 1, ArrayList->ItemSize); + } + + ENSURE(ArrayListIsValid(ArrayList)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Appends the item to the list. The list will be expanded + * to accommodate the additional item. + * + * param ArrayList + * Array list target to which the item is to be appended. + * param Item + * Item to append to the array list. + * + * return + * TRUE if sufficient memory permitted the operation, otherwise FALSE. + */ +Boolean_t ArrayListAppendItem(ArrayList_pa ArrayList, + ArrayListItem_u Item) +{ + Boolean_t IsOk; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(!ArrayList->IsVisitingItems); + + IsOk = ArrayListInsertItem(ArrayList, ArrayList->Count, Item); + + ENSURE(ArrayListIsValid(ArrayList)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Appends copies of the items from the source list to the target list. + * The source list remains unchanged. + * + * param Target + * Array list receiving the source items. + * param Source + * Array list supplying the source items. + * + * return + * TRUE if sufficient memory permitted the operation, otherwise FALSE. + */ +Boolean_t ArrayListAppend(ArrayList_pa Target, + ArrayList_pa Source) +{ + Boolean_t IsOk; + + REQUIRE(ArrayListIsValid(Target)); + REQUIRE(ArrayListIsValid(Source)); + REQUIRE(Target != Source); + REQUIRE(Target->Type == Source->Type); + REQUIRE(!Target->IsVisitingItems); + + IsOk = ArrayListInsert(Target, Target->Count, Source); + + ENSURE(ArrayListIsValid(Target)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Copies the items of the array list. + * + * param ArrayList + * Array list to copy. + * param ItemDuplicator + * Duplicator responsible for array list item duplication or + * NULL if an exact item copy is desired. In other words for + * pointer types the effect is copy by reference. + * param ClientData + * Any client data needed for duplication. + * + * return + * Handle to a duplicate of the specified array list if sufficient + * memory permitted the operation, otherwise NULL. + */ +ArrayList_pa ArrayListCopy(ArrayList_pa ArrayList, + ArrayListItemDuplicator_pf ItemDuplicator, + ArbParam_t ClientData) +{ + ArrayList_pa Result; + + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(VALID_FN_REF(ItemDuplicator) || ItemDuplicator == NULL); + + Result = ArrayListAlloc(ArrayList->Count, ArrayList->Type, + ArrayList->CapacityRequestAdjuster, + ArrayList->CapacityRequestAdjusterClientData); + if (Result != NULL && ArrayList->Count != 0) + { + Boolean_t IsOk = TRUE; + if (ItemDuplicator != NULL) + /* client defines how the item duplication is performed */ + IsOk = DuplicateItems(Result->Array, 0, + ArrayList->Array, 0, + ArrayList->ItemSize, ArrayList->Count, + ItemDuplicator, ClientData); + else + /* copy the original items into the result */ + CopyArrayItems(Result->Array, 0, + ArrayList->Array, 0, + ArrayList->Count, + ArrayList->ItemSize); + if (IsOk) + Result->Count = ArrayList->Count; + else + ArrayListDealloc(&Result, NULL, 0); + } + + ENSURE(Result == NULL || + (ArrayListIsValid(Result) && Result->Count == ArrayList->Count)); + return Result; +} + + +/** + * Creates a native 'C' array containing copies of the items held in the + * source array list. + * + * param Source + * Array list containing the items of interest. + * param ItemDuplicator + * Duplicator responsible for array list item duplication or + * NULL if an exact item copy is desired. In other words for + * pointer types the effect is copy by reference. + * param ClientData + * Any client data needed for duplication. + * + * return + * Allocated array populated with copies of the members of the array list + * or NULL if there are no items in the list or if the allocation was + * not successful. The caller is responsible for deallocation of the + * array (but not the individual members unless a item duplication function + * was supplied) when it is no longer needed. + */ +void *ArrayListToArray(ArrayList_pa Source, + ArrayListItemDuplicator_pf ItemDuplicator, + ArbParam_t ClientData) +{ + void *Result; + + REQUIRE(ArrayListIsValid(Source)); + REQUIRE(VALID_FN_REF(ItemDuplicator) || ItemDuplicator == NULL); + + if (Source->Count != 0) + Result = (void *)ALLOC_ARRAY(Source->Count * Source->ItemSize, + char, "native array"); + else + Result = NULL; + + if (Result != NULL) + { + Boolean_t IsOk = TRUE; + if (ItemDuplicator != NULL) + /* client defines how the item duplication is performed */ + IsOk = DuplicateItems((char*)Result, 0, + Source->Array, 0, + Source->ItemSize, Source->Count, + ItemDuplicator, ClientData); + else + /* copy the original items into the result */ + CopyArrayItems((char *)Result, 0, + Source->Array, 0, + Source->Count, + Source->ItemSize); + if (!IsOk) + { + /* Hack to remove delete warning... */ + char *Tmp = (char *)Result; + FREE_ARRAY(Tmp, "native array"); + } + } + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + + +/** + * Creates an array list containing copies of the items held in the + * native 'C' array. + * + * param Source + * Native 'C' array containing the items of interest. + * param Count + * Number of items contained in the native 'C' array. + * param Type + * Type of items contained in the native 'C' array. + * param ItemDuplicator + * Duplicator responsible for array list item duplication or + * NULL if an exact item copy is desired. In other words for + * pointer types the effect is copy by reference. + * param ClientData + * Any client data needed for duplication. + * + * return + * Array list handle containing copies of the items held in the + * native 'C' array if sufficient memory was available, otherwise + * a handle to NULL. + */ +ArrayList_pa ArrayListFromArray(void *Source, + LgIndex_t Count, + ArrayListType_e Type, + ArrayListItemDuplicator_pf ItemDuplicator, + ArbParam_t ClientData) +{ + ArrayList_pa Result; + + REQUIRE(VALID_REF(Source)); + REQUIRE(Count >= 0); + REQUIRE(VALID_ENUM(Type, ArrayListType_e)); + REQUIRE(VALID_FN_REF(ItemDuplicator) || ItemDuplicator == NULL); + + Result = ArrayListAlloc(Count, Type, NULL, 0); + if (Result != NULL && Count != 0) + { + Boolean_t IsOk = TRUE; + if (ItemDuplicator != NULL) + /* client defines how the item duplication is performed */ + IsOk = DuplicateItems(Result->Array, 0, + (char*)Source, 0, + Result->ItemSize, Count, + ItemDuplicator, ClientData); + else + /* copy the original items into the result */ + CopyArrayItems(Result->Array, 0, + (char *)Source, 0, + Count, Result->ItemSize); + if (IsOk) + Result->Count = Count; + else + ArrayListDealloc(&Result, NULL, 0); + } + + ENSURE(ArrayListIsValid(Result) || Result == NULL); + return Result; +} + + +/** + * Holds the comparator function pointer for sorting. + */ +static ArrayListItemComparator_pf ComparatorFunction = NULL; + + +/** + * Holds the context for comparisons. This information is forwarded to + * the item comparator function for sorting. + */ +static ArbParam_t ComparatorClientData = 0; + + +/** + * Holds the item size of the individual array components for sorting. + */ +static SmInteger_t ComparatorItemSize = 0; + + +/** + * Forwards the comparison test to the 'Comparator' supplied to the + * 'ArrayListQSort' function. + * + * param Item1Ref + * Reference to base address of Item1. + * param Item2Ref + * Reference to base address of Item2. + * + * return + * - A value less than zero if Item1 is less than Item2. + * - A value of zero if Item1 is equal to Item2. + * - A value greater than zero if Item1 is greater than Item2. + */ +static int QSortCompareItemsAdapter(const void *Item1Ref, + const void *Item2Ref) +{ + int Result; + ArrayListItem_u Item1; + ArrayListItem_u Item2; + + REQUIRE(Item1Ref != NULL); + REQUIRE(Item2Ref != NULL); + + /* collect up the items */ + CopyArrayItems((char *)&Item1, 0, + (char *)Item1Ref, 0, + 1, ComparatorItemSize); + CopyArrayItems((char *)&Item2, 0, + (char *)Item2Ref, 0, + 1, ComparatorItemSize); + + /* forward the call */ + Result = ComparatorFunction(Item1, Item2, ComparatorClientData); + + ENSURE(Result == -1 || Result == 0 || Result == 1); + return Result; +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/** + * Sorts the array list using the qsort algorithm. + * + * param ArrayList + * Array list to sort. + * param Comparator + * Function called to compare two array list elements. + * param ClientData + * Contextual information that is passed along to the comparator function. + */ +void ArrayListQSort(ArrayList_pa ArrayList, + ArrayListItemComparator_pf Comparator, + ArbParam_t ClientData) +{ + ArrayListItemComparator_pf CurComparatorFunction; + ArbParam_t CurComparatorClientData; + SmInteger_t CurComparatorItemSize; + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(VALID_FN_REF(Comparator)); + + /* to support sort recursion we need to save off the current values */ + CurComparatorFunction = ComparatorFunction; + CurComparatorClientData = ComparatorClientData; + CurComparatorItemSize = ComparatorItemSize; + + /* set up for comparison proxy */ + ComparatorFunction = Comparator; + ComparatorClientData = ClientData; + ComparatorItemSize = ArrayList->ItemSize; + + /* sort the array */ + qsort(ArrayList->Array, ArrayList->Count, + ArrayList->ItemSize, QSortCompareItemsAdapter); + + /* cleanup */ + ComparatorFunction = CurComparatorFunction; + ComparatorClientData = CurComparatorClientData; + ComparatorItemSize = CurComparatorItemSize; + + ENSURE(ArrayListIsValid(ArrayList)); +} + +/** + * Binary searches a sorted array looking for a match using the supplied + * comparator function. If a match is found the resulting item index refers to + * the location otherwise it refers to the location where the item could be + * inserted in sorted order. + * + * param ArrayList + * Array list to sort. + * param Item + * The item for which to search. + * param Comparator + * Function called to compare the Item to the array list elements. + * param ClientData + * Contextual information that is passed along to the comparator function. + * param ItemIndex + * Pointer to the resulting position where the item was found or where the + * item could be inserted in sorted order. If the pointer is NULL the + * result position is not returned. + * + * result + * TRUE if the item was found in the list, FALSE otherwise. + */ +Boolean_t ArrayListBSearch(ArrayList_pa ArrayList, + ArrayListItem_u Item, + ArrayListItemComparator_pf Comparator, + ArbParam_t ClientData, + LgIndex_t *ItemIndex) +{ + REQUIRE(ArrayListIsValid(ArrayList)); + REQUIRE(VALID_FN_REF(Comparator)); + REQUIRE(ItemIndex == NULL || VALID_REF(ItemIndex)); + + LgIndex_t MiddleItemIndex = 0; + LgIndex_t FirstItemIndex = 0; + LgIndex_t NumItems = ArrayListGetCount(ArrayList); + LgIndex_t LastItemIndex = NumItems - 1; + Boolean_t Found = FALSE; + while (FirstItemIndex <= LastItemIndex && !Found) + { + /* calculate the middle item index for current sub-range */ + MiddleItemIndex = (FirstItemIndex + LastItemIndex) / 2; + + int CompareResult = Comparator(ArrayListGetItem(ArrayList, MiddleItemIndex), Item, ClientData); + if (CompareResult > 0) + LastItemIndex = MiddleItemIndex - 1; + else if (CompareResult < 0) + FirstItemIndex = MiddleItemIndex + 1; + else + Found = TRUE; + } + + if (ItemIndex != NULL) + { + if (Found || NumItems == 0 || FirstItemIndex < NumItems) + *ItemIndex = MiddleItemIndex; + else + *ItemIndex = NumItems; /* ...in other words it goes on the end */ + } + + ENSURE(IMPLICATION(ItemIndex != NULL, + 0 <= *ItemIndex && *ItemIndex <= ArrayListGetCount(ArrayList))); + ENSURE(VALID_BOOLEAN(Found)); + return Found; +} + +#if !defined USE_MACROS_FOR_FUNCTIONS +/** + * Gets the array list's internal buffer representation. + * + * WARNING: + * Some array list functions modify the internal buffer. + * This will invalidate this reference however it is + * the client's responsibility not to make further use + * of it. In addition, this reference should never be + * deallocated directly as the array list assumes the + * responsible for the cleanup. + * + * param ArrayList + * Array list for which a reference to the internal + * buffer is desired. + * + * return + * Reference to the array list's internal buffer. + */ +const void *ArrayListGetInternalRef_FUNC(ArrayList_pa ArrayList) +{ + REQUIRE(ArrayListIsValid(ArrayList)); + + const void *Result = ArrayListGetInternalRef_MACRO(ArrayList); + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; +} +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/auxdata.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/auxdata.cpp new file mode 100644 index 00000000000..c42b2220461 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/auxdata.cpp @@ -0,0 +1,809 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* + ***************************************************************** + ***************************************************************** + ******* ******** + ****** Copyright (C) 1988-2008 Tecplot, Inc. ******** + ******* All Rights Reserved. ******** + ******* ******** + ***************************************************************** + ***************************************************************** + */ + +#define AUXDATAMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "ALLOC.h" +#include "STRUTIL.h" +#include "ARRLIST.h" +#include "DATASET.h" +#include "STRLIST.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "SET.h" +#include "AUXDATA.h" + +using namespace tecplot::strutil; + +/** + * Private auxiliary data item structure. + */ +typedef struct +{ + const char *Name; + ArbParam_t Value; + AuxDataType_e Type; + Boolean_t Retain; +} AuxDataItem_s; + +/** + * Private auxiliary data item container structure. + */ +typedef struct _AuxData_s +{ + /* invariant: ItemList is case-insensitive sorted by AuxDataItem->Name */ + ArrayList_pa ItemList; /* <AuxDataItem_s *>[dynamic] */ +} AuxData_s; + +static Mutex_pa AuxDataMutex = NULL; + + +/** + * A valid auxiliary data name character must begin with a '_' or alpha + * character and may be followed by one or more '_', '.', alpha or digit + * characters. + */ +Boolean_t AuxDataIsValidNameChar(char Char, + Boolean_t IsLeadChar) +{ + Boolean_t IsValidNameChar; + + REQUIRE("Char can be any value"); + REQUIRE(VALID_BOOLEAN(IsLeadChar)); + + IsValidNameChar = (Char == '_' || + isalpha(Char)); + if (!IsLeadChar) + IsValidNameChar = (IsValidNameChar || + Char == '.' || + isdigit(Char)); + + ENSURE(VALID_BOOLEAN(IsValidNameChar)); + return IsValidNameChar; +} + +/** + * Indicates if the auxiliary data name is valid. A valid auxiliary data name + * must begin with a '_' or alpha character and may be followed by one or + * more '_', '.', alpha or digit characters. + */ +Boolean_t AuxDataIsValidName(const char *Name) +{ + Boolean_t IsValidName; + const char *NPtr; + REQUIRE(VALID_REF(Name)); + + for (NPtr = Name, IsValidName = AuxDataIsValidNameChar(*NPtr, TRUE); + IsValidName && *NPtr != '\0'; + NPtr++) + { + IsValidName = AuxDataIsValidNameChar(*NPtr, FALSE); + } + + ENSURE(VALID_BOOLEAN(IsValidName)); + return IsValidName; +} + +/** + * Deallocates an auxiliary data item and its contents and sets the target to + * NULL. + * + * param AuxDataItem + * Reference to an auxiliary data item. + */ +static void AuxDataItemDealloc(AuxDataItem_s **AuxDataItem) +{ + REQUIRE(VALID_REF(AuxDataItem)); + REQUIRE(VALID_REF(*AuxDataItem) || *AuxDataItem == NULL); + + if (*AuxDataItem != NULL) + { + char *Name = (char *)(*AuxDataItem)->Name; + if (Name != NULL) + FREE_ARRAY(Name, "auxiliary name"); + + if ((*AuxDataItem)->Type == AuxDataType_String) + { + char *Value = (char *)(*AuxDataItem)->Value; + if (Value != NULL) + FREE_ARRAY(Value, "auxiliary value"); + } + else + CHECK(FALSE); + + FREE_ITEM(*AuxDataItem, "auxiliary data item"); + *AuxDataItem = NULL; + } + + ENSURE(*AuxDataItem == NULL); +} + +/** + * Allocates an auxiliary data item. + * + * NOTE: Copies are made of the name and value. + * + * param Name + * Auxiliary data item's name (case insenstive). + * param Value + * Auxiliary data item's value. + * param Type + * Auxiliary data item's value type. + * param Retain + * Indicates if the auxiliary data item should persist. In other words + * copied, saved, etc. + * + * return + * A new auxiliary data item or NULL if sufficient memory was not + * available. + */ +static AuxDataItem_s *AuxDataItemAlloc(const char *Name, + ArbParam_t Value, + AuxDataType_e Type, + Boolean_t Retain) +{ + AuxDataItem_s *Result; + + REQUIRE(VALID_REF(Name) && AuxDataIsValidName(Name)); + REQUIRE(IMPLICATION(Type == AuxDataType_String, + (VALID_REF((char *)Value) || + (char *)Value == NULL))); + REQUIRE(VALID_ENUM(Type, AuxDataType_e)); + REQUIRE(VALID_BOOLEAN(Retain)); + + Result = ALLOC_ITEM(AuxDataItem_s, "auxiliary data item"); + if (Result != NULL) + { + Boolean_t IsOk; + Result->Type = Type; + Result->Retain = Retain; + Result->Name = DupString(dontTranslate(Name)); + IsOk = (Result->Name != NULL); + Result->Value = 0; /* to satisfy some compilers' uninitialized warnings */ + if (IsOk && Type == AuxDataType_String) + { + char *strValue = (char *)Value; + if (strValue != NULL) + { + char *strCopy = DupString(dontTranslate(strValue)); + Result->Value = (ArbParam_t)strCopy; + IsOk = (strCopy != NULL); + } + else + Result->Value = (ArbParam_t)NULL; + } + else + CHECK(FALSE); + + if (!IsOk) + AuxDataItemDealloc(&Result); + } + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + +/** + * Destroys an auxiliary data item list item. This is an item destructor + * callback for ArrayList's private data. + * + * param ItemRef + * Reference to the auxiliary data item to cleanup. + * param ClientData + * Not used. + * + * return + * TRUE is a requirement + */ +static Boolean_t AuxDataItemListItemDestructor(void *ItemRef, + ArbParam_t ClientData) +{ + AuxDataItem_s **AuxDataItemRef = (AuxDataItem_s **)ItemRef; + + REQUIRE(VALID_REF(AuxDataItemRef)); + REQUIRE(VALID_REF(*AuxDataItemRef) || *AuxDataItemRef == NULL); + + if (*AuxDataItemRef != NULL) + AuxDataItemDealloc(AuxDataItemRef); + + ENSURE(*AuxDataItemRef == NULL); + return TRUE; +} + +/** + * Destroys an auxiliary data item. This is an item destructor + * callback for ArrayList's private data. + * + * param ItemRef + * Reference to the auxiliary data to cleanup. + * param ClientData + * Not used. + * + * return + * TRUE is a requirement + */ +Boolean_t AuxDataItemDestructor(void *ItemRef, + ArbParam_t ClientData) +{ + AuxData_pa *AuxDataRef = (AuxData_pa *)ItemRef; + + REQUIRE(VALID_REF(AuxDataRef)); + REQUIRE(VALID_REF(*AuxDataRef) || *AuxDataRef == NULL); + + if (*AuxDataRef != NULL) + AuxDataDealloc(AuxDataRef); + + ENSURE(*AuxDataRef == NULL); + return TRUE; +} + + +/** + * Duplicates an auxiliary data item if its Retain flag is TRUE or if directed + * by the callback data. This is an item duplicator callback for ArrayList. + * + * param TargetItemRef + * Reference to the auxiliary data item to receive duplicate. + * param SourceItemRef + * Reference to the auxiliary data item to duplicate. + * param ClientData + * Boolean indicating if the Retain flag should be considered. + * + * return + * TRUE if the duplication was a success + * FALSE otherwise. + */ +static Boolean_t AuxDataItemDuplicator(void *TargetItemRef, + void *SourceItemRef, + ArbParam_t ClientData) +{ + Boolean_t IsOk = TRUE; + AuxDataItem_s **TargetAuxDataItemRef = (AuxDataItem_s **)TargetItemRef; + AuxDataItem_s **SourceAuxDataItemRef = (AuxDataItem_s **)SourceItemRef; + Boolean_t ConsiderRetain; + + REQUIRE(VALID_REF(TargetAuxDataItemRef)); + REQUIRE(VALID_REF(SourceAuxDataItemRef)); + REQUIRE(VALID_REF(*SourceAuxDataItemRef) || *SourceAuxDataItemRef == NULL); + REQUIRE(VALID_BOOLEAN((Boolean_t)ClientData)); + + ConsiderRetain = (Boolean_t)ClientData; + + /* duplicate the item */ + if (*SourceAuxDataItemRef != NULL && + (!ConsiderRetain || (*SourceAuxDataItemRef)->Retain)) + { + *TargetAuxDataItemRef = AuxDataItemAlloc((*SourceAuxDataItemRef)->Name, + (*SourceAuxDataItemRef)->Value, + (*SourceAuxDataItemRef)->Type, + (*SourceAuxDataItemRef)->Retain); + IsOk = (*TargetAuxDataItemRef != NULL); + } + else + *TargetAuxDataItemRef = NULL; + + ENSURE(VALID_REF(*TargetAuxDataItemRef) || *TargetAuxDataItemRef == NULL); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + * Deallocates an auxiliary data handle and sets the handle to NULL. + * + * param AuxData + * Reference to an auxiliary data handle or reference to NULL. + */ +void AuxDataDealloc(AuxData_pa *AuxData) +{ + REQUIRE(VALID_REF(AuxData)); + REQUIRE(VALID_REF(*AuxData) || *AuxData == NULL); + + if (*AuxData != NULL) + { + ArrayListDealloc(&(*AuxData)->ItemList, AuxDataItemListItemDestructor, 0); + FREE_ITEM(*AuxData, "auxiliary data container"); + *AuxData = NULL; + } + + ENSURE(*AuxData == NULL); +} + +/** + * Allocates an auxiliary data handle. + * + * return + * Auxiliary data handle or NULL if sufficient memory was not available. + */ +AuxData_pa AuxDataAlloc(void) +{ + AuxData_pa Result = ALLOC_ITEM(AuxData_s, "auxiliary data container"); + if (Result != NULL) + { + Result->ItemList = ArrayListAlloc(0, ArrayListType_VoidPtr, NULL, 0); + if (Result->ItemList == NULL) + AuxDataDealloc(&Result); + } + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + +/** + * Copies the auxiliary data and all its members who's Retain flag is TRUE + * if the ConsiderRetain flag is TRUE otherwise it copies everything. + */ +AuxData_pa AuxDataCopy(AuxData_pa AuxData, + Boolean_t ConsiderRetain) +{ + AuxData_pa Result; + + REQUIRE(VALID_REF(AuxData)); + REQUIRE(VALID_BOOLEAN(ConsiderRetain)); + + Result = ALLOC_ITEM(AuxData_s, "auxiliary data container"); + if (Result != NULL) + { + Result->ItemList = ArrayListCopy(AuxData->ItemList, + AuxDataItemDuplicator, + ConsiderRetain); + if (Result->ItemList != NULL) + { + if (ConsiderRetain) + { + /* + * Now pass through the array cleaning up the holes left by those + * auxiliary data item member who's Retain flag was FALSE and + * therefore left a VOID pointer because it was not copied. + */ + LgIndex_t ItemOffset = 0; + LgIndex_t ItemCount = ArrayListGetCount(Result->ItemList); + while (ItemOffset < ItemCount) + { + /* if there is more than one in a row remove them all at once */ + if (ArrayListGetVoidPtr(Result->ItemList, ItemOffset) == NULL) + { + LgIndex_t BaseOffsetToRemove = ItemOffset; + LgIndex_t NumItemsToRemove = 1; + while (BaseOffsetToRemove + NumItemsToRemove < ItemCount && + ArrayListGetVoidPtr(Result->ItemList, + BaseOffsetToRemove + NumItemsToRemove) == NULL) + NumItemsToRemove++; + + /* delete the NULL items */ + ArrayListDeleteItems(Result->ItemList, + BaseOffsetToRemove, + NumItemsToRemove, + NULL, 0); + + /* + * Update ItemCount but leave ItemOffset alone as it is now + * indexing the next item to examine. + */ + ItemCount = ArrayListGetCount(Result->ItemList); + } + else + ItemOffset++; + } + } + } + else + AuxDataDealloc(&Result); + } + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + +/** + * Gets the current number of auxiliary data items maintained by the auxiliary. + * + * param AuxData + * Handle to auxiliary data. + * + * return + * Number of items maintained by the auxiliary data. + */ +LgIndex_t AuxDataGetNumItems(AuxData_pa AuxData) +{ + LgIndex_t NumItems; + + REQUIRE(VALID_REF(AuxData)); + + NumItems = ArrayListGetCount(AuxData->ItemList); + + ENSURE(NumItems >= 0); + return NumItems; +} + +/** + * Gets the item index of the name if found or if not found the index where an + * auxiliary data item could be inserted. + * + * param AuxData + * Handle to auxiliary data. + * param Name + * Name used for the search (case insensitive). + * param ItemIndex + * Address to hold the index of the found item or the index where an + * auxiliary data item could be inserted. + * + * return + * TRUE if the named item was found, + * FALSE otherwise. + */ +Boolean_t AuxDataGetItemIndex(AuxData_pa AuxData, + const char *Name, + LgIndex_t *ItemIndex) +{ + Boolean_t FoundItem = FALSE; + LgIndex_t Index; + LgIndex_t NumItems; + + REQUIRE(VALID_REF(AuxData)); + INVARIANT("AuxData->ItemList is case-insensitive sorted by AuxDataItem->Name"); + REQUIRE(VALID_REF(Name) && AuxDataIsValidName(Name)); + REQUIRE(VALID_REF(ItemIndex)); + + /* + * Note that the current implementation just does a linear search + * though the array looking for the index of the item or if not + * found the index of the insertion point. This should be replaced + * with a binary search. + */ + NumItems = AuxDataGetNumItems(AuxData); + +# if defined DO_LINEAR_SEARCH + { + for (Index = 0; Index < NumItems; Index++) + { + AuxDataItem_s *AuxDataItem = + (AuxDataItem_s *)ArrayListGetVoidPtr(AuxData->ItemList, Index); + int CompareResult = ustrcmp(AuxDataItem->Name, Name); + if (CompareResult >= 0) + { + FoundItem = (CompareResult == 0); + break; + } + } + } +# else + { + int low, high; + low = 0; + high = NumItems - 1; + Index = 0; + while (low <= high) + { + AuxDataItem_s *AuxDataItem; + int CompareResult; + Index = (low + high) / 2; + AuxDataItem = (AuxDataItem_s *)ArrayListGetVoidPtr(AuxData->ItemList, Index); + CompareResult = ustrcmp(Name, AuxDataItem->Name); + if (CompareResult < 0) + high = Index - 1; /* If the new name is "less" than the one we're comparing to, + don't change Index since Index is already in the right spot */ + else if (CompareResult > 0) + low = ++Index; /* If the new name it "greater" than the one we're comparing + against, we want to make sure its Index is greater than + the current name's index as well, that's why we increment Index here. */ + else + { + FoundItem = TRUE; + break; + } + } + } +# endif + + *ItemIndex = Index; + + ENSURE(VALID_BOOLEAN(FoundItem)); + ENSURE(0 <= *ItemIndex && + ((FoundItem && *ItemIndex < NumItems) || + (!FoundItem && *ItemIndex <= NumItems))); + return FoundItem; +} + +/** + * Gets the auxiliary data item at the specified index. + * + * NOTE: The name and value are a references, NOT copies. + * + * param AuxData + * Handle to auxiliary data. + * param Index + * Index of the auxiliary data item of interest. + * param Name + * Address to hold the auxiliary data item name. + * param Value + * Address to hold the auxiliary data item value. + * param Type + * Address to hold the auxiliary data item type. + * param Retain + * Address to hold the auxiliary data item retain flag. + */ +void AuxDataGetItemByIndex(AuxData_pa AuxData, + LgIndex_t Index, + const char **Name, + ArbParam_t *Value, + AuxDataType_e *Type, + Boolean_t *Retain) +{ + AuxDataItem_s *AuxDataItem; + + REQUIRE(VALID_REF(AuxData)); + INVARIANT("AuxData->ItemList is case-insensitive sorted by AuxDataItem->Name"); + REQUIRE(0 <= Index && Index < ArrayListGetCount(AuxData->ItemList)); + REQUIRE(VALID_REF(Name)); + REQUIRE(VALID_REF(Value)); + REQUIRE(VALID_REF(Type)); + REQUIRE(VALID_REF(Retain)); + + AuxDataItem = (AuxDataItem_s *)ArrayListGetVoidPtr(AuxData->ItemList, Index); + *Name = AuxDataItem->Name; + *Value = AuxDataItem->Value; + *Type = AuxDataItem->Type; + *Retain = AuxDataItem->Retain; + + ENSURE(VALID_REF(*Name) && AuxDataIsValidName(*Name)); + ENSURE(IMPLICATION(*Type == AuxDataType_String, + (VALID_REF((char *)(*Value)) || + (char *)(*Value) == NULL))); + ENSURE(VALID_ENUM(*Type, AuxDataType_e)); + ENSURE(VALID_BOOLEAN(*Retain)); +} + +/** + * Gets the auxiliary data item by the specified name if it exists. + * + * NOTE: The name and value are a references, NOT copies. + * + * param AuxData + * Handle to auxiliary data. + * param Name + * Name used for the search (case insensitive). + * param Value + * Address to hold the auxiliary data item value. + * param Type + * Address to hold the auxiliary data item type. + * param Retain + * Address to hold the auxiliary data item retain flag. + * + * return + * TRUE if the an auxilary data item by the specified name was found, + * FALSE otherwise. + */ +Boolean_t AuxDataGetItemByName(AuxData_pa AuxData, + const char *Name, + ArbParam_t *Value, + AuxDataType_e *Type, + Boolean_t *Retain) +{ + Boolean_t FoundItem; + LgIndex_t ItemIndex; + + REQUIRE(VALID_REF(AuxData)); + INVARIANT("AuxData->ItemList is case-insensitive sorted by AuxDataItem->Name"); + REQUIRE(VALID_REF(Name) && AuxDataIsValidName(Name)); + REQUIRE(VALID_REF(Value)); + REQUIRE(VALID_REF(Type)); + REQUIRE(VALID_REF(Retain)); + + FoundItem = AuxDataGetItemIndex(AuxData, Name, &ItemIndex); + if (FoundItem) + { + const char *SameName; + AuxDataGetItemByIndex(AuxData, ItemIndex, &SameName, + Value, Type, Retain); + CHECK(ustrcmp(Name, SameName) == 0); + } + + ENSURE(VALID_BOOLEAN(FoundItem)); + ENSURE(IMPLICATION(FoundItem, + IMPLICATION(*Type == AuxDataType_String, + (VALID_REF((char *)(*Value)) || + (char *)(*Value) == NULL)))); + ENSURE(IMPLICATION(FoundItem, + VALID_ENUM(*Type, AuxDataType_e))); + ENSURE(IMPLICATION(FoundItem, + VALID_BOOLEAN(*Retain))); + return FoundItem; +} + + +/** + * Get a string value from AuxData and convert it to a boolean. + */ +Boolean_t AuxDataGetBooleanItemByName(AuxData_pa AuxData, /* IN */ + const char *Name, /* IN */ + Boolean_t *Value, /* OUT */ + AuxDataType_e *Type, /* OUT */ + Boolean_t *Retain) /* OUT */ +{ + Boolean_t FoundItem; + + REQUIRE(VALID_REF(AuxData)); + INVARIANT("AuxData->ItemList is case-insensitive sorted by AuxDataItem->Name"); + REQUIRE(VALID_REF(Name) && AuxDataIsValidName(Name)); + REQUIRE(VALID_REF(Value)); + REQUIRE(VALID_REF(Type)); + REQUIRE(VALID_REF(Retain)); + + ArbParam_t strValue; + FoundItem = AuxDataGetItemByName(AuxData, + Name, + &strValue, + Type, + Retain); + + if (FoundItem && + (ustrcmp((char *)strValue, "YES") == 0 || + ustrcmp((char *)strValue, "YEP") == 0 || + ustrcmp((char *)strValue, "Y") == 0 || + ustrcmp((char *)strValue, "TRUE") == 0 || + ustrcmp((char *)strValue, "T") == 0 || + ustrcmp((char *)strValue, "ON") == 0 || + ustrcmp((char *)strValue, "1") == 0)) + { + *Value = TRUE; + } + else + { + *Value = FALSE; + } + + ENSURE(VALID_BOOLEAN(FoundItem)); + ENSURE(VALID_BOOLEAN(*Value)); + return FoundItem; +} + + +/** + * Adds the auxiliary data item to the auxiliary data or replaces it if one + * already exists by the same name. + * + * NOTE: The auxiliary data makes copies of the name and value. + * + * param AuxData + * Auxiliary data handle. + * param Name + * Auxiliary data item's name (case insenstive). + * param Value + * Auxiliary data item's value. + * param Type + * Auxiliary data item's value type. + * param Retain + * Indicates if the auxiliary data item should persist. + * + * return + * TRUE if the item was added to the auxiliary data. + */ +Boolean_t AuxDataSetItem(AuxData_pa AuxData, + const char *Name, + ArbParam_t Value, + AuxDataType_e Type, + Boolean_t Retain) +{ + Boolean_t IsOk; + AuxDataItem_s *AuxDataItem; + + REQUIRE(VALID_REF(AuxData)); + INVARIANT("AuxData->ItemList is case-insensitive sorted by AuxDataItem->Name"); + REQUIRE(VALID_REF(Name) && AuxDataIsValidName(Name)); + REQUIRE(IMPLICATION(Type == AuxDataType_String, + (VALID_REF((char *)Value) || + (char *)Value == NULL))); + REQUIRE(VALID_ENUM(Type, AuxDataType_e)); + REQUIRE(VALID_BOOLEAN(Retain)); + + AuxDataItem = AuxDataItemAlloc(Name, Value, Type, Retain); + IsOk = (AuxDataItem != NULL); + if (IsOk) + { + LgIndex_t ItemIndex; + ArrayListItem_u ListItem; + + /* add or replace the item to the list */ + ListItem.VoidPtr = (void *)AuxDataItem; + if (!AuxDataGetItemIndex(AuxData, Name, &ItemIndex)) + IsOk = ArrayListInsertItem(AuxData->ItemList, ItemIndex, ListItem); + else + IsOk = ArrayListSetItem(AuxData->ItemList, ItemIndex, ListItem, + AuxDataItemListItemDestructor, 0); + + if (!IsOk) + AuxDataItemDealloc(&AuxDataItem); + } + + ENSURE(VALID_BOOLEAN(IsOk)); + INVARIANT("AuxData->ItemList is case-insensitive sorted by AuxDataItem->Name"); + return IsOk; +} + +/** + * Deletes the auxiliary data item at the specified index. + * + * param AuxData + * Auxiliary data handle. + * param Index + * Index of the auxiliary data item of interest. + */ +void AuxDataDeleteItemByIndex(AuxData_pa AuxData, + LgIndex_t Index) +{ + REQUIRE(VALID_REF(AuxData)); + REQUIRE(0 <= Index && Index < ArrayListGetCount(AuxData->ItemList)); + + ArrayListDeleteItem(AuxData->ItemList, Index, AuxDataItemListItemDestructor, 0); +} + +/** + * Deletes the auxiliary data item by the specified name if it exists. + * + * param AuxData + * Auxiliary data handle. + * param Name + * Name used for the search (case insensitive). + * + * return + * TRUE if the an auxilary data item by the specified name was found, + * FALSE otherwise. + */ +Boolean_t AuxDataDeleteItemByName(AuxData_pa AuxData, + const char *Name) +{ + Boolean_t FoundItem; + LgIndex_t ItemIndex; + + REQUIRE(VALID_REF(AuxData)); + REQUIRE(VALID_REF(Name) && AuxDataIsValidName(Name)); + + FoundItem = AuxDataGetItemIndex(AuxData, Name, &ItemIndex); + if (FoundItem) + AuxDataDeleteItemByIndex(AuxData, ItemIndex); + + ENSURE(VALID_BOOLEAN(FoundItem)); + return FoundItem; +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio.cpp new file mode 100644 index 00000000000..a88c7c1f432 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio.cpp @@ -0,0 +1,695 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define DATAIOMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "TranslatedString.h" + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else +#ifdef MSWIN +/* Disable warning about conversion from long to short. + Even if we have disabled it in stdafx.h, + we still need to disable here also for + tecio, which includes this cpp file. */ + +#pragma warning (disable : 4244) +#endif +/* + * Temp text and geom buffers. + */ +static Geom_s TempGeom; +static Text_s TempText; +#endif + +#include "DATASET0.h" +#include "SET.h" +#include "FILESTREAM.h" +#include "DATAIO.h" +#include "DATAIO4.h" +#include "STRUTIL.h" +#include "AUXDATA.h" +#include "ARRLIST.h" +#include "STRLIST.h" +#include "ALLOC.h" +#include "DATASET.h" +#include "SYSTEM.h" +#include "Q_MSG.h" + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +using namespace tecplot::strutil; + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE +#endif +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#endif /* TECPLOTKERNEL */ + + +/* + * Multi-Purpose datafile header reader. This is designed so that + * not all parts of the header is loaded and so that the task of loading + * the header information is separated out from installing of that + * information into a dataset. + * + */ + +Boolean_t ReadDataFileHeader(FileStream_s *FileStream, + short IVersion, + Boolean_t ShowDataIOStatus, + EntIndex_t *NumZones, + EntIndex_t *NumVars, + SmInteger_t *NumCustomLabelSets, + char **DataSetTitle, + Text_s **BaseText, + Geom_s **BaseGeom, + StringList_pa **CustomLabelBase, + StringList_pa *UserRec, + AuxData_pa *DataSetAuxData, + Set_pa **IsVarCellCentered, /* Create an Array dim by zones */ + Boolean_t *HasText, + Boolean_t *HasGeoms, + ArrayList_pa *ZoneSpecList, + StringList_pa *VarNames, + ArrayList_pa *VarAuxDataList, /*<AuxData_pa>[NumVars]*/ + Set_pa *IsRawFNAvailable, /* classic data only */ + LgIndex_t **FNNumBndryConns, /* classic data only */ + DataFileType_e *FileType) +{ + Boolean_t IsOk = TRUE; + Boolean_t SentError = FALSE; + double X1; + int Pass; + FileOffset_t InitialFilePosition; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(IVersion > 0); + REQUIRE(VALID_BOOLEAN(ShowDataIOStatus)); + REQUIRE(VALID_REF(NumZones)); + REQUIRE(VALID_REF(NumVars)); + REQUIRE(VALID_REF(DataSetTitle) || (DataSetTitle == NULL)); + REQUIRE(VALID_REF(BaseText) || (BaseText == NULL)); + REQUIRE(VALID_REF(BaseGeom) || (BaseGeom == NULL)); + REQUIRE(VALID_REF(HasText) || (HasText == NULL)); + REQUIRE(VALID_REF(HasGeoms) || (HasGeoms == NULL)); + REQUIRE(VALID_REF(ZoneSpecList) || (ZoneSpecList == NULL)); + REQUIRE(VALID_REF(VarNames) || (VarNames == NULL)); + REQUIRE(VALID_REF(NumCustomLabelSets) || (NumCustomLabelSets == NULL)); + REQUIRE(VALID_REF(UserRec) || (UserRec == NULL)); + REQUIRE((VALID_REF(DataSetAuxData) && + (VALID_REF(*DataSetAuxData) || *DataSetAuxData == NULL)) || + DataSetAuxData == NULL); + REQUIRE((VALID_REF(VarAuxDataList) && + (VALID_REF(*VarAuxDataList) || *VarAuxDataList == NULL)) || + VarAuxDataList == NULL); + REQUIRE(VALID_REF(IsVarCellCentered) || (IsVarCellCentered == NULL)); + REQUIRE((VALID_REF(CustomLabelBase) && VALID_REF(NumCustomLabelSets)) || (CustomLabelBase == NULL)); + REQUIRE(VALID_REF(IsRawFNAvailable) || (IsRawFNAvailable == NULL)); + REQUIRE(VALID_REF(FNNumBndryConns) || (FNNumBndryConns == NULL)); + REQUIRE(VALID_REF(FileType) || (FileType == NULL)); + + if (DataSetTitle) + *DataSetTitle = NULL; + if (BaseText) + *BaseText = NULL; + if (BaseGeom) + *BaseGeom = NULL; + if (HasText) + *HasText = FALSE; + if (HasGeoms) + *HasGeoms = FALSE; + if (ZoneSpecList) + *ZoneSpecList = NULL; + if (VarNames) + *VarNames = NULL; + if (NumCustomLabelSets) + *NumCustomLabelSets = 0; + if (CustomLabelBase) + *CustomLabelBase = NULL; + if (DataSetAuxData != NULL) + { + /* + * Note unlike most of the other output only parameters that we nullify, + * DataSetAuxData is both an input and output parameter therefore we do + * not nullify it. The CHECK is here for clarity. + */ + CHECK(VALID_REF(*DataSetAuxData) || *DataSetAuxData == NULL); + } + if (VarAuxDataList != NULL) + { + /* + * Note unlike most of the other output only parameters that we nullify, + * VarAuxDataList is both an input and output parameter therefore we do + * not nullify it. The CHECK is here for clarity. + */ + CHECK(VALID_REF(*VarAuxDataList) || *VarAuxDataList == NULL); + } + if (UserRec) + *UserRec = NULL; + if (IsVarCellCentered) + *IsVarCellCentered = NULL; + + if (IsRawFNAvailable) + *IsRawFNAvailable = NULL; + + if (FNNumBndryConns) + *FNNumBndryConns = NULL; + + if (FileType) + *FileType = DataFileType_Full; + + /* + * Pass 1 is used only to count up the number of zones and custom label sets, + * Also determine if there are any preset zone colors. + */ + + InitialFilePosition = TP_FTELL(FileStream->File); + + for (Pass = 1; IsOk && (Pass <= 2); Pass++) + { + if (Pass == 2) + { + if (TP_FSEEK(FileStream->File, InitialFilePosition, SEEK_SET) != 0) + IsOk = FALSE; + + if (IsOk && (*NumZones > 0 && ZoneSpecList != NULL && *ZoneSpecList == NULL)) + { + *ZoneSpecList = ArrayListAlloc(*NumZones, ArrayListType_VoidPtr, + ZoneOrVarListAdjustCapacityRequest, 0); + IsOk = (*ZoneSpecList != NULL); + } + if (IsOk && (CustomLabelBase != NULL && + *CustomLabelBase == NULL && + *NumCustomLabelSets > 0)) + { + *CustomLabelBase = ALLOC_ARRAY(*NumCustomLabelSets, StringList_pa, "CustomLabel Sets"); + IsOk = (*CustomLabelBase != NULL); + if (IsOk) + { + SmInteger_t N; + for (N = 0; N < *NumCustomLabelSets; N++) + (*CustomLabelBase)[N] = NULL; + } + } + if (IsOk && (UserRec != NULL && *UserRec == NULL)) + { + *UserRec = StringListAlloc(); + IsOk = (Boolean_t)(*UserRec != NULL); + } + if (IsOk && (DataSetAuxData != NULL && *DataSetAuxData == NULL)) + { + *DataSetAuxData = AuxDataAlloc(); + IsOk = (Boolean_t)(*DataSetAuxData != NULL); + } + if (IsOk && (VarAuxDataList != NULL && *VarAuxDataList == NULL) && *NumVars > 0) + { + *VarAuxDataList = ArrayListAlloc(0, ArrayListType_VoidPtr, + ZoneOrVarListAdjustCapacityRequest, 0); + IsOk = (*VarAuxDataList != NULL && + ArrayListSetVoidPtr(*VarAuxDataList, *NumVars - 1, NULL)); + } + if (IsOk && + (*NumZones > 0) && + (IsVarCellCentered != NULL) && + (*IsVarCellCentered == NULL)) + { + /* + * First construct the array of sets... + */ + *IsVarCellCentered = ALLOC_ARRAY(*NumZones, Set_pa, "Array of IsVarCellCentered sets"); + if (*IsVarCellCentered) + { + EntIndex_t Z; + for (Z = 0; IsOk && (Z < *NumZones); Z++) + { + /* + * Now allocate a set for each zone + */ + (*IsVarCellCentered)[Z] = AllocSet(FALSE); + IsOk = (Boolean_t)((*IsVarCellCentered)[Z] != NULL); + } + } + else + IsOk = FALSE; + } + if (IsOk && *NumZones > 0 && IsRawFNAvailable != NULL) + { + *IsRawFNAvailable = AllocSet(FALSE); + IsOk = (*IsRawFNAvailable != NULL); + } + if (IsOk && *NumZones > 0 && FNNumBndryConns != NULL) + { + *FNNumBndryConns = ALLOC_ARRAY(*NumZones, LgIndex_t, "Array of FNNumBndryConns"); + IsOk = (*FNNumBndryConns != NULL); + if (IsOk) + for (LgIndex_t i = 0; i < *NumZones; i++) + (*FNNumBndryConns)[i] = 0; + } + } + + if (NumCustomLabelSets != NULL) + *NumCustomLabelSets = 0; + + EntIndex_t TotalNumZones = *NumZones; /* ...only meaningful for pass 2 */ + + *NumZones = 0; + *NumVars = 0; + + if (IsOk) + { + char *S = NULL; + int INumVars; + + IsOk = ReadInDataFileTypeTitleAndVarNames(FileStream, + IVersion, + ((Pass == 2) ? &S : (char **)NULL), + ((Pass == 2) ? FileType : (DataFileType_e *)NULL), + &INumVars, + ((Pass == 2) ? VarNames : (StringList_pa *)NULL)); + + if (IsOk) + *NumVars = (EntIndex_t)INumVars; + + if ((Pass == 2) && S && IsOk && DataSetTitle) + *DataSetTitle = S; + else if (S != NULL) + FREE_ARRAY(S, "data set title"); + } + + if (IsOk) + { +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no dialog feedback */ + LgIndex_t NumGeoms = 0; + LgIndex_t NumTexts = 0; +#endif + + if (IsOk) + X1 = GetNextValue(FileStream, FieldDataType_Float, 0.0, 1000.0, &IsOk); + + while (IsOk && (X1 != EndHeaderMarker)) + { + if (X1 == ZoneMarker) + { + ZoneSpec_s *ZoneSpec = ZoneSpecAlloc(); + Boolean_t OkToLoad = (Pass == 2 && + IsVarCellCentered != NULL); + IsOk = (ZoneSpec != NULL); + if (IsOk) + { + Boolean_t LocalIsRawFNAvailable; + LgIndex_t LocalFNNumBndryConns; + IsOk = ReadInZoneHeader(FileStream, IVersion, ZoneSpec, + OkToLoad ? (*IsVarCellCentered)[*NumZones] : NULL, + *NumVars, &LocalIsRawFNAvailable, + &LocalFNNumBndryConns); + if (IsOk && OkToLoad && IsRawFNAvailable != NULL) + { + if (LocalIsRawFNAvailable) + IsOk = AddToSet(*IsRawFNAvailable, *NumZones, FALSE); + } + if (IsOk && OkToLoad && FNNumBndryConns != NULL) + (*FNNumBndryConns)[*NumZones] = LocalFNNumBndryConns; + } + + if (IsOk && + ZoneSpecList != NULL && + Pass == 2) + { + IsOk = (ZoneSpec->ParentZone == BAD_SET_VALUE || + (ZoneSpec->ParentZone != *NumZones && + (0 <= ZoneSpec->ParentZone && ZoneSpec->ParentZone < TotalNumZones))); + if (IsOk) + { + ArrayListItem_u CurZoneSpecItem; + CurZoneSpecItem.VoidPtr = (void *)ZoneSpec; + ArrayListSetItem(*ZoneSpecList, *NumZones, + CurZoneSpecItem, + ZoneSpecItemDestructor, 0); + } + else + { + if (ZoneSpec->ParentZone == *NumZones) + ErrMsg(translate("Parent zone assignment for zone %d " + "may not be self referencing."), + *NumZones + 1); + else + ErrMsg(translate("Parent zone assignment for zone %d " + "must be to an existing zone within the datafile."), + *NumZones + 1); + ZoneSpecDealloc(&ZoneSpec); + SentError = TRUE; + } + } + else + ZoneSpecDealloc(&ZoneSpec); + + if (IsOk) + (*NumZones)++; + if (*NumZones > MaxNumZonesOrVars) + { + ErrMsg(translate("Exceeding Tecplot's current zone limit of %d. " + "Reduce the number of zones being loaded."), MaxNumZonesOrVars); + IsOk = FALSE; + SentError = TRUE; + } + } + else if (X1 == GeomMarker) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else + IsOk = ReadInGeometry(FileStream, + IVersion, + FALSE, + &TempGeom, + 5000); +#endif + if (IsOk) + { + if (Pass == 1) + { + if (HasGeoms) + *HasGeoms = TRUE; + } +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + } +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#endif + } + else if (X1 == TextMarker) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else + IsOk = ReadInText(FileStream, + IVersion, + FALSE, + &TempText, + 200); +#endif + if (IsOk) + { + if (Pass == 1) + { + if (HasText) + *HasText = TRUE; + } +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + } +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#endif + } + else if (X1 == CustomLabelMarker) + { + Boolean_t OkToLoad; + + OkToLoad = (Pass == 2) && + NumCustomLabelSets && + (*NumCustomLabelSets < MaxCustomLabelSets) && + CustomLabelBase; + + IsOk = ReadInCustomLabels(FileStream, + IVersion, + OkToLoad, + (OkToLoad ? &(*CustomLabelBase)[*NumCustomLabelSets] : NULL)); + if (IsOk && NumCustomLabelSets) + (*NumCustomLabelSets)++; + } + else if (X1 == UserRecMarker) + { + Boolean_t OkToLoad; + char *CurUserRec = NULL; + + OkToLoad = (Boolean_t)((Pass == 2) && UserRec); + + IsOk = ReadInUserRec(FileStream, + IVersion, + 500, + OkToLoad ? &CurUserRec : (char **)NULL); + if (IsOk && OkToLoad) + IsOk = StringListAppendString(*UserRec, CurUserRec); + if (CurUserRec) + FREE_ARRAY(CurUserRec, "temp user rec"); + CurUserRec = NULL; + } + else if (X1 == DataSetAuxMarker) + { + Boolean_t OkToLoad; + CHECK(IVersion >= 101); + OkToLoad = (Pass == 2 && + DataSetAuxData != NULL); + IsOk = ReadInAuxData(FileStream, IVersion, + OkToLoad ? *DataSetAuxData : NULL); + if (!IsOk) + { + ErrMsg(translate("Invalid DATASETAUXDATA record in binary datafile")); + SentError = TRUE; + } + } + else if (X1 == VarAuxMarker) + { + Boolean_t OkToLoad; + LgIndex_t VarNum; + CHECK(IVersion >= 102); + OkToLoad = (Pass == 2 && + VarAuxDataList != NULL); + VarNum = GetIoFileInt(FileStream, IVersion, 0, *NumVars - 1, &IsOk); + if (IsOk) + { + AuxData_pa VarAuxData; + if (OkToLoad) + { + VarAuxData = (AuxData_pa)ArrayListGetVoidPtr(*VarAuxDataList, VarNum); + if (VarAuxData == NULL) + { + VarAuxData = AuxDataAlloc(); + IsOk = (VarAuxData != NULL && + ArrayListSetVoidPtr(*VarAuxDataList, VarNum, VarAuxData)); + } + } + else + VarAuxData = NULL; + + IsOk = IsOk && ReadInAuxData(FileStream, IVersion, VarAuxData); + if (!IsOk) + { + ErrMsg(translate("Invalid VARAUXDATA record in binary datafile")); + SentError = TRUE; + } + } + else + { + ErrMsg(translate("Invalid VARAUXDATA variable number association")); + SentError = TRUE; + } + } + else + IsOk = FALSE; + if (IsOk) + X1 = GetNextValue(FileStream, FieldDataType_Float, 0.0, 1000.0, &IsOk); + } + } + } + + /* + * Old plt files that did not contain data still contained variable name + * definitions in the header. This is no longer necessary and in fact can + * cause confusion in the data read options dialog. If the number of zones + * in the datafile is zero set the number of variables to 0 and dealloc the + * variable name list. + */ + + if (IsOk && (*NumZones == 0) && (*NumVars > 0)) + { + *NumVars = 0; + if (VarNames && *VarNames) + { + StringListDealloc(VarNames); + } + } + + + if (!IsOk) + { + if (ZoneSpecList && *ZoneSpecList) + ArrayListDealloc(ZoneSpecList, ZoneSpecItemDestructor, 0); + if (DataSetTitle && *DataSetTitle) + { + FREE_ARRAY(*DataSetTitle, "DataSetTitle"); + *DataSetTitle = NULL; + } +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + if (VarNames && *VarNames) + { + StringListDealloc(VarNames); + } +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + if (UserRec && *UserRec) + StringListDealloc(UserRec); + } + + /* If there was an error, get rid of the auxiliary data list. */ + if ((DataSetAuxData != NULL && *DataSetAuxData != NULL) && + (!IsOk)) + AuxDataDealloc(DataSetAuxData); + + if (!IsOk && !SentError) + ErrMsg(translate("Invalid header in binary datafile")); + + /* + * NOTE: Do not close the file. Some calling functions will continue + * to read from this point on. + */ + + ENSURE((VarNames == NULL) || (*VarNames == NULL) || StringListValid(*VarNames)); + ENSURE(IMPLICATION(UserRec != NULL, + (*UserRec == NULL || + StringListValid(*UserRec)))); + ENSURE(IMPLICATION(DataSetAuxData != NULL, + (*DataSetAuxData == NULL || + VALID_REF(*DataSetAuxData)))); + return (IsOk); +} + + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + + +Boolean_t OpenBinaryFileAndCheckMagicNumber(FileStream_s **FileStream, + char *FName, + FileOffset_t StartOffset, + short *IVersion) +{ + Boolean_t Result = TRUE; + REQUIRE(VALID_REF(FileStream)); + REQUIRE(*FileStream == NULL); + REQUIRE(VALID_REF(FName)); + REQUIRE(StartOffset >= 0); + REQUIRE(VALID_REF(IVersion)); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else + FILE *File = TP_FOPEN(FName, "rb"); + if (File == NULL) + Result = FALSE; +#endif + if (Result) + { + *FileStream = FileStreamAlloc(File, TRUE); + Result = (*FileStream != NULL); + } + Result = Result && (TP_FSEEK((*FileStream)->File, StartOffset, SEEK_SET) == 0); + if (Result) + { + *IVersion = GetInputVersion(*FileStream); + /* + * After version 71 we started listing individual valid + * versions. Before that time we just listed ranges. Also, + * note that versions 72, 73, and 74 were invalid. + */ + Result = (/* past valid plt file version ranges follow: */ + (40 <= *IVersion && *IVersion <= 71) || + (*IVersion == 75) || + (100 <= *IVersion && *IVersion <= TecplotBinaryFileVersion)); + + /* + * This check is put here to make sure that the above code gets visited + * when the TecplotBinaryFileVersion number changes. When the version + * changes the "past valid plt file version ranges" above and the number + * compared to the TecplotBinaryFileVersion below may need to be + * adjusted such as when we skip a consecutive number as we did between + * version 71 and 75, and between 75 and 100. + */ + CHECK(TecplotBinaryFileVersion == 112); + } + + ENSURE(VALID_BOOLEAN(Result)); + return (Result); +} + + + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ + #if !defined NO_ASSERTS + #endif + #if !defined NO_ASSERTS + #endif +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#if !defined ENGINE /* TODO(RMS)-M 12/13/2005: ENGINE-P2 - no status feedback */ +#endif +#if !defined ENGINE /* TODO(RMS)-H 12/12/2005: ENGINE: refactor to use just the Interrupted flag as-is */ +#else +#endif +#if 0 /* we changed this behavior... not sure when */ +#endif +#endif /* TECPLOTKERNEL */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio4.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio4.cpp new file mode 100644 index 00000000000..18374dfe7b0 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataio4.cpp @@ -0,0 +1,3357 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define DATAIO4MODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "ALLOC.h" + +#include "AUXDATA.h" +#include "DATASET.h" +#include "FILESTREAM.h" + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#include "GEOM2.h" +#include "GEOM.h" +#include "INPUT.h" +#include "SET.h" +#include "TEXT.h" +#include "DATAIO4.h" +#include "DATASET0.h" + +#include "STRUTIL.h" +#include "ARRLIST.h" +#include "STRLIST.h" +#include "Q_MSG.h" + +#if defined IRIS +#include <ieeefp.h> +#endif + +using namespace tecplot::strutil; + +#if !defined(TECPLOTKERNEL) && defined(MSWIN) +# pragma warning(disable : 4244) +#endif + +/*END HEADER*/ + +/* + * This module contains mostly low level i/o functions. + */ + +#if defined DECALPHA || defined COMPAQALPHA +#define _IEEE_FP_INEXACT +#define _IEEE_FP +#endif + +#if defined SUN41 +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/********************************************************************** + ********************************************************************** + ********************** INPUT ************************** + ********************************************************************** + **********************************************************************/ + +static char FilterFloatChar(float X) +{ + char C; + if (((X >= 32.0) && (X <= 127.0)) || + ((X >= 160.0) && (X <= 255.0)) || + (X == 0.0)) + C = (char)X; + else + C = '?'; + return (C); +} + + +double GetNextValue(FileStream_s *FileStream, + FieldDataType_e FieldDataType, + double VMin, + double VMax, + Boolean_t *IsOk) +{ + double X = 0.0; + + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + REQUIRE(!(*IsOk) || VALID_FIELD_DATA_TYPE(FieldDataType)); + REQUIRE(!(*IsOk) || VALID_REF(FileStream)); + + if (*IsOk) + { + switch (FieldDataType) + { + case FieldDataType_Float : + { + float XX; + + *IsOk = (TP_FREAD(&XX, 4, 1, FileStream->File) == 1); + + if (!FileStream->IsByteOrderNative) + REVERSE_4_BYTES(&XX); + + if (*IsOk) + X = XX; + else + X = 0.0; + } break; + case FieldDataType_Double : + { + double XX; + + *IsOk = (TP_FREAD(&XX, sizeof(double), 1, FileStream->File) == 1); + if (!FileStream->IsByteOrderNative) + REVERSE_8_BYTES(&XX); + + if (*IsOk) + X = XX; + else + X = 0.0; + } break; + case FieldDataType_Int32 : + { + Int32_t L; + *IsOk = (TP_FREAD(&L, sizeof(Int32_t), 1, FileStream->File) == 1); + if (!FileStream->IsByteOrderNative) + REVERSE_4_BYTES(&L); + if (*IsOk) + X = (double)L; + } break; + case FieldDataType_Int16 : + { + Int16_t S; + *IsOk = (TP_FREAD(&S, sizeof(Int16_t), 1, FileStream->File) == 1); + if (!FileStream->IsByteOrderNative) + REVERSE_2_BYTES(&S); + if (*IsOk) + X = (double)S; + } break; + case FieldDataType_Byte : + { + Byte_t B; + *IsOk = (TP_FREAD(&B, sizeof(Byte_t), 1, FileStream->File) == 1); + if (*IsOk) + X = (double)B; + } break; + case FieldDataType_Bit : + { + /* + * Important note: + * Reading bit data a value at a time is only valid for a + * single bit value. If the file contains a block of more than + * one bit value and you attempt to read it a bit at a time it + * will not work as Tecplot does not buffer the read. In order + * to read a block of bits you must perform a block read. + */ + Byte_t B; + *IsOk = (TP_FREAD(&B, sizeof(Byte_t), 1, FileStream->File) == 1); + if (*IsOk) + X = (double)(B & (Byte_t)01); + } break; + default: CHECK(FALSE); break; + } + + if (*IsOk) + { + if ((X < VMin) || (X > VMax)) + { + *IsOk = FALSE; + } + } + } + + return X; +} + + +LgIndex_t GetNextI(FileStream_s *FileStream, + Boolean_t *IsOk) +{ + LgIndex_t I = 0; + + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + REQUIRE(!(*IsOk) || (VALID_REF(FileStream) && VALID_REF(FileStream->File))); + + if (*IsOk) + { + Int32_t Int32Val; + *IsOk = (TP_FREAD((void *) & Int32Val, 4, 1, FileStream->File) == 1); + if (!FileStream->IsByteOrderNative) + REVERSE_4_BYTES(&Int32Val); + + I = Int32Val; + } + return I; +} + + +LgIndex_t GetIoFileInt(FileStream_s *FileStream, + short Version, + LgIndex_t IMin, + LgIndex_t IMax, + Boolean_t *IsOk) +{ + LgIndex_t I = 0; + + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + REQUIRE(!(*IsOk) || (0 < Version && Version <= TecplotBinaryFileVersion)); + REQUIRE(!(*IsOk) || (VALID_REF(FileStream) && VALID_REF(FileStream->File))); + REQUIRE(!(*IsOk) || IMin <= IMax); + + if (!(*IsOk)) + return (0); + + if (Version <= 63) + { + float X; + if (*IsOk) + { + X = (float)GetNextValue(FileStream, FieldDataType_Float, + (double)IMin - 1.0e-10, + (double)IMax + 1.0e-10, IsOk); + if (*IsOk) + { + if (ABS(X) < (float)MAXINDEX) + I = (LgIndex_t)X; + else + *IsOk = FALSE; + } + else + *IsOk = FALSE; + } + } + else + { + I = GetNextI(FileStream, IsOk); + } + + if ((I < IMin) || (I > IMax)) + *IsOk = FALSE; + + return (I); +} + +/** + * Basically this is "realloc" but apparently "realloc" doesn't behave reliably + * on all platforms. + */ +static Boolean_t ReallocString(char **String, + LgIndex_t NewLength) +{ + Boolean_t IsOk; + char *NewString; + + REQUIRE(VALID_REF(String)); + REQUIRE(*String == NULL || VALID_REF(*String)); + REQUIRE((*String != NULL && NewLength >= (LgIndex_t)strlen(*String)) || + (*String == NULL && NewLength >= 0)); + + NewString = ALLOC_ARRAY(NewLength + 1, char, "reallocated string"); + IsOk = (NewString != NULL); + if (IsOk) + { + if (*String == NULL) + { + NewString[0] = '\0'; + } + else + { + strcpy(NewString, *String); + FREE_ARRAY(*String, "old string"); + } + *String = NewString; + } + + ENSURE(VALID_BOOLEAN(IsOk)); + ENSURE(IMPLICATION(IsOk, VALID_REF(*String))); + return IsOk; +} + + +/** + * Reads a string from all versions of a binary plt file. + * + * param FileStream + * Open file stream positioned at the string to read. + * param IVersion + * Binary file version number. + * param MaxCharacters + * IVersion < 63 + * This value is exactly the number of characters (actually floats, each + * one representing a character's ordinal value) to read from the file. + * IVersion >= 63 and ProcessData == TRUE + * If non-zero, this value represents the largest string to be returned. + * In other words, larger strings are read from the file but an allocated + * string of up to MaxCharacters is returned. A zero value indicates that + * the string size is unlimited and determined only by the actual length + * of the string in the file. + * param TargetStr + * Pointer to hold the allocated string if ProcessData == TRUE. + * param ProcessData + * Indicates if the read string should be retrieved. + * + * return + * TRUE if the read was successful with an allocated string *TargetStr + * containing the string read (no larger than requested or necessary), + * FALSE otherwise. + */ +Boolean_t ReadInString(FileStream_s *FileStream, + short IVersion, + int MaxCharacters, + char **TargetStr, + Boolean_t ProcessData) +{ + Boolean_t IsOk = TRUE; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(0 < IVersion && IVersion <= TecplotBinaryFileVersion); + REQUIRE(IMPLICATION(IVersion < 63 || ProcessData, MaxCharacters >= 0)); + REQUIRE(IMPLICATION(ProcessData, VALID_REF(TargetStr))); + REQUIRE(VALID_BOOLEAN(ProcessData)); + + if (IVersion < 63) + { + /* + * One word per character. Read Exactly "MaxCharacters" number of words. + */ + float X; + + if (ProcessData) + { + *TargetStr = ALLOC_ARRAY(MaxCharacters + 1, char, "target string"); + IsOk = (*TargetStr != NULL); + } + + if (IsOk) + { + LgIndex_t I; + for (I = 0; IsOk && I < MaxCharacters; I++) + { + X = (float)GetNextValue(FileStream, FieldDataType_Float, 0.0, 127.0, &IsOk); + if (!IsOk) + break; + if (ProcessData) + (*TargetStr)[I] = FilterFloatChar(X); + } + if (ProcessData) + (*TargetStr)[I] = '\0'; + } + else + { + ErrMsg(translate("Cannot allocate memory for string during read", + "'string' meaning the computer science data type")); + } + } + else + { +#define MAX_STRBUFFER_LEN 4095 + static char StrBuffer[MAX_STRBUFFER_LEN+1]; + LgIndex_t StrBufferLen = 0; + LgIndex_t TargetStrLen = 0; + LgIndex_t I = 0; + LgIndex_t CharValue = 0; + + if (ProcessData) + *TargetStr = NULL; + + do + { + CharValue = GetIoFileInt(FileStream, IVersion, 0, 255, &IsOk); + if (IsOk && ProcessData) + { + /* massage the character if necessary */ + if ((CharValue < 32 && CharValue != '\0' && CharValue != '\n') || + (CharValue >= 128 && CharValue < 160)) + CharValue = ' '; + + /* + * if the limit is not exceded, stuff the + * character into the buffer + */ + if (CharValue != '\0' && + (I < MaxCharacters || MaxCharacters == 0)) + { + StrBuffer[StrBufferLen] = (char)CharValue; + StrBufferLen++; + } + + if (CharValue == '\0' || + StrBufferLen == MAX_STRBUFFER_LEN) + { + if (StrBufferLen != 0 || *TargetStr == NULL) + { + StrBuffer[StrBufferLen] = '\0'; + TargetStrLen += StrBufferLen; + IsOk = ReallocString(TargetStr, TargetStrLen); + if (IsOk) + strcat(*TargetStr, StrBuffer); + StrBufferLen = 0; /* reset the string buffer */ + } + } + } + + I++; + } + while (IsOk && (char)CharValue != '\0'); + + /* if we failed cleanup if necessary */ + if (!IsOk && + ProcessData && + *TargetStr != NULL) + { + FREE_ARRAY(*TargetStr, "failed read string"); + *TargetStr = NULL; + } + } + + ENSURE(IMPLICATION(ProcessData, + (VALID_REF(*TargetStr) || *TargetStr == NULL))); + ENSURE(VALID_BOOLEAN(IsOk)); + return (IsOk); +} + +/** + */ +static void ReadDoubleBlock(FileStream_s *FileStream, + Boolean_t DoRead, + double *Buffer, + LgIndex_t StartIndex, + LgIndex_t NumValues, + Boolean_t *IsOk) +{ + if (DoRead) + { + double *DPtr = Buffer + StartIndex; + *IsOk = (TP_FREAD(DPtr, sizeof(double), NumValues, FileStream->File) == (size_t)NumValues); + if (!FileStream->IsByteOrderNative && *IsOk) + { + LgIndex_t N; + for (N = 0; N < NumValues; N++) + REVERSE_8_BYTES(&DPtr[N]); + } + } + else + *IsOk = (TP_FSEEK(FileStream->File, NumValues * sizeof(double), SEEK_CUR) == 0); +} + +/** + */ +static void ReadFloatBlock(FileStream_s *FileStream, + Boolean_t DoRead, + float *Buffer, + LgIndex_t StartIndex, + LgIndex_t NumValues, + Boolean_t *IsOk) +{ + if (DoRead) + { + float *FPtr = Buffer + StartIndex; + *IsOk = (TP_FREAD(FPtr, sizeof(float), NumValues, FileStream->File) == (size_t)NumValues); + if (!FileStream->IsByteOrderNative && *IsOk) + { + LgIndex_t N; + for (N = 0; N < NumValues; N++) + REVERSE_4_BYTES(&FPtr[N]); + } + } + else + *IsOk = (TP_FSEEK(FileStream->File, NumValues * sizeof(float), SEEK_CUR) == 0); +} + + +/** + */ +static void ReadBitBlock(FileStream_s *FileStream, + Boolean_t DoRead, + Byte_t *Buffer, + LgIndex_t NumValues, + Boolean_t *IsOk) +{ + /* + * Do not allow reading of bit values if startindex is not 0. + * (This means geometries cannot use bit data. + */ + LgIndex_t NumBytes = (NumValues + 7) / 8; + if (DoRead) + { + *IsOk = (TP_FREAD(Buffer, + sizeof(Byte_t), + NumBytes, + FileStream->File) == (size_t)NumBytes); + } + else + *IsOk = (TP_FSEEK(FileStream->File, NumBytes * sizeof(Byte_t), SEEK_CUR) == 0); +} + +/** + */ +void ReadByteBlock(FileStream_s *FileStream, + Boolean_t DoRead, + Byte_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk) +{ + if (DoRead) + { + *IsOk = (TP_FREAD(Buffer + StartIndex, + sizeof(Byte_t), + NumValues, + FileStream->File) == (size_t)NumValues); + } + else + *IsOk = (TP_FSEEK(FileStream->File, NumValues * sizeof(Byte_t), SEEK_CUR) == 0); +} + + +/** + */ +void ReadInt16Block(FileStream_s *FileStream, + Boolean_t DoRead, + Int16_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk) +{ + if (DoRead) + { + Int16_t *IntPtr = Buffer + StartIndex; + *IsOk = (TP_FREAD(IntPtr, + sizeof(Int16_t), + NumValues, + FileStream->File) == (size_t)NumValues); + + if (!FileStream->IsByteOrderNative && *IsOk) + { + LgIndex_t N; + for (N = 0; N < NumValues; N++) + REVERSE_2_BYTES(&IntPtr[N]); + } + } + else + *IsOk = (TP_FSEEK(FileStream->File, NumValues * sizeof(Int16_t), SEEK_CUR) == 0); +} + +/** + */ +void ReadInt16BlockToInt32(FileStream_s *FileStream, + Boolean_t DoRead, + Int32_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk) +{ + REQUIRE(VALID_REF(FileStream)); + REQUIRE(VALID_BOOLEAN(DoRead)); + REQUIRE(VALID_REF(Buffer)); + REQUIRE(StartIndex >= 0); + REQUIRE(NumValues >= 0); + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + + if (DoRead) + { + HgIndex_t EndIndex = StartIndex + NumValues; + for (HgIndex_t ValueIndex = StartIndex; *IsOk && ValueIndex < EndIndex; ValueIndex++) + { + Int16_t Value; + *IsOk = (TP_FREAD(&Value, sizeof(Int16_t), 1, FileStream->File) == 1); + if (!FileStream->IsByteOrderNative && *IsOk) + REVERSE_2_BYTES(&Value); + Buffer[ValueIndex] = (Int32_t)Value; + } + } + else + *IsOk = (TP_FSEEK(FileStream->File, NumValues * sizeof(Int16_t), SEEK_CUR) == 0); +} + +/** + */ +void ReadInt32Block(FileStream_s *FileStream, + Boolean_t DoRead, + Int32_t *Buffer, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk) +{ + if (DoRead) + { + Int32_t *IntPtr = Buffer + StartIndex; + *IsOk = (TP_FREAD(IntPtr, + sizeof(Int32_t), + NumValues, + FileStream->File) == (size_t)NumValues); + + if (!FileStream->IsByteOrderNative && *IsOk) + { + LgIndex_t N; + for (N = 0; N < NumValues; N++) + REVERSE_4_BYTES(&IntPtr[N]); + } + } + else + *IsOk = (TP_FSEEK(FileStream->File, NumValues * sizeof(Int32_t), SEEK_CUR) == 0); +} + +/** + */ +void ReadPureBlock(FileStream_s *FileStream, + Boolean_t DoRead, + void *Buffer, + FieldDataType_e FieldDataType, + HgIndex_t StartIndex, + HgIndex_t NumValues, + Boolean_t *IsOk) +{ + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_BOOLEAN(DoRead)); + REQUIRE(!DoRead || VALID_REF(Buffer)); + REQUIRE(VALID_FIELD_DATA_TYPE(FieldDataType)); + REQUIRE(StartIndex >= 0); + REQUIRE(NumValues >= 0); + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + + switch (FieldDataType) + { + case FieldDataType_Float : + { + ReadFloatBlock(FileStream, + DoRead, + (float *)Buffer, + StartIndex, + NumValues, + IsOk); + } break; + case FieldDataType_Double : + { + ReadDoubleBlock(FileStream, + DoRead, + (double *)Buffer, + StartIndex, + NumValues, + IsOk); + } break; + case FieldDataType_Bit : + { + if (StartIndex != 0) + { + ErrMsg(translate("Internal Error: Attempt to read bit data at non-zero offset", + "see Tecplot User's manual for a definition of 'bit' data")); + *IsOk = FALSE; + } + else + ReadBitBlock(FileStream, + DoRead, + (Byte_t *)Buffer, + NumValues, + IsOk); + } break; + case FieldDataType_Byte : + { + ReadByteBlock(FileStream, + DoRead, + (Byte_t *)Buffer, + StartIndex, + NumValues, + IsOk); + } break; + case FieldDataType_Int16 : + { + ReadInt16Block(FileStream, + DoRead, + (Int16_t *)Buffer, + StartIndex, + NumValues, + IsOk); + } break; + case FieldDataType_Int32 : + { + ReadInt32Block(FileStream, + DoRead, + (Int32_t *)Buffer, + StartIndex, + NumValues, + IsOk); + } break; + case FieldDataType_IJKFunction : /* Not used yet */ + case FieldDataType_Int64 : /* Not used yet */ + default: CHECK(FALSE); break; + } + ENSURE(VALID_BOOLEAN(*IsOk)); +} + +/** + */ +void ReadBlock(FileStream_s *FileStream, + FieldData_pa FieldData, + Boolean_t DoRead, + FieldDataType_e FieldDataTypeInFile, + HgIndex_t StartIndex, + HgIndex_t EndIndex, + Boolean_t *IsOk) +{ + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + REQUIRE(IMPLICATION(IsOk, VALID_REF(FileStream))); + REQUIRE(IMPLICATION(IsOk, VALID_FIELD_DATA_TYPE(FieldDataTypeInFile))); + REQUIRE(VALID_BOOLEAN(DoRead)); + REQUIRE(IMPLICATION(DoRead, VALID_REF(FieldData))); + + /* + * Bit data is packed into bytes. Since Tecplot doesn't buffer reads it can + * not perform bit by bit value reads and therefore must only perform block + * reads of bit data. + */ + Boolean_t ReadByBlock = IMPLICATION(DoRead, GetFieldDataType(FieldData) == FieldDataTypeInFile); + REQUIRE(ReadByBlock || (FieldDataTypeInFile != FieldDataType_Bit)); + + if (*IsOk) + { + LgIndex_t NumValues = EndIndex - StartIndex + 1; + if (ReadByBlock) + { + void *data_array; + if (DoRead) + data_array = GetFieldDataVoidPtr(FieldData); + else + data_array = NULL; + ReadPureBlock(FileStream, + DoRead, + data_array, + FieldDataTypeInFile, + StartIndex, + NumValues, + IsOk); + } + else + { + LgIndex_t N; + for (N = 0; *IsOk && (N < NumValues); N++) + { + double D = GetNextValue(FileStream, FieldDataTypeInFile, -LARGEDOUBLE, LARGEDOUBLE, IsOk); + if (DoRead) + SetFieldValue(FieldData, N + StartIndex, D); + } + } + } +} + +/** + */ +void ReadClassicOrderedCCBlock(FileStream_s *DataFileStream, + FieldData_pa FieldData, + FieldDataType_e FieldDataTypeInFile, + LgIndex_t NumIPtsInFile, + LgIndex_t NumJPtsInFile, + LgIndex_t NumKPtsInFile, + Boolean_t *IsOk) +{ + REQUIRE(IMPLICATION(*IsOk, VALID_REF(DataFileStream))); + REQUIRE(IMPLICATION(*IsOk, VALID_FIELD_DATA_TYPE(FieldDataTypeInFile))); + REQUIRE(VALID_REF(FieldData)); + REQUIRE(NumIPtsInFile >= 0); + REQUIRE(NumJPtsInFile >= 0); + REQUIRE(NumKPtsInFile >= 0); + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + + if (*IsOk) + { + LgIndex_t J, K; + LgIndex_t NumIJPts = NumIPtsInFile * NumJPtsInFile; + LgIndex_t IEnd = MAX(NumIPtsInFile - 1, 1); + LgIndex_t JEnd = MAX(NumJPtsInFile - 1, 1); + LgIndex_t KEnd = MAX(NumKPtsInFile - 1, 1); + LgIndex_t NumValues = (IEnd * JEnd * KEnd); + Boolean_t IsLinear = ((NumJPtsInFile == 1 && NumKPtsInFile == 1) || + (NumIPtsInFile == 1 && NumKPtsInFile == 1) || + (NumIPtsInFile == 1 && NumJPtsInFile == 1)); + if (IsLinear) + ReadBlock(DataFileStream, FieldData, TRUE, FieldDataTypeInFile, + 0, NumValues - 1, IsOk); + else + for (K = 0; K < KEnd && IsOk; K++) + for (J = 0; J < JEnd && IsOk; J++) + { + LgIndex_t CellIndex = 0 + (J * NumIPtsInFile) + (K * NumIJPts); + ReadBlock(DataFileStream, FieldData, TRUE, FieldDataTypeInFile, + CellIndex, CellIndex + IEnd - 1, IsOk); + } + } + + ENSURE(VALID_BOOLEAN(*IsOk)); +} + +/** + */ +static void AdjustCustomColor(short IVersion, + ColorIndex_t *BColor) +{ + REQUIRE(0 < IVersion && IVersion <= TecplotBinaryFileVersion); + REQUIRE(VALID_REF(BColor)); + + if ((IVersion < 70) && (*BColor >= 15) && (*BColor <= 22)) + *BColor -= 7; +} + + +/* + * ReadInDataFileTypeTitleAndVarNames replaces ReadInDataFileTitleAndVarNames + * and reads in the filetype as well in files with version >= 109. + */ +Boolean_t ReadInDataFileTypeTitleAndVarNames(FileStream_s *FileStream, + short IVersion, + char **DataSetTitle, + DataFileType_e *FileType, + int *NumVars, + StringList_pa *VarNames) +{ + EntIndex_t CurVar; + Boolean_t IsOk = TRUE; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(0 < IVersion && IVersion <= TecplotBinaryFileVersion); + REQUIRE(VALID_REF(DataSetTitle) || (DataSetTitle == NULL)); + REQUIRE(VALID_REF(FileType) || (FileType == NULL)); + REQUIRE(VALID_REF(NumVars)); + REQUIRE(VALID_REF(VarNames) || (VarNames == NULL)); + + *NumVars = 0; + if (DataSetTitle) + *DataSetTitle = NULL; + if (IVersion >= 109) + { + if (FileType) + *FileType = (DataFileType_e)GetIoFileInt(FileStream, + IVersion, + 0, + DataFileType_Solution, + &IsOk); + else + GetIoFileInt(FileStream, + IVersion, + 0, + DataFileType_Solution, + &IsOk); + } + if (ReadInString(FileStream, + IVersion, + ((IVersion < 63) ? 80 : MaxChrsDatasetTitle), + DataSetTitle, + (Boolean_t)(DataSetTitle != NULL))) + { + if (DataSetTitle) + TrimLeadAndTrailSpaces(*DataSetTitle); + *NumVars = GetIoFileInt(FileStream, IVersion, 0, MAXZONEMAP, &IsOk); + } + else + IsOk = FALSE; + + if (IsOk && (*NumVars > MaxNumZonesOrVars)) + { + ErrMsg(translate("Too many variables")); + IsOk = FALSE; + } + + if (IsOk && VarNames) + { + if (*NumVars > 0) + { + /* allocate a string list filled with NULL's */ + *VarNames = StringListAlloc(); + IsOk = (*VarNames != NULL); + if (IsOk) + IsOk = StringListSetString(*VarNames, *NumVars - 1, NULL); + + if (!IsOk) + { + if (*VarNames != NULL) + StringListDealloc(VarNames); + ErrMsg(translate("Out of space while allocating var names")); + } + } + } + + for (CurVar = 0; IsOk && (CurVar < *NumVars); CurVar++) + { + char *VName = NULL; + + IsOk = ReadInString(FileStream, + IVersion, + ((IVersion < 63) ? 5 : MaxChrsVarName), + VarNames ? &VName : NULL, + (Boolean_t)(VarNames != NULL)); + if (IsOk && VarNames) + { + if (VName == NULL) + { + /* NULL variable names are converted to empty names */ + VName = ALLOC_ARRAY(1, char, "empty variable name"); + strcpy(VName, ""); + } + TrimLeadAndTrailSpaces(VName); + + /* + * variables are not allowed to have litteral new line characters + * within them but they can sneek in from ASCII data files so + * convert any to their appropriate two character representation + */ + IsOk = ReplaceNewlineWithBackslashN(&VName); + + IsOk = IsOk && StringListSetString(*VarNames, CurVar, VName); + if (VName != NULL) + FREE_ARRAY(VName, "variable name"); + } + + if (!IsOk) + { + if (VarNames && *VarNames) + StringListDealloc(VarNames); + ErrMsg(translate("Out of space while allocating variable names")); + } + } + ENSURE(VALID_BOOLEAN(IsOk)); + return (IsOk); +} + + + + +/** + */ +static Boolean_t ReadInPresetZoneColor(FileStream_s *FileStream, + short IVersion, + ZoneSpec_s *ZoneSpec) +{ + Boolean_t IsOk = TRUE; + LgIndex_t ZoneColor; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(0 < IVersion && IVersion <= TecplotBinaryFileVersion); + REQUIRE(VALID_REF(ZoneSpec)); + + ZoneColor = GetIoFileInt(FileStream, IVersion, -1, LastBasicColor, &IsOk); + if (IsOk) + { + if (VALID_BASIC_COLOR(ZoneColor)) + { + ZoneSpec->ZoneLoadInfo.PresetZoneColor = (EntIndex_t)ZoneColor; + AdjustCustomColor(IVersion, &ZoneSpec->ZoneLoadInfo.PresetZoneColor); + } + else if (ZoneColor != -1) + IsOk = FALSE; + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + */ +static void ConvertCommonTimeToSolutionTime(ZoneSpec_s *ZoneSpec) +{ + REQUIRE(VALID_REF(ZoneSpec)); + REQUIRE(ZoneSpec->AuxData == NULL || VALID_REF(ZoneSpec->AuxData)); + + LgIndex_t ItemIndex; + if (ZoneSpec->AuxData != NULL && + AuxDataGetItemIndex(ZoneSpec->AuxData, AuxData_Common_Time, &ItemIndex)) + { + const char *SameName; + ArbParam_t Value; + AuxDataType_e Type; + Boolean_t Retain; + + AuxDataGetItemByIndex(ZoneSpec->AuxData, ItemIndex, + &SameName, &Value, &Type, &Retain); + CHECK(ustrcmp(AuxData_Common_Time, SameName) == 0); + CHECK(Type == AuxDataType_String); + + char *EndPtr = NULL; + double SolutionTime = strtod((const char *)Value, &EndPtr); + if (EndPtr != (char *)Value) + { + /* we only allow white space to trail a value */ + while (isspace(*EndPtr)) + EndPtr++; + } + if (EndPtr != (char *)Value && *EndPtr == '\0') + { + ZoneSpec->SolutionTime = SolutionTime; + ZoneSpec->StrandID = STRAND_ID_PENDING; + AuxDataDeleteItemByIndex(ZoneSpec->AuxData, ItemIndex); + } + } +} + +/* + * Pass1 for a zone reads in and initializes the zone structures. + * These structures are released later if the user elects to not read them + * in. + */ +Boolean_t ReadInZoneHeader(FileStream_s *FileStream, + short IVersion, + ZoneSpec_s *ZoneSpec, + Set_pa IsVarCellCentered, + EntIndex_t NumVars, + Boolean_t *IsRawFNAvailable, + LgIndex_t *FNNumBndryConns) +{ + EntIndex_t Var; + Boolean_t IsOk = TRUE; + LgIndex_t I1; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(0 < IVersion && IVersion <= TecplotBinaryFileVersion); + REQUIRE(VALID_REF(ZoneSpec)); + REQUIRE(IsVarCellCentered == NULL || VALID_REF(IsVarCellCentered)); + REQUIRE(NumVars >= 0); + REQUIRE(VALID_REF(IsRawFNAvailable)); + REQUIRE(VALID_REF(FNNumBndryConns)); + + SetZoneSpecDefaults(ZoneSpec); + + if (IsVarCellCentered != NULL) + { + /* assign default variable value location: nodal */ + ClearSet(IsVarCellCentered); + IsOk = ExpandSet(IsVarCellCentered, NumVars, FALSE); + } + + if (IsOk) + IsOk = ReadInString(FileStream, IVersion, + ((IVersion < 63) ? 10 : MaxChrsZnTitle), + &ZoneSpec->Name, + TRUE); + + if (IsOk && ZoneSpec->Name == NULL) + { + /* NULL zone names are converted to empty names */ + ZoneSpec->Name = ALLOC_ARRAY(1, char, "empty zone name"); + IsOk = (ZoneSpec->Name != NULL); + if (IsOk) + strcpy(ZoneSpec->Name, ""); + } + + if (IsOk) + TrimLeadAndTrailSpaces(ZoneSpec->Name); + + if (IVersion < 101) + { + Boolean_t IsZoneFinite; + DataFormat_e ZoneDataFormat; + + I1 = GetIoFileInt(FileStream, IVersion, 0, 3, &IsOk); + + if ((I1 < 0) || (I1 > 3)) + { + return (FALSE); + } + + ZoneDataFormat = (DataFormat_e)I1; + + IsZoneFinite = (ZoneDataFormat == DataFormat_FEPoint || + ZoneDataFormat == DataFormat_FEBlock); + + ZoneSpec->ZoneLoadInfo.IsInBlockFormat = (ZoneDataFormat == DataFormat_IJKBlock || + ZoneDataFormat == DataFormat_FEBlock); + + if (IVersion > 62) + IsOk = ReadInPresetZoneColor(FileStream, IVersion, ZoneSpec); + + if (IVersion < 60) + GetNextValue(FileStream, FieldDataType_Float, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); /* Old ZPlane Value */ + + if (IsOk) + { + ZoneSpec->NumPtsI = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + ZoneSpec->NumPtsJ = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + if (IVersion >= 60) + ZoneSpec->NumPtsK = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + else + ZoneSpec->NumPtsK = 1; + } + + if (IsOk) + { + /* If IMax,JMax, & KMax are all zero then this zone was "zombied" by + a partial read to make layout files align. */ + + if (!((ZoneSpec->NumPtsI == 0) && + (ZoneSpec->NumPtsJ == 0) && + (ZoneSpec->NumPtsK == 0)) && + ((ZoneSpec->NumPtsI <= 0) || + (ZoneSpec->NumPtsJ <= 0) || + (ZoneSpec->NumPtsK < 0) || + ((!IsZoneFinite && (ZoneSpec->NumPtsK == 0))))) + { + ErrMsg(translate("Datafile is corrupted")); + IsOk = FALSE; + } + + if (IsZoneFinite) + { + if (IVersion >= 61) + { + ZoneSpec->Type = (ZoneType_e)(ZoneSpec->NumPtsK + 1); + switch (ZoneSpec->Type) + { + case ZoneType_FETriangle: ZoneSpec->NumPtsK = 3; break; + case ZoneType_FEQuad: ZoneSpec->NumPtsK = 4; break; + case ZoneType_FETetra: ZoneSpec->NumPtsK = 4; break; + case ZoneType_FEBrick: ZoneSpec->NumPtsK = 8; break; + case ZoneType_FELineSeg: ZoneSpec->NumPtsK = 2; break; + default: + { + ErrMsg(translate("Datafile corrupted: Invalid element type for FE DataSet")); + IsOk = FALSE; + } + } + } + else + { + ZoneSpec->Type = ZoneType_FEQuad; + ZoneSpec->NumPtsK = 4; + } + } + else + { + ZoneSpec->Type = ZoneType_Ordered; + + ZoneSpec->ICellDim = ZoneSpec->NumPtsI - 1; + ZoneSpec->JCellDim = ZoneSpec->NumPtsJ - 1; + ZoneSpec->KCellDim = ZoneSpec->NumPtsK - 1; + } + } + + /* + * Raw and user defined boundary face neighbors connections were not in + * this or previous versions of the binary data files. + */ + *IsRawFNAvailable = FALSE; + *FNNumBndryConns = 0; + } + else + { + if (IsOk && (IVersion >= 107)) + { + ZoneSpec->ParentZone = GetIoFileInt(FileStream, IVersion, -1, MAXZONEMAP - 1, &IsOk); + if (!IsOk) + ErrMsg(translate("Invalid datafile: parent zone assignment must be to an existing zone within the same datafile.")); + } + + if (IsOk && (IVersion >= 106)) + { + /* Strand ID and solution time. Strand ID's of STRAND_ID_PENDING, -2, instruct Tecplot to generate strand ID's */ + ZoneSpec->StrandID = GetIoFileInt(FileStream, IVersion, -2, MAXZONEMAP - 1, &IsOk); + ZoneSpec->SolutionTime = GetNextValue(FileStream, FieldDataType_Double, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + if (!IsOk) + ErrMsg(translate("Invalid datafile: bad StrandID or SolutionTime")); + } + + /* preset zone color */ + IsOk = IsOk && ReadInPresetZoneColor(FileStream, IVersion, ZoneSpec); + + /* ZoneType */ + I1 = (ZoneType_e)GetIoFileInt(FileStream, IVersion, 0, 7, &IsOk); + switch (I1) + { + case 0: ZoneSpec->Type = ZoneType_Ordered; break; + case 1: ZoneSpec->Type = ZoneType_FELineSeg; break; + case 2: ZoneSpec->Type = ZoneType_FETriangle; break; + case 3: ZoneSpec->Type = ZoneType_FEQuad; break; + case 4: ZoneSpec->Type = ZoneType_FETetra; break; + case 5: ZoneSpec->Type = ZoneType_FEBrick; break; + case 6: ZoneSpec->Type = ZoneType_FEPolygon; break; + case 7: ZoneSpec->Type = ZoneType_FEPolyhedron; break; + default: + { + ErrMsg(translate("Invalid datafile: unknown zone type.")); + IsOk = FALSE; + } break; + } + + /* DataPacking (Always BLOCK starting with file version 112 so removed from binary format) */ + if (IVersion < 112) + ZoneSpec->ZoneLoadInfo.IsInBlockFormat = + ((DataPacking_e)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk) == DataPacking_Block); + else + ZoneSpec->ZoneLoadInfo.IsInBlockFormat = TRUE; + + /* is the variable value location specified? */ + if ((Boolean_t)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk) && IsOk) + { + /* Variable Value Location foreach Var */ + for (Var = 0; Var < NumVars && IsOk; Var++) + { + if ((Boolean_t)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk) && IsOk && + IsVarCellCentered != NULL) + { + IsOk = (ZoneSpec->ZoneLoadInfo.IsInBlockFormat); + if (IsOk) + IsOk = AddToSet(IsVarCellCentered, Var, FALSE); + else + ErrMsg(translate("Invalid datafile: cell centered " + "variable must be in block format.", + "See the Tecplot User's Manual for a definition of 'block format'")); + } + } + } + + /* are raw face neighbors supplied in the data section? */ + if (IVersion >= 108 && IsOk) + { + *IsRawFNAvailable = GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + if (*IsRawFNAvailable && + (ZoneSpec->Type == ZoneType_Ordered || + ZoneSpec->Type == ZoneType_FELineSeg)) + { + IsOk = FALSE; + ErrMsg(translate("Invalid datafile: raw face neighbors may not be " + "supplied for ordered or FE line segment zones.")); + } + } + else + *IsRawFNAvailable = FALSE; + + /* + * If raw face neighbors are available in the datafile then Tecplot + * should not auto-assign the neighbors after the load. + */ + ZoneSpec->FNAreCellFaceNbrsSupplied = *IsRawFNAvailable; + + /* miscellaneous face neighbor info */ + *FNNumBndryConns = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + if (*FNNumBndryConns != 0) + ZoneSpec->FNMode = (FaceNeighborMode_e)GetIoFileInt(FileStream, IVersion, 0, 3, &IsOk); + + if (IVersion >= 108 && IsOk) + { + Boolean_t FaceNeighborsComplete = FALSE; + if (*FNNumBndryConns != 0 && + ZoneSpec->Type != ZoneType_Ordered) + FaceNeighborsComplete = (Boolean_t)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + + /* + * If the user defined face neighbors completely specify all the + * face neighbors then we don't want to auto-assign the cell face + * neighbors after loading. If they are not complete then leave the + * setting (as set above) dependent on the availability of the raw + * face neighbors. + * + * NOTE: + * This is a rather inefficient way to specify face neighbors. + */ + if (FaceNeighborsComplete) + ZoneSpec->FNAreCellFaceNbrsSupplied = TRUE; + } + + if (ZoneSpec->Type == ZoneType_Ordered) + { + /* IMax, JMax, KMax */ + ZoneSpec->NumPtsI = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + ZoneSpec->NumPtsJ = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + ZoneSpec->NumPtsK = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + /* + * if not a zombie zone (zombie zone: points in all dimensions are + * zero) then points in each direction must be specified + */ + if (IsOk && + !(ZoneSpec->NumPtsI == 0 && + ZoneSpec->NumPtsJ == 0 && + ZoneSpec->NumPtsK == 0) && + (ZoneSpec->NumPtsI == 0 || + ZoneSpec->NumPtsJ == 0 || + ZoneSpec->NumPtsK == 0)) + { + ErrMsg(translate("Invalid data file: incorrect specification of " + "I, J, or K points for ordered data set.")); + IsOk = FALSE; + } + } + else + { + ZoneSpec->NumPtsI = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + if (ZoneSpec->Type == ZoneType_FEPolygon || ZoneSpec->Type == ZoneType_FEPolyhedron) + { + ZoneSpec->NumPtsK = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); // ...NumFaces + if (IVersion >= 111) + { + ZoneSpec->NumFaceNodes = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + ZoneSpec->NumFaceBndryFaces = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + ZoneSpec->NumFaceBndryItems = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + } + } + else + { + switch (ZoneSpec->Type) + { + case ZoneType_FETriangle: ZoneSpec->NumPtsK = 3; break; + case ZoneType_FEQuad: ZoneSpec->NumPtsK = 4; break; + case ZoneType_FETetra: ZoneSpec->NumPtsK = 4; break; + case ZoneType_FEBrick: ZoneSpec->NumPtsK = 8; break; + case ZoneType_FELineSeg: ZoneSpec->NumPtsK = 2; break; + default : + { + ErrMsg(translate("Invalid data file: invalid element type for FE data set.")); + IsOk = FALSE; + } + } + } + ZoneSpec->NumPtsJ = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + + ZoneSpec->ICellDim = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + ZoneSpec->JCellDim = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + ZoneSpec->KCellDim = GetIoFileInt(FileStream, IVersion, 0, MAXINDEX, &IsOk); + } + + /* Zone Auxiliary Data indicator followed by Zone Auxiliary Data */ + for (I1 = GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + IsOk && I1 != 0; + I1 = GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk)) + { + if (ZoneSpec->AuxData == NULL) + ZoneSpec->AuxData = AuxDataAlloc(); + IsOk = (ZoneSpec->AuxData != NULL); + if (IsOk) + IsOk = ReadInAuxData(FileStream, IVersion, ZoneSpec->AuxData); + } + } + + /* + * Convert AuxZone's Common.Time from non-time aware data files to zone + * solution time if it exists. + */ + if (IVersion < 106 && IsOk) + ConvertCommonTimeToSolutionTime(ZoneSpec); + + ENSURE(VALID_BOOLEAN(IsOk)); + return (IsOk); +} + + + + +/* + * Pass1 for Custom labels simply acknowledges that a custom label was + * parsed and skips over the labels. + */ + +Boolean_t ReadInCustomLabels(FileStream_s *FileStream, + short IVersion, + Boolean_t OkToLoad, + StringList_pa *CustomLabelBase) +{ + LgIndex_t NumLabels; + short I; + Boolean_t IsOk = TRUE; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(IVersion > 0); + REQUIRE(VALID_BOOLEAN(OkToLoad)); + REQUIRE(!(OkToLoad) || VALID_REF(CustomLabelBase)); + + NumLabels = (short)GetIoFileInt(FileStream, IVersion, 1, MAXINDEX, &IsOk); + if (IsOk && NumLabels != 0 && OkToLoad) + { + *CustomLabelBase = StringListAlloc(); + IsOk = (*CustomLabelBase != NULL); + if (!IsOk) + ErrMsg(translate("Cannot allocate memory for Custom Labels.")); + } + + for (I = 0; IsOk && (I < NumLabels); I++) + { + char *TLabel = NULL; + + IsOk = ReadInString(FileStream, IVersion, + 1024, + &TLabel, + OkToLoad); + TrimLeadAndTrailSpaces(TLabel); + + if (IsOk && OkToLoad) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + IsOk = StringListAppendString(*CustomLabelBase, TLabel); + if (TLabel != NULL) + FREE_ARRAY(TLabel, "custom label"); + if (!IsOk) + ErrMsg(translate("Cannot allocate memory for Custom Label.")); + } + } + if (!IsOk) + ErrMsg(translate("Invalid custom axis label record in binary datafile")); + + ENSURE(VALID_BOOLEAN(IsOk)); + ENSURE(!(IsOk && NumLabels != 0 && OkToLoad) || + StringListValid(*CustomLabelBase)); + return IsOk; +} + + +Boolean_t ReadInUserRec(FileStream_s *FileStream, + short IVersion, + int MaxCharactersAllowed, + char **UserRec) /* NULL if to ignore */ +{ + if (!ReadInString(FileStream, IVersion, + MaxCharactersAllowed, + UserRec, + (Boolean_t)(UserRec != NULL))) + { + ErrMsg(translate("Invalid USERREC record in binary datafile")); + return (FALSE); + } + return (TRUE); +} + + +/** + */ +Boolean_t ReadInAuxData(FileStream_s *FileStream, + short IVersion, + AuxData_pa AuxData) +{ + Boolean_t IsOk; + Boolean_t DoCollectData; + char *AuxName = NULL; + LgIndex_t AuxValueType; + char *AuxValue = NULL; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(0 < IVersion && IVersion <= TecplotBinaryFileVersion); + REQUIRE(AuxData == NULL || VALID_REF(AuxData)); + + DoCollectData = (AuxData != NULL); + IsOk = ReadInString(FileStream, + IVersion, + MaxChrsVarName, /* ... seems reasonable */ + &AuxName, + DoCollectData); + if (IsOk && DoCollectData && !AuxDataIsValidName(AuxName)) + { + ErrMsg(translate("Invalid auxiliary data name.")); + IsOk = FALSE; + } + + /* + * currently only one value type is supported + * 0: AuxiliaryValueFormat_String + */ + if (IsOk) + { + AuxValueType = GetIoFileInt(FileStream, IVersion, 0, 0, &IsOk); + if (IsOk && (AuxValueType != (LgIndex_t)AuxDataType_String)) + { + ErrMsg(translate("Unsupported auxiliary data type")); + IsOk = FALSE; + } + } + + if (IsOk) + IsOk = ReadInString(FileStream, + IVersion, + MaxChrsAuxValueString, + &AuxValue, + DoCollectData); + if (IsOk && DoCollectData) + IsOk = AuxDataSetItem(AuxData, + AuxName, (ArbParam_t)AuxValue, + AuxDataType_String, + TRUE); /* Retain */ + + /* cleanup: auxiliary data made a copy of the name and value */ + if (AuxName != NULL) + FREE_ARRAY(AuxName, "data set auxiliary data item name"); + if (AuxValue != NULL) + FREE_ARRAY(AuxValue, "data set auxiliary data item value"); + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +static void GetZoneAttachment(FileStream_s *FileStream, + short IVersion, + EntIndex_t *Z, + Boolean_t *IsAttached, + Boolean_t *IsOk) +{ + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(Z)); + REQUIRE(VALID_REF(IsAttached)); + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + + if (IVersion >= 47) + *Z = (EntIndex_t)GetIoFileInt(FileStream, IVersion, -1, MAXZONEMAP, IsOk); + else + *Z = 0; + + if (IVersion < 70) + (*Z)--; + + if (*Z == -1) + { + *Z = 0; + *IsAttached = FALSE; + } + else + *IsAttached = TRUE; + + ENSURE(VALID_BOOLEAN(*IsAttached)); + ENSURE(VALID_BOOLEAN(*IsOk)); + ENSURE(*Z >= 0); +} + + +static Boolean_t ReadMacroFunctionCommand(FileStream_s *FileStream, + short IVersion, + Boolean_t OkToLoad, + char **MacroFunctionCommand) +{ + Boolean_t Result = FALSE; + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(IVersion > 0); + REQUIRE(VALID_BOOLEAN(OkToLoad)); + REQUIRE(VALID_REF(MacroFunctionCommand)); + + Result = ReadInString(FileStream, IVersion, 0, MacroFunctionCommand, OkToLoad); + + ENSURE(VALID_BOOLEAN(Result)); + return (Result); +} + + +/* + * Pass1 for Geometries simply acknowledges that a geometry was + * parsed and skips over the geometry. + */ +Boolean_t ReadInGeometry(FileStream_s *FileStream, + short IVersion, + Boolean_t OkToLoad, + Geom_s *Geom, + LgIndex_t MaxDataPts) +{ + LgIndex_t I; + LgIndex_t S; + FieldDataType_e FFT; + Boolean_t IsOk = TRUE; + TranslatedString ErrMsgString = translate("Invalid geometry record"); + + REQUIRE(VALID_REF(Geom)); + + if (IVersion < 70) + FFT = FieldDataType_Float; + else + FFT = FieldDataType_Double; + + if (IVersion < 101) + I = GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + else + I = GetIoFileInt(FileStream, IVersion, 0, 4, &IsOk); + + if (I == 0) + Geom->PositionCoordSys = CoordSys_Grid; + else if (I == 1) + Geom->PositionCoordSys = CoordSys_Frame; + /* + * I == 2 is for CoordSys_FrameOffset and is not used currently + * + * I == 3 is for the old window coordinate system + */ + else if (I == 4) + Geom->PositionCoordSys = CoordSys_Grid3D; + else + { + ErrMsgString = translate("Invalid geometry coordinate system"); + IsOk = FALSE; + } + + Geom->Scope = (Scope_e)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + if (IVersion >= 102) + Geom->DrawOrder = (DrawOrder_e)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + Geom->AnchorPos.Generic.V1 = GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + Geom->AnchorPos.Generic.V2 = GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + if (IVersion >= 45) + Geom->AnchorPos.Generic.V3 = GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + else + Geom->AnchorPos.Generic.V3 = 0.0; + + GetZoneAttachment(FileStream, IVersion, &Geom->Zone, &Geom->AttachToZone, &IsOk); + + Geom->BColor = (SmInteger_t)GetIoFileInt(FileStream, IVersion, 0, 255, &IsOk); + + AdjustCustomColor(IVersion, &Geom->BColor); + + if (IVersion > 47) + { + Geom->FillBColor = (SmInteger_t)GetIoFileInt(FileStream, IVersion, 0, 255, &IsOk); + Geom->IsFilled = (Boolean_t)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + AdjustCustomColor(IVersion, &Geom->FillBColor); + } + else + { + Geom->FillBColor = Geom->BColor; + Geom->IsFilled = FALSE; + } + + if (IVersion < 101) + { + Geom->GeomType = (GeomType_e)GetIoFileInt(FileStream, IVersion, 0, 5, &IsOk); + if (Geom->GeomType == GeomType_LineSegs3D) + { + /* + * GeomType_LineSegs3D is deprecated, converter to GeomType_LineSegs + * with CoordSys_Grid3D instead + */ + Geom->GeomType = GeomType_LineSegs; + Geom->PositionCoordSys = CoordSys_Grid3D; /*...should have been anyway */ + } + } + else + { + Geom->GeomType = (GeomType_e)GetIoFileInt(FileStream, IVersion, 0, 4, &IsOk); + } + + /* + * Check geom coord sys versus geom type + */ + if (Geom->PositionCoordSys == CoordSys_Grid3D && + Geom->GeomType != GeomType_LineSegs) + { + ErrMsgString = translate("Mismatch between geometry coordinate system and geometry type"); + IsOk = FALSE; + } + + if (IVersion > 41) + { + Geom->LinePattern = (LinePattern_e)GetIoFileInt(FileStream, IVersion, 0, (LgIndex_t)LinePattern_DashDotDot, &IsOk); + } + else + { + Geom->LinePattern = (LinePattern_e)((int)Geom->GeomType % 2); + Geom->GeomType = (GeomType_e)((int)Geom->GeomType / 10); + } + + if ((IVersion < 49) && ((short)(Geom->GeomType) == 2)) + { + Geom->GeomType = GeomType_Rectangle; + Geom->IsFilled = TRUE; + } + + if ((IVersion < 70) && ((short)(Geom->GeomType) > 1)) + Geom->GeomType = (GeomType_e)((short)Geom->GeomType + 1); + + ResetString(&Geom->MacroFunctionCommand, NULL, TRUE); + + Geom->ImageResizeFilter = ImageResizeFilter_Texture; + + if (IVersion >= 70) + { + Geom->PatternLength = GetNextValue(FileStream, FFT, + PatternLengthInputSpec.Min, + PatternLengthInputSpec.Max, + &IsOk); + Geom->LineThickness = GetNextValue(FileStream, FFT, + LineThicknessInputSpec.Min, + LineThicknessInputSpec.Max, + &IsOk); + Geom->NumEllipsePts = (SmInteger_t)GetIoFileInt(FileStream, IVersion, 2, MaxPtsCircleOrEllipse, &IsOk); + Geom->ArrowheadStyle = (ArrowheadStyle_e)GetIoFileInt(FileStream, IVersion, 0, (LgIndex_t)ArrowheadStyle_Hollow, &IsOk); + Geom->ArrowheadAttachment = (ArrowheadAttachment_e)GetIoFileInt(FileStream, IVersion, + 0, + (LgIndex_t)ArrowheadAttachment_AtBothEnds, + &IsOk); + + Geom->ArrowheadSize = GetNextValue(FileStream, FFT, + ArrowheadSizeInputSpec.Min, + ArrowheadSizeInputSpec.Max, + &IsOk); + Geom->ArrowheadAngle = GetNextValue(FileStream, FFT, + ArrowheadAngleInputSpec.Min, + ArrowheadAngleInputSpec.Max, + &IsOk); + + if (IVersion >= 75) + { + IsOk = ReadMacroFunctionCommand(FileStream, + IVersion, + OkToLoad, + &Geom->MacroFunctionCommand); + } /* version >= 75 */ + } /* version >= 70 */ + else + { + Geom->LineThickness = 0.001; + Geom->PatternLength = 0.02; + Geom->ArrowheadStyle = ArrowheadStyle_Plain; + Geom->ArrowheadAttachment = ArrowheadAttachment_None; + Geom->ArrowheadSize = 0.05; + Geom->ArrowheadAngle = 12.0 / DEGPERRADIANS; + } + + if (IVersion < 41) + { + GetNextValue(FileStream, FieldDataType_Float, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + GetNextValue(FileStream, FieldDataType_Float, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + GetNextValue(FileStream, FieldDataType_Float, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + } + + if (IVersion < 70) + Geom->DataType = FieldDataType_Float; + else + Geom->DataType = (FieldDataType_e)GetIoFileInt(FileStream, IVersion, 1, 2, &IsOk); + CHECK(VALID_GEOM_FIELD_DATA_TYPE(Geom->DataType)); + + Geom->Clipping = Clipping_ClipToViewport; /* default value for pre 101 versions */ + if (IVersion >= 101) + { + Geom->Clipping = (Clipping_e)GetIoFileInt(FileStream, IVersion, 0, 2, &IsOk); + /* + * The second clipping value was deprecated during v10 development and thus removed. + * This moved Clipping_ClipToFrame to the 2nd position from the 3rd, so we convert + * value 2 to ClipToFrame to support files made during v10 developement. + */ + if (Geom->Clipping == (Clipping_e)2) + Geom->Clipping = Clipping_ClipToFrame; + } + + if (IVersion < 50 || + Geom->GeomType == GeomType_LineSegs) + { + Geom->NumSegments = (SmInteger_t)GetIoFileInt(FileStream, IVersion, 1, MaxGeoSegments, &IsOk); +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + S = -1; + I = 0; + while ((S + 1 < Geom->NumSegments) && + !feof(FileStream->File) && IsOk) + { + S++; + Geom->NumSegPts[S] = GetIoFileInt(FileStream, IVersion, 1, MAXINDEX, &IsOk); + if ((I + Geom->NumSegPts[S] > MaxDataPts) && OkToLoad) + { + ErrMsgString = translate("Geometry is too big"); + IsOk = FALSE; + } + else + { + ReadBlock(FileStream, Geom->GeomData.Generic.V1Base, OkToLoad, Geom->DataType, I, I + Geom->NumSegPts[S] - 1, &IsOk); + ReadBlock(FileStream, Geom->GeomData.Generic.V2Base, OkToLoad, Geom->DataType, I, I + Geom->NumSegPts[S] - 1, &IsOk); + if (Geom->PositionCoordSys == CoordSys_Grid3D) + ReadBlock(FileStream, Geom->GeomData.Generic.V3Base, OkToLoad, Geom->DataType, I, I + Geom->NumSegPts[S] - 1, &IsOk); + I += Geom->NumSegPts[S]; + } + } + if (IsOk && (Geom->GeomType == GeomType_Rectangle)) /* IVersion < 50 */ + { + if (OkToLoad) + { + CopyFieldValue(Geom->GeomData.Generic.V1Base, 0, Geom->GeomData.Generic.V1Base, 2); + CopyFieldValue(Geom->GeomData.Generic.V2Base, 0, Geom->GeomData.Generic.V2Base, 2); + } + } + } + else if (Geom->GeomType == GeomType_Rectangle || + Geom->GeomType == GeomType_Ellipse) + { + double XX, YY; + XX = GetNextValue(FileStream, Geom->DataType, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + YY = GetNextValue(FileStream, Geom->DataType, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + if (OkToLoad) + { + SetFieldValue(Geom->GeomData.XYZ.XBase, 0, XX); + SetFieldValue(Geom->GeomData.XYZ.YBase, 0, YY); + } + Geom->NumSegments = 1; + Geom->NumSegPts[0] = 1; + } + else + { + double XX; + CHECK((Geom->GeomType == GeomType_Square) || + (Geom->GeomType == GeomType_Circle)); + XX = GetNextValue(FileStream, Geom->DataType, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + if (OkToLoad) + { + SetFieldValue(Geom->GeomData.XYZ.XBase, 0, XX); + } + Geom->NumSegments = 1; + Geom->NumSegPts[0] = 1; + } + + if (!IsOk) + ErrMsg(ErrMsgString); + + return (IsOk); +} + +/* + * Pass1 for text simply acknowledges that a text was + * parsed and skips over the text. + */ +Boolean_t ReadInText(FileStream_s *FileStream, + short IVersion, + Boolean_t OkToLoad, + Text_s *Text, + LgIndex_t MaxTextLen) +{ + LgIndex_t I; + FieldDataType_e FFT; + SmInteger_t TextLength = 0; + Boolean_t IsOk = TRUE; + TranslatedString ErrMsgString = translate("Invalid text record"); + + REQUIRE(VALID_REF(Text)); + + if (IVersion < 70) + FFT = FieldDataType_Float; + else + FFT = FieldDataType_Double; + + if (IVersion < 101) + I = GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + else + I = GetIoFileInt(FileStream, IVersion, 0, 4, &IsOk); + + if (I == 0) + Text->PositionCoordSys = CoordSys_Grid; + else if (I == 1) + Text->PositionCoordSys = CoordSys_Frame; + /* + * I == 2 is for CoordSys_FrameOffset and is not used currently + * + * I == 3 is for the old window coordinate system + */ + else if (I == 4) + Text->PositionCoordSys = CoordSys_Grid3D; + else + { + ErrMsgString = translate("Invalid text coordinate system."); + IsOk = FALSE; + } + + Text->Scope = (Scope_e)GetIoFileInt(FileStream, IVersion, 0, 1, &IsOk); + Text->AnchorPos.Generic.V1 = GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + Text->AnchorPos.Generic.V2 = GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + if (IVersion >= 101) + Text->AnchorPos.Generic.V3 = GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + else + Text->AnchorPos.Generic.V3 = 0.0; /* default value for pre 101 versions */ + + if (IVersion > 40) + Text->TextShape.Font = (Font_e)GetIoFileInt(FileStream, IVersion, 0, (LgIndex_t)Font_CourierBold, &IsOk); + else + Text->TextShape.Font = Font_Helvetica; + if (IVersion < 43) + GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + if (IVersion < 70) + { + if (Text->PositionCoordSys == CoordSys_Grid) + Text->TextShape.SizeUnits = Units_Grid; + else + Text->TextShape.SizeUnits = Units_Frame; + } + else + Text->TextShape.SizeUnits = (Units_e)GetIoFileInt(FileStream, IVersion, 0, (LgIndex_t)Units_Point, &IsOk); + + Text->TextShape.Height = GetNextValue(FileStream, FFT, -LARGEDOUBLE, LARGEDOUBLE, &IsOk); + if (IVersion > 47) + { + Text->Box.BoxType = (TextBox_e)GetIoFileInt(FileStream, IVersion, 0, (LgIndex_t)TextBox_Hollow, &IsOk); + if (IVersion < 70) + { + if (Text->Box.BoxType == TextBox_Hollow) + Text->Box.BoxType = TextBox_Filled; + else if (Text->Box.BoxType == TextBox_Filled) + Text->Box.BoxType = TextBox_Hollow; + } + Text->Box.Margin = GetNextValue(FileStream, FFT, + TextBoxMarginInputSpec.Min, + TextBoxMarginInputSpec.Max, + &IsOk); + if (IVersion >= 70) + Text->Box.LineThickness = GetNextValue(FileStream, FFT, + LineThicknessInputSpec.Min, + LineThicknessInputSpec.Max, + &IsOk); + else + Text->Box.LineThickness = 0.01; + Text->Box.BColor = (ColorIndex_t)GetIoFileInt(FileStream, IVersion, 0, 255, &IsOk); + Text->Box.FillBColor = (ColorIndex_t)GetIoFileInt(FileStream, IVersion, 0, 255, &IsOk); + AdjustCustomColor(IVersion, &Text->Box.BColor); + AdjustCustomColor(IVersion, &Text->Box.FillBColor); + } + else + { + Text->Box.BoxType = TextBox_None; + Text->Box.Margin = 0.0; + Text->Box.BColor = White_C; + Text->Box.FillBColor = Black_C; + } + if (IVersion < 70) + { + Text->Angle = GetIoFileInt(FileStream, IVersion, -720, 720, &IsOk) / DEGPERRADIANS; + Text->LineSpacing = 1; + Text->Anchor = TextAnchor_Left; + } + else + { + Text->Angle = GetNextValue(FileStream, FFT, + TextAngleInputSpec.Min, + TextAngleInputSpec.Max, + &IsOk); + Text->LineSpacing = GetNextValue(FileStream, FFT, + TextLineSpacingInputSpec.Min, + TextLineSpacingInputSpec.Max, + &IsOk); + Text->Anchor = (TextAnchor_e)GetIoFileInt(FileStream, IVersion, 0, (LgIndex_t)TextAnchor_HeadRight, &IsOk); + } + + GetZoneAttachment(FileStream, IVersion, &Text->Zone, &Text->AttachToZone, &IsOk); + + Text->BColor = (ColorIndex_t)GetIoFileInt(FileStream, IVersion, 0, 255, &IsOk); + AdjustCustomColor(IVersion, &Text->BColor); + if (IVersion < 70) + TextLength = (short)GetIoFileInt(FileStream, IVersion, 0, 5000, &IsOk); + + ResetString(&Text->MacroFunctionCommand, NULL, TRUE); + + Text->Clipping = Clipping_ClipToViewport; /* default value for pre 101 versions */ + + if (IVersion < 70) + { + short I, S; + for (I = 0; I < TextLength; I++) + { + S = (short)GetIoFileInt(FileStream, IVersion, 0, 1000, &IsOk); + if (OkToLoad && (I <= MaxTextLen)) + Text->Text[I] = (char)S; + } + if (OkToLoad) + Text->Text[MIN(TextLength, MaxTextLen)] = '\0'; + } + else + { + char *S = NULL; + + if (IVersion >= 75) + { + IsOk = ReadMacroFunctionCommand(FileStream, + IVersion, + OkToLoad, + &Text->MacroFunctionCommand); + } /* IVersion >= 75 */ + + if (IVersion >= 101) + { + /* + * The second clipping value was deprecated during v10 development and thus removed. + * This moved Clipping_ClipToFrame to the 2nd position from the 3rd, so we convert + * value 2 to ClipToFrame to support files made during v10 developement. + */ + Text->Clipping = (Clipping_e)GetIoFileInt(FileStream, IVersion, 0, 2, &IsOk); + if (Text->Clipping == (Clipping_e)2) + Text->Clipping = Clipping_ClipToFrame; + } + + if (ReadInString(FileStream, + IVersion, + MaxTextLen, + &S, + OkToLoad)) + { + REQUIRE(!(S || OkToLoad) || VALID_REF(Text->Text)); + if (S) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + if (IsOk) + { + strcpy(Text->Text, S); + } + FREE_ARRAY(S, "Release temp string for new text label"); + } + else if (OkToLoad) + Text->Text[0] = '\0'; + } + else + IsOk = FALSE; + } + + if (!IsOk) + ErrMsg(ErrMsgString); + + return (IsOk); +} + + +static Boolean_t CompareVersion(float Version, + char *VersionString, + Boolean_t IsByteOrderNative) +{ + char *VersionBuf = (char *) & Version; + + REQUIRE(VALID_REF(VersionString)); + + if (IsByteOrderNative) + return ((VersionString[0] == VersionBuf[0]) && + (VersionString[1] == VersionBuf[1]) && + (VersionString[2] == VersionBuf[2]) && + (VersionString[3] == VersionBuf[3])); + else + return ((VersionString[3] == VersionBuf[0]) && + (VersionString[2] == VersionBuf[1]) && + (VersionString[1] == VersionBuf[2]) && + (VersionString[0] == VersionBuf[3])); +} + +static float ValidVersions[] = {7.0F, + 6.3F, 6.2F, 6.1F, 6.0F, + 5.0F, + 4.7F, 4.6F, 4.5F, 4.4F, 4.3F, 4.2F, 4.1F, 4.0F + }; +#define NUMVALIDVERSIONS ((int)(sizeof(ValidVersions)/sizeof(ValidVersions[0]))) + + +/* + * Extra caution taken here in case value read is invalid float + */ +static Boolean_t GetDoubleVersion(char *VersionString, + float *FInputVersion, + Boolean_t IsByteOrderNative) +{ + int I; + REQUIRE(VALID_REF(FInputVersion)); + + for (I = 0; I < NUMVALIDVERSIONS; I++) + if (CompareVersion(ValidVersions[I], VersionString, IsByteOrderNative)) + { + *FInputVersion = ValidVersions[I]; + return (TRUE); + } + return (FALSE); +} + + +static short GetNewInputVersion(FileStream_s *FileStream) +{ + /* + * + */ + char Buf[4]; + short IVersion = 0; + short I; + LgIndex_t OneValue; + Boolean_t IsOk = TRUE; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(FileStream->IsByteOrderNative); + + if (TP_FREAD(Buf, 4, 1, FileStream->File) != 1) + return (0); + + if (strncmp(Buf, "#!TD", 4)) + return (0); + + if (TP_FREAD(Buf, 4, 1, FileStream->File) != 1) + return (0); + + if (Buf[0] != 'V') + return (0); + + I = 1; + while ((I < 4) && isdigit(Buf[I])) + IVersion = IVersion * 10 + Buf[I++] - '0'; + + if (IVersion < 70) + return (0); + else if (IVersion > TecplotBinaryFileVersion) + { + ErrMsg(translate("Binary file version newer than Tecplot version. " + "Upgrade Tecplot or use an older Preplot to produce " + "the datafile.")); + return (IVersion); + } + + /* + * Determine Byte Order. + */ + + OneValue = GetIoFileInt(FileStream, + IVersion, + -MAXINDEX, + MAXINDEX, + &IsOk); + + if (!IsOk) + return (0); + + FileStream->IsByteOrderNative = (OneValue == 1); + + return (IVersion); +} + +/** + * Return value of zero is to be considered as an invalid + * tecplot binary datafile header. Actually binary files + * older than version 4.0 (return value of 40) are not supported + * (See notes in preplot.c). + */ +short GetInputVersion(FileStream_s *FileStream) +{ + Boolean_t IsOk = TRUE; + float FInputVersion; + short IVersion; + char VersionString[4]; + FileOffset_t StartOffset = 0; + + /* + * First check to see if file uses new + * input version format. + */ + + /* keep track of our start offset */ + StartOffset = TP_FTELL(FileStream->File); + + IVersion = GetNewInputVersion(FileStream); + + if (IVersion > TecplotBinaryFileVersion) + return IVersion; /* unsupported version */ + else if (IVersion == 0) + { + /* rewind to clear any errors and seek to the start offset */ + rewind(FileStream->File); + IsOk = (TP_FSEEK(FileStream->File, StartOffset, SEEK_SET) == 0); + + if (IsOk && TP_FREAD(VersionString, 4, 1, FileStream->File) == 1) + { + /* try both native and foreign versions numbers */ + if (!GetDoubleVersion(VersionString, &FInputVersion, FileStream->IsByteOrderNative)) + { + FileStream->IsByteOrderNative = !FileStream->IsByteOrderNative; /* ...reverse the byte order */ + IsOk = GetDoubleVersion(VersionString, &FInputVersion, FileStream->IsByteOrderNative); + } + if (IsOk) + IVersion = ROUNDS(FInputVersion * 10); + } + } + + if (IsOk) + return (IVersion); + else + return ((short)0); +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE /* TODO(RMS)-H 12/12/2005: ENGINE: refactor to use just the Interrupted flag as-is */ +#else +#endif +#endif + + + +/********************************************************************** + ********************************************************************** + ********************** OUTPUT ************************** + ********************************************************************** + **********************************************************************/ + + +/** + * Byte blocks cannot be unaligned or reversed in bytes + */ +Boolean_t WriteBinaryByteBlock(FileStream_s *FileStream, + const Byte_t *ByteValues, + const HgIndex_t NumValues) +{ + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(ByteValues)); + REQUIRE(NumValues >= 0); + + Boolean_t IsOk = TP_FWRITE(ByteValues, + sizeof(Byte_t), + (size_t)NumValues, + FileStream->File) == (size_t)NumValues; + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + * Type Byte_t cannot be unaligned or reversed in byte order + */ +static inline Boolean_t WriteBinaryByte(FileStream_s *FileStream, + Byte_t ByteValue) +{ + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + Boolean_t IsOk = WriteBinaryByteBlock(FileStream, &ByteValue, 1); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + */ +template <typename T> +void CopyAndReverseUnalignedBytes(T *DstBuffer, + const Byte_t *SrcBuffer) +{ + REQUIRE(VALID_REF(DstBuffer)); + REQUIRE(VALID_REF(SrcBuffer)); + size_t typeSize = sizeof(T); + for (size_t ii = 0; ii < typeSize; ii++) + ((Byte_t *)(DstBuffer))[ii] = ((Byte_t *)(SrcBuffer))[typeSize-1-ii]; +} + +/** + */ +template <typename T> +void CopyUnalignedBytes(T *DstBuffer, + const Byte_t *SrcBuffer) +{ + REQUIRE(VALID_REF(DstBuffer)); + REQUIRE(VALID_REF(SrcBuffer)); + for (size_t ii = 0; ii < sizeof(T); ii++) + ((Byte_t *)(DstBuffer))[ii] = ((Byte_t *)(SrcBuffer))[ii]; +} + +/** + */ +template <typename T> +Boolean_t WriteBinaryDataUnaligned(FileStream_s *FileStream, + const Byte_t *ValueBuffer, + const Boolean_t ValueInNativeOrder) +{ + REQUIRE(VALID_REF(FileStream) && VALID_FILE_HANDLE(FileStream->File)); + REQUIRE(VALID_REF(ValueBuffer)); + REQUIRE(VALID_BOOLEAN(ValueInNativeOrder)); + + T DataValue; + if (ValueInNativeOrder != FileStream->IsByteOrderNative) + CopyAndReverseUnalignedBytes<T>(&DataValue, ValueBuffer); + else + CopyUnalignedBytes<T>(&DataValue, ValueBuffer); + + Boolean_t IsOk = TP_FWRITE(&DataValue, sizeof(T), 1, FileStream->File) == 1; + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * This is used in many places and requires the value be in proper order. + */ +Boolean_t WriteBinaryInt16(FileStream_s *FileStream, + Int16_t Value) +{ + Boolean_t IsOk; + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE("Value can be any Int16_t"); + IsOk = WriteBinaryDataUnaligned<Int16_t>(FileStream, (Byte_t *) & Value, TRUE/*ValueInNativeOrder*/); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + * This is used in many places and requires the value be in proper order. + */ +Boolean_t WriteBinaryInt32(FileStream_s *FileStream, + Int32_t Value) +{ + Boolean_t IsOk; + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE("Value can be any Int32_t"); + IsOk = WriteBinaryDataUnaligned<Int32_t>(FileStream, (Byte_t *) & Value, TRUE/*ValueInNativeOrder*/); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + */ +template <typename T> +Boolean_t WriteBinaryBlockUnaligned(FileStream_s *FileStream, + const Byte_t *Values, + const HgIndex_t NumValues, + const Boolean_t ValuesInNativeOrdering) +{ + Boolean_t IsOk = TRUE; + Boolean_t WriteEachValueSeparately; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(Values)); + REQUIRE(NumValues >= 0); + REQUIRE(VALID_BOOLEAN(ValuesInNativeOrdering)); + + WriteEachValueSeparately = (ValuesInNativeOrdering != FileStream->IsByteOrderNative); + + if (WriteEachValueSeparately) + { + for (HgIndex_t NIndex = 0; IsOk && NIndex < NumValues; NIndex++) + { + IsOk = WriteBinaryDataUnaligned<T>(FileStream, Values + NIndex * sizeof(T), ValuesInNativeOrdering); + } + } + else + { +#if 1 + size_t NumBytesToWrite = NumValues * sizeof(T); + size_t NumBytesWritten = TP_FWRITE(Values, sizeof(Byte_t), NumBytesToWrite, FileStream->File); + IsOk = NumBytesToWrite == NumBytesWritten; +#else + IsOk = WriteBinaryByteBlock(FileStream, Values, NumValues * sizeof(T)); +#endif + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Use Byte_t instead of Int16_t to support unaligned values + */ +Boolean_t WriteBinaryInt16BlockUnaligned(FileStream_s *FileStream, + Byte_t *Int16Values, + HgIndex_t NumValues, + Boolean_t ValuesInNativeOrdering) +{ + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(Int16Values)); + REQUIRE(NumValues >= 0); + REQUIRE(VALID_BOOLEAN(ValuesInNativeOrdering)); + + Boolean_t IsOk = WriteBinaryBlockUnaligned<Int16_t>(FileStream, + Int16Values, + NumValues, + ValuesInNativeOrdering); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/** + * Use Byte_t instead of Int32_t to support unaligned values + */ +Boolean_t WriteBinaryInt32BlockUnaligned(FileStream_s *FileStream, + Byte_t *Int32Values, + HgIndex_t NumValues, + Boolean_t ValuesInNativeOrdering) +{ + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(Int32Values)); + REQUIRE(NumValues >= 0); + REQUIRE(VALID_BOOLEAN(ValuesInNativeOrdering)); + + Boolean_t IsOk = WriteBinaryBlockUnaligned<Int32_t>(FileStream, + Int32Values, + NumValues, + ValuesInNativeOrdering); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + + +/** + */ +Boolean_t WriteBinaryReal(FileStream_s *FileStream, + double RR, + FieldDataType_e FieldDataType) +{ + Boolean_t IsOk = FALSE; /* ...quite compiler */ + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE((FieldDataType == FieldDataType_Float) || + (FieldDataType == FieldDataType_Double) || + (FieldDataType == FieldDataType_Byte)); + + switch (FieldDataType) + { + case FieldDataType_Float : + { + float FloatVal = CONVERT_DOUBLE_TO_FLOAT(RR); + IsOk = WriteBinaryDataUnaligned<float>(FileStream, (Byte_t *) & FloatVal, TRUE/*NativeOrdering*/); + } break; + case FieldDataType_Double : + { + double DoubleVal = CLAMP_DOUBLE(RR); + IsOk = WriteBinaryDataUnaligned<double>(FileStream, (Byte_t *) & DoubleVal, TRUE/*NativeOrdering*/); + } break; + case FieldDataType_Byte : + { + /* Note: type Byte cannot be unaligned or reversed in bytes */ + Byte_t B; + if (RR > 255) + B = 255; + else if (RR < 0) + B = 0; + else + B = (Byte_t)RR; + IsOk = WriteBinaryByte(FileStream, B); + } break; + default: CHECK(FALSE); break; + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +Boolean_t WriteFieldDataType(FileStream_s *FileStream, + FieldDataType_e FDT, + Boolean_t WriteBinary) +{ + if (WriteBinary) + return (WriteBinaryInt32(FileStream, (LgIndex_t)FDT)); + else + { + short S = 0; + switch (FDT) + { + case FieldDataType_Float : S = fprintf(FileStream->File, "SINGLE "); break; + case FieldDataType_Double : S = fprintf(FileStream->File, "DOUBLE "); break; + case FieldDataType_Int32 : S = fprintf(FileStream->File, "LONGINT "); break; + case FieldDataType_Int16 : S = fprintf(FileStream->File, "SHORTINT "); break; + case FieldDataType_Byte : S = fprintf(FileStream->File, "BYTE "); break; + case FieldDataType_Bit : S = fprintf(FileStream->File, "BIT "); break; + default: CHECK(FALSE); + } + return (FPRINTFOK(S)); + } +} + +/** + */ +template <typename T> +Boolean_t WriteBinaryChecksumByteValues(FileStream_s *FileStream, + const Byte_t *ByteValues, + const HgIndex_t NumValues) +{ + REQUIRE(VALID_REF(FileStream) && VALID_FILE_HANDLE(FileStream->File)); + REQUIRE(VALID_REF(ByteValues)); + REQUIRE(NumValues >= 1); + + Boolean_t IsOk; + if (NumValues == 1) + IsOk = WriteBinaryDataUnaligned<T>(FileStream, ByteValues, TRUE); + else + IsOk = WriteBinaryBlockUnaligned<T>(FileStream, ByteValues, NumValues, TRUE); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + * For FieldData of Type Bit, use WriteBinaryFieldDataBlockOfTypeBit instead. + */ +template <typename T> +Boolean_t WriteBinaryFieldDataBlockOfType(FileStream_s *FileStream, + const FieldData_pa FieldData, + const LgIndex_t StartOffset, + const LgIndex_t NumValues) +{ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + Boolean_t IsOk = FALSE; + if (IsFieldDataDirectAccessAllowed(FieldData)) + { + Byte_t *ByteArray = GetFieldDataBytePtr(FieldData) + StartOffset * sizeof(T); + IsOk = WriteBinaryChecksumByteValues<T>(FileStream, ByteArray, (HgIndex_t)NumValues); + } + else + { + for (LgIndex_t Offset = StartOffset; Offset < NumValues; Offset++) + { + T ValueBuffer = (T)GetFieldValue(FieldData, Offset); + Byte_t *ByteValue = (Byte_t *) & ValueBuffer; + IsOk = WriteBinaryChecksumByteValues<T>(FileStream, ByteValue, 1); + } + } + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +static Boolean_t WriteBinaryFieldDataBlockOfTypeBit(FileStream_s *FileStream, + const FieldData_pa FieldData, + const LgIndex_t StartOffset, /* Not used */ + const LgIndex_t NumValues) +{ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + Boolean_t IsOk = FALSE; + size_t NumBytes = 1 + (NumValues - 1) / 8; + if (IsFieldDataDirectAccessAllowed(FieldData)) + { + Byte_t *ByteArray = GetFieldDataBytePtr(FieldData); + IsOk = WriteBinaryChecksumByteValues<Byte_t>(FileStream, ByteArray, (HgIndex_t)NumBytes); + } + else + { + // Bits are written out a Byte at a time and since we only come in here every 8th + // bit, make sure to assemble a Byte value from the next 8 bits. + for (LgIndex_t Offset = 0; Offset < NumValues; Offset += 8) + { + Byte_t ValueBuffer = 0; + for (int ii = 0; ii < 8; ii++) + { + Byte_t CurBit = (Byte_t)GetFieldValue(FieldData, Offset + ii); + ValueBuffer |= (CurBit << ii); + } + IsOk = WriteBinaryChecksumByteValues<Byte_t>(FileStream, &ValueBuffer, 1); + } + } + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/* + */ +Boolean_t WriteBinaryFieldDataBlock(FileStream_s *FileStream, + FieldData_pa FieldData, + LgIndex_t StartOffset, + LgIndex_t NumValues) +{ +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + Boolean_t IsOk = FALSE; + switch (GetFieldDataType(FieldData)) + { + case FieldDataType_Float : IsOk = WriteBinaryFieldDataBlockOfType<float>(FileStream, FieldData, StartOffset, NumValues); break; + case FieldDataType_Double : IsOk = WriteBinaryFieldDataBlockOfType<double>(FileStream, FieldData, StartOffset, NumValues); break; + case FieldDataType_Int32 : IsOk = WriteBinaryFieldDataBlockOfType<Int32_t>(FileStream, FieldData, StartOffset, NumValues); break; + case FieldDataType_Int16 : IsOk = WriteBinaryFieldDataBlockOfType<Int16_t>(FileStream, FieldData, StartOffset, NumValues); break; + case FieldDataType_Byte : IsOk = WriteBinaryFieldDataBlockOfType<Byte_t>(FileStream, FieldData, StartOffset, NumValues); break; + case FieldDataType_Bit : IsOk = WriteBinaryFieldDataBlockOfTypeBit(FileStream, FieldData, StartOffset, NumValues); break; + default: CHECK(FALSE); break; + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +static Boolean_t WriteASCIIFieldDataValue(FileStream_s *FileStream, + FieldData_pa FieldData, + LgIndex_t Offset, + SmInteger_t AsciiPrecision) +{ + Boolean_t IsOk = FALSE; /* ...quiet compiler */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + double V = 0.0; + char buffer[100*MAX_SIZEOFUTF8CHAR]; + char *AsciiValue = buffer; + +#ifdef TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + V = GetFieldValue(FieldData, Offset); + + switch (GetFieldDataType(FieldData)) + { + case FieldDataType_Float : + case FieldDataType_Double : + /*IsOk = FPRINTFOK(fprintf(FileStream->File," %.*E",(int)AsciiPrecision,V)); */ + sprintf(buffer, " %.*E", (int)AsciiPrecision, V); + break; + case FieldDataType_Int32 : + /* IsOk = FPRINTFOK(fprintf(FileStream->File," %*d",(int)AsciiPrecision,ROUNDL(V))); */ + sprintf(buffer, " %*d", (int)AsciiPrecision, ROUNDL(V)); + break; + case FieldDataType_Int16 : + /* IsOk = FPRINTFOK(fprintf(FileStream->File," %6d",ROUND2(V))); */ + sprintf(buffer, " %6d", ROUND2(V)); + break; + case FieldDataType_Byte : + /* IsOk = FPRINTFOK(fprintf(FileStream->File," %3d",ROUNDS(V))); */ + sprintf(buffer, " %3d", ROUNDS(V)); + break; + case FieldDataType_Bit : + /* IsOk = FPRINTFOK(fprintf(FileStream->File," %c",((V == 0) ? '0' : '1'))); */ + sprintf(buffer, " %c", ((V == 0) ? '0' : '1')); + break; + default: CHECK(FALSE); break; + } + IsOk = FPRINTFOK(fprintf(FileStream->File, buffer)); +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + ENSURE(VALID_BOOLEAN(IsOk)); + return (IsOk); +} + + +/** + */ +Boolean_t WriteCCFieldDataBlock(FileStream_s *FileStream, + FieldData_pa FieldData, + Boolean_t IsOrderedData, + LgIndex_t NumIPts, + LgIndex_t NumJPts, + LgIndex_t NumKPts, + Boolean_t WriteBinary, + SmInteger_t AsciiPrecision) +{ + Boolean_t IsOk = TRUE; + LgIndex_t NumValues; + LgIndex_t I, J, K; + LgIndex_t NumIJPts = -1; + LgIndex_t IEnd = -1; + LgIndex_t JEnd = -1; + LgIndex_t KEnd = -1; + Boolean_t IsLinear = -1; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(FieldData)); + REQUIRE(VALID_BOOLEAN(IsOrderedData)); + REQUIRE(NumIPts >= 0); + REQUIRE(NumJPts >= 0); + REQUIRE(NumKPts >= 0); + REQUIRE(VALID_BOOLEAN(WriteBinary)); + REQUIRE(IMPLICATION(!WriteBinary, AsciiPrecision >= 0)); + + /* + * As of version 103 Tecplot writes binary data files so that ordered cell + * centered field data includes the ghost cells. This makes it much easier + * for Tecplot to map the data when reading by simply writing out + * FieldData->NumValues. As of version 104 the ghost cells of the slowest + * moving index are not included but that does effect the output as it is + * still FieldData->NumValues. + */ + if (IsOrderedData && !WriteBinary) + { + /* + * Ordered ASCII output is always layed out using + * DataValueStructure_Classic format. + */ + NumIJPts = NumIPts * NumJPts; + IEnd = MAX(NumIPts - 1, 1); + JEnd = MAX(NumJPts - 1, 1); + KEnd = MAX(NumKPts - 1, 1); + NumValues = (IEnd * JEnd * KEnd); + IsLinear = ((NumJPts == 1 && NumKPts == 1) || + (NumIPts == 1 && NumKPts == 1) || + (NumIPts == 1 && NumJPts == 1)); + } + else + { + NumValues = GetFieldDataNumValues(FieldData); + } + + if (WriteBinary) + { + IsOk = WriteBinaryFieldDataBlock(FileStream, FieldData, 0, NumValues); + } + else + { + LgIndex_t NumValuesPerLine = 80 / (AsciiPrecision + 5); + if (IsOrderedData && !IsLinear) + { + LgIndex_t ValueIndex = 0; + for (K = 0; K < KEnd && IsOk; K++) + for (J = 0; J < JEnd && IsOk; J++) + for (I = 0; I < IEnd && IsOk; I++) + { + LgIndex_t CellIndex = I + (J * NumIPts) + (K * NumIJPts); + IsOk = WriteASCIIFieldDataValue(FileStream, + FieldData, + CellIndex, + AsciiPrecision); + if ((ValueIndex + 1) % NumValuesPerLine == 0 || ValueIndex == NumValues - 1) + IsOk = (fputc('\n', FileStream->File) != EOF); + ValueIndex++; + } + } + else + { + for (I = 0; I < NumValues && IsOk; I++) + { + IsOk = WriteASCIIFieldDataValue(FileStream, + FieldData, + I, + AsciiPrecision); + if ((I + 1) % NumValuesPerLine == 0 || I == NumValues - 1) + IsOk = (fputc('\n', FileStream->File) != EOF); + } + } + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +Boolean_t DumpDatafileString(FileStream_s *FileStream, + const char *S, + Boolean_t WriteBinary) +{ + Boolean_t IsOk = TRUE; + const char *CPtr = S; + if (WriteBinary) + { + const char *CPtr = S; + while (IsOk && CPtr && *CPtr) + IsOk = WriteBinaryInt32(FileStream, (LgIndex_t)(unsigned char) * CPtr++); + if (IsOk) + IsOk = WriteBinaryInt32(FileStream, 0); + } + else + { + fputc('"', FileStream->File); + while (CPtr && *CPtr) + { + if (*CPtr == '\n') + { + CPtr++; + fputc('\\', FileStream->File); + fputc('\\', FileStream->File); + fputc('n', FileStream->File); + } + else + { + if ((*CPtr == '"') || (*CPtr == '\\')) + fputc('\\', FileStream->File); + fputc(*CPtr++, FileStream->File); + } + } + fputc('"', FileStream->File); + IsOk = (fputc('\n', FileStream->File) != EOF); + } + return (IsOk); +} + + +static void WriteAsciiColor(FILE *File, + ColorIndex_t Color) +{ + if (Color >= FirstCustomColor && Color <= LastCustomColor) + fprintf(File, "CUST%1d ", Color - FirstCustomColor + 1); + else + { + switch (Color) + { + case Black_C : fprintf(File, "BLACK "); break; + case Red_C : fprintf(File, "RED "); break; + case Green_C : fprintf(File, "GREEN "); break; + case Blue_C : fprintf(File, "BLUE "); break; + case Cyan_C : fprintf(File, "CYAN "); break; + case Yellow_C : fprintf(File, "YELLOW "); break; + case Purple_C : fprintf(File, "PURPLE "); break; + case White_C : fprintf(File, "WHITE "); break; + } + } +} + +static void WriteAsciiTextGeomBasics(FILE* File, + CoordSys_e CoordSys, + Boolean_t AttachToZone, + EntIndex_t Zone, + ColorIndex_t Color, + Scope_e Scope, + Boolean_t IncludeZ, + Boolean_t WriteGridDataAsPolar, + AnchorPos_u const* AnchorPos, + double ScaleFact) +{ + REQUIRE(VALID_REF(File)); + REQUIRE(VALID_TEXT_COORDSYS(CoordSys) || VALID_GEOM_COORDSYS(CoordSys)); + REQUIRE(VALID_BOOLEAN(AttachToZone)); + REQUIRE(IMPLICATION(AttachToZone, Zone >= 0)); + REQUIRE(VALID_ENUM(Scope, Scope_e)); + REQUIRE(VALID_BOOLEAN(IncludeZ)); + REQUIRE(VALID_BOOLEAN(WriteGridDataAsPolar)); + REQUIRE(VALID_REF(AnchorPos)); + + fprintf(File, "CS="); + if (CoordSys == CoordSys_Frame) + fprintf(File, "FRAME"); + else if (CoordSys == CoordSys_Grid) + fprintf(File, "GRID"); + /* + * Not currently used + * + else if (CoordSys == CoordSys_FrameOffset) + fprintf(File,"FRAMEOFFSET"); + */ + else if (CoordSys == CoordSys_Grid3D) + fprintf(File, "GRID3D"); + else + CHECK(FALSE); + + if (CoordSys == CoordSys_Grid && !IncludeZ && WriteGridDataAsPolar) + { + fprintf(File, "\nTHETA=%.12G,R=%.12G", + ScaleFact*AnchorPos->ThetaR.Theta, + ScaleFact*AnchorPos->ThetaR.R); + CHECK(!IncludeZ); + } + else + { + fprintf(File, "\nX=%.12G,Y=%.12G", + ScaleFact*AnchorPos->XYZ.X, + ScaleFact*AnchorPos->XYZ.Y); + if (IncludeZ) + fprintf(File, ",Z=%.12G", ScaleFact*AnchorPos->XYZ.Z); + } + + if (AttachToZone) + fprintf(File, "\nZN=%d", Zone + 1); + + fprintf(File, "\nC="); + WriteAsciiColor(File, Color); + + fprintf(File, "\nS="); + if (Scope == Scope_Global) + fprintf(File, "GLOBAL"); + else if (Scope == Scope_Local) + fprintf(File, "LOCAL"); + else + CHECK(FALSE); + + fputc('\n', File); +} + + +bool DumpGeometry(FileStream_s* FileStream, + Geom_s const* Geom, + Boolean_t WriteBinary, + Boolean_t WriteGridDataAsPolar) +{ + LgIndex_t I, Index; + LgIndex_t SegIndex; + bool IsOk = TRUE; + FieldDataType_e FDT; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(Geom)); + REQUIRE(Geom->GeomType != GeomType_Image); + + if (WriteBinary) + { + WriteBinaryReal(FileStream, GeomMarker, FieldDataType_Float); + if (Geom->PositionCoordSys == CoordSys_Grid) + WriteBinaryInt32(FileStream, 0); + else if (Geom->PositionCoordSys == CoordSys_Frame) + WriteBinaryInt32(FileStream, 1); +#if 0 /* + * Not currently used + */ + else if (Geom->PositionCoordSys == CoordSys_FrameOffset) + WriteBinaryInt32(FileStream, 2); +#endif + /* + * PositionCoordSys == 3 is for old window coordinate system + */ + else if (Geom->PositionCoordSys == CoordSys_Grid3D) + WriteBinaryInt32(FileStream, 4); + else + CHECK(FALSE); + + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->Scope); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->DrawOrder); + WriteBinaryReal(FileStream, Geom->AnchorPos.Generic.V1, FieldDataType_Double); + WriteBinaryReal(FileStream, Geom->AnchorPos.Generic.V2, FieldDataType_Double); + WriteBinaryReal(FileStream, Geom->AnchorPos.Generic.V3, FieldDataType_Double); + if (Geom->AttachToZone) + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->Zone); + else + WriteBinaryInt32(FileStream, (LgIndex_t) - 1); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->BColor); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->FillBColor); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->IsFilled); + CHECK(Geom->GeomType != GeomType_LineSegs3D); /* deprecated */ + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->GeomType); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->LinePattern); + WriteBinaryReal(FileStream, Geom->PatternLength, FieldDataType_Double); + WriteBinaryReal(FileStream, Geom->LineThickness, FieldDataType_Double); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->NumEllipsePts); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->ArrowheadStyle); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->ArrowheadAttachment); + WriteBinaryReal(FileStream, Geom->ArrowheadSize, FieldDataType_Double); + + WriteBinaryReal(FileStream, Geom->ArrowheadAngle, FieldDataType_Double); + + /* MACRO FUNCTION COMMAND */ + DumpDatafileString(FileStream, Geom->MacroFunctionCommand, TRUE); + + /* + * Assume geometry has X,Y (and Z) all using same field + * data type. + */ + FDT = GetGeomFieldDataType(Geom); + WriteFieldDataType(FileStream, FDT, TRUE); + WriteBinaryInt32(FileStream, (LgIndex_t)Geom->Clipping); + + if (Geom->GeomType == GeomType_LineSegs) + { + short S; + WriteBinaryInt32(FileStream, Geom->NumSegments); + I = 0; + for (S = 0; IsOk && (S < Geom->NumSegments); S++) + { + WriteBinaryInt32(FileStream, Geom->NumSegPts[S]); + WriteBinaryFieldDataBlock(FileStream, Geom->GeomData.Generic.V1Base, I, Geom->NumSegPts[S]); + IsOk = WriteBinaryFieldDataBlock(FileStream, Geom->GeomData.Generic.V2Base, I, Geom->NumSegPts[S]) == TRUE; + if (Geom->PositionCoordSys == CoordSys_Grid3D) + IsOk = WriteBinaryFieldDataBlock(FileStream, Geom->GeomData.Generic.V3Base, I, Geom->NumSegPts[S]) == TRUE; + I += Geom->NumSegPts[S]; + } + } + else if (Geom->GeomType == GeomType_Rectangle || + Geom->GeomType == GeomType_Ellipse) + { + WriteBinaryReal(FileStream, GetFieldValue(Geom->GeomData.XYZ.XBase, 0), FDT); + IsOk = WriteBinaryReal(FileStream, GetFieldValue(Geom->GeomData.XYZ.YBase, 0), FDT) == TRUE; + } + else + { + CHECK((Geom->GeomType == GeomType_Square) || + (Geom->GeomType == GeomType_Circle)); + IsOk = WriteBinaryReal(FileStream, GetFieldValue(Geom->GeomData.XYZ.XBase, 0), FDT) == TRUE; + } + + } + else + { + double ScaleFact; + if (Geom->PositionCoordSys == CoordSys_Frame) + ScaleFact = 100.0; + else + ScaleFact = 1.0; + + fprintf(FileStream->File, "GEOMETRY\nF=POINT\n"); + WriteAsciiTextGeomBasics(FileStream->File, + Geom->PositionCoordSys, + Geom->AttachToZone, + Geom->Zone, + Geom->BColor, + Geom->Scope, + TRUE, + WriteGridDataAsPolar, + &Geom->AnchorPos, + ScaleFact); + + switch (Geom->LinePattern) + { + case LinePattern_Solid : fprintf(FileStream->File, "L=SOLID\n"); break; + case LinePattern_Dashed : fprintf(FileStream->File, "L=DASHED\n"); break; + case LinePattern_DashDot : fprintf(FileStream->File, "L=DASHDOT\n"); break; + case LinePattern_Dotted : fprintf(FileStream->File, "L=DOTTED\n"); break; + case LinePattern_LongDash : fprintf(FileStream->File, "L=LONGDASH\n"); break; + case LinePattern_DashDotDot : fprintf(FileStream->File, "L=DASHDOTDOT\n"); break; + default: CHECK(FALSE); break; + } + fprintf(FileStream->File, "PL=%.12G\n", + Geom->PatternLength*PatternLengthInputSpec.InterfaceAdjust.ScaleFact); + fprintf(FileStream->File, "LT=%.12G\n", + Geom->LineThickness*LineThicknessInputSpec.InterfaceAdjust.ScaleFact); + + if (Geom->IsFilled) + { + fprintf(FileStream->File, "FC="); + WriteAsciiColor(FileStream->File, Geom->FillBColor); + } + + if (Geom->Clipping == Clipping_ClipToViewport) + fprintf(FileStream->File, "CLIPPING=CLIPTOVIEWPORT\n"); + else if (Geom->Clipping == Clipping_ClipToFrame) + fprintf(FileStream->File, "CLIPPING=CLIPTOFRAME\n"); + else + CHECK(FALSE); + + if (Geom->DrawOrder == DrawOrder_AfterData) + fprintf(FileStream->File, "DRAWORDER=AFTERDATA\n"); + else if (Geom->DrawOrder == DrawOrder_BeforeData) + fprintf(FileStream->File, "DRAWORDER=BEFOREDATA\n"); + else + CHECK(FALSE); + + /* Macro function command */ + fprintf(FileStream->File, "MFC="); + DumpDatafileString(FileStream, Geom->MacroFunctionCommand, FALSE); + + if ((Geom->GeomType == GeomType_Circle) || (Geom->GeomType == GeomType_Ellipse)) + fprintf(FileStream->File, "EP=%ld\n", (long)Geom->NumEllipsePts); + + if (Geom->GeomType == GeomType_LineSegs && Geom->PositionCoordSys != CoordSys_Grid3D) + { + switch (Geom->ArrowheadStyle) + { + case ArrowheadStyle_Plain : fprintf(FileStream->File, "AST=PLAIN\n"); break; + case ArrowheadStyle_Filled : fprintf(FileStream->File, "AST=FILLED\n"); break; + case ArrowheadStyle_Hollow : fprintf(FileStream->File, "AST=HOLLOW\n"); break; + default: CHECK(FALSE); break; + } + + switch (Geom->ArrowheadAttachment) + { + case ArrowheadAttachment_None : break; + case ArrowheadAttachment_AtBeginning : fprintf(FileStream->File, "AAT=BEGINNING\n"); break; + case ArrowheadAttachment_AtEnd : fprintf(FileStream->File, "AAT=END\n"); break; + case ArrowheadAttachment_AtBothEnds : fprintf(FileStream->File, "AAT=BOTH\n"); break; + default: CHECK(FALSE); break; + } + if (Geom->ArrowheadAttachment != ArrowheadAttachment_None) + { + fprintf(FileStream->File, "ASZ=%.12G\n", + Geom->ArrowheadSize*ArrowheadSizeInputSpec.InterfaceAdjust.ScaleFact); + fprintf(FileStream->File, "AAN=%.12G\n", + Geom->ArrowheadAngle*ArrowheadAngleInputSpec.InterfaceAdjust.ScaleFact); + } + } + + switch (Geom->GeomType) + { + case GeomType_LineSegs : + { + fprintf(FileStream->File, "T=LINE\n"); + fprintf(FileStream->File, "DT="); + WriteFieldDataType(FileStream, GetFieldDataType(Geom->GeomData.Generic.V1Base), FALSE); + fputc('\n', FileStream->File); + fprintf(FileStream->File, "%d\n", (int)Geom->NumSegments); + SegIndex = 0; + for (I = 0; IsOk && (I < Geom->NumSegments); I++) + { + fprintf(FileStream->File, "%ld\n", (long)Geom->NumSegPts[I]); + for (Index = 0; Index < Geom->NumSegPts[I]; Index++) + { + fprintf(FileStream->File, "%.12G ", GetFieldValue(Geom->GeomData.Generic.V1Base, SegIndex + Index)*ScaleFact); + fprintf(FileStream->File, "%.12G", GetFieldValue(Geom->GeomData.Generic.V2Base, SegIndex + Index)*ScaleFact); + if (Geom->PositionCoordSys == CoordSys_Grid3D) + IsOk = FPRINTFOK(fprintf(FileStream->File, " %.12G\n", GetFieldValue(Geom->GeomData.Generic.V3Base, SegIndex + Index))); + else + IsOk = (Boolean_t)(fputc('\n', FileStream->File) != EOF); + } + SegIndex += Geom->NumSegPts[I]; + } + } break; + case GeomType_Rectangle : + { + fprintf(FileStream->File, "T=RECTANGLE %.12G %.12G\n", + GetFieldValue(Geom->GeomData.XYZ.XBase, 0)*ScaleFact, + GetFieldValue(Geom->GeomData.XYZ.YBase, 0)*ScaleFact); + } break; + case GeomType_Square : + { + fprintf(FileStream->File, "T=SQUARE %.12G\n", + GetFieldValue(Geom->GeomData.XYZ.XBase, 0)*ScaleFact); + } break; + case GeomType_Circle : + { + fprintf(FileStream->File, "T=CIRCLE %.12G\n", + GetFieldValue(Geom->GeomData.XYZ.XBase, 0)*ScaleFact); + } break; + case GeomType_Ellipse : + { + fprintf(FileStream->File, "T=ELLIPSE %.12G %.12G\n", + GetFieldValue(Geom->GeomData.XYZ.XBase, 0)*ScaleFact, + GetFieldValue(Geom->GeomData.XYZ.YBase, 0)*ScaleFact); + } break; + default: CHECK(FALSE); + } + } + return IsOk; +} + +/** + */ +bool DumpText(FileStream_s* FileStream, + Text_s const* Text, + Boolean_t WriteBinary, + Boolean_t WriteGridDataAsPolar) +{ + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_REF(Text)); + REQUIRE(VALID_BOOLEAN(WriteBinary)); + REQUIRE(VALID_BOOLEAN(WriteGridDataAsPolar)); + + if (WriteBinary) + { + WriteBinaryReal(FileStream, TextMarker, FieldDataType_Float); + if (Text->PositionCoordSys == CoordSys_Grid) + WriteBinaryInt32(FileStream, 0); + else if (Text->PositionCoordSys == CoordSys_Frame) + WriteBinaryInt32(FileStream, 1); +#if 0 /* + * Not currently used + */ + else if (Geom->PositionCoordSys == CoordSys_FrameOffset) + WriteBinaryInt32(FileStream, 2); +#endif + /* + * 3 is used for old window coordinate system + */ + else if (Text->PositionCoordSys == CoordSys_Grid3D) + WriteBinaryInt32(FileStream, 4); + else + CHECK(FALSE); + + WriteBinaryInt32(FileStream, (LgIndex_t)Text->Scope); + WriteBinaryReal(FileStream, Text->AnchorPos.Generic.V1, FieldDataType_Double); + WriteBinaryReal(FileStream, Text->AnchorPos.Generic.V2, FieldDataType_Double); + WriteBinaryReal(FileStream, Text->AnchorPos.Generic.V3, FieldDataType_Double); + WriteBinaryInt32(FileStream, (LgIndex_t)Text->TextShape.Font); + WriteBinaryInt32(FileStream, (LgIndex_t)Text->TextShape.SizeUnits); + WriteBinaryReal(FileStream, Text->TextShape.Height, FieldDataType_Double); + WriteBinaryInt32(FileStream, (LgIndex_t)Text->Box.BoxType); + WriteBinaryReal(FileStream, Text->Box.Margin, FieldDataType_Double); + WriteBinaryReal(FileStream, Text->Box.LineThickness, FieldDataType_Double); + WriteBinaryInt32(FileStream, (LgIndex_t)Text->Box.BColor); + WriteBinaryInt32(FileStream, (LgIndex_t)Text->Box.FillBColor); + WriteBinaryReal(FileStream, Text->Angle, FieldDataType_Double); + WriteBinaryReal(FileStream, Text->LineSpacing, FieldDataType_Double); + WriteBinaryInt32(FileStream, (LgIndex_t)Text->Anchor); + if (Text->AttachToZone) + WriteBinaryInt32(FileStream, (LgIndex_t)Text->Zone); + else + WriteBinaryInt32(FileStream, (LgIndex_t) - 1); + WriteBinaryInt32(FileStream, (LgIndex_t)Text->BColor); + } + else + { + double ScaleFact; + Boolean_t IncludeZ = Text->PositionCoordSys == CoordSys_Grid3D; + if (Text->PositionCoordSys == CoordSys_Frame) + ScaleFact = 100.0; + else + ScaleFact = 1.0; + fprintf(FileStream->File, "TEXT\n"); + WriteAsciiTextGeomBasics(FileStream->File, + Text->PositionCoordSys, + Text->AttachToZone, + Text->Zone, + Text->BColor, + Text->Scope, + IncludeZ, + WriteGridDataAsPolar, + &Text->AnchorPos, + ScaleFact); + fprintf(FileStream->File, "HU="); + switch (Text->TextShape.SizeUnits) + { + case Units_Grid : fprintf(FileStream->File, "GRID\n"); break; + case Units_Frame : fprintf(FileStream->File, "FRAME\n"); break; + case Units_Point : fprintf(FileStream->File, "POINT\n"); break; + case Units_AxisPercentage : /* Not allowed */ + default: CHECK(FALSE); break; + } + + fprintf(FileStream->File, "LS=%.4G ", Text->LineSpacing); + + fprintf(FileStream->File, "AN="); + switch (Text->Anchor) + { + case TextAnchor_Left : fprintf(FileStream->File, "LEFT\n"); break; + case TextAnchor_Center : fprintf(FileStream->File, "CENTER\n"); break; + case TextAnchor_Right : fprintf(FileStream->File, "RIGHT\n"); break; + case TextAnchor_MidLeft : fprintf(FileStream->File, "MIDLEFT\n"); break; + case TextAnchor_MidCenter : fprintf(FileStream->File, "MIDCENTER\n"); break; + case TextAnchor_MidRight : fprintf(FileStream->File, "MIDRIGHT\n"); break; + case TextAnchor_HeadLeft : fprintf(FileStream->File, "HEADLEFT\n"); break; + case TextAnchor_HeadCenter : fprintf(FileStream->File, "HEADCENTER\n"); break; + case TextAnchor_HeadRight : fprintf(FileStream->File, "HEADRIGHT\n"); break; + default: CHECK(FALSE); break; + } + + switch (Text->Box.BoxType) + { + case TextBox_Hollow : fprintf(FileStream->File, "BX=Hollow "); break; + case TextBox_Filled : fprintf(FileStream->File, "BX=Filled "); break; + default :; + } + fprintf(FileStream->File, "BXM=%.4G ", Text->Box.Margin*100); + fprintf(FileStream->File, "LT=%.4G ", Text->Box.LineThickness*100.0); + fprintf(FileStream->File, "BXO="); WriteAsciiColor(FileStream->File, Text->Box.BColor); + fprintf(FileStream->File, "BXF="); WriteAsciiColor(FileStream->File, Text->Box.FillBColor); + + fprintf(FileStream->File, "\nF="); + switch (Text->TextShape.Font) + { + case Font_Helvetica : fprintf(FileStream->File, "HELV"); break; + case Font_HelveticaBold : fprintf(FileStream->File, "HELV-BOLD"); break; + case Font_Times : fprintf(FileStream->File, "TIMES"); break; + case Font_TimesBold: fprintf(FileStream->File, "TIMES-BOLD"); break; + case Font_TimesItalic : fprintf(FileStream->File, "TIMES-ITALIC"); break; + case Font_TimesItalicBold : fprintf(FileStream->File, "TIMES-ITALIC-BOLD"); break; + case Font_Courier : fprintf(FileStream->File, "COURIER"); break; + case Font_CourierBold : fprintf(FileStream->File, "COURIER-BOLD"); break; + case Font_Greek : fprintf(FileStream->File, "GREEK"); break; + case Font_Math : fprintf(FileStream->File, "MATH"); break; + case Font_UserDefined : fprintf(FileStream->File, "USER-DEF"); break; + default: CHECK(FALSE); break; + } + if (Text->TextShape.SizeUnits == Units_Frame) + ScaleFact = 100.0; + else + ScaleFact = 1.0; + fprintf(FileStream->File, "\nH=%.12G A=%.12G", + Text->TextShape.Height*ScaleFact, + Text->Angle*DEGPERRADIANS); + } + + + if (!WriteBinary) + fprintf(FileStream->File, "\nMFC="); + + DumpDatafileString(FileStream, Text->MacroFunctionCommand, WriteBinary); + + if (!WriteBinary) + { + if (Text->Clipping == Clipping_ClipToViewport) + fprintf(FileStream->File, "CLIPPING=CLIPTOVIEWPORT\n"); + else if (Text->Clipping == Clipping_ClipToFrame) + fprintf(FileStream->File, "CLIPPING=CLIPTOFRAME\n"); + else + CHECK(FALSE); + } + else + { + WriteBinaryInt32(FileStream, (LgIndex_t)Text->Clipping); + } + + if (!WriteBinary) + fprintf(FileStream->File, "T="); + + return DumpDatafileString(FileStream, Text->Text, WriteBinary) == TRUE; +} + +Boolean_t DumpCustomAxisLabels(FileStream_s *FileStream, + Boolean_t WriteBinary, + StringList_pa LabelBase) +{ + Boolean_t IsOk = TRUE; + LgIndex_t Index = 0; + LgIndex_t Count = 0; + + REQUIRE(VALID_REF(FileStream) && VALID_REF(FileStream->File)); + REQUIRE(VALID_BOOLEAN(WriteBinary)); + REQUIRE(StringListValid(LabelBase)); + + Count = StringListCount(LabelBase); + if (WriteBinary) + { + WriteBinaryReal(FileStream, CustomLabelMarker, FieldDataType_Float); + WriteBinaryInt32(FileStream, Count); + } + else + { + fprintf(FileStream->File, " CUSTOMLABELS = \n"); + } + + for (Index = 0, IsOk = TRUE; Index < Count && IsOk; Index++) + { + const char *CurLabel = StringListGetStringRef(LabelBase, Index); + IsOk = DumpDatafileString(FileStream, CurLabel, WriteBinary); + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +/** + */ +Boolean_t WriteBinaryMagic(FileStream_s *FileStream) +{ + /* + * Write an integer value of 1 to the file. This is used + * by the reader to determine byte order of the file. + */ + return (WriteBinaryInt32(FileStream, 1)); +} + +/** + */ +bool writeBinaryVersionNumber(FileStream_s& fileStream, + int versionNumber) +{ + char buffer[5]; + sprintf(buffer, + "V%-3d", + versionNumber); + CHECK(strlen(buffer) == 4); + return fprintf(fileStream.File, + "#!TD%s", + buffer) > 0; +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined SUN +#else +#endif +#if !defined NO_ASSERTS +#endif +#if defined ALLOW_USERDEF_NO_NEIGHBORING_ELEMENT +#else +#endif +#if 0 /* not used yet */ +#endif +#if defined TECPLOTKERNEL +#endif +#if defined TECPLOTKERNEL +#endif +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset.cpp new file mode 100644 index 00000000000..fd35a87dcf2 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset.cpp @@ -0,0 +1,283 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define DATASETMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "STRUTIL.h" +#include "AUXDATA.h" +#include "ARRLIST.h" +#include "STRLIST.h" +#include "ALLOC.h" +#include "SET.h" +#include "DATASET.h" +#include "FILESTREAM.h" + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "DATASET0.h" + + +#include <float.h> + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE /* TODO(RMS)-H 12/12/2005: ENGINE: refactor to use just the Interrupted flag as-is */ +#else +#endif +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined USE_MACROS_FOR_FUNCTIONS +#endif +#if !defined USE_MACROS_FOR_FUNCTIONS +#endif +#endif /* TECPLOTKERNEL */ + +/** + * Cleanout the contents of the zone spec item but leaves the zone spec item. + * This effectively leaves the zone spec structure in the same state as calling + * ZoneSpecAlloc initially. + * + * param ZoneSpec + * Zone spec item to cleanup. + */ +void CleanoutZoneSpec(ZoneSpec_s *ZoneSpec) +{ + REQUIRE(VALID_REF(ZoneSpec)); + + if (ZoneSpec->Name != NULL) + FREE_ARRAY(ZoneSpec->Name, "ZoneSpec name"); + if (ZoneSpec->AuxData != NULL) + AuxDataDealloc(&ZoneSpec->AuxData); + SetZoneSpecDefaults(ZoneSpec); +} + + +/** + */ +void ZoneSpecDealloc(ZoneSpec_s **ZoneSpec) +{ + REQUIRE(VALID_REF(ZoneSpec)); + REQUIRE(VALID_REF(*ZoneSpec) || *ZoneSpec == NULL); + + if (*ZoneSpec != NULL) + { + CleanoutZoneSpec(*ZoneSpec); + + FREE_ITEM(*ZoneSpec, "ZoneSpec structure"); + *ZoneSpec = NULL; + } + + ENSURE(*ZoneSpec == NULL); +} + +/** + */ +Boolean_t ZoneSpecItemDestructor(void *ItemRef, + ArbParam_t ClientData) +{ + ZoneSpec_s **ZoneSpecRef = (ZoneSpec_s **)ItemRef; + + REQUIRE(VALID_REF(ZoneSpecRef)); + REQUIRE(VALID_REF(*ZoneSpecRef) || *ZoneSpecRef == NULL); + + if (*ZoneSpecRef != NULL) + ZoneSpecDealloc(ZoneSpecRef); + + ENSURE(*ZoneSpecRef == NULL); + return TRUE; +} + +/** + */ +void SetZoneSpecDefaults(ZoneSpec_s *ZoneSpec) +{ + REQUIRE(VALID_REF(ZoneSpec)); + ZoneSpec->Name = NULL; + ZoneSpec->UniqueID = INVALID_UNIQUE_ID; + ZoneSpec->ParentZone = BAD_SET_VALUE; + ZoneSpec->StrandID = STRAND_ID_STATIC; + ZoneSpec->SolutionTime = 0.0; + ZoneSpec->NumPtsI = 0; + ZoneSpec->NumPtsJ = 0; + ZoneSpec->NumPtsK = 0; + ZoneSpec->ICellDim = 0; // ...currently not used + ZoneSpec->JCellDim = 0; // ...currently not used + ZoneSpec->KCellDim = 0; // ...currently not used + ZoneSpec->Type = ZoneType_Ordered; + ZoneSpec->ZoneLoadInfo.PresetZoneColor = NoColor_C; + ZoneSpec->ZoneLoadInfo.IsInBlockFormat = TRUE; + ZoneSpec->AuxData = NULL; + ZoneSpec->BuildZoneOptInfo = TRUE; + + /* classic data only */ + ZoneSpec->FNMode = FaceNeighborMode_LocalOneToOne; + ZoneSpec->FNAreCellFaceNbrsSupplied = FALSE; + + /* polytope data only */ + ZoneSpec->NumFaceNodes = 0; + ZoneSpec->NumFaceBndryFaces = 0; + ZoneSpec->NumFaceBndryItems = 0; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +/** + */ +void ZoneSpecExcludeBndryConnsFromMetrics(ZoneSpec_s* ZoneSpec) +{ + REQUIRE(VALID_REF(ZoneSpec)); + + /* classic data face connectivity fixup (leave FNMode as-is) */ + ZoneSpec->FNAreCellFaceNbrsSupplied = FALSE; // ...if we invalidate boundary connections CellFaceNbrs must now be auto-generated + + /* polytope data face connectivity fixup */ + ZoneSpec->NumFaceBndryFaces = 0; + ZoneSpec->NumFaceBndryItems = 0; +} + +/** + */ +ZoneSpec_s *ZoneSpecAlloc(void) +{ + ZoneSpec_s *Result; + + Result = (ZoneSpec_s *)ALLOC_ITEM(ZoneSpec_s, "ZoneSpec structure"); + if (Result != NULL) + SetZoneSpecDefaults(Result); + + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/** + * Adjusts the capacity request as necessary to minimize memory reallocations + * for large lists. The adjusted capacity will be at least as big as requested + * however it may be larger if it is determined that the space requirement is + * growing faster. + * + * param ZoneOrVarArrayList + * Array list requesting the change in capacity. + * param CurrentCapacity + * Current capacity of the array list. + * param RequestedCapacity + * Capacity request or zero for default size. + * param ClientData + * Any client data needed for the adjustment. + * + * return + * Adjusted capacity that is at least as large as the request or zero if + * unable to satisfy the requested capacity. + */ +LgIndex_t ZoneOrVarListAdjustCapacityRequest(ArrayList_pa ZoneOrVarArrayList, + LgIndex_t CurrentCapacity, + LgIndex_t RequestedCapacity, + ArbParam_t ClientData) +{ + LgIndex_t Result; + + REQUIRE(ArrayListIsValid(ZoneOrVarArrayList)); + REQUIRE((RequestedCapacity == 0 && CurrentCapacity == 0) || + RequestedCapacity > CurrentCapacity); + REQUIRE(CurrentCapacity <= MaxNumZonesOrVars); + + if (RequestedCapacity <= MaxNumZonesOrVars) + { + if (RequestedCapacity != 0 && CurrentCapacity == 0) + { + /* first allocation; assume the request is the desired capacityy */ + Result = RequestedCapacity; + } + else + { + const LgIndex_t DEFAULT_CAPACITY = 32; + LgIndex_t BlockSize = MAX(DEFAULT_CAPACITY, CurrentCapacity / 2); + if (RequestedCapacity == 0) + Result = DEFAULT_CAPACITY; + else + Result = ((RequestedCapacity - 1) / BlockSize + 1) * BlockSize; + + /* put a cap on the maximum */ + if (Result > MaxNumZonesOrVars) + Result = MaxNumZonesOrVars; + } + } + else + Result = 0; /* request exceeded maximum; unable to satisfy request */ + + ENSURE(Result == 0 || Result >= RequestedCapacity); + ENSURE(Result <= MaxNumZonesOrVars); + return Result; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined USE_MACROS_FOR_FUNCTIONS +#endif +# if defined DEBUGUNIQUE +# endif +#endif /* TECPLOTKERNEL */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset0.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset0.cpp new file mode 100644 index 00000000000..c18ca539d9f --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/dataset0.cpp @@ -0,0 +1,1668 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define DATASET0MODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "ALLOC.h" +#include "ARRLIST.h" +#include "DATASET.h" +#include "SET.h" +#include "DATASHR.h" +#include "FILESTREAM.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "Q_MSG.h" +#include "DATASET0.h" + +using namespace tecplot::strutil; +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/* + * Low level dataset functions. No references to zones, vars or + * the DataSet_s master structure here. + */ + + +/* + */ +void OutOfMemoryMsg(void) +{ + ErrMsg(translate("Cannot allocate enough memory for this operation.")); +} /* OutOfMemoryMsg() */ + + +/** + */ +FieldData_pa FieldDataAlloc(void) +{ + FieldData_pa Result; + + Result = (FieldData_pa)ALLOC_ITEM(struct _FieldData_a, "FieldDataPtr"); + if (Result != NULL) + { + Result->Data = NULL; + +# if defined TECPLOTKERNEL /* TecIO doesn't require these features yet */ +/* CORE SOURCE CODE REMOVED */ +# else /* ...for TecIO only */ + Result->GetValueCallback[0] = NULL; + Result->SetValueCallback[0] = NULL; +# endif + +# if defined TECPLOTKERNEL /* TecIO doesn't require these features yet */ +/* CORE SOURCE CODE REMOVED */ +# endif + + Result->Type = FieldDataType_Invalid; + Result->ValueLocation = ValueLocation_Invalid; + Result->RefCount = 1; /* self */ + Result->VarShareRefCount = 1; /* self */ + Result->NumValues = 0; +# if defined TECPLOTKERNEL /* TecIO doesn't require these features yet */ +/* CORE SOURCE CODE REMOVED */ +# endif + } + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + +/** + * Most clients should not call this function but FieldDataCleanup() instead. + * An exception to this would be Tecplot's own storable load-on-demand + * functions. + */ +void FieldDataDeallocData(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + if (FieldData->Data != NULL) + { + /* Hack to remove 'deleting void* is undefined' warning... */ + char *Tmp = (char *)FieldData->Data; + FREE_ARRAY(Tmp, "FieldData _Data"); + FieldData->Data = NULL; + } + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + ENSURE(FieldData->Data == NULL); +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/** + */ +void FieldDataCleanup(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else + FieldDataDeallocData(FieldData); +# endif +} + +/** + */ +void FieldDataDealloc(FieldData_pa *FieldData, + Boolean_t DoTrackVarSharing) +{ + REQUIRE(VALID_REF(FieldData)); + REQUIRE(VALID_REF(*FieldData) || *FieldData == NULL); + REQUIRE(IMPLICATION(*FieldData != NULL, + IsStructureReferenced(*FieldData))); + REQUIRE(IMPLICATION(*FieldData != NULL && DoTrackVarSharing, + IsVarStructureReferenced(*FieldData))); + REQUIRE(VALID_BOOLEAN(DoTrackVarSharing)); + REQUIRE(IMPLICATION(*FieldData != NULL, + (*FieldData)->RefCount >= (*FieldData)->VarShareRefCount)); + + if (*FieldData != NULL) + { + if (DoTrackVarSharing) + DecVarStructureReference(*FieldData); + DecStructureReference(*FieldData); + if (!IsStructureReferenced(*FieldData)) + { + FieldDataCleanup(*FieldData); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + FREE_ITEM(*FieldData, "field data"); + } + *FieldData = NULL; + } + + ENSURE(*FieldData == NULL); +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined NDEBUG || defined CHECKED_BUILD +#endif +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined NDEBUG || defined CHECKED_BUILD +#endif +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +template <typename T> +static void copyTypedValueArray(void* DstArray, + LgIndex_t DstStart, + void* SrcArray, + LgIndex_t SrcStart, + LgIndex_t SrcEnd) +{ + T* SrcPtr = ((T*)SrcArray) + SrcStart; + T* DstPtr = ((T*)DstArray) + DstStart; + size_t numBytes = sizeof(T) * (SrcEnd - SrcStart + 1); + memcpy(DstPtr, SrcPtr, numBytes); +} +/** + * DstArray and SrcArray are aligned on proper word boundaries. + */ +void CopyTypedValueArray(FieldDataType_e ValueType, + void *DstArray, + LgIndex_t DstStart, + void *SrcArray, + LgIndex_t SrcStart, + LgIndex_t SrcEnd) +{ + REQUIRE(VALID_FIELD_DATA_TYPE(ValueType) && + ValueType != FieldDataType_Bit); + REQUIRE(VALID_REF(DstArray)); + REQUIRE(DstStart >= 0); + REQUIRE(VALID_REF(SrcArray)); + REQUIRE(0 <= SrcStart && SrcStart <= SrcEnd); + REQUIRE(DstArray != SrcArray); + + switch (ValueType) + { + case FieldDataType_Int64 : CHECK(FALSE); /* Future work: remove check */ + case FieldDataType_Double : + { + CHECK(sizeof(UInt64_t) == 8 && sizeof(double) == 8); + copyTypedValueArray<UInt64_t>(DstArray, + DstStart, + SrcArray, + SrcStart, + SrcEnd); + } break; + case FieldDataType_Float : + case FieldDataType_Int32 : + { + CHECK(sizeof(UInt32_t) == 4 && sizeof(float) == 4); + copyTypedValueArray<UInt32_t>(DstArray, + DstStart, + SrcArray, + SrcStart, + SrcEnd); + } break; + case FieldDataType_Int16 : + { + CHECK(sizeof(UInt16_t) == 2); + copyTypedValueArray<UInt16_t>(DstArray, + DstStart, + SrcArray, + SrcStart, + SrcEnd); + } break; + case FieldDataType_Byte : + { + copyTypedValueArray<Byte_t>(DstArray, + DstStart, + SrcArray, + SrcStart, + SrcEnd); + } break; + default : CHECK(FALSE); + } +} + +/** + * SrcArray is aligned on proper word boundaries. + */ +void SwapBytesInTypedValueArray(FieldDataType_e ValueType, + void *SrcArray, + LgIndex_t SrcStart, + LgIndex_t SrcEnd, + LgIndex_t SrcSkip) +{ + REQUIRE(VALID_FIELD_DATA_TYPE(ValueType) && + ValueType != FieldDataType_Bit); + REQUIRE(VALID_REF(SrcArray)); + REQUIRE(0 <= SrcStart && SrcStart <= SrcEnd); + REQUIRE(SrcSkip > 0); + + switch (ValueType) + { + case FieldDataType_Int64: CHECK(FALSE); /* Future work: remove CHECK */ + case FieldDataType_Double: + { + /* swap 8 bytes blocks */ + UInt64_t *SrcPtr = ((UInt64_t *)SrcArray) + SrcStart; + UInt64_t *SrcPtrEnd = ((UInt64_t *)SrcArray) + SrcEnd; + CHECK(sizeof(UInt64_t) == 8 && sizeof(double) == 8); + while (SrcPtr <= SrcPtrEnd) + { + REVERSE_8_BYTES(SrcPtr); + SrcPtr += SrcSkip; + } + } break; + case FieldDataType_Float: + case FieldDataType_Int32: + { + /* swap 4 bytes blocks */ + UInt32_t *SrcPtr = ((UInt32_t *)SrcArray) + SrcStart; + UInt32_t *SrcPtrEnd = ((UInt32_t *)SrcArray) + SrcEnd; + CHECK(sizeof(UInt32_t) == 4 && sizeof(float) == 4); + while (SrcPtr <= SrcPtrEnd) + { + REVERSE_4_BYTES(SrcPtr); + SrcPtr += SrcSkip; + } + } break; + case FieldDataType_Int16: + { + /* swap 4 bytes blocks */ + UInt16_t *SrcPtr = ((UInt16_t *)SrcArray) + SrcStart; + UInt16_t *SrcPtrEnd = ((UInt16_t *)SrcArray) + SrcEnd; + CHECK(sizeof(UInt16_t) == 2); + while (SrcPtr <= SrcPtrEnd) + { + REVERSE_2_BYTES(SrcPtr); + SrcPtr += SrcSkip; + } + } break; + case FieldDataType_Byte: + case FieldDataType_Bit: + { + /* nothing to do */ + } break; + default: CHECK(FALSE); + } +} + +/** + * Same as SwapBytesInTypedValueArray, but does extra work. Doesn't assume + * DstArray and SrcArray are aligned on proper word boundaries. + */ +void SwapBytesInUnalignedTypedValueArray(FieldDataType_e ValueType, + void *SrcArray, + LgIndex_t SrcStart, + LgIndex_t SrcEnd, + LgIndex_t SrcSkip) +{ + REQUIRE(VALID_FIELD_DATA_TYPE(ValueType) && + ValueType != FieldDataType_Bit); + REQUIRE(VALID_REF(SrcArray)); + REQUIRE(0 <= SrcStart && SrcStart <= SrcEnd); + REQUIRE(SrcSkip > 0); + + switch (ValueType) + { + case FieldDataType_Int64: CHECK(FALSE); /* Future work: remove CHECK */ + case FieldDataType_Double: + { + /* swap 8-byte blocks */ + Byte_t *SrcPtr = ((Byte_t *)SrcArray) + SrcStart * sizeof(UInt64_t); + Byte_t *SrcPtrEnd = ((Byte_t *)SrcArray) + SrcEnd * sizeof(UInt64_t); + size_t byte_skip = SrcSkip * sizeof(UInt64_t); + CHECK(sizeof(UInt64_t) == 8 && sizeof(double) == 8); + while (SrcPtr <= SrcPtrEnd) + { + REVERSE_8_BYTES_1_AT_A_TIME(SrcPtr); + SrcPtr += byte_skip; + } + } break; + case FieldDataType_Float: + case FieldDataType_Int32: + { + /* swap 4-byte blocks */ + Byte_t *SrcPtr = ((Byte_t *)SrcArray) + SrcStart * sizeof(UInt32_t); + Byte_t *SrcPtrEnd = ((Byte_t *)SrcArray) + SrcEnd * sizeof(UInt32_t); + size_t byte_skip = SrcSkip * sizeof(UInt32_t); + CHECK(sizeof(UInt32_t) == 4 && sizeof(float) == 4); + while (SrcPtr <= SrcPtrEnd) + { + REVERSE_4_BYTES_1_AT_A_TIME(SrcPtr); + SrcPtr += byte_skip; + } + } break; + case FieldDataType_Int16: + { + /* swap 2-byte blocks */ + Byte_t *SrcPtr = ((Byte_t *)SrcArray) + SrcStart * sizeof(UInt16_t); + Byte_t *SrcPtrEnd = ((Byte_t *)SrcArray) + SrcEnd * sizeof(UInt16_t); + size_t byte_skip = SrcSkip * sizeof(UInt16_t); + CHECK(sizeof(UInt16_t) == 2); + while (SrcPtr <= SrcPtrEnd) + { + REVERSE_2_BYTES_1_AT_A_TIME(SrcPtr); + SrcPtr += byte_skip; + } + } break; + case FieldDataType_Byte: + case FieldDataType_Bit: + { + /* No swapping required. */ + } break; + default: CHECK(FALSE); + } +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined DEBUG_FIELDVALUES +# define DEBUG_FIELDVALUES_BAD_VALUE 0x11 +static unsigned char BadValueStr[] = +{ + DEBUG_FIELDVALUES_BAD_VALUE, + DEBUG_FIELDVALUES_BAD_VALUE, + DEBUG_FIELDVALUES_BAD_VALUE, + DEBUG_FIELDVALUES_BAD_VALUE, + DEBUG_FIELDVALUES_BAD_VALUE, + DEBUG_FIELDVALUES_BAD_VALUE, + DEBUG_FIELDVALUES_BAD_VALUE, + DEBUG_FIELDVALUES_BAD_VALUE +}; +/** + * If Tecplot is responsible for managing (allocating and deallocating) the + * raw data then + */ +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else +# define FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, type) \ + ((sizeof(type) < 4) /* cannot make reliably test with less than four bytes */ || \ + memcmp(BadValueStr,((char *)((fd)->Data))+sizeof(type)*(pt), sizeof(type)) != 0) +# endif +#else +# define FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, type) TRUE +#endif + + + +/** + * Used in macros, thus not static + */ +double STDCALL GetFieldValueForFloat(const FieldData_pa fd, + LgIndex_t pt) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, float)); + + double Result = (double)GetFieldDataFloatPtr(fd)[pt]; + + return Result; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + * Used in macros, thus not static + */ +double STDCALL GetFieldValueForDouble(const FieldData_pa fd, + LgIndex_t pt) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, double)); + + double Result = GetFieldDataDoublePtr(fd)[pt]; + + return Result; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +double STDCALL GetFieldValueForInt32(const FieldData_pa fd, + LgIndex_t pt) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, Int32_t)); + + double Result = (double)GetFieldDataInt32Ptr(fd)[pt]; + + return Result; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +double STDCALL GetFieldValueForInt16(const FieldData_pa fd, + LgIndex_t pt) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, Int16_t)); + + double Result = (double)GetFieldDataInt16Ptr(fd)[pt]; + + return Result; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +double STDCALL GetFieldValueForByte(const FieldData_pa fd, + LgIndex_t pt) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(fd->Type == FieldDataType_Byte); + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, Byte_t)); + + double Result = (double)GetFieldDataBytePtr(fd)[pt]; + + return Result; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +double STDCALL GetFieldValueForBit(const FieldData_pa fd, + LgIndex_t pt) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(fd->Type == FieldDataType_Bit); + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt / 8, Byte_t)); + + LgIndex_t ByteOffset = pt / 8; + Byte_t BitMask = (01 << (pt % 8)); + + Byte_t *byte_array = GetFieldDataBytePtr(fd); + double Result = (byte_array[ByteOffset] & BitMask) ? 1.0 : 0.0; + + return Result; +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +FieldValueGetFunction_pf DetermineFieldDataGetFunction(FieldDataType_e DataType, + Boolean_t IsFragmented) +{ + FieldValueGetFunction_pf Result; + + REQUIRE(VALID_FIELD_DATA_TYPE(DataType)); + REQUIRE(VALID_BOOLEAN(IsFragmented)); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + { + switch (DataType) + { + case FieldDataType_Float : + { + Result = GetFieldValueForFloat; + } break; + case FieldDataType_Double : + { + Result = GetFieldValueForDouble; + } break; + case FieldDataType_Int32 : + { + Result = GetFieldValueForInt32; + } break; + case FieldDataType_Int16 : + { + Result = GetFieldValueForInt16; + } break; + case FieldDataType_Byte : + { + Result = GetFieldValueForByte; + } break; + case FieldDataType_Bit : + { + Result = GetFieldValueForBit; + } break; + default : + { + CHECK(FALSE); + Result = NULL; /* satisfy compiler */ + } break; + } + } + return (Result); +} + +/** + */ +static void STDCALL SetFieldValueForFloat(FieldData_pa fd, + LgIndex_t pt, + double val) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE("val can have any value"); + + GetFieldDataFloatPtr(fd)[pt] = CONVERT_DOUBLE_TO_FLOAT(val); + + ENSURE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, float)); +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +static void STDCALL SetFieldValueForDouble(FieldData_pa fd, + LgIndex_t pt, + double val) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE("val can have any value"); + + GetFieldDataDoublePtr(fd)[pt] = CLAMP_DOUBLE(val); + + ENSURE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, double)); +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +static void STDCALL SetFieldValueForInt32(FieldData_pa fd, + LgIndex_t pt, + double val) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE("val can have any value"); + + GetFieldDataInt32Ptr(fd)[pt] = CONVERT_DOUBLE_TO_INT32(val); + + ENSURE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, Int32_t)); +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +static void STDCALL SetFieldValueForInt16(FieldData_pa fd, + LgIndex_t pt, + double val) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE("val can have any value"); + + GetFieldDataInt16Ptr(fd)[pt] = CONVERT_DOUBLE_TO_INT16(val); + + ENSURE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, Int16_t)); +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +static void STDCALL SetFieldValueForByte(FieldData_pa fd, + LgIndex_t pt, + double val) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(fd->Type == FieldDataType_Byte); + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE("val can have any value"); + + if (val < 1.0) + GetFieldDataBytePtr(fd)[pt] = 0; + else if (val > 255.0) + GetFieldDataBytePtr(fd)[pt] = 255; + else + GetFieldDataBytePtr(fd)[pt] = (Byte_t)val; + + ENSURE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt, Byte_t)); +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +static void STDCALL SetFieldValueForBit(FieldData_pa fd, + LgIndex_t pt, + double val) +{ + REQUIRE(VALID_REF(fd)); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + REQUIRE(fd->Type == FieldDataType_Bit); + REQUIRE(0 <= pt && pt < GetFieldDataNumValues(fd)); + REQUIRE("val can have any value"); + + LgIndex_t ByteOffset = pt / 8; + Byte_t BitMask = (01 << (pt % 8)); + + if (val < 1.0) + GetFieldDataBytePtr(fd)[ByteOffset] &= ~BitMask; + else + GetFieldDataBytePtr(fd)[ByteOffset] |= BitMask; + + ENSURE(FIELD_DATA_VALUE_IS_INITIALIZED(fd, pt / 8, Byte_t)); +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + */ +FieldValueSetFunction_pf DetermineFieldDataSetFunction(FieldDataType_e DataType, + Boolean_t IsFragmented) +{ + FieldValueSetFunction_pf Result; + + REQUIRE(VALID_FIELD_DATA_TYPE(DataType)); + REQUIRE(VALID_BOOLEAN(IsFragmented)); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + { + switch (DataType) + { + case FieldDataType_Float : + { + Result = SetFieldValueForFloat; + } break; + case FieldDataType_Double : + { + Result = SetFieldValueForDouble; + } break; + case FieldDataType_Int32 : + { + Result = SetFieldValueForInt32; + } break; + case FieldDataType_Int16 : + { + Result = SetFieldValueForInt16; + } break; + case FieldDataType_Byte : + { + Result = SetFieldValueForByte; + } break; + case FieldDataType_Bit : + { + Result = SetFieldValueForBit; + } break; + default : + { + CHECK(FALSE); + Result = NULL; /* satisfy compiler */ + } break; + } + } + return (Result); +} + + +/** + */ +Int64_t FieldDataGetBytesNeeded(LgIndex_t NumValues, + FieldDataType_e DataType) +{ + Int64_t Result = 0; /* ...quite compiler */ + + REQUIRE(NumValues >= 0); + REQUIRE(VALID_FIELD_DATA_TYPE(DataType)); + + switch (DataType) + { + case FieldDataType_Float: Result = ((Int64_t)NumValues)*sizeof(float); break; + case FieldDataType_Double: Result = ((Int64_t)NumValues)*sizeof(double); break; + case FieldDataType_Int32: Result = ((Int64_t)NumValues)*sizeof(LgIndex_t); break; + case FieldDataType_Int16: Result = ((Int64_t)NumValues)*sizeof(SmInteger_t); break; + case FieldDataType_Byte: Result = ((Int64_t)NumValues)*sizeof(Byte_t); break; + case FieldDataType_Bit: Result = ((Int64_t)(NumValues+7)/8)*sizeof(Byte_t); break; + default: CHECK(FALSE); break; + } + + ENSURE(Result >= 0); + return Result; +} + +/** + * On the SGI, HP, and Sun machines 64 bit objects such as doubles must be 8 + * byte aligned while on all other machines 32 bit alignment suffices. Some + * allow 1 byte alignment but we won't bother with that. + */ +#if defined IRISX || defined HPUX || defined SUNX +# define SIZEOF_LARGEST_OBJECT_TO_ALIGN sizeof(Int64_t) +#else +# define SIZEOF_LARGEST_OBJECT_TO_ALIGN sizeof(Int32_t) +#endif + +/** + */ +Boolean_t IsOffsetAlignedForFieldDataType(FieldDataType_e FieldDataType, + Int64_t Offset) +{ + REQUIRE(VALID_FIELD_DATA_TYPE(FieldDataType)); + REQUIRE(Offset >= 0); + + Int64_t SizeOfType = FieldDataGetBytesNeeded(1, FieldDataType); + if (SizeOfType > (Int64_t)SIZEOF_LARGEST_OBJECT_TO_ALIGN) + SizeOfType = SIZEOF_LARGEST_OBJECT_TO_ALIGN; + + Boolean_t HasValidAlignment = (Offset % SizeOfType == 0); + + ENSURE(VALID_BOOLEAN(HasValidAlignment)); + return HasValidAlignment; +} + +/** + */ +Int64_t GetAlignedOffsetForFieldDataType(FieldDataType_e FieldDataType, + Int64_t Offset) +{ + REQUIRE(VALID_FIELD_DATA_TYPE(FieldDataType)); + REQUIRE(Offset >= 0); + + Int64_t SizeOfType = FieldDataGetBytesNeeded(1, FieldDataType); + if (SizeOfType > (Int64_t)SIZEOF_LARGEST_OBJECT_TO_ALIGN) + SizeOfType = SIZEOF_LARGEST_OBJECT_TO_ALIGN; + + Int64_t NumBytesPastAlignment = (Offset % SizeOfType); + Int64_t Result = Offset - NumBytesPastAlignment; + + ENSURE(0 <= Result && Result <= Offset); + ENSURE(IsOffsetAlignedForFieldDataType(FieldDataType, Result)); + return Result; +} + +/** + */ +void FieldDataDefineData(FieldData_pa FieldData, + LgIndex_t NumValues, + FieldDataType_e DataType, + ValueLocation_e ValueLocation) +{ + REQUIRE(VALID_REF(FieldData)); + REQUIRE(NumValues >= 0); + REQUIRE(VALID_FIELD_DATA_TYPE(DataType)); + REQUIRE(VALID_ENUM(ValueLocation, ValueLocation_e)); + + /* + * Remove any old data (transformed UVW is one example that calls this + * function with a non-null data pointer when switching the value location + * when style changes the value location and therefore the amount of data + * allocated.) + */ + FieldDataCleanup(FieldData); + + /* + * The reference count is not modified here. This function only allocates the + * structure and makes adjustments to the some of the members. The reference + * count was initialized when the structure was initially created and the + * structure may be shared before the data portion is even allocated. + */ + FieldData->NumValues = NumValues; + FieldData->Type = DataType; + FieldData->ValueLocation = ValueLocation; +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else /* ...for TecIO only */ + FieldData->GetValueCallback[0] = (void *)DetermineFieldDataGetFunction(DataType, FALSE); + FieldData->SetValueCallback[0] = (void *)DetermineFieldDataSetFunction(DataType, FALSE); +#endif + + ENSURE(FieldData->Data == NULL); +} + +/** + */ +Boolean_t FieldDataAllocData(FieldData_pa FieldData, + Boolean_t ShowErrMsg) +{ + REQUIRE(VALID_REF(FieldData)); + REQUIRE(FieldData->Type != FieldDataType_Invalid); /* ...must call FieldDataDefineData first */ + REQUIRE(FieldData->Data == NULL); + REQUIRE(VALID_BOOLEAN(ShowErrMsg)); + + /* + * The size of size_t may be smaller than our unsigned 64 bit integer value + * so we might have to squeeze it down possibly loosing precision. + */ + Int64_t ActualBytesNeeded = FieldDataGetBytesNeeded(FieldData->NumValues, FieldData->Type); + size_t BytesToAllocate = (size_t)ActualBytesNeeded; + + /* + * 64 bit architectures are effectively unlimited in their allocation size + * while 32 architectures are limited to 4GB (some may limit further to 2GB + * which will be borne out by the call to malloc). + */ + CHECK(sizeof(size_t) == 4 || sizeof(size_t) == 8); + Boolean_t IsOk = (FieldData->NumValues <= MAXINDEX && + IMPLICATION(sizeof(size_t) == 4, + ActualBytesNeeded <= (Int64_t)0xffffffff)); + if (IsOk) + { + if (FieldData->NumValues > 0) + { + FieldData->Data = (void *)ALLOC_ARRAY(BytesToAllocate, char, "FieldData's Data"); + #if defined DEBUG_FIELDVALUES + { + if (FieldData->Data != NULL) + memset(FieldData->Data, DEBUG_FIELDVALUES_BAD_VALUE, BytesToAllocate); + } + #endif + /* + * For bit type data zero the last byte in the data array. We do + * this because NumValues is probably not a multiple of 8 bits and + * thus the valid bit values will not occupy all bits of the last + * byte. By zeroing the unused bits at the end of the array we + * produce consistent data files when written to disk. + */ + if (FieldData->Type == FieldDataType_Bit) + ((char*)FieldData->Data)[BytesToAllocate-1] = '\0'; + } + IsOk = (FieldData->NumValues == 0 || + FieldData->Data != NULL); + if (!IsOk && ShowErrMsg) + OutOfMemoryMsg(); + } + else if (ShowErrMsg) + ErrMsg(translate("Storage limit (%ld) exceeded for a single variable."), (long)MAXINDEX); + +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + + ENSURE(VALID_REF(FieldData->Data) || FieldData->Data == NULL); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if !defined NO_ASSERTS +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/** + * Allocates a field data pointer with space for "num_pts" of field data type + * "field_data_type" nodal values. + * + * IMPORTANT: + * This field data may NOT be used for zones but only for things like + * geometries or other temporary field data that will never be placed + * into a COB or zone. + */ +FieldData_pa AllocScratchNodalFieldDataPtr(LgIndex_t NumValues, + FieldDataType_e Type, + Boolean_t ShowErrMsg) +{ + REQUIRE(NumValues >= 0); + REQUIRE(VALID_FIELD_DATA_TYPE(Type)); + REQUIRE(VALID_BOOLEAN(ShowErrMsg)); + + FieldData_pa Result = FieldDataAlloc(); + if (Result != NULL) + { + FieldDataDefineData(Result, NumValues, Type, ValueLocation_Nodal); + if (!FieldDataAllocData(Result, ShowErrMsg)) + FieldDataDealloc(&Result, FALSE); + } + else if (ShowErrMsg) + OutOfMemoryMsg(); + + ENSURE(VALID_REF(Result) || Result == NULL); +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# endif + ENSURE(IMPLICATION(Result != NULL, + (Result->NumValues >= 0 && + IMPLICATION(Result->NumValues != 0, + VALID_REF(Result->Data)) && + VALID_FIELD_DATA_TYPE(Result->Type)))); + + return Result; +} + + +/** + * Frees memory allocated with AllocScratchNodalFieldDataPtr(). + * + * @param ScratchFieldData + * Scratch field data pointer to deallocate. This should NEVER be a field + * data from a zone or COB. See note in AllocScratchNodalFieldDataPtr(). + */ +void DeallocScratchNodalFieldDataPtr(FieldData_pa *FieldDataRef) +{ + FieldDataDealloc(FieldDataRef, + FALSE); /* DoTrackVarSharing */ +} + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +FieldDataType_e GetFieldDataType_FUNC(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + + FieldDataType_e Result = GetFieldDataType_MACRO(FieldData); + + ENSURE(VALID_FIELD_DATA_TYPE(Result)); + return Result; +} +#endif /* !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS */ + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +FieldValueGetFunction_pf GetFieldDataGetFunction_FUNC(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + + FieldValueGetFunction_pf Result = GetFieldDataGetFunction_MACRO(FieldData); + + ENSURE(VALID_FN_REF(Result)); + return Result; +} +#endif /* !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS */ + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +FieldValueSetFunction_pf GetFieldDataSetFunction_FUNC(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + + FieldValueSetFunction_pf Result = GetFieldDataSetFunction_MACRO(FieldData); + + ENSURE(VALID_FN_REF(Result)); + return Result; +} +#endif /* !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS */ + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +LgIndex_t GetFieldDataNumValues_FUNC(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + + LgIndex_t Result = GetFieldDataNumValues_MACRO(FieldData); + + ENSURE(Result >= 0); + return Result; +} +#endif /* !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS */ + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +ValueLocation_e GetFieldDataValueLocation_FUNC(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + + ValueLocation_e Result = GetFieldDataValueLocation_MACRO(FieldData); + + ENSURE(Result == ValueLocation_Invalid || /* i.e. pending assignment */ + VALID_ENUM(Result, ValueLocation_e)); + return Result; +} +#endif /* !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS */ + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +Boolean_t IsFieldDataDirectAccessAllowed_FUNC(FieldData_pa FieldData) +{ + REQUIRE(VALID_REF(FieldData)); + + Boolean_t Result = IsFieldDataDirectAccessAllowed_MACRO(FieldData); + + ENSURE(VALID_BOOLEAN(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +float *GetFieldDataFloatPtr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + + float *Result = GetFieldDataFloatPtr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +double *GetFieldDataDoublePtr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + + double *Result = GetFieldDataDoublePtr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +Int64_t *GetFieldDataInt64Ptr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + + Int64_t *Result = GetFieldDataInt64Ptr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +Int32_t *GetFieldDataInt32Ptr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + + Int32_t *Result = GetFieldDataInt32Ptr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + */ +Int16_t *GetFieldDataInt16Ptr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + + Int16_t *Result = GetFieldDataInt16Ptr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/* + * No byte ordering or alignment issues with single bytes (which are also used with the "Bit" type) + */ +Byte_t *GetFieldDataBytePtr_FUNC(FieldData_pa fd) +{ + /* + * This function gets called for Byte and Bit types, but we cannot REQUIRE + * those types because it is also used for non-aligned values. We can't + * check for non-aligned because we might be copying aligned bytes to a + * non-aligned location. + */ + REQUIRE(VALID_REF(fd)); + + Byte_t *Result = GetFieldDataBytePtr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/** + * Gets a ptr to 2-byte blocks regardless of byte ordering, but still has to + * worry about byte alignment + */ +UInt16_t *GetFieldData2BytePtr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + REQUIRE(fd->Type == FieldDataType_Int16); + + UInt16_t *Result = GetFieldData2BytePtr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/* + * Gets a ptr to 4-byte blocks regardless of byte ordering, but still has to + * worry about byte alignment + */ +UInt32_t *GetFieldData4BytePtr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + REQUIRE(fd->Type == FieldDataType_Int32 || fd->Type == FieldDataType_Float); + + UInt32_t *Result = GetFieldData4BytePtr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/* + * Gets a ptr to 8-byte blocks regardless of byte ordering, but still has to + * worry about byte alignment + */ +UInt64_t *GetFieldData8BytePtr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + REQUIRE(fd->Type == FieldDataType_Int64 || fd->Type == FieldDataType_Double); + + UInt64_t *Result = GetFieldData8BytePtr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + + +#if !defined USE_MACROS_FOR_FIELD_DATA_FUNCTIONS +/* + * WARNING: GetFieldDataVoidPtr checks nothing, and thus should only be + * used with extreme caution (that is, checking the alignment + * and byte order by hand). + */ +void *GetFieldDataVoidPtr_FUNC(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); + + void *Result = GetFieldDataVoidPtr_MACRO(fd); + + ENSURE(VALID_REF(Result)); + return Result; +} +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/* + */ +void CopyFieldValue(FieldData_pa dst, + LgIndex_t dstindex, + FieldData_pa src, + LgIndex_t srcindex) +{ + REQUIRE(VALID_REF(dst)); + REQUIRE(VALID_REF(src)); +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + REQUIRE(dstindex >= 0 && dstindex < GetFieldDataNumValues(dst) && + srcindex >= 0 && srcindex < GetFieldDataNumValues(src)); + + Boolean_t DoBruteForceCopy = TRUE; + + if (IsFieldDataDirectAccessAllowed(src) && + IsFieldDataDirectAccessAllowed(dst) && + GetFieldDataType(src) == GetFieldDataType(dst)) + { + switch (GetFieldDataType(src)) + { + case FieldDataType_Int64 : CHECK(FALSE); /* Future work: remove and let fall through */ + case FieldDataType_Double : + { + CHECK(sizeof(UInt64_t) == 8 && sizeof(double) == 8); + UInt64_t *dst_ptr = GetFieldData8BytePtr(dst) + dstindex; + UInt64_t *src_ptr = GetFieldData8BytePtr(src) + srcindex; + *dst_ptr = *src_ptr; + DoBruteForceCopy = FALSE; + } break; + case FieldDataType_Float : + case FieldDataType_Int32 : + { + CHECK(sizeof(UInt32_t) == 4 && sizeof(float) == 4); + UInt32_t *dst_ptr = GetFieldData4BytePtr(dst) + dstindex; + UInt32_t *src_ptr = GetFieldData4BytePtr(src) + srcindex; + *dst_ptr = *src_ptr; + DoBruteForceCopy = FALSE; + } break; + case FieldDataType_Int16 : + { + CHECK(sizeof(UInt16_t) == 2); + UInt16_t *dst_ptr = GetFieldData2BytePtr(dst) + dstindex; + UInt16_t *src_ptr = GetFieldData2BytePtr(src) + srcindex; + *dst_ptr = *src_ptr; + } break; + case FieldDataType_Byte : + { + GetFieldDataBytePtr(dst)[dstindex] = GetFieldDataBytePtr(src)[srcindex]; + DoBruteForceCopy = FALSE; + } break; + case FieldDataType_Bit : break; /* handle below */ + default : CHECK(FALSE); /* Future work: when more complex types are added, remove this CHECK */ + } + } + + if (DoBruteForceCopy) + { + double val = GetFieldValue(src, srcindex); + SetFieldValue(dst, dstindex, val); + } +} /* CopyFieldValue() */ + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + + +/* + */ +void SetFieldDataPtrToAllZeros(FieldData_pa fd) +{ + REQUIRE(VALID_REF(fd)); +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + + LgIndex_t NumValues = GetFieldDataNumValues(fd); + + /* + * memset each byte to 0 works for floats and doubles and works regardless + * of byte ordering or alignment. + */ + size_t NumBytesToMemSet = 0; + if (IsFieldDataDirectAccessAllowed(fd)) + { + switch (GetFieldDataType(fd)) + { + case FieldDataType_Int64 : CHECK(FALSE); /* Future work: remove CHECK */ + case FieldDataType_Double : + { + CHECK(sizeof(UInt64_t) == 8 && sizeof(double) == 8); + NumBytesToMemSet = NumValues * sizeof(Int64_t); + } break; + case FieldDataType_Int32 : + case FieldDataType_Float : + { + CHECK(sizeof(UInt32_t) == 4 && sizeof(float) == 4); + NumBytesToMemSet = NumValues * sizeof(Int32_t); + } break; + case FieldDataType_Int16 : + { + CHECK(sizeof(UInt16_t) == 2); + NumBytesToMemSet = NumValues * sizeof(Int16_t); + } break; + case FieldDataType_Byte : + { + NumBytesToMemSet = NumValues * sizeof(Byte_t); + } break; + case FieldDataType_Bit : + { + NumBytesToMemSet = ((NumValues + 7) / 8) * sizeof(Byte_t); + } break; + default : + { + CHECK(FALSE); + } break; + } + } + + if (NumBytesToMemSet > 0) + { + void *fd_data = GetFieldDataVoidPtr(fd); + memset(fd_data, 0, NumBytesToMemSet); + } + else + { + int ii; + for (ii = 0; ii < NumValues; ii++) + SetFieldValue(fd, ii, 0.0); + } + +} /* SetFieldDataPtrToAllZeros() */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/datautil.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/datautil.cpp new file mode 100644 index 00000000000..783abec0c40 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/datautil.cpp @@ -0,0 +1,941 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +/* + * datautil.c: + * + * version 1.00 : 12/10/91 (cm) changes made for manual + * version 1.01 : 12/30/91 Get and ReturnHugeBlock are now ptr to function + * version 6.00 : 04/21/92 updated to match version 6 of tecplot. + * version 6.30 : 10/15/92 updated to match binary file version 6.3 + * version 6.30a: 05/04/93 (cm) minor changes to prototypes + * version : 11/01/93 (cm) put in D4GW stuff + * version 6.30b: 12/27/93 (cm) fixed missing NumKPts in DumpZone + * version 6.30c: 12/27/93 (cm) put back in D4GW stuff +BEGIN CODELOG TECXXX +C 03/06/96 (BDP) +C Update to V7 +C +C 03/14/97 (BDP) +C Added code to main tecplot source. Now can +C be built stand alone or added so TecUtil_ functions +C can access. +C 06/02/98 (bdp) +C v75 coding. Also removed Array of ZoneSpec_s +C structs in favor of zonenames, i,j,and k dimensions +C and zonetype array. +END CODELOG + */ + + + +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "SYSTEM.h" +#include "ALLOC.h" +#include "TECXXX.h" +#include "ARRLIST.h" +#include "SET.h" +#include "DATASET.h" +#include "FILESTREAM.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "DATAIO.h" +#include "DATAIO4.h" +#include "DATAUTIL.h" +#include "STRLIST.h" +#include "Q_MSG.h" +#if defined MAKEARCHIVE +#define INITMODULE +#endif +#include "INPUT.h" + +using namespace tecplot::strutil; + +#if defined MAKEARCHIVE +#define ANGLEEPSILON 1.0e-10 + +void InitInputSpecs(void) +{ + LineThicknessInputSpec.Type = Input_Double; + LineThicknessInputSpec.Min = 0.000001; + LineThicknessInputSpec.Max = 1.0; + LineThicknessInputSpec.InterfaceAdjust.ScaleFact = 100.0; + LineThicknessInputSpec.SuffixModifier = NULL; + + PatternLengthInputSpec.Type = Input_Double; + PatternLengthInputSpec.Min = 0.0001; + PatternLengthInputSpec.Max = 1.0; + PatternLengthInputSpec.InterfaceAdjust.ScaleFact = 100.0; + PatternLengthInputSpec.SuffixModifier = NULL; + + TextBoxMarginInputSpec.Type = Input_Double; + TextBoxMarginInputSpec.Min = 0.0; + TextBoxMarginInputSpec.Max = 20.0; + TextBoxMarginInputSpec.InterfaceAdjust.ScaleFact = 100.0; + TextBoxMarginInputSpec.SuffixModifier = NULL; + + TextLineSpacingInputSpec.Type = Input_Double; + TextLineSpacingInputSpec.Min = 0.0; + TextLineSpacingInputSpec.Max = 5.0; + TextLineSpacingInputSpec.InterfaceAdjust.ScaleFact = 1.0; + TextLineSpacingInputSpec.SuffixModifier = NULL; + + + ArrowheadSizeInputSpec.Type = Input_Double; + ArrowheadSizeInputSpec.Min = 0.0; + ArrowheadSizeInputSpec.Max = 0.5; + ArrowheadSizeInputSpec.InterfaceAdjust.ScaleFact = 100.0; + ArrowheadSizeInputSpec.SuffixModifier = NULL; + + TextAngleInputSpec.Type = Input_Double; + TextAngleInputSpec.Min = -PI - ANGLEEPSILON; + TextAngleInputSpec.Max = PI + ANGLEEPSILON; + TextAngleInputSpec.InterfaceAdjust.ScaleFact = DEGPERRADIANS; + TextAngleInputSpec.SuffixModifier = NULL; + + ArrowheadAngleInputSpec.Type = Input_Double; + ArrowheadAngleInputSpec.Min = 1.0 / DEGPERRADIANS - ANGLEEPSILON; + ArrowheadAngleInputSpec.Max = PIOVER2 + ANGLEEPSILON; + ArrowheadAngleInputSpec.InterfaceAdjust.ScaleFact = DEGPERRADIANS; + ArrowheadAngleInputSpec.SuffixModifier = NULL; +} +#endif + + + + +void LocalReadBlock(FileStream_s *FileStream, + double *CurVPtr, + FieldDataType_e FieldDataTypeInFile, + HgIndex_t NumValues, + Boolean_t *IsOk) +{ + REQUIRE(VALID_REF(IsOk) && VALID_BOOLEAN(*IsOk)); + REQUIRE(!(*IsOk) || VALID_REF(FileStream)); + REQUIRE(!(*IsOk) || VALID_FIELD_DATA_TYPE(FieldDataTypeInFile)); + + if (*IsOk) + { + Boolean_t DoRead = (CurVPtr != NULL); + Boolean_t ReadByBlock = (FieldDataType_Double == FieldDataTypeInFile) || !DoRead; + if (ReadByBlock) + { + ReadPureBlock(FileStream, + DoRead, + (void *)CurVPtr, + FieldDataTypeInFile, + 0, + NumValues, + IsOk); + } + else + { + LgIndex_t N; + for (N = 0; *IsOk && (N < NumValues); N++) + { + double D = GetNextValue(FileStream, FieldDataTypeInFile, -LARGEDOUBLE, LARGEDOUBLE, IsOk); + if (DoRead) + CurVPtr[N] = D; + } + } + } +} + + + + +/* + * + * NOTE: ReadTec only allocates space for NodeMap and VDataBase + * if RawDataSpaceAllocated == FALSE and GetHeaderInfoOnly + * is FALSE. + * + * Also note that all data read in by ReadTec is currently + * limited to be in double precision. + * + */ + + +Boolean_t STDCALL ReadTec(Boolean_t GetHeaderInfoOnly, + char *FName, + short *IVersion, + char **DataSetTitle, + EntIndex_t *NumZones, + EntIndex_t *NumVars, + StringList_pa *VarNames, + StringList_pa *ZoneNames, + LgIndex_t **NumPtsI, + LgIndex_t **NumPtsJ, + LgIndex_t **NumPtsK, + ZoneType_e **ZoneType, + StringList_pa *UserRec, + Boolean_t RawDataSpaceAllocated, + NodeMap_t ***NodeMap, + double ***VDataBase) +{ + Boolean_t InputIsOk = FALSE; + ArrayList_pa ZoneSpecList = NULL; + LgIndex_t *FNNumBndryConns = NULL; /* [NumZones] */ + FileStream_s *ReadTecFileStream = NULL; + Set_pa *IsVarCellCentered = NULL; /* [NumZones] */ + + REQUIRE(VALID_BOOLEAN(GetHeaderInfoOnly)); + REQUIRE(VALID_NON_ZERO_LEN_STR(FName)); + REQUIRE(VALID_REF(IVersion)); + REQUIRE(VALID_REF(DataSetTitle) || DataSetTitle == NULL); + REQUIRE(VALID_REF(NumZones)); + REQUIRE(VALID_REF(NumVars)); + REQUIRE(VarNames == NULL || VALID_REF(VarNames)); + REQUIRE(ZoneNames == NULL || VALID_REF(ZoneNames)); + REQUIRE(NumPtsI == NULL || VALID_REF(NumPtsI)); + REQUIRE(NumPtsJ == NULL || VALID_REF(NumPtsJ)); + REQUIRE(NumPtsK == NULL || VALID_REF(NumPtsK)); + REQUIRE(ZoneType == NULL || VALID_REF(ZoneType)); + REQUIRE(UserRec == NULL || VALID_REF(UserRec)); + REQUIRE(VALID_BOOLEAN(RawDataSpaceAllocated)); + REQUIRE(IMPLICATION(!GetHeaderInfoOnly && RawDataSpaceAllocated, + VALID_REF(NodeMap) && VALID_REF(VDataBase))); + +#if defined MAKEARCHIVE + InitInputSpecs(); +#endif + + InputIsOk = OpenBinaryFileAndCheckMagicNumber(&ReadTecFileStream, + FName, + 0, + IVersion); + + if (InputIsOk) + InputIsOk = ReadDataFileHeader(ReadTecFileStream, + *IVersion, + FALSE, + NumZones, + NumVars, + (SmInteger_t *)NULL, + DataSetTitle, + (Text_s **)NULL, + (Geom_s **)NULL, + (StringList_pa **)NULL, + UserRec, + (AuxData_pa *)NULL, + &IsVarCellCentered, + (Boolean_t *)NULL, + (Boolean_t *)NULL, + &ZoneSpecList, + VarNames, + (ArrayList_pa *)NULL, + (Set_pa *)NULL, + &FNNumBndryConns, + (DataFileType_e *)NULL); + + + + if (InputIsOk) + { + if (*NumZones == 0) + *NumVars = 0; + else if (*IVersion > 112) + { + /* + * This may not be true but we put it hear to remind us to make + * updates to this code when we change the version number. + */ + ErrMsg(translate("ReadTec does not yet support version %d " + "Tecplot binary data files."), *IVersion); + InputIsOk = FALSE; + } + else if (!GetHeaderInfoOnly) + { + EntIndex_t Z; + for (Z = 0; Z < *NumZones && InputIsOk; Z++) + { + InputIsOk = (MemberCount(IsVarCellCentered[Z]) == 0); + if (!InputIsOk) + ErrMsg(translate("Cell centered data not supported by ReadTec.")); + } + } + } + + if (IsVarCellCentered != NULL) + { + EntIndex_t Z; + for (Z = 0; Z < *NumZones; Z++) + DeallocSet(&IsVarCellCentered[Z]); + FREE_ARRAY(IsVarCellCentered, "Array of IsVarCellCentered sets"); + } + + if (InputIsOk) + { + EntIndex_t Z; + /* + * Allocate space for the zone info pieces. + */ + if (ZoneNames) + *ZoneNames = StringListAlloc(); + if (NumPtsI) + *NumPtsI = ALLOC_ARRAY(*NumZones, LgIndex_t, "numptsi"); + if (NumPtsJ) + *NumPtsJ = ALLOC_ARRAY(*NumZones, LgIndex_t, "numptsj"); + if (NumPtsK) + *NumPtsK = ALLOC_ARRAY(*NumZones, LgIndex_t, "numptsk"); + if (ZoneType) + *ZoneType = ALLOC_ARRAY(*NumZones, ZoneType_e, "zonetype"); + for (Z = 0; Z < *NumZones; Z++) + { + ZoneSpec_s *ZoneSpec = GetZoneSpec(ZoneSpecList, Z); + if (ZoneSpec != NULL) + { + if (ZoneNames && *ZoneNames) + StringListAppendString(*ZoneNames, ZoneSpec->Name); + + if (NumPtsI && *NumPtsI) + (*NumPtsI)[Z] = ZoneSpec->NumPtsI; + + if (NumPtsJ && *NumPtsJ) + (*NumPtsJ)[Z] = ZoneSpec->NumPtsJ; + + if (NumPtsK && *NumPtsK) + (*NumPtsK)[Z] = ZoneSpec->NumPtsK; + + if (ZoneType && *ZoneType) + (*ZoneType)[Z] = ZoneSpec->Type; + } + else + { + if (ZoneNames && *ZoneNames) + StringListAppendString(*ZoneNames, NULL); + + if (NumPtsI && *NumPtsI) + (*NumPtsI)[Z] = 0; + + if (NumPtsJ && *NumPtsJ) + (*NumPtsJ)[Z] = 0; + + if (NumPtsK && *NumPtsK) + (*NumPtsK)[Z] = 0; + + if (ZoneType && *ZoneType) + (*ZoneType)[Z] = ZoneType_Invalid; + } + } + } + if (!GetHeaderInfoOnly && InputIsOk && (*NumZones > 0)) + { + EntIndex_t *VarSharesFromZone = NULL; /* [NumVars] */ + Boolean_t *IsVarPassive = NULL; /* [NumVars] */ + EntIndex_t *ConnectivitySharesFromZone = NULL; /* [NumZones] */ + FieldDataType_e *VarType = NULL; + int CurZone; + int CurVar; + LgIndex_t NumIPts = 0; + LgIndex_t NumJPts = 0; + LgIndex_t NumKPts = 0; + LgIndex_t TotalNumPts; + LgIndex_t I, J; + + if ((*NumZones > 0) && !RawDataSpaceAllocated) + { + *VDataBase = ALLOC_ARRAY(*NumZones * (*NumVars), double *, "vdatabase array"); + if (*VDataBase == NULL) + { + ErrMsg(translate("Cannot allocate space for field data")); + InputIsOk = FALSE; + } + else + { + int I; + for (I = 0; I < *NumZones*(*NumVars); I++) + (*VDataBase)[I] = NULL; + } + + if (InputIsOk) + { + *NodeMap = ALLOC_ARRAY(*NumZones, NodeMap_t *, "nodemap array"); + if (*NodeMap == NULL) + { + ErrMsg(translate("Cannot allocate space for nodemap")); + InputIsOk = FALSE; + } + else + { + int I; + for (I = 0; I < *NumZones; I++) + (*NodeMap)[I] = NULL; + } + } + } + + if (InputIsOk) + { + VarType = ALLOC_ARRAY(*NumVars + 1, FieldDataType_e, "Var Type"); + VarSharesFromZone = ALLOC_ARRAY(*NumVars + 1, EntIndex_t, "VarSharesFromZone"); + IsVarPassive = ALLOC_ARRAY(*NumVars + 1, Boolean_t, "IsVarPassive"); + + ConnectivitySharesFromZone = ALLOC_ARRAY(*NumZones, EntIndex_t, "ConnectivitySharesFromZone"); + InputIsOk = (VarType != NULL && + VarSharesFromZone != NULL && + IsVarPassive != NULL && + ConnectivitySharesFromZone != NULL); + } + + /* for each zone */ + for (CurZone = 0; CurZone < *NumZones && InputIsOk; CurZone++) + { + double X1 = GetNextValue(ReadTecFileStream, FieldDataType_Float, 0.0, 1000.0, &InputIsOk); + if (InputIsOk && (X1 == ZoneMarker)) + { + ZoneSpec_s *CurZoneSpec = GetZoneSpec(ZoneSpecList, CurZone); + Boolean_t ZoneIsFinite = (CurZoneSpec->Type != ZoneType_Ordered); + Boolean_t ZoneIsFEPoly = (CurZoneSpec->Type == ZoneType_FEPolygon || + CurZoneSpec->Type == ZoneType_FEPolyhedron); + Boolean_t InBlockFormat = CurZoneSpec->ZoneLoadInfo.IsInBlockFormat; + for (J = 0; J < *NumVars; J++) + { + VarSharesFromZone[J] = -1; /* eumulate DupVar: no DupVar */ + VarType[J] = FieldDataType_Float; + IsVarPassive[J] = FALSE; + } + + /* dupvars */ + if (*IVersion > 45 && *IVersion < 101 && InputIsOk) + { + EntIndex_t NumDupVars, ZZ; + + NumDupVars = (EntIndex_t)GetIoFileInt(ReadTecFileStream, *IVersion, 0, (LgIndex_t) * NumVars, &InputIsOk); + for (J = 0; J < NumDupVars; J++) + { + ZZ = (EntIndex_t)GetIoFileInt(ReadTecFileStream, *IVersion, 0, *NumVars, &InputIsOk) - 1; + VarSharesFromZone[ZZ] = CurZone - 1; /* emulate DupVar: share from previous zone */ + } + /* Can't duplicate from the first zone */ + if ((NumDupVars > 0) && (CurZone == 0)) + { + ErrMsg(translate("Cannot duplicate variables from the first zone since there are " + "no previous zones to duplicate from.")); + InputIsOk = FALSE; + } + } + + /* get the data type for each variable */ + if (*IVersion >= 70 && InputIsOk) + { + for (J = 0; J < *NumVars; J++) + { + VarType[J] = (FieldDataType_e)GetIoFileInt(ReadTecFileStream, *IVersion, + 0, + (LgIndex_t)FieldDataType_Bit, + &InputIsOk); + if (!InputIsOk) + { + ErrMsg(translate("Invalid data type - binary input file corrupted")); + InputIsOk = FALSE; + } + } + } + + if (InputIsOk) + { + NumIPts = CurZoneSpec->NumPtsI; + NumJPts = CurZoneSpec->NumPtsJ; + NumKPts = CurZoneSpec->NumPtsK; + } + + if (ZoneIsFinite) + TotalNumPts = NumIPts; + else + TotalNumPts = (NumIPts * NumJPts * NumKPts); + + for (CurVar = 0; CurVar < *NumVars && InputIsOk; CurVar++) + { + if (!RawDataSpaceAllocated && TotalNumPts >= 1) + { + /* + * The calling program did not allocate space for the + * data so do it here. + */ + (*VDataBase)[CurVar+CurZone*(*NumVars)] = + ALLOC_ARRAY(TotalNumPts, double, "raw data"); + } + } + + if (*IVersion >= 105 && InputIsOk) + { + /* passive variables */ + if ((Boolean_t)GetIoFileInt(ReadTecFileStream, *IVersion, 0, 1, &InputIsOk) && InputIsOk) + { + for (CurVar = 0; CurVar < *NumVars && InputIsOk; CurVar++) + { + IsVarPassive[CurVar] = (Boolean_t)GetIoFileInt(ReadTecFileStream, + *IVersion, + 0, 1, &InputIsOk); + } + } + } + + if (*IVersion >= 101 && InputIsOk) + { + /* variable sharing: equivalent to DupVar for ReadTec */ + if ((Boolean_t)GetIoFileInt(ReadTecFileStream, *IVersion, 0, 1, &InputIsOk) && InputIsOk) + { + for (CurVar = 0; CurVar < *NumVars && InputIsOk; CurVar++) + { + EntIndex_t SharedZone = GetIoFileInt(ReadTecFileStream, *IVersion, + -1, MaxNumZonesOrVars - 1, + &InputIsOk); + if (SharedZone != -1 && InputIsOk) + VarSharesFromZone[CurVar] = SharedZone; + } + } + + /* face neighbor or FE node connectivity sharing */ + if (InputIsOk) + { + EntIndex_t SharedZone = GetIoFileInt(ReadTecFileStream, *IVersion, + -1, MaxNumZonesOrVars - 1, + &InputIsOk); + if (InputIsOk) + ConnectivitySharesFromZone[CurZone] = SharedZone; + } + } + + /* + * Non-shared variable min/max (but not for Zombie zones). + */ + if (*IVersion >= 103 && InputIsOk) + { + for (CurVar = 0; CurVar < *NumVars && InputIsOk; CurVar++) + { + if (VarSharesFromZone[CurVar] == -1 && !IsVarPassive[CurVar]) + { + /* + * Currently ReadTec doesn't do anything with the + * min/max values. + */ + GetNextValue(ReadTecFileStream, FieldDataType_Double, + -LARGEDOUBLE, LARGEDOUBLE, + &InputIsOk); + GetNextValue(ReadTecFileStream, FieldDataType_Double, + -LARGEDOUBLE, LARGEDOUBLE, + &InputIsOk); + } + } + } + + if (InBlockFormat) + { + CurVar = -1; + while (InputIsOk && ((CurVar + 1) < *NumVars)) + { + CurVar++; + if ((CurVar < *NumVars) && (TotalNumPts > 0)) + { + double *CurVPtr = (*VDataBase)[CurVar+CurZone*(*NumVars)]; + J = 0; + if (VarSharesFromZone[CurVar] != -1) + { + LgIndex_t M; + EntIndex_t SourceZone = VarSharesFromZone[CurVar]; + double *SourceVPtr = (*VDataBase)[CurVar+SourceZone*(*NumVars)]; + for (M = 0; M < TotalNumPts; M++) + CurVPtr[M] = SourceVPtr[M]; + } + else if (!IsVarPassive[CurVar]) + { + LocalReadBlock(ReadTecFileStream, + CurVPtr, + VarType[CurVar], + TotalNumPts, + &InputIsOk); + } + } + } + if (!InputIsOk) + ErrMsg(translate("Invalid raw data section of binary file")); + } + else if (TotalNumPts > 0) + { + /* + * Zone is not empty and is in POINT format + */ + J = -1; + if (InputIsOk) + { + LgIndex_t N; + N = 0; + while (InputIsOk && (N < TotalNumPts)) + { + EntIndex_t CurVar; + for (CurVar = 0; InputIsOk && (CurVar < *NumVars); CurVar++) + { + double *CurVPtr = (*VDataBase)[CurVar+CurZone*(*NumVars)]; + if (VarSharesFromZone[CurVar] != -1) + { + EntIndex_t SourceZone = VarSharesFromZone[CurVar]; + double *SourceVPtr = (*VDataBase)[CurVar+SourceZone*(*NumVars)]; + CurVPtr[N] = SourceVPtr[N]; + } + else if (!IsVarPassive[CurVar]) + { + double D = GetNextValue(ReadTecFileStream, + VarType[CurVar], + -LARGEDOUBLE, + LARGEDOUBLE, + &InputIsOk); + + if (InputIsOk && CurVPtr) + CurVPtr[N] = D; + } + } + + if (!InputIsOk) + ErrMsg(translate("Binary datafile corrupted!")); + N++; + } + } + } + + if (InputIsOk && *IVersion < 101) + { + if (ZoneIsFinite) + { + /* + * Pre-version 101 had FE connectivity sharing, + * FECONNECT, information here. + */ + Boolean_t DupConnectivity; + if (*IVersion > 61) + DupConnectivity = GetIoFileInt(ReadTecFileStream, *IVersion, 0, 1, &InputIsOk); + else + DupConnectivity = FALSE; + + if (DupConnectivity) + ConnectivitySharesFromZone[CurZone] = CurZone - 1; /* previous zone */ + else + ConnectivitySharesFromZone[CurZone] = -1; + } + else + ConnectivitySharesFromZone[CurZone] = -1; + } + + if (InputIsOk && ZoneIsFinite && !ZoneIsFEPoly) + { + Boolean_t SkipNodemap; + NodeMap_t *NM = NULL; + NodeMap_t *ONM = NULL; + /* + * Allocate the nodemap ptr if necessary Note that if + * RawDataSpaceAllocated is TRUE then (*NodeMap)[CurZone] + * can either contain a valid address (read the connectivity + * list) or be NULL (skip the list). + */ + if (!RawDataSpaceAllocated && NumKPts*NumJPts >= 1) + { + (*NodeMap)[CurZone] = ALLOC_ARRAY(NumKPts * NumJPts, NodeMap_t, "node map"); + if ((*NodeMap)[CurZone] == NULL) + ErrMsg(translate("Cannot allocate space for connectivity list", + "See the Tecplot User's Manual for a definition of 'connectivity list'")); + } + + if (InputIsOk) + NM = (*NodeMap)[CurZone]; + + SkipNodemap = (NM == NULL); + + if (InputIsOk && ConnectivitySharesFromZone[CurZone] != -1) + { + EntIndex_t SourceZone = ConnectivitySharesFromZone[CurZone]; + if (SourceZone >= CurZone) + { + ErrMsg(translate("Zone %d is attempting to share connectivity " + "with a zone that has not yet been loaded."), + CurZone + 1); + InputIsOk = FALSE; + } + else + { + ONM = (*NodeMap)[SourceZone]; + if (ONM == NULL) + { + ErrMsg(translate("Zone %d is attempting to share connectivity " + "with a zone that is not finite element."), + CurZone + 1); + InputIsOk = FALSE; + } + } + } + + if (InputIsOk) + { + /* load the FE node connectivity */ + for (J = 0; J < NumJPts; J++) + for (I = 0; I < NumKPts; I++) + { + LgIndex_t M; + LgIndex_t L = J * NumKPts + I; + if (ConnectivitySharesFromZone[CurZone] != -1) + M = ONM[L]; + else + M = GetNextI(ReadTecFileStream, &InputIsOk) - 1; + if (!SkipNodemap) + NM[L] = M; + } + } + } + + /* skip over the face neighbor connectivity */ + if (*IVersion >= 101 && InputIsOk) + { + EntIndex_t SharedZone = ConnectivitySharesFromZone[CurZone]; + if (SharedZone == -1 && FNNumBndryConns[CurZone] != 0) + { + LgIndex_t Connection = 0; + while (Connection < FNNumBndryConns[CurZone] && InputIsOk) + { + /* + * Face neighbor connection have the following format for both + * ASCII and binary: + * + * FaceNeighborMode_LocalOneToOne 3 cz,fz,cz + * FaceNeighborMode_LocalOneToMany nz+4 cz,fz,oz,nz,cz1,cz2,...,czn + * FaceNeighborMode_GlobalOneToOne 4 cz,fz,ZZ,CZ + * FaceNeighborMode_GlobalOneToMany 2*nz+4 cz,fz,oz,nz,ZZ1,CZ1,ZZ2,CZ2,...,ZZn,CZn + * + * Where: + * cz = cell in current zone + * fz = face of cell in current zone + * oz = face obsuration flag (only applies to one-to-many): + * 0 = face partially obscured + * 1 = face entirely obscured + * nz = number of cell or zone/cell associations (only applies to one-to-many) + * ZZ = remote Zone + * CZ = cell in remote zone + */ + (void)GetNextI(ReadTecFileStream, &InputIsOk); /* read cz */ + if (!InputIsOk) + ErrMsg(translate("Unexpected end-of-file while reading face neighbor data.")); + + (void)GetNextI(ReadTecFileStream, &InputIsOk); /* read fz */ + + if (InputIsOk) + { + /* + * read FaceNeighborMode_LocalOneToOne: cz || + * FaceNeighborMode_LocalOneToMany: oz || + * FaceNeighborMode_GlobalOneToOne: ZZ || + * FaceNeighborMode_GlobalOneToMany: oz + */ + if (CurZoneSpec->FNMode == FaceNeighborMode_LocalOneToOne) + (void)GetNextI(ReadTecFileStream, &InputIsOk); + else if (CurZoneSpec->FNMode == FaceNeighborMode_LocalOneToMany) + (void)GetNextI(ReadTecFileStream, &InputIsOk); + else if (CurZoneSpec->FNMode == FaceNeighborMode_GlobalOneToOne) + (void)GetNextI(ReadTecFileStream, &InputIsOk); + else if (CurZoneSpec->FNMode == FaceNeighborMode_GlobalOneToMany) + (void)GetNextI(ReadTecFileStream, &InputIsOk); + else + CHECK(FALSE); + + if (CurZoneSpec->FNMode != FaceNeighborMode_LocalOneToOne && InputIsOk) + { + LgIndex_t NumAssociations = 0; + /* + * read FaceNeighborMode_LocalOneToMany: nz || + * FaceNeighborMode_GlobalOneToOne: CZ || + * FaceNeighborMode_GlobalOneToMany: nz + */ + if (CurZoneSpec->FNMode == FaceNeighborMode_LocalOneToMany) + NumAssociations = GetNextI(ReadTecFileStream, &InputIsOk); + else if (CurZoneSpec->FNMode == FaceNeighborMode_GlobalOneToOne) + (void)GetNextI(ReadTecFileStream, &InputIsOk); + else if (CurZoneSpec->FNMode == FaceNeighborMode_GlobalOneToMany) + NumAssociations = GetNextI(ReadTecFileStream, &InputIsOk); + else + CHECK(FALSE); + + if (CurZoneSpec->FNMode != FaceNeighborMode_GlobalOneToOne && InputIsOk) + { + LgIndex_t Assoc; + if (CurZoneSpec->FNMode == FaceNeighborMode_LocalOneToMany) + for (Assoc = 0; Assoc < NumAssociations && InputIsOk; Assoc++) + (void)GetNextI(ReadTecFileStream, &InputIsOk); /* read czn */ + else if (CurZoneSpec->FNMode == FaceNeighborMode_GlobalOneToMany) + for (Assoc = 0; Assoc < NumAssociations && InputIsOk; Assoc++) + { + (void)GetNextI(ReadTecFileStream, &InputIsOk); /* read ZZn */ + (void)GetNextI(ReadTecFileStream, &InputIsOk); /* read CZn */ + } + else + CHECK(FALSE); + + if (InputIsOk) + Connection += NumAssociations; + } + else if (InputIsOk) /* CurZoneSpec->FNMode == FaceNeighborMode_GlobalOneToOne */ + Connection += 1; + } + else if (InputIsOk) /* CurZoneSpec->FNMode == FaceNeighborMode_LocalOneToOne */ + Connection += 1; + + if (!InputIsOk) + ErrMsg(translate("Corrupt input file: invalid face neighbors.")); + } + } + } + }/* face neighbor connectivity */ + /* skip over face map section */ + if (ZoneIsFEPoly && + *IVersion >= 110 && + ConnectivitySharesFromZone[CurZone] != -1 && + InputIsOk) + { + if (!InBlockFormat) + { + ErrMsg(translate("Poly zones must be in block format")); + InputIsOk = FALSE; + } + if (InputIsOk) + { + HgIndex_t NumFaces = CurZoneSpec->NumPtsK; + if (*IVersion == 110) // ...version 111 moved these to the zone header + { + CurZoneSpec->NumFaceNodes = GetNextI(ReadTecFileStream, &InputIsOk); + CurZoneSpec->NumFaceBndryFaces = GetNextI(ReadTecFileStream, &InputIsOk); + CurZoneSpec->NumFaceBndryItems = GetNextI(ReadTecFileStream, &InputIsOk); + } + HgIndex_t TotalNumFaceNodes = CurZoneSpec->NumFaceNodes; + HgIndex_t TotalNumBndryFaces = CurZoneSpec->NumFaceBndryFaces; + HgIndex_t TotalNumBndryItems = CurZoneSpec->NumFaceBndryItems; + if (CurZoneSpec->Type == ZoneType_FEPolyhedron) + ReadInt32Block(ReadTecFileStream, FALSE, NULL, 0, NumFaces + 1, &InputIsOk); + if (InputIsOk) + ReadInt32Block(ReadTecFileStream, FALSE, NULL, 0, TotalNumFaceNodes, &InputIsOk); + if (InputIsOk) + ReadInt32Block(ReadTecFileStream, FALSE, NULL, 0, NumFaces, &InputIsOk); + if (InputIsOk) + ReadInt32Block(ReadTecFileStream, FALSE, NULL, 0, NumFaces, &InputIsOk); + if (TotalNumBndryFaces > 0) + { + if (InputIsOk) + ReadInt32Block(ReadTecFileStream, FALSE, NULL, 0, TotalNumBndryFaces + 1, &InputIsOk); + if (InputIsOk) + ReadInt32Block(ReadTecFileStream, FALSE, NULL, 0, TotalNumBndryItems, &InputIsOk); + if (InputIsOk) + { + if (*IVersion >= 112) + ReadInt32Block(ReadTecFileStream, FALSE, NULL, 0, TotalNumBndryItems, &InputIsOk); + else + ReadInt16Block(ReadTecFileStream, FALSE, NULL, 0, TotalNumBndryItems, &InputIsOk); + } + } + } + }/* face map section */ + } + else + { + ErrMsg(translate("Corrupt input file")); + InputIsOk = FALSE; + } + } + + if (VarSharesFromZone) + FREE_ARRAY(VarSharesFromZone, "VarSharesFromZone"); + if (IsVarPassive) + FREE_ARRAY(IsVarPassive, "IsVarPassive"); + if (ConnectivitySharesFromZone) + FREE_ARRAY(ConnectivitySharesFromZone, "ConnectivitySharesFromZone"); + if (VarType) + FREE_ARRAY(VarType, "VarType"); + + if (!InputIsOk && !RawDataSpaceAllocated) + { + int I; + if (*VDataBase) + { + for (I = 0; I < *NumZones*(*NumVars); I++) + { + if ((*VDataBase)[I]) + FREE_ARRAY((*VDataBase)[I], "vdatabase array"); + } + FREE_ARRAY(*VDataBase, "vdatabase pointer array"); + } + + + if (*NodeMap) + { + for (I = 0; I < *NumZones; I++) + { + if ((*NodeMap)[I]) + FREE_ARRAY((*NodeMap)[I], "connectivity list"); + } + FREE_ARRAY(*NodeMap, "connectivity pointer array"); + } + } + } /*Reading Raw Data*/ + + if (FNNumBndryConns != NULL) + FREE_ARRAY(FNNumBndryConns, "FNNumBndryConns"); + if (ZoneSpecList) + ArrayListDealloc(&ZoneSpecList, ZoneSpecItemDestructor, 0); + + if (ReadTecFileStream) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else + TP_FCLOSE(ReadTecFileStream->File); + free(ReadTecFileStream); +#endif + } + return (InputIsOk); +} + + +void * STDCALL TecAlloc(size_t size) +{ + return (void *)ALLOC_ARRAY(size, char, "TecAlloc"); +} + +void STDCALL TecFree(void *ptr) +{ + /* Hack to remove delete warning... */ + char *Tmp = (char *)ptr; + FREE_ARRAY(Tmp, "TecAlloc"); +} + + diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/filestream.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/filestream.cpp new file mode 100644 index 00000000000..049f99ed747 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/filestream.cpp @@ -0,0 +1,78 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* + ***************************************************************** + ***************************************************************** + ******* ******** + ****** Copyright (C) 1988-2008 Tecplot, Inc. ******* + ******* ******** + ***************************************************************** + ***************************************************************** +*/ + +#define FILESTREAMMODULE + +#include "GLOBAL.h" +#include "TASSERT.h" +#include "ALLOC.h" +#include "SYSTEM.h" +#include "FILESTREAM.h" + +/** + */ +FileStream_s *FileStreamAlloc(FILE *File, + Boolean_t IsByteOrderNative) +{ + REQUIRE(VALID_REF(File) || File == NULL); + + FileStream_s *Result = ALLOC_ITEM(FileStream_s, "FileStream"); + if (Result != NULL) + { + Result->File = File; + Result->IsByteOrderNative = IsByteOrderNative; + } + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + +/** + */ +void FileStreamDealloc(FileStream_s **FileStream) +{ + REQUIRE(VALID_REF(FileStream)); + REQUIRE(VALID_REF(*FileStream) || *FileStream == NULL); + + if (*FileStream != NULL) + { + FREE_ITEM(*FileStream, "FileStream"); + *FileStream = NULL; + } + + ENSURE(*FileStream == NULL); +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/geom2.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/geom2.cpp new file mode 100644 index 00000000000..198f096fd9e --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/geom2.cpp @@ -0,0 +1,89 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + +#define GEOM2MODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "ALLOC.h" + +#include "GEOM.h" +#include "TEXT.h" +#include "STRUTIL.h" +#include "GEOM2.h" + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "DATASET0.h" + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# if 0 /* 3D geometry arrowheads are not drawn at this time. */ +#endif +# if 0 /* 3D geometry arrowheads are not drawn at this time. */ +# endif +#if 0 +#endif +# ifndef NO_ASSERTS +# endif +# ifndef NO_ASSERTS +# endif +#endif /* TECPLOTKERNEL */ + + +FieldDataType_e GetGeomFieldDataType(Geom_s const* Geom) +{ + FieldDataType_e Result; + + REQUIRE(VALID_REF(Geom)); + REQUIRE(VALID_REF(Geom->GeomData.Generic.V1Base)); + + Result = Geom->DataType; + + ENSURE(VALID_GEOM_FIELD_DATA_TYPE(Result)); + /* + * Check that the geom's field data arrays (if they exist) + * have the same type as the geometry. + */ + ENSURE(IMPLICATION(VALID_REF(Geom->GeomData.Generic.V1Base), Result == GetFieldDataType(Geom->GeomData.Generic.V1Base))); + ENSURE(IMPLICATION(VALID_REF(Geom->GeomData.Generic.V2Base), Result == GetFieldDataType(Geom->GeomData.Generic.V2Base))); + ENSURE(IMPLICATION(VALID_REF(Geom->GeomData.Generic.V3Base), Result == GetFieldDataType(Geom->GeomData.Generic.V3Base))); + + return Result; +} diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_msg.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_msg.cpp new file mode 100644 index 00000000000..6a20cf56041 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_msg.cpp @@ -0,0 +1,415 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" + +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define Q_MSGMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "ALLOC.h" +#include "ARRLIST.h" + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE +#if defined MOTIF +#endif +#if defined MSWIN +#endif +#endif +#endif + +#include "STRUTIL.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +using std::string; +using namespace tecplot::strutil; +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#define MAXCHARACTERSPERLINE 60 +/* + * Wrap a string so it contains at most CharactersPerLine + * characters. Embedded newlines are left alone. Spaces + * following newlines are also left alone. + */ +Boolean_t WrapString(const char *OldString, + char **NewString) +{ + size_t L; + if (OldString == NULL) + return (FALSE); + + /* + * Assume Old string has ample spaces. Will only be + * replacing some spaces with newlines and removing + * other spaces. New string can be allocated to be + * same length as old string. + */ + + L = strlen(OldString); + *NewString = ALLOC_ARRAY(L + 1, char, "new error message string"); + if (*NewString == NULL) + return (FALSE); + + strcpy(*NewString, OldString); + + if (L > MAXCHARACTERSPERLINE) + { + char *LineStart = *NewString; + char *LastWord = *NewString; + char *WPtr = *NewString; + while (WPtr && (*WPtr != '\0')) + { + size_t CurLen; + /* + * Find next hard newline. If there is one befor the + * line should be chopped then reset the Last Word to + * be at the first word after the newline. + */ + WPtr = strchr(LineStart, '\n'); + if (WPtr && ((WPtr - LineStart) < MAXCHARACTERSPERLINE)) + { + WPtr++; + while (*WPtr == '\n') + WPtr++; + LineStart = WPtr; + /* + * Skip over trailing spaces. Special handling to + * allow indent after hard newline. + */ + while (*WPtr == ' ') + WPtr++; + LastWord = WPtr; + continue; + } + /* + * Find next "word" + */ + WPtr = strchr(LastWord, ' '); + if (WPtr != NULL) + { + while (*WPtr == ' ') + WPtr++; + } + + if (WPtr == NULL) + { + CurLen = strlen(LineStart); + } + else + { + CurLen = WPtr - LineStart; + } + + if (CurLen > MAXCHARACTERSPERLINE) + { + /* + * Line is too long. Back up to previous + * word and replace preceeding space with + * a newline. + */ + if (LastWord == LineStart) + { + /* + * Bad news, line has very long word. + */ + if (WPtr && (*WPtr != '\0')) + { + *(WPtr - 1) = '\n'; + LastWord = WPtr; + } + } + else + { + *(LastWord - 1) = '\n'; + } + LineStart = LastWord; + } + else + LastWord = WPtr; + } + } + return (TRUE); +} + + +static void SendWarningToFile(FILE *F, + const char *S) +{ + char *S2; + REQUIRE(VALID_REF(F)); + REQUIRE(VALID_REF(S)); + if (WrapString(S, &S2)) + { + fprintf(F, "Warning: %s\n", S2); + FREE_ARRAY(S2, "temp warning string"); + } +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + +/** + * Show the warning message. Note that the Format string can be the only + * argument, in which case it is essentially the warning message itself. + * + * param Format + * C Format string or a simple message. + * param ... + * Zero or more variable arguments. The number of arguments must correspond + * to the placeholders in the format string. + */ +void Warning(TranslatedString Format, + ...) /* zero or more arguments */ +{ + REQUIRE(!Format.isNull()); + + static Boolean_t InWarning = FALSE; /* ...used to prevent recursive deadlock */ + if (!InWarning) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + InWarning = TRUE; + { + /* + * Attempt to format the string. Failing that simply use the original format + * string argument which, if we ran out of memory while formatting, is + * probably just an warning message saying that we ran out of memory in some + * previous operation anyway. + */ + Boolean_t cleanUp = TRUE; + + va_list Arguments; + va_start(Arguments, Format); + char* message = vFormatString(Format.c_str(), Arguments); + va_end(Arguments); + + if (message == NULL) + { + cleanUp = FALSE; // ...this boolean allows us to "carefully" cast away the const'ness + message = (char*)Format.c_str(); + } + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#ifdef MSWIN +#endif +#if defined UNIXX +#endif +#if defined MSWIN +#endif +#else /* !TECPLOTKERNEL */ + { + SendWarningToFile(stderr, message); + } +#endif + + if (cleanUp) + FREE_ARRAY(message, "message"); + } + InWarning = FALSE; + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + } +} + + +static void SendErrToFile(FILE *File, + const char *Msg) +{ + char *FormattedMsg; + REQUIRE(VALID_REF(File)); + REQUIRE(VALID_REF(Msg)); + if (WrapString(Msg, &FormattedMsg)) + { + fprintf(File, "Err: %s\n", FormattedMsg); + FREE_ARRAY(FormattedMsg, "temp error string"); + } + else + fprintf(File, "Err: %s\n", Msg); +} + + +/* Fall-back ErrMsg procedure when nothing else works */ +static void DefaultErrMsg(const char *Msg) +{ + REQUIRE(VALID_REF(Msg)); + +#ifdef MSWIN +#ifdef TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else + MessageBox(NULL, Msg, "Error", MB_OK | MB_ICONERROR); +#endif +#else + SendErrToFile(stderr, Msg); +#endif +} + +static void PostErrorMessage(TranslatedString Format, + va_list Arguments) +{ + REQUIRE(!Format.isNull()); + + /* + * Attempt to format the string. Failing that simply use the original format + * string argument which, if we ran out of memory while formatting, is + * probably just an error message saying that we ran out of memory in some + * previous operation anyway. + */ + Boolean_t cleanUp = TRUE; + char* messageString = vFormatString(Format.c_str(), Arguments); + if (messageString == NULL) + { + cleanUp = FALSE; // ...this boolean allows us to "carefully" cast away the const'ness + messageString = (char*)Format.c_str(); + } + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#ifdef MSWIN +#endif +#if defined UNIXX +#if !defined ENGINE +#endif +#endif +#else /* !TECPLOTKERNEL */ + { + DefaultErrMsg(messageString); + } +#endif + + /* cleanup if we allocated the string */ + if (cleanUp) + FREE_ARRAY(messageString, "messageString"); +} + +/* + * NOTES: + * This function is thread safe in that it may be safely called by multiple + * threads however when running interactively only the first error message is + * queued for display on idle. In batch mode all messages are sent to the + * batch log file. + */ +void vErrMsg(TranslatedString Format, + va_list Arguments) +{ + REQUIRE(!Format.isNull()); + + static Boolean_t InErrMsg = FALSE; /* ...used to prevent recursive deadlock */ + if (!InErrMsg) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + InErrMsg = TRUE; + { + PostErrorMessage(Format, Arguments); + } + InErrMsg = FALSE; + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + } +} + +/** + * Show the error message. Note that the Format string can be the only + * argument, in which case it is essentially the error message itself. + * + * @param Format + * C Format string or a simple message. + * @param ... + * Zero or more variable arguments. The number of arguments must correspond + * to the placeholders in the format string. + */ +void ErrMsg(TranslatedString Format, + ...) /* zero or more arguments */ +{ + REQUIRE(!Format.isNull()); + + va_list Arguments; + va_start(Arguments, Format); +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#else + PostErrorMessage(Format, Arguments); +#endif + va_end(Arguments); +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined ENGINE +#endif +#if !defined ENGINE +#if defined MOTIF +#endif +#if defined MSWIN +#endif +#endif +#if !defined ENGINE +#if defined MOTIF +#endif +#if defined MSWIN +#endif +#endif +#if !defined ENGINE +#if defined MOTIF +#endif /* MOTIF */ +#if defined MSWIN +#endif +#if defined MOTIF +#endif /* MOTIF */ +#endif +#if !defined ENGINE +#endif +#endif /* TECPLOTKERNEL */ + diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_unicode.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_unicode.cpp new file mode 100644 index 00000000000..4d4db61e1dd --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/q_unicode.cpp @@ -0,0 +1,447 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" + +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ +#define Q_UNICODEMODULE + +#include "GLOBAL.h" +#include "TASSERT.h" + +#if !defined TECPLOTKERNEL +#include "TranslatedString.h" +#endif + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#include "ALLOC.h" + +#include "Q_UNICODE.h" + +using namespace std; + +namespace tecplot +{ +namespace strutil +{ + +typedef std::map<std::string, char *> EnvStringPoolMap_t; +static EnvStringPoolMap_t mapEnvStringPool; + + +#if defined MSWIN + + +string WStringToString(wstring str) +{ + REQUIRE("str is any wide string"); + string Result = WideCharToUtf8(str.c_str()); + + ENSURE("Result is any string"); + return Result; +} + +wstring StringToWString(string str) +{ + REQUIRE("str is any string"); + + wstring Result = Utf8ToWideChar(str.c_str()); + + ENSURE("Result is any string"); + return Result; +} +#endif + +/************************************************ + * Utf8Api + ************************************************/ +#define VALID_CODE_PAGE(cp) \ + ( (cp) == 932 || (cp) == CP_UTF8 || (cp) == CP_ACP || (cp) == CP_OEMCP || (cp) == CP_THREAD_ACP ) + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined MSWIN && !defined ENGINE +#endif +#if defined MSWIN +#endif +#endif + + +#if defined MSWIN + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +std::string WideCharToMultiByte(const wchar_t* WideString, + unsigned int CodePage) +{ + REQUIRE(VALID_REF(WideString)); + REQUIRE(VALID_CODE_PAGE(CodePage)); + + string strResult; + wstring wString(WideString); + + + if (wString.length() > 0) + { + size_t nLen = + (size_t) ::WideCharToMultiByte(CodePage, + 0, + wString.c_str(), + -1, + NULL, + 0, + NULL, + NULL); + if (nLen > 0) + { + char *pBuffer = ALLOC_ARRAY(nLen, char, "pBuffer"); + + VERIFY(::WideCharToMultiByte(CodePage, + 0, + WideString, + (int)(wString.length() + 1), + pBuffer, + (int)nLen, + NULL, + NULL) != 0); + + strResult = pBuffer; + FREE_ARRAY(pBuffer, "pBuffer"); + + } + else + { + // this should never be an error + CHECK(FALSE); + } + } + else + { + // output 'str' remains empty + } + + ENSURE("strResult is a valid STL string"); + return strResult; + + +} + +wstring MultiByteToWideChar(const char *UTF8String, + unsigned int CodePage) +{ + REQUIRE(VALID_REF(UTF8String)); + REQUIRE(VALID_CODE_PAGE(CodePage)); + + wstring strResult; + string UTF8str(UTF8String); + + size_t wLen; + + if (UTF8str.length() > 0) + { + wLen = + (size_t) ::MultiByteToWideChar(CodePage, + 0, + UTF8str.c_str(), + -1, + NULL, + 0); + if (wLen > 0) + { + wchar_t *wBuffer = ALLOC_ARRAY(wLen + 1, wchar_t, "wBuffer"); + VERIFY(::MultiByteToWideChar(CodePage, + 0, + UTF8str.c_str(), + (int)(UTF8str.length() + 1), + wBuffer, + (int)wLen) != 0); + + strResult = wBuffer; + FREE_ARRAY(wBuffer, "wBuffer"); + + } + else + { + CHECK(FALSE); // We should never get an error here + } + } + else + { + // strResult is left empty + } + + ENSURE("strResult is a valid CString"); + + wstring strRet(strResult); + return strRet; + +} +#endif + + + +#if defined MSWIN +std::string WideCharToUtf8(const wchar_t *str) +{ + REQUIRE(VALID_REF(str)); /* really cannot be NULL - 2007-10-22 CAM/DTO */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + UINT CodePage = CP_ACP; + + string Result = ""; + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + Result = WideCharToMultiByte(str, CodePage); + + ENSURE("Result is any string"); + return Result; +} + +wstring Utf8ToWideChar(const char *str) +{ + REQUIRE(VALID_REF(str)); /* really cannot be NULL - 2007-10-22 CAM/DTO */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + UINT CodePage = CP_ACP; + wstring Result; + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + Result = MultiByteToWideChar(str, CodePage); + + ENSURE("Result is any string"); + return Result; +} +#endif + + +Boolean_t IsValidUtf8LeadByte(Byte_t uch) +{ + REQUIRE("uch is any byte"); + Boolean_t Result = + uch <= 0x7F || + (uch >= 0xC0 && uch <= 0xDF) || + (uch >= 0xE0 && uch <= 0xEF) || + (uch >= 0xF0 && uch <= 0xF4); + + ENSURE(VALID_BOOLEAN(Result)); + return Result; +} + +Boolean_t IsValidUtf8ContinuingByte(Byte_t uch) +{ + REQUIRE("uch is any char"); + + Boolean_t Result = + (uch >= 0x80 && uch <= 0xBF); + + ENSURE(VALID_BOOLEAN(Result)); + return Result; +} + +Boolean_t IsValidUtf8Byte(Byte_t uch) +{ + REQUIRE("uch is any char"); + Boolean_t Result = + IsValidUtf8LeadByte(uch) || + IsValidUtf8ContinuingByte(uch); + + REQUIRE(VALID_BOOLEAN(Result)); + return Result; +} + + +Boolean_t ShouldConvertWideStringToUtf8String(const wchar_t *str) +{ + Boolean_t Result = FALSE; + +#if defined MSWIN && defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* MSWIN and TECPLOTKERNEL */ + + ENSURE(VALID_BOOLEAN(Result)); + return Result; + +} + +Boolean_t IsValidUtf8String(const char *str) +{ + Boolean_t IsValid = TRUE; + REQUIRE(VALID_REF(str)); + +#if defined MSWIN + size_t len = strlen(str); + Boolean_t InUtf8Sequence = FALSE; + int Utf8SequenceCount = 0; + int MaxUtf8SequenceCount = 0; + + /* we want to process the final \0, so go to <= len */ + + for (size_t ii = 0; IsValid && ii <= len; ii++) + { + Byte_t uch = (Byte_t)str[ii]; + + if (uch <= 0x7F) + { + /* This must be the end of a sequence, + so the sequence count must match + the max sequence count */ + + InUtf8Sequence = FALSE; + IsValid = (Utf8SequenceCount == MaxUtf8SequenceCount); + Utf8SequenceCount = 0; + MaxUtf8SequenceCount = 0; + } + else if (uch >= 0x80 && uch <= 0xBF) + { + /* Continuing byte in a multi byte sequence */ + if (InUtf8Sequence) + { + Utf8SequenceCount++; + } + else + { + IsValid = FALSE; + } + + } + else if (uch >= 0xC0 && uch <= 0xDF) + { + /* Lead byte of 000080-0007FF */ + IsValid = (Utf8SequenceCount == MaxUtf8SequenceCount); + InUtf8Sequence = TRUE; + Utf8SequenceCount = 0; + MaxUtf8SequenceCount = 1; + } + else if (uch >= 0xE0 && uch <= 0xEF) + { + /* Lead byte of 000800-00FFFF */ + IsValid = (Utf8SequenceCount == MaxUtf8SequenceCount); + InUtf8Sequence = TRUE; + Utf8SequenceCount = 0; + MaxUtf8SequenceCount = 2; + } + else if (uch >= 0xF0 && uch <= 0xF4) + { + /* Lead byte of 010000-10FFFF */ + IsValid = (Utf8SequenceCount == MaxUtf8SequenceCount); + Utf8SequenceCount = 0; + InUtf8Sequence = TRUE; + MaxUtf8SequenceCount = 3; + } + + else + { + /* Invalid Utf 8 */ + IsValid = FALSE; + } + } +#endif + + ENSURE(VALID_BOOLEAN(IsValid)); + return IsValid; +} + + +/** + */ +Boolean_t IsNullOrZeroLengthString(const char *str) +{ + REQUIRE(VALID_REF_OR_NULL(str)); + + Boolean_t Result = (str == NULL || strlen(str) == 0); + + ENSURE(VALID_BOOLEAN(Result)); + return Result; +} + +/** + */ +Boolean_t IsNullOrZeroLengthString(TranslatedString TS) +{ + REQUIRE(TS.isValid()); + return TS.isNullOrZeroLength(); +} + + +} +} + +#if defined MSWIN && TECPLOTKERNEL && (!defined NO_ASSERTS || defined CHECKED_BUILD) +/* Keeping Trace out of the release builds + will verify for us that it has been optimized away. + + See the definition of TRACE in MASTER.h for + more information... */ +void MSWinTrace(const char *Format, ...) +{ + REQUIRE(VALID_REF(Format)); + + const int BufferSize = 512; /* Only print the first 512 characers */ + va_list Arguments; + + /* Don't use ALLOC_ARRAY here */ + char *buffer = new char[BufferSize]; + memset(buffer, 0, BufferSize); + + va_start(Arguments, Format); + _vsnprintf(buffer, BufferSize - 1, Format, Arguments); + va_end(Arguments); + + ::OutputDebugStringA(buffer); + + delete [] buffer; +} + + + +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/set.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/set.cpp new file mode 100644 index 00000000000..2f6252a4c98 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/set.cpp @@ -0,0 +1,696 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + + +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + + + +#define SETMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "ALLOC.h" +#include "SET.h" + + +/* * SET FUNCTIONS * */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if InitNumZones > InitNumVars +#else +#endif +#if ZoneExpansionFactor > VarExpansionFactor +#else +#endif +#else +#define SetInitSize (PadOut(1,SetBitSize)) +#define SetExpansionFactor 2 +#endif + +using namespace tecplot::strutil; + +/* + */ +Set_pa AllocSet(Boolean_t show_error_msg) +{ + Set_pa Set = ALLOC_ITEM(struct _Set_a, "Set header"); + if (Set) + { + Set->size = SetInitSize; + Set->data = ALLOC_ARRAY(SetInitSize / SetBitSize, SetData_t, "Set data"); + if (Set->data == NULL) + DeallocSet(&Set); + else + ClearSet(Set); + } + if ((Set == NULL) && show_error_msg) + { +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else + fprintf(stderr, "Out of memory for sets"); +# endif + } + return Set; +} /* AllocSet() */ + + +/* + */ +void DeallocSet(Set_pa *Set) +{ + if (Set && *Set) + { + if ((*Set)->data) + FREE_ARRAY((*Set)->data, "Set data"); + FREE_ITEM(*Set, "Set header"); + *Set = NULL; + } +} /* DeallocSet() */ + + +/** + * This function adapts the DeallocSet function to work with the + * ArrayList's deallocation callback. + */ +Boolean_t SetItemDestructor(void *ItemRef, + ArbParam_t ClientData) +{ + Set_pa *SetRef = (Set_pa *)ItemRef; + + REQUIRE(VALID_REF(SetRef)); + REQUIRE(VALID_REF(*SetRef) || *SetRef == NULL); + + if (*SetRef != NULL) + DeallocSet(SetRef); + + ENSURE(*SetRef == NULL); + return TRUE; +} + + +/* + */ +Boolean_t ExpandSet(Set_pa Set, + SetIndex_t max_val, + Boolean_t show_error_msg) +{ + SetData_t *data; + long new_size; + + REQUIRE(max_val >= 0); + + if (!Set) + { + if (show_error_msg) + { +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else + fprintf(stderr, "Null Set expand"); +# endif + } + return FALSE; + } + + if (max_val <= Set->size) + return TRUE; + + new_size = Set->size; + while (new_size < max_val) + new_size *= SetExpansionFactor; + + new_size = PadOut(new_size, SetBitSize); + + data = ALLOC_ARRAY(new_size / SetBitSize, SetData_t, "new Set data"); + + if (!data) + { + if (show_error_msg) + { +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else + fprintf(stderr, "Out of memory for sets"); +# endif + } + return FALSE; + } + size_t old_set_size_in_bytes = sizeof(data[0]) * (Set->size / SetBitSize); + memcpy(data, Set->data, old_set_size_in_bytes); + + size_t new_set_size_in_bytes = sizeof(data[0]) * (new_size / SetBitSize); + size_t numBytesToReset = new_set_size_in_bytes - old_set_size_in_bytes; + memset(((char*)data) + old_set_size_in_bytes, 0, numBytesToReset); + + FREE_ARRAY(Set->data, "old Set data"); + Set->data = data; + Set->size = new_size; + return TRUE; +} /* ExpandSet() */ + + +/* + */ +Boolean_t CopySet(Set_pa dst, + Set_pa src, + Boolean_t show_error_msg) +{ + if (dst && dst->data && + src && src->data && + ExpandSet(dst, src->size, show_error_msg)) + { + SetIndex_t src_size_in_words = src->size / SetBitSize; + size_t numBytesToCopy = sizeof(dst->data[0]) * src_size_in_words; + memcpy(dst->data, src->data, numBytesToCopy); + + SetIndex_t dst_size_in_words = dst->size / SetBitSize; + CHECK(dst_size_in_words>=src_size_in_words); // ...guaranteed by above ExpandSet() call + size_t numBytesToReset = sizeof(dst->data[0]) * (dst_size_in_words - src_size_in_words); + memset((char*)(dst->data + src_size_in_words), 0, numBytesToReset); + + return TRUE; + } + else + return FALSE; +} /* CopySet() */ + + +/* + */ +Boolean_t AppendSet(Set_pa dst, + Set_pa src, + Boolean_t show_error_msg) +{ + if (dst && dst->data && + src && src->data) + { + SetIndex_t member; + ForAllMembersInSet(member, src) + { + if (!AddToSet(dst, member, TRUE)) + return FALSE; + } + return TRUE; + } + else + return FALSE; +} /* AppendSet() */ + + +/* + */ +void ClearSet(Set_pa Set) +{ + if (Set && Set->data) + memset(Set->data, 0, Set->size / SetBitSize * sizeof(Set->data[0])); +} /* ClearSet() */ + + +#if defined USE_FUNCTIONS_FOR_SETS +/* + */ +Boolean_t AddToSet(Set_pa Set, + SetIndex_t member, + Boolean_t show_error_msg) +{ + REQUIRE(member >= 0); + if (Set && + Set->data && + ((member + 1 <= Set->size) || ExpandSet(Set, member + 1, show_error_msg))) + { + SetIndex_t word = member / SetBitSize; + SetData_t bit = (SetData_t)1 << (member % SetBitSize); + Set->data[word] |= bit; + return TRUE; + } + else + return FALSE; +} /* AddToSet() */ +#endif + + +/* + */ +void RemoveFromSet(Set_pa Set, + SetIndex_t member) +{ + REQUIRE(member >= 0); + if (Set && (member < Set->size) && Set->data) + { + SetIndex_t word = member / SetBitSize; + SetData_t bit = (SetData_t)1 << (member % SetBitSize); + Set->data[word] &= (((SetData_t) - 1) ^ bit); + } +} /* RemoveFromSet() */ + + +/** + * Similar to RemoveFromSet except it shifts the Set. + */ +void DeleteSetMember(Set_pa Set, + SetIndex_t Member) +{ + SetIndex_t LastMember; + + REQUIRE(VALID_REF(Set)); + REQUIRE(Member >= 0); + + LastMember = GetPrevMember(Set, BAD_SET_VALUE); + if (Member <= LastMember) + { + ShiftSet(Set, Member + 1, LastMember, -1); + RemoveFromSet(Set, LastMember); + } +} + + +/** + * Similar to AddToSet except that if the new member is within the currently + * defined set the members are shifted accordingly. + */ +Boolean_t InsertSetMember(Set_pa Set, + SetIndex_t Member, + Boolean_t ShowErrMsg) +{ + Boolean_t IsOk = TRUE; + SetIndex_t OrigLastMember; + + REQUIRE(VALID_REF(Set)); + + /* first, determine if we need to shift the set */ + OrigLastMember = GetPrevMember(Set, BAD_SET_VALUE); + if (Member <= OrigLastMember) + { + IsOk = ExpandSet(Set, (OrigLastMember + 1) + 1, ShowErrMsg); + ShiftSet(Set, Member, OrigLastMember, 1); + } + + if (IsOk) + IsOk = AddToSet(Set, Member, ShowErrMsg); + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + +#if defined USE_FUNCTIONS_FOR_SETS +/* + */ +Boolean_t InSet(Set_pa Set, + SetIndex_t member) +{ + /* + * Sometimes InSet is called with negative numbers. This is not correct, but + * its what we have to work with. Maybe some day, we can make this assertion. + REQUIRE(member>=0); + */ + if (Set && (0 <= member && member < Set->size)) + { + SetIndex_t word = member / SetBitSize; + SetData_t bit = (SetData_t)1 << (member % SetBitSize); + return (Set->data[word]&bit) != 0; + } + else + return FALSE; +} /* InSet() */ +#endif + + +/* + */ +Boolean_t IsEmpty(Set_pa Set) +{ + if (Set && Set->data) + { + SetIndex_t set_size_in_words = Set->size / SetBitSize; + SetIndex_t word; + for (word = 0; word < set_size_in_words; word++) + if (Set->data[word] != 0) + return FALSE; + } + return TRUE; +} /* IsEmpty() */ + + +/* + */ +Boolean_t HasVoids(Set_pa Set) +{ + Boolean_t Result = FALSE; + SetIndex_t ContiguousMember = 0; + SetIndex_t Member = 0; + + REQUIRE(VALID_REF(Set)); + + /* look for voids in the set */ + ForAllMembersInSet(Member, Set) + { + if (Member == ContiguousMember) + { + ContiguousMember++; + } + else + { + Result = TRUE; + break; + } + } + + ENSURE(VALID_BOOLEAN(Result)); + return Result; +} + + +/* + */ +SetIndex_t MemberCount(Set_pa Set) +{ + SetIndex_t count = 0; + if (Set && Set->data) + { + SetIndex_t set_size_in_words = Set->size / SetBitSize; + SetIndex_t word; + for (word = 0; word < set_size_in_words; word++) + { + SetData_t word_val = Set->data[word]; + while (word_val) + { + if (word_val&1) + count++; + word_val = word_val >> 1; + } + } + } + return count; +} /* MemberCount() */ + + +/* + */ +SetIndex_t GetNextMember(Set_pa Set, + SetIndex_t start_at) +{ + SetIndex_t next_member = BAD_SET_VALUE; + if (Set && Set->data) + { + SetIndex_t set_size_in_words = Set->size / SetBitSize; + SetIndex_t word; + SetData_t word_val = 0; + int bit; + if (start_at == BAD_SET_VALUE) + { + word = 0; + bit = 0; + if (word < set_size_in_words) + word_val = Set->data[0]; + } + else if (start_at + 1 < Set->size) + { + word = (start_at + 1) / SetBitSize; + bit = (start_at + 1) % SetBitSize; + if (word < set_size_in_words) + word_val = Set->data[word] >> bit; + } + else + { + return BAD_SET_VALUE; + } + while ((word < set_size_in_words) && (word_val == 0)) + { + word++; + bit = 0; + if (word < set_size_in_words) + word_val = Set->data[word]; + } + if (word < set_size_in_words) + { + while (!(word_val&1)) + { + word_val >>= 1; + bit++; + } + next_member = word * SetBitSize + bit; + } + } + return next_member; +} /* GetNextMember() */ + + +/* + */ +SetIndex_t GetPrevMember(Set_pa Set, + SetIndex_t start_at) +{ + SetIndex_t next_member = BAD_SET_VALUE; + if (Set && Set->data) + { + SetIndex_t set_size_in_words = Set->size / SetBitSize; + SetIndex_t word; + SetData_t word_val = 0; + int bit; + if (start_at == BAD_SET_VALUE) + { + word = set_size_in_words - 1; + bit = SetBitSize - 1; + if (word >= 0) + word_val = Set->data[word]; + } + else if (start_at > 0) + { + word = (start_at - 1) / SetBitSize; + bit = (start_at - 1) % SetBitSize; + if (word >= 0) + word_val = Set->data[word] << (SetBitSize - bit - 1); + } + else + { + return BAD_SET_VALUE; + } + while ((word >= 0) && (word_val == 0)) + { + word--; + bit = SetBitSize - 1; + if (word >= 0) + word_val = Set->data[word] << (SetBitSize - bit - 1); + } + if (word >= 0) + { + while (!(word_val&SetLastBit)) + { + word_val <<= 1; + bit--; + } + next_member = word * SetBitSize + bit; + } + } + return next_member; +} /* GetPrevMember() */ + + +/* + */ +Boolean_t EqualSets(Set_pa set1, + Set_pa set2) +{ + SetIndex_t set1_size_in_words, + set2_size_in_words, + min_set_size_in_words, + ii; + if (!set1 || !set2) + return FALSE; + + set1_size_in_words = set1->size / SetBitSize; + set2_size_in_words = set2->size / SetBitSize; + min_set_size_in_words = MIN(set1_size_in_words, set2_size_in_words); + + for (ii = 0; ii < min_set_size_in_words; ii++) + if (set1->data[ii] != set2->data[ii]) + return FALSE; + for (ii = min_set_size_in_words; ii < set1_size_in_words; ii++) + if (set1->data[ii] != 0) + return FALSE; + for (ii = min_set_size_in_words; ii < set2_size_in_words; ii++) + if (set2->data[ii] != 0) + return FALSE; + + return TRUE; + +} /* EqualSets() */ + + +Boolean_t IsSubSet(Set_pa childset, + Set_pa parentset) +{ + SetIndex_t s; + + ForAllMembersInSet(s, childset) + { + if (!InSet(parentset, s)) + return (FALSE); + } + + return (TRUE); + +} /* IsSubSet() */ + + + + + + +/* + * functions added 11/7 by byron. These are roughed in for now and could + * stand to be optimized later..... + */ + +/* + * Return the number of members in a set that preceed a given member. + */ + +SetIndex_t MemberOffset(Set_pa Set, + SetIndex_t Member) +{ + SetIndex_t I; + SetIndex_t Offset = -1; + if (InSet(Set, Member)) + { + for (I = 0; I <= Member; I++) + { + if (InSet(Set, I)) + Offset++; + } + } + return (Offset); +} + +/* + * Return the position in the set of the nth member of a set. + */ +SetIndex_t OffsetMember(Set_pa Set, + SetIndex_t Offset) +{ + SetIndex_t I; + SetIndex_t Member = BAD_SET_VALUE; + for (I = 0; I <= Offset; I++) + { + Member = GetNextMember(Set, Member); + if (Member == BAD_SET_VALUE) + break; + } + return (Member); +} + +Boolean_t CopySetMember(Set_pa DstSet, + SetIndex_t DstOffset, + Set_pa SrcSet, + SetIndex_t SrcOffset) +{ + if (InSet(SrcSet, SrcOffset)) + return (AddToSet(DstSet, DstOffset, TRUE)); + else + RemoveFromSet(DstSet, DstOffset); + return (TRUE); +} + + + +/* + * Initial: + * v---ShiftPos1 v--ShiftPos2 + * +-------------------------------------+ + * | | | | | | | |x| | | | | | | |x| | | | + * +-------------------------------------+ + * + * Shift +2 + * v---ShiftPos1 v--ShiftPos2 + * +-------------------------------------+ + * | | | | | | | | | |x| | | | | | | |x| | + * +-------------------------------------+ + * + * + * Shift all bits between ShiftPos1 and ShiftPos2 + * by ShiftAmount. The bits that the shift + * replaces fill in the hole left by the shift + * + * + */ +void ShiftSet(Set_pa Set, + SetIndex_t ShiftPos1, + SetIndex_t ShiftPos2, + SetIndex_t ShiftAmount) +{ + Set_pa NewSet; + SetIndex_t DPos; + SetIndex_t SPos; + + if ((Set == NULL) || (IsEmpty(Set))) + return; + + NewSet = AllocSet(TRUE); + + if (NewSet == NULL) + return; + + if (!CopySet(NewSet, Set, TRUE)) + return; + + if (ShiftAmount < 0) + { + DPos = ShiftPos2; + SPos = ShiftPos1 - 1; + while (DPos > ShiftPos2 + ShiftAmount) + CopySetMember(NewSet, DPos--, Set, SPos--); + SPos = ShiftPos2; + while (SPos >= ShiftPos1) + CopySetMember(NewSet, DPos--, Set, SPos--); + } + else if (ShiftAmount > 0) + { + DPos = ShiftPos1; + SPos = ShiftPos2 + 1; + while (DPos < ShiftPos1 + ShiftAmount) + CopySetMember(NewSet, DPos++, Set, SPos++); + SPos = ShiftPos1; + while (SPos <= ShiftPos2) + CopySetMember(NewSet, DPos++, Set, SPos++); + } + CopySet(Set, NewSet, TRUE); + DeallocSet(&NewSet); +} + + + diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/stdafx.h b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/stdafx.h new file mode 100644 index 00000000000..066d102e7c7 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/stdafx.h @@ -0,0 +1,130 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#if !defined STDAFX_H_ +# define STDAFX_H_ + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ +/* + * stdafx.h : include file for standard system include files, + * or project specific include files that are used frequently, but + * are changed infrequently + * Used for Windows only + */ +#if defined _WIN32 + +/* + * Set NDEBUG before including "custafx.h" since that file may + * use NDEBUG. (In fact, for SmartHeap builds this is the case.) + * CAM 2007-04-11 + * + * Previous comment: "Note that _DEBUG is defined by the Windows compiler + * if any of the multi-threaded DLL runtime libraries are used." + */ +#if !defined _DEBUG +#if !defined NDEBUG +#define NDEBUG +#endif +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +#if !defined MSWIN +#define MSWIN +#endif + +#define ENGLISH_ONLY // remove to support non-english dll's + +#if !defined WINVER +#define WINVER 0x0500 +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined CHECKED_BUILD || defined _DEBUG && !defined COREAPI +#if defined _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES +#endif +#else +#endif +#endif /* TECPLOTKERNEL */ + +/* Windows builds are UNICODE */ +#pragma warning(disable : 4786) /* truncated identifiers in debug symbol table. */ +#pragma warning(disable : 4996) /* deprecated functions */ + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined UNICODE +#endif +#if !defined _AFXDLL +#endif +#if defined _M_IX86 +#else +#endif +#if defined _WIN64 +#if !defined _M_IA64 && !defined _M_AMD64 +#endif +#endif +#if !defined MSWIN +#endif +#if !defined THREED +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#endif /* _AFX_NO_AFXCMN_SUPPORT */ +#ifndef _AFX +#endif +#else /* !TECPLOTKERNEL */ +#define AfxIsValidAddress(ptr,bb) ((ptr)!=NULL) +#endif + +/* 64-bit adjustments */ +#if defined _M_IA64 || defined _M_AMD64 +#define WININT INT_PTR +#define WINUINT UINT_PTR +#else +#define WININT int +#define WINUINT UINT +#endif + +#define WINCALLBACK CALLBACK + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined (NDEBUG) +#else +#endif +#endif /* TECPLOTKERNEL */ +#endif /* _WIN32 */ + + +#endif /* STDAFX_H_ */ diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strlist.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strlist.cpp new file mode 100644 index 00000000000..ab34a5274c9 --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strlist.cpp @@ -0,0 +1,1065 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define STRLISTMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "STRUTIL.h" +#include "ALLOC.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "ARRLIST.h" +#include "STRLIST.h" + +/* END HEADER */ + +using namespace tecplot::strutil; + +/* + * This set of functions provide a wrapper around the array list utilities + * thereby making it aware of item allocation and deallocation. All strings + * given to the string list and returned to the client are copies. Therefore + * it is the client's responsibility to deallocate string results when no + * longer needed. + */ + + +/* + * Destructor for cleaning up string allocations. + * + * param ItemRef + * Reference to the string item to destroy. + * param ClientData + * Any client data needed for destroying the string. + * + * return + * TRUE is a requirement + */ +static Boolean_t StringListItemDestructor(void *ItemRef, + ArbParam_t ClientData) +{ + char **StringRef = (char **)ItemRef; + + REQUIRE(VALID_REF(StringRef)); + REQUIRE(VALID_REF(*StringRef) || *StringRef == NULL); + + if (*StringRef != NULL) + { + FREE_ARRAY(*StringRef, "string"); + *StringRef = NULL; + } + + ENSURE(*StringRef == NULL); + return TRUE; +} + +/* + * String item duplicator. + * + * param TargetItemRef + * Reference to the string list item to receive the duplicate. + * param SourceItemRef + * Reference to the string list item to duplicate. + * param ClientData + * Any client data required for duplication. + * + * return + * TRUE if the duplication was a success + * FALSE otherwise. If the duplication failed it + * is the client's responsibility to cleanup any + * partial duplication + */ +static Boolean_t StringListItemDuplicator(void *TargetItemRef, + void *SourceItemRef, + ArbParam_t ClientData) +{ + Boolean_t IsOk = TRUE; + char **TargetStringRef = (char **)TargetItemRef; + char **SourceStringRef = (char **)SourceItemRef; + + REQUIRE(VALID_REF(TargetStringRef)); + REQUIRE(VALID_REF(SourceStringRef)); + REQUIRE(VALID_REF(*SourceStringRef) || *SourceStringRef == NULL); + + if (*SourceStringRef != NULL) + IsOk = ((*TargetStringRef = DupString(dontTranslate(*SourceStringRef))) != NULL); + else + *TargetStringRef = NULL; + + ENSURE(VALID_REF(*TargetStringRef) || *TargetStringRef == NULL); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; +} + + +/* + * Determine if the string list handle and its members are sane. + */ +Boolean_t StringListValid(StringList_pa stringList) +{ + Boolean_t isValid = ArrayListIsValid((ArrayList_pa)stringList); + + if (isValid) + { + LgIndex_t stringCount = ArrayListGetCount((ArrayList_pa)stringList); + +#if defined PERFORM_EXPENSIVE_STRLIST_TESTS + { + for (LgIndex_t index = 0; index < stringCount; index++) + { + char *string = ArrayListGetCharPtr((ArrayList_pa)stringList, index); + if (string != NULL && !VALID_REF(string)) + { + isValid = FALSE; + break; + } + } +#else + { + /* Check first and last only */ + if (stringCount > 0) + { + char *string = ArrayListGetCharPtr((ArrayList_pa)stringList, 0); + if (string != NULL && !VALID_REF(string)) + { + isValid = FALSE; + } + } + if (isValid && stringCount > 1) + { + char *string = ArrayListGetCharPtr((ArrayList_pa)stringList, stringCount - 1); + if (string != NULL && !VALID_REF(string)) + { + isValid = FALSE; + } + } + } +#endif /* PERFORM_SKIP_EXPENSIVE_STRLIST_TESTS */ + } + + ENSURE(VALID_BOOLEAN(isValid)); + return isValid; + } + + + /* + * Remove all members of the string list. + */ + void StringListClear(StringList_pa StringList) + { + REQUIRE(StringListValid(StringList)); + + ArrayListDeleteAllItems((ArrayList_pa)StringList, StringListItemDestructor, 0); + + ENSURE(StringListValid(StringList) && StringListCount(StringList) == 0); + } + + + /* + * Remove 'Count' strings from the list beginning at the specified offset. + * The members following the items removed are shifted down accordingly to + * fill the vacated space. + */ + void StringListRemoveStrings(StringList_pa StringList, + LgIndex_t StringOffset, + LgIndex_t Count) + { + REQUIRE(StringListValid(StringList)); + REQUIRE(0 <= StringOffset && StringOffset <= StringListCount(StringList) - 1); + REQUIRE(1 <= Count && StringOffset + Count <= StringListCount(StringList)); + + ArrayListDeleteItems((ArrayList_pa)StringList, StringOffset, Count, + StringListItemDestructor, 0); + + ENSURE(StringListValid(StringList)); + } + + + /* + * Remove the string from the list at the specified offset. The members + * following the item removed are shifted down accordingly to fill the + * vacated space. + */ + void StringListRemoveString(StringList_pa StringList, + LgIndex_t StringOffset) + { + REQUIRE(StringListValid(StringList)); + REQUIRE(0 <= StringOffset && StringOffset <= StringListCount(StringList) - 1); + + ArrayListDeleteItems((ArrayList_pa)StringList, StringOffset, 1, + StringListItemDestructor, 0); + + ENSURE(StringListValid(StringList)); + } + + + /* + * Deallocate the string list members and handle and set the handle to NULL. + */ + void LIBCALL StringListDealloc(StringList_pa *StringList) + { + REQUIRE(VALID_REF(StringList)); + REQUIRE(*StringList == NULL || StringListValid(*StringList)); + + if (*StringList != NULL) + ArrayListDealloc((ArrayList_pa *)StringList, StringListItemDestructor, 0); + + ENSURE(*StringList == NULL); + } + + + /* + * Allocate a string list handle. A handle of NULL is + * returned if sufficient memory is not available. + */ + StringList_pa StringListAlloc(void) + { + StringList_pa Result; + + Result = (StringList_pa)ArrayListAlloc(0, ArrayListType_CharPtr, NULL, 0); + + ENSURE(Result == NULL || StringListValid(Result)); + return Result; + } + + + /* + * Append a copy of the string to the string list. The string list will be + * expanded to accommodate the additional item. A return value of TRUE + * indicates the operation was successful otherwise FALSE is returned + * indicating that sufficient memory was not available for the additional + * item. + */ + Boolean_t StringListAppendString(StringList_pa StringList, + const char *String) + { + Boolean_t IsOk; + + REQUIRE(StringListValid(StringList)); + REQUIRE(String == NULL || VALID_REF(String)); + + IsOk = StringListSetString(StringList, StringListCount(StringList), String); + + ENSURE(StringListValid(StringList)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; + } + + + /* + * Return the number of strings currently in the string list. + */ + LgIndex_t LIBCALL StringListCount(StringList_pa StringList) + { + LgIndex_t Result; + + REQUIRE(StringListValid(StringList)); + + Result = ArrayListGetCount((ArrayList_pa)StringList); + + ENSURE(Result >= 0); + return Result; + } + + + /* + * Return a copy of the string at the specified offset in the string list. + */ + char * LIBCALL StringListGetString(StringList_pa StringList, + LgIndex_t StringOffset) + { + char *Result; + const char *StringRef; + + REQUIRE(StringListValid(StringList)); + REQUIRE(0 <= StringOffset && StringOffset <= StringListCount(StringList) - 1); + + StringRef = StringListGetStringRef(StringList, StringOffset); + if (StringRef == NULL) + Result = NULL; + else + Result = DupString(dontTranslate(StringRef)); + + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; + } + + +#if !defined USE_MACROS_FOR_FUNCTIONS + /* + * Returns actual string at the specified offset in the string list. Do not + * attempt to free this string. Changing this string should be done with + * utmost caution. + */ + const char *StringListGetStringRef_FUNC(StringList_pa StringList, + LgIndex_t StringOffset) + { + const char *Result; + + REQUIRE(StringListValid(StringList)); + REQUIRE(0 <= StringOffset && StringOffset <= StringListCount(StringList) - 1); + + Result = StringListGetStringRef_MACRO(StringList, StringOffset); + + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; + } +#endif + + + /* + * Place a copy of the specified string at the specified offset. If the offset + * is beyond the end of the string list it is sized accordingly and the + * intervening string references between the last item of the original + * state and the last item of the new state are assigned NULL. If a string + * already exists at the specified location its resources are released. + * A return value of TRUE indicates the operation was successful otherwise + * FALSE is returned indicating that sufficient memory was not available + * for the additional item at the specified offset. + */ + Boolean_t StringListSetString(StringList_pa StringList, + LgIndex_t StringOffset, + const char *String) + { + Boolean_t IsOk; + ArrayListItem_u ItemCopy; + + REQUIRE(StringListValid(StringList)); + REQUIRE(StringOffset >= 0); + REQUIRE(String == NULL || VALID_REF(String)); + + if (String != NULL) + { + ItemCopy.CharPtr = DupString(dontTranslate(String)); + IsOk = (ItemCopy.CharPtr != NULL); + } + else + { + ItemCopy.CharPtr = NULL; + IsOk = TRUE; + } + + if (IsOk) + IsOk = ArrayListSetItem((ArrayList_pa)StringList, StringOffset, ItemCopy, + StringListItemDestructor, 0); + + ENSURE(StringListValid(StringList)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; + } + + + /* + * Insert a copy of the string into the string list at the specified offset. + * The string list will be expanded to accommodate the additional item. + * A return value of TRUE indicates the operation was successful otherwise + * FALSE is returned indicating that sufficient memory was not available + * for the additional item. + */ + Boolean_t StringListInsertString(StringList_pa StringList, + LgIndex_t StringOffset, + const char *String) + { + Boolean_t IsOk; + ArrayListItem_u ItemCopy; + + REQUIRE(StringListValid(StringList)); + REQUIRE(StringOffset >= 0); + REQUIRE(String == NULL || VALID_REF(String)); + + if (String != NULL) + { + ItemCopy.CharPtr = DupString(dontTranslate(String)); + IsOk = (ItemCopy.CharPtr != NULL); + } + else + { + ItemCopy.CharPtr = NULL; + IsOk = TRUE; + } + + if (IsOk) + IsOk = ArrayListInsertItem( + (ArrayList_pa)StringList, StringOffset, ItemCopy); + + ENSURE(StringListValid(StringList)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; + } + + + /* + * Return a handle to a duplicate of the specified string list and its contents. + * A handle of NULL is returned if sufficient memory is not available. + */ + StringList_pa StringListCopy(StringList_pa StringList) + { + StringList_pa Result; + + REQUIRE(StringListValid(StringList)); + + Result = (StringList_pa)ArrayListCopy((ArrayList_pa)StringList, + StringListItemDuplicator, 0); + + ENSURE(Result == NULL || + (StringListValid(Result) && + StringListCount(Result) == StringListCount(StringList))); + return Result; + } + + + + /* + * Append a copy of the contents of the source list to the target list. + * A return value of TRUE indicates the operation was successful otherwise + * FALSE is returned indicating that sufficient memory was not available + * for the request. + */ + Boolean_t StringListAppend(StringList_pa Target, + StringList_pa Source) + { + Boolean_t IsOk; + StringList_pa SourceCopy; + + REQUIRE(StringListValid(Target)); + REQUIRE(StringListValid(Source)); + + SourceCopy = StringListCopy(Source); + IsOk = (SourceCopy != NULL); + if (IsOk) + { + ArrayListAppend((ArrayList_pa)Target, (ArrayList_pa)SourceCopy); + /* deallocate the list but not the string items since Target now owns them */ + ArrayListDealloc((ArrayList_pa *)(void *)&SourceCopy, NULL, 0); + } + + ENSURE(StringListValid(Target)); + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; + } + + + + /* + * Return a new line, '\n', separated string representation of the string list. + * Caller is responsible for de-allocating the result. + */ + char *StringListToNLString(StringList_pa StringList) + { + char *Result; + int Count; + size_t Length = 0; + + REQUIRE(StringListValid(StringList)); + + /* determine the resulting new line, '\n', separated string length */ + Count = StringListCount(StringList); + if (Count >= 1) + { + int Index; + for (Index = 0, Length = strlen("\n") * (Count - 1); + Index < Count; + Index++) + { + char *String = ArrayListGetCharPtr((ArrayList_pa)StringList, Index); + if (String != NULL) + Length += strlen(String); + } + } + + /* create a new line, '\n', separated string */ + Result = ALLOC_ARRAY(Length + 1, char, "new line separated string"); + if (Result != NULL) + { + int Index; + for (Index = 0, strcpy(Result, ""); + Index < Count; + Index++) + { + char *String = ArrayListGetCharPtr( + (ArrayList_pa)StringList, Index); + + if (Index != 0) + strcat(Result, "\n"); + + if (String != NULL) + strcat(Result, String); + } + } + + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; + } + + + /* + * Create a string list from the new line, '\n', separated string. The string + * is copied and therefore owned and managed by the caller. + */ + StringList_pa StringListFromNLString(const char *String) + { + StringList_pa Result; + LgIndex_t StartIndex; + LgIndex_t EndIndex; + + REQUIRE(VALID_REF(String)); + + /* create the string list and scan the entire string */ + Result = StringListAlloc(); + for (StartIndex = EndIndex = 0; Result != NULL; EndIndex++) + { + /* end of sub-string ? */ + if (String[EndIndex] == '\n' || String[EndIndex] == '\0') + { + /* extract the sub-string and append it to the string list */ + LgIndex_t Length = EndIndex - StartIndex; + char *SubString = ALLOC_ARRAY(Length + 1, char, "sub string"); + if (SubString != NULL) + { + CopySubString(SubString, String, StartIndex, Length); + StringListAppendString(Result, SubString); + + FREE_ARRAY(SubString, "sub string"); + + if (String[EndIndex] != '\0') + StartIndex = EndIndex + 1; + else + break; /* nothing left to scan */ + } + else + { + /* memory allocation failure: bail out */ + StringListDealloc(&Result); + Result = NULL; + break; + } + } + } + + ENSURE(Result == NULL || StringListValid(Result)); + return Result; + } + + + /* + * Return a 'C' string array representation of the string list. + * Caller is responsible for de-allocating the result. + */ + char **StringListToArray(StringList_pa StringList) + { + char **Result; + + REQUIRE(StringListValid(StringList)); + + Result = (char **)ArrayListToArray((ArrayList_pa)StringList, + StringListItemDuplicator, 0); + + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; + } + + + + /* + * Create a string list from the 'C' string array. The string array + * is copied and therefore owned and managed by the caller. + */ + StringList_pa StringListFromArray(const char **StringArray, + LgIndex_t Count) + { + StringList_pa Result; + + REQUIRE((Count == 0 && StringArray == NULL) || + (Count >= 1 && VALID_REF(StringArray))); + + Result = (StringList_pa)ArrayListFromArray((void *)StringArray, + Count, ArrayListType_CharPtr, + StringListItemDuplicator, 0); + + ENSURE(Result == NULL || StringListValid(Result)); + return Result; + } + + + +#define ISJOINCHAR(c) ((c == ';') || (c == '+')) + + static void SkipWhiteSpaceOrComma(const char **CPtr) + { + REQUIRE(VALID_REF(CPtr) && VALID_REF(*CPtr)); + while (ISWHITESPACE(**CPtr) || (**CPtr == ',')) + (*CPtr)++; + } + + /* + * Obtain the next sub-string. This can be of the form: + * + * [del]any-character-sequence[del] + * + * or + * + * limited-character-sequence + * + * where a limited-character-sequence cannot contain + * any of the following characters: +;,<space> + * + */ + static Boolean_t GetNextSubString(const char **OriginalCPtr, + char **NextSubString) + { + Boolean_t IsOk = TRUE; + const char *CStart; + const char *CPtr; + char InsideDelimiter = '\0'; + + REQUIRE(VALID_REF(OriginalCPtr) && (VALID_REF(*OriginalCPtr))); + REQUIRE(VALID_REF(NextSubString)); + + *NextSubString = NULL; + + CPtr = *OriginalCPtr; + SkipWhiteSpaceOrComma(&CPtr); + + if (*CPtr == '"' || *CPtr == '\'') + { + InsideDelimiter = *CPtr; + CPtr++; + } + + CStart = CPtr; + + while (*CPtr && + ((InsideDelimiter && (*CPtr != InsideDelimiter)) || + (!InsideDelimiter && (*CPtr != ',') && + !ISJOINCHAR(*CPtr) && + !ISWHITESPACE(*CPtr)))) + { + if (InsideDelimiter && + (*CPtr == '\\') && + (*(CPtr + 1) == InsideDelimiter)) + CPtr += 2; + else + CPtr++; + } + + if (InsideDelimiter && (*CPtr != InsideDelimiter)) + IsOk = FALSE; + + + if (IsOk && CStart < CPtr) + { + size_t StrLen = (size_t)(CPtr - CStart); + *NextSubString = ALLOC_ARRAY(StrLen + 1, char, "GetNextSubString: NextSubString"); + if (*NextSubString) + { + char *NPtr = *NextSubString; + /* + * Don't just copy the string because escaped delimiters need to have + * the escape removed... + */ + while (CStart < CPtr) + { + if ((*CStart == '\\') && (*(CStart + 1) == InsideDelimiter)) + CStart++; + *NPtr++ = *CStart++; + } + *NPtr = '\0'; + } + else + IsOk = FALSE; + } + + if (IsOk) + { + if (InsideDelimiter) + CPtr++; + SkipWhiteSpaceOrComma(&CPtr); + *OriginalCPtr = CPtr; + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return IsOk; + } + + + + + /* + * Return a string list representation of a compound string. + * + * The compound String parameter has the following form: + * + * [del]<character-sequence>[del] [GroupJoinCharacter] [del]<character-sequence>[del] [GroupJoinCharacter] ..... + * or + * <nospace-character-sequence> <nospace-character-sequence> ... + * + * where: + * [del] is an optional single quote or a double quote. [del] must be used + * if <character-sequence> contains spaces, commas, or the plus symbol. + * + * GroupJoinCharacter can be either a "+" or a ";" + * + * The GroupJoinCharacter symbol is used to separate character sequences that + * are to be grouped together. If the GroupJoinCharacter symbol is omitted then + * a new group is started. + * + * Internally, the original string is converted to a list of strings where + * each string uses newlines to separate one sub-string from the next. + */ + StringList_pa StringListFromCompound(const char *String) + { + const char *CPtr; + StringList_pa Result; + Boolean_t IsOk = TRUE; + char *CurString = NULL; + + REQUIRE(VALID_REF(String)); + SkipWhiteSpaceOrComma(&String); + REQUIRE(!ISJOINCHAR(*String)); + + /* extract character sequences */ + Result = StringListAlloc(); + CPtr = String; + + while (IsOk && *CPtr != '\0') + { + char *NextSubString = NULL; + Boolean_t WantsToJoin = FALSE; + + if (ISJOINCHAR(*CPtr)) + { + WantsToJoin = TRUE; + CPtr++; + SkipWhiteSpaceOrComma(&CPtr); + } + + IsOk = GetNextSubString(&CPtr, + &NextSubString); + + if (IsOk) + { + /* + * Tack on the sub-string to the running string. + */ + if (WantsToJoin) + TackOnChar(&CurString, '\n'); + if (NextSubString != NULL && strlen(NextSubString) != 0) + IsOk = TackOnString(&CurString, NextSubString, FALSE, FALSE); + else if (CurString == NULL) + CurString = DupString(dontTranslate("")); + } + + if (NextSubString != NULL) + FREE_ARRAY(NextSubString, "StringListFromCompound: NextSubString"); + + /* + * If this is the end of processing or if the next character is + * not a join character then add the current string to the stringlist. + */ + + if (IsOk && !ISJOINCHAR(*CPtr)) + { + StringListAppendString(Result, CurString); + if (CurString != NULL) + FREE_ARRAY(CurString, "current string"); + CurString = NULL; + } + } + + if (CurString != NULL) + FREE_ARRAY(CurString, "current string"); + + if (!IsOk) + StringListDealloc(&Result); + + ENSURE(Result == NULL || StringListValid(Result)); + return Result; + } + + + /* + * Return a compound string representation of a string list. + * + * One common usage in Tecplot: + * The $!OpenLayout command in tecplot has the sub-option + * ALTDATALOADINSTRUCTIONS that has the form: + * '"instr-string1" [GroupJoinCharacter] "instr-string2" [+] ...' + */ + char *StringListToCompound(StringList_pa StringList, + char GroupJoinCharacter, + const char *CharsToEscape) + { + Boolean_t IsOk = TRUE; + LgIndex_t Index; + LgIndex_t Count; + char *Result = NULL; + + REQUIRE(StringListValid(StringList)); + REQUIRE(StringListCount(StringList) >= 1); + REQUIRE(ISJOINCHAR(GroupJoinCharacter)); + REQUIRE(VALID_REF(CharsToEscape)); + + for (Index = 0, Count = StringListCount(StringList), IsOk = TRUE; + Index < Count && IsOk; + Index++) + { + char *String = StringListGetString(StringList, Index); + + if (String != NULL && strlen(String) != 0) + { + char *CStart = NULL; + char *CEnd = NULL; + char *EscapedString = NULL; + const char *EscChar = NULL; + char *StrChar = NULL; + + /* First scan the string and escape any specified characters. */ + /* Note that the Escape sequence is a double backslash because */ + /* it the first escape escapes the escape for variable usage. */ + for (StrChar = String; *StrChar != '\0'; StrChar++) + { + for (EscChar = CharsToEscape; *EscChar != '\0'; EscChar++) + if (*StrChar == *EscChar) + { + IsOk = TackOnChar(&EscapedString, '\\'); + IsOk = TackOnChar(&EscapedString, '\\'); + break; + } + IsOk = TackOnChar(&EscapedString, *StrChar); + } + + CEnd = EscapedString; + while (IsOk && *CEnd != '\0') + { + int Len = 0; + char *TString; + + CStart = CEnd; + while (*CEnd != '\0' && *CEnd != '\n') + { + Len++; + if (*CEnd == '"') + Len++; + CEnd++; + } + + TString = ALLOC_ARRAY(Len + 4, char, "temp compound sub-string"); + if (TString != NULL) + { + char *TStr; + + /* prepend the new string with either */ + /* a space character or the plus symbol */ + if (CStart == EscapedString) + { + if (Index != 0) + IsOk = TackOnChar(&Result, ' '); + } + else + { + IsOk = TackOnChar(&Result, GroupJoinCharacter); + } + + /* stuff TString and append the new string */ + TStr = TString; + *TStr++ = '"'; + while (CStart != CEnd) + { + if (*CStart == '"') + *TStr++ = '\\'; + *TStr++ = *CStart++; + } + *TStr++ = '"'; + *TStr = '\0'; + + TackOnString(&Result, TString, FALSE, FALSE); + FREE_ARRAY(TString, "StringListToCompound"); + TString = NULL; + if (*CEnd) + CEnd++; + } + else + { + IsOk = FALSE; + } + } + + if (EscapedString != NULL) + FREE_ARRAY(EscapedString, "escaped string"); + } + else + { + /* a null pointer or length of zero indicates an empty sub-string */ + if (Index == 0) + TackOnString(&Result, "\"\"", FALSE, FALSE); + else + TackOnString(&Result, " \"\"", FALSE, FALSE); + } + + if (String != NULL) + FREE_ARRAY(String, "string list item"); + } + + if (!IsOk) + { + if (Result != NULL) + { + FREE_ARRAY(Result, "StringListToCompound"); + Result = NULL; + } + } + + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; + } + + + /** + * Holds the comparator function pointer. + */ + static StringListStringComparator_pf ComparatorFunction = NULL; + + + /** + * Forwards the comparison test to the 'Comparator' supplied to the + * 'StringListSort' function. + * + * param Item1 + * Item to compare against Item2. + * param Item2 + * Item to compare against Item1. + * param ClientData + * Contextual information that was passed to the 'ArrayListQSort' function. + * + * return + * -1: if Item1 is less than Item2 + * 0: if Item1 is equal to Item2 + * 1: if Item1 is greater than Item2 + */ + static int STDCALL ComparatorProxy(ArrayListItem_u Item1, + ArrayListItem_u Item2, + ArbParam_t ClientData) + { + /* forward the request */ + return ComparatorFunction(Item1.CharPtr, Item2.CharPtr, ClientData); + } + + + /** + * Compares two strings from a list string. Note that either string may be + * NULL as StringLists allow for NULL elements. + * + * param String1 + * String to compare against String2. + * param String2 + * String to compare against String1. + * param ClientData + * Contextual information that was passed to the 'StringListSort' function. + * + * return + * - A value less than zero if String1 is less than String2. + * - A value of zero if String1 is equal to String2. + * - A value greater than zero if String1 is greater than String2. + */ + static int STDCALL DefaultStrcmpComparator(const char *String1, + const char *String2, + ArbParam_t ClientData) + { + int Result = 0; /* ...quite compiler */ + + REQUIRE(VALID_REF(String1) || String1 == NULL); + REQUIRE(VALID_REF(String2) || String2 == NULL); + + if (String1 != NULL && String2 != NULL) + { + Result = strcmp(String1, String2); + if (Result < 0) + Result = -1; + else if (Result > 0) + Result = 1; + } + else if (String1 == NULL && String2 == NULL) + Result = 0; + else if (String1 == NULL) + Result = -1; + else if (String2 == NULL) + Result = 1; + else + CHECK(FALSE); + + ENSURE((Result == -1) || (Result == 0) || (Result == 1)); + return Result; + } + + /** + * Sorts the string list by repeatedly calling the 'Comparator' function until + * the list is in order. + * + * param StringList + * String list to sort. + * param Comparator + * Function called to compare two string list strings or NULL for the + * default sort. The default sorting handles NULL elements and uses the + * system's strcmp utility for comparing valid strings elements. + * param ClientData + * Contextual information that is passed along to the comparator function. + */ + void StringListSort(StringList_pa StringList, + StringListStringComparator_pf Comparator, + ArbParam_t ClientData) + { +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + REQUIRE(VALID_REF(StringList)); + REQUIRE(VALID_FN_REF(Comparator) || Comparator == NULL); + + /* set up for comparator proxy */ + if (Comparator != NULL) + ComparatorFunction = Comparator; + else + ComparatorFunction = DefaultStrcmpComparator; + + /* sort the array using the comparator proxy to forward */ + /* the comparison request to the supplied comparator */ + ArrayListQSort((ArrayList_pa)StringList, ComparatorProxy, ClientData); + + /* cleanup */ + ComparatorFunction = NULL; + } diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strutil.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strutil.cpp new file mode 100644 index 00000000000..9611722224d --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/strutil.cpp @@ -0,0 +1,936 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ + +#define STRUTILMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "ARRLIST.h" +#include "STRLIST.h" +#include "STRUTIL.h" +#include "ALLOC.h" + +#include "Q_MSG.h" + +#include <algorithm> +#include <cctype> // ...needed to find std::tolower and std::toupper +#include <limits.h> +#include "TranslatedString.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +using namespace std; +using namespace tecplot::strutil; + +#ifdef MSWIN +# pragma warning (disable : 4786) /* STL warning about trucated identifiers */ +#endif + +/* END HEADER */ + +/** + */ +#define INITIAL_FORMAT_BUFFER_SIZE 16384*3 +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +static char *FormatStringBuffer = NULL; +static int FormatStringBufferSize = INITIAL_FORMAT_BUFFER_SIZE; + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined MSWIN +#else +#endif /* !MSWIN */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +/** + * This should be one of the last functions called by Tecplot while mopping up. + */ +void FormatStringBufferCleanup(void) +{ + /* + * NOTE: We use free instead of FREE_ARRAY for the scratch buffer because in + * debug mode FREE_ARRAY uses ErrMsg which uses vFormatString causing + * infinite recursion. + */ + if (FormatStringBuffer != NULL) + free(FormatStringBuffer); + FormatStringBuffer = NULL; +} + +/** + */ +char *vFormatString(const char *Format, + va_list Arguments) +{ + char *Result = NULL; + + REQUIRE(VALID_REF(Format)); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + /* + * NOTE: We use malloc instead of ALLOC_ARRAY for the scratch buffer because + * in debug mode ALLOC_ARRAY uses ErrMsg which uses vFormatString + * causing infinite recursion. + */ + if (FormatStringBuffer == NULL) + FormatStringBuffer = (char *)malloc(FormatStringBufferSize); + + if (FormatStringBuffer != NULL) + { + Boolean_t TryAgain = FALSE; + do + { + /* + * Assign a value other than '\0' to the end of the buffer so that we + * can determine if the buffer needs to be expanded. If after we call + * vsnprintf the end of the buffer has a '\0' we need to expand it. + */ + FormatStringBuffer[FormatStringBufferSize - 1] = (char)!'\0'; + +# if defined MSWIN + memset(FormatStringBuffer, 0, FormatStringBufferSize - 1); + + TryAgain = + _vsnprintf(FormatStringBuffer, + FormatStringBufferSize, + Format, + Arguments) == -1; +# elif defined IRIX62 + vsprintf(FormatStringBuffer, + Format, + Arguments); + CHECK(strlen(FormatStringBuffer) < FormatStringBufferSize); +# else + vsnprintf(FormatStringBuffer, + FormatStringBufferSize, + Format, + Arguments); +# endif + +#ifndef MSWIN + TryAgain = (FormatStringBuffer[FormatStringBufferSize - 1] == '\0'); +#endif + if (TryAgain) + { + /* + * Reallocate the buffer and try again. + * + * NOTE: We use malloc/free instead of ALLOC/FREE_ARRAY for the + * scratch buffer because in debug mode ALLOC/FREE_ARRAY + * uses ErrMsg which uses vFormatString causing infinite + * recursion. + */ + free(FormatStringBuffer); + FormatStringBufferSize += MAX(1, FormatStringBufferSize / 2); + FormatStringBuffer = (char *)malloc(FormatStringBufferSize); + TryAgain = (FormatStringBuffer != NULL); + if (!TryAgain) + FormatStringBufferSize = INITIAL_FORMAT_BUFFER_SIZE; + } + } + while (TryAgain); + + if (FormatStringBuffer != NULL) + Result = DupString(dontTranslate(FormatStringBuffer)); + } + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + +/** + */ +char *FormatString(TranslatedString Format, + ...) /* 0 or more variable arguments */ +{ + REQUIRE(!Format.isNull()); + + va_list Arguments; + va_start(Arguments, Format); + char *Result = vFormatString(Format.c_str(), Arguments); + va_end(Arguments); + + ENSURE(VALID_REF(Result) || Result == NULL); + return Result; +} + +/** + */ +int FormatString(string& Buffer, + TranslatedString Format + ...) /* 0 or more variable arguments */ +{ + REQUIRE(!Format.isNull()); + + va_list Arguments; + va_start(Arguments, Format); + char *FormattedString = vFormatString(Format.c_str(), Arguments); + va_end(Arguments); + + int Result; + if (FormattedString != NULL) + { + Buffer.assign(FormattedString); + Result = (int)Buffer.size(); + FREE_ARRAY(FormattedString, "FormattedString"); + } + else + Result = -1; + + + ENSURE(Result == -1 || Result >= 0); + return Result; +} + +/** + * Returns a duplicate of the string or NULL if sufficient memory is not + * available. + * + * NOTE: This function was created because ResetString(...) does not + * duplicate zero length strings but returns NULL instead. + */ +char *DupString(TranslatedString String) +{ + REQUIRE(VALID_TRANSLATED_STRING(String)); + + char *Result = ALLOC_ARRAY(strlen(String.c_str()) + 1, char, "duplicate string"); + if (Result != NULL) + strcpy(Result, String.c_str()); + + ENSURE(Result == NULL || (VALID_REF(Result) && strcmp(Result, String.c_str()) == 0)); + return Result; +} + + +/* + * Copy up to 'Count' characters from the 'Source' string beginning at + * position 'Index' to the 'Target' string. The actual number of characters + * copied may be less than 'Count' if a '\0' was encountered in the + * 'Source' string before 'Count' characters were copied. + * + * NOTE: The 'Target' and 'Source' strings may overlap. + */ +void CopySubString(char *Target, + const char *Source, + int Index, + int Count) +{ + LgIndex_t Length = 0; + + REQUIRE(VALID_REF(Target)); + REQUIRE("Target string is sized to accommodate a string who's length " + "is at least MIN(strlen(&Source[Index]), Count) characters."); + REQUIRE(VALID_REF(Source)); + REQUIRE(0 <= Index && Index <= (LgIndex_t)strlen(Source)); + REQUIRE(Count >= 0); + + Length = MIN((LgIndex_t)strlen(&Source[Index]), Count); + memmove(Target, &Source[Index], Length); + Target[Length] = '\0'; + + ENSURE(VALID_REF(Target) && (LgIndex_t)strlen(Target) == Length); +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + +/* + * Remove any leading white space from the string and return + * a reference to it. NOTE: The input string is modified. + */ +char *StringFlushLeft(char *String) +{ + char *Result = String; + char *Start = String; + + REQUIRE(VALID_REF(String)); + + /* move the substring beginning at the first non-whitespace */ + /* character to the head of the string */ + while (isspace(*Start)) + Start++; + if (Start != String) + memmove(String, Start, strlen(Start) + 1); + + ENSURE(VALID_REF(Result) && Result == String); + return Result; +} + + +/* + * Remove any trailing white space from the string and return + * a reference to it. NOTE: The input string is modified. + */ +static char *StringFlushRight(char *String) +{ + char *Result = String; + char *End = NULL; + + REQUIRE(VALID_REF(String)); + + for (End = EndOfString(String); End != String && isspace(End[-1]); End--) + End[-1] = '\0'; + + ENSURE(VALID_REF(Result) && Result == String); + return Result; +} + + +/* + * Remove any leading and trailing white space from the string + * and return a reference to it. The return value is not + * absolutely necessary since the input string is modified + * but it is convenient sometimes. + * NOTE: The input string is modified but no memory is + * allocated nor deallocated. + */ +char *TrimLeadAndTrailSpaces(char *String) +{ + REQUIRE((String == NULL) || VALID_REF(String)); + if (String) + return (StringFlushLeft(StringFlushRight(String))); + else + return String; +} + + +/* + * If the specified string is longer than the maximum specified length + * truncate it and return a reference to it. + * + * String + * String to truncate if necessary. + * MaxLength + * Length at which to truncate the specified string if exceeded. + * + * Return + * Reference to the input string. + */ + +// Okay for UTF-8 +char *StringTruncate(char *String, + LgIndex_t MaxLength) +{ + REQUIRE(VALID_REF(String)); + REQUIRE(MaxLength >= 0); + + if ((LgIndex_t)strlen(String) > MaxLength) + String[MaxLength] = '\0';/* UTF8_SetAt(String,'\0',MaxLength); */ + + ENSURE(VALID_REF(String)); + ENSURE((LgIndex_t)strlen(String) <= MaxLength); + return String; +} + + +/* + * Trim and truncate the specified string such that its trimmed length + * does not exceed the specified length and return a reference to it. + * + * String + * String to trim and truncate if necessary. + * MaxLength + * Length at which to truncate the trimmed string if exceeded. + * + * Return + * Reference to the input string. + */ +char *StringTrimAndTruncate(char *String, + LgIndex_t MaxLength) +{ + REQUIRE(VALID_REF(String)); + REQUIRE(MaxLength >= 0); + + TrimLeadAndTrailSpaces(String); + StringTruncate(String, MaxLength); + + ENSURE(VALID_REF(String)); + ENSURE((LgIndex_t)strlen(String) <= MaxLength); + return String; +} + +/** + */ + +#ifndef MSWIN +StringList_pa LineBreakString(const char *String, + UInt32_t WrapMargin) +{ + REQUIRE(VALID_REF(String)); + + StringList_pa Result = StringListAlloc(); + if (Result != NULL) + { + Boolean_t IsOk = TRUE; + if (strlen(String) > WrapMargin) + { + char *StringCopy = DupString(dontTranslate(String)); + IsOk = (StringCopy != NULL); + if (IsOk) + { + char *CPtr = StringCopy; + char *SubString = StringCopy; + UInt32_t SubStringLen = 0; + while (*CPtr != '\0' && IsOk) + { + while (*CPtr != '\0' && SubStringLen < WrapMargin) + { + /* look for a hard break */ + if (*CPtr == '\n') + { + *CPtr = '\0'; /* replace the newline */ + CPtr++; + break; + } + + CPtr++; + SubStringLen++; + } + + /* + * If we didn't find a hard break or the end of the string + * then we need to back up and find the closest space. + */ + if (*CPtr != '\0' && SubStringLen == WrapMargin) + { + /* find the closes space from the right */ + if (*CPtr != ' ') + { + while (CPtr != SubString && *CPtr != ' ') + CPtr--; + if (*CPtr != ' ') + { + /* + * Bummer, this line will exceed the wrap margin. + * Search forward for the next space or newline. + */ + while (*CPtr != '\0' && *CPtr != ' ' && *CPtr != '\n') + CPtr++; + while (*CPtr != '\0' && *CPtr == ' ') + CPtr++; /* skip over the white space */ + } + } + + if (*CPtr != '\0') + { + *CPtr = '\0'; + CPtr++; + } + StringFlushRight(SubString); + } + + IsOk = StringListAppendString(Result, SubString); + SubString = CPtr; + SubStringLen = 0; + } + + FREE_ARRAY(StringCopy, "StringCopy"); + } + } + else + IsOk = StringListAppendString(Result, String); + + if (!IsOk) + StringListDealloc(&Result); + } + + ENSURE(Result == NULL || VALID_REF(Result)); + return Result; +} +#endif + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif /* TECPLOTKERNEL */ + + +/** + * Lexicographically compares, at most, the first 'Len' characters of + * s1 and s2. + * + * param s1 + * First string or NULL. + * param s2 + * Second string or NULL. + * param Len + * Maximum number of characters to compare. + * return + * Integer value greater than, equal to, or less than zero according + * to whether the first 'Len' characters of 's1' are greater than, + * equal to, or less than 's2'. + */ + +// Okay for UTF-8 +int ustrncmp(const char *s1, + const char *s2, + size_t Len) +{ + REQUIRE((s1 == NULL) || VALID_REF(s1)); + REQUIRE((s2 == NULL) || VALID_REF(s2)); + REQUIRE(Len >= 0); + + char *t1; + char *t2; + char ct1; + char ct2; + size_t I = 0; + if ((s1 == NULL) && (s2 == NULL)) + return 0; + if (s1 == NULL) + return -1; + else if (s2 == NULL) + return 1; + + t1 = (char*)s1; + t2 = (char*)s2; + + while (*t1 && *t2 && (I < Len)) + { + ct1 = CAPITAL(*t1); + ct2 = CAPITAL(*t2); + if (ct1 != ct2) + return (ct1 - ct2); + t1++; + t2++; + I++; + } + if ((I == Len) || + ((*t1 == '\0') && (*t2 == '\0'))) + return 0; + else + return CAPITAL(*t1) - CAPITAL(*t2); + + +} + + +/** + * Lexicographically compares the characters of s1 and s2. + * + * param s1 + * First string or NULL. + * param s2 + * Second string or NULL. + * return + * Integer value greater than, equal to, or less than zero according to + * whether the characters of 's1' are greater than, equal to, or less + * than 's2'. + */ +int ustrcmp(const char *s1, + const char *s2) +{ + REQUIRE((s1 == NULL) || VALID_REF(s1)); + REQUIRE((s2 == NULL) || VALID_REF(s2)); + + return (ustrncmp(s1, s2, INT_MAX)); +} + + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if !defined NO_ASSERTS && defined DEBUG_ALLOC +#endif +#endif /* TECPLOTKERNEL */ + + +/* + * The problem with passing file names for release builds is that + * the full path name is used (i.e., c:\user\craig\v7.5\tecplot\alloc.c) + */ + +// Okay for UTF-8 + +#if !defined NO_ASSERTS +Boolean_t InternalResetString(char **SBase, + const char *NewString, + Boolean_t IssueErrMsg, + const char *FileName, + int LineNumber) +#else +Boolean_t InternalResetString(char **SBase, + const char *NewString, + Boolean_t IssueErrMsg) +#endif +{ + REQUIRE(VALID_REF(SBase)); + REQUIRE(*SBase == NULL || VALID_REF(*SBase)); + REQUIRE(NewString == NULL || VALID_REF(NewString)); + REQUIRE(IMPLICATION(VALID_REF(*SBase), *SBase != NewString)); /* Prevent calling with same string. */ + REQUIRE(VALID_BOOLEAN(IssueErrMsg)); + REQUIRE(VALID_NON_ZERO_LEN_STR(FileName)); + REQUIRE(LineNumber >= 1); + + if (*SBase) + { +#if !defined NO_ASSERTS && defined DEBUG_ALLOC + char S[80+1]; + MakeDebugRecord(FileName, LineNumber, "releasing", *SBase, S, 80); + FREE_ARRAY(*SBase, S); +#else + FREE_ARRAY(*SBase, ""); +#endif + } + if (NewString == NULL) + { + *SBase = NULL; + return (TRUE); + } + else + { +#if !defined NO_ASSERTS && defined DEBUG_ALLOC + char S[80+1]; + MakeDebugRecord(FileName, LineNumber, "duplicating", NewString, S, 80); + *SBase = ALLOC_ARRAY(strlen(NewString) + 1, char, S); +#else +# if defined MSWIN && defined _DEBUG && !defined(MAKEARCHIVE) && !defined(NO_ASSERTS) + /* Allow the MFC memory leak detection to report the leak at the + * calling programs location, and not here (which is fairly useless). + * But first, we have to turn off the preprocessor definition of new + * and get to the original. */ +# undef new + *SBase = new(FileName, LineNumber) char[strlen(NewString)+1]; +# define new DEBUG_NEW +# else + *SBase = ALLOC_ARRAY(strlen(NewString) + 1, char, ""); +# endif +#endif + if (*SBase) + { + strcpy(*SBase, NewString); + return (TRUE); + } + else + { + if (IssueErrMsg) + ErrMsg(translate("Out of memory")); + return (FALSE); + } + } +} + + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + + +/* + * Unfortunately, this routine uses the interface of DeleteStringToAdd + * forcing StringToAdd to be non-const. Another copy of this routine + * for const char *'s is below. Eventually we should get rid of + * the two routines and DeleteStringToAdd, always using the const version + * and deleting the string if necessary in the code that calls TackOnString. + */ +Boolean_t TackOnString(char **SBase, + const char *StringToAdd, + Boolean_t DeleteStringToAdd, + Boolean_t ConvertNewlinesToAscii) +{ + size_t CurLen; + size_t NewLen; + int NumNewlines = 0; + char *NewString; + const char *CPtr = StringToAdd; + Boolean_t IsOk = TRUE; + + REQUIRE(VALID_REF(SBase)); + REQUIRE((StringToAdd == NULL) || VALID_REF(StringToAdd)); + REQUIRE(VALID_BOOLEAN(DeleteStringToAdd)); + REQUIRE(VALID_BOOLEAN(ConvertNewlinesToAscii)); + + if ((StringToAdd == NULL) || + (*StringToAdd == '\0')) + { + if (StringToAdd && + (*StringToAdd == '\0') && + DeleteStringToAdd) + { + char *TMP = (char *)StringToAdd; + FREE_ARRAY(TMP, "empty string to add"); + } + } + else + { + + if (*SBase == NULL) + CurLen = 0; + else + CurLen = strlen(*SBase); + + while (*CPtr) + if (*CPtr++ == '\n') + NumNewlines++; + + NewLen = CurLen + strlen(StringToAdd) + 1 + NumNewlines; + + NewString = ALLOC_ARRAY(NewLen, char, StringToAdd); + + if (NewString == NULL) + { + if (DeleteStringToAdd) + { + char *TMP = (char *)StringToAdd; + FREE_ARRAY(TMP, StringToAdd); + } + IsOk = FALSE; + } + else + { + if (*SBase) + { + strcpy(NewString, *SBase); + FREE_ARRAY(*SBase, (CurLen > 0 ? *SBase : "previous text")); + } + else + *NewString = '\0'; + + { + char *NPtr = EndOfString(NewString); + const char *APtr = StringToAdd; + while (*APtr) + { + if ((*APtr == '\n') && ConvertNewlinesToAscii) + { + *NPtr++ = '\\'; + *NPtr++ = 'n'; + } + else + *NPtr++ = *APtr; //UTF8_AssignAndIncrement(&NPtr,(char**)&APtr,TRUE,FALSE); //*NPtr++ = *APtr; + APtr++; + } + *NPtr = '\0'; + } + + if (DeleteStringToAdd) + { + char *TMP = (char *)StringToAdd; + FREE_ARRAY(TMP, StringToAdd); + } + + *SBase = NewString; + } + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return (IsOk); +} + + +/* + * See TackOnString for discussion. + */ + +// Okay for UTF-8 +Boolean_t TackOnConstString(char **SBase, + const char *StringToAdd, + Boolean_t ConvertNewlinesToAscii) +{ + size_t CurLen; + size_t NewLen; + int NumNewlines = 0; + char *NewString; + const char *CPtr = StringToAdd; + Boolean_t IsOk = TRUE; + + REQUIRE(VALID_REF(SBase)); + REQUIRE((StringToAdd == NULL) || VALID_REF(StringToAdd)); + REQUIRE(VALID_BOOLEAN(ConvertNewlinesToAscii)); + + if ((StringToAdd != NULL) && + (*StringToAdd != '\0')) + { + if (*SBase == NULL) + CurLen = 0; + else + CurLen = strlen(*SBase); + + while (*CPtr) + if (*CPtr++ == '\n') + NumNewlines++; + + NewLen = CurLen + strlen(StringToAdd) + 1 + NumNewlines; + + NewString = ALLOC_ARRAY(NewLen, char, StringToAdd); + + if (NewString == NULL) + { + IsOk = FALSE; + } + else + { + if (*SBase) + { + strcpy(NewString, *SBase); + FREE_ARRAY(*SBase, (CurLen > 0 ? *SBase : "previous text")); + } + else + *NewString = '\0'; + + { + char *NPtr = EndOfString(NewString); + const char *APtr = StringToAdd; + while (*APtr) + { + if ((*APtr == '\n') && ConvertNewlinesToAscii) + { + *NPtr++ = '\\'; + *NPtr++ = 'n'; + } + else + *NPtr++ = *APtr; // UTF8_AssignAndIncrement(&NPtr,(char**)&APtr,TRUE,FALSE); + APtr++; + } + *NPtr = '\0'; + } + *SBase = NewString; + } + } + + ENSURE(VALID_BOOLEAN(IsOk)); + return (IsOk); +} + + +// Okay for UTF-8 +Boolean_t TackOnChar(char **SBase, + char CharToAdd) +{ + REQUIRE(VALID_REF(SBase)); + + char S[2]; + S[0] = CharToAdd; + S[1] = '\0'; + + return (TackOnString(SBase, S, FALSE, FALSE)); +} + + + +/** + * Converts all one character new line characters in the allocated string + * to a two character "\n" sequence. + * + * param String + * String to scan and convert if necessary. Note that the string will + * be reallocated if any new line characters are discovered. + * + * return + * TRUE if the request was successfull, FALSE otherwise. + */ + +// Okay for UTF-8 +Boolean_t ReplaceNewlineWithBackslashN(char **String) +{ + size_t I; + LgIndex_t NewlineCount; + size_t Length; + char *Replacement; + + REQUIRE(VALID_REF(String)); + REQUIRE(VALID_REF(*String)); + + /* count how many new line character are present */ + NewlineCount = 0; + Length = strlen(*String); + for (I = 0; I < Length; I++) + if ((*String)[I] == '\n') + NewlineCount++; + + if (NewlineCount != 0) + { + /* allocate a new string and convert */ + Replacement = ALLOC_ARRAY(Length + NewlineCount + 1, char, + "replacement string"); + if (Replacement != NULL) + { + size_t J; + for (I = J = 0; I < Length + 1; I++, J++) + { + if ((*String)[I] == '\n') + { + Replacement[J] = '\\'; + J++; + Replacement[J] = 'n'; + } + else + { + Replacement[J] = (*String)[I]; + } + } + + /* sanity check */ + CHECK(I == Length + 1); + CHECK(J == Length + NewlineCount + 1); + } + + /* release the old string and record the new one */ + FREE_ARRAY(*String, "original string"); + *String = Replacement; + } + + ENSURE(*String == NULL || VALID_REF(*String)); + return (*String != NULL); +} + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined TECPLOTKERNEL +#if !defined NO_ASSERTS +#endif /* !NO_ASSERTS */ +#endif /*TECPLOTKERNEL*/ +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tassert.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tassert.cpp new file mode 100644 index 00000000000..75b3586225c --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tassert.cpp @@ -0,0 +1,261 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" +#define TECPLOTENGINEMODULE + +/* +***************************************************************** +***************************************************************** +******* ******** +****** Copyright (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +***************************************************************** +***************************************************************** +*/ + +#define TASSERTMODULE +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined (MSWIN) +#endif +#endif + +#include "STRUTIL.h" + +using namespace tecplot::strutil; +using namespace std; + +#define MAX_ERRMSG_LENGTH 2096 + +/* the mopup from assert and the writing out of crash.lay are */ +/* used by TUASSERT and thus are needed even if NO_ASSERTS */ +/* is set */ +#if !defined NO_TU_ASSERTS || !defined NO_ASSERTS + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined MSWIN /* ...Unix/Linux calls this via signal handlers */ +#endif +#endif /* TECPLOTKERNEL */ + +#endif /* Mopup function needed ... */ + + + +#if !defined STD_ASSERTS +/* + * Define the final assertion notification function. + */ +#if defined UNIXX && !defined NO_ASSERTS +/******************************************************************* + * * + * UNIX * + * * + *******************************************************************/ + + +# if defined NDEBUG +/* + * if NDEBUG is defined __assert is NOT defined so we must supply + * our own assertion notification function..... + */ +# define ASSERT assert +static void UnixAssert(const char *expression, + const char *file_name, + int line) +{ + fprintf(stderr, "Assertion: %s\n" + "Tecplot version: %s\n" + "File Name: %s\n" + "Line Number: %d\n", + expression, TecVersionId, file_name, line); + exit(ExitCode_AssertionFailure); +} +static TAssertFailureNotifyFunc assert_failure_notify = UnixAssert; +# else +/* + * NDEBUG is not defined so __assert is available.... + */ +# if defined LINUX +# define LOWLEVELASSERTFUNCTION __linuxassertproxy +/* + * In linux, __assert does not exist but rather + * __assert_fail which has a differnt API. Thus + * a proxy is provided + */ +static void __linuxassertproxy(const char *__assertion, + const char *__file, + int __line) +{ + __assert_fail(__assertion, __file, __line, __ASSERT_FUNCTION); +} +# elif defined DARWIN +# define LOWLEVELASSERTFUNCTION __darwinassertproxy +/* + * In Darwin (Mac OS X), __assert is #defined to a call to __eprintf, + * which also has a different API. Another proxy... + */ +static void __darwinassertproxy(const char *__assertion, + const char *__file, + int __line) +{ + __eprintf("Assertion: %s\n" + "Tecplot version: %s\n" + "File Name: %s\n" + "Line Number: %d\n", + __assertion, TecVersionId, __file, (unsigned)__line); +} +# else +# define LOWLEVELASSERTFUNCTION __assert +# endif + +static TAssertFailureNotifyFunc assert_failure_notify = (TAssertFailureNotifyFunc) LOWLEVELASSERTFUNCTION; + +# endif +#endif /* UNIXX */ + +#if defined UNIXX && !defined NO_ASSERTS +/* + * Replace the current assert failure notification function and + * return the current one. + * + * Assumptions: + * new function points to valid function (not null) that + * conforms to the specified prototype + * + * Guarantees: + * result is a pointer to the previously installed + * function (not null) + */ +TAssertFailureNotifyFunc InstallTAssertFailureNotify( + TAssertFailureNotifyFunc new_function) /* new notification function */ +{ + TAssertFailureNotifyFunc result = 0; /* old function address */ + + ASSERT(new_function != 0); + + result = assert_failure_notify; + assert_failure_notify = new_function; + + ASSERT(result != 0); + return result; +} + + + + + + +/* + * Perform the installed assert failure notification action. + */ +void TAssert(const char *expression, /* text representation of the assertion */ + const char *file_name, /* name of the file containing the assertion */ + int line) /* line number in the file of the assertion */ +{ + static Boolean_t InTAssert = FALSE; +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + char Message[MAX_ERRMSG_LENGTH+1]; + ASSERT(expression != 0 && strlen(expression) != 0); + ASSERT(file_name != 0 && strlen(file_name) != 0); + ASSERT(line >= 1); + + /* check for recursion */ + if (InTAssert) + { + fprintf(stderr, "Already in assert!\n"); + fprintf(stderr, "Assertion: %s\n" + "Tecplot version: %s\n" + "File Name: %s\n" + "Line Number: %d\n", + expression, TecVersionId, file_name, line); + PrintCurBacktrace(stderr, 100); + ASSERT(FALSE); /*... really exit */ + } + + InTAssert = TRUE; + + sprintf(Message, "Assertion: %s\n" + "Tecplot version: %s\n" + "File Name: %s\n" + "Line Number: %d\n", + expression, TecVersionId, file_name, line); + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +# if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +# else + fprintf(stderr, "%s", Message); +# endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + (*assert_failure_notify)(expression, file_name, line); +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif + + InTAssert = FALSE; /* just in case assert_failure_notify has an ignore */ +} +#endif /* defined UNIXX && !defined NO_ASSERTS */ +#endif /* STD_ASSERTS */ + + +#if defined MSWIN && defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#if defined CHECKED_BUILD +#endif +#if !defined ENGINE +# if defined CHECKED_BUILD +# endif // CHECKED_BUILD +#endif //!ENGINE +#endif /* MSWIN */ + + +#if defined NICE_NOT_IMPLEMENTED +static Boolean_t NotImplementedCalled = FALSE; +void NiceNotImplemented(void) +{ + if (!NotImplementedCalled) + { + Warning("Not Implemented!"); + NotImplementedCalled = TRUE; + } +} +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tecxxx.cpp b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tecxxx.cpp new file mode 100644 index 00000000000..dbace9f91fb --- /dev/null +++ b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio/tecsrc/tecxxx.cpp @@ -0,0 +1,4812 @@ +/* + * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM + * + * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide. + * + * Tecplot hereby grants OpenCFD limited authority to distribute without + * alteration the source code to the Tecplot Input/Output library, known + * as TecIO, as part of its distribution of OpenFOAM and the + * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby + * granted access to the TecIO source code, and may redistribute it for the + * purpose of maintaining the converter. However, no authority is granted + * to alter the TecIO source code in any form or manner. + * + * This limited grant of distribution does not supersede Tecplot, Inc.'s + * copyright in TecIO. Contact Tecplot, Inc. for further information. + * + * Tecplot, Inc. + * 3535 Factoria Blvd, Ste. 550 + * Bellevue, WA 98006, USA + * Phone: +1 425 653 1200 + * http://www.tecplot.com/ + * + */ +#include "stdafx.h" +#include "MASTER.h" + +#define TECPLOTENGINEMODULE + +/* +****************************************************************** +****************************************************************** +******* ******** +****** (C) 1988-2008 Tecplot, Inc. ******* +******* ******** +****************************************************************** +****************************************************************** +*/ +/* Source file revision $Revision: 7627 $ */ + +#include "GLOBAL.h" +#include "TASSERT.h" +#include "Q_UNICODE.h" +#include "SYSTEM.h" +#include "FILESTREAM.h" +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +#include "DATAIO4.h" +#include "DATASET0.h" +#include "TECXXX.h" +#include "DATAUTIL.h" +#include "ALLOC.h" +#include <vector> + +#if !defined MAKEARCHIVE +#include "AUXDATA.h" +#endif /* MAKEARCHIVE */ + +#if defined MSWIN +#include <io.h> +#endif + +#if defined UNIXX +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif +using namespace std; + +#if defined MAKEARCHIVE + #if defined MSWIN && defined _DEBUG +/* For debug .dll builds, send debug info to debug window. */ + #define PRINT0(s) do { OutputDebugString(s); } while (0) + #define PRINT1(s,a1) do { char buffer[512]; sprintf(buffer,s,a1); OutputDebugString(buffer); } while (0) + #define PRINT2(s,a1,a2) do { char buffer[512]; sprintf(buffer,s,a1,a2); OutputDebugString(buffer); } while (0) + #else +/* For all other builds (including release .dll), send debug info to stdout. */ + #define PRINT0(s) printf(s) + #define PRINT1(s,a1) printf(s,a1) + #define PRINT2(s,a1,a2) printf(s,a1,a2) +#endif +#else + #if defined MSWIN +/* For nonarchive, Windows, don't send debug info. */ + #define PRINT0(s) ((void)0) + #define PRINT1(s,a1) ((void)0) + #define PRINT2(s,a1,a2) ((void)0) + #else +/* For nonarchive, nonwindows, send debug info to stdout. */ + #define PRINT0(s) printf(s) + #define PRINT1(s,a1) printf(s,a1) + #define PRINT2(s,a1,a2) printf(s,a1,a2) + #endif +#endif + +typedef char *FNameType; +typedef FILE *FilePtr; + +#define MaxNumFiles 10 +#define MAX_DUPLIST_VARS 50 /* maybe crank up in the future */ + +#define BYTES_PER_CHUNK 4096 +#define TECIO_NO_NEIGHBORING_ELEM 0 +#define TECIO_NO_NEIGHBORING_ZONE 0 + +#if defined MAKEARCHIVE +static LgIndex_t DebugLevel[MaxNumFiles] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif +static INTEGER4 IsOpen[MaxNumFiles] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +static INTEGER4 NumErrs[MaxNumFiles] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +static INTEGER4 NumVars[MaxNumFiles]; +static FNameType DestFName[MaxNumFiles] = {NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + }; +static FNameType BlckFName[MaxNumFiles] = {NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + }; +static FileStream_s* BlckFile[MaxNumFiles]; +static FileStream_s* HeadFile[MaxNumFiles]; +static vector<FileOffset_t> MinMaxOffset[MaxNumFiles]; /* vector dimensioned by num zones */ +static vector<double> VarMinValue[MaxNumFiles]; /* vector dimensioned by num vars */ +static vector<double> VarMaxValue[MaxNumFiles]; /* vector dimensioned by num vars */ +static INTEGER4 DoWriteForeign = FALSE; /* ...default is to write native */ +static INTEGER4 IsWritingNative[MaxNumFiles]; +static INTEGER4 IsBlock[MaxNumFiles]; +static INTEGER4 ZoneType[MaxNumFiles]; +static LgIndex_t IMax[MaxNumFiles]; /* ones based indices */ +static LgIndex_t JMax[MaxNumFiles]; /* ones based indices */ +static LgIndex_t KMax[MaxNumFiles]; /* ones based indices */ +static vector<LgIndex_t> TotalNumFaceNodes[MaxNumFiles]; /* vector dimensioned by num zones */ +static LgIndex_t TotalNumFaceBndryFaces[MaxNumFiles]; +static LgIndex_t TotalNumFaceBndryConns[MaxNumFiles]; +static LgIndex_t ICellMax[MaxNumFiles]; +static LgIndex_t JCellMax[MaxNumFiles]; +static LgIndex_t KCellMax[MaxNumFiles]; +static vector<INTEGER4> NumFaceConnections[MaxNumFiles]; /* vector dimensioned by num zones */ +static INTEGER4 FaceNeighborMode[MaxNumFiles]; +static vector<INTEGER4> FaceNeighborsOrMapWritten[MaxNumFiles]; /* vector dimensioned by num zones */ +static INTEGER4 NumIndices[MaxNumFiles]; +static LgIndex_t NumDataValuesWritten[MaxNumFiles]; +static LgIndex_t NumOrderedCCDataValuesWritten[MaxNumFiles]; /* CC data only */ +static LgIndex_t NumDataValuesToWrite[MaxNumFiles]; +static vector<LgIndex_t> NumRunningVarValues[MaxNumFiles]; /* vector dimensioned by num vars */ +static vector<Boolean_t> IsSharedVar[MaxNumFiles]; /* vector dimensioned by num vars */ +static vector<Boolean_t> IsPassiveVar[MaxNumFiles]; /* vector dimensioned by num vars */ +static INTEGER4 CurZone[MaxNumFiles]; /* zero based zone numbers */ +static INTEGER4 CurVar[MaxNumFiles]; /* zero based var numbers */ +static INTEGER4 FieldDataType; +static INTEGER4 CurFile = -1; +static vector<Boolean_t> IsCellCentered[MaxNumFiles]; /* vector dimensioned by num vars */ +static Boolean_t HasFECONNECT[MaxNumFiles]; +static INTEGER4 FileTypes[MaxNumFiles]; +static vector<INTEGER4> NumConnectivityNodes[MaxNumFiles]; /* vector dimensioned by num zones */ +static vector<Boolean_t> ConnectivityWritten[MaxNumFiles]; /* vector dimensioned by num zones */ + +/* + * From preplot.cpp: + * + * ZoneType 0=ORDERED,1=FELINESEG,2=FETRIANGLE, + * 3=FEQUADRILATERAL,4=FETETRAHEDRON,5=FEBRICK, + * 6=FEPOLYGON,7=FEPOLYHEDRON + */ +#define ORDERED 0 +#define FELINESEG 1 +#define FETRIANGLE 2 +#define FEQUADRILATERAL 3 +#define FETETRAHEDRON 4 +#define FEBRICK 5 +#define FEPOLYGON 6 +#define FEPOLYHEDRON 7 +/* + * FileType 0=FULLFILE,1=GRIDFILE,2=SOLUTIONFILE + */ +#define FULLFILE 0 +#define GRIDFILE 1 +#define SOLUTIONFILE 2 + +#if defined MAKEARCHIVE +static char const* ZoneTypes[] = +{ + "ORDERED", + "FELINESEG", + "FETRIANGLE", + "FEQUADRILATERAL", + "FETETRAHEDRON", + "FEBRICK", + "FEPOLYGON", + "FEPOLYHEDRON" +}; +#endif /* MAKEARCHIVE */ + + +static void WriteErr(const char *routine_name) +{ + #if defined MAKEARCHIVE + PRINT2("Err: (%s) Write failure on file %d.\n", routine_name, CurFile + 1); + #endif + NumErrs[CurFile]++; +} + +static LgIndex_t TecXXXZoneNum = 0; + +Boolean_t ParseDupList(LgIndex_t **ShareVarFromZone, + LgIndex_t *ShareConnectivityFromZone, + const char *DupList) +{ + Boolean_t IsOk = TRUE; + + REQUIRE(VALID_REF(ShareVarFromZone) && *ShareVarFromZone == NULL); + REQUIRE(VALID_REF(ShareConnectivityFromZone)); + REQUIRE(VALID_REF(DupList)); + + while (IsOk && *DupList) + { + /* skip leading spaces */ + while (*DupList && *DupList == ' ') + DupList++; + + /* is this the FECONNECT keyword? */ + if (*DupList && !strncmp(DupList, "FECONNECT", 9)) + *ShareConnectivityFromZone = TecXXXZoneNum; + + else if (*DupList && !isdigit(*DupList)) + IsOk = FALSE; /* syntax error */ + + else if (*DupList) + { + char *NotUsed = NULL; + EntIndex_t WhichVar = strtol(DupList, &NotUsed, 10); + EntIndex_t numVarsForFile = NumVars[CurFile]; + + if (0 < WhichVar && WhichVar < numVarsForFile) + { + if (!(*ShareVarFromZone)) + { + *ShareVarFromZone = ALLOC_ARRAY(numVarsForFile, LgIndex_t, "Variable sharing list"); + if (*ShareVarFromZone) + memset(*ShareVarFromZone, (char)0, numVarsForFile * sizeof(LgIndex_t)); + } + + if (*ShareVarFromZone) + (*ShareVarFromZone)[WhichVar - 1] = TecXXXZoneNum; + else + IsOk = FALSE; + } + else + { + /* Invalid var num */ + IsOk = FALSE; + } + } + + /* + * Skip to the comma. This + * will also allow the syntax error + * of more than one consecutive comma + */ + + while (*DupList && *DupList != ',') + DupList++; + + /* skip past the comma (can handle the syntax error of more than 1 comma) */ + while (*DupList && *DupList == ',') + DupList++; + } + + return IsOk; +} + +/** + */ +static FileStream_s *OpenFileStream(const char *FilePath, + const char *AccessMode, + Boolean_t IsByteOrderNative) +{ + REQUIRE(VALID_REF(FilePath)); + REQUIRE(VALID_REF(AccessMode)); + + FileStream_s *Result = NULL; + FILE *File = TP_FOPEN(FilePath, AccessMode); + if (File != NULL) + { + Result = FileStreamAlloc(File, IsByteOrderNative); + if (Result == NULL) + TP_FCLOSE(File); + } + + ENSURE((VALID_REF(Result) && VALID_REF(Result->File)) || Result == NULL); + return Result; +} + +/** + */ +static void CloseFileStream(FileStream_s **FileStream) +{ + REQUIRE(VALID_REF(FileStream)); + REQUIRE(VALID_REF(*FileStream) || *FileStream == NULL); + + if (*FileStream != NULL) + { + TP_FCLOSE((*FileStream)->File); + FileStreamDealloc(FileStream); + } + + ENSURE(*FileStream == NULL); +} + +/** + * Get the best terminator (separator) character to use for the string. First + * precedence goes to the new line then the command and finally by default the + * space. NOTE: We use a do loop to allow it to be used as a single statement. + */ +#define GET_BEST_TERMINATOR_CHAR(CompoundStr, TerminatorChar) \ + do \ + { \ + if (strchr((CompoundStr), '\n') != NULL) \ + (TerminatorChar) = '\n'; \ + else if (strchr((CompoundStr), ',') != NULL) \ + (TerminatorChar) = ','; \ + else \ + (TerminatorChar) = ' '; \ + } while (0) + + +/** + * TECINIXXX + */ +INTEGER4 LIBCALL TECINI112(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *FileType, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + size_t L; + int I; + char RName[80]; + char *CPtr; + int NewFile = -1; + + /* + * Note that users should not mix TECXXX, TEC100XXX, and TEC110XXX calls, but + * just in case, initialize the TecXXXZoneNum variable. It may not help, but + * it doesn't hurt... + */ + TecXXXZoneNum = 0; + + #if defined MAKEARCHIVE + InitInputSpecs(); + #endif + + for (I = 0; (I < MaxNumFiles) && (NewFile == -1); I++) + { + if (!IsOpen[I]) + NewFile = I; + } + + if (NewFile == -1) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECINI112) Too many files (%d) opened for printing.\n", NewFile); + #endif + return (-1); + } + + if (CurFile == -1) + CurFile = 0; + + #if defined MAKEARCHIVE + DebugLevel[NewFile] = *Debug; + #endif + /* check sizes for array sized by number of variables */ + CHECK(VarMinValue[NewFile].empty()); + CHECK(VarMaxValue[NewFile].empty()); + CHECK(NumRunningVarValues[NewFile].empty()); + CHECK(IsSharedVar[NewFile].empty()); + CHECK(IsPassiveVar[NewFile].empty()); + CHECK(IsCellCentered[NewFile].empty()); + + /* check sizes for array sized by number of zones */ + CHECK(MinMaxOffset[NewFile].empty()); + CHECK(TotalNumFaceNodes[NewFile].empty()); + CHECK(NumFaceConnections[NewFile].empty()); + CHECK(FaceNeighborsOrMapWritten[NewFile].empty()); + CHECK(NumConnectivityNodes[NewFile].empty()); + CHECK(ConnectivityWritten[NewFile].empty()); + + CurZone[NewFile] = -1; + L = 0; + if (FName != NULL) + L = strlen(FName); + if (L == 0) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECINI112) Bad file name for file %d.\n", NewFile); + #endif + return (-1); + } + DestFName[NewFile] = ALLOC_ARRAY(L + 1, char, "data set fname"); + strcpy(DestFName[NewFile], FName); + + #if defined (DOS) + { + sprintf(RName, "BLCKFILE.%03d", (int)(NewFile + 1)); + } + #else + { + sprintf(RName, "tp%1dXXXXXX", NewFile + 1); + } + #endif + + L = strlen(RName); + if (ScratchDir != NULL) + L += strlen(ScratchDir) + 1; /* +1 for the slash delimeter */ + BlckFName[NewFile] = ALLOC_ARRAY(L + 1, char, "data set fname"); + if (ScratchDir != NULL) + { + strcpy(BlckFName[NewFile], ScratchDir); + #if defined DOS || defined MSWIN + { + strcat(BlckFName[NewFile], "\\"); + } + #else + { + strcat(BlckFName[NewFile], "/"); + } + #endif + } + else + BlckFName[NewFile][0] = '\0'; + + strcat(BlckFName[NewFile], RName); + CHECK(strlen(BlckFName[NewFile]) <= L); + + #if defined MSWIN + { + _mktemp(BlckFName[NewFile]); + } + #elif defined UNIXX + { + /* + * POSIX compiant behavior is to make + * sure umask is set correctly first. + */ + mode_t OrigUmask = umask(0022); /* ...should produce rw------- */ + int FileDesc = mkstemp(BlckFName[NewFile]); + if (FileDesc != -1) + close(FileDesc); + umask(OrigUmask); + } + #endif + + #if defined MAKEARCHIVE + if (DebugLevel[NewFile]) + { + PRINT2("Scratch File #%d: %s\n", NewFile + 1, BlckFName[NewFile]); + PRINT2("Dest File #%d: %s\n", NewFile + 1, DestFName[NewFile]); + } + #endif + + IsWritingNative[NewFile] = !DoWriteForeign; + + #if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ + #endif + + HeadFile[NewFile] = OpenFileStream(DestFName[NewFile], "wb", IsWritingNative[NewFile]); + BlckFile[NewFile] = OpenFileStream(BlckFName[NewFile], "wb", IsWritingNative[NewFile]); + + if (BlckFile[NewFile] == NULL) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECINI112) Cannot open scratch file for output.\n"); + PRINT0(" Check permissions in scratch directory.\n"); + #endif + NumErrs[NewFile]++; + return (-1); + } + if (HeadFile[NewFile] == NULL) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECINI112) Cannot open plot file. Check permissions.\n"); + #endif + NumErrs[NewFile]++; + return (-1); + } + + writeBinaryVersionNumber(*HeadFile[NewFile], + TecplotBinaryFileVersion); + WriteBinaryMagic(HeadFile[NewFile]); + + /* Write file type */ + if (*FileType >= FULLFILE && *FileType <= SOLUTIONFILE) + FileTypes[NewFile] = *FileType; + else + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECINI112) Bad filetype argument. Check documentation.\n"); + #endif + NumErrs[NewFile]++; + return (-1); + } + + CHECK(TecplotBinaryFileVersion == 112); + if (!WriteBinaryInt32(HeadFile[NewFile], (LgIndex_t)FileTypes[NewFile])) + { + WriteErr("TECINI112"); + return (-1); + } + + if (!DumpDatafileString(HeadFile[NewFile], + Title, + TRUE)) + { + WriteErr("TECINI112"); + return (-1); + } + + NumVars[NewFile] = 0; + CPtr = Variables; + + + /* + * Three possible variable name separators are accepted with the following + * precidence: newline, comma, and space. + */ + { + char terminator; + + GET_BEST_TERMINATOR_CHAR(CPtr, terminator); + while (*CPtr) + { + /* strip leading spaces */ + while (*CPtr && *CPtr == ' ') + CPtr++; + + if (*CPtr) + { + NumVars[NewFile]++; + /* skip to terminating character */ + while (*CPtr && *CPtr != terminator) + CPtr++; + /* skip past terminating character */ + if (*CPtr) + CPtr++; + } + } + } + +#if 0 + /* A grid file can have no variables in it as long as there is a connectivity list */ + if (NumVars[NewFile] == 0 && FileTypes[NewFile] != GRIDFILE) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECINI110) No variable names were defined.\n"); + #endif + NumErrs[NewFile]++; + return (-1); + } +#endif + + #if defined MAKEARCHIVE + if (DebugLevel[NewFile]) + PRINT1("NumVars=%d\n", NumVars[NewFile]); + #endif + /* make sure var-sized arrays are big enough for all vars */ + try + { + VarMinValue[NewFile].resize(NumVars[NewFile]); + VarMaxValue[NewFile].resize(NumVars[NewFile]); + NumRunningVarValues[NewFile].resize(NumVars[NewFile]); + IsSharedVar[NewFile].resize(NumVars[NewFile]); + IsPassiveVar[NewFile].resize(NumVars[NewFile]); + IsCellCentered[NewFile].resize(NumVars[NewFile]); + } + catch (std::bad_alloc const&) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECINI112) Memory allocation error.\n"); + #endif + NumErrs[NewFile]++; + return (-1); + } + + if (!WriteBinaryInt32(HeadFile[NewFile], (LgIndex_t)NumVars[NewFile])) + { + WriteErr("TECINI110"); + return (-1); + } + + CPtr = Variables; + { + char terminator; + char TString[MaxChrsVarName+1]; + int I; + + GET_BEST_TERMINATOR_CHAR(CPtr, terminator); + while (*CPtr) + { + /* skip leading space characters */ + while (*CPtr && *CPtr == ' ') + CPtr++; + if (*CPtr) + { + I = 0; + /* skip to terminator */ + while (*CPtr && *CPtr != terminator) + { + TString[I++] = *CPtr++; + } + /* skip past terminator */ + if (*CPtr) + CPtr++; + + /* strip trailing spaces */ + I--; + while (I >= 0 && TString[I] == ' ') + I--; + + TString[I+1] = '\0'; + + if (!DumpDatafileString(HeadFile[NewFile], TString, TRUE)) + { + WriteErr("TECINI110"); + return (-1); + } + } + } + } + + IsOpen[NewFile] = 1; + + if (*VIsDouble) + FieldDataType = FieldDataType_Double; + else + FieldDataType = FieldDataType_Float; + + return (0); +} + +INTEGER4 LIBCALL TECINI111(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *FileType, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + return TECINI112(Title, + Variables, + FName, + ScratchDir, + FileType, + Debug, + VIsDouble); +} + +INTEGER4 LIBCALL TECINI110(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + INTEGER4 FType = FULLFILE; + + TecXXXZoneNum = 0; + return TECINI112(Title, + Variables, + FName, + ScratchDir, + &FType, + Debug, + VIsDouble); +} + +INTEGER4 LIBCALL TECINI100(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + INTEGER4 FType = FULLFILE; + + TecXXXZoneNum = 0; + return TECINI112(Title, + Variables, + FName, + ScratchDir, + &FType, + Debug, + VIsDouble); +} + +INTEGER4 LIBCALL TECINI(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + INTEGER4 FType = FULLFILE; + + TecXXXZoneNum = 0; + return TECINI112(Title, + Variables, + FName, + ScratchDir, + &FType, + Debug, + VIsDouble); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecini112_(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *FileType, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + return TECINI112(Title, Variables, FName, ScratchDir, FileType, Debug, VIsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecini111_(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *FileType, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + return TECINI112(Title, Variables, FName, ScratchDir, FileType, Debug, VIsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecini110_(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + INTEGER4 FType = FULLFILE; + return TECINI112(Title, Variables, FName, ScratchDir, &FType, Debug, VIsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecini100_(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + INTEGER4 FType = FULLFILE; + return TECINI112(Title, Variables, FName, ScratchDir, &FType, Debug, VIsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecini_(char *Title, + char *Variables, + char *FName, + char *ScratchDir, + INTEGER4 *Debug, + INTEGER4 *VIsDouble) +{ + INTEGER4 FType = FULLFILE; + return TECINI112(Title, + Variables, + FName, + ScratchDir, + &FType, + Debug, + VIsDouble); +} +#endif + + +static int CheckData(const char *routine_name) +{ + + if (NumDataValuesToWrite[CurFile] != NumDataValuesWritten[CurFile]) + { + #if defined MAKEARCHIVE + PRINT2("Err: (%s) Wrong number of data values in file %d:\n", routine_name, CurFile + 1); + PRINT2(" %d data values for Zone %d were processed,\n", NumDataValuesWritten[CurFile], CurZone[CurFile] + 1); + PRINT1(" %d data values were expected.\n", NumDataValuesToWrite[CurFile]); + #endif + NumErrs[CurFile]++; + return (-1); + } + return (0); +} + +static int CheckFile(const char *routine_name) +{ + if ((CurFile == -1) || (!IsOpen[CurFile])) + { + #if defined MAKEARCHIVE + PRINT2("Err: (%s) Attempt to use invalid file (%d).\n", + routine_name, CurFile + 1); + #endif + return (-1); + } + return (0); +} + +/** + * Advances CurVar[CurFile] to the next non-shared active variable. TECDATXXX + * clients should not supply values for shared or passive variables. + */ +static void AdvanceToNextVarWithValues(void) +{ + /* search for the next variable with values */ + do + { + CurVar[CurFile]++; + } + while (CurVar[CurFile] < NumVars[CurFile] && + (IsSharedVar[CurFile][CurVar[CurFile]] || + IsPassiveVar[CurFile][CurVar[CurFile]])); +} + +/** + * TECZNEXXX + */ +INTEGER4 LIBCALL TECZNE112(char *ZnTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMxOrNumFaces, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *NumFaceNodes, + INTEGER4 *NumFaceBndryFaces, + INTEGER4 *NumFaceBndryConns, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + int I; + int IsOk = 1; + + if (CheckFile("TECZNE112") < 0) + return (-1); + + if (CurZone[CurFile] > -1) + { + if (CheckData("TECZNE112") < 0) + return (-1); + } + + if (NumVars[CurFile] == 0) + { + WriteErr("TECZNE112"); + #if defined MAKEARCHIVE + PRINT1("Err: (TECZNE112) Cannot write out zones if numvars is equal to zero (file %d).\n", + CurFile + 1); + #endif + return (-1); + } + + if (CurZone[CurFile] > MaxNumZonesOrVars - 2) /* -1 based */ + { + WriteErr("TECZNE112"); + #if defined MAKEARCHIVE + PRINT2("Err: (TECZNE112) Exceeded max number of zones (%d) in file %d.\n", + MaxNumZonesOrVars, CurFile + 1); + #endif + return (-1); + } + + if (*StrandID < -1) + { + #if defined MAKEARCHIVE + PRINT2("Err: (TECZNE112) Invalid StrandID supplied for file %d, zone %d.\n", + CurFile + 1, CurZone[CurFile] + 1 + 1); + #endif + return (-1); + } + + if (*ParentZone < 0) + { + #if defined MAKEARCHIVE + PRINT2("Err: (TECZNE112) Invalid ParentZone supplied for file %d, zone %d.\n", + CurFile + 1, CurZone[CurFile] + 1 + 1); + #endif + return (-1); + } + + /* + * This is a temporary error. Point format should no longer be written to the file + * and should instead be converted to block format before being written. Since the + * conversion has not yet been implemented, it is an error to use point data. + * TODO (JN): Remove this error when point to block conversion has been implemented. + */ + if (*IsBlk != 1) + { + #if defined MAKEARCHIVE + PRINT2("Err: (TECZNE112) Point data is not currently allowed. " + " Please use block format for file %d, zone %d.\n", + CurFile + 1, CurZone[CurFile] + 1 + 1); + #endif + return (-1); + } + + NumDataValuesWritten[CurFile] = 0; + NumOrderedCCDataValuesWritten[CurFile] = 0; + CurZone[CurFile]++; + + /* Resize zone-dimensioned arrays (CurZone[] is 0-based) */ + try + { + MinMaxOffset[CurFile].resize(CurZone[CurFile] + 1); + TotalNumFaceNodes[CurFile].resize(CurZone[CurFile] + 1); + NumFaceConnections[CurFile].resize(CurZone[CurFile] + 1); + FaceNeighborsOrMapWritten[CurFile].resize(CurZone[CurFile] + 1); + NumConnectivityNodes[CurFile].resize(CurZone[CurFile] + 1); + ConnectivityWritten[CurFile].resize(CurZone[CurFile] + 1); + } + catch (std::bad_alloc const&) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECZNE112) Memory allocation error.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + ZoneType[CurFile] = *ZnType; + IMax[CurFile] = *IMxOrNumPts; + JMax[CurFile] = *JMxOrNumElements; + KMax[CurFile] = *KMxOrNumFaces; + ICellMax[CurFile] = *ICellMx; + JCellMax[CurFile] = *JCellMx; + KCellMax[CurFile] = *KCellMx; + /* Set the flags that connectivity, face neighbors or face map hasn't been written for the zone yet. */ + FaceNeighborsOrMapWritten[CurFile][CurZone[CurFile]] = FALSE; + ConnectivityWritten[CurFile][CurZone[CurFile]] = FALSE; + + if (ZoneType[CurFile] == ZoneType_FEPolygon || + ZoneType[CurFile] == ZoneType_FEPolyhedron) + { + NumFaceConnections[CurFile][CurZone[CurFile]] = 0; /* ...not used for polytope data */ + FaceNeighborMode[CurFile] = 0; /* ...not used for polytope data */ + NumConnectivityNodes[CurFile][CurZone[CurFile]] = 0; /* ...not used for polytope data */ + + IsBlock[CurFile] = TRUE; /* ...polytope data is always block */ + TotalNumFaceNodes[CurFile][CurZone[CurFile]] = *NumFaceNodes; + TotalNumFaceBndryFaces[CurFile] = *NumFaceBndryFaces; + TotalNumFaceBndryConns[CurFile] = *NumFaceBndryConns; + } + else /* ...classic data */ + { + IsBlock[CurFile] = *IsBlk; + NumFaceConnections[CurFile][CurZone[CurFile]] = *NumFaceConn; + FaceNeighborMode[CurFile] = *FNMode; + + TotalNumFaceNodes[CurFile][CurZone[CurFile]] = 0; /* ...not used for classic data */ + TotalNumFaceBndryFaces[CurFile] = 0; /* ...not used for classic data */ + TotalNumFaceBndryConns[CurFile] = 0; /* ...not used for classic data */ + } + + WriteBinaryReal(HeadFile[CurFile], + (double)ZoneMarker, + FieldDataType_Float); + if (!DumpDatafileString(HeadFile[CurFile], + ZnTitle, + TRUE)) + { + WriteErr("TECZNE112"); + return (-1); + } + + if ((ShareVarFromZone && *ShareConnectivityFromZone) && + CurZone[CurFile] == 0) + { + /* can't have a duplist if there's nothing to duplicate */ + IsOk = 0; + } + + if (IsOk == 0) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECZNE112) Bad zone format for file %d.\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + + switch (ZoneType[CurFile]) + { + case ORDERED: + NumIndices[CurFile] = 0; + break; + case FELINESEG: + NumIndices[CurFile] = 2; + break; + case FETRIANGLE: + NumIndices[CurFile] = 3; + break; + case FEQUADRILATERAL: + NumIndices[CurFile] = 4; + break; + case FETETRAHEDRON: + NumIndices[CurFile] = 4; + break; + case FEBRICK: + NumIndices[CurFile] = 8; + break; + } + + /* ...not used for poly or ordered data and don't count sharing or solution files. */ + if (ZoneType[CurFile] != ZoneType_FEPolygon && + ZoneType[CurFile] != ZoneType_FEPolyhedron && + *ShareConnectivityFromZone == 0 && + FileTypes[CurFile] != SOLUTIONFILE) + NumConnectivityNodes[CurFile][CurZone[CurFile]] = NumIndices[CurFile] * JMax[CurFile]; + + /* + * We do not check any return values until the end. If these calls fail, + * WriteFieldDataType below should fail as well. + */ + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)(*ParentZone) - 1); /* ...ParentZone is zero based for binary file */ + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)(*StrandID) - 1); /* ...StrandID is zero based for binary file */ + WriteBinaryReal(HeadFile[CurFile], *SolutionTime, FieldDataType_Double); + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t) - 1); /* No Zone Color Assignment */ + WriteBinaryInt32(HeadFile[CurFile], ZoneType[CurFile]); + + NumDataValuesToWrite[CurFile] = 0; + for (I = 0; I < NumVars[CurFile]; I++) + { + IsSharedVar[CurFile][I] = (ShareVarFromZone != NULL && ShareVarFromZone[I] != 0); /* ...shared? */ + IsPassiveVar[CurFile][I] = (PassiveVarList != NULL && PassiveVarList[I] == 1); /* ...passive? */ + } + + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)(ValueLocation != NULL ? 1 : 0)); /* ...are var locations specified? */ + if (ValueLocation) + { + for (I = 0; I < NumVars[CurFile]; I++) + { + int VIndex; + LgIndex_t NumNodes; + LgIndex_t NumCells; + + if (ZoneType[CurFile] == ORDERED) + { + NumNodes = IMax[CurFile] * JMax[CurFile] * KMax[CurFile]; + NumCells = (MAX(IMax[CurFile] - 1, 1) * + MAX(JMax[CurFile] - 1, 1) * + MAX(KMax[CurFile] - 1, 1)); + } + else + { + NumNodes = IMax[CurFile]; + NumCells = JMax[CurFile]; + } + + if (IsSharedVar[CurFile][I]) + VIndex = ShareVarFromZone[I] - 1; + else + VIndex = I; + + if (VIndex == 0) + NumRunningVarValues[CurFile][I] = 0; + else + NumRunningVarValues[CurFile][VIndex] = NumRunningVarValues[CurFile][VIndex-1]; + + IsCellCentered[CurFile][VIndex] = (ValueLocation[I] == ValueLocation_CellCentered); + if (ValueLocation[I] == ValueLocation_CellCentered) + { + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)1); + if (!IsSharedVar[CurFile][I] && !IsPassiveVar[CurFile][I]) + { + NumDataValuesToWrite[CurFile] += NumCells; + NumRunningVarValues[CurFile][VIndex] += NumCells; + } + } + else if (ValueLocation[I] == ValueLocation_Nodal) + { + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)0); + if (!IsSharedVar[CurFile][I] && !IsPassiveVar[CurFile][I]) + { + NumDataValuesToWrite[CurFile] += NumNodes; + NumRunningVarValues[CurFile][VIndex] += NumNodes; + } + } + else + { + #if defined MAKEARCHIVE + PRINT2("Err: (TECZNE112) Bad zone value location for file %d, variable %d.\n", CurFile + 1, I + 1); + #endif + NumErrs[CurFile]++; + return(-1); + } + } + } + else + { + LgIndex_t NumNodes; + if (ZoneType[CurFile] == ORDERED) + { + NumNodes = IMax[CurFile] * JMax[CurFile] * KMax[CurFile]; + } + else + { + NumNodes = IMax[CurFile]; + } + + for (I = 0; I < NumVars[CurFile]; I++) + { + int VIndex; + if (IsSharedVar[CurFile][I]) + VIndex = ShareVarFromZone[I] - 1; + else + VIndex = I; + + if (VIndex == 0) + NumRunningVarValues[CurFile][I] = 0; + else + NumRunningVarValues[CurFile][VIndex] = NumRunningVarValues[CurFile][VIndex-1]; + + IsCellCentered[CurFile][VIndex] = FALSE; + if (!IsSharedVar[CurFile][I] && !IsPassiveVar[CurFile][I]) + { + NumDataValuesToWrite[CurFile] += NumNodes; + NumRunningVarValues[CurFile][VIndex] += NumNodes; + } + } + } + + /* + * As of binary version 108 Tecplot introduced + * the ability to output its auto-generated face + * neighbor array in its raw form. For now + * TecIO will always decline to perform this + * step and instead fall back to the delivering + * one neighbor at a time. + */ + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)0); /* IsRawFNAvailable */ + + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)NumFaceConnections[CurFile][CurZone[CurFile]]); + if (NumFaceConnections[CurFile][CurZone[CurFile]] > 0) + { + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)FaceNeighborMode[CurFile]); + if (ZoneType[CurFile] != ORDERED) + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)0); /* FEFaceNeighborsComplete */ + } + + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)IMax[CurFile]); + if (ZoneType[CurFile] == FEPOLYGON || + ZoneType[CurFile] == FEPOLYHEDRON) + { + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)KMax[CurFile]); + + /* + * As of binary version 111 these items moved from the data section to + * the header. + */ + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)TotalNumFaceNodes[CurFile][CurZone[CurFile]]); + if (TotalNumFaceBndryFaces[CurFile] > 0) + { + /* Each boundary face must have >= 1 boundary connection. */ + if (TotalNumFaceBndryConns[CurFile] < TotalNumFaceBndryFaces[CurFile]) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECZNE112) There must be at least 1 boundary connection for each boundary face in zone %d.\n", + CurZone[CurFile] + 1); + PRINT2(" %d boundary faces and %d boundary connections were specified.\n", + TotalNumFaceBndryFaces[CurFile], TotalNumFaceBndryConns[CurFile]); + #endif + NumErrs[CurFile]++; + return(-1); + } + + /* + * As a convenience for the ASCII format, TecUtil, and TECIO layers if any + * boundary connections exists we automatically add a no-neighboring + * connection as the first item so that they can user 0 for no-neighboring + * element in the element list regardless if they have boundary connections + * or not. + */ + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)TotalNumFaceBndryFaces[CurFile] + 1); /* ...add a boundary face for no neighboring element as a convenience */ + } + else + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)TotalNumFaceBndryFaces[CurFile]); + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)TotalNumFaceBndryConns[CurFile]); + } + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)JMax[CurFile]); + + if (ZoneType[CurFile] == ORDERED) + { + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)KMax[CurFile]); + } + else + { + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)ICellMax[CurFile]); + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)JCellMax[CurFile]); + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)KCellMax[CurFile]); + } + + /* + * Aux data. This has to be over-written by the aux data writing routine. + * Because it currently at the end of the header section we don't need to + * keep track of the position for seeking back to it. + */ + WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)0); + + WriteBinaryReal(BlckFile[CurFile], + (double)ZoneMarker, + FieldDataType_Float); + + for (I = 0; I < NumVars[CurFile]; I++) + { + if (!WriteFieldDataType(BlckFile[CurFile], + (FieldDataType_e)FieldDataType, + TRUE)) + { + WriteErr("TECZNE112"); + return (-1); + } + } + + /* Passive variable identification */ + if (PassiveVarList) + { + WriteBinaryInt32(BlckFile[CurFile], 1); + for (I = 0; I < NumVars[CurFile]; I++) + WriteBinaryInt32(BlckFile[CurFile], PassiveVarList[I]); + } + else + WriteBinaryInt32(BlckFile[CurFile], 0); + + /* get the CurVar[CurFile] on the first active variable */ + CurVar[CurFile] = -1; + AdvanceToNextVarWithValues(); + + /* Variable & Connectivity Sharing */ + if (ShareVarFromZone) + { + WriteBinaryInt32(BlckFile[CurFile], 1); + for (I = 0; I < NumVars[CurFile]; I++) + WriteBinaryInt32(BlckFile[CurFile], ShareVarFromZone[I] - 1); + } + else + WriteBinaryInt32(BlckFile[CurFile], 0); + WriteBinaryInt32(BlckFile[CurFile], *ShareConnectivityFromZone - 1); + + /* + * Create place holders or the variable min/max value. We will come back + * later after writing the data portion with the real min/max values. In the + * mean time, keep track of the starting point so we can seek back to this + * place. + */ + MinMaxOffset[CurFile][CurZone[CurFile]] = (FileOffset_t)TP_FTELL(BlckFile[CurFile]->File); + + for (I = 0; I < NumVars[CurFile]; I++) + { + /* initialize to unset values */ + VarMinValue[CurFile][I] = LARGEDOUBLE; + VarMaxValue[CurFile][I] = -LARGEDOUBLE; + + if (!IsSharedVar[CurFile][I] && !IsPassiveVar[CurFile][I]) + { + WriteBinaryReal(BlckFile[CurFile], 0.0, FieldDataType_Double); + WriteBinaryReal(BlckFile[CurFile], 0.0, FieldDataType_Double); + } + } + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + { + PRINT1("Writing Zone %d:\n", CurZone[CurFile] + 1); + PRINT1(" Title = %s\n", ZnTitle); + PRINT1(" Type = %s\n", ZoneTypes[ZoneType[CurFile]]); + PRINT1(" IMax = %d\n", IMax[CurFile]); + PRINT1(" JMax = %d\n", JMax[CurFile]); + PRINT1(" KMax = %d\n", KMax[CurFile]); + if (ShareVarFromZone) + { + char DupList[1024] = ""; + + for (I = 0; I < NumVars[CurFile]; I++) + { + if (I > 0) + strcat(DupList, ","); + sprintf(&DupList[strlen(DupList)], "%d", ShareVarFromZone[I]); + } + PRINT1(" DupList = %s\n", DupList); + } + } + #endif + + return (0); +} + +INTEGER4 LIBCALL TECZNE111(char *ZnTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMxOrNumFaces, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *NumFaceNodes, + INTEGER4 *NumFaceBndryFaces, + INTEGER4 *NumFaceBndryConns, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + return TECZNE112(ZnTitle, + ZnType, + IMxOrNumPts, + JMxOrNumElements, + KMxOrNumFaces, + ICellMx, + JCellMx, + KCellMx, + SolutionTime, + StrandID, + ParentZone, + IsBlk, + NumFaceConn, + FNMode, + NumFaceNodes, + NumFaceBndryFaces, + NumFaceBndryConns, + PassiveVarList, + ValueLocation, + ShareVarFromZone, + ShareConnectivityFromZone); +} + +INTEGER4 LIBCALL TECZNE110(char *ZnTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMx, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + INTEGER4 NumFaceNodes = 0; + INTEGER4 NumFaceBndryFaces = 0; + INTEGER4 NumFaceBndryConns = 0; + + return TECZNE112(ZnTitle, + ZnType, + IMxOrNumPts, + JMxOrNumElements, + KMx, + ICellMx, + JCellMx, + KCellMx, + SolutionTime, + StrandID, + ParentZone, + IsBlk, + NumFaceConn, + FNMode, + &NumFaceNodes, + &NumFaceBndryFaces, + &NumFaceBndryConns, + PassiveVarList, + ValueLocation, + ShareVarFromZone, + ShareConnectivityFromZone); +} + +INTEGER4 LIBCALL TECZNE100(char *ZnTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMx, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + double SolutionTime = 0.0; + INTEGER4 StrandID = STRAND_ID_STATIC + 1; /* TECXXX is ones based for StrandID */ + INTEGER4 ParentZone = BAD_SET_VALUE + 1; /* TECXXX is ones based for ParentZone */ + INTEGER4 NumFaceNodes = 0; + INTEGER4 NumFaceBndryFaces = 0; + INTEGER4 NumFaceBndryConns = 0; + + return TECZNE112(ZnTitle, + ZnType, + IMxOrNumPts, + JMxOrNumElements, + KMx, + ICellMx, + JCellMx, + KCellMx, + &SolutionTime, + &StrandID, + &ParentZone, + IsBlk, + NumFaceConn, + FNMode, + &NumFaceNodes, + &NumFaceBndryFaces, + &NumFaceBndryConns, + NULL, /* PassiveVarList */ + ValueLocation, + ShareVarFromZone, + ShareConnectivityFromZone); +} + +#if !defined INDEX_16_BIT // not supported in this test-only mode +INTEGER4 LIBCALL TECZNE(char *ZoneTitle, + INTEGER4 *IMx, + INTEGER4 *JMx, + INTEGER4 *KMx, + char *ZFormat, + char *DupList) +{ + + LgIndex_t ZoneType; + LgIndex_t IsBlock; + LgIndex_t *ShareVarFromZone = NULL; + LgIndex_t ShareConnectivityFromZone; + LgIndex_t Result = 0; + + + if (ZFormat == NULL) + Result = -1; + else if (!strcmp(ZFormat, "BLOCK")) + { + IsBlock = 1; + ZoneType = ZoneType_Ordered; + } + else if (!strcmp(ZFormat, "FEBLOCK")) + { + IsBlock = 1; + switch (*KMx) + { + /* + * From preplot.c: + * + * ZoneType 0=ORDERED,1=FELINESEG,2=FETRIANGLE, + * 3=FEQUADRILATERAL,4=FETETRAHEDRON,5=FEBRICK + */ + case 0: /* Triangular. */ + ZoneType = 2; + break; + case 1: /* Quadrilateral */ + ZoneType = 3; + break; + case 2: /* Tetrahedral */ + ZoneType = 4; + break; + case 3: /* Brick. */ + ZoneType = 5; + break; + } + } + else if (!strcmp(ZFormat, "POINT")) + { + IsBlock = 0; + ZoneType = ZoneType_Ordered; + } + else if (!strcmp(ZFormat, "FEPOINT")) + { + IsBlock = 0; + switch (*KMx) + { + case 0: /* Triangular. */ + ZoneType = 2; + break; + case 1: /* Quadrilateral */ + ZoneType = 3; + break; + case 2: /* Tetrahedral */ + ZoneType = 4; + break; + case 3: /* Brick. */ + ZoneType = 5; + break; + } + } + else + Result = -1; + + ShareConnectivityFromZone = 0; + + + if (Result == 0 && + DupList && + !ParseDupList(&ShareVarFromZone, &ShareConnectivityFromZone, DupList)) + { + Result = -1; + } + + /*Result = TECZNE((char *)ZoneTitle, IMx, JMx, KMx, (char *)ZFormat,(char*)DupList);*/ + if (Result == 0) + { + INTEGER4 ICellMx = 0; + INTEGER4 JCellMx = 0; + INTEGER4 KCellMx = 0; + INTEGER4 NumFaceConnections = 0; + INTEGER4 FaceNeighborMode = FaceNeighborMode_LocalOneToOne; + double SolutionTime = 0.0; + INTEGER4 StrandID = STRAND_ID_STATIC + 1; /* TECXXX is ones based for StrandID */ + INTEGER4 ParentZone = BAD_SET_VALUE + 1; /* TECXXX is ones based for ParentZone */ + INTEGER4 NumFaceNodes = 0; + INTEGER4 NumFaceBndryFaces = 0; + INTEGER4 NumFaceBndryConns = 0; + + Result = TECZNE112((char *)ZoneTitle, + &ZoneType, + IMx, + JMx, + KMx, + &ICellMx, + &JCellMx, + &KCellMx, + &SolutionTime, + &StrandID, + &ParentZone, + &IsBlock, + &NumFaceConnections, + &FaceNeighborMode, + &NumFaceNodes, + &NumFaceBndryFaces, + &NumFaceBndryConns, + NULL, /* PassiveVarList */ + NULL, /* ValueLocation */ + DupList ? ShareVarFromZone : NULL, + &ShareConnectivityFromZone); + TecXXXZoneNum++; + } + + if (ShareVarFromZone) + FREE_ARRAY(ShareVarFromZone, "Variable sharing list"); + + return (INTEGER4) Result; +} +#endif // INDEX_16_BIT -- not supported in this test-only mode + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL teczne112_(char *ZoneTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMx, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *NumFaceNodes, + INTEGER4 *NumFaceBndryFaces, + INTEGER4 *NumFaceBndryConns, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + return TECZNE112(ZoneTitle, + ZnType, + IMxOrNumPts, + JMxOrNumElements, + KMx, + ICellMx, + JCellMx, + KCellMx, + SolutionTime, + StrandID, + ParentZone, + IsBlk, + NumFaceConn, + FNMode, + NumFaceNodes, + NumFaceBndryFaces, + NumFaceBndryConns, + PassiveVarList, + ValueLocation, + ShareVarFromZone, + ShareConnectivityFromZone); +} + +LIBFUNCTION INTEGER4 LIBCALL teczne111_(char *ZoneTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMx, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *NumFaceNodes, + INTEGER4 *NumFaceBndryFaces, + INTEGER4 *NumFaceBndryConns, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + return TECZNE112(ZoneTitle, + ZnType, + IMxOrNumPts, + JMxOrNumElements, + KMx, + ICellMx, + JCellMx, + KCellMx, + SolutionTime, + StrandID, + ParentZone, + IsBlk, + NumFaceConn, + FNMode, + NumFaceNodes, + NumFaceBndryFaces, + NumFaceBndryConns, + PassiveVarList, + ValueLocation, + ShareVarFromZone, + ShareConnectivityFromZone); +} + +LIBFUNCTION INTEGER4 LIBCALL teczne110_(char *ZoneTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMx, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + double *SolutionTime, + INTEGER4 *StrandID, + INTEGER4 *ParentZone, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *PassiveVarList, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + INTEGER4 NumFaceNodes = 0; + INTEGER4 NumFaceBndryFaces = 0; + INTEGER4 NumFaceBndryConns = 0; + + return TECZNE112(ZoneTitle, + ZnType, + IMxOrNumPts, + JMxOrNumElements, + KMx, + ICellMx, + JCellMx, + KCellMx, + SolutionTime, + StrandID, + ParentZone, + IsBlk, + NumFaceConn, + FNMode, + &NumFaceNodes, + &NumFaceBndryFaces, + &NumFaceBndryConns, + PassiveVarList, + ValueLocation, + ShareVarFromZone, + ShareConnectivityFromZone); +} + +LIBFUNCTION INTEGER4 LIBCALL teczne100_(char *ZoneTitle, + INTEGER4 *ZnType, + INTEGER4 *IMxOrNumPts, + INTEGER4 *JMxOrNumElements, + INTEGER4 *KMx, + INTEGER4 *ICellMx, + INTEGER4 *JCellMx, + INTEGER4 *KCellMx, + INTEGER4 *IsBlk, + INTEGER4 *NumFaceConn, + INTEGER4 *FNMode, + INTEGER4 *ValueLocation, + INTEGER4 *ShareVarFromZone, + INTEGER4 *ShareConnectivityFromZone) +{ + return TECZNE100(ZoneTitle, + ZnType, + IMxOrNumPts, + JMxOrNumElements, + KMx, + ICellMx, + JCellMx, + KCellMx, + IsBlk, + NumFaceConn, + FNMode, + ValueLocation, + ShareVarFromZone, + ShareConnectivityFromZone); +} + +LIBFUNCTION INTEGER4 LIBCALL teczne_(char *ZoneTitle, + INTEGER4 *IMx, + INTEGER4 *JMx, + INTEGER4 *KMx, + char *ZFormat, + char *DupList) +{ + return TECZNE(ZoneTitle, + IMx, + JMx, + KMx, + ZFormat, + DupList); +} +#endif + +/** + * Rewrite the var min/max place holders which currently have zero in them. + */ +static void RewritePendingMinMaxValues(void) +{ + FileOffset_t CurrentOffset = (FileOffset_t)TP_FTELL(BlckFile[CurFile]->File); + + TP_FSEEK(BlckFile[CurFile]->File, MinMaxOffset[CurFile][CurZone[CurFile]], SEEK_SET); + int I; + for (I = 0; I < NumVars[CurFile]; I++) + { + if (!IsSharedVar[CurFile][I] && !IsPassiveVar[CurFile][I]) + { + WriteBinaryReal(BlckFile[CurFile], VarMinValue[CurFile][I], FieldDataType_Double); + WriteBinaryReal(BlckFile[CurFile], VarMaxValue[CurFile][I], FieldDataType_Double); + } + } + + /* return the original position */ + TP_FSEEK(BlckFile[CurFile]->File, CurrentOffset, SEEK_SET); +} + +/** + * TECDATXXX + */ +INTEGER4 LIBCALL TECDAT112(INTEGER4 *N, + void *Data, + INTEGER4 *IsDouble) +{ + LgIndex_t I; + double *dptr = (double *)Data; + float *fptr = (float *)Data; + + if (CheckFile("TECDAT112") < 0) + return (-1); + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile] && (*N > 1)) + PRINT2("Writing %d values to file %d.\n", *N, CurFile + 1); + #endif + + for (I = 0; I < *N; I++) + { + double Value = (*IsDouble == 1 ? dptr[I] : fptr[I]); + + /* keep track of var min/max */ + if (Value < VarMinValue[CurFile][CurVar[CurFile]]) + VarMinValue[CurFile][CurVar[CurFile]] = Value; + if (Value > VarMaxValue[CurFile][CurVar[CurFile]]) + VarMaxValue[CurFile][CurVar[CurFile]] = Value; + + if (!WriteBinaryReal(BlckFile[CurFile], Value, (FieldDataType_e)FieldDataType)) + { + WriteErr("TECDAT112"); + return (-1); + } + + /* + * As of version 103 Tecplot writes binary data files so that the ordered + * cell centered field data includes the ghost cells. This makes it much + * easier for Tecplot to map the data when reading by simply writing out + * field data's as a block. As of version 104 the ghost cells of the + * slowest moving index are not included. + */ + if (IsCellCentered[CurFile][CurVar[CurFile]] && ZoneType[CurFile] == ORDERED) + { + CHECK(IsBlock[CurFile]); /* ...ordered CC data must be block format */ + LgIndex_t PIndex = (NumOrderedCCDataValuesWritten[CurFile]); + LgIndex_t FinalIMax = MAX(IMax[CurFile] - 1, 1); + LgIndex_t FinalJMax = MAX(JMax[CurFile] - 1, 1); + LgIndex_t FinalKMax = MAX(KMax[CurFile] - 1, 1); + LgIndex_t IIndex = (PIndex % IMax[CurFile]); + LgIndex_t JIndex = ((PIndex % (IMax[CurFile] * JMax[CurFile])) / IMax[CurFile]); + LgIndex_t KIndex = (PIndex / (IMax[CurFile] * JMax[CurFile])); + LgIndex_t IMaxAdjust = 0; + LgIndex_t JMaxAdjust = 0; + LgIndex_t KMaxAdjust = 0; + if (KMax[CurFile] > 1) + KMaxAdjust = 1; /* ...K is slowest */ + else if (JMax[CurFile] > 1) + JMaxAdjust = 1; /* ...J is slowest */ + else if (IMax[CurFile] > 1) + IMaxAdjust = 1; /* ...I is slowest */ + + if (IIndex + 1 == FinalIMax && FinalIMax < IMax[CurFile] - IMaxAdjust) + { + NumOrderedCCDataValuesWritten[CurFile]++; + if (!WriteBinaryReal(BlckFile[CurFile], 0.0, (FieldDataType_e)FieldDataType)) + { + WriteErr("TECDAT112"); + return (-1); + } + } + if (IIndex + 1 == FinalIMax && + (JIndex + 1 == FinalJMax && FinalJMax < JMax[CurFile] - JMaxAdjust)) + { + LgIndex_t II; + for (II = 1; II <= IMax[CurFile] - IMaxAdjust; II++) + { + NumOrderedCCDataValuesWritten[CurFile]++; + if (!WriteBinaryReal(BlckFile[CurFile], 0.0, (FieldDataType_e)FieldDataType)) + { + WriteErr("TECDAT112"); + return (-1); + } + } + } + if (IIndex + 1 == FinalIMax && + JIndex + 1 == FinalJMax && + (KIndex + 1 == FinalKMax && FinalKMax < KMax[CurFile] - KMaxAdjust)) + { + LgIndex_t JJ, II; + for (JJ = 1; JJ <= JMax[CurFile] - JMaxAdjust; JJ++) + for (II = 1; II <= IMax[CurFile] - IMaxAdjust; II++) + { + NumOrderedCCDataValuesWritten[CurFile]++; + if (!WriteBinaryReal(BlckFile[CurFile], 0.0, (FieldDataType_e)FieldDataType)) + { + WriteErr("TECDAT112"); + return (-1); + } + } + } + + /* increment for the original cell value */ + NumOrderedCCDataValuesWritten[CurFile]++; + } + + /* update the number of data points written */ + NumDataValuesWritten[CurFile]++; + + if (IsBlock[CurFile]) + { + /* for block format update the variable when all values have been given */ + if (NumRunningVarValues[CurFile][CurVar[CurFile]] == NumDataValuesWritten[CurFile]) + { + AdvanceToNextVarWithValues(); /* ...move on to the next variable */ + if (CurVar[CurFile] < NumVars[CurFile] && + IsCellCentered[CurFile][CurVar[CurFile]] && + ZoneType[CurFile] == ORDERED) + NumOrderedCCDataValuesWritten[CurFile] = 0; /* reset for next CC variable */ + } + } + else + { + /* for point format update the variable after each value */ + AdvanceToNextVarWithValues(); + if (CurVar[CurFile] >= NumVars[CurFile]) + { + /* reset to the first active variable */ + CurVar[CurFile] = -1; + AdvanceToNextVarWithValues(); + } + } + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile] > 1) + PRINT2("%d %G\n", NumDataValuesWritten[CurFile] + I + 1, Value); + #endif + } + + /* + * If this is the last call to TECDAT112, + * then we may have to set the 'repeat adjacency list' + * flag in the file. + */ + if (HasFECONNECT[CurFile] && + + /* (essentialy this is CheckData() but we don't want to print + an error message) */ + (NumDataValuesToWrite[CurFile] == NumDataValuesWritten[CurFile])) + { + if (!WriteBinaryInt32(BlckFile[CurFile], (LgIndex_t)1)) + { + WriteErr("TECDAT112"); + return (-1); + } + } + + /* re-write min/max values when all data has been delivered */ + if (NumDataValuesToWrite[CurFile] == NumDataValuesWritten[CurFile]) + RewritePendingMinMaxValues(); + + return (0); +} + +INTEGER4 LIBCALL TECDAT111(INTEGER4 *N, + void *Data, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, + Data, + IsDouble); +} + +INTEGER4 LIBCALL TECDAT110(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, + FieldData, + IsDouble); +} + +INTEGER4 LIBCALL TECDAT100(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, + FieldData, + IsDouble); +} + +INTEGER4 LIBCALL TECDAT(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, + FieldData, + IsDouble); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecdat112_(INTEGER4 *N, + void *Data, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, Data, IsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecdat111_(INTEGER4 *N, + void *Data, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, Data, IsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecdat110_(INTEGER4 *N, + void *Data, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, Data, IsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecdat100_(INTEGER4 *N, + void *Data, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, Data, IsDouble); +} + +LIBFUNCTION INTEGER4 LIBCALL tecdat_(INTEGER4 *N, + void *FieldData, + INTEGER4 *IsDouble) +{ + return TECDAT112(N, + FieldData, + IsDouble); +} +#endif + +/** + * TECNODXXX + */ +INTEGER4 LIBCALL TECNOD112(INTEGER4 *NData) +{ + LgIndex_t L = NumConnectivityNodes[CurFile][CurZone[CurFile]]; + LgIndex_t I; + + ConnectivityWritten[CurFile][CurZone[CurFile]] = TRUE; + + if (CheckFile("TECNOD112") < 0) + return (-1); + + if (ZoneType[CurFile] == FEPOLYGON || + ZoneType[CurFile] == FEPOLYHEDRON) + { + /* Wrong way to specify connectivity for polygons and polyhedrons */ + #if defined MAKEARCHIVE + PRINT0("Err: (TECNOD112) Cannot call TECNOD112 for polygonal or polyhedral zones.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if (HasFECONNECT[CurFile]) + { + /* + * The connectivity list is duplicated, + * so we shouldn't be calling TECNOD112() + */ + return (-1); + } + + if (FileTypes[CurFile] == SOLUTIONFILE) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECNOD112) Cannot call TECNOD112 if file type is SOLUTIONFILE.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if (ZoneType[CurFile] == ORDERED) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECNOD112) Cannot call TECNOD110 if zone type is ORDERED.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if (CheckData("TECNOD112") < 0) + return (-1); + + for (I = 0; I < L; I++) + { + if ((NData[I] > IMax[CurFile]) || + (NData[I] < 1)) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECNOD112) Invalid node map value at position %d:\n", I); + PRINT2(" node map value = %d, max value = %d.\n", NData[I], IMax[CurFile]); + #endif + NumErrs[CurFile]++; + return (-1); + } + /* + * As of version 103 Tecplot assumes that node maps are zero based + * instead of ones based. Since we have to maintain the contract we + * subtract 1 for the caller. + */ + if (!WriteBinaryInt32(BlckFile[CurFile], NData[I] - 1)) /* zero based */ + { + WriteErr("TECNOD112"); + return (-1); + } + } + return (0); +} + +INTEGER4 LIBCALL TECNOD111(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +INTEGER4 LIBCALL TECNOD110(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +INTEGER4 LIBCALL TECNOD100(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +INTEGER4 LIBCALL TECNOD(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecnod112_(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +LIBFUNCTION INTEGER4 LIBCALL tecnod111_(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +LIBFUNCTION INTEGER4 LIBCALL tecnod110_(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +LIBFUNCTION INTEGER4 LIBCALL tecnod100_(INTEGER4 *NData) +{ + return TECNOD112(NData); +} + +LIBFUNCTION INTEGER4 LIBCALL tecnod_(INTEGER4 *NData) +{ + return TECNOD112(NData); +} +#endif + +/** + * TECENDXXX + */ +INTEGER4 LIBCALL TECEND112(void) +{ + int RetVal = 0; + + /** + * Validate that all zone data was given for the file since there are no + * more chances to give it. Note that solution files don't define the + * connectivity again. + */ + if (FileTypes[CurFile] != SOLUTIONFILE) + { + for (int ZoneIndex = 0; (RetVal == 0) && (ZoneIndex <= CurZone[CurFile]); ZoneIndex++) + { + if (((NumConnectivityNodes[CurFile][ZoneIndex] > 0) && + (ConnectivityWritten[CurFile][ZoneIndex] == FALSE))) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECEND112) File %d is being closed without writing connectivity data.\n", CurFile + 1); + PRINT1(" Zone %d was defined with a Classic FE zone type but TECNOD112() was not called.\n", ZoneIndex + 1); + #endif + NumErrs[CurFile]++; + RetVal = -1; + } + if (((NumFaceConnections[CurFile][ZoneIndex] > 0) && + (FaceNeighborsOrMapWritten[CurFile][ZoneIndex] == FALSE))) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECEND112) File %d is being closed without writing face neighbor data.\n", CurFile + 1); + PRINT2(" %d connections were specified for zone %d but TECFACE112() was not called.\n", + NumFaceConnections[CurFile][ZoneIndex], ZoneIndex + 1); + #endif + NumErrs[CurFile]++; + RetVal = -1; + } + else if (((TotalNumFaceNodes[CurFile][ZoneIndex] > 0) && + (FaceNeighborsOrMapWritten[CurFile][ZoneIndex] == FALSE))) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECEND112) File %d is being closed without writing face map data.\n", CurFile + 1); + PRINT2(" %d face nodes were specified for zone %d but TECPOLY112() was not called.\n", + TotalNumFaceNodes[CurFile][ZoneIndex], ZoneIndex + 1); + #endif + NumErrs[CurFile]++; + RetVal = -1; + } + } + } + + if (RetVal == 0) + { + if (CheckFile("TECEND112") < 0) + RetVal = -1; + } + + if (RetVal == 0) + { + if (CheckData("TECEND112") < 0) + RetVal = -1; + } + + if (RetVal == 0) + if (!WriteBinaryReal(HeadFile[CurFile], EndHeaderMarker, FieldDataType_Float)) + { + WriteErr("TECEND112"); + RetVal = -1; + } + + CloseFileStream(&BlckFile[CurFile]); + + if (RetVal == 0) + { + BlckFile[CurFile] = OpenFileStream(BlckFName[CurFile], "rb", IsWritingNative[CurFile]); + + /* Append data from BlckFile to HeadFile... */ + char buffer[BYTES_PER_CHUNK]; + size_t bytesRead = 0; + while ((RetVal == 0) && + (feof(BlckFile[CurFile]->File) == 0)) + { + bytesRead = fread((void*)buffer, 1, BYTES_PER_CHUNK, BlckFile[CurFile]->File); + if (ferror(BlckFile[CurFile]->File) == 0) + { + if (bytesRead != fwrite((void*)buffer, 1, bytesRead, HeadFile[CurFile]->File)) + { + /* do not call WriteErr, use custom message instead */ + #if defined MAKEARCHIVE + PRINT1("Err: (TECEND112) Write failure during repack on file %d.\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + RetVal = -1; + } + } + else + { + /* do not call WriteErr, use custom message instead */ + #if defined MAKEARCHIVE + PRINT1("Err: (TECEND112) Write failure during repack on file %d.\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + RetVal = -1; + } + } + CloseFileStream(&BlckFile[CurFile]); + } + + TP_UNLINK(BlckFName[CurFile]); + + CloseFileStream(&HeadFile[CurFile]); + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + { + PRINT1("File %d closed.\n", CurFile + 1); + if (NumErrs[CurFile]) + { + PRINT0("********************************************\n"); + PRINT1(" %d Errors occurred on this file\n", NumErrs[CurFile]); + PRINT0("********************************************\n"); + } + } + #endif + + NumErrs[CurFile] = 0; + IsOpen[CurFile] = 0; + if (DestFName[CurFile]) + FREE_ARRAY(DestFName[CurFile], "data set fname"); + if (BlckFName[CurFile]) + FREE_ARRAY(BlckFName[CurFile], "data set fname"); + BlckFName[CurFile] = NULL; + DestFName[CurFile] = NULL; + + /* reset arrays sized by number of variables */ + VarMinValue[CurFile].clear(); + VarMaxValue[CurFile].clear(); + NumRunningVarValues[CurFile].clear(); + IsSharedVar[CurFile].clear(); + IsPassiveVar[CurFile].clear(); + IsCellCentered[CurFile].clear(); + + /* reset arrays sized by number of zones */ + MinMaxOffset[CurFile].clear(); + TotalNumFaceNodes[CurFile].clear(); + NumFaceConnections[CurFile].clear(); + FaceNeighborsOrMapWritten[CurFile].clear(); + NumConnectivityNodes[CurFile].clear(); + ConnectivityWritten[CurFile].clear(); + + CurFile = 0; + while ((CurFile < MaxNumFiles) && !IsOpen[CurFile]) + CurFile++; + + if (CurFile == MaxNumFiles) + CurFile = -1; + + return RetVal; +} + +INTEGER4 LIBCALL TECEND111(void) +{ + return TECEND112(); +} + +INTEGER4 LIBCALL TECEND110(void) +{ + return TECEND112(); +} + +INTEGER4 LIBCALL TECEND100(void) +{ + return TECEND112(); +} + +INTEGER4 LIBCALL TECEND(void) +{ + return TECEND112(); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecend112_(void) +{ + return TECEND112(); +} + +LIBFUNCTION INTEGER4 LIBCALL tecend111_(void) +{ + return TECEND112(); +} + +LIBFUNCTION INTEGER4 LIBCALL tecend110_(void) +{ + return TECEND112(); +} + +LIBFUNCTION INTEGER4 LIBCALL tecend100_(void) +{ + return TECEND112(); +} + +LIBFUNCTION INTEGER4 LIBCALL tecend_(void) +{ + return TECEND112(); +} +#endif + + + + +static void GetNextLabel(const char **CPtr, + char *NextLabel) +{ + int N = 0; + char *NPtr = NextLabel; + *NPtr = '\0'; + /* Find label start */ + while ((**CPtr) && (**CPtr != '"')) + (*CPtr)++; + if (**CPtr) + (*CPtr)++; + while ((N < 60) && (**CPtr) && (**CPtr != '"')) + { + if (**CPtr == '\\') + { + (*CPtr)++; + } + *NPtr++ = **CPtr; + N++; + (*CPtr)++; + } + if (**CPtr) + (*CPtr)++; + *NPtr = '\0'; +} + + +/** + * TECLABXXX + */ +INTEGER4 LIBCALL TECLAB112(char *S) +{ + const char *CPtr = (const char *)S; + LgIndex_t N = 0; + char Label[60]; + + if (CheckFile("TECLAB112") < 0) + return (-1); + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT0("\nInserting Custom Labels:\n"); + #endif + + do + { + GetNextLabel(&CPtr, Label); + if (*Label) + N++; + } + while (*Label); + + if (N == 0) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECLAB112) Invalid custom label string: %s\n", + (S ? S : " ")); + #endif + NumErrs[CurFile]++; + return (-1); + } + + WriteBinaryReal(HeadFile[CurFile], CustomLabelMarker, FieldDataType_Float); + if (!WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)N)) + { + WriteErr("TECLAB112"); + return (-1); + } + + CPtr = (const char *)S; + do + { + GetNextLabel(&CPtr, Label); + if (*Label) + { + if (!DumpDatafileString(HeadFile[CurFile], Label, TRUE)) + { + WriteErr("TECLAB112"); + return (-1); + } + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + printf(" %s\n", Label); + #endif + } + } + while (*Label); + + return (0); +} + +INTEGER4 LIBCALL TECLAB111(char *S) +{ + return TECLAB112(S); +} + +INTEGER4 LIBCALL TECLAB110(char *S) +{ + return TECLAB112(S); +} + +INTEGER4 LIBCALL TECLAB100(char *S) +{ + return TECLAB112(S); +} + +INTEGER4 LIBCALL TECLAB(char *S) +{ + return TECLAB112(S); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL teclab112_(char *S) +{ + return TECLAB112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL teclab111_(char *S) +{ + return TECLAB112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL teclab110_(char *S) +{ + return TECLAB112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL teclab100_(char *S) +{ + return TECLAB112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL teclab_(char *S) +{ + return TECLAB112(S); +} +#endif + + +/** + * TECUSRXXX + */ +INTEGER4 LIBCALL TECUSR112(char *S) +{ + if (CheckFile("TECUSR112") < 0) + return (-1); + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT1("\nInserting UserRec: %s\n", S); + #endif + + if ((S == NULL) || (*S == '\0')) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECUSR112) Invalid TECUSR110 string\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + WriteBinaryReal(HeadFile[CurFile], UserRecMarker, FieldDataType_Float); + if (!DumpDatafileString(HeadFile[CurFile], S, TRUE)) + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + printf("Err: (TECUSR112) Write failure for file %d\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + return (0); +} + +INTEGER4 LIBCALL TECUSR111(char *S) +{ + return TECUSR112(S); +} + +INTEGER4 LIBCALL TECUSR110(char *S) +{ + return TECUSR112(S); +} + +INTEGER4 LIBCALL TECUSR100(char *S) +{ + return TECUSR112(S); +} + +INTEGER4 LIBCALL TECUSR(char *S) +{ + return TECUSR112(S); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecusr112_(char *S) +{ + return TECUSR112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL tecusr111_(char *S) +{ + return TECUSR112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL tecusr110_(char *S) +{ + return TECUSR112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL tecusr100_(char *S) +{ + return TECUSR112(S); +} + +LIBFUNCTION INTEGER4 LIBCALL tecusr_(char *S) +{ + return TECUSR112(S); +} +#endif + +#if 0 // NOT_CURRENTLY_USED +static int WriteGeomDataBlock(float *Data, + LgIndex_t NumPts) +{ + LgIndex_t I; + + for (I = 0; I < NumPts; I++) + { + if (!WriteBinaryReal(HeadFile[CurFile], Data[I], FieldDataType_Float)) + { + return (-1); + } + } + return (0); +} + + +static void ShowDebugColor(LgIndex_t Color) +{ + #if defined MAKEARCHIVE + switch (Color) + { + case 0 : PRINT0("BLACK\n"); break; + case 1 : PRINT0("RED\n"); break; + case 2 : PRINT0("GREEN\n"); break; + case 3 : PRINT0("BLUE\n"); break; + case 4 : PRINT0("CYAN\n"); break; + case 5 : PRINT0("YELLOW\n"); break; + case 6 : PRINT0("PURPLE\n"); break; + case 7 : PRINT0("WHITE\n"); break; + case 8 : + case 9 : + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: PRINT1("CUSTOM%1d\n", Color-7); break; + default : PRINT0("INVALID\n"); + } + #endif +} +#endif /* NOT_CURRENTLY_USED */ + + +/** + * TECGEOXXX + */ +INTEGER4 LIBCALL TECGEO112(double *XOrThetaPos, + double *YOrRPos, + double *ZPos, + INTEGER4 *PosCoordMode, /* 0=Grid, 1=Frame, 3=Grid3D */ + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XOrThetaGeomData, + float *YOrRGeomData, + float *ZGeomData, + char *mfc) +{ + int I, RetVal; + int RawDataSize = 0; + double Fract; + + Geom_s Geom; + + if (CheckFile("TECGEO112") < 0) + return (-1); + + Geom.PositionCoordSys = (CoordSys_e) * PosCoordMode; + if (Geom.PositionCoordSys == CoordSys_Frame) + Fract = 0.01; + else + Fract = 1.0; + + Geom.AnchorPos.Generic.V1 = (*XOrThetaPos) * Fract; + Geom.AnchorPos.Generic.V2 = (*YOrRPos) * Fract; + Geom.AnchorPos.Generic.V3 = (*ZPos) * Fract; + Geom.AttachToZone = *AttachToZone != 0; + Geom.Zone = *Zone - 1; + Geom.BColor = (ColorIndex_t) * Color; + Geom.FillBColor = (ColorIndex_t) * FillColor; + Geom.IsFilled = *IsFilled; + Geom.GeomType = (GeomType_e) * GeomType; + Geom.LinePattern = (LinePattern_e) * LinePattern; + Geom.PatternLength = *PatternLength / 100.0; + Geom.LineThickness = *LineThickness / 100.0; + Geom.NumEllipsePts = *NumEllipsePts; + Geom.ArrowheadStyle = (ArrowheadStyle_e) * ArrowheadStyle; + Geom.ArrowheadAttachment = (ArrowheadAttachment_e) * ArrowheadAttachment; + Geom.ArrowheadSize = *ArrowheadSize / 100.0; + Geom.ArrowheadAngle = *ArrowheadAngle / DEGPERRADIANS; + Geom.Scope = (Scope_e) * Scope; + Geom.DrawOrder = DrawOrder_AfterData; + Geom.Clipping = (Clipping_e) * Clipping; + Geom.NumSegments = *NumSegments; + Geom.MacroFunctionCommand = mfc; + Geom.ImageFileName = NULL; + Geom.ImageNumber = 0; + Geom.MaintainAspectRatio = TRUE; + Geom.PixelAspectRatio = 1.0; + Geom.ImageResizeFilter = ImageResizeFilter_Texture; + + if (Geom.GeomType == GeomType_LineSegs3D) + { + Geom.GeomType = GeomType_LineSegs; + Geom.PositionCoordSys = CoordSys_Grid3D; + } + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT0("\nInserting Geometry\n"); + #endif + + switch (Geom.GeomType) + { + case GeomType_LineSegs : + { + int I; + RawDataSize = 0; + for (I = 0; I < *NumSegments; I++) + { + Geom.NumSegPts[I] = NumSegPts[I]; + RawDataSize += NumSegPts[I]; + } + } break; + case GeomType_Rectangle : + case GeomType_Square : + case GeomType_Circle : + case GeomType_Ellipse : + { + RawDataSize = 1; + } break; + case GeomType_Image : + { + CHECK(FALSE); /* Images not allowed in data files. */ + } break; + default : + { + CHECK(FALSE); + } break; + } + + Geom.DataType = FieldDataType_Float; + Geom.GeomData.Generic.V1Base = AllocScratchNodalFieldDataPtr(RawDataSize, FieldDataType_Float, TRUE); + Geom.GeomData.Generic.V2Base = AllocScratchNodalFieldDataPtr(RawDataSize, FieldDataType_Float, TRUE); + Geom.GeomData.Generic.V3Base = AllocScratchNodalFieldDataPtr(RawDataSize, FieldDataType_Float, TRUE); + + for (I = 0; I < RawDataSize; I++) + { + SetFieldValue(Geom.GeomData.Generic.V1Base, I, (double)XOrThetaGeomData[I]*Fract); + SetFieldValue(Geom.GeomData.Generic.V2Base, I, (double)YOrRGeomData[I]*Fract); + SetFieldValue(Geom.GeomData.Generic.V3Base, I, (double)ZGeomData[I]*Fract); + } + + if (DumpGeometry(HeadFile[CurFile], &Geom, TRUE, FALSE)) + RetVal = 0; + else + RetVal = -1; + + DeallocScratchNodalFieldDataPtr(&Geom.GeomData.Generic.V1Base); + DeallocScratchNodalFieldDataPtr(&Geom.GeomData.Generic.V2Base); + DeallocScratchNodalFieldDataPtr(&Geom.GeomData.Generic.V3Base); + + return RetVal; +} + +INTEGER4 LIBCALL TECGEO111(double *XOrThetaPos, + double *YOrRPos, + double *ZPos, + INTEGER4 *PosCoordMode, /* 0=Grid, 1=Frame, 3=Grid3D */ + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XOrThetaGeomData, + float *YOrRGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO112(XOrThetaPos, + YOrRPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + Clipping, + NumSegments, + NumSegPts, + XOrThetaGeomData, + YOrRGeomData, + ZGeomData, + mfc); +} + +INTEGER4 LIBCALL TECGEO110(double *XOrThetaPos, + double *YOrRPos, + double *ZPos, + INTEGER4 *PosCoordMode, /* 0=Grid, 1=Frame, 3=Grid3D */ + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XOrThetaGeomData, + float *YOrRGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO112(XOrThetaPos, + YOrRPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + Clipping, + NumSegments, + NumSegPts, + XOrThetaGeomData, + YOrRGeomData, + ZGeomData, + mfc); +} + +INTEGER4 LIBCALL TECGEO100(double *XOrThetaPos, + double *YOrRPos, + double *ZPos, + INTEGER4 *PosCoordMode, /* 0=Grid, 1=Frame, 3=Grid3D */ + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XOrThetaGeomData, + float *YOrRGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO112(XOrThetaPos, + YOrRPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + Clipping, + NumSegments, + NumSegPts, + XOrThetaGeomData, + YOrRGeomData, + ZGeomData, + mfc); +} + +INTEGER4 LIBCALL TECGEO(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc) +{ + int Clipping = (int)Clipping_ClipToViewport; + return TECGEO112(XPos, + YPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + &Clipping, + NumSegments, + NumSegPts, + XGeomData, + YGeomData, + ZGeomData, + mfc); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecgeo112_(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO112(XPos, + YPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + Clipping, + NumSegments, + NumSegPts, + XGeomData, + YGeomData, + ZGeomData, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tecgeo111_(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO112(XPos, + YPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + Clipping, + NumSegments, + NumSegPts, + XGeomData, + YGeomData, + ZGeomData, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tecgeo110_(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO112(XPos, + YPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + Clipping, + NumSegments, + NumSegPts, + XGeomData, + YGeomData, + ZGeomData, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tecgeo100_(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *Clipping, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO112(XPos, + YPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + Clipping, + NumSegments, + NumSegPts, + XGeomData, + YGeomData, + ZGeomData, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tecgeo_(double *XPos, + double *YPos, + double *ZPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *Color, + INTEGER4 *FillColor, + INTEGER4 *IsFilled, + INTEGER4 *GeomType, + INTEGER4 *LinePattern, + double *PatternLength, + double *LineThickness, + INTEGER4 *NumEllipsePts, + INTEGER4 *ArrowheadStyle, + INTEGER4 *ArrowheadAttachment, + double *ArrowheadSize, + double *ArrowheadAngle, + INTEGER4 *Scope, + INTEGER4 *NumSegments, + INTEGER4 *NumSegPts, + float *XGeomData, + float *YGeomData, + float *ZGeomData, + char *mfc) +{ + return TECGEO(XPos, + YPos, + ZPos, + PosCoordMode, + AttachToZone, + Zone, + Color, + FillColor, + IsFilled, + GeomType, + LinePattern, + PatternLength, + LineThickness, + NumEllipsePts, + ArrowheadStyle, + ArrowheadAttachment, + ArrowheadSize, + ArrowheadAngle, + Scope, + NumSegments, + NumSegPts, + XGeomData, + YGeomData, + ZGeomData, + mfc); +} +#endif + +/** + * TECTXTXXX + */ +INTEGER4 LIBCALL TECTXT112(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + int RetVal; + Text_s Text; + double Fract; + if (CheckFile("TECTXT112") < 0) + return (-1); + + Text.PositionCoordSys = (CoordSys_e) * PosCoordMode; + if (Text.PositionCoordSys == CoordSys_Frame) + Fract = 0.01; + else + Fract = 1.0; + + Text.AnchorPos.Generic.V1 = (*XOrThetaPos) * Fract; + Text.AnchorPos.Generic.V2 = (*YOrRPos) * Fract; + Text.AnchorPos.Generic.V3 = (*ZOrUnusedPos) * Fract; + Text.AttachToZone = *AttachToZone != 0; + Text.Zone = *Zone - 1; + Text.BColor = (ColorIndex_t) * TextColor; + Text.TextShape.Font = (Font_e) * BFont; + Text.TextShape.SizeUnits = (Units_e) * FontHeightUnits; + if (Text.TextShape.SizeUnits == Units_Frame) + Text.TextShape.Height = (*FontHeight) / 100.0; + else + Text.TextShape.Height = *FontHeight; + Text.Box.BoxType = (TextBox_e) * BoxType; + Text.Box.Margin = *BoxMargin / 100.0; + Text.Box.LineThickness = *BoxLineThickness / 100.0; + Text.Box.BColor = (ColorIndex_t) * BoxColor; + Text.Box.FillBColor = (ColorIndex_t) * BoxFillColor; + Text.Anchor = (TextAnchor_e) * Anchor; + Text.LineSpacing = *LineSpacing; + Text.Angle = *Angle / DEGPERRADIANS; + Text.Scope = (Scope_e) * Scope; + Text.Text = String; + Text.MacroFunctionCommand = mfc; + Text.Clipping = (Clipping_e) * Clipping; + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT1("\nInserting Text: %s\n", String); + #endif + + if (DumpText(HeadFile[CurFile], &Text, TRUE, FALSE)) + RetVal = 0; + else + RetVal = -1; + + return RetVal; +} + +INTEGER4 LIBCALL TECTXT111(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + return TECTXT112(XOrThetaPos, + YOrRPos, + ZOrUnusedPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Clipping, + String, + mfc); +} + +INTEGER4 LIBCALL TECTXT110(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + return TECTXT112(XOrThetaPos, + YOrRPos, + ZOrUnusedPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Clipping, + String, + mfc); +} + +INTEGER4 LIBCALL TECTXT100(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + return TECTXT112(XOrThetaPos, + YOrRPos, + ZOrUnusedPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Clipping, + String, + mfc); +} + +INTEGER4 LIBCALL TECTXT(double *XPos, + double *YPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + char *Text, + char *mfc) +{ + double ZPos = 0.0; + int Clipping = (int)Clipping_ClipToViewport; + return TECTXT112(XPos, + YPos, + &ZPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + &Clipping, + Text, + mfc); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tectxt112_(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + return TECTXT112(XOrThetaPos, + YOrRPos, + ZOrUnusedPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Clipping, + String, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tectxt111_(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + return TECTXT112(XOrThetaPos, + YOrRPos, + ZOrUnusedPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Clipping, + String, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tectxt110_(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + return TECTXT112(XOrThetaPos, + YOrRPos, + ZOrUnusedPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Clipping, + String, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tectxt100_(double *XOrThetaPos, + double *YOrRPos, + double *ZOrUnusedPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + INTEGER4 *Clipping, + char *String, + char *mfc) +{ + return TECTXT112(XOrThetaPos, + YOrRPos, + ZOrUnusedPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Clipping, + String, + mfc); +} + +LIBFUNCTION INTEGER4 LIBCALL tectxt_(double *XPos, + double *YPos, + INTEGER4 *PosCoordMode, + INTEGER4 *AttachToZone, + INTEGER4 *Zone, + INTEGER4 *BFont, + INTEGER4 *FontHeightUnits, + double *FontHeight, + INTEGER4 *BoxType, + double *BoxMargin, + double *BoxLineThickness, + INTEGER4 *BoxColor, + INTEGER4 *BoxFillColor, + double *Angle, + INTEGER4 *Anchor, + double *LineSpacing, + INTEGER4 *TextColor, + INTEGER4 *Scope, + char *Text, + char *mfc) +{ + return TECTXT(XPos, + YPos, + PosCoordMode, + AttachToZone, + Zone, + BFont, + FontHeightUnits, + FontHeight, + BoxType, + BoxMargin, + BoxLineThickness, + BoxColor, + BoxFillColor, + Angle, + Anchor, + LineSpacing, + TextColor, + Scope, + Text, + mfc); +} +#endif + + +/** + * TECFILXXX + */ +INTEGER4 LIBCALL TECFIL112(INTEGER4 *F) +{ + if ((*F < 1) || (*F > MaxNumFiles)) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECFIL112) Invalid file number requested (%d). File not changed.\n", *F); + #endif + return (-1); + } + + if (!IsOpen[*F-1]) + { + #if defined MAKEARCHIVE + int I; + PRINT1("Err: (TECFIL112) file %d is not open. File not changed.\n", *F); + PRINT0("\n\nFile states are:\n"); + for (I = 0; I < MaxNumFiles; I++) + PRINT2("file %d, IsOpen=%d\n", I + 1, IsOpen[I]); + PRINT1("Current File is: %d\n", CurFile + 1); + #endif + return (-1); + } + CurFile = *F - 1; + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + { + PRINT1("Switching to file #%d\n\n", CurFile + 1); + PRINT0("Current State is:\n"); + PRINT1(" Debug = %d\n", DebugLevel[CurFile]); + PRINT1(" NumVars = %d\n", NumVars[CurFile]); + PRINT1(" DestFName = %s\n", DestFName[CurFile]); + PRINT1(" BlckFName = %s\n", BlckFName[CurFile]); + PRINT1(" ZoneType = %s\n", ZoneTypes[ZoneType[CurFile]]); + + if (ZoneType[CurFile] == ORDERED) + { + PRINT1(" IMax = %d\n", IMax[CurFile]); + PRINT1(" JMax = %d\n", JMax[CurFile]); + PRINT1(" KMax = %d\n", KMax[CurFile]); + } + else + { + PRINT1(" NumPoints = %d\n", IMax[CurFile]); + PRINT1(" NumElmnts = %d\n", JMax[CurFile]); + } + PRINT1(" NumDataValuesWritten = %d\n", NumDataValuesWritten[CurFile]); + PRINT1(" CurZone = %d\n", CurZone[CurFile] + 1); + } + #endif /* MAKEARCHIVE */ + return (0); +} + +INTEGER4 LIBCALL TECFIL111(INTEGER4 *F) +{ + return TECFIL112(F); +} + +INTEGER4 LIBCALL TECFIL110(INTEGER4 *F) +{ + return TECFIL112(F); +} + +INTEGER4 LIBCALL TECFIL100(INTEGER4 *F) +{ + return TECFIL112(F); +} + +INTEGER4 LIBCALL TECFIL(INTEGER4 *F) +{ + return TECFIL112(F); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecfil112_(INTEGER4 *F) +{ + return TECFIL112(F); +} + +LIBFUNCTION INTEGER4 LIBCALL tecfil111_(INTEGER4 *F) +{ + return TECFIL112(F); +} + +LIBFUNCTION INTEGER4 LIBCALL tecfil110_(INTEGER4 *F) +{ + return TECFIL112(F); +} + +LIBFUNCTION INTEGER4 LIBCALL tecfil100_(INTEGER4 *F) +{ + return TECFIL112(F); +} + +LIBFUNCTION INTEGER4 LIBCALL tecfil_(INTEGER4 *F) +{ + return TECFIL112(F); +} +#endif + +/** + * TECFOREIGNXXX + */ +void LIBCALL TECFOREIGN112(INTEGER4 *OutputForeignByteOrder) +{ + REQUIRE(VALID_REF(OutputForeignByteOrder)); + + DoWriteForeign = (*OutputForeignByteOrder != 0); +} + +void LIBCALL TECFOREIGN111(INTEGER4 *OutputForeignByteOrder) +{ + TECFOREIGN112(OutputForeignByteOrder); +} + +void LIBCALL TECFOREIGN110(INTEGER4 *OutputForeignByteOrder) +{ + TECFOREIGN112(OutputForeignByteOrder); +} + +void LIBCALL TECFOREIGN100(INTEGER4 *OutputForeignByteOrder) +{ + TECFOREIGN112(OutputForeignByteOrder); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION void LIBCALL tecforeign112_(INTEGER4 *OutputForeignByteOrder) +{ + TECFOREIGN112(OutputForeignByteOrder); +} + +LIBFUNCTION void LIBCALL tecforeign111_(INTEGER4 *OutputForeignByteOrder) +{ + TECFOREIGN112(OutputForeignByteOrder); +} + +LIBFUNCTION void LIBCALL tecforeign110_(INTEGER4 *OutputForeignByteOrder) +{ + TECFOREIGN112(OutputForeignByteOrder); +} + +LIBFUNCTION void LIBCALL tecforeign100_(INTEGER4 *OutputForeignByteOrder) +{ + TECFOREIGN112(OutputForeignByteOrder); +} +#endif + +#if defined MAKEARCHIVE + +/** + * A valid auxiliary data name character must begin with a '_' or alpha + * character and may be followed by one or more '_', '.', alpha or digit + * characters. + */ +static Boolean_t AuxDataIsValidNameChar(char Char, + Boolean_t IsLeadChar) +{ + Boolean_t IsValidNameChar; + + REQUIRE(0 <= Char && "Char <= 127"); + REQUIRE(VALID_BOOLEAN(IsLeadChar)); + + IsValidNameChar = (Char == '_' || + isalpha(Char)); + if (!IsLeadChar) + IsValidNameChar = (IsValidNameChar || + Char == '.' || + isdigit(Char)); + + ENSURE(VALID_BOOLEAN(IsValidNameChar)); + return IsValidNameChar; +} + +/** + * Indicates if the auxiliary data name is valid. A valid auxiliary data name + * must begin with a '_' or alpha character and may be followed by one or + * more '_', '.', alpha or digit characters. + */ +static Boolean_t AuxDataIsValidName(const char *Name) +{ + Boolean_t IsValidName; + const char *NPtr; + REQUIRE(VALID_REF(Name)); + + for (NPtr = Name, IsValidName = AuxDataIsValidNameChar(*NPtr, TRUE); + IsValidName && *NPtr != '\0'; + NPtr++) + { + IsValidName = AuxDataIsValidNameChar(*NPtr, FALSE); + } + + ENSURE(VALID_BOOLEAN(IsValidName)); + return IsValidName; +} + +#endif /* MAKEARCHIVE */ + +/** + * TECAUXSTRXXX + */ +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR112(char *Name, + char *Value) +{ + if (CheckFile("TECAUXSTR112") < 0) + return (-1); + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT2("\nInserting data set aux data: '%s' = '%s'\n", Name, Value); + #endif + + if ((Name == NULL) || !AuxDataIsValidName(Name)) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECAUXSTR112) Invalid Name string\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if ((Value == NULL) || (*Value == '\0')) + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT0("Err: (TECAUXSTR112) Invalid Value string\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + /* + * Because the auxiliary data is at the end of the header section we don't + * need to seek back to it. + */ + if (!WriteBinaryReal(HeadFile[CurFile], DataSetAuxMarker, FieldDataType_Float) || + !DumpDatafileString(HeadFile[CurFile], Name, TRUE /* WriteBinary */) || + !WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)AuxDataType_String) || + !DumpDatafileString(HeadFile[CurFile], (const char *)Value, TRUE /* WriteBinary */)) + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + printf("Err: (TECAUXSTR112) Write failure for file %d\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + return (0); +} + +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR111(char *Name, + char *Value) +{ + return TECAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR110(char *Name, + char *Value) +{ + return TECAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL TECAUXSTR100(char *Name, + char *Value) +{ + return TECAUXSTR112(Name, Value); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecauxstr112_(char *Name, + char *Value) +{ + return TECAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL tecauxstr111_(char *Name, + char *Value) +{ + return TECAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL tecauxstr110_(char *Name, + char *Value) +{ + return TECAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL tecauxstr100_(char *Name, + char *Value) +{ + return TECAUXSTR112(Name, Value); +} +#endif + + +/** + * TECZAUXSTRXXX + */ +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR112(char *Name, + char *Value) +{ + if (CheckFile("TECZAUXSTR112") < 0) + return (-1); + + if (CurZone[CurFile] == -1) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECZAUXSTR112) Must call TECZNE112 prior to TECZAUXSTR112\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT2("\nInserting zone aux data: '%s' = '%s'\n", Name, Value); + #endif + + if ((Name == NULL) || !AuxDataIsValidName(Name)) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECZAUXSTR112) Invalid Name string\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if ((Value == NULL) || (*Value == '\0')) + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT0("Err: (TECZAUXSTR112) Invalid Value string\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + /* + * Have to back over the 0 already written, then write another one afterward. + */ + if (TP_FSEEK(HeadFile[CurFile]->File, -4, SEEK_CUR) || + !WriteBinaryInt32(HeadFile[CurFile], 1) || + !DumpDatafileString(HeadFile[CurFile], Name, TRUE /* WriteBinary */) || + !WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)AuxDataType_String) || + !DumpDatafileString(HeadFile[CurFile], (const char *)Value, TRUE /* WriteBinary */) || + !WriteBinaryInt32(HeadFile[CurFile], 0)) + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + printf("Err: (TECZAUXSTR112) Write failure for file %d\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + + return (0); +} + +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR111(char *Name, + char *Value) +{ + return TECZAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR110(char *Name, + char *Value) +{ + return TECZAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL TECZAUXSTR100(char *Name, + char *Value) +{ + return TECZAUXSTR112(Name, Value); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL teczauxstr112_(char *Name, + char *Value) +{ + return TECZAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL teczauxstr111_(char *Name, + char *Value) +{ + return TECZAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL teczauxstr110_(char *Name, + char *Value) +{ + return TECZAUXSTR112(Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL teczauxstr100_(char *Name, + char *Value) +{ + return TECZAUXSTR112(Name, Value); +} +#endif + + +/** + * TECVAUXSTRXXX + */ +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR112(INTEGER4 *Var, + char *Name, + char *Value) +{ + if (CheckFile("TECVAUXSTR112") < 0) + return (-1); + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT2("\nInserting variable aux data: '%s' = '%s'\n", Name, Value); + #endif + + if ((Name == NULL) || !AuxDataIsValidName(Name)) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECVAUXSTR112) Invalid Name string\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if ((Value == NULL) || (*Value == '\0')) + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT0("Err: (TECVAUXSTR112) Invalid Value string\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if (!WriteBinaryReal(HeadFile[CurFile], VarAuxMarker, FieldDataType_Float) || + !WriteBinaryInt32(HeadFile[CurFile], *Var - 1) || + !DumpDatafileString(HeadFile[CurFile], Name, TRUE /* WriteBinary */) || + !WriteBinaryInt32(HeadFile[CurFile], (LgIndex_t)AuxDataType_String) || + !DumpDatafileString(HeadFile[CurFile], (const char *)Value, TRUE /* WriteBinary */)) + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + printf("Err: (TECVAUXSTR112) Write failure for file %d\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + + return (0); +} + +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR111(INTEGER4 *Var, + char *Name, + char *Value) +{ + return TECVAUXSTR112(Var, Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR110(INTEGER4 *Var, + char *Name, + char *Value) +{ + return TECVAUXSTR112(Var, Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL TECVAUXSTR100(INTEGER4 *Var, + char *Name, + char *Value) +{ + return TECVAUXSTR112(Var, Name, Value); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecvauxstr112_(INTEGER4 *Var, + char *Name, + char *Value) +{ + return TECVAUXSTR112(Var, Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL tecvauxstr111_(INTEGER4 *Var, + char *Name, + char *Value) +{ + return TECVAUXSTR112(Var, Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL tecvauxstr110_(INTEGER4 *Var, + char *Name, + char *Value) +{ + return TECVAUXSTR112(Var, Name, Value); +} + +LIBFUNCTION INTEGER4 LIBCALL tecvauxstr100_(INTEGER4 *Var, + char *Name, + char *Value) +{ + return TECVAUXSTR112(Var, Name, Value); +} +#endif + + +/** + * TECFACEXXX + */ +LIBFUNCTION INTEGER4 LIBCALL TECFACE112(INTEGER4 *FaceConnections) +{ + INTEGER4 i, *Ptr; + + /* Mark that the face neighbors have been written for the zone even if it fails so as not to add extra error messages. */ + FaceNeighborsOrMapWritten[CurFile][CurZone[CurFile]] = TRUE; + + if (CheckFile("TECFACE112") < 0) + return (-1); + + if (ZoneType[CurFile] == FEPOLYGON || + ZoneType[CurFile] == FEPOLYHEDRON) + { + /* Wrong way to specify face neighbors for polygons and polyhedrons */ + #if defined MAKEARCHIVE + PRINT0("Err: (TECFACE112) Cannot call TECFACE112 for polygonal or polyhedral zones.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if (FileTypes[CurFile] == SOLUTIONFILE) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECFACE112) Cannot call TECFACE112 if the file type is SOLUTIONFILE.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + PRINT0("\nInserting face neighbor data\n"); + #endif + + if (FaceConnections == NULL) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECFACE112) Invalid array\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + + /* + * Face neighbor connection have the following format for both + * binary: + * + * LOCALONETOONE 3 cz,fz,cz + * LOCALONETOMANY nz+4 cz,fz,oz,nz,cz1,cz2,...,czn + * GLOBALONETOONE 4 cz,fz,ZZ,CZ + * GLOBALONETOMANY 2*nz+4 cz,fz,oz,nz,ZZ1,CZ1,ZZ2,CZ2,...,ZZn,CZn + * + * Where: + * cz = cell in current zone + * fz = face of cell in current zone + * oz = face obsuration flag (only applies to one-to-many): + * 0 = face partially obscured + * 1 = face entirely obscured + * nz = number of cell or zone/cell associations (only applies to one-to-many) + * ZZ = remote Zone + * CZ = cell in remote zone + * + * NOTE: + * As of version 103 Tecplot assumes that face neighbors are zero based + * instead of ones based. Since we have to maintain the contract we + * subtract 1 for the caller. + */ + Ptr = FaceConnections; + i = 0; + while (i < NumFaceConnections[CurFile][CurZone[CurFile]]) + { + INTEGER4 n; + INTEGER4 NumNum = 0; + + switch (FaceNeighborMode[CurFile]) + { + case FaceNeighborMode_LocalOneToOne: + NumNum = 3; + i++; + break; + case FaceNeighborMode_LocalOneToMany: + NumNum = 4 + Ptr[3]; + i += Ptr[3]; + break; + case FaceNeighborMode_GlobalOneToOne: + NumNum = 4; + i++; + break; + case FaceNeighborMode_GlobalOneToMany: + NumNum = 4 + 2 * Ptr[3]; + i += Ptr[3]; + break; + default: + CHECK(FALSE); + break; + } + + n = 0; + if (FaceNeighborMode[CurFile] == FaceNeighborMode_LocalOneToMany || + FaceNeighborMode[CurFile] == FaceNeighborMode_GlobalOneToMany) + { + /* + * Write cz,fz,oz,nz: we do this by hand because the oz and nz values + * are not zero based values. + */ + if (!WriteBinaryInt32(BlckFile[CurFile], Ptr[n++] - 1) || /* zero based as of version 103 */ + !WriteBinaryInt32(BlckFile[CurFile], Ptr[n++] - 1) || /* zero based as of version 103 */ + !WriteBinaryInt32(BlckFile[CurFile], Ptr[n++]) || /* ones based */ + !WriteBinaryInt32(BlckFile[CurFile], Ptr[n++])) /* ones based */ + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + printf("Err: (TECFACE112) Write failure for file %d\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + + } + /* starting from where we left off, output the remaining values */ + for (; n < NumNum; n++) + if (!WriteBinaryInt32(BlckFile[CurFile], Ptr[n] - 1)) /* zero based as of version 103 */ + { + #if defined MAKEARCHIVE + if (DebugLevel[CurFile]) + printf("Err: (TECFACE112) Write failure for file %d\n", CurFile + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + Ptr += NumNum; + } + + return (0); +} + +LIBFUNCTION INTEGER4 LIBCALL TECFACE111(INTEGER4 *FaceConnections) +{ + return TECFACE112(FaceConnections); +} + +LIBFUNCTION INTEGER4 LIBCALL TECFACE110(INTEGER4 *FaceConnections) +{ + return TECFACE112(FaceConnections); +} + +LIBFUNCTION INTEGER4 LIBCALL TECFACE100(INTEGER4 *FaceConnections) +{ + return TECFACE112(FaceConnections); +} + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecface112_(INTEGER4 *FaceConnections) +{ + return TECFACE112(FaceConnections); +} + +LIBFUNCTION INTEGER4 LIBCALL tecface111_(INTEGER4 *FaceConnections) +{ + return TECFACE112(FaceConnections); +} + +LIBFUNCTION INTEGER4 LIBCALL tecface110_(INTEGER4 *FaceConnections) +{ + return TECFACE112(FaceConnections); +} + +LIBFUNCTION INTEGER4 LIBCALL tecface100_(INTEGER4 *FaceConnections) +{ + return TECFACE112(FaceConnections); +} +#endif + + +/** + * TECPOLYXXX + */ +LIBFUNCTION INTEGER4 LIBCALL TECPOLY112(INTEGER4 *FaceNodeCounts, + INTEGER4 *FaceNodes, + INTEGER4 *FaceLeftElems, + INTEGER4 *FaceRightElems, + INTEGER4 *FaceBndryConnectionCounts, + INTEGER4 *FaceBndryConnectionElems, + INTEGER4 *FaceBndryConnectionZones) +{ + INTEGER4 NumFaces = KMax[CurFile]; + INTEGER4 Result = 0; + LgIndex_t Index; + LgIndex_t MinNeighborValue = TECIO_NO_NEIGHBORING_ELEM; + + /* Mark that the face map has been written for the zone even if it fails so as not to add extra error messages. */ + FaceNeighborsOrMapWritten[CurFile][CurZone[CurFile]] = TRUE; + + if (NumFaces == 0 || + (ZoneType[CurFile] != FEPOLYGON && + ZoneType[CurFile] != FEPOLYHEDRON)) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECPOLY112) The zone type must be FEPOLYGON or FEPOLYHEDRON and have NumFaces (KMax) > 0.\n"); + PRINT1(" NumFaces = %d\n", NumFaces); + #endif + NumErrs[CurFile]++; + return (-1); + } + + if (ZoneType[CurFile] == FEPOLYHEDRON) /* FEPOLYGON doesn't need TotalNumFaceNodes since this is 2*NumFaces */ + { + if (TotalNumFaceNodes[CurFile][CurZone[CurFile]] <= 0) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECPOLY112) TotalNumFaceNodes MUST be specified for polyhedral zones.\n"); + PRINT1(" TotalNumFaceNodes = %d\n", TotalNumFaceNodes[CurFile][CurZone[CurFile]]); + #endif + NumErrs[CurFile]++; + return (-1); + } + } + else + { + if (TotalNumFaceNodes[CurFile][CurZone[CurFile]] != (2 * NumFaces)) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECPOLY112) TotalNumFaceNodes is specified for the polygonal zone but is not equal to 2 * NumFaces.\n"); + PRINT2(" TotalNumFaceNodes = %d. If specified, it must be 2 * %d.", TotalNumFaceNodes[CurFile][CurZone[CurFile]], NumFaces); + #endif + NumErrs[CurFile]++; + return (-1); + } + } + + if ((TotalNumFaceBndryFaces[CurFile] > 0 && + TotalNumFaceBndryConns[CurFile] > 0) || + (TotalNumFaceBndryFaces[CurFile] == 0 && + TotalNumFaceBndryConns[CurFile] == 0)) + { + if (TotalNumFaceBndryFaces[CurFile] > 0) + MinNeighborValue = -TotalNumFaceBndryFaces[CurFile]; + } + else + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECPOLY112) TotalNumFaceBndryFaces and TotalNumFaceBndryConns must both be 0 or both be > 0.\n"); + PRINT2(" TotalNumFaceBndryFaces = %d, TotalNumFaceBndryConns = %d\n", TotalNumFaceBndryFaces[CurFile], TotalNumFaceBndryConns[CurFile]); + #endif + NumErrs[CurFile]++; + return (-1); + } + + /* Write the facenodesoffsets array from the facenodecounts array. */ + if (Result == 0) + { + if (ZoneType[CurFile] == FEPOLYHEDRON) /* FEPOLYGON doesn't need to specify facenodesoffsets */ + { + Int32_t FaceNodeSum = 0; + if (!WriteBinaryInt32(BlckFile[CurFile], 0)) + Result = -1; + for (Index = 0; (Result == 0) && (Index < NumFaces); Index++) + { + FaceNodeSum += FaceNodeCounts[Index]; + if (FaceNodeCounts[Index] < 3) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid face node count value at face %d. There must be at least 3 nodes in a face.\n", Index + 1); + PRINT1(" Face node count value = %d.\n", FaceNodeCounts[Index]); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (FaceNodeSum > TotalNumFaceNodes[CurFile][CurZone[CurFile]]) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) The running face node count exceeds the TotalNumFaceNodes (%d) specified.\n", TotalNumFaceNodes[CurFile][CurZone[CurFile]]); + PRINT1(" Face node count value = %d.\n", FaceNodeCounts[Index]); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (!WriteBinaryInt32(BlckFile[CurFile], FaceNodeSum)) + Result = -1; + } + } + } + + /* Write the facenodes array but convert 1-based to 0-based. */ + for (Index = 0; (Result == 0) && (Index < TotalNumFaceNodes[CurFile][CurZone[CurFile]]); Index++) + { + if (FaceNodes[Index] < 1 || + FaceNodes[Index] > IMax[CurFile]) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid face node value at node %d:\n", Index + 1); + PRINT2(" face node value = %d, valid values are are 1 to %d (inclusive).\n", FaceNodes[Index], IMax[CurFile]); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (!WriteBinaryInt32(BlckFile[CurFile], FaceNodes[Index] - 1)) + Result = -1; + } + + /* Write the left elements array but convert 1-based to 0-based. */ + for (Index = 0; (Result == 0) && (Index < NumFaces); Index++) + { + if (FaceLeftElems[Index] < MinNeighborValue || + FaceLeftElems[Index] > JMax[CurFile]) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid left neighbor value at face %d:\n", Index); + PRINT2(" left neighbor value = %d, min value = %d,", FaceLeftElems[Index], MinNeighborValue); + PRINT1(" max value = %d.\n", JMax[CurFile]); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (!WriteBinaryInt32(BlckFile[CurFile], FaceLeftElems[Index] - 1)) + Result = -1; + } + /* Write the right elements array but convert 1-based to 0-based. */ + for (Index = 0; (Result == 0) && (Index < NumFaces); Index++) + { + if (FaceRightElems[Index] < MinNeighborValue || + FaceRightElems[Index] > JMax[CurFile]) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid right neighbor value at face %d:\n", Index); + PRINT2(" right neighbor value = %d, min value = %d,", FaceRightElems[Index], MinNeighborValue); + PRINT1(" max value = %d.\n", JMax[CurFile]); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (!WriteBinaryInt32(BlckFile[CurFile], FaceRightElems[Index] - 1)) + Result = -1; + + if (Result == 0 && + (FaceLeftElems[Index] == TECIO_NO_NEIGHBORING_ELEM && + FaceRightElems[Index] == TECIO_NO_NEIGHBORING_ELEM)) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Both left and right neighbors are set to no neighboring element at face %d.\n", Index); + #endif + NumErrs[CurFile]++; + return (-1); + } + } + + /* Write the boundary arrays. */ + if (Result == 0 && TotalNumFaceBndryFaces[CurFile] > 0) + { + /* Write the boundaryconnectionoffsets array from the boundaryconnectioncounts array. */ + + /* + * As a convenience for the ASCII format, TecUtil, and TECIO layers if any + * boundary connections exists we automatically add a no-neighboring + * connection as the first item so that they can user 0 for no-neighboring + * element in the element list regardless if they have boundary connections + * or not. + * + * The first 2 offsets are always 0 so that -1 in the left/right element + * arrays always indicates "no neighboring element". + */ + if (!(WriteBinaryInt32(BlckFile[CurFile], 0) && + WriteBinaryInt32(BlckFile[CurFile], 0))) + Result = -1; + + Int32_t BndryConnCount = 0; + for (Index = 0; (Result == 0) && (Index < TotalNumFaceBndryFaces[CurFile]); Index++) + { + BndryConnCount += FaceBndryConnectionCounts[Index]; + if (FaceBndryConnectionCounts[Index] < 0 || + BndryConnCount > TotalNumFaceBndryConns[CurFile]) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid boundary connection count at boundary face %d:\n", Index + 1); + PRINT1(" boundary connection count = %d.\n", FaceBndryConnectionCounts[Index]); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (!WriteBinaryInt32(BlckFile[CurFile], BndryConnCount)) + Result = -1; + } + if (BndryConnCount != TotalNumFaceBndryConns[CurFile]) + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECPOLY112) Invalid number of boundary connections:\n"); + PRINT2(" number of boundary connections written = %d, total number of boundary connections = %d.", + BndryConnCount, TotalNumFaceBndryConns[CurFile]); + #endif + NumErrs[CurFile]++; + return (-1); + } + + /* Write the boundary connection elements but convert 1-based to 0-based. */ + BndryConnCount = 0; + for (Index = 0; (Result == 0) && (Index < TotalNumFaceBndryFaces[CurFile]); Index++) + { + for (LgIndex_t BIndex = 0; (Result == 0) && (BIndex < FaceBndryConnectionCounts[Index]); BIndex++) + { + if (BIndex > 0 && + FaceBndryConnectionElems[BndryConnCount] == TECIO_NO_NEIGHBORING_ELEM) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Partially obscured faces must specify no neighboring element first. See boundary connections for face %d.\n", Index + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + if (FaceBndryConnectionElems[BndryConnCount] < TECIO_NO_NEIGHBORING_ELEM) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid boundary element value at boundary connections for face %d:\n", Index + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + if (FaceBndryConnectionElems[BndryConnCount] == TECIO_NO_NEIGHBORING_ELEM && + FaceBndryConnectionZones[BndryConnCount] != TECIO_NO_NEIGHBORING_ZONE) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid boundary element/zone pair at boundary connections for face %d:\n", Index + 1); + PRINT0(" Boundary elements specified as no neighboring element must also specify no neighboring zone.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (!WriteBinaryInt32(BlckFile[CurFile], FaceBndryConnectionElems[BndryConnCount] - 1)) + Result = -1; + BndryConnCount++; + } + } + + /* Write the boundary connection zones but convert 1-based to 0-based. */ + BndryConnCount = 0; + for (Index = 0; (Result == 0) && (Index < TotalNumFaceBndryFaces[CurFile]); Index++) + { + for (LgIndex_t BIndex = 0; (Result == 0) && (BIndex < FaceBndryConnectionCounts[Index]); BIndex++) + { + if (FaceBndryConnectionZones[BndryConnCount] < TECIO_NO_NEIGHBORING_ZONE) + { + #if defined MAKEARCHIVE + PRINT1("Err: (TECPOLY112) Invalid boundary zone value at boundary connections for face %d:\n", Index + 1); + #endif + NumErrs[CurFile]++; + return (-1); + } + else if (!WriteBinaryInt32(BlckFile[CurFile], FaceBndryConnectionZones[BndryConnCount] - 1)) + Result = -1; + BndryConnCount++; + } + } + } + if (Result != 0) + { + Result = -1; + WriteErr("TECPOLY112"); + } + + return Result; +} + +#if !defined INDEX_16_BIT // not supported in this test-only mode +LIBFUNCTION INTEGER4 LIBCALL TECPOLY111(INTEGER4 *FaceNodeCounts, + INTEGER4 *FaceNodes, + INTEGER4 *FaceLeftElems, + INTEGER4 *FaceRightElems, + INTEGER4 *FaceBndryConnectionCounts, + INTEGER4 *FaceBndryConnectionElems, + INTEGER2 *FaceBndryConnectionZones) +{ + INTEGER4 Result = 0; + EntIndex_t *FBCZones = NULL; + + if (TotalNumFaceBndryConns[CurFile] > 0) + { + ALLOC_ARRAY(TotalNumFaceBndryConns[CurFile], EntIndex_t, "32-bit FaceBndryConnectionZones"); + + if (FBCZones != NULL) + { + for (LgIndex_t ZoneI = 0; ZoneI < TotalNumFaceBndryFaces[CurFile]; ZoneI++) + FBCZones[ZoneI] = (EntIndex_t)FaceBndryConnectionZones[ZoneI]; + } + else + { + #if defined MAKEARCHIVE + PRINT0("Err: (TECPOLY111) Out of memory allocating temporary data.\n"); + #endif + NumErrs[CurFile]++; + return (-1); + } + } + + Result = TECPOLY112(FaceNodeCounts, + FaceNodes, + FaceLeftElems, + FaceRightElems, + FaceBndryConnectionCounts, + FaceBndryConnectionElems, + FBCZones); + + if (FBCZones != NULL) + FREE_ARRAY(FBCZones, "32-bit FaceBndryConnectionZones"); + + return Result; +} +#endif // INDEX_16_BIT -- not supported in this test-only mode + +#if defined MAKEARCHIVE && !defined _WIN32 /* every platform but Windows Intel */ +LIBFUNCTION INTEGER4 LIBCALL tecpoly112_(INTEGER4 *FaceNodeCounts, + INTEGER4 *FaceNodes, + INTEGER4 *FaceLeftElems, + INTEGER4 *FaceRightElems, + INTEGER4 *FaceBndryConnectionOffsets, + INTEGER4 *FaceBndryConnectionElems, + INTEGER4 *FaceBndryConnectionZones) +{ + return TECPOLY112(FaceNodeCounts, + FaceNodes, + FaceLeftElems, + FaceRightElems, + FaceBndryConnectionOffsets, + FaceBndryConnectionElems, + FaceBndryConnectionZones); +} + +LIBFUNCTION INTEGER4 LIBCALL tecpoly111_(INTEGER4 *FaceNodeCounts, + INTEGER4 *FaceNodes, + INTEGER4 *FaceLeftElems, + INTEGER4 *FaceRightElems, + INTEGER4 *FaceBndryConnectionOffsets, + INTEGER4 *FaceBndryConnectionElems, + INTEGER2 *FaceBndryConnectionZones) +{ + return TECPOLY111(FaceNodeCounts, + FaceNodes, + FaceLeftElems, + FaceRightElems, + FaceBndryConnectionOffsets, + FaceBndryConnectionElems, + FaceBndryConnectionZones); +} +#endif + +#if defined TECPLOTKERNEL +/* CORE SOURCE CODE REMOVED */ +#endif diff --git a/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio2009.zip b/applications/utilities/postProcessing/dataConversion/foamToTecplot360/tecio2009.zip new file mode 100644 index 0000000000000000000000000000000000000000..cf5c035ce90eb3b71fd8fdc94d874a6cf1b5abbf GIT binary patch literal 1314306 zcmY&<b97|g@^&<_GqIhCZFFqgwry)-+qP}n*2H!uc78MOz4u+;_eXbC*RFc%*;Tdn zIo+#|oFpjNcOW1jNFW4%cP{dA-DKYu1R%ZM??CW>tVa4y`X;sx*7{Dgc19*v>h4<7 z=WnEY$ubn}LYoOfl+)RvA;i)oNr`6dK??R65R5@2f&*}2`C><6VK#x)goMJB!rw8W zjZcdGN3VIFT=};79v5B;IL{k4JgZ#QW<0j48fN<~$ao{ZpLTjZ<f;^k%~I114+2xY z3k?s)f9w9#$?ofp)2SG2HS)(GH;*5*59><J<&ZE40}3%!56em=U=Kri4c~<wmOKjE z9HbU!GKfDELnu=^IP8&d5v{u*R?tGfIQ-a7n1vG#U-iY$MEZKuy!gTo*=HXEjl_X9 zWcQP2hhazu#|Z2@$H)f5m=N&65d?}X>HUC=1bZT$^#zUWrTA$NpyRIxK=3nQ^qN82 zkzpW1V8D!o@6hK)?XZugnfkLL7XX_gm-w;969Ahw_WzOnJI>!B8snH@8slK$8sn(H zHOAopH^y<pH~r>rjqYd9jS`4})C1G<{f-Pl9}cumfd#Qnk^biu0=iCtc7+gL;LjQ! z>KQQ%nF}WmoN1m3v2GRsnrR*nylxf_o@t&Awr&;zlxdCzx*ppEn8tx=`VG4?smDA! zoU05*9{{wDf$RY#cniQ5tn*_MWCCCh$oVl1!~?L?9Y)hea#^z>R_ZWdu15CkzUslg zJ=c-^VxkTP?V|p+@<Vc<sgKdlx|TW<K}p4rHF*Ts6h6>rTz__e9mfMh6tKM`c7pwj zz%vQksK$Z$7d{T?3dsm#ER!hzG<W3>ZgB6+k-V5Y_IsIZzpb%^*%~+KS5#TSm>qd! zKa9!>3ILGxJArdjsB=;;z1#$(`U5ydJF-Eh95&@bZ-cyWaqv21Bw27K6s!k|e_byE zBKW&sFMBKvWTdGdD^46R2D}A@fB(0gNNASXkZ`;mYAOPt0)IY~(N#ZIBji}7P+)7b z-vZOzqs$cW!1w~yFb-h;ynaml0qarpJAz>R{vP6p%r}GqdS<y%dj1H6WW5nk0T8@F z^s(o1SRlMXMza8HaUgsmv3Q_$G3aN+ez)AHLXKX{B=cOjL$c8{&<993rqO1wa616@ zxU?Tr_~n1(xb*)ozjdVo+Mpalbfj{Bfw3>lMnDODvn$R+M`7**nP$E>_<qf=BM61! z#(>2W8;1zqiJ{Dm_K){2Xl5FJXKEjRGI{DBNeJ)}v4*}k2mwh$wU#^?f`v8(!XAv6 zOB9?AbYmC@+=8A$yf;8gqwWR&ZIBGa16GfGGDNMB_>U9gx6HLa7>58dA&h&2WQa7x zroh<<4jdx^Bi}y~*+?LWpH4&*#_s4(a5QjQ?9N{anuh57hcE};AGfvH2=_nk0r-Ov zakxO!?*uxNiUcUg+;HAMP5+=;v)vPB|M6G$-VrQ>4aK-2R9J=rf_<zd0rylxF7QK$ zD{VryNWevf<Ve5(^@2<i*%2hM=pZ!3J0L_}qjdw1_U9DaV=oOXyyykfBN@#nvAFVQ z#d!oKfqzpDf^*<Qa{~)Y2erec^w7(kD-1lB;|97D(bt=a{eGdZo{Z!{gvF!L3U7xK z{6ptwo<CVI#t3v5n5eTztEzFT9UTFz8%jE%mfDlOdY1nRl0Zz-RJGj)VI*4gkAA<A zz4}++92g5?+6q*}fndildWBSCMDS(QezUw|f=GWYxg6LWm}xg7QSbirfC(=ggPjXh z{lr;fL=l*Cj(#<L-j64Cq)46-m^XeUC5F-{@*wYT{bKr8gT~!33>v9(NUWpJzX>KL z+9~M4N4bL2Q1u51R^s|6{pg`9O%HtgC&TGgR(%N~(O=7~I{e)QyU8X&AhCn+WuWgu zE>_WQ2Qc-E`;76(G7-{r`_A3;v--r<QDEp}iH$~vZZIhd1M7%-)nWb+0q4hH8+CNo zHyILVe%`?pgPau!$PA>HSREmbL^~1>Vz9dqmr)Zmw&mN=QrMY9)@MJ6?8G%ltkofk z#5?fG#ZOe`mqQl|M|pH&7Z2P*&~K$rA&B%l&nAO-(N$3EKoWs^GY^{U-@?<6tc4%f z!G@gSMjY;Q7o32egb0MPWb3!n#}mLHoHT(1<v`N^UK;r4I^aA+-%m|95R}H>ToB9? zePNAx(o*ZIyZV6u1NV5ZeU3`4z|5M={wm@TW}K!{PeDMS^mv63hC&yw_T~wZYs=V? z?A>6;B$5!5Jci>)bsxyecFciRVDBjT9R@OybZV+-7)(EUX1CI99C?4r4*J7-Iz0`k zz6HdD8q1+9)JVTpwN>qrGVTboOsNn9`3w{1_3IjzAuc~Ux~MBjO#Ts1-sEZTtE-~% zdxKc_;JB-GscP+@MU`o3O7P0KpRx|JCBuY4{ZoorviTSY-PckcuK_b{;~*YC^AG#) z1@;4l^RcsfbTfQH;k;A0v>D4Byy@&6)>xWqOD;_o)lpLmffi>>XqY5i=XjZ}_fxZc zIN>_YJ_B?Jd`W3)-@8i*zb1n?z>gNfMPAco5bkPT2KcVMKG_E@q^z|&Mo>&>u}u<L zl;}jJE2_FU&M(IxKxNyP(OMddZCiWt+FD#4Ik{{`<vD&s1?z@rSu!Shni--Y8&R&? z5I=HrFCM4fnpdGOg&RLrMyo1;N$ap%)GJ1GYDX4l58nhUI|>N~aB5%XUw8JO#EGIx zCs|L?(55~(f<yGwXr<wMHV9dMJZ#6ejM*l%Lf|fE;=kOKc9xaJsSF1PG!oLGsb-*o z#r)<fzA|SaR5gG9H8Md1gA0FNh6x+fYznP*O`6iv{9u)~f@P(%{@(1r^?d3$ww96p zZC#hxCGx`4aJ#VcVAOA7;p)^e88>x#Ppyct_PJoAHzo$yfkt-RMAnLZrKr1R)Y&0j zM{I^<jN5!+cnTe#*GK8y@SyI8{8Tj_`8zT!`b34SOtum0tJvmB>)bNZrHV|+B7{sb z8aSW#SGxO%s|7EbJNE}ozQX5}+TG91DBW5`>z=naCsSsLB3@fxI>ruHGELnE&t=gT z;qwUR1;wYsXPQ-Z6T>-#V2TXq4X-P$?8EyfiIvB>d!xB9HSDB2d>gQ3E!m1|-P;|_ zby=48t2mY8oMn6itcfUShX5Uj?0T=m&}#>54$jf5<0VU*KD@AC7ZGurqz>?QKASMk zX2Ojs0-pW8!&t{+%%K^R<LS(}wmyCqa>B<2*2ArKhM?`jnTqrAo+E5B(XH$s&~3|i zg5;cptYrOV<IOwm-hCGg85P7nS~VN46u&pi*6@PYWp1&O=@3?ITOeQF_ICG*V>k3o zDwZ?PiE}Kx<$g;&bfh5aeOD+(PU>~>8B2fBzO+6LxVu7ukuJ7aP0duoP!5JWKMhME zca?psc>I_ctr?<Q<g01R(nWIZet&;6bB%hphMPeSUF&Gm0JD5pU$fkU!9u4~p^w>O zB`=XS)fMO?oNMH1q18&KL$@>6IVuNX+W>u@C>r9W{JlHW@;)-{<Rg~&##dj*dDYOu zcv~*GM;*$b97jm1-ZLz1Kco;^Q5=ubvHe;uh0Ez;;QSkHJ9K=-d3*erLuG{wck|i3 z{@_kWdqs{V)SmM#-D^?x=<-6zvDDu4q|v%~`QgK0WrHg#X5&bjN3HqlS-ZyzyQu;t zaB(lQiHIvo^;gtqTV-EY-KA-vuF5Gx1Lx_?bjL_1bT_P1vM`AWtatYA?8TO|4BybF zJcg<}MXsP>{zMXjtxO|&(*f@&yIK$1)&?!{aYFp1chR+C)V|kv<Xt)r%<*)D#+Un0 zTyrqL?0tdMa1Fvk^J&?Gd&{(8;8vc%itKpvcvVy!)V%9;dE(6QcJY3W&g8P3<viI` zXj5pYWfW<W;jeWmgV*7Y)41Q&o27(NA0$Z~bW>TF&7F6H*=n3yC%>Zh)Hlr=&R}pW zLN;_Aarkc9$!?04;Zm;d3pb35#zZUw+hYoooQ0+7I(qsid1!{(279WWMen<)d?VKi zIlWH<JVmfgYBp*s_r^;7t(`s3dzP<;_M|2^;3=vwxZdBEiH!FbLY|VToV6=eA0*Gu z=#p7W%}h6z4?HlCjy;J7^@W3>H}Fd;&FNgSHhnwJysYP6Sqf5{n7Y4K(-RwuXr_*; zkvB^!v)r8Sa+b5(7c(Y3VT#U4QxK-jn8dOSQI^&nl6yF<+B1u@$7DB!7j!cjYOhis zdWRpzLs1IDysqOamX?Y%m9ZAn>0-R<<sK|g@4ehx4yu1<&*wmk+ZMh|Y!rphN2mXM zW;ZPGS%`i7)jp;^L}hwF8%68#wYOx{ZgJ#hnzWw!LRpZ3@*61dp{@HcilzdUCD}td ziEG8V_bTYRq4wR`Hs|AE=Mhqn2Zko)DD@)r$a#6;J#a`NW3jGTXKk%@0r&&F!nDH4 zmR5^tymF}i)SZLFarOQV8?-IrxR~BI`V@Q4GG5JLNBuh{>o&7~>!+0gQddkvq)rFz zTv-M8<8-uv$Qa<|j!vWMEqn8fisSd0Kv!4RXBv4%NY0d!rXk<%dM{Dv9H{KoBrE0g z515{tU#k}9SJW93#ES5eDR3m6<;+^BrM!b2ygy1T(&vBe9d^l59Xd<E!E1U|M!TMG zHhRdbnEw>LlH|C)gsGa+Q6fnpg<!v~c{4jy*W{7Q%VPD3x%82qnu3z-;7N=|xr#dN za}i{cpk$`}oU0XQ^yM(}F&Rd#v$y&>XV@gNew;mIu{~0@WqhFDG`uQ1|D0O28TUU} zynUNeWpdanujadDZ@$RMGhySxImcf+ftyq0O^)+%Yp7EnEyG;yB1{NfO`y$bzg~Se zV38+nBErUBr`O6dFMD~N7!DT9aWxNZ>`*w`&py;en5uH^=qd6vw{41+xM*X@x|FnR zqPcTHqitGEtu{iu(c+0_Q_b!gpFJw^ES@7wS$86fHG^E~VbtJTBR7Wmv{*{nzI^ti zDqQ}ixvlX^A!9Sv@ba)&1<&N5l&>@6yb}M)gIC;<!NQk$vlyLTxMP>T5XKUzp1~k4 ze>?dqaRFE37hV3^nQu$GwIX0svLc&$aCx3#X)@Nu&g6eC534xkz1_q@nEK1nLwrN0 zXWtn!4GJZn)Dm48s|-)#1+D$T$h1D)Yt(RgAtv2J|DKbj95B-{3)f?cpZM!IEC*p@ ztG;@9{?;kT)uriI6~TEvo1`a)>N1C3SD0wO?c1T^#C}P!H*YiP#w<tKn~}nGDy|}z z?PgJg_Q97%zI}rn)8NLqsQXnxzkfXHRFieZM8s#?m+RV3Jkl&N(T})?Ta?$xXf~=y zG~a%mZbevy%)L$bGP#tw*~o1|2e{_@8<sgLmALD$$SIjVrtJ_OwX~FB*ho8Zn@c_> zhfFU&OyAI33_62GtnMbT;V9>=!-k2|Yqk_i6gnhtPoD+f?KnG^?cWP;cn#<%GG5t9 z^K<9*hF?X|eAqcTZn)Gv8#jO~kk7jNB_C4h8HJW}!T}p4GN&5Vb|>eJk8h#c&Dl+t z4ayl^2mN!M7e067jt$IVm#?IC-fXN{@>89$xM-T6M}dz8gXINf-RU7l<8j69p2E1w zNj((RWT;rKLFh8(<?a@YO{#hM4k?B8oUirf^9I~E57*V!V{|!M+EzUEB3%{=f|k;~ zj2Yn=l_h$v8s6%2m^J8JiXa12h0?k<J~8gb#!Z(B2aqcvsAJN791*(Dtv;@5*mLgt zhMy|dDfm^(zK4rv-leInmI28vuDO=dj|0+g3CH1kco|W&j?QB*F23&1>FiA_XqOfx zw$ioADdSx(+!z+v+a5c+qmG*>S;;Y<?hh~P8LRA?Z`}~9w^qdRJ)R=(@DDd(<j(7g zaBM=)mNwxT^+d*IwyS|d?x$#upU~>3%R2cv^M{P(zaPV|2=U2tvcBF#0=EolVg{Tg zt}-_xwK4gQm2%6=srJtr9$JM>9A<LXTE_Wouh;`jrPp;_ECl7I-BQpJT0e)7o}PwC zVs%PTOr(15C>$_+yW1JLK4U(#kIA*ev-Wns&$;o;Q(KRm2W7?dWZO63nbZ<6@xKXw zC-m7gGhWJz>(H3nzU`6^(LHU9fUiJ#&6sgUXQ^>d=k?KMxYEvyG+twUPKr!#w7(M2 zr3?MEZ_9gGnjXl}xhM^DZ}0z@%-TG5>hhI>OmDCnj6B)#0u4q_$Uz0?VAW-nAEQ!L z(ni_-&HXTaq}$_mZ_@N&&fC_bKk^+34<D;5uUmLYpq@wWDTh~w_M*yjprhJcH_{;4 zBqbibM~$(4Yc79zk?Nx+1#aq<Z)+NiGn`VpH;j>5|2Ndn(w|e^6i!u7J;9Iykcb3` z2^hT?;$rED<RpZrX0h66_K2|g^c1l4@Qn2Ne)Kkwqb6=*VBeiX><8cm_XA!L^+Qg} zuiBShzI^VpjybLmNKUJ(U(ajG-!?rf&MG#vEt?;kINxPkkR0)NK9AlL8!SVbzb<Bz zCf?w^JLgc@-Y;sh8t$#Os=Hfk+d231y7+#Oo-1VMG&*SPwx-ygZtb33>zp;xSjuLI z;N!pPPZyC&qi|BU9$Ygxt?;2d&)r}1ew>tr!Z_xPs=Fz^hKGy<W|<iCs_`863U(lu zkn=X5#vO-Ladq>gHd4QJfkVVhZa6FC&^uno&TVfdFngZsZkSz9zwWL^VFq$>Hx)K7 z)h6dWW`5pp*U(U>J*bZy1TME*%NFCh^;K?cv+BP^h*)Q=C`d%-z|(rRJO&f5)li#t zTj*bI7$R&ZyzQR`n4;X;v@FM%L@f@^cot{#X)@X9x<GjAAJb^F{$lAl?hAAG#j&6G zl$X2`qxLYCU9atgveaB`<bGZ(=ZR_3uGdswKbdf`U6OLU@cDWg`dFvqO}W*$7N$W) zrcCGccDfAm$=JBCeLuWb<no={U!*x-N7zt(yxWN+ZV@0bmoGW@rYm`8uPM^GdswOp zfwgG8jyMEGuFm<|EvxG8V!3N9KD{_8rcr!pVvCe@-#@b%*gkLNdR86*SU*g{@nxTV zc#R0N2v;fU;5^>%QVrW)dh5o!n7<zMWZ^sO?%V6$bNNc|{8ov`cJsY%WKdUyzh1cy zJ0ss%dKWQoZXMF_-G*~jJ4eS;+dTAH_8N8+*~kPxG~M3lyxd2{hvVrmduLjUDJt30 z*S31NXM(b9w$^l!?g%b8U$>DOwfGpTd+7P@qTS}8*zYeYDx2C>|5|6Ve(yQ;%YDrn z?UJ{(WVhCs=aYH=46g-;SAnbk^rU;lw*2$`)h6n7Ws{5b((OD1!ME#uG6}-++S@^* z<HM861h+%(eXKok(-)Vsbs>!mhSe&Y&+v<<b8QAwTZ6aLXDE~JfqngVygIArHt}I- ziI;2H*A#k9J3FiW61MlP%h6_cqvF%q{B+nv4TjSb9q4+Lx!OAY-ATEmZ05#8Z}3}B zmWrdz8yi=)EZ5f@C{qlArSGHB@|tp#1Vr_;j^m*>i)V+Fjav7CfTGV;N<@uTDOUD3 zat~Mc8m}SW2jz?_D|?^w(E;L|4s$t|hQVU=jVm#a<}u}tlpfyqHvf@`_9w1n*NrlH zL$-(XxAzOd<Lb19GsEpykudkLW1lyDgU8)-a2oCRUDFsHrkA%h%bYGQx|h{z+vToQ zxesl+{TVnfQ=bKo2A{XamW;1957WEOix8-U<BKgUF>YVWnjm!K=!>4)+2Ey&x9iqx zgWJl%AcR-jw<33i+(vqbY|J_X;^T$5h1Es?eGfffs%?&1prZi~qpw2lJn#8(R!hM+ zXb~uMz>skfN4jGg3$yj)YKK>mGAZd+j@DOcxt_RvSyv&kWbl#13>|djC_X+#T>+++ zlw^Z!{B<R4t0X(hrTgTKyU+5VTzjw#w1r!L;;kPaN1~CqdYtK#2ye6QdYbuTWt%*{ z#g+(svte+81YFk?C44eiJHp9ajc%7&drNOFz_@n4gtNVXu3$?mgl(l4hs~;*udR|9 zg92_nqbAr@!9iI4rMLbJC+j8kipl>4(BL4*)mh8Foo!=Ft;m9}reR}-t`wBq{N&$& z`xyx^R#z7GZ{TXWu^FR)If4M?CGF(8@K&LtTbQsc>}sR#?D5{qH9lB%U15gjRh;t< z!PBrzp4qhjw0a}m)KH--cbpguD{m)6y=wS|skq=3$$&LaLI_N1(M~8Wm=ZNEt`wag zfW1VoPEuYJ6i6v@k&6apk(c`mt~`(|t-NTbG&vwY+`HW0vv9A_qKu?egU`&ZX*aii zWPDys2~Jp9SZSD4aY<Yb_uEouZn0H4c$h_QX*>E7kIHWaQsX57xnR|EFcz9MCCspK zIi-aNN_7?UE+fK9>Z5N-L*qnh>X1}0ou%PM<zQ4W`o>U|%%BGf#?Zr*+@zf4p-F_H zsEYI|yFYYhM=b{UN$U*$U7`K&${asWrIUDNYCs*dY*_S}e$fa8P;uUDE=I*o;z_Q^ zWG-3Y&7&qKTzJ`^b@(&+qBf<WO`k|*Hwh;t1gfba%B{S9rQi}Fh=)>#jo0TggUWuz z`~nZPA2!CQ<jP5MMU)h!qDe#@s>%UL;k61pm5CUhEGlIRP|B3~63T|)U0VOuA4(OB z5RxQH6_Aw6b0wM%G=Pec%aw$ZEZq1>HUH?9N<m4KwF+%U+C~4^$2)Uv3~|~11N%*d zvh`A;Q|TYnLmj!fn&^abk=l7g6`h`S_i#xv<tVu#!gA&z7|MzN*wcF@Sd0}()yyHO zr0)VGN+kX|r-vq;HZT7v{9p6bfJA#sK2jxfP|}gU@u+iU>OX*gd}y;M`y>R_%<)v} z+JP7Xk^kfJXI##~sBra*+||nBAIfEF=aE#}Lz5^q)ldI1d#e5Tf6PQ1U?=~YzX8bA zP9dqZ^@`N$jg|k=H}CT$mVr3?Bt+FtL8yWy{}Mz};dGNHol$iPNQ$nVZ$npV?l3^C zgbhlftyLJr^vqO(3rO;>W&BQ8dQq0dU(1N764EQd@OPJ(kW_+tMPh8g;C<r&HOzK& z<$53tFe*@eV>dPNoLa2^s^;}&$ba#64UE;}S5#8@OBoTBLnM=ij1l<!#{qI}DfQmT z_j7Deiev`kc4_raV>(IVv5ZIx#Y6_<I>7W$@?=EgO2Tqu<J%;FG)RhtZ{zcYPZYaj zLfmPzvdNTdx#?i!D7!}O?CRl8`9WkTb4KYzr6f{h{$oP)X&_|6Xr2kZMntJn=w!4T zsp(*3D1Aol^c*pL;-uq{Qm}tN*el)+#vr9)1cbHG+pleWkNj7!5RdE~M3kBg9_!L1 zj-&7oBTP+&K~W_+mlx49fFv{dnOg6S@{fAd4^~GjJJ=pS_!o3gtui&GBX$r{61Hv- zFql}Cf%!KU1D&6xtpF^D6hO_8LJG9D2L?t4p!X*VkjPE})`vor%neVi_XF{VLX^r4 z%Z;zXMN9^&1EZDfHNr+Bpa%|sf<;oQM*{9gCP)U<l57$~fS?eh0(y-kSSJ8_AYdqv zsZ#2xe!XCjWQg=_PY3&?<4{sKePAGDf@owidV7#$w0evr`g>qx(RzCzWT(r~D5>lL zVKAviHTL!(D5CWCzzO%Hw0k7<B(g#(=U_=eVJNAwoP9yZK>6D^Z1Nx|@#Lws+yJM{ zeNqWMfip0aGq9hI9j#%=|9Ei%ryH%z5z(tdk`c=Io$QQACjLZ$4MT}r;^Zgg;uOlz z6U)#O$N)Np3HeuF>+lpx*Aq+E6G#U-&G=XMQ+s+e7$%`7G!B3=4iML+CK(4490x-g z2Wv1wA*CnO4}j9|r%^-xo0+~Zh<^7LpH5zmUTXKp90LuKVtqeEz9i5*DN#jJV1O3p zHzG-(cv8S9veaV`(obq&v1A}ZN%~l>`&_-$KPQV}J3Ygi4IZL0NGv6idKHRNwK0f+ z1P~)BAQkzFqgp5*gA9-l1}PsPo*lq7pp=`6GxVK)j8YoF3<XFRGHQ~MYm@oYJCImX z;Qn~MdR0h&F=RgyD8%?6&kqitd@!;DF+V$!)YdbMza?}a0k9)W-9i&03WCHE0{6%2 z)we+SV<7v%LLr8LC3L=m48{N*i2B_Sr&f-G{!iB`BmRqIB<fd7tR*i(^arS(7_f>Y z<wUSYBJm3nU;_rp7BIFo0JbLr<UkB)MXL73;FAYQ2+>0}39@vOAo<fUlRso#<Y?D| zkm*2T(SiFT=-a5J1|xtDg#B)aq-dc~>WF~Ukq9awQH;*z4TOQ}i2!Oy#f3I-gJD1i zLVk8cQtBI6KT&{3!+>^$QsZ6K{V|aIA|Vk)f__w<xP>7TgT($B&Y$$g8y<UtK(~Z| zXT;(k?r6}1p+E<Mem8_tg2-eBf<X0zfK|k43>k;N-Gc+}51}Uw)+3+=BR~fUg3&*l z56$ik(t<>!4JsQW`@@<H3=*Y((TK{+Kmdr55Ri&kOzD0S1_3-82(-(eT5iQ7!3_z( z1A|29S0epGn;)p20HB6gOr$9i_6>M607#!7Bl!Z4lpYh3Y!`qrFHK=j0K|d#cPKXl z{!9%B3L^mk12M!2MFJKQ01gHT+P_o(ml+VSfFHe)?KTht0T3o40W73oGZZNZ7y&Ry z5RkqYTi&1_kP*O-o&a|2ILQwZ(GLs~5hRH4trZy&6eJcHxZjVSBu52=2mpjk0Dwdc zVQ+}apzw$K2WcSI>O2exSj-QI@E=D1W>6>v{x{%)#ftzOi~tlQ2w2}Nev|v(1<F4= z0|p-T1JVbaB$GS{`2mpt{16G8<PV3W6MKVTArZlYXg$~B{>O>ddo2zF(eEGoG>JaZ zfA^5bw6=xvzs%aV#WerpJuAHio%6o{T1_6L|L$kDsDj)80Q66}+7G(q{>LtF!omsg z-`WYJbUH!|{<ktt%AEfzZ#!j&D3sKHIM3sn{tqVoqUm4A^os_ae_;~57GZw=cavuI zTPXi>Yc;|={Cj>Og9kk+`TP?43u@O?>6CMEclU3!;r!nQ{_Vjm3H~j}zu9(ey#5mb zWSa>i_&EFLbo=XcgEtcWZ*QbixNBM<rO*PzF%Z+qGARD3(BEk>{(JEJ?FQk;BK3dx zZ1p15f5`s>-;2!(^5?Sjx4}Db*huFGv>^%5|0x8UnUK@u1bZ0(3=#kW=4L1|8f^po z-zB4<gB`U0E)a{1Zb3#<49oKmDCP%h5S40u`J(^_5Ciw4W(YC_r=zpU!=i|SgFS^r z&>sLD3i<7b`R#0(A%&3SYW30oy<bA5hhn4C$xkJX2Kzaxk(FxG7L!2{5=IOfAR2{A zxUz0f1h69k+?2)<k#KST8#CllOe!MX9|qJH2ZW?f744pu9`sM%0M7xTQ61l%|7M~< zl8CfmHj(N_MkZ)QBoI>Nw#g16J>aw3<rCxe?+yFxjr;5k{v>z-0wKQz6}<&TzYVnF z%S3tcCw}pVdEr+`J{I!c5%b;=@Q&@;8xDKzjeG44enl+UK)icK42gZ}4SqsI{mmFU zLXu^SXU#*Bl9Z@ylzfa1cEOfJ-54<1=ITJ&vMm(e#8<@0PO^Z9O3S<*E9Gg&rb=;x zKuZM|Qfy*u{<wH!KQ_*I!4~IzC0j#5H3|#n_<kA){?-7p#P54n_?{1Nc-FP3_MI&K z{R9quL0^_|u@e_<c}Buj>}lG#CDJ;0^sJbW0CA)W4t>dy^~<rqWTA6S0tR$xT5Ff) zer@~lyN1v}gb)KO<t7_pPaz|sN8FL(M;a)REz^RRgsm`4Oboe8R8J-MyL*>V!E-o6 zfUnV{&j4cq#OZeOi^nNc(VC^HO|_5LuC`@IjCS+$k)btj>iwJgrLXILpe^g^!pqHe z4#(YPK}<^J*GBt;iu*B4OP02S!gj)Dg_G*^8y8!1tF_dKiZtHKds#QGE?;BF!^Qg9 z0ysiuTVqcIL#gv{XGdrjE&Ecdjde>0gv`h9G!aSsi_WTZAF9>b2-a)L?ORh#_+Q#9 zJLPT8eA7A~VhffgGVHTu54FQpyp<WAdFIX{`=_|ajjem@`=+k1=?`7*Ub*~S9|(@y zS?wQ1C>)0CJ)mD2Ny-Y%HYbCDOrP{u$JiT_YO0UZS!*z=-P~P|_*5y6l4}prB69&v zT{YOsjyA>*x>xCrwU(E*Pun+QQ=%isi=;i9O;#g3eD7Dis`!_s?00~co_ovA-*b(E zg46GdMZQZJ4Z65$za{MhU12o3z3W_lp={h)yc)%<t$Vz)-@RvzxN7-sSLAd$=XZ{^ z32!_}uc`B1ZWQ6pqgkE2J8U*~G$UZLIR~+pyGe?R>-4oFxPRqriDA7wA4Ng!&qsgP z9)CA*m^bB0$JNkf(BEFjncm`k8+`qd^|flQZoK&vDDz=AGGN=~+dh$8e7B9iWxG1o zKBSntAx-?))x%wOoUBZxAagy=$<9|>WL@msX!^jTY;xTQ+R|k=uz1h2l(6Q@_G%&i zwIX9Pai#G(JP_JF%JcD}O2_lOxFyI`ew6L@J8Ef6(iG3?t%iiu|AFttxzeA>z46W< z#Ri+v_iP7=7@T}NQ<?jR90#MFugF^A`~3Z+4(Nmg^g{jnkD@$eWi5>Zd~Gex+{Svf zPJAsbc}%J7RNdVLme6H>|M7tEy<0u?U}?eDb?i9&G*On`9Ca36GxW>K@Nz%J;VeEG z_<{(SKoly+{=oV+K7E~sS=~+dqUVd5%azBk*)_vb4~0UX%|mI(uXVm1rJkL4SKSTD zH1DO+&m}?flE?Z-%Qq$}r9RHP_3O<Sf$OPRbABhBrB9LAliazC1Cs9=z1{K$pDhWF zB^%g>oiUw9aVuBH25E8*9*d?jL~&7Y+d;20J^~Ym%N4r$Si`_c-yUbPe<^&7y&MXH z4hf?KPOGdJL~`Ok%qy9!@ChgJZrZ`006hI>b&AKlyDn-(7cRV!&mMxXxZW1}UJ}A3 zi=A90GU=2KykyeOkv=P1Np_TGTr@DJNjw27>_v;&G)zjXf!|O*h$kq?4pZ0@L_!mS z<*Lj2-sATIfQy7lfphj|V8O|ZL)&*IsRDI=Kg5Ksk9v5LmRr|^{`r?o=4uTA`LFLV z4vn)?4hO5>`sKJO`;AvV!+BE(k5NqCb2#dcosSTP?0ivkKE6o?<U&HR61wa<@!K&% zqG~)b;kjQTAJAUU7MAZZ@oO7#ke@@6?B<{67A}6#HM4LYk6Qk$>#}i~d)r$fJj98Z zRghsdVGmbi8vKIVE-9?}`tlJFU#Wr1f6eL1XVrVK1pRhk88~Wg-L+0Y=9E$c8TnO2 zw6pH3f*|yeO}Fq?-$P4tE7FuBrVx3uwaSN=8lRGMd)0!?D&zgIyt}C)t^0Mh(Z}k| z>2$*V^f=9Cv-ykQMlNtgvRh}hP~Y9%!@UFCG2SD4F<wWb!HvImCjE%7q}y>M78?Q; zx7317@9O{+wA#{Xv#IGTQ~u$s$`M_w3A$VR1MlL@@i>Kw?Xj)ltfCS@r1@-7etS_L zPyzY{4g<LFk)5WhZ9MdWn)d8%JR*&%>hZY_=|P71;6d^%cOPQh=yBNULVFP)+J|w} zJf?BK%42TS<CHeSV7C1|-UeaVflq+d9yW^3=_|8;F_2QMElO>|w2sY)A9+GoAd4h? zRPf99Gv2u81OxMnaa{3dd;?kwGaKc~47P~V9$unjGV^Et(j;|E!6)O%2Cc0Y;|LF# z1#sOB#N2k?a&ohAE%s5+m&UkeP3nS&)rrYyy=vYRhC%*MYoa8vE=^ommXe(COXd_& zrX<HeIn*SW;FEG^OR=w1BM1A5Lz)A!3>S^Ax{h=>*7Y@DHU{a1LZvQD3{e#VWvk-v zM3<mD7&qomYK!VZ(O1Fi@<^bE+Q5h$<}lU;pH2aA`KDzN!}EelGAL$DQTYRn8AN8J zp26Q8<Vbl0WK2k9mJ)lF+9S5|(wx3|ONsu7usHEXi*hM1P1-9HdV@8Gt6F*Fr%I$e zv0tA-YZyxmeK*S<&^mE1SQds#{Bt&LiJa=Zrar82nlU^07Ep{AE;+#nF9>+3bJ3`V zq@U<FhkJ{-SmeS<<jq&p<nK17Z0WI#YD-ZqwFo}W8!USGk=D{){(OYusiIF0O!g5z z*RM-ye+J0s*^px!&k8$1u?W0MdV~(u^7mI6TM##O^m?au@6mn+(D%cmN9B36hg}U= zb&8LiSfUMwuXb6HXRoZGpKa7ug(NR1->i5tcp@wqHpaji1iFF9_F9q3u}TM95nlqn zvhJ}e^qngsc!*s}Up9?3D$z>316XhXO|^E|Jb}D2^<F2r5OK80KRyzTE&9?d8T!|p z5V}Na2BM!Bu5}mKtbno+o>{z_ShYQc-qfB@so;vjm;*J;zG;g;87k)#ZO`$oJ#mBm z`AOz@sbUdjy()DB77J=)M9`CQealbzHXdOn1H<@xgZ_8HHBu|&j1ks)n#qwZ{cAhW zmb;>N$6chFpHGQ|<>hdKlD`)bJ~+)dr$(T)0@u1x_q~I%OH$NuCiL1c<}yls!x4^? z-0*fnU)~I=R!cKgYOZ<LKc23xn_L+CCq(q|k{1e6gXz?{twv2?)Un?nlWq4rg@S4! zLn)9C4Z=%N&WB8Xd;TtW2(DLjSH&%0E$51g+Dvinsa`U3cw%7et(F?k6QB(Fnha*6 z3Gl9RtIkz+qG?)~x=GPA=eithMVObo2meU=^hYHy37vwOeM5HJ)No<S?pQUvz<lKP z4D;@l84E4hAKMdj!>rj^^1{=NFlF+M>KWrhEz4K0M6<lHLY4jL`d#6>up-P&qzYRp z0=5o=38pA^hLkV6_xq$Dle6j8b@A1~m1IYY6W_u|7^}1<)LT}fB&hx=r<yyummNg5 z=x&(oEX+NGhh)nG)o>bgjI0s7n;^VORb-Tb;f>ZL*<M<>DQAX%NgPYvi<?RV%Z2I% z=cA<yN{6=Z)!?d2?RGu+4fojNzI!09zOP|ULk)XoDvVo0g6S={PC%T>jl36kPLL^{ zZQsIp%??$q0K%P2cTCR@gCNC&aFIHtU!-{GGvRy@wy4zy6z&pbjM8Z(S|vCtI;vYL z-Ktd<Nu0Wy<-C?+4BxSevCy!tm@inpEZD7?F~~78A}b<&SuM!O^Oqtpo^;MW#+YzS ztSu^UVSK>eh~yi~&sUWuQ~hO;B8H~+V$QT&1Xfo&Dz&K*BN`!uSiVFWYt7#YB+*rz zQ&T0`;)h*s5uU|A!;nXcZ)Vhz9bi1;TYf^@%<iA%B(fiJJ}44>qQUK}Hqd@{w#sOg zd?3Inw$u}!seE#-B^GdpMC+;6?7Qa9S9k$$1DYiAUU_JGJHJ#uz8!gj>CS-v<fGC& zHQe3#G9X_?6N(bFs+`Z!9hO{`5&FeciH~b4S(daZW8>oYk@WJjPIPd<3I}1t!o4*O zb>EJQ<l<t6DDkW?iaKzl4(c5&hccV7GvqFqP~ttV+92R?z%?MprX7b%k7-6oszQMI z1%)bCs2%k8r_qxlqd|pj1@?~VQy5OV&<k@!kHA1J8}G29<ccEjWhg>*iI)#~)%<ep z+Rrz1VjqXwy5Pi-enc7+y$y>@^xxdLb+ve1K7r3)jQKurZvoXttQVEE;|hfbB1O<~ zWx&5(L9^GGVTwFYR0eb&WSO%`5q~saRo&b^oiJu{;OBiAQ3iW6o$!)EsB9pnrQ{Fu zY!=wlw(IXwMJ_DWx`REwfEhCrU87kOinIcmF0yBa(anKe!k721OV3v?u*!A0<gg|j z%^6)H4Q`{Rr-aOMHbu)SYD*9rTu5HHvd4V(vl7_E6uTnDWKzfRj@+?d;OF7xx*XCB zPBUJLT*8G9coiCkq}zq#6_DP4JF;#($?w}txq+|JXxt0p6hLVTWuby8dRaFR+A1*% zl^4EH7yMYnz0r1v$>bc;X5Gu5-yM($K|}aKiK9hN!Dp*y6Kx4_Q85W==po*;X?T>B zlopqfkop-D6&77DB$7HXARs6u5?Bs7O;Iu~zo~a;#O#&`J90ADR)1jzR#1mt&}Rr* z@v4OzQ^l{^kX3OSa`cNg-KM9wLo`9%sz@n4!?40(l{=IYmlZ#Qp$_dOgA&)7b;h2@ zw=R3T@OWx;<FZt*LLyVw{H_*UGpWR5=>4%gM1pw*2~A_SG!-R1Ll8Gle>8;fSlq7B zr8WpjYUU=WTpu@6$^_$3+(k*nJsu}%9wf$2g=P9tDpgHWInAJD<?zT&O}L?8OfWhw zTP&qo0M&yHPcV3-)YVXvKvWRh3YSCslI@jxad8Ja=Q4GZy<wRc>)Z%mp7vhzRJ`>} zZEuYTE2g?sdqp#yXuSd%ebuP0%R6hT!P~&vwoJR&+1YGhAZrQka_Qt*L`r|k2>W%< z^4x;QiiWds%zl*NMU-tso|FR)#yT5uL~P{!F&IuQ^}q!|TEqN_jJ)H?T=YlV_%d(N zvi?(I5&Ibyl_HlxnfLtoG)W81sg}5nOepC%UllG=oWE3So2!XTjMU8O8KWvwnW;`% z<0u38)lMDDhMss8s38_*0*7E(mpjGcO_^coVOrFK+748inOO@g=r+;0r&7s~zU5bX z?Pv7<7kkPA#tueia*eo2QOZ3#)<IwA$l)z41_AD%nm=lA6!E=-yv;N;{u8?f4J)D) zzI5*|)@8VffrE`p2Y0sTUyDHjrc;9&zH1`VKXe?9+s?Q<`6b!|;#<oU>d7ch%eHp> z@UID9wvdk*jPKutHTDe4j}Y!^pT7d#qIGqc*5sM&MXIXGy9nu9SQMv!{J9hNH1fx} zgQ4HW8wyLq+V?w`PM4>`d{)d_iZ1^KS5UX4S3q8zuTpr!=^I@F+4bZ3dNMoNIFD7U zxriOE{cGkCQ`$~1Yrtv=PjbM_R|DOm<!exa_cExmD4}5q#PAl@F-sHAN9G0Ru7Bej ztO}#sR3hf(W!~{<Ia1~NMg?y3*<;9~NKSL{n0^EM`cs&O{Kl5X5~7w*PP4CIc**N9 zC#(T4Hu%aBbNxWyvh0Oj!$X4U;#I@WlJ!TT2AyeVzP^#RsPCx7(;8xqGi{32SmL(~ z>K(6v>KliI>YVx+=|+(hN=`vKwl|DZZpGM<(zTHfZpqk@KE-$Lmgxk1%pa7+i;s`M z-iAwuXXrqkFY6r@X6?b<y31Mma~xfKAufVYl1UtRU^c7y@ymNG3sBUo+!6(Fq!>dA z>5yyR^$4C@C|2T7UQ-IVG4IiI1a6m{sO>;TfyqEwbD>JV4FgyBh0Q(yu}!cBAhOL# z?Hezac8j4oV-<lK#<^19&jA%hU5v&g8{f0370v-2ED%nx7V|#|UmE@h)oHJ0gL_yv zgF7IWg9puzVv~n9BS8f9VO)0?T8Gsj&W<x&>K5|(c7YN2{*=2^+l1_d^SmF|14&;X z^Mh_KJuXJzlW0=<`|U0O^~{^<9Iy?GZ7PTt!I;v1vI3h<<UD86>=sc}+hJeg5y6@G z<2#Id5PYO&GzUAGc~9f1s2t7ZIb4r7XJOTQr8OVWbs&d9ZMVt__^<~8pHP)S$0O=3 zydbr*IL3Cq55_j1AF?qkDds|>to}ZRGXiR!6$rBPDC>3J`H;AS;1Q#h|Mp}tk{2SF z@Ve`JN}`F~JVhk>opf4lm&_}kS03Lz+4+O1BHy8*gvb_+KGCb@47a{b?ITMrYU&f6 zR3WY?HY&22DgF)Y8F}s(HwT2n=33)b*6astJ(WM}vlwzL&<prxsJ!U1DBoc{!WU<( z@Do4a6;BRPNY6U}5=J2BOVoJ~6bisV@U{tp14IkVDv8^Ojqu@9yN`9sG|yJ#E4DrR zf&W?fR;e|@IvI7(@RhyRcRcSwfHvAEIraby>sQ^ad%!7?ai|k(Ex8@fi&7YC`uvgY z{bS^ZcR9LqDTl}QD_&yvQiO@*c8XH#1B1~WEf$gYGT#b+`Gy?nQ^7A3eym2(D_QRt zzi{F2#K$t#p0VJ^`Jp!C<VO38u4ajhKZ_%dcfXk8a)2}<U)IX6`{<H3PBC;Pf2|60 zs7bcDUY`kGC(?KKq2+hcP8x?e{Jfe!#pc#_4=g*Axny!C?-`EK>t?%zSw2h=r<~J# zbbR@Odd@hLNso9xKEqBg?&NP7uYrj2HGT1;5$k&bvGfBbL+@B<{P_~8I0n+g0o6!h z)7jHrrgoaoNGh}KDsxkkf5~l(1SiVl&(?%JsMNk)n*cq8ttNUuv|V^kV)T|<#pAQM za_n;=$qDy*?q2!}^oU^TNh$2HySqlBk@z*6danH=QQ}~YV86kKHx@6WAmDR-Kjldw z<heb?_wo0F&L;=X1GV=@J$h6uvt4s);M;fSy+d{4k(!Ya^H-nweH^2$Tp!(a#V`5W z-=a-DC-%>XQ;=7ddWbtg?`;4aew<;C38p(T>*8Gr>tc+GsX_J}`by9biSvUr4bhpj zv%&xXwIqCYkwf;PVB)%CG^e>2K{m&sdpUOi(=XrX;gjQI^2Ab~qLF5hO`SG`L%d1B zUlW5IJ`!&-VZ{?ea6%w&3b(t&C`D2X@|n*-46f8PD4I=tVVd_CN~G;&GOe|t^5~Aq zr4ACxRAu1KVz#npeiGS@+qu1b#?%;5jLVc5DTnLW-Na0>Wj_9H%y67BXNJya_U|%h zbjSQP9XQ9(>x}Ib8oLM3C+rWLl6JbY$Dj<gD_UUFM@aS310<WK#1EW-P1jO$N<?|Q zLV~kBir1FRa7;;ZA)L~00zIli3#5C(<LCur;a>GuPv>?b#`~Q(QFlm)_`sVt(h)tC zIZK>N-AglXORw&D)kkwqAH0Od;Af_z#s0|Qp!MM6s0evkXwOToqkProuOB-#-$~!V zdpPa*;-0{&uTxg!uSv&~Jf+ribJ*syJ9ceD$0%on_CHbw<k}!G2fRwar~AwjIZlRk zR=@8Qz5Zypb2Uq+%@7cMS@2@>)zBol_TSSkM@KODa7oaf?0xy*o*v$19~d#H)+x~V zO?i8|WBW~I=c*<0&sXqt8r~osV56#1S4it$2yKH8rFVEI`%ZCgX=p!be<AQDx`NeH zP4JrnCn@#e6$rm;Y8YVzFuAw7)NFMRGF~d+KJEW{r<Y>`+FT}>HocShbvbQVV`FK{ zRTOnxC;R7tf~9kQQF)4ZF;4`$SMw(!ACyb5<~!FsPlhU^7_+xE9;GQ>@GB@i^r&TX z2zn&X%AZvr;FQAmBz82n9J#Wf9UsQ+*v~MvXx4n7>*ljPB&LI+{W<)78_>U?I*}6} zLN3m|-nZlw8$XT{pY|$&SH&ZD584>JW-QGiU$OJG3NKR-b9P~YVJm(tw+0vplRbaP z)yS$#^Ji{Ie$W}s1oy%#cJqe%wEB)?_);EhB^}@SR&?b+S6*A_CEE<3{~T#YkO%Wr z^h9vN@<cg)bQn|sI@C%u47kJ8BEPX+c=29F=oScQ^nE&fqIuF@fk|>FUwRUmMeumv zRly?6OXSBt(PZrsA|`>I5qx|{m>3^G?}hy(f0fMI2f^g4#u`~71+|6WOg6!}>Ijg1 zq2Hq<aDI3-$xQL<b_MQ+FlCq}rW2Ti@R&MB<fz%R>EUkW?Q=fu;H{mh>V%%`^?p<y zhsc7}z$@hW#QlkW{QNG|)AN*QO#RXtGrh)R?_#T0^RAZh#Ru$pY`i196a2N}%@9xn zf(Ga*fFI#<L%PadI8bFV{RB91qA`OXgSc#+7L0yjzL50>zbEW$Lbc<4&pUErd&ZhZ z0&Z6pAO6TP<MCr{*Zgpv$popsZ?QiDntQT^sGZdPx{m^|7`3KlZGm!waKkI*%hYCR z%IQGA;*1x(TW5)UPD1o@=7P5l$jY{WD&Ph1ZpA;v-F1e3s-DJl`MxV*xy?|(&Et0p zzT<Gdlg~MBaRi+E5@LC!up=xT6YBNkrSR}QMmxd>e+AuxU(Lh2mn1%!xu+yOnY#O4 z<lS~zH_8}-T!NVwa)Tajs&DBo^}Rkt-QtceoqN|(y4l=ES6z@;f1?IS_|XPTx45mi zqnav`7@VzOYzHF0u93~K06pR@AKF?#6v3YmCN2Pa;Iqy9R$l`#JpGw2d$d2>{yZ6H zSBwTGw++EJj9_2}WJvOwJ;aBO&e`#`-|#LveX@0Y|7FeLHVt8)=Xr{71&mIiTiTVQ zdF6TiymrX@6tCAt=R<IP?%DSy#kl1kc+zm~LwnE>T>o^j$!8|G?ft7^JK!3!!oK(s zWDkHgU1_!BGZ^7T0QVEz=G!⁡lDqWj;va6Ns#zD~?lhqQ8wH8)0kK{B-U+RU*we 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	DR69jV8MXrSS<mt(Ten){)%&Ve3K{ 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�?`Owx;Rxge%OaN^8Lz= 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�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%0DMFZkvQx%onGzOcV+z5jXK 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%0AXw?#-z+D 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�x>CYs&(`HpM5|02z`fwD7K`K%EOzTkzh*^M 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	=v-9+WI)ds4 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%0An#2O|t^PI2^`G48V8-CM)+4 za2Q8Z0CUKJm=kzqJPCuzGON(a1WW`NZIgqC`4d<Qc&2F*CIO7WVImK5(5wT-FqEj! zayX1;VXkN%hjF}eUjc)$jP<@E0i$6KXvqO%1(pNZXc>b^6bEy_P&iCP=89mL96XvW zkb_}xn83k37)%a9l39?A!Q>EWMpVYb<Un^26<SOViIN!}V3-_|EHE$!j6)7uLYAt~ zI^^I)K@>qY)*%Pa35+rxOA|02Xjuk_v5IUgi^HrsXE_WeB7*@KPrwv=W*u@Mvll6a zRwQ6F=!lgtn8*q+_pFS=1OaF{3WG_Mq`+t##>g-p$6zp-5kX$gA%{qz;ebERA&1CP z$dv(%CtwWBA17ci#cd&&A_wX2u(yfW-JOkw7b)cS1f(Y#=~!^MJ?!rchuIszWN?X? zy&;$YHqBx71~3l%4rXr%CJG83N5Ft@j=|;QmG#OoxO@W5gI~n#4PaJ035Ox?1~3_e zi8KrMWpOz~hErg;93o3AFkB8%0{h@tmVhZfn#JWn{uAbk<q4P-50?Wi5||f<y~(n~ zNy;rG41|mTKr#jrz)^AzV?!WOk-=eW2qY<EIZO>eN~CaD8Uo1*vkpU(Wtozcv3MM0 zB@{3at;`T7;vg1S<!syw;53ojRA4d=Qx+u0Q#j131fC{f$^`KY0h1Lx7KgD)VB<Lg zrf|&jIE+`6&kF=h;g1(_m<Ude<1slnMse00kI8`;V_=2_ihwD`F3>p4YD@w{z!<oP zz~V4Y3EBcC2Zvk`7><C+A#xNfdQQOP5P3-n+5#qr#L9}%378xbik%97G64hU#fg|4 zGV(w`D>~#r`es=LkHKNQ0J;=e0tOC^6FCB=7?sH5FcE?nCkg~iQeYwulX>MH5(YzS zQGv+>Owpx8;V@cOV7MF-!z%e0E{Edu5X}0NCgwD)DXP|KT4|7vwK+|cjmTK8i2a>m zd0ak;2U%ENBw#TAERV~FVk!?XOg@I9!9lW^y(usmU^D@f6+DK7DR?XnV<-iWBVh_2 zPrzsePat6mo=CtL31AWdV-*-72Xbc!CQ>8}@I*omhF9<y5~kphawzjBl5z+N9w~>Y z;E{5O3LYs31P)dt<xu8cB;;TrA!H>&4i*9%D-m+=%3Mi=9K6Ddgv&uI$q*}X1Wcv? zhRcEK0tF_JFy$V&94M^^o+Vrkl&*taNiqS0HO$Jm90E$)0fx&V@DKo5nIT{d+*f7^ z7^}cI0tPXQm3aatgS;{>hahkYOeA2iu31?kV2a*kTn<5m<QXwez!+Hn6ivdw7g3lT zNHSKTWpNm%1bm7kV6+0`37F!yDFKJ^kgRc(NWdVm<tT}ODZYr3378TKX^Ma;ewL;Q znBr$?LJq-7OUNN8$q`M+A%I<RG$Dtm#5kIe!#aO7AqUEK0Y=CnDt^{lq>%p8{usK} zf1+v)6<O81Q8I+CSQPzujR&=2Fbr;SsBVFhmBB4eL_+fb!z2_%8nOolw>VLvt#|?s zV;~AKxW$PQ%PTO6fPq(F92SQX9u5K`>o7P3Qj&DmVQ(^|aA4AQa}!NyvS=$7i-W)b zS-Y_*AXc$)yR9i8PH}a1Q&T{^;<4?Prht^HfVCSMfMm{!C95DoU=;4{W(FWM7OZ-^ zmDxbB`0Pd|LC(l1KFMxlvWb__YE;JJFpvZhnzdV)6{I+2yMb9jvO*|gAem7JB^<;n zOvnz9NGSo*UXfTqkO#8%g2W1vU?%MKh!v!8&tTk(s44~!M}U;EcpStigaQsyq7ftF zAnWiF0RrwBnE=7?EY3Xxo`q#`?iocO7U!N(1Y&XSS%rHR=bp8WW#!(RgB7MUb`(Sb zgVF-eD@w7IAr7eZ))EF~?4H<Gj9^e0*H(|%ph%^Ph_;f%28G5CaAvDYRH(AHSX*IY z^#~NIj9?YAw%P=PD!9BBs*EdWp)gyvA_aqj#I`yGgDU*W8YmR|tgTkTph|W|lTZmf z6KktiFsPE<v05n1B#+Bx^MMFzZNCy;6ni;`-HT#WC=c}(lq+c5VVNj_!!V4bxgQjl z3?ply;3Zi~3l#uLYoLm!WEm|Kd?m|jq2Re$t<1bKE>A*vS{YX$paKIciD5-8RN)tw z4S4~IQlPkOD3-I3domm@o6?2?Tn?8FWic%H0EWY56QFYh{1UdRG>Q}`M?gg-Lu3eB zRhmUG4}`5M?IHy#l2Arg#>HiW_7GHd3}LI#_<=Rc5Vi_!8cBiD8Ynd57{XSS_6^*P zuvMjj19u~A6`<gg8J;JhN+4i(fq)7$57x(v1Qewf%H0UrpjD#a+GJC$T8YxO+6RMz zo!P1%3<|Q@>K_aWoY^WM3<{dJ)j${&c(7GL7!+pGRtGttifpz@2!q0$*=ivSs*IqO z4SWnEYGs3rj}f)9DYheOWrMVU5w)^`w`N4GY~Z^XQ7aqdbd0E#4XPPN)XD}CgAui| zDfyPDl?@t)jHH!K1lc65Y|1K>w6Z}}#7J7%6f2RmvMK9A(#oc+07)yGtZ=54O;$M5 z%BHLqNh=%VE{v>|P4Q8-{V>9Zg9ut5ZlmI1lcbt2XOc}Kim$B6%Nz!;QesT#e~ig9 zIxgB`_J}dZn&T{{pyb5PVc}+zdzd8*bM^R846QL~o`UR!)|fPc(f}2-PzIo)7Rmxt z(n2|a%33H=C9N@OUTIv>8k0s)5ul6~Dgl($LP0iBD;o>4iCWnp0i{K)Y>;QuqE<FY zOK4Fm8>{fEl?_@Nw4{{{ie6gM$_8$Wmb9{g+oC0{Y~Y}1Nh=$KXj;<B1`djrw6Y1x z-ALI4j#lnQ$|eZ3f-7sF%B*Wl8s&FzH<^?TmC-PQ%xIx7XEGrh6m7tROvnah8^|UT zvO$riKm`)YD0U``8mKbsvZR56BcWwk162w*iXx$$QexT)Hg5?*l@_=HWC$Rtd;n;b z%tsl^Dvu912V0ru11`Z<pZS0zuoY%L;M!~znGZNLTPfxPZp>DL`M~(L;>!nImaXdY zWszH;c~++EZUM1wLY~3ZoMbTtB!-1sqQlKeK)^Z(P?9ZhCcos^PUb{&gh?<3ge4_K zcQ>0_ge69Yb&9bPa1H_yihbe^w8<^e9A-h6imx%jo5GSzo#PWtuJM*AQ?NNaAtv5p zVg<^iUU<fbCo3cK*vM#Y@|a6wOf0QoUKusqemDDIj=RE$f@8!eizT5)j~*5)UU+<L zQgT8<e4+&bqT|Do5>f!)I`fKCMK*{g!!tTEInf*(ZHY14expCwoU7U9TqEF?$w_F& zEb*q;_y}{1Da?d!kPu@|F?EVhj*AFO><Obw*yyNyQeAdna-4UZ3Dsk?#%;HVk4cWT zd2K{5<MfimI%b|RnK)C+_{6R-6+NQSOozn9Cq{<FMfXB%DRUBJw!oCw%3tdsuyFK6 z1befU#a2`qc~|0o+7M%7(pEStL?~1;l<xRo^0s<f!DLYo<uOCz7?XFL#hjQBA7fQ7 z>u#S6@5DrNWO7VcqIyTpF%AbsKEWn!@=uIV%-N34JJ5Ng2HIg|tcjsbKGAXNjN2;r z|4EQV#7^6()`KaUc&-dCA(uwuGiAR3v-d~|16xWm#dkJ!N{kNgYKk#;wwS`=kinTP ziD6OZh{X6fQzE<y&!lh=2d~BJ6rY%c5(FNmMMfEpDHxWpXMDURF5Y4`buxJ()J|bw zx1AL^Om>6r6(5K0=IIgO?-Sa@-%q)d^~%e`J<#9JkwN_5G7lA*Ljf|%#7UDEOu^B} zB48{u=Vnu&IU&)Ugd{*V6CVfUm<7u$s?SVrQDF(luB_H*yFhxkt`JLNa<~QY4V0J} z%e=tKnzaUVXY#{2#jF|Se!Q;TGlI!2J}%CT99Z{gOHWf+Vq#caq%!GNcjoEQ-D>5E zPf1diEKOks?y!Eq=z*<xK(v`QsGO!m5$Pd0E*$2<H4NP~(G=|A*2Ke~hNd@di#Rr9 zRK6hj%?Z~3AQu;ufc#?To+e9_8M$t&4^x?sk5l*(u@Pv2l}v8tm>Adih@PgP@c0B} z8YLV><S~@i$jIQGj({a&SjY{^4y+d5N$&B<$ZipuE#}$Kc#Td(#AbYqIV{ekyxtP< zX&hgM$+r&+iyYpxj)(z~!4Nr45*>)3XFuf9mGM{{O~Bb~6%emra5#pD%-@00#2g=M z^$awP>xrk4BXP(Z7L#oDi4V71FpX<TpjnL!0bwY9B`S!xGEhb(=;+?Z#nq~N8dr;i z5_FAcZ(_D6UN^`RmS{0Y00pihRMiT&Cq#Y`<|z=?FgU{`tH(efAGFpL2pWRH)Q7Ss zj&q2DQVyGGnIr7R2ILAErbTF`bDA~m<q{C=5r`CQYMB_VaP1l$2gYifYz9*<oH?S9 zpYCL1{#TaGump{anXNbc@(oJ?EDpy)J{Gfo<k{jPyxjqd$FU?9vl{Otl&Hig^UDZ0 zmMoF;OFR1;2GchqFdU^JP$g65QBlaRgq84-WEv9|@+jLHWiSI^kT1nNG0mw{4+&6m zj3pX*d{ZZ@8o*C=w&r6ri<<zd-Ldu2%rUPlrg4^{SWd^3{rugnrpz(~GN<t{fPpEK zg&3?eoTrPMhiyC##})-y2iqm2RZwuC4WGyHWtMl`-z70IzDE?AB^Qe&EIbOlJP=@- zX5svRgTOUD1q?#@4g_F|I3`bHYaiZ&3mBN{SeBA7+aebv;L12IDzpiMVN3z>F+C&W z<HBO>Asf+fn7&w!b>#XsBlB(=Z%eLvS?8L=RmX{Fu{weZin8X;kX*$fe`<<Tstl|D z<!~KxGKFPuO(4o+3tBNrRV66mcSg653s>%q>zU^%Y%;)A21lXf1LZX^7aXo+krB0v zC)k`~!KVS&vBV>E$3l+^OElv#-7_&h)@FDdu4$Aav6>kVLSZ{R3YJYLv!#dG9A~oh zh&S2S3WsT*qX==lt?Putw2vxw8ndKkHVhfZ;P9pGZtj!}bI(&a3R>8DtHayJYV16w zUXDcxu?});e0A^)PQVM;f^TgNnLMU7j)%I?c}Q<RZ`*Jjjx4d5B2WkkP_iW+Qx+$p zG)GS$|3DA#CVsX-1)P8w)Ga1DA;D^+JgyE&z;gt2YkRQbag|6Sjm5auSOUP~dO?Mp zWX;X35l#7NEnO6gcd;jlu;K+=U6QPc+_IW(11hd8nW7kMEsEAM-K_XXlhV4wHTAz- zE}+pBEt9nn=t)}(S?`WACrk&5H?;mqmUzlK@%8|Y=03<AsU*-?Rr1SW;IxfHP9D|Z zm{WC$3y-qmh&YZ!Q`pQg#LUsAM6~e3;Em-#hiRWji-|}z6z2y&z|lh0gFG$Fl*8{@ zjf27+HP5je?rp4THHG_S*bO7sfvp}*0z?`|lq898K`hRT>h37q9iy~H#zGp3Q1*$$ z-7U`(rta(M1_&IEAnQ8|KWo^fa2E@^N0_%$!)TDDr<Ffkg~+fuJ>2MC3M!^a0WAUC zAk?)@;f_?Gh$I_}#}w{Ok@<3D<n|3qjEqK^IE8yugeG94HC5a)g}YG!Id04=LSVPP z)E@8{98bVQ0J@<js8P5l6=)g1uT>$q_Y_!$!mK6$MX@-GHEvP32Nhsn6<;D&OUHet zfJDSh1i5v$c$60Sq9_lTxCVHM!u+Opl50$ScvnEe6(F$4t2q{&U{4$DoitN8p1xAJ zFBL@S+2OQ!8T*R?aF;4bydY}Uh_5}N#TE<9ltPPZQid%2*Pa5xe@a-S?WUM&QJsjF zfY#_v2`r8QMX~ep0UxUz459=~w<1SLSfqEPp*H0SJdVpUvVP_NtLeg2kEUD3R$owj zOfsNBR|YUK)r%<E$9RHRXe}%#0n@!GQ4*Pp$qK63g4l34C_%<aSQLwKKMOHaDWic~ zk-||q3R@J`(4iy^lt|-f0!Q``S$hVm=AC{hBr0?aL5EKU<dA@Yt5K41r=j!~Y$cs- zwTQSHWg7SWfbAL=k=WBwz1dQGO2iZ@QIx1>D#5LSt)5mCaAdS1^_))#3h>Ivm<pj; zjG1Y0yd^9K&7r-jB#KH(lyJiTtNtJ*VwNB&B@$^o#M-q+S^LtJFw2lwR>DLJRZ>$* z!i+-Vcv-J-3<<Jkx|GD=$S6_KL2iMi#*~B^h9sb{|65h7Tyr=Tj|a3+M}kR7xJ4k3 z`fL9z;pQMn$oo0-?cwKc;~6&xiN-sAP2rc-b4j@FC7H*<maSi9{pJdw;`$>)IjkRh z<drd9$w)Zyw{zu&EK;#v8B?H4(-cjTVa+K@W(ZW4(R9RqU4puW#l$GRGIO_NYb8p_ zm}+G>f<g?2CM`ZTTA=|e_wkN%?Akz>3O0v(`<r5-J0&XHMwE=HT;>D@6CPy&HZLk; z3YU3-*H-uTKBjeU)c%~UwMoeWPL8T3=XFk?V|E}Tzkq4jhDmw@S;Fyum%}4moddzZ zonEOR%M{J%7_7UC;_RyV3MMF?X;Hu<1gidm16}-(8Y0Zlv1(#QWDuym@vS0Lbezf6 z$KS0Pa*K(vVUB(PS!QIw0xjbq0#5s4Q)}%D1;;CS7sABM2Hg`{h~ZITu-%D<OtL_; zBq>Pw$M#pCu^9&l3QuYxmlqbE7?1Kf#3RrJ0}_uRLFe4$gA5=kJS@Siba<^93QUhV z5zqw;odM^eqI)2_!Mh!RE#la+ELk}S>KSJVOHsOi@R=?^lrThA6rC!4FF=xUB#Cv} z!f-=KcGqo1f}RC_%W!*Qj}U1Lkwe1~h`p@SZui_)Bn~B?np;BljL=vNjYma@-b_ol zI(QLMD~H{=n3AHwf=mf&Ffv<h3gy)}&{kI?0|dPQoAw;cy2q?&Uc!|sK;ERc(Mo{{ zO1MG=j$s_mfi)?c&M}z!C0wBbPm5YXTLTiVOaY2Jd}bq2B(iB;!WAl_6d9ip@21U6 z@rfose|L`{j~EYM55M3bXvGF0LK#=G#BffQ4Q$A`f+fKj$<y1%BRDj`18{LYODJ1# z8qg20a5YQHwwQxoWt~7vM42cVSGJ5+3Xz6_ImkSLp<^>%9>Fevh-*mZSz1?_Gz+LA zfr{!KV!b88rl3`kGNvO`?J=Sw4AIy*4d-oq>sbLbfQ%0S@l(UTd!S28|3G(-K;*Y6 z3P(ok+kQ9e=?0ErSuk^(7lm{WX<zGb1N^=Hf^7~L#>CVM=g6E?779oVjwA|BnU{+n zU}1WNleA7&?Gn@)&^R0o5_*jk$l2o}WF!EO4<`yVVInTUE&(oX&Ak1Z04inz@HBv| zYXXpkQJ4k5ll547ff97`xC2GuMu4(?N-MXr_y7@Cwjk21&hh{wz_3u-ED)}Qb5v`A z=5S<(KtU4}g44JzF2R6?YY{Cb$!R4czu@QL-Neh)KhPKP3^ce-(fY=c9**X$U3>>0 zm}XfDs$ShC#yR%j)%pYZ<Ou6*(wIJ3c-WTMO!N=&b9V_0HTk*(D9Qx_0VjZ_3^rdZ z>$I;&(U@{scqT$?fDCDXO*61STEfTUQOd3>Hekv)rhp2PUtuy7jwuWJQ^})%*O@pd zg>o0ARjQtDfUz+1fbWTOgh7ew(KC}vatcbC)g)ZiE5i^2pct=d1^^CbC@d#4zYz_$ z5}su_tr=QdX$)=$JkL>t6ArU?T*8zD5Abm_fS%>A8Nl@~Ap6n7MDv1NDe|B8?KgZv zafJ&g0PFh^0Z?&`i#&e73+1k+kR+JGfJ8GKm_z6+u6BuaP7GXvU?sD-MkPTeQ-jXR z&Lzd-T0=3-$t^VnB$hyuu>&70Y>!~9VQTx|&iCP|T^OA#NkC27lEiv<mUr56a`W*H z2mm*4#rZ#Lh&W1<j9FxTWmFtZur}@v!QCAKi#v<Ey9T%51PQjdv$(sv2ZFl=C%6TN z1PSik&3n)N{(R@`sqT8JrmLpArh8_4XRFXk7~qof5K|Ju2jADBFr-YFGtm4bQ!o-6 zu}5oiPf3NSA})YkVA)tJscszerri>bL;a(GpIku5$YFv%NNP_mG4Gu^Vt@w8!yzXL zJ^`w4z!3#q=30d=n9X%~51s*K%!dDL&Zi-3f80xIZoleyDo;T_knvUog`?rwiLFm) zlz}1ZJIy=7mqAh#hTmEQi8y=xp}Jn&mqu%eAB!cVzGAr;Ka|`@eo2riqLpSzjkIYI zpqHEzD+%#t`~^nFt?W{iW1-up0{r0g_Fl;yD|mhV^T<yw?VVPb+cXJ9(O2Zk8vlhE z$=DDYA7}=a=p$#(rj?OpY{kH8;18x0dZbVl-*ur?4_d)XHe<_7o&MyIt<GX2lWMh_ zVIwScNm^2>;)A(J;%yluyONU?`?<hJnE4WBirY6v`P1wtiw*Tz_}bMaLUIgm@1XRC zdzHUTyzZkG&^rR!{dKipv5CoHv9f4!er3_Qv4_U7s3!849~POS_6?*mG$k$IwQz+o z|0E~J^j44i9?t}?*$0HiM11bY<8+|JFdO)b?ob^x{FAQ#vw*0ox`M8-{z>#86*6gh za#R==X{s&nyDxTQJH7hmpGBc7=xQ_9+Hn{lzK{F_FXzC3N4N%jR1JF{dS9l7lY+`5 zY1qQaB3#2If0h(=TFRz?J6b%PENg2k0j0S;uG(jgJ>C%fmaN?{yYGs&#&r6eWUd+Z z@LGO}f+)IK!$_zLC4F<Tnj(Z1;b<6|v|Z^SIT9En7?BrHzd3YSq{ReIp<5tcY;j>o zGM>|!H}zMgV3;nBX}jn`vA%IQ{NE)=r7?Ybr=X+5D4tQhPMj(?A0y|YeWRA=u!rxD z&yPOs@P6&<iuisDVWYQ9uG2$>L7~4jLFk{+lXjcDjr5xsV?vwMR$?0S-K5*wCoJVt zIAyD4)L&ts3@9-^VV4SbsT3RrU{{3j(2?)Yw#iL>0t=3BY?4NJhj&IjY<f?OtNMmP zrG;7`HxxS2Qh0uje4&oK&iEBM>*aB`gw+T4!%a%-A(9A@Q`*~8dToi^%Lba818kv} zyIQ7BwR3nD=ag1a2CWF}b42?<h6kqL&jUzCvIdW#65f{xe)wqSKG5H>m&SihDoTwv zNIZ!SM@ud%SqZ;77#F7ss8+qF<&THUAp6pfu3=``Bs-A3k(A8(w~;=-LFF)mHi8Vb z-3oauGzZ5xd*Or29*(+GrE7?7`!T<zs=P?5{*aP%5m9%uHTm69ywcF1a0{yj|Jl3x z9O!fL^*+m3g|4amC5B8$HDpV*>M#aD`p=Dcs=ThIqB8nzZ-9`&Kyk*<N6-@#4mxtm zG*CMdj$2+HD;1%~pROP@VT_YjxT0UkJa>cJ(MHZ&9H=LZy=B-AN4;eX>VAEN(jHJ( zR|qRc=yz=Q>x3o$Y=^_~Uc{7CLb_K(CtM?6!S1fo-x#0I_K7MS6qG_Qr;bx<vv3{? z<QrvF+4!}{mRP}bn?ChR&if`=ZG{fcc{4^vjx`?6H7=)}k|Txh!5a}Cmc7hAQ<5iM zvqY=f6*(ce;=x07=ohjaOgwGV(3?hLuPV|HwT5r?h&$2zb+kf{xSX)UYU3__X|qJ3 zL!k|qbqY^(za(VC5gj~P0<t7kxcZm4D4zo-B-8;|<Y_zVOyz_qf+Mi#3ams&Qu_S^ zTJ(dDR!8E;n6?@7me^Ljp&7Hu4QUcM<WxI6N};vyJ*&}duEL=O9x{|o(wq*hz*ra8 z)S{~(dcEcXU*;da>>mnuiBruvlnq(dbmUPlcGQM3YFDd6Wzn92&Rua%F*r-4&?E{7 z>w_)gb_*T0pjWH-K@19ht5c*+a!x2R3_7zT0l<tCwGr{4mF4=049|1h=Li_`y*^0Z zQ-yt4adv2E@-gUEE}x97p&<sk{z7D_p<OBA0M2S3H$ACO9%xsqjE=C(N8$(i(fycf zd`^du$90?Lz-L}T%7K_l&LJ~H8<GY%#56{=Hg}PBy(KfGiXvET$paEEIQbJw=;(cM z2}mCBBBCp@zCHjg3+BcrS=+@~LoyR+Tj><>R7Uqf@{MpB_8<u%PATsThG2=`q@c!g zuD;JzsW_OWW*c|P?xg1^F4II9=VLvUaf4JXD_<I1`3c+n>xm;m@>`r$_gq|>?lx^n z&%<`^rmRWN(OuSvw(xcYuXthG<GVzmmch#e5KeL|)pP$A_yM&E#igJrer4y-lB^LH zs*c9XJ;hsH@DmV4=_C@Jhpd#wOKoOF<?qMD5p}@<;H$z35~egxDUI+=2qW1qLl`4) zmJ+T6r&CtsLTi-?8<a_CP^ssBzMcAfW~f@wZzafzZ^!_Rj!IDT3IegHbZfBt+-mfH zSX4w{m%dF3Q<U%C-_g+Fcs#vSQN7g&QZ(qs`=wzOm9#V8pMsXotlJk>!&TbATCJr2 zUd06;kuIfgg)&VZ*))L{=bgfs%9ItMn95`j^pAx8BOpaYO)jG<qhOjMtujIscI`4k z;(r8Q-zr){SfOPC4_0`dSrhG2u3G71A5AUSFjT_-f*55%vIYkV9SIY7sQ*-0|EV<g z(G+tH!?67$39<hqT>m6v75^tmhz()d0jqatAn0W72Fc1;MZ=Qor!rx9TWXi_?|`*4 zcg+}e{(mq?cBvola;(aTiKbHNZy!xL*D!2C&IBH&up6_c@a33*m`+KB=^i#zF05=H zWwI_=@CSt$jMl4$c~aj4^HPDEi9rST<J5@M!&w$gmZ?HrO3w=IpwvUPYA6V&1Fe$< ztc9roL>R#D%t2Uhk7I4M&m~-RPze~_D1F7idYH@O*=kTV7adFjMr$+#sinR=R;xx5 z7F=ZhKd2r8%~m7bdmd}Uk(2p;2$oejP<Sk!NP+w3CC=qorIP$V*Xf`kuKz!<`X5;T z5A1?~j+g)X)dbS78ktGKvL;pv2;@GgOhn%M+GUnIVBLS9#6J-JABd*~0oB$1f&Kk> zE_5p$piUI8yuR{iP=yIodXg_P8fud-atU>*3CtjM?LSidk5vC7<q%Rdk%Utvg{axr zP~iq|6v?cqPyu-c-M2?n$<YxCktBMOHTye^A>QJvWkNNJRHgDuyXsiu;KN3F0dp#} zDqV$wm6;D}SBNe)JJ}Bfm&$3%m52i750YsGrzz0J5Pc#nLp9F{J+O8eWe+k&uH;u- zQiHGudj3U}zsfEZA9k~M)L4f2`U`akR|>TWmkYHBmkKore->&GE*7d=DWy_i8U8GH zgB9Y&;)I`@MjcX=XljP}rIGljM!W@YF%%V4T3~I2#RAW>2U26IKqin<keK>LsfJ?z z9o|(#t(nbAPKX7I4xZ;Hh?1!y6MslfLb-)f3dKGT9$Q0gffXqclw~dP6>pIhb)dL_ zULT7Lo@W%a!&t$D&q_BjjS?!OK2=Z26>aYeAFQs`%n}(>lx4&Otuj@c@=$iDqu{Nn z$wK$NGBXutV{u3!%E{iOR7zTiMZr=tnVGJkQXmy)c`-!+*`eiHo;Ym94jEOUOGX9F zupbK<e)O1gGJeiH?dMnYfr5e&&qxr6c!>%L#a>Gn>O32!kG16xgvMi5S1BJLRL z9ge2}_<+0UjWMUHHYflmCJ}dt^$f=Yx#z}R)WZO)ssROF<k9!B?%{aifh)L+oEYj5 zMSeIDiMU;?YdD@r;27>AAqF-?ksnT2B5o(i?MvzhGo`rgiLl%cNM0b~E~+JD`#<4o z3>A$e)VT%WpOHL3#2r-A$o4zooD3DNBt<y|;ZFLlwahGis25#61uKzLB^&E2q9mH- z+P1%YcatnWk-k$!@q@-rleuYk<*B!@z~VUa;gM1hq=uU|Nsf9N3ml6pAKq@kcqP+B zMV&>Ngf_)Lm?#CJqMoO;wD>}eF3DSB7!E*MU6H~<Fn=B~4wnj*SP|t)rvgji5M_&G z(sI$_D(Zzgjz#MYP&#gBPbNlEMa6DLaU!kj?sC!Y%27jFK^wU9Z$pcc3)zXC;<v-< zY7_z^m`~Yp(^8`kWK{1nCXLOy?IOiAbf<CvspqL<I~3wukSywwXxJnH06$VY>?A6d zBe@vP!#n<YYFeQ65E$S5$C+!1G@;?SusL?y%r|Q}sbr~edJqFEsLj8E63DCrw6bOP zRsmW$vU?{*b6d7_6%=w=wsuuOXj_+*2GL}dw?5EHZXBkxkgLQh*aN?d%AEjEW}c{E zK|EqqQ1B7mLR4)wBfRmeI)r}YV6;^l%pk#&TWIhPWCJqK1Nbcz@Z}*K9M3;4wo;K+ z83+JeP}>nT6(Zvy4>okW2m`4H*a<CGlNb}FMl7jo2JXOVXi;NpgIG~YTccR+IObRg zWaSXgN6w{ILL^kFu<y*C9p%EMN<;_^|KiwTj-=H|t%X=R-pTnTqIG<fr;dspm(mMu zY+y@9pdx9~$pj!-Ajkel+#t$w&4hIM=;D7}4#YO3hxB=BGg=f}(%4EaQb>dUG7FG8 zik6GluS9}S!MMgrD^(6KkSm7`8C4fuh((D@nHsqgxe%<_m1;RK0u^C4;yk4k4YV!< z<6K<BW}2r&YxR<f1|R_oHB0`rn8!s!odq$9I0P9;)`7$YT)P2EejtX@Vhe{pkh{*# zl-NMIsLbEakq3OHIIbonN4uV$RA?#vU!kQ6QA76xNHqmA5g8I$zR!E<umY*MDgpb< z(oKPOLV2lF*s?f8O-TP3Hwa^n&E+(927XmsRV%<Ae=Bu#6#0)K;;?^8AHk<u?MsQP zWoQa!B5`N6giYpc1B@Y*IaUa;C7~;=-GzsuRgPUHbETxkSfVDE#rk|~ijdbtD9>dT zb8;4$ij4mAX}*mh$Xc${&VrcvMY<_Letk<XgX%+dAr~ORl40TQ^a?EsP)0?R<*fn< zkr(>%kLar_-TwkYl^)0p2_{=l@EOF?Su$GXKQx9G$Sea1G1IK@va@1bA`Nhv1d021 z2v_*Iu;RpKttTjv>Vq9If<;wXzC6h_aaI7mQw{s<4YwVzmR)^e2Cy`X$AhlCo=(hN zGM^D{_Q!;HfpgIv3xci9wnbIg*%DJzp%1EE=r01e?JQbj$};6i?42XCtm&O9bgAsK zGTSc5|DBMBX1GpNS?)NYdzhtIvNhV-e555Xxy}EA6UeMwoc)nLy==~@hLXxJ3nBgE z>dz7)3zKw52b@h;{9z<~HW3@*r+Yv}gGZV98zR6`HJLB%lN_;)IU^!<cGl8$9uY1w zE%@UdQVdpXCidzgUabCqbQN~>CtfVPc~dnLA<L(+y0SA5NSv|CTaJ|`8!Pwg#Zx*I zMNr8qdhx(pfP?<nql^e5Tk0-&o%8*h1JIms^zwW9BV!vFz)s5R9b1s;BZhO43_R9W zW>(?M2m$+NSCOI|9Z<rjW#lXklX(|mQXs;!5*J7`OA|)_#aUg#L(>-eSD+8uLo}nq zC0nKLc%*?~1M26jqCy4P|B4DKu)p$LVnX6rPnoT4r&JM-PiSLQ;+PPT!MUZWCSZ{x z`JaT*Ue3~V;Z8~IzvinpXq)Pph?)Plu=kh$PjmafHjWANAZDB}v907v1SHI3BU_Mw z=&VtHAP%%u{CAkW?|=IEi~kyCt@vku79sziZx-N0h@&IaRFKY#la_3%WFoGTq*GR1 zSfQphg!uf{4Ecv@Y2ZPf6feLj0n<iqC`oE$g~kEB3pv`24L{7%21nT>s`X-rCZF`c z$VEO&hkgqP!n_*5X0Rbvrop{_yWG_0pWRmiehxLaMl{_B4H=)Ny}FRwxyi$gDhrPK zGW3gNv8F_}copvhvN^xLO;KyNVofdl8Gzh}z=n7pi8CLQ;t21?1K7sairYtH=t2K@ ztAi*9+xcf25Q@BGC@Ma{>HCd}6>6Ig4#(KZJ}cE=dgo6K_f$O}zj&^T_*j(8dc}~v zri?f@<?kO*t7VJRP}MdtmI*l9S0Lw%-_ua51s+*8xn7YaCn~#sJeS(G{Mn~U#hde# zq!H&JdXnUaypmn}8*8N(5sO&zDQ9D->S`q}vA(Z>kanEgoPsi{D8BO@p*dFOo?N@J zI^3<Gkb0)UM|jBjbK^MV1Wmbu;zi!eK0G@3w3}`tTK#fKoX8A+j}r#<gm~FY?w(@b zDxdMO$vw32%l@8A3<#RVyaEfC?g`~SC9pCjQ~--lM3cJIZF_EQ0bW6Da2W7v#;>;D z6Zoe%JelqOK&^W;_+sXAmY#^%+j$%r>;@{r+SugUg__Qb^QET4lM(;@1|ThOKBPV2 z1GMxwr?-q3(v-saS-_EPjn&ae3>FnZ`KC_;ZtCq4ZT6(ee8%#M4@DPEFIQ5y(VxW% zenBq67iU{Se^co@lHBvbMnSva7YCt-Qsd-J8HU#eUx#c*UL3N(F;qA*p@tsDQ(eHA zsp7O?>bOpEI6|$!mQS5k)57r(NqI8~mFD~Vn>hV*tV&m-;1hV9w|GGXS@mQp`_hm& zemR>D;;FBY7}u)BBE445{+}w#ra`$yq027x(NiU!RWsW7&zy3(zUC53q}fBKd@BY& zClf52IwSKnpR~`Yle?vlsuY}y#+QmTiAR3Z`f;u5)837z?n*PPg2zXS+^_1A&nL2a zr~~d0nH5FKX_B3!cN<W%BxM-x#<B*JvNS>$3<a}_lcbnre*3CrIx-5f$S!6An(~je zw2x`ExF8t{G0T`W%W%I~P7%q+l{SL%Ub0Z2v$-p<2t|^%NuWkgSxKh;%Ei6plr%d6 zl%={z`dwhEwms2;{!j@nzvRRp&636~rhRIPx3kBP`9uOv1aTEjmw?ZJPW^)?(o9W0 z6;`oF9*2LHWvM^F&W?*&HMvGk!rbQ7F%rKz&}XK3EX5u&(gq+XH(HBiQ~8CfM9(o9 zS)MV;IWbkq7K^|}<(|E0FDrWaCK~R+SdzH{&Lm-#DKejH;avnzs%q>$?8=_>@d}6> zm54l481uAj`3I~s?%H)DKR6XfE}ztlWx*yGY`O@-*VhP~AD58iwxuiGq2w;1mp7vT zY9%*Bfae7ZH;IqidQb{*wqyw^UMRV4h~1Q9?@Ne%7Ln7m#IUpMB;8VS?(NuOWoWns z*<$tyywUvV`}cw)<L|r#`?ngNPSsdKW2icVk%A`;m+Opu8iL>ENNtB^E(e^vMe@r8 zrsY_9^zv$^Ymj?Y;3%c%nxW6+Wx6N}Zew&Z|9lW!jVs`@%R-0EygBVMp`G<YZ3O;R zxLkCf%lcesjR2Rs6jme9f4s<^=9$)V_d>nY1AUFhC_=2v90aDMJARUAGK>@pL<<85 zTOTP&W<b5QRBB+IXp?1`P~ANcDSmuHP;NtMbr7GWqhbwmvFnY_wJgR8?2@sQ|1Do1 z1!G`*I!#y@$ndRj;W52*n*o#(&zePFsJXw$(#4}JSuUtNQw&y?WU#xLH#qrb9`y4% zI18UD;FJLDp0fpKD-0FEK{P~E+H5(7L8UH9gV=Yv8hf*@g=JE^uap!FJG&SA2Xl7` zjZIsn{FOHOOoE}l@(6nTydarxVX|%Pups%Rh#a{xFd9vzMkPj%-Y{fsQ?<L6L;uZ* z7>NVToqmoMdL=5LB8O1N#%_Yh8!GoqReynywo9Oin{3<i`ShNnHR@E63?~kCmX_q{ z+oKa-kWH>|&{@cKFKuD&Yv$SBHlfX$;HJR*TF+&iB9JICJQkX`dCqQYz2`A*d!(N@ zBvwD4Ck}ll0GBt0zx=1&GfI01kMhWrpsdY0Lw}$hOpSY;`7?dHD6-|iciJq<f}e5C z)s6lXFX`7cnqsRxIOjX8dop2X**hyu{rCC;W4}FFgB+3VeUZAZ3!&G)^poMW(9a*M zzqFB6IApYpz?#Vdh+51DWo&Z6uj0FzY~IZ&)7V(+vb`UP|1dGj+32f}W@T;@z;x9# z+mFRlzHQuaESHthMABiPIT8vHgtR3DzmEWNX(G--c6t*Lt|*V_d(Rej2+<Gi^(>)s z-1nyLcwBN27UBb-?Vefr%gAbuLv`m|ru!G}oLpiNI2^q%?F73Tv&0L|gwzCM;$GuE zh#R?|U#^JK)XfuK*=6B|c|Stg^yefnu8QK+)sxW$x~Mo}p_{|6F-w;}N6I15^ldAC zIz#=<4>Ki1-uMKD%;-5}lC+T3%lW5T%SlctH{R-pA=A#{eaV*i2TM(?z}Cp7{_`%I z5V<j6Dc(uG=i1N6P_<sK5szp<IJF<>VLhnkXGpwx5}U+J7;8iF$SIwqrL3Beh2T$E zAec;|Tz<(g69TY^Ruc$}g%>Qb_B-=~6JNz&x`lOca*6f=>;2UkBxs(4*E$<o;_t=- z3UDoavE%+A+S@4E1cnrj1yH{AkXR+<`ejE-J!~3#xI;CORHTNL-_q+pky!}R2~tzF zB=qKM*|ne0O<Qtc1y;#Xxt=dVP6Tzxw9J8SPMvNQWr#xQ*~&-K3#OH~%z@LA0V~h} zzl%Z6MkuIoOr~I=YTr{!o)_kCIr=YQ){6~CAZ-aG0sG<!h!W@IODwYQNWB0c(z#P2 zP5NYv+Fn=;oOQY;x(d5^HGDjbG8H9JBZP>pKdbmYPF|3FRD3H%m71^(uan{4Oax9; zr0`=O{eI(lnDGaCw_Y(suh9Jk7yRON((KEg=?G(QWu7C19vSNKvf_uBx>e)899cL< zPWc8`qrv%6uxhdEt2(ZUN4z~H&ir4Cs{Ps1Pd6I;^2Pq6#{8B;Ia{=fS*7)rlXN0~ zc@*<gq|2e><pQ#AT&EdG2o<ger2lxPUb@2OF5yu>*6tDH%v4h1Xgp_WSGs>955wg8 z<It=w5<>MHsPcQ*$CLuh*-JCGiXuyE`JO-U%2Iv7KK7QMCbi6Dx7ARg%zmTs_P)He ze759iX|qLgDdfnQ5e1*ITlda9qA{4ZhD%ecG<c`PCzu;Ub2VnI1V-^$OnQzxByz(x zGhwXfbojX{yLIay1NeDN>240QnId++))}BvYw*sq_P)FGG3t&A;pYc)8d(etF#VVF z*B>Tkc5X+fej#Re_+j_TOVSl7#@^EeVEW?eZ(hxt10!TZaCNK{-$If65UGNH$5%dC zM~-9Azyul)kof{`TqB@^S(<BVnndtdo>@fk0p1f?`{uWkSbsO4-j3+M#JrHAGb)Gw zWRMu=l>a_={*B#oZG4`eWz+Va1k+W3mH+#K&=;1YZ5H_-DI2zTG+yQ|gnU`Ai3~Q) z7GK;09D4hPIUH)g$5<@so@+hCjtN}IbZ+|^f2X&1QAG6W?MkcRAx=}ZMC9uUDg+SD zhmq6<jHQ66`UE+jY6ZQ1Z`}``VkXyE6Jl8Z{oL|M^_S$A{#G2Xn6QaOYk1&M$3=G| zd-1TdKNw7opBB~^htTV3x4_=3`<rEND<aOZGW9dy{+B+{5Bj~+V(|gj<gK`o9?zc^ zWZ%a}Weh3w7i+r3)}EHEx_L}~M8e#CZn>?ku8^Hd+TBsQ=v#~!AqRpyzhpnfy2#jZ zo%>_S6`B8bE3Qmvr<3LKLDcQ2VUF3NALJh+KxkyZvtar~Ou*-sVOin)8E{*>EIrOe zY>))hq~O$xxlSnS@r-{u8|+QK&YmB(JvG#2Jsv!|{A$Nl^<2Fo#?zN+DUkIvhGavA zZ+1H9zK!E2qq%KRuZ7woZ((+7s68BSLeq>6l7|fVn7QdzaHX^K_{UTx_n^Wr5Pc%< zUas?3ZIHr^^=>4f<9g%%@bY&q8Ml%@#1nAtx{G`J+~T*gkH%Kc<DA8n&cef>)WBo1 zjHikA`zf|GXR&*W#wZHh&}HcBt1hq>t5e@pvzvIO{IDBPF!IUpn|g9L6Z1Bh=8qqK z6^{cfd@PfQNXB|rh}Y<sqSVy`vd~v_r+r7H@dpe`<a)&&=Jb#0c#Z);l0qO&F>o!m zYI_a6{50*AtRRG{ePDYY0g`xc4eW3E4O&pIT=llg8HfO4{nbifT8yd`pqYpfuuD$d zZ$_j<YKfe1VrKn_dO@k^y-7c&7uyH0+xzTP%n-l{qfZJ4r9sl{OhZ-!Bua^}QpD^- z37Z{h3KT?x4&^<p4EY$uVkg%<M}H=cwxd8i59dkayVW@d*M8@RSjbGHshEYP)u8fy zj$WoL>kAePk}_*`A&GL($`F889BIe?$d)++TyaPi3RM>(w(F?MRf1SwOsHkvSVTy= zL}PT2aD3Q8DuV%niXgP*W|;4sLuzOLRKFJ4toO?nj`UNeRA{SkECvwD6_IeMto!PV zABjx{jBo~YgbOyde0QOkUjr;gD@>>*t3}Z0#?DXVdG{^!i&#X(oo9rn9o2U}ULxBa z(GMwI5sN#|cx~6@15g*5*apPt9xnATs#`$c%kBwyKTPC-`zp`hA{p=(p1Qd$#3#Q@ z`1*ash!K}@>L-fA%{MHvE~C4wNZ<#N_GH&7zYcMs`L$~u964=}bBF3~;`k2|1&fnY z!{}-srgTdI9k0!ZNQ-_t87~9HcMM#+oo=u&+n2DaYR|kI(CSb)yl{JeiQgAnxfo*@ z3GJX4r&6$m07rdK<N8G@iCvt66x*`5fSfzbAUBG|p`*eGJ#pJl`{X{Dg+bN7(NdKS z4|T;15SE3-72z@zeLAhwhUF$>4rM2I*6fSr3DSO!B&78}6YdD>AuP*FabeIzjrl>$ zZq~Vh3_t5)ruBcsA85Mv=0vNbSE~J##`H5Gyk8v=vut}RAzZ@o(<1U;a*Yt(wl6%J z*|JBrgrrKqB3Opz@mzMQN&UTFCU}(lwxOgCbDaEyh$T@UP=Cn|LJSwSSgdY|5F#wY zM1NODqba9A4{>10N9fbn5ycGePkmHhO&w2yXbM)y3R%P7dPhPVVJju5@rA>9_4~o8 zJkGIuQ`m%2oPmJ2zu3kj^Dc{xUC!K=vt$oL<GlJ?zbF!{UVVmWwSO*(9mpJ{zz=ki zT^3y@Bf$?O<1J4^VR4*J@ap#rjh`8go&5_rn9OSZOh_iB_Ft1j9(LA4E&po%->FSM z3ReWQpw_WO`mP$wRI*+`UTA1-R6xh0AC3+0r}|ZwiTq^?$aQJ|Xz^L+uIAnr-{|Pb z(#ALM#TI`k7J&t7B|)eER>Z~YsiMX9i$ATwz_2ZjQDBK-Wo!#FW>lX=Zw|KAZ&^P| z>tnh>gk4$po!OH7x)HpDr9RKHIFzNsPzmx&K`Cj6R6<@Xu{9Wy_RS=0j&mwZ!fe73 zWHAGnO62sNB>J;y`tZ_WAo=C@D6|C>?%QG_7bj@-@@lKx>*5bCoHj@?+$i<lnEHLc z>8UgISB>88Sk0!!8)K~l0MHn#j^8Ya9_L{AEs3mzCdU#G`fhc<emm4tmWc{977#C` zb#4^>0TWN7$t4S`4YTa@eb#x3TMOCfUKvxYxGK1Xh{=q{fjL?46UQRbkS}Ul#Aq?L zi`A@ywMsJpn#7DGi*_*Y$e9n?e)h&O4xTm0=^^}A)lDLt(#gq^Tpv^<Jaa6pjF1qk zRrvM5*gjGQ9GVkrwL+hGpATWYdbUnh(5o|<NVze0mnZa}z?BgcA!IBR{>9j{pII5X zh+V;!bQvcg;u5017er-N<B#Gvmui_h9m(Jvtg$=3uk<7~nv{dvvqSpVu{yntQE4Lk z^l#JjGIDZ313>|hwNoz$YJxJ;5@?2z2#cm1+mtFQt_`_@@G$P7l>&f2mj$x*X`meg zRz@nO|G*NyHpE#apqky1R84xRINYHB2(Tz!v3&x<u0SMo07T9gb&|bybhF1n-n2$Q z&`H7?;do`RW1vNLB6=OdNUvwuEc?9Sg3g8gC#ECl`Jl$ALO6smNM@fA0YXY-!Ynw4 z2}(q7#>A?1Gv1MedpaP=WDc&(HAQQqQaE%|P-UC|JPmRUaK<K8105ykH0Yl59ig4h z$7y`#S6cnohQDIsPJOp}U1uKX*d2YG_>)g$eK763Fs+VjE3if}T~`D*mk2SQ@%Vku za2kkXFg>zE_JnLf_sAZoiSS<&B7Z^^2H!{ap_)N=$u1fYDhJ)mJ0ty*7`6YC$RYfv zX4&u`bBv+(!Nn>=2Uc$Xsd^sHQCv-VDap2go^pAnam3WwSu<ICV*;`3)Y}+Mia&%e z$p&_VqAA|Pp{kgK1UCjo5*H|o{$&wvkv{yCa25r!6u|TyLwX*(O4c82@7(Y(Pu3W` zHncWLNQ|VM#Pi~7gIh;=0E>ViiA!TlWoERqGNg|}91bsutH@qh(bsyKAzl0t11%P1 zh&K%`QayNOBx&{|Gu9emDT9Asg}9@|3J;7FyatJ)PggNx0g6pHG?Ta*rTxjchC@H0 zoYf-QcW4VreEt@LAT}4eOb_JQ0zd=2Bs3k(Fq0X-Sr=mQuuGq3_Sz3$A?VoPV)N0I zgFbvDx{40oE=)B{EXS1b`Ia#pevEDAKX{acSPBh(gB#?KiW^TH=t)$ZlM>JfBQRi# zM5+*c@__CPBs_zxdR1+B=M{)6o@NfLgS(hk(>zp5hRPGh%B&Y!glxepL(vw<#dI!= zqP0WL9<0;X#>z#%5F@Y8ssktSW7JR+qkZ+2M}CfGL!&tZNo#|E$vx~{PuN9JjZyuN z)LJm1^fKBW6tW~{A;xyY>oV<RaM^_Hx%^pBl~GjB(iO0g%4q&nl4Rn$oL{4*+esi& zb7ySHw*q<2{V*gesK#-}AB00M61dKxw9*wY5bbA4Qstn<A*}tPPWRhdoLpA`R8jG; zJ@iRmqNhVC{P5h<xA^_p1j4N!{A+LFYslZuzK$V;C(o~$7XRX?E2}o_Mq?(Q3IGc3 z*KQK)1mvz)SnypD?b==&A_m+96K;3|9&0CiZa?ckyFzM;Vkawc1%LPrUbr4al3K}R zV@%1N9`a%ypZJMimcsHsgE9AP&kYGmPMfX#Y2w+|W&$nr?g}|W+^A!)6ViG-jpDo} zu{?KekBc3>+yi6<#1fjVoVMns`AVj?cyTK32uA7CQYd7Fw%6c(E)T6-6lZemjBq(t zVn@H$I(ltpIr_uZeC<0$KVt!<a>U_8@}V%xG+dRMU+RR-@)JKUdG&8`431G0E}D|- zrGMBV`E{D`t4Ehd*ANY-4%ur*y}50|c7KpwXWDYe5VUM<ZZ0)fv^O`wx2Qt^y^^%D zXL~@xPP3G!-vq7q81A;A!g4^!0&CrK+iLzq1WbtkV)R-_tO6K%L9*`gBq@a&oFJH+ z_=d4jJsgW3_igmalh-=-ot-8>{4*h%58$d_R*9E)?V&&#K)Q*&_cH6??CF4ab!1N2 zPaV)s;a%%neQs4NV*Ci5l>(k5`}p`JR^sC~x{QY<s|+65xvDhmzY~~UjKlM#l=II1 zL?PDXdfY)WJ*hWE8X)t!D9b&PGehgqz9HG+^*H(Bp>1uF1Fp1!K-t~;iESNkDJfhE zlQfH5tCR<!OMU0|eCmVO_@h|u0k$ph{d#$y%bHBrgM|^9dl}Q&{ShYd*i-56&RTj{ z^oJJvqM5gwK#S^Nl=EfF#oOQAYkgEMy)xfWg1+z&9~W%Y`(ZtN!@&Dq{ZkI*cVbSb zLGaAC4TpKz&TTpLB_f#gpx95fAI1n|vng7}!f$!o){%ZKsX((3()vzT5K~=o#DAUA zA~EQ!j^f)@1I&K1<sye)TER6z5w_1jNKo;nyPRo0hEoqbx3S?j|FK<RP4q4BF_bDW zM2Y~tl}e(|lrW4NxFUyj!Pj;f?vh2hfk_imQwYf`9CM7$Edes?1zcK9BBaUyw_T*0 zn~jm}05`Q3$XcHOpL7>&kAOT&Zr!vM&wQ|RBmpIGp6}KrvKG;@LivbfgGFY1>|aR; z)A<x!7$UDj@DIh$7oTdIgpolnG7F#&)u{!CrlfLoBsDB?GCiDY+pG(E#7<u;;>)f5 zEsgF!c1|@(&;=efA<_iVOZ4}0UVb-A(U8Mh(H)^{gsEJxJs8|wKZHwwn8iyDpsI0p zG?$j7mpg$+pPOaEwY-ts=#XbhoQr9El{vR0uKjA>a;4v>W7l#O=K6<Tl_>5j^nKmW z>bbFWnKgyOq{YrGy~0<B^g~0Q;UhPsQroQQ$wB<q1?Ty;)cW_cQ0*^;1g@_`SI~50 zhh+Mp+LingslA@&?r{Vz2*?RCqG&vPbx`sy`G|yVwRF%V`4lT^fFC?|PP@;eeD$B- z>~sVQlK(zz*f;hH1hl;^tOeZPoK78l#@Pyd!923za|4`ZmY3Z>A5i$MKZ;QVKJWcL z`|HfN?c^MuF7P$8!tTP<%X_qE5%fkw{szW)ABzY~85BGHMR7Kp{&<P`?PAiIZ`ttd zi^1_*T2C#~@7Zs_<vW8d$bH`1_A~m&)YtlM@TWERI=dO2a_O7AG<&w+@$H?0O-0L% zG%=2XY&b_Pk>CZ5YzqUa9y@Hma%r<X{Etosmi2Z_)~**AwQaB-jASNV9+rh62dr86 zhhl7qJ1uIDEs>ZDZWGGSAlUnhS^MUGjo~ory<k@Ssxd{`D^U7D@9(RZrl84HZnn|E zZlRX7$=Sj%eEcs%Ef0ic!|t4Ho!$n_l`1hmxX%WoZtp=1)Q3VsEuTJEMBv*Dw6r6Y z4WEmh!A|z%rD=XPP&ikai~_Jtm)QO7Qi&0}-6At^EoubDq<cnBMiL;1u$3?35oE2c zLy}PiK=}z3zL~6@2?aoW*CY3^C3@U~yS{DtMt6Ks3hT7}YuHohj0gEOH+_3@`xS9+ zc1=mti;=C<isSaH2;2FFo$I^`s%$>S%T*sKrjY;}clyLXB@|3DgEHaN1E6PSu+@l$ zv0%#&Jp*2eEyJ(h`8wXcD3+)~fW0<zk1n>PUQgzWR|$iKV9bb-VAPVY{D6sHvy2fm zPWcAz+Y1(F%7hFoo&FK{&i5_t4F~sJ$dmF(>HZD;HGZ#CZ+@$YnHhIQYMb+ghM8U_ zV>BFyRwmZ091G14y$AR6{b4lwR;kxb6CG5D?VZ4HTxT0;1Q&5jZe`&IUrYingw*an z9$X2r_1;hF;gcKO>B4ONr`5!{=f=MeGz#E&7$})^>tQdddodCG9?3=bt3U8d#AmBD zEAurv4jSV$M{q`YQ=+qe+Gp$-h{3|JQnsHP=bI33?mqp^#b;P)@op=lqj#!81#?jO zF5qnNvo(e;;6V1T{(9e^&(<pWF(G|q!ya0|X%u2RfG?vv{$ij&rJ{)Urv;8*IVRiA zfb{eI+3Z>`e9@en#DT}<s50WWMGvI-T#US_6D$@HGGVfXeoX*b7tR6|`rejtXR1Gi zu);#WG6bSq=r86b+W;(3C0huVw5cNYzI$B$P(=)U?(X!et~lF@sXOPCjmdX)y9k@Q zpFiAH%Eusg`$@d_iz4Fi!z1K-Od8R*<Tm$2B29rDRzLfm3!=t5iX^kZj5Du{_qNzG zN+F6Dx&^9HqxVKMzj4ZZ41wtdDtEu1t#nl<X?2?uIhYs(wMVYAf&&uh0%~nykWWpP zSOu{tnXiXlk2HPnm*q(1W#A0PTDX{FR)}{XBZ>eSsn`OQwwEBSzDfj6;{Ew(w9vb? z-{a=FANEAE*xTV$OfK)k>-F{@L(%PXUYqRA!|~+o&0DYQ)4c@I=bxR+*$WhHohQS0 zo!672m~VUAZ?F9x0e27m7xUMTkH5>;FJ|7~W|r5T-(C{7^WGjK7QF6ubX7&4{%nqS z>eic%ua|wPXJ>a-*%Aq808cxr?r)<|h-Ey{bW)IuJs7=nzP>#=mzV1<uQQ2WC2Y)9 zHs$S8gdH1B=2sExBpi7Nr_+e#5BXA;w7v*?Ux8oVZI*2~RC@yM4z45~>qjwrw$DuR zNhx~$pYP_@FON^3IxV`NU%l@}w<yMOW%<NR&Ur85*`434-;)OY@|>Ji>Ss(Zrt8@m zUN5F%s`)xcG0DFIY6I>le7m1!52lJmCuGZY>*EhFN6*#y1KzFuJAxQ`yL$xv+`o4R zTs@xL{*0OW?CTZKEY#b+VxoFB_hOqT`ncIqv$38Xkxzy>L*eU<X8fYq$$stp<#qG0 z)x)2>lU+4m_(Rc(v2mcEr{~}O$=_4eXV+7h^JiCMfnKqJ5oI&=)6=GJ501_2qH~kW z3Dz8_k7pYyM*Q-(n9q0B5j7mnafj|A$d8!SGtSFX@AmGVUQYp4CcPa!$3q@ozFplb zJxS=^Gz$kKCxSvEK0cnW_RW4xKCe%^FCN9FbGI*l9?HeyW-g|`5d02SRpb-vU5PvX zg-LL<)|nhLb?_yDqDx3{y=SAVV@1Tf$k6*eOqQdrE?`A<U|68*DPw!{Iec@rF87>Z z>3D;0J+QmhT~&pTfZ%AoQ&g<&JU>G9^{0*+(*EOh=gI3&7V5{N8Pz=F+@3k<x6{>R zKIiEf6&2GTzoe^9<Sh4H@b(nHv_zGk9D6jc9yV1rb8rZW#5<jIn;LKZ;Y}}JAM`UV zBk1VacqsO5^Kr#nnDoA(?sTEuwlAlW?jG2=+|phbI<iZEyik|-^(BvK0rXn_@^S^n ze0n^fp}4u8lodTbN>BJYJHtWoSdecjdL<$Den6pL=~+Z88gQwT(v~2W6v%GBt(vtr z5qtNTy?L*@oc|~6d&H>m3cdhv_)Ik~w?a$w`R!dB?&{#;>ZO7~SQwuuKdYURxo>bU zr0ja!DQk`bvucilLR9!o=U`D)e98YIdF%Py_xWlsVbRGb>m}fw`=F#BgX2B}wWAV} z0K?6vPoeh?x51=4uy0=kIbX4`iWyT+6ZIx?_}miy$AiqDc%D9AHw3dyJQ%&tvD&TO zP)owM98=Iobfur?VQQ9#;A?EoVV7u-p%=Ufh7@*s7Ny)%4a%JN15WtOHlN`1cK#lo zPs7$c%R(>whJvaV`A*!hRuSmr1&Ckr-wE=`JHmhHWV`Y<%zNzEedr*z6)~XsK5=c- z5O@_9?VfsMa*W*|cb#)2b(3>+J_lWcB{F%%>pMLqrMvp~ZOV^@(k%GS*=y4nH3OeP zBKBU#D|JbiF=t6vF6mg{qP_z52d?pf|1eCSZxDl-!FQ-eoX3u=hYp?N4$kW=MAa_Z z2onvLA&n_1#8vFv!#_Tx9f*WbOUbOzib|bLx{v;0c8q*wn_PY)Pgb=-w*%Kfe@#;J zW=*ET?(OR`r=yKn>aEV=i?AK?rc*Y2>EQdm_Y*d3R0P)Iyt72(9@=(UVYHB2skD3^ z{<6InIV}0CTb6KGIz}XYq4-K(fn6PZSg<JNSE!X2qQO#IuZERtSbFO>28Bv%n35LB zkd`KI%~&gw(<?ZGaA-&Bi7_PP@aHc_5ZxLDk5|2*S=^nZa{Qsbik(41RtAQ>0)V5{ zvS{1@Wv*Kd`mdBebrO+18?9oif8<l7w5<EuCysb@Jt?2D$vJM>0pD0+GiW;_4$e{M zWAuX$Pc_of>iDxs1J_D=eckn?=-_V-RFXz~Y$V6W{ybD74kBfd?pXGNx3e0gW4~M6 z5b}Brh(mg?r5_6KQ$aUH$o_K4Szl!>l9RFTs}6a00v5DFp)Qi`&Zlp&*G)?>GGx~h z4;VLi0iQ{1NbAj@mvtLL-P+8g_CVSxF(HcF=QRDK6QUq6D}@&H-%z>~WOx>DFH{{M zU92rvMZ+lJT)3IY16D(*O_&_r>oj&B&IC5dYQqquy{{|5%b5oax}8jeq9G@_p||^N zsLp`w%RndctrruoA;^#Ac#{u+VS1^AVGx(kS*UQTSO@N*y26?=bscdhKd|ZdHRkQZ zsr5;;8*xT@2a=P78qNtv_;0|Qkz1V>WMds^@xcbt;EG|LD!#-;cgb^_DC(P~EW=$_ zpd#a|>F7jdEg9iQ9V;;8kFZ>c)cIgN=5c1)W~GZ?dCyXuDn@#zjRSu!JWCanbTG$z zOEE$p{J}a3I;s-hS9`~*F)e`6lOj`ZkOJU^6}XCg$`iTcuugF6Gz<22{Q({Ya|eEd z-(7X{D6XN_qwlG<CeBF*Fs!B9(GzJlNIK*l;-7S2*<vK+IJX}btqSFY;ECi?xRuPV z(#-QG(9kb7!n1fFl<3(}&}Fjvno>U}nw4-M;Yacze^UUMsNYv|{4B0vAUp{HfzfcT zejHVi#?cy%O_y_P{j~FC=O?Z|K9X_}kXnp_pKQ5rP9(k+I1PlRx5xAU#xJNFmKF6S zI`78?O9?k}TGY0U_6-yZb1}~0u`shc<r<rN$#pTIaJhFAG?EOjnw105vTlh=N(?;9 zi>QEPW#9l_CC4iEYbt3Z!Q>5g0;9lRZ|+IY0Uos@yjUxWO|F}`v`3O!fI;yR%Cy8S z{Fya~C&@Gv<v6FVi6D{J9%*RQfzq(9LK1Qbl}T|KeZbD$N@rfflL~_D-<rkmk7vbQ zv?+NQ7-D84)J*Z4NZ2|~%`EmF`k1!)qigoz%%$2|c^vYXlEo{l5Vfeo30%zv5HA`H z%z%|88pixpkey0Fjnj)72cqRNZjKi3ATx3&MbKZLRjx^w+B@4TYzOYO4LJ7}0)t|1 zEkc`-Be-gB8DyC^M*WTO-&9$ZgYMd#32jgO7ctK9dP@A|pbssW$TCl9W-a&9K{VMB zX5>DdX3$o1{L7i6IwBJS>c;5+U7n&%!-iM~BAzv}(K2gd-_I1G7=*bZ>Ls6q9g1rZ zu8{gkZ}k_|&P{2B8Vq{WOe0U<cAT*Sv16CzD)1h=&Csp*sqoj1KwuRdV;Zq|Gx8ZV zb=cz{xU6dLU5Ya6k{&y&HpO}R`>S()f?`G61l%w+JNnqSX<|<@8Gnu9e49V`^CiE_ zan2{e(d01_{*~$<L*UQ@`hC(Of$|3q!JfMRWn4$WPh3V$i^TX!<s-+L6aiOVafJNy zI^deM7**y?yB}t406s>lv#A*}BS~cY;5lJgareX28m<r=K*xGW^`o4z30T=)#C%R@ za?%PxzNPbCdoCKoJ&Wc{@U_+YmHm`1za8DrUmPm50Leb@RBS;`r37Ao3inmjx@PL; z;DfvhL+5&a5J~+#I_&G)$DbfC!+z$|hNAvyTg3QPpHae9-Z0!`_R0++$av8Om_{*P zpvZ`t_h-~;iG5<7=bOlx#i!Mid6ee7IzZL2bN(RPBi&DW+6(e|3#T#7HUl44wJX`! znnR)}?xC)MWtSstPqC<pvxMpwR>eJ%dtFOUY2q1Y+Nt+>wrp>z8S8UOnp|6jyR=Zq zcNN>b+vZq!;)rAQmKg^?UQE=!6qxXsw1#P6Me18oV-&gc@4`B_0fU2!Hkl*!Y@fV! zrKbopY|rVHJGy6CR=_Uez?*GXk>G-U;S<_jN2!vqk_Ukxi&Rn(cj<VC^bFBanwm%+ zh5TE@v+xw;M-f@~R+`Y0w$(T_yWcA#P)4ax?qa*-Mc%v*=~@Xj^H)b%^+r4ui@2z^ zKhzYxDsawcCPlt@*U@`YsGHi$ba0P@BaS3BTG5t(t>hcMO@-q!;Ff59(ei1nfcVks zVTleWpuk6;_;TzT>N6CXfU=S@&m2u~_Uslr;jm9+lH^f`8HSa5|Cn=Co>LZ!fJBsv zG}DN?#MCMyB-jJ)N>EtLduBy(!h?=LX8RFp3p{h(j`l@<`qcXZ)W}k?LU^&;=>TfD zMyy0t=5VjklE3APyw(QAB@AMpiUQP3xrWV<@NGpj3i&aIBURj^7j-OY4T^J6&bD({ z=G3N#Mm5vQ_z^o2ds!<*vKwTsVsbvyYN9S3`)gYmVy!cz!Q#)>QxUEf+}w!!02@GW znElLC?y0pw?%J@BDbFXRbn&&{LJ|HJs-JnHk=j>NDZ*@DRi0Qg)WL)$Uv|JvEp7SI zxCOOjZETxu*PlLsnebM>1uv_b{uA$=^x)Vr2^G!^whl<JCLF0)m<bVT)dIeln{v`8 z-ixW9dg2TO-WHvCb})oewB^RBp%j~{3icjgUej*MS+Hfmi~R(9Wn^9Ahfa5RkrsZF zWP=?`MDtu{27SxePn{R1uV}vGUKCaQH8Gdw*>dR<Y^?fAo!N&OgH^qf<ccrQGvo)~ z8JDe;b^7jo(r59R^a^?I<M+${2!t!Z1th`4T}uT91ZvJiB8ynOFJgz!M5)F3@i_34 z-bqgz>^lfdVOtsYbFJ0E7q@S)9x<<>z!kUGv;GKOZzDQbsZoM?re<Kv`zz2qBj#Wv zG9NrryWk#g$4K&<J|^lb<D~s;4<35<ot5<?;AsD^@JzTr5ZD>lmT9Xoq?vLHNAq4F z%v;>UtS6DF1{?;DR(Xs6&Sn|5gRGa^6T~`U+l=4CkXc&Dr9Hezoqs(P8r=~Xz~ImI zW+_HW-P2hLUpHk9x{%tFNYo&U4fjN@DL*%9C-jJ~2IW1tJAfaw9ln-D0-`K5uRmNl z_7hJSNtY1(aaR{<p~9D2ViAc>Xb5TpQ5(QRgmQ<=YOpE6F$QrJGvH4SlRsQ9rERiC z`WtmXJ{!HmmvP84!m^yv*|?P%`!<lK=%kG;_%V(cmuoBP6rFfTP(G^qkb!s>m8}rQ zdJWJhvdk<UbW{;1T!!fqj@0M4Q}Pw1lCQK|>XBtS7^QJpkNv|u?uvSNeO2x#{X=fm z`f(;gK~^RSGOklaw~235geMfkkqJL%iCQ9%W$x~ZsE`+V)wVL4#P$WGo#%%IenPpC z)|<pg%+Lw4L`PfS<j8p~ily3PvET)&X|a|$<4yE4o9sg-Vww(l&iPzLwGkP@19ixB zj2WdM>!%Id^4I|i(1ez|!>=ja&<A-S98tnez$aQb$QT=O%6d>F(X1gcVL90bQQy+p z2nWJfw;;kkr|h@qs4wCEC{$KV(9TOgoU5bOlhW_8RYSX@o5q{r$Qb1|0ggoGk7Qcf z_h;mfbl_~qHQhJPsNac-5yZBAJ+wPV5;?NTV(~1{e81y6gGuAWm*s5gM$z$k8&Enj zMC-00GlTXVFFM8d2ZkzbP<-UegPrEaW1ZDs%GHW&{V~%T?dGapEZU}BEIMtPl}V3# zl#VRZ<JLc>%dSVYRf6DVv<<k{Pg`NA!G@!CrwduqV65oGoBCOPfw0#pSpnd1Lz#U> zxmE$|&5h6y4jVi0!i|$uYJ4p>!|?o`gl3XtzkgeccL5PSBgs7KfYgP}<qdj+Ih(-9 zGJh#S>f|wIQO_H47x*;=V$x9a-{2HI5G++6TS1LIi3hO*7l-1meA1dpE`j?ycBY5o zPxarU>^Sxlqv+ikZIiKU{(934Go(3=h3doFA=7jla?W?c?=@5F&g;Tg4_UZd<Rxbh zW}Fq>xn>>VM}9&1P1~(xtomXcZAcL7NDcy<7;4>&h!mTvL3XfT=7>`>PIB16pQPYu z^5xX6Ww$>V!ybtf;y<Co(FpaLWsZVTrn<S1b2K+y_yeU)WG}e)jp@FgDwbuGYuH4y ze28_Egqu9R$Bo^^g|C*Hq3)l{(UI-Q21zGfR5Lq-Y8QnNkH0aX;6BR3S%{jTKGwt> ziffvp92^i3v7MNG-@NP`XtFzBCzaE&b1!LD0w%kvNE?<m*G#2OH}Uc%U1Vo}d=ux4 z_F-njFJf7JqV=2n8+<3&x-<7Z>OtwbmM+>EhZXEdl|?brOu7h&A9*h3X{&CLX+-t( zqWz|OJM29$R<7TQ2c(Vtv|62G$sb>3;$WXWR%gVc9Mv;<S6F4IaMNRdQ?F6e{MmGW zMmt7v?n}pEm>J$A(|V45vlc<*5?rxxAi9sF0d7q}52fD01w!-@&YfgO0Z1J!(JTd( znQ)i@RYrgc^r6Jq^S$Vz(ms-ON|D+y+zgMypcM-LHsPAH3g5cu4H?~aJzBuHm4HK% zHCd$19-55UkUqE4o)ONUPjjoW$xoOAo+iN5@8gG|iP(?0+MB(A^01dkkaXUHq)#vi zOi_MUL?84h-Vp&(SE@IorO{UA8NKkWv(k}1lgTbMQ{oVn5r(bW0;p_9j_~6gcxZR~ zCg%SSUvB{wNASIgk_3`qL4pkKu7f+l-QC^Y9THpy5AGh^Ew~QuPH-69-QWEFyZheR z|DJtwPIq<J)UD~RuDVnG)pzeL06@y_8POJ~E%a-|T~N)h(7r+xbFe_RGJ#4^;(W1^ z!N>j6uj1}EWi%^X8b$$BpA2ITD7X|}xVh>q$`=vLWP4b$i1P1p38ZR5JF{^42EHLc zl-5x}+r4lF+D3s&e(BarfO!#xeI4rEcTCU~?H+S_M79XUs-)T?U|fx2HC(+S?^?GR ztGP%Msv@&1(*H?7rxu2rD++<}{)Op8Sq``;VH?q`%bnIpvO7xk8Sn)wu%xutd=mU{ zU$3b*q9o;R8DMQ*GRYnlm}BoqZcV3g((wl*{w&EmOF1Xqg?%pG@-7s8qek16`n)hj zy`mH0BE&A6ejvbpWd<+Kjt47aS%L-fEoHa)%x;9itKw4lgcj(vGRvL7uTvB3#2JX0 zuxQ#sK5MD?#g8n0U8PYLDTb43WVQmAH{2!X`}{f@=uqpFf~`sVDc%s%&+ckYw!NO~ zYUj_5EMEmz<Ta|i@SFG^V}l?9SX-@8LUDEQDhh(Pxum+4-`ODBpsr2wrrYvnIv*W; zUT*D60dh6o$}9}B(qf)NgNt$v<zRUH@n0`RD0S8Vlo*X$1N<<{8a9n_6@8ug8uKF= z;v5Y%R&2j!@&qdO-+;r;(gguy;dmUgqvHHnGSH0-JFDUQoHocJwpb&#bG`uq;I~MX ziQPk8t<0RDH80w;L%pkFeUw++bY%Bwj7Ei=J}*|48#v>s;`d=+;RcScz`KRouON=0 zvQ@m%4wei@h53q~ok&sv4RrD`5N@|5P>J852VuP4VoeqJFJ;_f1X-i{!x3(s8MS!5 z0}j4}Wy}HFK`{x)cT+C$)~QPMwC7yhh=Pl0TBRz?P<12UihEE}Q#2#c5PmOnArS|j zEF%MoCaBA*o(uK;LZ;8Hlx8mTnr1Wl3XV4~!=X>@V->6U37x5`1~gMBIL(lDj2&d4 zj^&NbgZ>I@Ck5Z-rZcoK%%54}4hCK4f7rdzE#L}CZV~@uD4SRspIs4OeuIq6JlM3X z#Ft=*X3~`LlwHF_o3VwzJ2xdU<xI(&X^0Uv!)A)N$X5^T0OHTo<zi?x+kezWRX8Fx z6ggtpwD=y8GCogEaf%92(JLX@&#GcPiAVO6Nh4cIEPkbJh-XLs(Capf;bAXR>+0?L z{nVOYJJVuIxM4#&3XrojHzfCJLmnHoAo*w=sPrbR(g)|SvCDoGMNP~WlWy@_D`ZEp zvb=aN?vcB0n7Wy?bCpX%mbE<moI~Pv46Xq8uXa_)#32Ol@?@};B`{v@Z^Ul+Q$r{i z-GS4YUwcPeBv7ftyhjp@MM0b^%K&&hfE%R-H>nTDRIRIRYt(hS`iJBGbTWm`1PVeq zs4It}1l$H{)Z2_L4Q6F!ZaV1H3H<tubkhxuKELGyAVD;tFZwm%cX|Ugoj;9J9deZ# zhN>|{^yGjQmvpHWcqT(sdiUxxoJX0ZOql1@iu7FG24X&KhQfbtbo(-C2ACbD-Hs}M z9%`@{We*;k@9sqAz2yOph$55HR@Emr>>@hpqDw1XqJi0hB{3wu%nM?`f2@)7X@itE zvZ)dVWyY2=DoCdzkw*U6#x%^KovH)O_lmU~WUp4OHcwURf|N)$-L#>=xX7Y3;LS5l zD0>a2$fGK-f{8d4i=70?rkF1DwimPS2`!RDPz}k&9#iC1vUYH1YRsc|Y9beKjb8bE z959k<AMgvoD3$K?X@HuI3CF|+v+sp$;DTNS>2)^Jh#z5*DRXnb<}Gg3VC1K!kWZ5_ zV51Ol<R5ADioVFiwb_*BSwTnPY{1+(d@BQY(0b(Qp!RzYlhv|Lyf`Hi2p_ri%36he zRdT657L8G1Wal`b7^@7LoY!y2VQ$!?4P^;8)~r_q&Xr_&i&|#Cf}R46HR)t)4<5Ob z4PHPTa0AkN`!(hof|r&I>;^$A2tmcQN_xm0c<Zxow`eBZm?Ept3IZg7paMlCKmEwO zmkP0Ng35RWO$SY21$HT5K|=}22A+D5C0xPslUl_ku31AhO{hQ5z=Z(qK#hBYv89PB z{r7-792Y|j5&rek$KMZemi$RMeV+aUNGlAVPqA(mY0anXdvxtf%#8Ueb;PoyfEC=; zsX~dEcF9#4QIFge@P7c11L{GGb_Y!n=#`u*(W6#hBcHNG?xl6o{pAu2W3RyI1JG{W zvaZ-;^!YjsTo6(XFjFeliXPLIDemnvi^~Hm9?4Ss(gh>AwKq0vii3^gJ!8^gAGtwZ z8b~JVn0)}{MW&Qo2hXuZ#W9PgP;k0bWS*Q_?U>6s&_TF%#6{uuUAGJWS0|q4+1!nq z|F_eU$V;3J#K-TUcO(P2lYXLjvBp)?E@^Hg44ra26oL`PseQ$O6;(`=EO~h$eG~@I zXiYP`pHTNN9jX;7g@D2B7Jbk3L3P&4Xhp;<R-ulhaQ2D~Xme({cZ9QcR2vZx51<dT zX``mq_WBmoPGJ0@%$V)%?^oCvdttMN_w6OU%;Pe_Z#O>hQARSE!sz4jEC~sSkPr=X zLWwj&3OychcN#DFEQB7~Dic|oCDep8tSqc%sx$Mk`35<*F$cp0huj--pRNG5)A}5d zeTo$CY>na4kJ3;>Q)$+n3LKbXECVbQs)8Q<kjBnUM0M(qLnNVnCP(Z!m%o5fz&=CD zJem}HrxT>gs>dw1ONL~FL>qdKNrM$`Af~kZ$lWw97P+AYvU33%*=h8!JgsA17oLwc z#Eq4ip+ER(Vhh*GK6P4_%QB_8@i5p*+o<Bt%JlFt4J_Ri$w=7^=Trb7*4zx8l5B<k zDw#oS_0h6(WGg92XWc3l@wVl^l79{(0*fm(7<*Z@48o6(*`AO)=>qv6mTmgRdFbj> zRry92f6C!Q+1qwcQfu8aW>>Q>WT%g(;`E=^Dubujq~y=V2kP54Qbqs^@Ty41+T83o z(|jpEJ?yE){gHc^KhJQJ(9I#g$kt{?8l7Yq9-R>*T^nKcwHadetxyHRwHH*I4Dr6o z-rxTb!#!6x1H@=BEK);z{(i1LeAqF>M@*)-21^pGNToE3JkqUCcQ@_9I*9tmj9`ZY z^V;){TKv@o?)<<-I}*`K<Xjtky=ar=YkSNOx&Mka457r0`Nf`~)lq}KyDUInA#~Cp zE79k*0Cla1Pb#t5d84g~-$gP9^6dkQvXmQBAA9j%AK<~8ykd}bNC4;9+47Mm;RfPT z0QUy&NRx!sdmN=u#Y2hVLhV5t`nNtEqPTDj;Yoi6ISEB>tuYf6u*YhPMFVd>K-;U9 zNBo(=9K?AHn6#pNl>?f{4~rK=k9#shV=gn53BsUztT9AY(8)j~FbfNGc@CJh>S_5G z13ekjIs-h>-pZ?QQ)o|Rf_0)>dwu?4+PJEVmW42CQuyU<JWIQ1*HXqCYx-1}^m~YX z6emyz{_beBWm!qaF!3%Wf2RrkTeW^Q<f14Qqjt@8<Q2G;l}{j&CQ~E6-w@h5ovF;{ z4Nld^g_L@LJliA%ERR({6Fo~GkG3Q8<SUAx*3x+ECMAI7LjJ{Hsz^2)G@(E(f*t;) z8h=r+Ckn?{>=9tRbm)bx1Ye~zwSZfW^^hjeYuiRUnBX}-WUiHImu?YHCcN6|6?<Ul zoelsAbO%A$#&^N$pt}akSyy#Sew;JJ!Ji(WiOAgx0SL4$c&?6V2VH25k;iFPtKj;0 z6?g|-%F<Dc=x52nEYZpR+fFsIiTI;zfxs+h+uz2rB{3&2k<;r6`S6N53Ql~1TOFnZ zA{oi*$vdrAnq3_x{Zx$=L;+;^r!o%l6gYa!#dLpXOH2;V(JElmeMTHqLB4U3zz$Ck zHYVr{d<Zx+lwwM^0PX*@HgX3Y5*tPz#^hzwYl?RLGPWF5Y-T)9i<1mfREzHFY1d<3 zXZ^KZgi&y<JW6@(F<h08Q#ocpdK^?HJ;O;l*g_l1Zpb_6BUJo*fwS&kRpV;}2kE06 zripi+Zfp#&L-F-82FFEhdZGw$_)KFwz7P{nU#8(c!-Wn>qz-K*BiP}dUuFABwh?2@ zS5kMt_O0V0l^JTbJh-pZt6LcZB$CF^C<Ej;z@N{Y{wJ~Fb_Y#1^IhwYvtC2}%lHOv z`K=P{bfkaEap1mqOkS2JgO<{6%>Y7dTuVH_o(d{4DqzVbxisSf46<bovnH=XQ0rD; zQrhIt?Falq-gG^bfIKIRD-?v#$6*4pHCoIo7urw`?doE4!Y}LmxqwG`43VxJL(PqR zlfs~)K#v}G(7k_;b}a#!pPI}kr5w6-vlZZs4ZBz%q{z6#eBk4CLgZt4q*2yO%;no3 zPYX@(5MjoFd}+*Ox<=FN!5;oU>@oO5z<G0|7cYSct~G{WAs~kc`8@mtFsogV3O|ra z#ZmET9hkgj`h3MnI$N06M=279IUF`g_IKk)ZD8%1HzLxkcAqcZ0PgitXd_4F<W;}} zaz_<%SNw8UHDFpXoBz_dLov8Zs1rCa<X!+q3kce-zA01FzOK+%K@Gi6b_Xr+*$4wo z8X(?zUju^nd>BIdH@e%}beR<7Hc&6KJB4n2F|Yd#ZUWK&%`O{ts)571hR_sPq7BKZ z5IjiIw3)90Ou-y7J*gb{&+M>dog@hum&iTg4yIx32R!2YouR%n?VeZ12!kwL$&LA5 zm$oXXAS=1=%{XMs^gd&pr-0c)YhsX5X0oB?Vyg*xim8HAvc65NvjJ^ZbefAWhRF&t zMq)K!mT@h96<ECXll>#lU;|zap&eLqaEv5@v5<nbHGn<}VUUfmM!+1L`VKeN2d&gT zH<NWB)&0|Y{R~uUsPlWJj*JWH<=buyP)__#$4umXJl^;tCfTZYjIF_U&|@hNI=soM zdGV8Zq!M3>v25GXi6O{VjobJ%CI)y)xg#r&QBMsRn5PrxDFJ~VU5o>y<$q`7K|3<H zQS@$1{7cFG2d8&t6b<0QC=@NoUP_?=EEm<Sn}PwOAH8|;OibIRqcSb4Sf0^b%zc9O zr$qgRG05@(*K1=<xtX<Z^~U%p39PH>&v0_VTYhl_WL|X!gZ-(O`0F^UK*$b`4ZJJJ zs@>4;Jq8$!4QA8FzuxbyB@YCiVnvo~fUJ}q$PGbOb%s^0;8aS)1;Zm~vxbX^;)PsY z!$OzidBr&*>AhK|W%6_h<+O~vnvJs*1}>_mpp|JfjqgccdTS$RTj`c>00*z?vE0o; zwtg(50F^4htY;Ay=YVAFWRl%XVC^^c=#C$5Zg4iNqio|-^XWVMvmlo|oPA-|i4buh zI5J+3n6n87esEu+&-?a2N)rjE)CnYFuW3<X(ymeJZw%H<wze%<NWbQaVcGH1Cm{22 zpO!Trl!VZ_hIxT4&yV5ExxV#4(;{ff4!q*hG(ZL2bt>|o`gL@Jz(QWIP{qf@x`1{D zfadh34CWP)017&oz#mUvd%cnZjn;Z%rq>tQjBvwD@bsNLt0kb7VoN-xK*drDKz9O* z-=Y81?jF!O^|=Ojx_#6!Oaj`I^YWb>JClqH?=8oPaKk(bS4V+z`_=l4;yV{7<rttB z@_}paH70B_`gp-2&kCUmz-m3>npVCh6dGVc-*Iw$QJXdu@2$CW0!v~sxGHFXC7Dz_ zV4}$s<x@Df(=o|-HQ+0{4xt`QV!EI3Hrz@9#|{)VZ<K)HCQ_1kTOFj0TK&(1JBF{7 zuuY}b%R;ze;S_8!;kTuj1w7v)<B{k|DG$B8xv_4wzB>bUI;1_?p?ZgSEnpeAu9L}B z1vpO|0)7v?)DJ(=_ztq-s~an0S31PAf?P`mMSgYhoglxnLKxf+`)tlUxG!wH5o0Ke z7vaYn2(%-wIGh94xnR2CvWUAgcC<tua4X3-E{^861ZZN**2uPkB7sDUI`udvZ<))@ z1=u2&oPYG=jOk^}M8rpazmovgaTb6OjWm-383=&8=K++$U}D$~Asxd52x@R~G+<Pi zR05veBN4EJow7xMSNPIKya{FHq9OyEA|a=e-g)S;L8p@1=uzMv_d?|h`J0${!d#;n zzL*j3A6uTTJ*n?%F&T8Kf=WPe1Kn!Ep!#x`B3FqF^BvRgk+%@#<t}2tC{of+tF+m> zaA|1g54T+m)|(LP1H}0$?6N#2#Z$2oGdgoz9cZTc0pj=+c6uHYn}~sBXlFM&1uV4F znr9+L?|>S<k>5{pVW&GWvhC<Xznnty%fopRhDr@S31?|RyWkC6hbcU`JcVj&>1gb~ z@}?NVcmA**Bf6RU<>C5U#N%6?BZ~WUO{AITjNEeGgo-5i9m(E)_v;#p0Irl<r|&$P z;FR(-9UnGcfRyyG2P~`A!N88*1@m;e>8#SpZ|8&ufYZvO8h3xNrNeDhIH2IVnWrLa z1-PQq8z}{@a%~Pa#<wY>R6MH3$~OkxgAOL<EJQr2TpeV<se}CMHgmvYy;zShsFqlC zd6T_WeU=}EndVlR7nTCd%cy{?W>f^)jAawEuVOlqA96b#D?e3ZKTLUi0vjHP@vt%V zBr?)Su*}+Ty5xNpz=kb=CJWfGWN9`3<4lN+ndd*JicJ5uoKzFwLv-S0HKSW>I@&`A z(YQ;B#U)ts49Ct3sI;oB^E`V0g#I#a$0pssKoDoqjrN3IqvvG5EK6qc@s5Ctu4(jO zD{5)yZ{zl6QgGqXt;Aec@V&Yl=!UQ(IIJ_Ci%}Um&xkN9v_6<%cluUj*lvM7f2Ih! zmo?6?mQ(FhVBXP{9Bj?)$pc+xPv?padQK|J9mHH_4-dA+aW^Ye*X0Y?IHDMNPFjK` zV`rj*Eb-HhZoN9@!ocy8u?cCUYx>MrCE;_!`|)Tw47%YjG~T5su|d~!aAX0}44#u7 z;GvxSl=mqv1n`GB;YNK7ve!RYRg;Q`o!<xkoMjmMe#2^~YcLsf!7nM>>INxQ>J3OT zm3tpEnvBUH96NX)q8f>hxmSL6P!@`3t}4$nd$C%h-S<Eoyb@wJT^Ql!Y23~lAu!3N z#>-l$Q}!#=Kbz`K^-!Pis|;oOi`#i%{g7WC?@^ILKh4!Lk#9`@iE~13HY(*0Q?yGb zoC!|L76A-_iT)z`adfnuOuF~@&ZcL_3YWeDGb93<5m?(k&81(>5wmE+x-ZLKRe9#N zT*KrI#F(hpKMQ7CH;2gC4f?S1i1X#+u-mN2x+P*3@Kc+Lap3e=GO>|ix8k%8jSq?0 zi!(a2I>)b$aoDrtC>h|-W6mTLKuya*mId5pNq+!`4&!h<0dTDA;9C?})+cZiQcpPL ztue!=0vBzjUKZvZ?wG~zW1cbhfyt?qV=Avs1D=zfV4p#kGxKZDdtb1mxPz;NHW;*j z@s<`7-#*Q^cwj|%Zm3G1sGFbS3{;oow6un!0J$V*SP<lU-E|$l(gZ_anHo&UQ4aa( z8j?eqw9oZ{(4R@p&^Bx>9fnR|e(e=wp$~Hh0;>_}IjveSDs?tnyn8_Vn)c|R!ym4; zgm~bK;j+u;e5y6o(Yo(;{h}7x_~oXfcGH_BR+P*66cc8);`UYgsDqOf#cRPHPt;IQ z0rKD;@0_}5)`V^Ige4f};YK$o(3!kUxrDIVvG;rH94n^JMqJ)pC5+k#&Wsh!HtZi{ z?H2N4?DKjlk>lt7GX9v;oJc867;t-%BY;>tm?;?WRP<ut{nQXKmiBMfzy}R&mqH;& z;BoA^<m~#%EUGJe6+8dcS3f72sq?}cc#f^zaX&05=yi1|!Pz!`d$x9aw+ANTP7!=N z=z487c%Nhvd>gut3p_j;=<=n{c^kjGYFoQcWJ3UNw0qS)U*6t5+)oC$yi~sJJi0e? zubyxyWdA#<YR=G@SvKhK>EM1fYRk~K?c(k7ec2RzJKZ3X-M5G(dST?x$?5X{`}+2B z{_flH3YmO=I6ce>;Igwo@xR?Im|V|l_qlyaYPa*gKia;6?5^#6$*3>KUj6>q+zUo2 zej7Rq1EUBm3d(i`ysaJ{&fmI6#=ekwxR&uTJW7yQKb|R2DN!9=LY<mG!`vroDwry# z<a|*ONO*rgc{<q}UYzXI6`+2<edxJwTRTqN*=csz5b(w$gi<g)D#T!7Edown<N2Ii zuXpzBug?yyAP#p--0l0zcaWQ>m)o<KBj=g-_4XF;dY_lg9*Nl_i}$?6aumIFzM}$P zSMS>+%{Rvr!jPSNhlLbG&#Tqr@_Npa)nlrh9DRe1rITWdea^OP#JuQI{&b@8St@Aj z@U?mSTwm1hY<YQ33fczv`ndVIU+=D-9v(-PuWiUFbop|;-W{29N+r&oj*ma?c@Vs` z#Sm619oHTP<ZQGr>t?=t6?{su*ez;%oqfGE&~N7!%*cNAZ1r;U_a>98((mxEKSpt2 z+^l}C>N?*xa*j1}f1lC9o~gC?4-0kdiErXBpWl`0ftQEd>*@UbKq6B$XLZvgr{EAM zMdGdA<b{{b&)?1c?FtMf0pCT$8S$ofOl>y1@H!omKNM(1IK3y#Cob$ahk5LhaT1MR z>R`*8dr3U>m7(aAKN^{=mw!LDcwhM*041ib8~lfunsIb;<LOiD*VyrIZRlT{)7hlF zg1)|9*UCw@t$tT0m*DAce*fk2r9uF1&PLWb;{q!)!`jP>F=u|5pl+tkxjZ9B$_Bsx z#o2-Fv-35?_<pknNIBl|dwEIL;BHdxU4+`LEhiz$<zWgKP<oHSTSUOWHVc}bcW8R| z*3sCwKPn%cmGE#g_LVq?4Nz=zx`qsN*(!L5b9OHI-n*>T_|$k$7}DNbUDr>-$oyTr zCRz%M&wI6v`qb677$o?NdexV6e3mtK<4%i{(xL)C8>BpZ`{=Q8Zoi2cFx}+seftD{ zYdU;?%aOw9_b$Y@(*AlhE59_mkBvS1mN<KRXYTV_a=J`z(KE2Dv+NUFY|zEK*10ZM z_g=ENdYmC}z{$C)P_lNv&pBH@UR06s^5pclU3pq${n9%CDSMb~F=I4CW4|ryMdH1g zxf=T^3~w3lD(!mIiVWF(aeq~CSjXPKec8^yk7u~#X%@Q|`yNH_?GHhm;BY|u>)VlW z`Q%WSK@|S&;mw`zeaD5+;k5forw>CxOWL~ru?15jlyV&MEyPH_17G6p5aY)GhKaLe zCgXbiW?&#^0`|qcIZHWRFspNEMCrYRlVxth&b|}dc~wu(pQn+wq_<@D-TP*|V3O$d zzRT<Wal?-;r=!)o)u#<D@8IMGax*?Y-nroyIZ-9QK|Okk0Sy6h{E9z)y*7Tgy;sQO z`3QNsdV%<O^<<2)a^DAkcVKd8^82tJep7oA|CV3Rd5&}I>gIK6ay|jMQI&T-JZoq> z%He4@qEd0XwwyW3?xaHUJGJMBIlR1IjjBH!i2Xq|IY_u6TQ?Daj?R62&eioV2Q{pU zFTHc+Py{i;#z4Lc`{`e&0Ye`4p=Q9DILza&u+V<WjEa_+-phEjVt6>Bu;`QB+5Ce+ zMh4#DPISAJc!w8BedDu|l$hl9?fl;OW1wXi7;Z`5z(8-~q*R*nV*D0z<Ll!>wa6Jm zxYGJJYx02}O5w&nJ>-oYIh1@?xwpuHSiN54nBE^L@*+NH@BWPD+Y@jNAGCb4CXE^r zoy^%_VCeJ~`?zzxPxWQy<v&bm7G$atCddWpysN4*f&{SBRU*SPJw~20!;TRzI?Q`n ztfrQs<Gx&GdX7<{IqZHSzZc#ulVIS~iZ_yJVq3{C{#A+JPl>H=x1#ZMtE0T>9sc^p zt)!uC-&!G>&EUD1s%y3LK|H)mCP+d3Y0+MR<*8Tz<JjpsWRi1H&~`H0*XPx|&Az4E zW1@!;GfNR;X6GK4<}~X4_y3?#clquH`TIW(eR=)weCw_kGP;bryQ`DSpyvN5_?_6@ zoTzb~x1uKJTd!ABj`x@7KiG>o6?U8`v27jlg~*K!epe@j27$cC1Qsp`TPUL&Me~*p zzMj6!QH1*U?@4=iTbI}6^*Q2m<{ivpev8(oFRNZ}t6|_TQ8!f0S~c&U%tr5*TOzkC zf2!_=4Ri)PJzpwUcF+9J`=}JYA^yDwjU^txrR`aaXeYaSx3)<A+isKc*4kC*%#cSs ze_sd%$lM(_pvH7{CJ;Un26OuPy(ImqofTFz*qGg){a3v@i?K6{-dE3L^2jIXV&H#C z|IRZh@V3%O^-h0W^E$h$E50AgBd6zc4)YYCDDw#x1Li-UG#4hm|2p`eI}~W@YGz{P zz+~nLT^g}9b7A`b3a9?J!kGVOVIyZ}2ao?(<SUGfnHR5ejfQL-8VpR2Gz<*k|4rn- z1Q|^n9Z&I3?N^5`yK;=<KmMv1s-swqVB*GhG^V=Mn*bW$<Bp<!!)T54ERrOU(z=B6 zifBUlm$t0HnDYB1p8-LYEAw=1d3pJ9eObx9?Zg`k8x#N!i3+Y~-WM81RIg%D?`LZm zN_fVJy&^X1vY;6oprNzK#H=^$Y1T|JQ^D$%oPdH}lU~|To8oSvY>RRM6Cz5nmNBn> z%4L@5z?W>fAk-;XZi~@C3BT^zw#M5qF62bB{^ffyoB^$XI|<gC-KUfB$FR4P;RW@~ zWLv_1D+{0FW2~S_`;;tyPZu}8tIH<}yGNPfKCbBJy%h8d(xJzJ+vT?U*e@r)6_RtD zf(hz-%8&j{?hjZsWp@8Mc5&DVHrQa|s#<k{Oc>bF@CeYi7>;9XYQ>4$CV?qR@@xnh z6DmxV6hCvx+5GfkB^2fRk}Y5FOZdB+hnq|)jNtMDdq1eBW)|K;XnoE9YL<n@B*!-U zCN3t*a6*Z;g-KzQE2WM9WtPGlQU8u8+Gw#}85%CI&4|n$UNsT$$R_?OTz4MG_w5G& z?o;Q~SM)j(G(GemIazR9pod<_XuhdYa&j&=XvdLb4WN~jP0lE-2*H^&3bRQaaYo%7 z94gdA60njBPyR)cFJ=p>7}FG$E#EXfbQbuKb#(EzFSoZ~mg9Jz6O@VE#Hl|=x%!>u zT})Zvu<^&O(%sc3T1QNX5c~``To&>ul5dDdY{>|*-=Ca>Bp-{0Xa~FkxP2#gCuv4W z<Sbbk!yIPbU1<P0e607)_b>@;iy`kVI-Dcyg9E<NMkPeSh;*ME1{Y<$(u93#yB!A~ z+u+eJ(wseXwD@9~{-3o-i2`q~Sw0M7XrW6uuZF|H$X2;pe8j@-`Aox=L6Gfu(NiQm z8}VFIxkJ?y0!gqMgF%TEoRo(7xUXIFEiTI(jj72eG?{6{DoCYI%{j$?K+8+-@|@-! z4#nuv<Y%I8JCgH-TK8#SYbP!anXmn;%b0$<F#Tp~a9eKT@B64PJUn&8QJjp(*rShT zS}#{<L)Df1<`UJ`Qx@G=OuqcZFgH4;r9@AycxLMt<c~BDy?jI<siA0$Uc|q#D?tAT z4XpQv@PYWRg&;k%VRVxf_FcH_0YA=E{UmP7rN>f4x-A0BDZ(kCx?JSk$*4ssthdH* zBijAflrk!DDEN7Qw(a+Ds@i`Pq?<k}7)qb1S4LHLvu-zyUFWIL;C(bepL-Qi=;vh9 zxYAqpjo;!x^(;OB4K*aK)g=aEjyf)o(b3kUgMNsk1WVw<#-@&7GC%u=#kpR*BZU3@ z;Xp-JE{T#fskqh8zt4U~x$OIknqG#>yzi6Clnqjo<VR^940NY!DKv=>p}In0b<Fq+ zj~Hkats%==H*~ThEbxRd7DLb|E}uIu$#On^+U+l$;Qf2TuxEL)#_~CB`&STkq)hyo zHjeJbzNBJd^(=LlM`gC_B#-qD{IrS={?F*(CBFSkQ?s=3B<h>xr;~o|XnbVly%CQ% zCtNUk{iyTju;^LpZ-?@zHL6E!!IX_4H)itwBEuJsAV1pQ56S&d?jn6;2{cT1Pov*m zObPx!N9T=t=AXM7!2Y#}@P>4X1@49;wTDLWQ%Njp3>hp;rJpr8wn%AYyX2Py<g26j za;2!c@0lX>99FvfDzR%f)B-V0n2(+VAC6&8YhY-I-|@+1-UJY(3>-J?YO#P!&iWWK ziE;<+RW7Y^EG8r^y99IkG555rv47@iJ;FLDc`IPn2|*w3=<sfK1AI<0Oe5MOe=Ids zladB_4GU=dA0WKOai02=<^T1VL1>n{rtIbr0$g7S|M_v0^^#|I1#Xh!oqGIWYI-f7 z{sU5?C0f<=UB_tz5h6~`6t_XfX?N^oS*b}7bls!>^7!hr;VC9YRCiH|Q2Z9W0pgOP zGd*c6bi=NbGqLfIL{IPFLTZZ_ga*LiGfTONa)e_cIzlk4DfnHzyIEOuv!j7|knu$* zmJrtOFpLAjo{S{2u`=CB8Y6b~Nw7<>su0{}E7><0v;2$eMuP#x>136Qkd+QtKE{Wa zyRm#fj)Z4%2UZsj&dE3uU&zlGjJ7YsL-u8TUKne3^ELYNaJ^h_7j0=e#B$?}iZ2O^ zWuT*UibTOkGQP@B`kgaZiSD{mttpsEkiS*jK;Nld)~O{dM#3OvvHGvqT-o$sIsGCN zimpLpgqMl^51MkjEd;D<roFfI9~?@?Su7}LYF6UEb)hVDs{DiedNUHzB;<0I#G&!x zrvzHY^;s?^=`CT^*D!Y_uI>EDRbsIfW_p#-agr~Q7`WQ`5tf?Vh2#Z8iq9iyCHTKY z>Bt#RfB#%KM{SE~aw~tSCx{Mgt?aitOn3L#P%cFo(t`EE3HvRxIe3@!+3H8&H(0b| z+uFK#8(Bi(A~Q86BHXD0q=CS&%NzZns2|ie$%~AwYK!=}lhn0rUycfgcA`$RHFnjx zrx@-_@v?J?2af~E3o_MQWvcIK+zsLic8L(37BL$z;S-!-4og~S4a=Br=30MR<BLb^ z)(-fy(SIsuLrl3AvZq#}Pm!hjUBxq)UzVoV;Rt>@=;_MzZRhIpw0H}RLMq%|*2CZW zWt|~sM{`#*C81{Cp-;be8{&HVVU(dJ4#|V4jHv!w>}6d+N?7V;<#wQT6v<WkKCgGp zBqJWpEOnh(1U=frmVB+O^a_DZwBeg3i|Fh@^HtIG-}%PjTHAncrF9W&YlwREs55z6 zw9JFRa`GM7Z~ePdyxbMA{ua&#vV?5YEH?~1mIZr?CO5JI*ohMB!`Q}GH4({v8~J1% zL#&T_tL~pnY1HL95`${#xu2}KFBoxSG6tBJGyr~yU+fz2V~Sv!tzGfGvH2WUkHqle zC3dhFp6&n9=IraAuB!AuQ+{Cp6C&6@g>Yj0<6GhzP!db&?dVq>f8ftab|3H#BGwbT zK-)m3N3ubswyxf0+Z|IqW-fk@WO7{?6^`99k@<+R{lf@9AVtp<TV3f;7AuLlwuged z!|XszGkrT^WC9kOFp<d@6Hw@y88lka^OtvSna-Z#>F&BR!Lab9{tr;ixfcN))5?we z+cnYvIxi9Pp2!fktY7T5e7aFweA*w`H;fo&YT_99sOp_*F?HGpB&{!>N#L*^B?}$N zg`{GaMdM^?cTK*N`ZFB66l)t1$nE@W(Tt;>|K7y+6Z6M7(6rNRuXBrKkzLGI`RCAn zIWCqhrU`;C=A?-vTjFzebicxBI0r`HpLnTfHDkw=Cc|<qB&&~s4RKf^#O5cWHi5lU z`KUA4IC`#X{R`iQdj2TOk;A)&w7W@Si7#BYsWqxe{>GS^2=^}w(4ehM_sRx2S3U^s z>C?hCe{%2drYMU%@V4qUcIPz>vkj<#BIDZr@Q}b4_fQ*TI<qbzeQEm4>DlsXbh#^a z!b3?CC3P3g%5HC8*dpppa`(>}yw3??55b2%rfL-`Nt{Av*B$C>3>aGwj&1f_X$1P; z;hF`>K3MbBc)ub(%!w3gSot)$iw+b?l*Q2hNC;9c6UxSOz$ljm6m|acvWmYXDXIyQ zV5WG;G>MHbdKEA#w?Ohj!3O9O&GbI0HOX$y3`)6tG0|(S)*Fc@y|=5{ikDpV1?wW7 zZ~wqLJAC~4-UKU4?C@6$d)d2LBade;3!zL*NK?sT>ZW_Dk~zPFc9VuSR!(_W1R7Lg z9+5YGj;6^Dd>AhLH=E5GEoILrazw5RH^G)(9phlD$mUn-S<6=@L*ft5NCCyj2zv*7 z%SEL#;a{VleGGa;U+(j!7_AIRAH;jDCr)w8p4Qov`cMUl!mAj4M-9$eY1%F5;0vvb z>S{b6w_cIev7FE#E6L)Igy@->?P!HZlXyLuFSTeBB^SrPhys@`hP_GQzY`XYhS=}J zxG}ZTBX-q=*&m4%JWZMT4fVO7`}V0OjW=3_bu@Yr>16!k5Hej_LT{O7jnHQf|FymK zdwV@NNTgeR8vR*9Z1vX}4jFdG3?Z(F`b5yd`q7WX&vJQ5>Fztsj6GWwyR%*sB>nYX zaYw1z$HJ;|W@W4BiSW0XGK_LuOx}|V!%E*kEr_ZpaO$}!6uTgynP!DbCM4GK?;jFt z#R##l?b76iHS_Vy%W$<}O+=)mn;k(jD(wtP{VqpS>#*<{Q<iNbLHd>Ol}By6G6NJ< zCU+(4*+n^2x|_+J)jS7A?BQrV_9!S24vGuSkx(w;SuDwHkSXW^HW84gJG=D>b-?+I zIwCU}1$Sb-g4NWF@5|3uyDa``gb*<XS1IExzt$_m>u)5(teZ#iTk{buBT`XEG$Af4 zX8&YM6Uxwp^4A7h9}o(WVHdtb<C7IBj3R8%jk%p)+!o(Zy4xLA*U5|I5%Y;O*5o9o z$5V6bkU@S6OPLC+#)#<Q&NW7q+O$-Om|8hA={wgHNzf&|addb5%7!fK&N>Q+5t_NU zh6(4u3Lykh-5)--kj`spqV269h+ts%821RF?d>%{PStaH(f%+L+8<yo9+V_Ce0^N3 zLpGQlyPzOD0CSE^UERs2siVr6y>HN&bPuiZwQCe7%?ohWS~bg(U34|-eSTlBdHK1< z;_ix>TYM;nBi6whVs356gc3w#2jd_;IdklvZ|JsjcYQ-`{L)!3`SC$&ksYKYZ*ct; zU`yM|Fu$AE71-WJ*JnveTLun}yPIQ9uxWnQbKs2P^)jTCXp|Cla2sCwBgQ+1C}<7j zzA3;;wEMF*n3b`ztN-aJ?@Oa8&+C$sXc{dK|Dy0e)Q$P>YMp3hG&?yG(J*QTx66i* zJ@k23DT)N?0J9A?DHX}Y&Lk5l(O|m}Skf5Z4tefa1WM^$xrmM!h}>)T{2vpZ=9eS; zM;|MwYf%izP@nnm-G-g7L<MjyQi3rZClIGm@eHQ=zBHcYo#y~ZPrf^mrLAG@qh7#j z9ru|J1$MdCsaqw<Pt8fwYA?X%fE*<Y9X(E9po!Y|B&i~hOxm_i7KU`9sF2z^+Ld*7 zLBcKhPhT_#%&&%ZK6=spAVu4dYP$riU+6yZ*HTE+JYlO4Q!Q<mV(k1V@i-G1KSt$2 z#d`trdo=<Fr=n+@bdTUNjW!RygS#~k0quL3f6p22ES9U+0xVI>LQoD?eO+4KT>}F_ zk^76k_dom3wPmGQLSr1atl?VAQ;If%sP%OPMoXfxtJB2l1dYy{ywS6x9UV@H{3xf^ zapj?vT=!sxm-uMpNzOyPIJ$3ZPiAI!k1eM+`OQWFE?|qlA9WX-pAEbc9m;=Xe9XDY z0iX1|EtY+x#qRtpk+}HB?aN$ysMMJ+Z}l+>^N*8&0wKeiDj~ye9-%y|h)vFrJ^oIh zz(xa2?$ww*kvLjb6DQn5_CL(@cTTt$s`QV(4r`Pg0%xVGcLs!g9;44APm6pUE7^r; z(PPC1jb}P;JjaB8)A>`c+b<M@BcmJxe(?_KWilYPbmeycfINiU<(6{McAAHF;kd<D zKj$l8UhzIEC@vXX^uZMdTBGI|+HtaNNrf_$r|npE;~1((5sHh38*^t38iD>o4U8Hp zna3cBT$lzneF5J606hEmW?=_Lg#8Eg#N6nO%YWh`JR@(vD<231=96#aL{@k*=%jf( zPfhA}+OM*tL&O9vr#OkOtt~kG2No%WR0T+2Xpz#j4;_$+Y*pRgkZxW&YO9`5USdkJ z+4s~#hFW$b9{&pALQKJBS(?w-MY;~Z(^a(@PCOj`((gQVyUw4GAQ-O7K9@$XZ?5uH zl>YK*Z^o+ptNFaFcrPo^mvm+|xr0J)!=^a0G(mUSOru+dG|V@I@?=AU+p?UWLW)d* zk6`0-R*Y%0-nMFlU(z`o<-wb~cw80ck7^yIhu7{MWjaaNb_t5+GfBw?=D@bY$hmw2 z+gvl2*udz2;}o$A9@#z!>g84-Yl9{Gjj5hj#j)V(tj~Cj5q-A0Ao$^b!9V{4%Xx=i zAu{;@0}~AQ|AXZS{RaeMbhLHNQjwAVB!pTy>`;e_wA~vL6|Qd>NXPlDzY<kdv>s7h z^+IAUq{<ndX&W9Qncb~v)*)S{Lj^D3*<N*|F*~m}e77*%W0mZNu8hxOklH+E0YSb- zyQHX(e)!O;0b#!j9Yb^Z$$#0|<AXApNGQS%!CBa!5@`5Rbm`MfG~b+t<AQQbw#y{> zOwjEkR_`Ne5Bm-r_fBa;cAA4F#xAM2WBg3SnT8DcTp!r6^d6Mp<7(+1OK254lh{5@ zApJg@a-(Wd6@O>e@!I=PK-ZB5w!GM<O>aHg_Xnt;J-J^gB13W(#Hd$euigFsNi4q! zV_d79lXPjNJtEW(=u%~M{8-mmuZq-U6O%)>$&mSImpkYT>j39N)5+@e;B2G)v;SDx zrRjckjONGaHtE<oByaHcQg{31rmdJw&>(W#VZQU_pSsjL_D3HdLDtI^`tSX2mY6oq zgo3eV5K?vs@b&Zm{&=XlEDT>h!oZLqLAU>ZsLkEP(b>WJR9(&i7l_K=R~@d-&ldSJ zB#te9Nz@3Nl$`pj<q(OoS@MT}o~KEt6jQP9>&vn9aTv*j&X!3T{Qj&voP>gMr{0IP z1#psLaLpj+X||Z3ZN|cnV=Uso75Wotf74lD?mW>#9d*+Z+vWzrWAf8<{wlw2H3jNE z8sY%AhXlBRSFLUPE!bkS{jV0=B*Bt2*`T@eJDJg15K)PHt8F%S4uZvgig}**G&5p~ zTD>xL%BcHVEmPU8^&YnOZOD`n{@!;FvL!VEjbmVbiLf^U=P^N5V!z~mL*SAwjc5wT zR%0G&g%plx#>~P5manwMFLK=0{@P~QW7uz?pyf$6xhgzM!KrUak}5+<X1)(CdpO<% z5<^&v#Qdp>`CF(j$=p@G-0*B)q}XL^{t8HT;EsK0r~?^a8hy1de{QTL&yJmoMBF12 zAGm~wqGO*k!`R_mo{AJZ8TE<@UrwA!{rU1+4i|BghcCLjh`^FpQQI?Kgz~O));*lE zx%)!|eA*#%;3dp%;NPFNDdl|xybL8-@O7(A7rrNfZtc2@i*p4V1$8>1IC#9jRbp!d zIt6ALkQhFND;$X`H4{0ye)RcvMkdg2<@;N6)s<fAVJ^Z;lpNf(7z$T2ckpvChO2s^ z^bEdqIF+SLW5{c)TLo&c^Ue0Mrm}#Sqaegg^*$xYktIlq==aw`#A?g)t7n@pCs`bO zv0;t!;r}Z9uG%jWb|~LT;#sE%wkK#5-utUyIgLWcYz&<aFjVjS&I$Sjgej}4{slRX z7csoZ&PAUWjLp#S=e|4`;9sO^dWFq(QT<-OowX@qfLo!8^fUZ{ags9d%TVYbbZ{p? znq0!ANBA~PYTGVKB=bm5)FA3W=CHiI^d`&v_3T~rDd8+gKvrlQ=?iV8ZP0i6l(kbX z&c0&9OUIPV4myayi4H9UQHIT?iiqi>twRpgj3=hJxSiMr+)a3Pfj7VCtmE|UtE!K6 z5h@;>%$F4%%E90PoEf*uo3O1n+IPJFedrj!?t>GdLuM4Z5&YkVj+~K=nYop%nObxY zLN7C_=;WCOeX59zWjiAGT%0sXm@sDhAb?^jy+-`SPe-VTxrVnrD~tV3z$C^}B|nvV z=|ssXhB1Z)Df@?8R=bnH<lx-1zIr8UhSYM~7w(rd)DSqonIq3X9^x`G7zR@f;`a%d z0g4DI=-rPvp`%#p6{!L#Ly?nv?Y<e(6{L&_F!mRB0!5bnM}LDI{@2~W!2EZZ9{c~i z8xsdRSLi(QzXA2Q392;Vh%hk1+%Pc2|97GPDa>ecs$-|JDvAC!QGH-s&P6<^NxA;d z&b>O)kQV^D{7kh~bR{%oQV|)an=m$7e6>;Sv(A<v&JlNF*My}OC^5Un%FoZLa4%VT zI*z#%+;QNIRl{rO!H8*yV(#RM*|r!b?uhqH^C{(l@pUTt+~}m3QP$TqQxphF<wVSH z_*PJw^M^9r2fr3}hQ<j_$n`i(qsx$82_}=L`w|qgiCgJqk6Ht)koUy`9oG|ARwJB2 zNYA=a(uUiE#@eK|4MH4uKD*5QYT&Evfs#xBp@q~kfPYUyFeyk7csxX@zb~ka1+F8v zG26hXT151W2a<H7D7cgK5UXNwW$Zep+Qry^%F}#e@C+{!7%YHi>ZAuv{63kMAS|3F zzKLYLTY<$*q=4<E4h{ad%wr|$;D4sya^bi1Ob36F-LvlWkuKPFbNObLK2m7AVzEwA zF_@uLUzyOZ{EQvri3z}lRdG-G$PvR)i}+GP>^P8blf130bN{l0xHL#=Rq|`bM=1Ey z7GfXT5wCpbU#a<3Iy%9}JnS(rlE2(cEzx|*J9}BxnrnKw7J=KHH~9AOXe2V$q|^P? z@s;ulj7MjnKIEH7?5skYsox-=*ZvYbDvKGKf02GI^_|S%J%65<<4uP+TeRnEO5~qY zWbv%#EDxr<amIZO_JjG&+|N+5t4V8^N03qa=7zkZUXVMJ)wR0y1qt0<%s<}W+W{z- z4tZPagoqz|@@2yQy2f1d{>?FB_4y^3vGv9fo>K^99Mi`OI~r^uo#?}LwQ~Mz=|Hj! zzAZV6oKfK%<S0#v%2K$%^R=4$`R2!9oz@Oddd?c->c8g3--I1Pa;>ae!sT5CV1Bpu z#u<>92DBBrvrk6ntb6Pnq<hn_@pAojOmBk6-QL}NcX`=Z!xrI6Yb89A{v@Y@73PPf zUo;!InQ?G76kYAx@DWQ232pirzYg{me+z2~xjHZ(tIg`jdsayl0U>ecYkRmYCkQ=9 zycK(EM6k7_N8E_^<gbE={Kk&Itn`Ag4;k~qCWC#xEmk4qUt|^x6`N6C!iD{TTtVtF z6M1b7He6jKZn6g(zSeKSbWK~9n1WRr7ckW!KZBGXleoNOuN#k%hN}D=GOfoJ#(uHk zT!r0xtnO@DUj3^S#FFgBsGO^(wasNmKD^e^U#=?`x)Si~?Af0vg@$pu`P|!%o|{Vz z{CZ!oehG7){u40;@%k0vNI23`<y=N<4Rzkm$IYJ1i2at48j>A|Z|0NuPW<HLFsz6A zf#RO1H#YGT@%LJQ9>EhLEZ>I*U3;A|0uJdK&I4|F7r(VW<i^(8m34yCY*+D%TF#ZQ z9icBV8;!i@Ja$|q8EZlr8t%M0U0oYVNnj$L^C`xHb)_%z;#ph6)^>2xDMy<a{5Osy zVd8Hgx^8rC46(8t-+t9|L}vd*F3(F!@hi-#hx=u7cxxiNvC0zNHCBdrD1Bd&I;R`4 zVK^Nqb^otB;|nA1^w&U7d@0uOq}p@+$e}32uO{fTPaie}9bvkJ5d-wwm!|w&ycMQ= zBm*J@DPLveM`xpg6tMZPq>u51I23Q-xSXHn-PE^vY8;VebnAfl<rvK5omk^NJ58p9 ztetgJh)SsaWa&AXy`87G(sZS($FtJfBHGI{M7PR&wYpv%*0UMYws|Tb%wR}Yo}AbG zFQs{OwJ`A{WyR09pCJUl%fF4P(J}(dO#hLmJItw7f)qgVYPrTkBNx4@mH3u`7TvF0 z-Kqt&H_YDOXPpHOQt@6i(^IZ_?#7GzfOzp=yg7P>Ft=(VbAyC!T%y9mqQadcPuMUe zSHgLk8ffWEMDWJZ8CRC1(F#MXelj*uMy_VGgkON%`vh8?HWZW_(Xga^iHVOTvX@j* zP&et|d8ZJEXlMT%l8%7#=a6@Ezi`Fvk_ZnmA@>hD<a==qeiC56AU2vWKxg9wsrgnq zhyBL4amOFaH6U_M`GF1=`X-x!51L!}RQouUMJrp;vvMf5GYgkBw6FrlWI*D0r}-;S zEth#+x_WW7F7`Keq<-Z*^FM9K%*E6&0qQ+(S~Yj#JUpTGqF7udK7p;s_g|{tPHcph z6Lkb{i+95%`{+Ya{jIXz2fjX`cSyO2z?=2Nr_Y~g!HwG*SsG(y1cY+(@~@6~47KIn zUg2rQZ4id*fG-T5<XiFBe1;b<N^=P^jdQYFJx-?ryazvd+lN|gaz+S#ym&uFz58;j zs_@w#8SQa=r3pWa?TG2430hzu<Z}fYt-!}Yxnb5QQzHO6DU%)&1BE;S)!=0endvvw zq)bD4e#_TE$#?3%Xj2E%edL0of{8zbtsmhX-VNY`|6ose;f@ohf5nap*wzKV$Eqw$ z1`N;~Z%vpS?xyZ1W-a<Ay7G2SuGJdn?l%b|-#GN@AO+WpwoQ@>%HBeX!`dR}t*|tU z5Ym_VOxZ=j=OW%6d4Oc1#H+KW&9c9~y9$DZ7yI+-ANhNm(6arKOnvUuup)@YHMG9b z$n<O*#VUL~S5rIGHF*+#{rw@^aiLa<Uf^VjoX~59gep840a4=9B(vb>4-t3o%;Cy+ zh#h?)J@KAo2*8ZZ4>W~tM_Xs&lgWR90ji<$o@KBDm~xcxGVlV?B^K?ueko+W*eDcN zXEJSq5-oxP@LnjX_l{x2-}I;(DE!cJx+)Xik5ahm6~*;}3ZnWL!YZQ1{CLN=8eX_3 z3pp{fj+KU+OzM(eif>SYb~x@)p3Ej8gPR9v6031*#;E9Hk8f&|Zr9H{&!6%4i1V}@ zE~Fmc@;-8}kejhuLOvH31liULeEmqTpjdBWIqUvSO?S{oz0;BYR$h$XfSy#CX8ijD zsj2K&hI&+!OEN{5TYB%$E55>>m%bQ`vu~GM17t_hAr3ita7G{Yt0NIdbi%BwjW;~g zLb5@_l{Xrnzs9<*3le6Z^I=Y|#pSpo|5GnGa_1sf%I&54O38K3@;54xjg#-wng=25 zjNGR+m-Be%xV4I(wlc5xAtzsQzT|vdn%wVUIVD0_(tc6kMiDT1`2_R_)Z>(ve}|g( z*Yi#AD10FMkv7c6K9Y}FXO9r=T`nF#o#T$)79QX-qP9cK<93PNXFg)6Lh6Yx;%b}L z?)5$E8%e-)25v}+MO65{S$?tG{V3FFJq;q0f(uv03<BbBeOmUqelghW(jE!&)+idk z^fnvkQnoJTjA#0mUz|$0d8?A2##|sPtS(3tDe=-DAVoARpO_W4;tcsXr*UF&5;+Wj za0wY5MOJ)jQ<lCGDz2n?h3)7VSwF0(3!l)fqT=+VmjyB`cbTuaFcS-Krw%~_pVwh; zUi?|_r4!ue4pdM6%;q7BUug4|7iMZGOXK8V`nDEMm+50oxe{8zt!b(!$(?8@sh(M~ zYnczLv+mCFl|PCeS+VoWXjX1cN0rUYkdib7S{Hw2IxxyZAYE<_{4-S)SoIMa)G8+5 z#s=2hu~Gna&+V#XtW|^i!EI>=4%Uw%$4Ky(|94>5a^Ni=!~u{?)MgTpO}tY6IUPB* zcBxNu*pgtd)(5YbFRxNM$Cq5?<R=x5B=^7AcGW9{A3Dv;Wv)nY-ou<fzG<j3y8WUL z_kyKEy(TUWM;}o&cGq{7XhAlD{Zwzd-PA)v+{rLz>}al8&V}a|QQq2qTR{Rh)SBri z=TA}a?u*cD-}Ynds+B=hdWxgLIkFC?ra;}>8`R*an37gVHQRp~Zi+rIGDWkt4U;s0 z;3bSjsd*Ij=e^10g;V@Bgt-BO_SORq)AhAc2yX4=bKVFlgj8>CLU|)jXENz-EFi50 zH2R=#ghTg^Z-g@|+;z>MZ#4dr-aC<hFR%6;a#yN*jIzmXFj3#lA5q;rMD_nr_Krce z2HUn^*|uG^%eHNEmu=g&ZCkr++qPY`%eK4DyM5k!=bV0hyCc>YvGPZ*SeX$yzcFTx zIp!&R2fIK{h9ABSC-4`NLAg@{K^Jq^pZ3_aVn<;k;jkL2Z{UAI|NlzSq*~|-yg&f} z2r&GALh&Y-n!1kb;z+){z7gA6OQ4;Mb-g5>n#te+BGlNxmf{8<WCN>ZL?n_(bzQk% z?Z>gq0r5trj_<Xo6;Z;jGtzQ14>g`eF8FY70H0=EkgLSCVzD-Q^xYZSkD|5Vh3~7H zLRfu57o{-V3EhuEbUp#asUCL6g)iDD15q@r0!ht!&3DL4h!S+fDg5n3<pg1PA2(mF zB*@^sHh@uV)F5)_)_b6Un*Ehrxu6rvWa64NK~5c#oHs%x(5~{WsU%<C5IdcEk(_ZU zD`=B_(5du<BI^CSeegi7#<eo5ij76F`2E&N)venKokk3B0#jhJyiW5-cfZ)@(QUHL zG7FTKcW20rY9CgprM)_}`ysgnQ={7WTB_Bz2=Sd`QrVw!7Q<|ziJ^k!Go%3;A-uvi z2>?>J)qYA#>R+ktr(3x<G?@>`OrUcYlY}~{eqJm%^YCc&S+bNRCRwAlT(C+{X+SP9 zq6};=*Rp}0XjSSF@0E2o2O_;0Dpi+;R$K5ySr9w0&GI|Vk%z3m@Wa&Q4ogxpeTEYr z`0F?A5Uo;Sbc)TQ%Z@@L)gqja9zsHY?SHk~8#rg8^=fTPzp!BYPkfOXhels9L`=Re zEw0@-b?ET1SkV?;73bZL{Cak@J&AgQV|J3bShm3`{u}(oOrc$AjxuRySYaM(GA(u- zVd*q()AF2RnXQSwJnNvnf+aIQh{e&j&gq<})UEwz=4^U4(DRf><M_c@K(|neIcCd7 z16V73ZDDxPC}X&FW=qL(f2g&~Mlf-5JQ9)H#_pJfvxGxi&aVH(HPAPZ2|DBiU?IAt zSF}}7C!?Mnr~Zal8xzYn43DnsWgDKRy|^UIFtUbF3JJRIlHoG=d3fz<eo^y}3F2w6 z;r;a~(fY125~)uF?NY4WyKF9!(7Dg9Eo)hxKTBAD(xh=8=KZzW=`Sb##bR_?RfWkW zYKD@`ykbOTnwPL@lJ-1E3FP1O>($u+;IbIifAWDZ+VMdhek>cmh?qt--N(|%1_tdP zY7Mp>GI;l5#(be85u@x>N-lD)WFjDFDbu-vx=pw$li*Lj)iLBW+X4>a-DMFGf-6yc zw#<5r7QWQ4D^_yzEm)&?VNXj1j<C_hpiGAcTlb%%=U5@g%&q2{%(E;InBg*^tXt9V zI-X}!8YhqAT&T^*OZf}4u?~y+JNeqpjpT))0&yr3(Z(e;@aqyow_v>7<&hu(K~WhQ zBN<E#5Hvi?VTddeR!1gJJBU}BH=<WcyVPyZCU+ybxPY;T)k>$69ii9`;tl)G*=&U? zzxns>e@vBmAA?Y$_zGn<=pE^B)26e=P&CI*)&DN9VBG&|Qe3;RAk}n6TB}d01s%?C zU!!DmA3d8$5)-*MP1jk|*<pBMS`M5%$2+xDWK*iQu8NxPQoXrm{8MkW1C6%PE2L?` zfi9<FPDjA-)TNnxLUA2If9mI0U$#Uut0l|DF&f%wqlaTnw6+xHD8juGmMDD}msr=q zyWfLvqh3NIx1V4=`SNBsn->*U%J$vt49j40UGv<FJMTeEm;04!g?;N}<4b4!G|RN! zFORWX=gV^Jc&n6tB>176F`5-fK0*V^LV0KDKncFPdrw#XJvF-b?o7>+&kyZ#>BG^y zi{2e?dLM3xws#tl?yNK2PHu|(P0-$`hN)I8ZPLtW0J+ipa)fSIiXU?DB~t#gQ(*i4 zEqbk_Ld|*E@r%p^r-;QgEec+kH0seW)RJBNaEyYt?N<uQXZ<Po1=g*D_vB4gmZifA z))v2n<7W#}km2D?cUDd5@ZQ{X%Fw=~%^0K5Hp4B9D5{EW!0j7LWV9Ir$$G@?i=Wu| zycI8h8cV<_aU>a=4oceo?G^a46X)UsMnIqq%NG<3bI!&G%|JD{KMt31V({^)1TlR! z^98DR1=()~+OH14*bSw31rI$=NP5v9@LmuV-luG4*-d`R;(a+a5Ydw=Jf4%*vkmkO z-FT!iFwF$N<QA?J8I}9ni15y8Yr4D!e2#AT`1oOFix56BPIN4yM>}LrERB!utkUbn zbNtGlYm7^sN}$7mlnQLm0hbDM$LK%`rY2;^0<=M=c<?RpSNvgseT0k4Wd<0kEs26} zil2PL6zl_WhCK(I?%sP3ccuFgO*h#Wy7RDmoTp=Va#0jwZlU(aCuB8}v6gq{xWKl* z5dFcc7as8pNn9M7Z%?~hmOz+gwq?N#crF{j_9LPW*t`#dGsLP<DLeXWeQ9)NT#W0z z_QgxMq7IEm7s>S+(g$@3ayi1H1vObHxxj>nd~jbG*zA({k6@L*+n?7?tNH=pr{4UA zlVq-oy}fQW=67%&MkdD-j*R$w<gqWxSI?WXBXJY)va?<OjmF@@gdz%Cl2!S}E$Yb! z`4QBD8Of<9h1+xo&oOldHexqn<RC7{8Nms8#CK%C_d;^xo&`^I4DARuEQAIw=_5hu zE&aX#06_Xj1D{qAGo4$bINySfj-X<YfG3+_*Mi;{D;Fbl3?R%IXE1MCb|}{A*o(jV zLd=#H7x}}>M2Oy^sjwUE1V%V$<<=6POSJP`5wf_KjB-w7b+QkRJqU?mELgeo2~o7h z53}<Jf-X4q;4nmeDa5rN0dw=fqALjW?InKkp#D$!Fu>Y8FnMS*QGh{H66364{gSbp zzg|WTF%lHqGV+*Q?w6wGScCnxMAtV!I@J5kQW-d9$Yp|{<;d5a8IICMP+mu;$Zwgb zeDYoRf<AZ<g*FI}2#xvjF5Ia~w@134K#=B;Ku<4vtT4S!Mn;my>1(0+x1kYFssR1B zRf*)q2xm8NK@yrD1ar_W<qI1z**6g>WbNPkv~jA87h@8cm8ke0Gj@sP2#)kQ5?6=f zoBii#4VCx8ax#|tM`son2R}mxB;N6Xeo<Ct4O$6B7%z!>NxFZENA~!GapT$^W;!d> z9~7sh{Z7hyNwXWo^SDjXNpURIb$1(@4ARLLQZqfLczXni!1vH7NxP@~yK9wO&Ye9D z5J9cUqD1$_l2gB8v*x!gjS8C9zBmr@<mQpwKW&FeajjTq6fNKn${~j$eb{LuW%=8U zLk?DRD{IUWtWk%HgNlkG?vHCi@{-<Rl|vSq2x6Qsvq%#o!cYT~c6~xfSID}FFMOk? z>5A90j@;xlM5COfdf8b$2$r7jkQ6BN5Sg)H^5mb2B58g)R*K8RKS`u5(x|%2Ys%s% z&|H)tBAAlF{5oBVWJ#Bm4uz2snT*XkCdw@0O;`m+Wl@#01=72Z>F}v@?X*$=D&UHN zZR(IYe>#<t-Dpnku><rhvIgk&?K&*?bUDCAw&!=qoPw@#951H0G>5l^AU1-$k|MYg zQC%qTFe3{{-T$V_wuLVD#(IyJKi{;EcK;N`(knbFae0l=2(Hk!gy}?7(n~KHqHZ)h z7bS>jU~Md~aTHKK*-QDG<`2@?(zXQ`)I`0@8W#^)RQ<Wvw$bS@-dEgHS#AoM4wj@I zYPq+|SMm3MLt&n&=yhqc5HdT`K#^4*xhLXLI~|^!eV>f~E@b-hIqab@{fw^Fh2?!D zPhUbwfix-(F$VGgH7FN&z|~q)@^&J>cy{>dafD(y)VMyRp{^71n@R=O^GoCREN-P} z$+&pBYx4ECMtG)1I5qQ85%8@qP(fTKkdn?pRTj$2SU=`%Xrat#t~~k%3RJJ<PFv~& z&FI3K8<B0i^9|p>qGl45LssCQ+;=b|007Z{pZhl9p#LAZxgE*3`x7N|I~{q{o;+kW z$I;}CzmHiK!Vbt9*cOg_x4aH>gL&-r!Bs8AYV8I7^z>m*mPd(xUE92A{>!D<O75ro zApgw970wgL#aID4MwG2-%NF8=m+hsdCIpY$!)2Vm$mVmi<?Bpsy&yE6m67j_S6bcC z^ld-bB&!Pn7tvMn2oMC@;1T<F;brxAzexeW39R33Oq(7>7Y)sbK9$?29+T<PDu@1o z^WYZcfs0jY`J}bc6_|gQ%U<Tug#!5eoopb-?<**>B64U9?)4bpXP75IO_79$RoYF@ zy^!<ESE|1U2qdiZ3HgDdgTDU6-h0cpPlOIbK;Le(fyrIQHhKr=P_(;{oJNxaZO(T~ zxOWQ2FGugo4LG;f7K7r1hh)eAG(h-73=qB1kIA=f2)2w;SxmGuUwBik_iOWHEJFy_ z^NIbC9S?yVFr~<%N)y?m_?UfhJi&h1g$j3|Uy~4j(p!uPuWHukpHkr}Qzg!2lCC)L zWP`53cocP47N%&nKPWREg{>^=PEDyHbRiQ?X|q2g`pyxm_E_+~th!T*Gz+=7JHocF zEzmVes{tp6CW3rNi0!udK(1?-&50(me2<-3FRoiQjx(my4?FajzrKuouHd2-X8bb7 z!?(^JwW{4K_=2UDEY3KXHq#u|3)64sT92?E*FJr!($|w+s$f|bn49KEU>f81teUzp zA6{MNct>o38?P_iQ&*DR4SCGf9_(fC3$Ys$wgs64;O>8#zgA{?TN}K#4xriK%?#fm z@}af9T3mLTZ^_tAzu5YJgQa4@%z>A1S%wR?imPHU?%*=I;@UU_@wv&drSvpwN9#zS z<XgQi84KhQcJc&kyIvknHDHG<J22gg)8S<L%BF6^^^oc4g`TMJz`Nc&aE!)ZaXi_C zLj8>c%fU{tW@$Bg@<8?x#240Xzj8Qu)tVrh0B@y+h{W;|wvG4!&XCAv^y{{;;NWl= zv^KIo?a5{w2MHEaUqnn0YWAtf{$dV4ca6X{s4m=Kwn*M_)ngDssu_<jKjf5(3yY8< z=gO~8H%N~8J@J*_CM8R~;-#0yreU~CovjGIk_vmKZf)4uhE$x=zcCl(a!}HxT}zZ< zBJZX2tcZG!qz842?mTXmbIM-+p#==(BJ%Zwr<p_Rz-?v`$#mkEUw`B964c+u?^-lq zCJGjaLU9xuk7z~?lEZU1{5Z0w7>6XU{*gz<>LVY_E<=gn#3v5&nuyNeq_=NZWIuH@ zTrH;cp*y-jaz@#{4_D2F4!Ieb*}eUR{UAG>pDBm)^*s~yqW_9gweFkjWYFVeB2!92 zMqZ3KyrzGUi`k7lb_203%=o2~Cl~_Z5LtGcvEmNHg~$;Hb1g;_qy_2xeIoV;E`6O_ zO|8tM+vu3MwdhN%_DhRcit3r#w9S>eu`(g<mOJGMob|2QnXZBV)D_Q!#7<;+iL;zF zu|=D_aA%2rbh&O#8SA+IR?<9cFw3+Pv*TRfsCJ7dvgrs@r}p{BN()1lTzkK5#@AUz z2<9Zzl8-*L@kv~&<ePL`k$Z(}Q>~6?(TR-(1<d<Gclwp`jbh3H_cJLYEGS4L0~S({ z@t6FIkxQ@sDWBl?(CDtGD>ZXI0?Zp?M@cxxrmbDS>ys7l&-J_;p3>rw3g&Hl)apk* zihi#_`(#Z7Mv*Zzrc=>PDl+{);PbX~T}%Lc;d8GB<7O4D=6nexrAU~s@Y;0O@s1mn zDh2($-~=LYw0xcigb^B6-4eL%b@dIi)cjI{12u&T2Ln{0)(6OC<Vc6@MZ*!iHMhNT zoiEueriav(W%6bcrqT-V&c^%|U7Cb;Cj?;m7aNyXN`g8_o{)Ng$E|w9;w{H;+)7rw z>)>zT_!fg8M6<#zQn3gR$c+#7=J4_18UJE-n;d*u{)d>ft%S5KbF$$<rPOr)i#9VT zs}_@Pb3!+JR81&RXir)EOS?8gt&+J!0E|ATXy5ktOP+qK$dNaa`Uw$n*_TFyP*&Ta zWscrQ^ntgZ(oa1Ez`c1QHFFrcpa(5s+Y;ww3?H^*37%YImH_m9eN2;70T)aIbhsx6 zK~N1fe`i$Hb2`-%Qv?v5Pk9Zdh6Z?U(&U_@;vR<IL+=dWr3GBc2YO~cqgnobo|dmF z`}{$bo248;MOisUL}cyWTxzyEI!TM!Hz;%OXzpJLw8U2EgbaRujkUnrN9F*u75*3q z9$YtgL~$eV_*@8R4|&;%yUi2Gn>$>R_X-p??+CoHV%1QVbKa^CPdR!T%~;c_&1W=g z<AgHJ!#v_f2UQ%qE@6X6TVQi6XLXPknnBP00%ALwj;q<2EnE8Csk1EF@!)fpTXci( zr$N^uP1gdQSs+zVtVvVZoW<d+r%fPq^)#7FM_bJ4i02CB+k_r?W3F)*#g04y3e5hQ z5_u_-!;uU`Vf_Q6&}+I6&jc7-!oKE!xjcFnC;RyTDU<dH<U$k2#}+|1uyVAo2Rz&$ z)Ficw4VZ_)AR_f^Z8=235FW)yCvAVt)H^s=&P|)d|5V3?LaB%Ueu%QMXm^o;;FNA@ z7CyiBXz!xgC@-YG6(mJE73^{dTLr0)9`@Eqn2Qc$lx)u)Z`OVa>l<EkEJ{iJ1<O+F z<Nze~i>`LCufUnCUqlQRy=*AHE`XjJVhwIi<1GFK#P<$I2tg4Ylaes=dpJl{r)(68 z!gqi695hH3F<(2he~{CeW4<DWM+VVz@KTp{riS|680r(I|9KeI7(Y2UXQ0<{cd66) za$}s7qJWZdK6{`d{=kxt_bVwRl3HG!PPn3lL;SHBrF<Q!eA^^Wa&_LpJ*SF4VbMg- zF0|Nf_!1nxy9IS_3%>t%)nQ{cIFp1RCEO{47@DmH$3Ol8jP0WGGeqla^4a(?`h`)> z@;BtgD7Eu`11<%cn#wH&sWT(&m#Isy(yMF|yl}CEYFK!T=vYiNWRz`w%XK-CU*N!S zzwM+`nJfS&rMk@PHCdd`39B5^vGHKv5upMR&=O~nL_1325-gO=I+Z4Ne#F>#XeVv5 zMi_90MnpU&t&L=R5{ZI%JduE4WQ8D-Mrl4o2_=Gf?VLndC%xclQ+C{bJEVZeFLC>P z38Lg(cjZ^Wu|o2S#dh%wymO=#Ya9s5%uk-#tL&}YEvaJW*DHu#ODm}Gva1RNvR%6^ zsox99EWuW&hec5(ail7`N}F@WkP21>4shyv%EO7}<`jmgEbPYAlDD#inw`hvDS{}t zsEkDxRg$3<ieihhsPm*HC=FRU>vjj$l?`xl#tf(@IOwDi8p7(CtA2RCgtcUQAhnQH znz*pvsD(|oRTtj;so<AnVy8t7$+kT0weX{v<(n+4dZ}~8F3JO>HrRuI;OuZ;{FU0j z0qaZ0BDEZVxaza0h0qt7M~%zPvl5lVUFx}MXf_lXWETHW7-^IKTBRDB3JF?M9?~VE zEi1=rO?#95+jhF&)Ot_NLSZ~nsEDhv*%WY4-p?$tlGs~-GUV^2m@y(^uU@f<Ao+*| zinn&ly_HkeIQpy1n~Y(<km1Xf!9YRu;}oy}DlVpPw&<`vj<kG;8g#BzykV99th@T; zGEF?;E{M_6^o*ktb4hT<;;PJ|A)|&;_46H|fK!iDt!>Ugj`}{C*bPnWX0VUi+ynJf zH?j;PM^Ihy7u^=tOZgDSZR92=Nz18ux-z1-ahHI=j>5eYYfhLNN!J_xzd~rBSB028 zU;uzSYybeV{}w_U(*EBHG<9p+b#a6*>Ef@@(eY4aR0N&*MoKME*27r=ettnd;RrNO zzpmAe<*SVTu8-&Gbue%&lwXn_oJ%{M4KtI|)05MMkIUVExS!1+1r?{yM9b|gZ~z<H zgw{H3q{$s$*wX2eXU2z9cecCBwUsatT#JB0@BDXt1FE*W$A)wdn&6#@18~x>cd*%= zyBI#}>^v$!QwN3Org%UV*F+1v?U(A#hIfvSBs<ocC0`pvJF;q0rYm0mzPc0JHdEqP z=4wPYuaSROE`?-KSxdhSZa2Ju|LL*c3&Ji-YVxKL`F3pbms*U1mOE2mTnt=ok{3I0 z912WZ3bhC*Lv@W>9?t5pJ`-f7yn>UNHgUp(D4?gTL*}aYto%(6`}dpV>+sG04%k@1 ze{bJFn=M98bQ87_3u*^9*9vFu?K)!Q7gvgqzERl#3IsfkBub}W8?L)DXz`RFG=j2! zpu~+p*`pa?p3xRLip{W|>sw0|>aACltUiVJ;OOdp0E9tdBC))tp?+h*ONg$0TJ@B_ zp9#NqX%k4vgHsS4o-#dfc`N!^k-zVyGflxLD19%FL%gUd&;nu@X%k>ew+5d?%Sv6l zxt+<%VNPt5^NdCHHPzW%Prue;^uq6TJDdvA!AtrL*evUH3O!Z>gkeNSy}%@`-}Hsl z%6+dA$MuR|UY1Q6YUsJPQ(s4AJJv&zJVEY*xCV6w?B^j!fP+dhMCCj%7@Qz~fiAe1 zRl<)A>{Dey=bBpLbtPahR_D62cKq2160D`e^j0(4YeCrN>iG9`c$G7iVO!;mB(*D+ zF`mnzb2jZMxRr2ADmkO%xjxFUmqrY>h@&R^Far+#YxhQa@m0NJ;D+<0*0j$emUpum zXMv=f0N`m5U{qg2CBqEA<w*yRpx*b^!;i?*VwM&CTX^!@7!V!hc?{^trP_P-Td>!s znBNC(7BHWlnOAGj`mYIK8!0XuXP?FoeX#Tfp5q@+qDm&1S)ri4Qfs=B%JJ;V;aWO0 z>`Spr_0wQ8dE#|#a{B1ZVU42h^zu6q3I|6Thf<X7O3rOIq?qboA&u_M{xH?M!>wiU z{dFB?{ifJ}=>sJq?3lBPmO<NG+VY|eYuS+WwGQwgg6;y@(c&FtdmpSjwZydVM6$Q? zc&|hf^IFt{U_$7%vUW&ZLnBUuZ`f(TI$(7z#MjRpyYRU0A<5Ex4oF0td<yEChb2GA z@#LXC$jKeyS+hR2e>qQ_$szYRlyJZncpBbV$va`v0w{-qrPk+P1k(JJ`N&eKEqpvU zV&P^??<Ci5^^)9lD>jm+;=NG~y}SO`AW;(=gr@uxBxZiN_J1EFOlVz9{vlI6Qnj|- zV2Ang`a}(ggCFzjv_4<fvkx7VXxBT3PWba|A4kJFM=2Ge({AGWyc6qiA=O~Hz6a*y z+Uli8oq;kIdI<cyvu%>F=~pLM8RnviE6HD+0o@dJGBQ-;F1&+>|3DY~C_SBhEU1g| ziK!?y{=Ev|xGwBefg{d1H;h?A?hb!Ww|)~gtf5Zh4|As#k;D-tJZ6kqzj9_Uc~?!r zcMGKL!{xDrJDfcr(ZF?u%c|?r9{6{+jLD{(m-`G>w9w|Go$V_S5C3DnCvH;PJW-wd zr?p^|F~Xc~u*YpybL{(Nhl%&(i6nIwg~J;ARhi^9B8kuI`(HSREA6W-aSUmtOlM)s z$F>ySw8DCYN;Sj)+d}Qi>&@Tf6p#q%Fs*uUJ~tJJ;&$}i&Urv_Pg+Ar7(j1-iW6sS zbD9{Z6#jAxj9H;EQ;UtQP>yQlIjPTzcL`G*vPiZDvo*a1q?5Kn|5c3!VElT6t}+gv zI673e!$e7%^v=Pqb-7Bj=f!6%1~Bczgiq=O9`2J43W_$Y;#Gk#P!O;b88gTp0FTEo zS=J2nvnPLxDNlrCz0KjKg@Ngc^YQ{7M}^$7{ONuCrvb;2VJF^w?yVe3hMYea1s?H8 zfKQb=zSo}2;TPj=Q*Bt;c2;d&vlrj4R*<W-tO_O1cjYmV6}byT3}2Vq((6O#!YRvo zF)V3mh9@N8Cs2IDkQt|CBZC%_3rTNVr7lK_VE_C%<$L~9#D*KF=F%k9WVIky!Em<6 z>7aqJV62-09Vw~cv1GN>$h-c^vN!xyU5l(~@R3g;yr8xk&l<J5%HHdUOmO)$&Tm)L zki-PNSb5A*de%h5<c<iYPjTB8ZHhU!S}GxbD`%h+e3z%py0U8FHw~<m=rlvfhT0Z@ z&EYsLMqN#Cbz$qr-wuachoW(T`{KhQ8gPpFnu-_dL72ZUWuQ8Ub<A68d0S1wR<~K8 z%XThZdb)%pJvp30n1jPUuGN#W_Gu^WyzJ1&%iV*1_dujp_jVhyA=IR42p&D_{@wKb zy@-r>N=)*4|9T7f@x`nAt-<Qe3FHM(^XqWfc6#WS*$)!DgON*vO-OE~Fm19@IImct zsIH89|E2g#dOfe>IP&9VSMFcWCH;t*&OhX@lRpps|M}(pPXVm<zX)I@#s49IP59pg zuyMoRY^cg8XeOa8OdZ30#*=_DQ51uRGA^t1A*|AKv9tmU&v(PC1y$A0frr@$nT%^| z9O@q!_(6cqic`1p*Nq9qgdH408|EzHf<0wOXuBUb2gcA;f>MsbLETp=N1x?_csIYm z^~6lCNR!D9SNL8){<)t26u|yJ$azil4UKJ#%}vb=Y#siW#l?SJpt~a4O##CJ0JO3K z0MP#DR{ZPKe;NG`{|ZfO#|>7buPa^ui76u^l@wymQ>XoN@DVzmmhywhrRC~hj==G8 z!Bir(Am&43M?E`N`@sYvV<{yI?~1aeP>_0czb|;-f!um#hMCIKUq+AJDbu7EBvV1@ zf=!s3^okAa33ro|p@$j=Wx4*$Ov^s|)VL8TnNhlp^OnPi-cZ|bab({8u9Y6`SQAEN zCsS1?+gGfJk`Zo0ATm6fL@3!48lGk<i4aC%zqS=TTm=l}d}?jx-tBQHZptb$=oMBd z3m9TT{3dJQ0y`g59y3BKRUt|slwaLhd+qQxof$42Ilc~QFzqYFkF6dqy}sRunUrKb zW<0;V^4iwFxp?-cQ<uycmkapKyGLqjinLnBEE@(wH|_6x4{wx*(4$t50IA@ID(x?j zQ$pRBuY@5vK~ra0ECK}WGo@@Jvd@(-j0?JU=$~O4P}pb$c6gj6yfN{j#as@91Nq@G z13e~Sk@4H&sSx&Ia3WOe0`BrRLSFLFSjR!-?cDpV<)&Us&)ZIMnE!zOYn_w#4Bc?) zPIkBNnCxItJ2B%<{hWTo<*}o80p%|Ex=!P|e7~VyfOBIu)3Y8n!&72BG4NxwZy+pr zB@uA3lwNrb>527|8FPe3m)mgU*Hr`4;v#ell8Z&s<r+Y^&QWc3IS3XxdeSA_#{MZ2 z3n>&4l>kk1kv~_lNZZ!QXN<lq(8@)Kc7H%B-li=>a=QAr3o>2hW{Oj1LBMI&om(?0 zCI~hwc$$zfW#4>D5wRa=OI59K7iqfk84^EKFYpP%o3%ul$&jSyc`_lU5fy(a4Fzct zH*9xvQIg6%B)_&C%yq~G7W+oR^h~E-;og-?Ax#u>E`lg`1k8P-6WCHn{N-QPyeJ6f z&6r+J01RGir$$~^h)sW(hl^(kOCI^aZUA2E8rodpe6YNh@Tk7bd@8z@9rNA@C~n&D zDpMI;GaCu(f^p0aDkDKz#mYuO*A7w!;rcB;JM7%V$jeQ^YdzO!a2C9ehkcTVQ!yoo zgMbs#5P1<2;J2Zf9-S<(e1iSbdh#VxM->R{Z^BN#vI>Z}^`~|CzdDFKUgLwKA@Hj! zo^QJTjp0DO?)W&2Qeh8PCMG5FM-&>N{^vaeHZ)qhZ!ckJZ0JiL^^1!SH1BVA<+seJ zjxy164#Y%3<{u@v(>RgLpYgs%v^n~X;xLAgej8R^J^J7HIm>(u`51<3l(-XZ^b_1K zZ$q`XzS;sw$)v}>XadwoSFNKon+N+z=?Gq4Sq!uHvV0OL!`9Qn5pg;0?akq*V+fOH zFQ>r_@ul-jIzd~7lU@%xE(Z8qE*emr^5g=}c~8mRZgfphdIJHs?i-Qh{HuBOps-Mf zMYtOPAkbW0oV+9j#*xXTgIIp2pev$oD<bme4*QbvrVJ<OwF11b5DOveuyuna*ui7z zv%Dh$*@uE%j6y*?{c^C2)gO++F0?s}@uP=qOX*OS$r^h?41SVqG9`)C5g&=;ZzC@g z5NN<7M=C03vB1>m5O*O2T!YT{e@wUokED#t2lZn8<;s1I%KglounnGUip5R+CmKDj z8mm1t2C8NZ`zuE<rQ;$0TKoVgs-nJ?a(3Jdj|y#;hQCNdLtoasXWISA&q=%X_*E}5 z9iU!h3Ucz^lho<*{q69<QgoDS(2uoDQe#ue9bl(v=aWg9G117sAs37mSo{{q?+6Yw z<cmaRNwDWCqJ358d13Ccr_x950e5X@^b7CL>Bj5(Nd0+F&B=TH)%#gp_g>9+H$w;6 z8L_urau%W|TvYE@JkfRV@Y>b+Ps=;;3iQ6wKy5ze#WB^}d|DVSf($3SXn6N+lkYl8 zcZ<(!P*f1CPq7joyS=PEW$Ubfw%&dWH?dj0tqAe$GD<18+g$^HK0}`tA2!#MgRiL9 z8WT|2HJ+pZf0OTAMAV&%G)j#YaQwWP<2k=QUtPG=kIBE`#yh*Te$joaFwXn-e8>24 zOC7hTmc!d&X@R3<^`#}52xcZ{UWo~D6BUVI@7jIe5v4O|7z{=ie7`})+I+aBZ{evw zOIvKM2}k-L2Sf|rMdB*Qpq=RwOGC)NPBSsX0d@aulOvutbW%DLvu)g(03zPy*ZPUy zUX^hLyPQgy7LJjrvMA8jRm9&EHq0F%Wk>JSSbpeh7s^1kZ&<O;uAKmV+nC7g?sQ2a zAG@lNje<I{(&T?qBDxsfX=LC+tS{kP7oB?oud-skYzm&VlYBuj?o-+lL=JIaLpFB{ zwu05N+|C^q#2JS}M%~r<dUxA9Fyk$|wa~NvfrWZ6fFetRY`wu+^>8yVwA6*{NX-&w z8{7@~+qvtgFmE5yROeq_=g|#lizMGCJwQ*u=3Z7;h+pK@mVkM9!egl2!5Zx-u^wHq z8nu&IP&6)trg!8bAzkSXF^jU+K7_d<ph9pGBohNL+~&z(*3oOX3jN)cmcc}mbr(I! z@4u>^JhZpDC}xB}M%YMNa99tQp6l=i1nBgeFTDh6Q|KEDfC?G<-oujQZjb)r$6zgX z;tDUOnCTeWOS%U^w8g56Jm7+omaw8mQ726c;2Gq3pvp&hoMlK6iGyvCQxf_E4d!Mm z>5}l%Pfl?L<2e9aXpob$i1!4xije>ncV<wFSxSk1jVsBijOUTuVPtv)F0J~G+gcP$ z7QFwBzlVn*`EDxRM2U0JR(Sm4v$fEF<1xSqy5$HIh7Sn1Vt=i7-3aiUO@jEARHk*f z8rMGuCm=z0r~8GUkVUaI!4Wb*4j(Vy{=jUO{e8bXy-<>4Mg@>dJ>vt#waBi0D^9Nq zzdUvyG7zha8X&!liA4ngH477@L(0sPPU_$l5)GtPEG^HNxb>mE*U6j9qEiI_jA_&o zS^cdg75}Va>+!M@UVzMgfxyEsEM`-4(TvNivCFEltKNFJU5}6l|6bA@%KYXXUekCm zwWhlwmXg-CSQv<haZo$b)(XD;vRUXPaaU^zH?APCtS7LjZat`nz?V<r7&&Lpe;!+l z-gG(^L;=tVcf)|O6-oS#dX@!nn-nf8ogKQ}AnRzK<O#<W-A7hK<Z=nvh85RtjVEv6 zV7+0kIzY*LEx+0`4iG1_{iE4^^lw*e?Ah4#$II_220QDD9vUuMWr0+DtekN}Q$1-y zVVS`6DECsv6ukz#478FW^;jDcnpqmzx(7qzC<IMEw+&BEqSpH$kX;}cN^?M@2HFN2 zT67CN9vUZW!vuIS2;Fio^H_K0ElTrE`MUl2!|bzuO8Gi~ZyDsJ%)G$T{Ad>0zElv# zeE&Xu(=K--G8>l%M;Z3&HhQ2mtkP#?k2x|#AcRwHeSu_Qna<B)<8^T0Cx_mGM-Eaa z4;DRLp%v$??naoa{VhnWtW3u$_vjhA@8%2lq$ym>vDJaIC`fr9J0f0cJq9v#=<@Pf zT%jAd@mh2rX5KekxB)s8<3;TAq+!pBwncJZ#TOUM2AAqQFB;2xjiFy>-9jx<h;dMK z%E@m)Gzadq1ZGf?`6Uzx3!plSf=l%K!6&M~HF_;q7_p1#vLMPKF6MVCeBgL56k4L; zx3_#tK$XqF1NLgaO&{x192&H)B?C;*7<J!F2R&+CktZa*S;jqls0g?=XrWr|{SXK$ zYE(RtoL3QCi1YPyxsU4`+DVF3<Keh$t*R)bns2<P@y}?`z`A}FKxS^*nDsfXek(>g zNzT)YK?*bEA<ADBgl+3r-ymp^xQ2Bz;E})FUV&+!(<aiLAq(YQ)Jg+<0SulG0HmOJ z`By;{=z)4b+NKJsXM(>ilq^^E=rM7_mf|`IBeZe%o<Vx!yvD}+Z)zw6dfHqCWUH%Z zhhxE6xGz^Cw~Zp*G_}>E!{bldD@+}ZgZ{&IgFS2DgaeomWzG9ii~(Y7^w5rlmFAK? zm*Gs^^N(JBj9~V{8$uw&9y>{QjNk+{ets1MJFF&@5oMp_isKpB*6NZBUcLnNdT>o% z&t%Oa?!yRg?_C}AFhr7#9Q)FrTaThLK+O<rTk6q8#<+B?VdLPr$VK;Y{Jbd#b6S^# znAg1>m0gSWJ9dLG=GNsSy;vSV4X0LW&b-HruQ9Xs%P$nZ7<^7#4lF)S)kJ5nnAzY1 z-@<0(;RWM|ew$uSI_@hcJepGd$o5$p_cGfEc0@NrQLQD~@gRWFH_$)Cz)c^7c{QdE zSY-fm$y=T0JYNcD^h_lO6U7_0(UF$kYLRw&LX%et`0|sm*X6?gH-UpC?oz|mQ>DyQ z&?7&og@Ycbk*C)ll$b#3W_Oj9jVh_e^{2C_iOkF1wabJ)xXpazEz~?PUAsGqg7Qzq z`PQUWRcqh6x?gflE%f+)>zfpGLCaz1IXYbs%N<dy?UOk-jA!JfqOodHYEBH^tmUs> zPw(!yYx6TKpFT(9$}d{&ti4!jSPAouzV@Z6ROb|PC6Dn_(3H4JvvI<C_j)U#dmAzb zm-V+UxGdO(ES%m(mQS)Y+81bti&Fl+-Z$DE)RnJfp%yA`(A2`{q`1U}u4*$5%<_<< z9UXj?^v0N;1HpH$lUB$dnE=uZ0X-4+Bp>)AX{h`b@(@b5Cx<=qjvf0l%DAggD&CpO zTj{1?<z~MJHIm_&Wn}_7)P8^R*Rkvyh0<b!OU$(sP}D2Thgsm>e2;F^(C4Q|U+dV| zMRxBPVJqC73U$S4*<n~S-<R60;QOv?ZoxqmI%i()<9<YKmPms8CO#x#Kq1wI^m|*5 z5kga$Hv7)q@7o<uOn(FXlZpNpopglE;obeAkq<w0+5at_6#e0)vj60z|0toaikE@| z6hH{^>|9Ps34)%~((_>a9T5!S5=L+f75@8)^dh?t5@!td#j@R_M3bBK>riTGv9OX- zspc`mdk3C7e+kTx9+XKQ6!$4r4-QQas96slPHP3|*OhJ{?r(cK3V5&!_%)X`DCZb4 z!Jan6HLKhO_>^iM$-7gYh8CKLqg6Wf?n3x`AlYx<ZI+UByp@gXB1cAv=X<>NW`iS@ zG6@eOG|wisLt1{ou_jKr_l%8EI==!`$EQ#4z{L{kVB&@j1)&Hh(=qaphpP}_EurTy z2w$3l-4^U1V~X$p$=d&GukPTC20(tYgJM7R>p$}Kf48Fi7qU(FFQb3nCa6i-?$aai z4%Czt;AyCE3+W=6gG!Xg=?V0v;89jdV}!NH;;g|zzrS2_xigbq&ew+ORBUr6+M0Ys zkK|_keOxyNr$R_@n3=UWs&E0wnL1w7#9B}CaQqTVv3Oi)ckx!S+E&0sU{&qQy360) z=~EpNtWUG@qHn~o*UQN=8|vRu+KzN+ig-fbCo&SSy78mU#za??I<W0=p%Hplsmx*H zTu#@q&^l>S9H?lLLa%yrKdqme*DR@Sk*!SirMDPtgSwZ%U+9wcP@!fHjVc30uNFR7 z>vyh4EGk_=)GP}+8E5U}*voPz|G}b0)QO(Z?Jyt;qcqdm_B`mddT7+XrN&T!{ICA? zW&G`0Rxp=0W|Qg&VEOkiH{^-GChc*CoOwX|gE>f{80WZdFkQW9n@Hk;11QrBXS@+C zm|Osom>V5l^?_VmZ!S$_wD7}I)aJ#aqV73_5wM@>!HmrqQsZ1VOYGtix|u?O)&Y(0 zGf~|rKd}6%xMocVP+bfCv@X1ROc6zFZqwp1(Axl&(xL_al);X=bgl8#?lgI{5j2=O ztc;|)O{-zNM6^GcF1iR+4o~wwmPxHbm;#z(W&9-mb=QRzJyF~+KuUn0i1C8(d?h=1 zIFU)X&jxu&`v)@D0#R!h&Heks*)1E(u^jS8qZlh#N8N{elQ%#M-7h@$;>0{JgrS8j zJGbEW<4GsQ2;2#*+(bOpHhsZ&FCNOCTX#-^MlZL2jX=|J*xctL)PXGhY8L8xkiDRs zg`zsN0nQXcC%Aw1v?Y8(bg;KJzYaeCBXf0JpwS&mB#rJA`*h%4*K6u^aJBGFm};>i zW2?#t^^hVQ;|CajBOu~%W`|ZWqlmyp1!rF_hv-dHKv!JzRXtyNymbXn<URJ#2Z2U# z6AaFHc@ZsEtNl06wuuaPdcRcn?ox?ir@y<@p!-IcZsvF(5<va_)Eld&f3mC!qa%P& z0j^?2=x?-Evp3&To(XAGctXj{rsl9|&`|QcbHiP%u3zQ8?!Sf~H{j8o)SsiY@bi%V zcSq`<={*&hKBz!?6s~LUp+I-}h%N8gz(h_E_yFt+jgC^Z#gz5WZ>L&V!nh!k!!TG- z7_?-^ZBAQdf=Nsv>tCj#cX2CCCzu<pW%ZWC^9lD05&RyvSiZx*tND42e0q#iB_m|b zGsYf-EI)xn)W<}HZ+qf?Y+w1`84vDZLdkXTk)rnH9FccMK$IdoNd536rq0LZ(p=te zVE?(Y|MacJ`OlS^I+z<d+FCg~ncLd@TcNw$bz98><WGqVH2}cR=ikH3zs&sK2mi?L zO<}D$9I#)x-=mgE%cNeC#2gKB3}=Q)?^|)4x^!^ntl=bQD3WlhMoYUpNw;)VetQEd zf;-FeHn&*3CZw@L1OPw)aa#2m{RQdmPP-4D=(XP>hwx@H0u=Ti*dfq^PV^bbyk6y+ z1xnmNaI-<-#0xDysLzXD2<779<Jfc{&g{D~vSayJ&AFsh!l%9d6)49J9!itu!Mkd8 zX4f~6*?-dVd<_c!!-G$6L>-Se;CA^h&STY{6DQ;nb;SdWj`&VS@Ch4mt{MmE2$7KA z?3gh>EN@ORLcEEhfxz;?m!s5u17`Y1k8fH|MO(QvXvFNNbPCxr{GsXJ+*hv$cGn|y z6a>&`DSB<>K@*PxBsevedcVcF^Rr!=kz^B1M1=-USh1ETA2g@7{1-py>}n|61t&V* z1EhRNwD5Kjb6lQ_yTuz?2keIJ8oCV&HvMNgrdCbNB>N~=lf|IHN>~DG@J#8&762v= z2=Nf;GlmNz)gYG-|8fe9TBR}IvoHy0%(SG}&?oFykHH=hFd9I?sZ-Yv-=j4TK{S%( z8fov&eV`7R*FI@t<AohxLynqNSJwH?V2D{}GVc6>7xb?;<PYabn$S&L3Q`}4rH^hE z2|>6Rn2+3L@+d!)>ugy)I!DT)4`b{2TMcLVCziUo%Wgme**eiZ!k-oEx7nE)fAawo z)x(GJBhWR{afQK$teX`n$>WNNZa7ikPlL@Us)KR0>7>?xlaqG2LcpjwiDPObAAq5> z`yg2&VgXLt-A1}G+qgx?R3?-6lR1%j1!nw%@UjD-_Uvu~Qsh`z<WG|QY27&wG1)@U z&4%JVM0|(CN7*dV;56XWDHVZ<KBRaX=}6SLc0MCIrM{QY3uCt-t>?g35rO<&I6>*F zV8#rTa+{Wd_Kl$N6gJpiZ>vOP)0|Zl#imH~S)T2cO+20BG;D_ZI5S{>0kz(@_5OxF zaqIPo2ds6Sr4y#8&_g^5$yYpFu%322orUq)_2uLdjzq$`Gf~kfM8|EDnw)RI=$?cH z9#K+*L`^sj(kmb0E2&O^(ebC?u3#Or_K3#>2C{9`o!@5p(>u~;Jmh)?H$KKG5)|RB zT;{Zd{l?P2^I|4jlxIXpWz8PlzKQF|e|Y`=;11*3ukcNJCIy&STI+fA_0>vr`;9?2 zDq)Sf#hT5h)cMp2jcLMoGGGyZ`|3bIr77oX1*?f9LIhjjB&VP{=C+SuF3T%_l15cg zPfTuS0>oM;{<=0vJtRCz{}$)o4$i!@g(ZkOHZ>q7v5FM+cKIz6)R}T&syA6u#W57i zIz}puXtIkksAwICb@%!rsmbtJ^f`eBqssXdr>t#KME&<HK*w`-Q*j=9J7;f>a&fE# z0=^s$qOwF{wkQ|yCxVv=c<e5hQcUQC0?xx*G3$fXlWbQx53#O=1{~3Ie+2e-969cv z?l5D-Jk@~@%Avxs%vfp|Qi4OLw?5_w7pgioEjKgJ?87~to-%;nDHfl5>a*SQ2|r{= z-wz7wVTbTx(00=j+Qtxc){R<m_n<LnpQ4a}^x8juGpqc<)3fdnG#zgLdk-Kg^^30} zh~4dvsDdhwo1((9rutR%;g;yH1RJF(oR1yz5Fal(?im61fDzX=;W#!}56ms*F>L_& zcN93sSOD0+2kU8a#?q(ElOj7Iq1|ui4A1A~H6d}2flyoXL<8iVB55MA;euKcd1}0c zoB@#P6?$*oZJQ&<%UQPoZAxUd)TAtTBpO4TB}vxk_ra>oaZy;1hiy(u<b*-!NVFOX zjQJYD2)*JCz?x$?2}epfGhViG>;gR=U&2hbPELM?xVwLJwyRZHvtdlzlc${lwrHbK z+qvh*T^gqpu_>>LbXpCo>`Ga1*pdWF&#$1S9$A~&s~|+9AvE&OjksRz>mON}=TOBw zDw3s3gQhO!&q+!j>$5-E*PKks8a8ygjE*(NoJI;Y#cdVad2(tXhH<N`us1rMb{jo( z^4SJvp-N%vIHS*kXTb_pDi(BMIAKqNHnbcg=#m^`-$5I)PV41U56WN6%MElJNg$?1 zR`kVtK;SD*8z{E_-WJAFZl~Sr<sgF9_v?ZJP8{B3Ec027>;Hu-CaphDs&=F=H2w_3 zqF{4(|1;`}3>L&EA~+r-|5c3sT9*~TE30qRr2dqJBpIsN9T%Qb>^))uk+;`qKUaP| zHDqtVh~#nCQ{DdF3mnU~aU*US!bFk+`W7rEA$#J@>aAj12bLfWMQbb+QS>$L1%FhB zEA_C`pN@%?KU2m#*cDVDm`m<243C3tELxJ)l}?yk0P<|rAo4eP6DR&5UCW8mAsip( zAefpdtkR%vX%q?VGTq0niGk3Y$a`mkIL_IKGYg79g?+zBrCfnRRqGx?SI<Ce2~j#x z`F4`rxI%(~Tvq<x=z6aIp#Pc7DEDNLG&_en8e5{zUjHrMP^9{Fq-kXFuL#Fad3GXR zhU&yP-Sr>Jw5}fW!{i$;&DMk~^|WXE)6MdYzk-6Auoi1Nxm<LTeN6yN7J6Ig#k5*} zxJ$h;mU>+okFpker7YYt7JA3dp4Xix`oqvhGx=FlLvPB<6Z|1~i!_o6{xJ`EhCF4Z zy63|1oJ&mH3xU&?&71CX0a3sE=FtT@_ebz|_~w~-ZC_PTdoQjQ1s9qcG1k&m3yL1c z<5QRRtNxHzQutX`rU1=Gx#FN>&s#r4Hk7}Rij%n*H|I$&1?dc1v)oC35<@F~|5aIf z$emZiL*1)ZQ#UQ@7FriA)M0$Y&WXNCS9FF#b9)Y65Jj}ccR_~qiRsuVh)6-QA!LVr z^o+N8>k_}xjJ?Q2#QKiB7BwTu8m3o2pNQ`a!zvjP2*Imo-h#l`K1&LdDUH&=JY!5V ztC~tW9OJE1PyI9B03eB0FKM{pHO^o7<Ot@U_gN&sADPQCOU|Xt+R@K?pUXaIbTor= z()(8jp<ODB-2$M&O0#4L4HfG^uJ!I$!CBsBtMmX{v{vdnkPRw4@|9GZUi1c;o|9Tr z7sTMz{xKUjg)^Xt{VSUBxM=BnJ6sX}tScdM?U$+_>Xx{_{7O6ugtNB9&zE!*h|2av zr1BCW3WT$cB%tCFC5qj1XDZMN`btz>DgRd06~<8Yoi^%1i;h(0MmBb<g(2zk#?qu~ zlld1qL6Q6h%mwp~Oy&gDeT;`}VN~0KJ}JaR&2QQ5H`lxPK=GHJx53vGrLmXSn1uci zqYbOgKAmbzQ9~koqxWQlE5?`Sc@Zru=;#USe5?xzJT9fc$)VxT{mG&v2P@}**G*|e z`rO=P)%@^l3h@tQU-3wWkN0Wcf8*;226V+PKOEE+0|0>T{|`9)r=CsIcAXx@r$q5v z2=y|5X|OmcS(PYLQjm(|H)3rwd@>m_-0o5x@rHiwgzpXmq|CtZXod3v=l1@=HBN3O zA1+4|8&mG3i~uENt2Hi~<T9R}91I2i#xl#1(5=D|{6x+8a^^}0R})o*V7~_^j^bSW zKCqjI>o0WQ$78@%Rgg7Do$f}va|`pgB6&*8KFxh%GwM@$NHmMh1|(?o>x^n^Z<mQB z$tHW3teTvpidV@t`!qhD@>cibMh7iE2f50t)5;prDykq>Fcp68#<S3<Gd}@>RWIsR zMuZ1WwR8FcF~PU-KMBR^gK+v~V#a|ps4E60Bgr5NR3%Z%Z-TXs;{+P03sPb?h`6B% zX>NwU6zjoDTj?Q2bdh`=QuE;iFBQWfksNF^>7G38&*a^14ET)4FgU_cGPMF9^u@zN zlHNFjlejDX?#(ZPkSx&;3W5?mcCrD^jyFREZ}7TJO*}_q-ZDH^(5nC%C|lVJlHATl z<C$$l0Ba258(ZC?g8Ljfkt_<0heT7@SvM1V*;fT1Q__3{%c8x=bQ~ec(E0%nlN+IB zTVg!$%a(&<yjguowO^KOj0ZSs#M}U1q=2hBruvugem0f`TPGWsXF8lAFAtIR<ylKj zAnaFhDlDFd;4Jl~`?-c5aYQ^D*hj*VF!0nS=^~HaR<!6rQOCFE)v3o&IahEAS}^9h z)%?Zy_Vce%45e*v8k^$z?dH+_Qd>1%lC}|)$N<xkCrr-s!V7q=f?pU|wN&sy>u8E; zSAk={r_Zvh%=#uABhV7gme1YBeJ;nrG-6~A-XJ2D$Jpj`K=c7u&woBX0mYNcK{N`) z4Gl!%%~`Mp75F?6>=)jaTgQl-|KO2QhN?vJ<XCYD1YEGIo_P5vOfRHuDDlBuJXmVI z#tw~LgJkwv4*6h~m^qWce*hOu8^ym*07WU`9EdEP>$v7J^L88{LVV`nIMMlyaxW@$ z<&d{M**>AZVTQlS8xY)p^&<4=BR9duO9tCZvUs=Tnh{}(DJzC;_=9@PJGrnjGiEK} zL6`LO$nE2M{=vnqyGLJc@L;3uEmr>8HnXxNs|)k%A*+ih0xvyrT{JHF@zc`jp^Y5? z6AxB8U+4h@^X_S{!K)8C0GvdP3ae_=;jY%ZZ_uyyrPoM->T6dFaJ=W=Tq@0NKv4e4 zc}f18Bm7UwtNnkZyz5J{P)lkSpWml?*w`QmaX}Y#Oo+t!cf4`%sv?1;hGpgt%jp2d z8xj6>(Um3au0%B)e1F13X9NyLe(ysa%A~AF*;^E01YDXrNHsDGsIb)|OT0}nRd<26 z(k(xVt&*O4#OWt=XJoqJo1`IsQ3EzIS!k%~4}RRD^Zw6;{imu0>pvG}ZlP=IU}WrI zZ1iu0mmon8=<iQVV@Ci0Apd`z_rHGPe~4MsHf%OT5xk$(U{LsLAwn6;H{}Q5V@S~( z4K-@hdL0l^EFDnmipBNYEH2SLpQou)(VDa>VP;2eM0O|BC#H|6S)2$oN=R?Snl(&u z4EoX!N$JUzNXgrR3;_F%&IL)dZa}^$9YELz0`q|nGVj%$T(CcrzMd+VJMI(;?o={H z*2wl|Bgu~YqB|~FgjY-(%p4*a`SBwK`TNn$X%~n}fA1a3<&J&>M(7RAf7sdGJOl0` z2hANGk6mJ8+=ouFCG=9b{px6^6X2j_g-?5@z`<^hWImW%$Osfc=l_h0VSLxxw>Jh< ztbK7s(6SMRvyWFEQCk)g`}6~5v&;$9a`>$WqvsCf8=>q#n!v4N8XOcPA$qoMGKRSf zGmm3gYvANlg{fMuPo~^Of5ZKKL$AZQ2jkI4x_P3ysYK-=mSj1qniV0o$DX2iLXeFw zW*qt>_gb+t`@cAQ=jck-?F%%vZCf4N?l>LWwr$(C?G8HXm>t{c*j6X$<n2DV_nvdl zeeXBkA2n*%$gVxcSE*XH=2~;k#Z;cu6~raOBqHS?BRjOJ80p8Dz<j1yu_})exk=qv zM03^`JSfc;UB8-)@{%Z>jlNCBfPt@bevnvFGSJA-(8h29j*$$rF_XgZwy32!0m=og z-2gAAB%#LXWJ&rID>1@R1&Nm?a^ZWrNCtU9b%ROKgX_$?vNSQ2TF0`&vkK}`aeSx0 zYu2ET(!o4b5p6=8d#3n&@4EW>urQ{@HU%rdS&{0PfG*RQ^EjSWM+x7%jwU19n`4)m z9%w<%n7*5Bw!-FRU9w1#F@7;!buoR-vfl+JYk6NiQs}$@g5rF4vCPId75{QWhNZPV zl5kQ0Ax&17zI>F?ZV9PG5g&WuR0UcTy+2$nSlBGsWm64f6bk)eGK%+uO-l_AQKvYJ z9Vz{Ec|08~M-?o_t-|#i%Y3Jc<<T%NvV8D|4k2nAZJ6S>S&$rhaNzv=a&2_iBUU@m zN{&si#Hd+1MZqR#m~O5F*J~B>2WK?x(%rhJ3(vPT7_K_<XP?TgEn9lt62GPTD>&Hu zw@sVnry8o1z5bV)ltlMots+I*>2ecRX5k;)KNVv#UJj7Ux*f>$2)9N0hpbl8!*1@8 zGZS8Ogr5!)yl;VSH5=KO5Q3{3Zgr+Lkx?q`^3Jn^p1a!+DJL$YN>OPCAFbq7$zw89 z9DXG3oREu6RJppnB&)q7XM&t_Pq?X?Oqe_v(>^qwu<~fQpyO+(&_Az4tujyf_2X0< zfzDw*y%S$rz2T(G5KbRa3p>()IHG-@H-cW!kDVgH`NrQDXFm~lMVjxh@D(n{Elf_< ze0cE6&stpRhY?G+(&los56h(+!JdcP(R?twnJ-E#bOrv=d#AhJYtj2fQLb&O-@jta z?=|>LgT>oYK#Y(C^eg_)u>#PkP*R0+fM#K3H8l1Ik|%lqF$5=ifZQP=k^|mRrs6># zgB+CrcHl=k6dH^wFl7XF087S)E&<JF73o(t`!oR_@U8&FRP+saQXE7^0qz!-%N1Lw zIniv3!Yn=~T7jvJ6Lf$V>eQbv*cYUPQ1F;TL303DxXRz0C!h8_!JJCYe+OKUjnH4c z7g+}N^9w|#4r6Q2y1(@!Fi$u>BhDTKV`w|@g6-dOJ@`rpXJ9~F<OlQ{X#cNq@sB)D z^*=fd?Un8#t&+v)WF^9Z0J9p;a^(zTpw?LYKRXS{YH580o)w-=!&~2;aN~aY=6-KT z;sW^Qa>NL;+hqf}1xx>!XBAKG*a;g$i%cnW@JXrNP((*!pAL`~laHjdcjiu^3za66 zAr;S7KRguYc6mg3WX_t}eZ##*63!zCaTW@+s?N6i+G;)br1GX&p*?^5BU*(4lX+jf zIrmF7#%+dWZ>3)HiE6>8npdH^ZX|BFQtzEJ@lL5SOFr>CQAzplrd|Cmj^JdfG$iaP zurps|-EFAAtUf`^P_#BTf#pqG5JiZqI-JqZaR<Qf>OXs>P%OZICN$5I+N0T<WtE$P z2m~)c#rc|@YcmLK<Q?&<3CQMpN<{lp9|-_9y1og*DCQ7}mi7(X02^JrZ$O`!W2_$x zpyaAv+?$AU<3yXBezVav6-9ykWuuGptIeSOTbrTD69os@<YEG^4MCpN-WG8cCK*F_ z&mPHZ%VJG5No(7GAei^)Hyhn-Zhvdc@m+w8Zif$&aWnn*AIqqx?iICl6%u~pCLA%| z)@KTGe0|T$u#$7EpW%r3Es(@=e0ye~tFbw!o{&nOs2W<1)f2BOP;bK}WBnT8o%Cso z;Bk0%3fJ@7DT^tL#>#a`4w*pZZ78Cj8wUF+;x3k>F-jGEJMe;&sM~xLNa7JX3%jN+ zzv9=sttJZ)E^!k(Ha(2q_Aw00zKM{O<?{?=D0V-izM#za!$H;s3>Kg&gk5^skv?D} z?BI-X!7OR3_X&hozVMHI$eAV`i+dl0$crd(llkc-eC#98mAdvRzm=>J5iUFsktVSy zL%-lzhWxr^kXY`Xy0A{nS?xLUlE$Y*<m*e2q~5I0bQrXp<T`M3<rzGsIz!c3!|5;g z-08GzADRQL<wxaj_|mK%zq{w^9nAgVp34Pr&n@uetA^aG-hH73uG|+6quQ|?>M}8u zQO`DQuHAoQ`k`0y4)SL){`aV%&|r)CE9II7Z2zF2|94vP;m?FiB}NFgj}b0p>Oc)_ z-Jqy?Glbya$hf{=A7-=IRgor(zTwReFwx_R$iv&i!|II6@XlOVpKv)tQXM8>F|HSW zK%u3k9hzyXlKLTM%!-;LiDZRR>lOR31lVVG|61V;r)K@<*%!)Eg39)p9I07>iDG!* z?HfmtuOTXla+fSJv%h?FPno~*0eo~_iEh(B@f!N-^l|*Ttp859{((kp<6`Y>0hp5a z%M<wTG~yhGH<tmx)#w5KN2SAGPyO`+OuzcQI@3HbeS&D<(~7OzAS9Ym4YNa{D9A!g z@kEv-`e40?;SVdpT~_ws8j&F-Aw1JB={&|)z2Cbt$ZkJ&r3SMs*`y`cVu>>bKn*bh zK?)y<^hN)m``(J49yEU4cS2gFwnCpyGFcyx>@(H?D$UuOaQjIwwQ=aAZp`?i=*EER zFqN%Es*c(VUmqTGxx%mx`|#0TWpMKoy}2+Zw<)t1m?PoJ6r)P^hezk`boqlUje8e% zGOs7l+?3CSh?@>qFPGhSe{)t)N5DAD1Y8H>|Lb*N{&gMx^KBwQ!~nhnLo^AtgGZGE zH6SLa4LtxOcm{$_8!$`M12=#yXbrV5LDB#kzYGVjl=Bmt=%571fhIWzW}g<w0S)O8 z)PX>G9jfwP0F9C88haWD6|MhuV7h)3+nAD68IEDnzxq8C@L~ZiK@>cO{QboObPVbW z2M7HCmD!6Bc~0yOtS|vdq-qZ~^S3vM9^Z3GI$(AGqrLXm|MI_Y{eRm>FaKd5ohViC zn|*Y;6cL+r=G)hb{7>r3_@<ka1dymqp30)VO7%22)z~8El#P>M<uAIt*jjFLDu+VJ z^oL=rGe=zJuh6GoKs=J}??2^mQ<n~kNl!)}Pr%8pjS3n65Kyp}1+&+y_QEqr+pj3- zp?fD=+FeuEKXwoSF*lp1RW#^xT+g)o^WOjcksd3Hx{8DV0x|*=LjHlc@YkjN<>)u) zpnfX9CW-W(`_)jC91Iz={<vc)i4#TcJ2J`6r~Jyw!OeITe4a)Q_~YZZ$E=kwBOYl> zm7mK$QPP)U%}fFFh+k}=C`cgRMoOE~gTi+`7+5Gg5TaOLXc8gSp|}G4!zf80GKA9| zjQgDlqyuQ^&HL$688Mhn_5zRSz8~|(rQsW2wB|-IiF(ta5cH-+&0MFQZmOKF&>0~r zLBOVxe;$=1b95!VZM}M($V%&|-wKT*iI@dnP1fMl!bm)Judco!L)pa`bNLV_(L1AZ zh0%(EqVuWNd9P@`gVKOEj?)^vYxm8>tWkwT2QMaY6MfeFt3#%RK#3&kIs^pa<P<H% zo2c4!$mCv~D(s;Cm}q0u+H)&-+r!!kWWNK~F7ybr8WV7;X#EISXtZQvSQBRo64Pk7 zjSEG#7%yl-KBkg50oG*q^EqPRra)KK;q?CFE##mF;${cUWqY3692W$#2Y`7^5eGSr z4GCF?=!z`w1LHlyq?LRQjrf&jiiP1&17u5`_i!(@C4dHPNoec#H7CcuukqnxvD}Y| z_fqJQiWBEPu!fJBQ(s9=h+GLzB-;T!D0@7XO;u-cIR>(o0FIAU#I?OL(b41(cN`2| zw$>3~b$wjFuWgf(hj6FP8E|PK%$6e!H79DQ8-U7%&(W%SPlfSi07=e0R10iGibclW z$%;amHb{60Z3UdS!AVBJ$twM$4;ZaDafbY5!-=c=VZq!wmMIv1n<=(?$Hc+|$6h+h zcbEDY>vNm<69wq$K4z?t<zhx59lBzL(v{h+-j*7Gb%c#edUo~>)p@s7#vD8;gUX#L zUB6~3@0>|k&Nah#E695USSi9b!-~0((E0<HpOuA4WMp&V4%VkMmgzs*rGLUcsH1uy zb~_%cbGW1mzTY7>g*i^4=iD!ZzL2YuHJdd<-*+m#78Nv}P@|zx1Q-~(D{Qjz&^cdB z+c>J&MD?cZ4Qt$<U)$$<Hc8bE-_7ICRZeF}kFcbmAE&}IO6>~DjDznUEs%m8lAX9& z30Lxy?}$sfv>xmu6=jZe3>1j@h%WrHf2Z36Yt5FuRf+mAc9=fwa4%h*0ER4!tqD6N zf0WHOSHYF`j$an8j7~03Z84NNw7thEo7h=d(3-HHKqb|{Ix#dM1*VLL%0NKzXpvgy zvpu>^5<}zRO2#co9tC-O484kz?|vcdO?&5tVj`XR&5ulU>#UJA(>PP*w&KXQ3c<l* zRitG04$q$BDCN+<vAC(pZjIsC_!F%Ivs|8GHs4@<^C^34ghxw+MQnAJnOtR(1!D1< zhR(QLZiObL{8CC%v#Km^iR%8H5tHLExmf>gUA|q`m@|+A(-78cy@)>cSMC<!VTZ^g z$6X)Kw;wtY_F9y1Y(k0(&)Y0HL9vHlr-fU=N0CB9uOgvT$LB~sNNeiqNF#R!P4-Gn z=xu$A*ZrzVO*0$SxcU9rHSE+gOoc;DEplg7{{xVxI5iUzG2(-=w@N&o1<eQ8BLU(0 zdy366{z8iI7V*WFKDoInAm_ARFL0L(8?>$dsjYsYTGm=Vde1d&XLZcx=CTV{xU3i9 z4YqISfmgtFwa=4j`_Jq$B908#;_%co$Libp10tc4!bV1MwxKdX(jz<R5)_6DrJ5bu z_!ER;bXanoI?npLJ)P~`Hb^9DKPj48Pwn5vu04s(^UJUr6(a2po})`7$l%;NS?v&K zXzti6c?Q+a`V2{?W2Z@7C$IT2EtHZWlov0t*=rYtbNd2Ohl2FR18XMZjMMnBR8ey$ zr$4@Hr^pd2KGQ{IEuyk1XK8qhCGMXTmU*eC%Bi^+=e+1fw?2~#N#bG}xu`^iT$(^~ zY&X8+rjLKy>RC_L1u=bI(jTJGX2|i!p?Pspu0;*?g--E-?G3}&u>HxFPk=KUm6EE~ zKd=_4ym(`2exU`&aCx9MvyQ|YHA>~6p3ru^guJ3BvX>Vi@Rg}_gB=rpQOqXNCP~gp zT`gK;pTgo2Ya)wG*ebxbvgCM4Ty0kgf5TeJCWZjw9H7>-@VR+iDh<7Zy^+%~L~KFe zw$ruKkccjlAhZ?lRr#W~h@L}_s-|P>!Wz5FdU*dMALh18DD8nxj9j6v_HIN*zd#v- zRc;$9LCyo8+5v{EFTjXEF51oJ#awS)AGMay<?>4ghd<x65@pvd2EvJwrK~d3zJ=Sw zDI<aZyXJu+0lDO%-(TNqr6Z2zApe_U_LukAhrb;CGsUcP%{D=@Dlr)bK+Lv2E|?t) z2JUn@8*x=%9`@TBEeiNtVu0AC+!ga1@{{N1im6H&M@S_?M_*^98EkX_T1QqIJ1k`? z^``Ny6fW^pWvgYljp3>E?h9Sb`!tib1Ifvq7Zo$J3OW~#1i3gGkubHvx8FsTI^Oms zr5)VHKR0j0SOk}xFtFuowN`rFq1%+XpxLC!S(Ty{qV&?KQV#G8D_>%uF<bE5c%FTZ zQUoP-j+gfs@E|`n;a@spDKryqhr!H3U%eKJ*R6>Jj7<?tYxy3NfK-jX2h;kAR{9D% z=Oxj64`W~M3p==V`qQnz#|-VMrQA9jnuOYTt2s_y9GC-0p(9>?Ua5U(N4zixn_8iE z#u8Bx8c#_6{n(2V6iQA1Vw}=tC&Xf1L`)#f4Dp61Mv$_N7vCllh89Kiv@wzB$Q$}_ zGK5?Ms8v=H2H?wb*#KnJ?xtsyOn#HOEOLANv(W8XgwOl5^y`d7s9sy=%YPuhZ*W-s z#!!wQ@daC|?%x77S~f<(H1MU{2qp(8^lA?+PG<EC)?|zDxH^)R(&~XHL1tOu>3zao zGes56ww>TWtbiv;bw%k{BfIdq6Uf?5miZ_Wchgn^$m<6zf`%eE1#CWTV17!1Hc_ri zxD5`dYJm;CT|VfI4>Pk43AM=X-azOZ#VZ9>=u1QB%<rPT_zG(8%AG85!NCpe*ztIM z-{%y&_9`JdDdZN>l+XKv!WF#@fyS5sz%Mh)Z=Cvt{E(R)WcSZPtZL}Kn-tdaA&R9> z9ub@mUk*aVMKpKFzrP3{>*#qFCI3QxjzGU7zugf1fah=I4s$z5DbHv#X(Z3u&y@h= z*IZrq3;FT-F#2OldVdd);`Zu?ZW%vuIX_jDu0J})y!;dSndM&XfBDjh6tBzQB~MB_ z61^JPAbo_|C3x>C*_99#dq|EmPX*3oFuRxGH9inrU;fFEL#pl-MEl_VU-hE@hDbz! zO!#l(!~cAQ?Cq>Q%<OFcj*^_fnx!28$Y2C8Pzs>8{Qo>#5-^wi*Ut#q8p|6w|N8g~ zEu<v=HfSo87IBxh5Ehe!gfv%wXEKIf(Vny&Nztv4MA+LO=ERcW`zDJ!NZgLlyn4!W z)G-=g@avVL%7)I*bic)=Sl8IwP9@R>hTFbumey~eb4Io4vJ^%S8D`M}OdPg4q0a<H zb>G-dc+NKZ+gr`GJqbT9=*z|Dkr0r4y58h-^1)70@)(96;QO|gwd1v{;S*liJ~-12 z{lz;r!%Q`U;#dbaSz(ZmM|qQ_Z07MBBgK!BQyzT=NuMj9LWiwI3ZE_J6uT-V;XyOC zP0FrNYJT}<tau`ZFPaBY^fe;WoaGwehlD~!c`q=L6KkvPUH5S3F>L!Ar#+q4fzX2K zb^#w5!Apfe9U#61vd8mHpz^d{-VMJRz70<(hFHdW2D;aDu`TdiIeu;x>X*tVrq5@O zYs%l!^nOO@_XSVOk{2_i1G?2UeuuL;?cV*dBFwO>;_FFRGW<e*m|;d85vE))-}<=4 z`#|ffRsFY^nlp84_zU7K0=9oB8UEKT@Gl(nzk4n&IcSwW^PbCF@{nstARi@#AC@!1 zXNpK*asyRn^hdEQ1>#*O1Xo%L&8+t;sV8$rtR@j*3ulz3pI8>1z;7tVPfIx2KEX9b zrDhXf>UI%QmY;~bl6-v6iMAr~f3e=!h3X*Fkz<ybm3KnlnuBwS%Odx86^|LGflC)? z{r<PvK+r6n>-GRe@RBGH5bOWpCjI+@f5Ss~R!+Mu*ByS~2i!>w_!{iQKU``Bo~-o> z_a@7}D9t_D@?vKO(#cWJ5>vlq%lL}D1a(AV0;A+p9j=<LI`Z=2zVsM2EbE++Y-~^@ zd1xa&aA~hoMh|>!q#NU<(-2A(%ic_YjvCUq5gm&b<pKqwCS-9$6miqQp};lHdQB{; zK0@6d7@?btN{oxAk{)N2gZ(s+H;QKp6j&(H=PV`FLx)8qgYFZ8Poo`+T}l=u^@>X2 zK4nTL@iG35gifT`H)lVpo@|S5ms%!ozh|32cFbf_l6^P5#}i|V-ay46^+7UQeAF@0 zO1g<!1cP&iE*k4&T9j5QrVrNo#`05AkMZ8%-i`NNt$?2aTo>O9;}>s4BV)HLc^;D{ z&OvPZ)vB+Z9{nCYNE$uu?5*s+8$?&Y4}%@Ih)GS4Noi8l0x5Knb8ULQ3;_@g;%Z6b zb_`pHqeo!Wso=Y~jAk=il9T!l)E-bt<Yy>yhKkztYy0@I@k%J!%k_lfgJLb6Au;^q zUTn*!oCZl{UgBUfK;PZ8UlypKjt)#&5pU0HFw^?fbrW01i=$_(KXXB8xzFs*Ka`dG zku4d&7E-bXa0iKPGXU&K@B+=jmndRo48nTzQ5N0mt$f$^n4=H+GBNZA$BLo)4J=?8 zrDqbfP%z1}0@)6#r)+q}%k+KGNr`PGY>6NfiIq@xzk@8+m#kZ21#;gg-b!haXI1+x zQ3{Yu5u#BopHwz{oz#GV03W6q1_cIDSpz~bBU0N;K<A8{;bGP)MJ52@Jd$5Y<P8)- ze%)_4ACalMd59P=A;w&DQ0bswe5~PhG&{b_xubpjxMErF!>algFo=QNhRj%Ik=<1O z?S}HvS+8Pl&+rvppinNHKVOS7w6(3Xefn_ySYY}9^p50f@wY1yf7r6e-34;&FpoBU z@+bCBkBo!?s@YyYa}tA4h2C%^2Ul#Tb?7m78=sDi^k>0?Q02l(8Q{?-$C+dNbY0gx z*S(#`L%12+KHI*?X_M$uSR252NI_7-7cXtU*c9u(!&ZZejA3dFA7zt|u3a?+1oCIv zBhOW%Z5GSjZ#0#6>xEg;1VR%NHX26^`=WeECI(jdN?^n<Xqg}<fys8jj<QT6EzLTP zQLK1PGfIS|nSJtI&i33RwN%EPTx}gRnigYg!mjC+UOhKy4$>ZcWGGWk;v>E;6WP~M zl3a6doOSzZy^quVd3-l(5&V61V!4JP69lbE%(UMx#|}hwN#uf~+4NK690od%#PrBq zuAIgTk&++@K#)s0f#}9C9<gmH;sZz{q`ut{weBW;RI1S$1}jUl>=NenwUmPfPaP7f z#PAfiZ8G78?^V1>8A#v0-Wu~5AvK_JK@9Y73iFQZO#lZ~NDM69gA$N77z;{-y3KfU zYg#@@QXJF4uEZH68s-}ec*j1wW|e=H8|C%ZCyL0#<8rbb6X6r3Ly}~%r(V^>Si0YW zd{-}MRy$_(o1F~pASt2DZC|d;3<FPy()MRXXRSQ@B0tF<9F0H)Lw*B0QUqJWRUs>q zkqGXl_{qcjVS4nQiQ#bX6En1b44K+9Zb5(51sb1$H#|!`o(B#Y*VRHM^MhnUv!xyi z4vx^`*`W#CG1HiuYaymr8&|xC(&<|PZuxnhOcL>QrbT1@P@1uz@+@!!nDu>_*T{oe zgN&C__&8AlV>TPVK}x--q^NtTc75a2?H9AgK2hA1G~@4R?BEOxD=eHs818w-Ch`X( z+lb9;n!7=?D<W8wyrACUBD>wK2av0#<m!8H%;%gkjUBbbZO`jJa>g>VHL~SmycJSX zp0>v%IKR{2+Jk(x0`=X3U=?Y@6@sv%tcO{(%@Av|)v7}-$uYm@JQsBwEK?O7C$Ae) z4%-TeaPwViOF^#|c}f}M&h@|ssw4UU3WJ?JKe#gBfEypN{t(yKP;#b-;4|Ce?PO@6 z+iK{jZ2VwxIW$sMTa^HcO1&*IF9?$<c{e1vRaceZgK9CoO(q^nF<VbOS0C}&&uA}a zX(60#BcO0j5>mEUgsnIMA!`nwjT67(UR81!9vzP(0R&K-%di{}gt4`xK_X>G>8hv@ zjNW!mWs24r%FoVb&2CutqF+_NXwtn`zo<|kB%CEq$4a41$xc$Tn8tE}FQXm2ELdx> zowGq(!l(Xxda%PzT^iq>91W`vue}60<f&id6jKp7GJWpVO*gkHp(QjWw$Dzs`XP~V zs=tgtRBWUP#$JZxXYHX>Hn6GbgIKXcNsXDz+9J4+dMJpmBbUWKi>paHL-2r<eu~A| zM;Yd|E_I}HrA#7AZfIEM`q(6JoJ_N+z%#9~6%dWL-azxRX)yeZx4u9;E!`Pi1_4b- z2C?#@ZsFef3VolQtaxBygq%J&@^a`EiIIe)Bf-GTc#&W{o`_hoa%irD@l7Yi89s2U zz+?%{f|>v&t>kBHCl~MlrQCu*HX&_;fVEgev}))b8rbYqnK-~FZq*C5+V11@fqSvG zNW9sG#H}h+cG`Oz9O==M$yz+Hy8I3#NierJt+xLBCC#hx$|K%m%j=eOGqYIK{c*4l z73$~;Y%v61<n5Dk8%=Brg}d`MsWDz7gVbN2#}vPtdWXf{@b?eJq$^^$is4Gk3|S;Q z8K}%jvPF)Vu0vXwdbDg)fXKlxWWRE>57I&}!bk@2(Oi{ydoqxIh#x*?jdiz@Jyq86 zNAEhxbl`I{2nvr>XFg40@gN6X)l<*4h!j>fx;mM-^tULL#OHxnat??!yn|+xUBM@7 zMZD=#v#6O|AEmcVcCk)Ec5~I`*uf3)E56Z;YpJ?*Y_Q?w&(d_--ewaM7c81KN$+I2 zq4^H0mKO`z$&r6sxvd@LIn*p?D$0KCweBXnAyrK__#@bF$NA0P0)|4Q^m`$l`814; zs2nVJd6*<Dw{mtzxO~@6l=*4ORX)D=G6F_{8|9V1*z3l1joyHMj#IVzPEW^xpmkrY zd=jvYo*1J#Frj4|3fef?ItaYQck8c-_eLvs-f(#%Mchf&mhDH$5|RraKX}UO4Pj0Z zq$`559yRk&!KQvY`-}q3ac>b}WGnu3nb)9*KCI{0MSit!SW|RI9Xs(l+<Pi`1M|?% zT;yvSkPPRG>uSQ`KEwxf@wm({sApU#zpi`Dt7TZe&rnzMv-7;tK5Jni1KT~s=rF}l z?1Ct9MpGqd7u(%Yw@aeWF_&dgn2rJWRlE^e?n)ayM(?BY1$t|x)K4P{Yc|?-a3=-e z-JJ8}(RCql)j?noAFML0d|q@HIMti$$US|9x=%li0Mp+K2XzzWlfgK~zM*>*IbT%j zsD(IHMe3w9z-s8{-mF$o$=HpybK37Tpnl#wlno2LSXf~_z0GH6(_$aLjcjA=YuMXu z?UJ2AoQp#{DVVS7rx|#q(ZIrQj;Q3Y!_YbjJlQ5&w+}~*>*O&lg)FYGydRTZX*FUc zww*C-gA@-oPDde^=W~z}c7*gRjp1vG8CUjP_!!YAyb9u{yWpt3-l4V+);?hpImy?| z?xjT(l!+tTILTwS58-%7_4?}Cn3!xA^ihhff(`*$Hyit_ms89Fwyrq&320K=rwvPI z&Bi4f0;(@j&)QHf=#J>dxC!%7#vUFYQm4i`P^x(XW{*;N*&9(z7+#7I7}M5(G{>zw zSR=!9+r_B-m<WCzoB8f6<avTFtMN3i-6Rj<l3Uz<l-d0OQ&SPMRrW(G?2zxJXX-lG z1mE(K7DG!lCyXbzah~Z~XYx`fDV#yiT9&F}<`$XxG;5dvF|^q&gpc&TXRqMevS8c` zyf#xwT5ZjA?Clj3mTV4LC>E`dwf<%TB*hK`;fw<|Y$z!t;Biz~pI?J9DdEFUfb?!U z&HXc@RCBadH(GgOd}gHyb!oK}!~}Ykei<?vqT9}>TBDLF&sE$94F?xU8@^^<g!~W0 zWPVnit_b1Y$w%Jt%QeR`YOFb3_RZt(MY3jFV_#0)#kW=_COm3YjcCR-%Y0tz&Uw7F zM$c#3PCk;>&bXEitjLs3v^c?1NQjwsj)df`xUoruQ8?y@A;RtT#K_!V6$EI<Ajs?m zBssB3$?g>>9TebtY$eN)UTPUCFGC)*4e{H<`Wz(};lRu6k(S{t9OXuMpP}t8$KZ`@ zFng^Wl#`1iaVAVCn&gls^oknvUG|}3_zVoE8QnlNRO!D?s7sPuX<iAa+YLp1_KvHS zo-^}rk3QgYU>O1veS5^BMs<jEV|`lV;c+adY+7c~GZ{6qXlkcrPj%I}2jZi*p~>3* zEG^wp*mfaVAOf8>Qi@b%TnQ^zBi--fqhAfVt~<1{SUa6#3la2_r1LTLI3=jIvWS~a zd!wRM{AZ4t>BM4wm6B{%j^)XvvXWg{<}=U2{8~lnn;hG{Yh}gP|NIk9&Ivk>Yjb6V zwF*baq;gB;#w?s2uk=+*Wksus?9Up@6C0JeR8_Y7)?Z)g;2u+EE7Uolz@4%6!u13k zu@@rhgt;sPuv#uG9RKtq{PFH%e51D}@xUHRT>*)`d(zy<v>vX&-oULjWdT<OwSSCL z$+!>R`aq`Ac@t<NF}tCm5@1Dn)FP^Pt8Uu4iBK!!s5QW=2`r!sjHr6-9+GHs=r&B% z_d3Jfs#j<s?O~Mce7cIj?PN91x)iCCBw(1<EPboMWd4A}!-0qnTNKvTXl%xgXk|L5 zRpn70?k9nm@Mh)}Ucj%yruD?ZfxPC<>DJ&_+kSO+nUggXjqfJL%UHRX<2D&dEXoQ3 zc{SG+COPp?^yRn~qws-rD6CqAV!edrNTLx>X=x~@Wuq4CR4)H+?-Fix>EYQCSI{cM z>Whwj8(mIjnp=Z}V7S&^&Bw8KEx7RPuQso!f314PC@Qx?1FD`10HO=W{~rYV2kGT+ z@>*%>1W8)S{69!9pP3DS>;OGIe2j<dEw>vgq;|B2Y3YS5vzrNy-0P<#r7o@ZGh^US zioLQ$@e{a|J@`xo-ljODW0b$KUev^PFW7Z_^2aEx^MC#}Ejp-ZuEL#3+e04*d1s)# zjd8Xj40AKfnm_KBx_00`qm%$tzJ5W*-lUrP;%f_l`C@`OUgB8fnnS&{H=gmSL2*Rc zR?2m#GP(9N4PdsfR{N%}tOtd!KoiG_{9)na=9+Wms*$LCh%-74F6`2^YyHSLiJ{UL zpq#Z(wJ_m&3KJxpFTp0z{3R@UC^6{b>(EOS0q{nC4_-MG3-`^3R)8tI>LV!@*}3pw zw?RbCxp}$d?jW(ZjJ1Pol9&|9=8~e9y_D-S$7qIyT#}Urfi{nVCky%r`6(90P4Xi4 znj3a8<PHr<G#v^AhROpRl!=^eVZi2d;g--Rv8!lwJAs7Nxxwx7E5!{!wLx{noUM>H zKcrwe;5fs5&OX}|j`G>}^ab-`{XRmP+kb&UZ5Yy3)AfaD#8Rv8-kyTpyP~$NLfS9X z2EcvU18`q-`kpyq)k`hRk45fE<j`E6`G<+>54L%Cg|x-<4DGUF$)RJpUE{*{+y&O^ zfm&Qw^BqWPrCln$06gYWcU)EV+jKw)6ctbc-2s$9y{toF=cu}Vl|bPre10o|(s=3p zCb9iY?Z<EH46^5Xxw{*(fzx_Qh{6TBK|Gm#bDy)EmXBe~*#>WokQ2z=xg~+yFlCRV zrZ%bAb});wDWp7cs}OmdOfciy`GMVCrh47zc?(tQvg3F`TR31dafF|d2!_90GWH-4 z{DdWGKsHh&`9$g0=;+!z^evTV2E^Yqw%2z;gr!8+IgpkcD-e{+zsN6E0P@QWDC65h zMY^5AmJ*X2@Aq*hCwF2Zi|$VOB9)$BB~aKSWIl;|&s85^GyEy7aRoNa;E>MKv<p5| zqrO7pQx~?!IKP0kyMJkH|GNZ=`QJ~M-S36Uzj1OMBesl^0biZ~Z2#c6_vcCfs+Gn3 zn=_F9FV4X4Bd60-1=rx2-oDo4f5KYE-<+Hz;7Mad&O{;!Ig)i$cZf|b-Il;Cu+-wR z@1E35JCwtSK?)NaT`~Lo#F7he+*4Y(|CIYV(Krd)JhXkLGKub`NP8Ix=;DI_e{8+c z$_<Z1st?1`{#uHWP}@h4<(UkRkAu)rzOY+=jWPVuUp@l?2G3a#{UZhF&jtOl|5X!9 z(KrRzdZGY00)ZpI8v`ym+&=W|ONg>bbe&lgLOUBVxO527q7nn6h4OK27lrRH6G6pP z8jeZ@=5&snc$2#vEc3mBGN?LG_hJmG6)4=YRfXS7Dqs@QQ>bFX9l`5_BkL%X3`@qr zd@;GbBo|__!b?6bAyOn&gezyp2DeG2&?S#7Xz#am%OrCql%SbW=#6}O)jU>@_%iCy z9Brgysae~^h1|1-q+9qo(g2ld2~h=MHW|7)#-%}KU(=YPbfU@9q0W&Aw|A{~a`LNt z4ob(|TwKz)Vk0h`&$B%XUsouT17pumvFZcv{-41aQBeYuQxTAG5h3#{n{Sf>JRk)5 z{9j((S$^8{{Tvi637&f^Q%;z?D}VjeheDRAEhF#8*X2tuH}7-rPrB2EMaXvemW@VP z+78M074w6ZlNq<l-2JDB*e|0AP=rY3G|DnVAC>R)rd>4lGr|RF!E*vCju6d{9V?ib z`|%!-n4<=1mh?a2WmcMJ;7rr0LzQi0ijHEPVPXwVs$ZZYp}Kf8VaFjpJ`{=`1pVBQ zR-L-Am$2rIJy88Nuy7GS<q$|gbV_qg<wP&U1&$3Vp-_$>hd<>%$&OOSEVZnNxjmep zPz|O81Kuxh0@kfxLM>Vu1(-Zpj^{3KFu#|dLU?FARk8v%qH?rTVVzwws-qHA0`Fhu zxT;hXme3Z`HJBIM@9szTCZ+tKOn|n8<w*5u*BpY(tC4EkElHZGt`W+o3M;a?0!Vvy z9&}iVtG8Ac|Iw;oywB3)P80!BD|><a&O9SkE5}n5AqJ7t1sT{skZ_1wP0`}U<&j`Y zd&G^&SDbT}Ygf_uovNp7E-H!Wj<~*1`2fb~?sm{ZpNdurvD{}u8OTzQRVb|nbwHsS zEo-z4Tn@aCxxoYIwU;<TBwfu;?@d{uT~aw46u$tue|#he_U*du5gTO1U`K065b5~r zF4Acd;-^@18xb7Xa~|JMa1T&%Bk?45n3|p<1d6f>O*FXeESZxa8X_ePjp%kTt|Y~; zL{6Enu|!F6`6Kc-ux4OWV9GxrNrbarTM0?ue}3F!Dx)Q~mEm51eZ423=dvs-$ECt) zba$LJc2g2Q2_K2Y1<?-hGTlF{ruWY|(q*NNRRYDXv%n)*W9(azNHPgI8Y?%$%<I7n z&bl=KWs_2v(I){m7bZ<94GyR_5IU4c!hf$aKEWff%1w#Is%R>`74i|i$9U~fO8_$` z{NzaD8!JRYy;;bt14?P6<{B1$&wBdco-M+36|fDwv#hK^2OP0X-vDtXQcga|NQcDC zd<8tlm1(pUVM3g*7jJZW+jr^`M6w>mwng;iqhm4B1+-+_CJ^0eIY$rk5q%ES&u;;e zhs8?DTV%vSTV(jHPO~AlhkJHw6n<Om7D4r1lMwoc#Zk?+23)1>@}o@iT*FMCWx2Fe zyw>ZwQ_GxZ^uKKK$T7r;!6$QBlni`{C=VX27rA6eRp_2-j_lyPQaYp`b0s(BA^xtG z^U=f)oTDc_1=zulepUnLF6SZxKHetd{WFz;v<_L!1r%Xu>jglYIQ(<W2s}g60X}k& zFxkq(hnHcid{5Qa>v&NZU00tNK0j7LbsRk969{$kiI1Tqx`6(k$<Wm?C)hYvQ5!~V zSYdgpbns|Bm9J<~$K7f#h+C<!?`Mroq!lduL0e+uWA$|s0%X_8t0hTqD*bmV?9~IB zu-&;$I`k*ZoU_H6tvOP2Qrk=2x2`x`pdj3?X@$~~({nn!AnXrKb+*od6T#C_C8N^N z+@*5Z=ijxiLZ2<IimmK)&unm%_s||AQH5YqbT_SqK-NB`^Pf1%mX%nW(vq4IK2Z=o zjfPd&@%LHYi3=@ixMC+d9+Z021j`{=TS%Wd$!?se9?iKbZ99I$#`GcZ30KsICku!R z7NUJ1LiVagiqk}~>O+I1wmtrI;8-AKnPF4dn6WV)!w-H0zshl>_IMiV^~`Nx!8)I8 zh$whfN%x?W5^e!E$q3p(agz`Q+XN@(pR`6A(MQ+Uoy1_X{$0}JXh1YrX)_h+>H|qV z?&ppMwKo^{1gC12N)qd>p(L6rE6i@SfKnbC6*@k6NHFhd`)^91-8?;l<MWYvm)fy! zFI2@Dd;tfQaiQegoE1DLVcIXGb9AB9Vn4p)9&kB<){=ec!oBU`k!P}1!rSRtRvBmU zHOo!iQHk17nV9?3X?uCI`k?{MZZ)ynLaFmUkg0bqMrX5`YO|S4tpDPNu&h<>>i5g9 z4gE9EKW=?mIC$0EG<R<jw4#sGYqMokR<D#TWX!jqW@9REiXDuGHrRkd2*F#uBi;?v zlTy0ibf$<TM|x#bw^vafhF2SFp@ry0&IYu8KD2;05$f14=nB#r0x3){o-01FTXpK# z*t~V=86}W2v;{0TNTshj*y0%Hj<W?Ob(qa+RFj^at3|}3tO4ft@*waA@xhV{4R}JZ zfse{mc`u*%j1}9a;vq_^SH!Zib1^J1lR4UoukYHN83KK{Nz3eK=7{4~ZIDGWcnIc$ z_Rb1Nz(rTAy-YFdJ<c7ZM<Zi_1z{sk!b6}phB2Q%-%-d}M|eI7ymdHr7lP=^VwMt) z4YRuq?y4b+HBeDdYBOrJ7A9FPGCqN=tB1}yKnNoBSDLIrqdjgWUc-#KFZno3PNriB z*H1Q7`<WSifPEeTwi=66BofFk@@pPaJh@v3KF4X$su}j;#y6d1TX*Nj2QCg%>Tjgk zrToeT)UT4n{*=WIc)JH1Z6)fo73G09;w~=V<p&4+cxgPCE)gK369j**`%o<xyYoM= zhRNL8lzn6~t*#4b2?ga)$f8?9{P?j<ZlUuIQ=MO%st}hmLF$UH93#zHovyLmvxSjh z{a|JJ4zo3AT1E546lU`hJ|r@&7d@^(U~S~0IL<g!4#Q}sndoU-2IYy==7pr!=N3i) zQ2`V!c!_ziCx4MNKc%9=O8D>?BRU*o^4?#JImOad-fInDEx|ivqA0gRqFB^@psSyo z6=KDuo#WefS#^_v3Fqn`qJ2ACE7+arp$&G@oXG{lraw%yhpoZ1w=&ba=ZwMKV9H;h z<Xn&)lUGN>kpmsXjVO+;V=PcG$O8^cLm8xG=fxA2oN64>wgc9q<0C9|&5=-Efb2>S z<j<xxo4Yu1(x_0uv672RaEW@^qHBL|YpUz~w08j!m-ZstbJWL+g6?)S*y)shr#7q8 zb2zqn&}e1+?esa#2XPqBLLl4Yxcmr~;SEoS9#ZM)vT)0j`1HfOPh$+DkQc{lrRovA zy-m3?Ltib!l$m<S{YJz5@+!}1+`6=4-j}3ex62yTnv>~qk9mUo8=G(QjxNb@_dTIB zDj0T_D5(V`ULT6i%q;A~?0DWG|C&FF?*V8hfMgg7AUyd83i+S;qx`?y{{Kl5_9K#m z*g+wZ1KV*XnuOfpE$3xHk`P=;P~ZlVVqukW87d<jm;wffQeuTs<U=gq5y6p~#_$BK z*&&pBfCoV&4Wr@I1^WSN6ECcSn-R-x*PdQTud`Q3N#`JZ&>+z8P(#RaEbg9)$y}h& zjwI;FjDmFVNR5JY_{fz4EU-6JAUH4pyp{$9L;JM^AZZg1o`9A0jyJ$!*Z`pWAFOx& zT+p8h@jvKFG*vpKR?npX!V(4I-avnPK4r}eM*sg1mY_*?u$~p9RdRT}PDFpbewv%N zRVCoj3{+OOA1_B6A40ZQlcCPj8cM&Zcq)KNxs7t#J>b^sD54><E)Swc_o40%s=EDR z%%u6EkIl3*!q3BU^QEJ#O>NK-`%y1E4C%WiGv@lT`=+lAPwMqJJMP2*<uILg=D}g0 zhsOeqwu*I!f(@&d+|QjpYZY3*X)B^&1XAj}whH^DAKEoj;knSq)a%x6ZE}gEB_~{l zP9;b>t07C`!u1#?NH$UxIrLA_lb|12Zz7D!WY)kCWCDL&%4TYRnD))br%5P}w;Jc< z$A-ZOmNVz&;|E|4qik_s0J+HX7rAK63z6R>cB?QE>^E|ex((s)<RXpV$VIIiFN@m9 zQxb)PB{#@LJMOR~5m9bffi2PL(jz<!N^O!*TPr@$G5(DfPSDz6Wyo!xA#EU~U_UsH z3~ajbAk6Gxa1t>Qv)~UgVh3t}!i+z+^Z|ssb7y8D*I|s@IKGCMw9_A%o_A)-uH#h0 zLk#=#q}Kjj{;c#O<3Kw}5Q_8oV0bw_y8bWWh>9_BC{|%|WYBrsOmPu=Pq;kwU@c7C z`3<BD6A%kN#B3P~;`caQ@>uSc90v1oHU#V*&cmvo>)~$i9g*Y?81em40-V2tpZoZ} zpZj;s6}(>8FG44DG|T5=<~ptK3y?S>v`epp?`H`#d=TRM7ViO1hmaF6)_vI(v@9_) zz?STVRNLGbk{1C`mB4(+nF0N!Dgn-mXm*qQ3E&n1R3)lX)YDcdTtE<_y*%in*TVG* zJ_m{J77pP`KH*2w$UY1{hjuhR3)Ndc<%&NX^JDeEk;%E_v!~cN2JSa{>6GzXLSw{v zjjn_lc8B^%4|<zMP)wcgiuvC?Sn$WF85qy2-suSE9f1S9tC;aIb+)$3<!jIii|n(2 zA5$Zs4IE-8+Et&2d;D_VVgG!9{@dZ{A8@t3hogaw#ox8AY@sV$seotjf8gprPx>cZ z{ckQl09T`R4zZ>PTBTwkzIFWzSYtFxr-R@WVo`Y};VniNz@z?{5i9SITgTEeEvhWS zFd6@0tLpfGO#c>*xbELM^6XuSAO+(o#_|K;bn%hC@ih*{HUg+tUf{uN+4#q62Y`sL z%`o0t)x*3^1O3a)-iby|9l`1e;?L{wdmv%RUz5Xy0t6C(&DB3d#y^+z$Nm?xp3snX z!sS5eK2^(4uB00^G`}YHYO2P&lVM7rP8sAx(cu<k$q!%s?jO|~UfO!I)jH$;4OWC_ z)Wl;pzvHVdD~=xMbQXa|wTJk!S^Ek_v}mH@AhYl&W&(5Lt|h#m8LtoUcU7_%wkUF0 z$$>;;K~KBb*v-3<{qw<}J7@hndTU+9xCDsvX5fXF?l|Ng-$t%?P7Gan)Cto<H}f_= z)bjUW0sE)KlbO=y(lC4?Q8j*Bn}9FuM_N(Hb#0e;=OeiSJ%`OC6BU^>>;EoUWzlQh z-S+(Bq(4~uHkkfFOMFCr&)8B%ZhDXgvL8MC<8_smUgO~_IQeQj%?sx^gV-C~gFu3T zEc<Qv5H05fi+D28Os3d7MPh|^DH#frvDy?|jnImG@m$2B@<aQu8%5Nx4{SM$3_AIv zOaizXzc;Su{h=Vi2&slA6xa_*@-psc++1o7U!;MWLv}?da3bywV>ym}JOT*p<icqI zpf7P`Dl?hdj-w>xd)?@JFR@yawgOZ`_m&Ai?oV9HBqZ){G$!kW_eD|_o=Sc7T{dO; z2-3UzncKVDn{a_6n+^D<IGnVNZG1JE<ZmZflG?j(liw-L$Xpht{oACLhXmoYh_KA- zl|v@#EbeTOs}*LJiiXp5dLaDd1yH|6@eXNI-DnN%@Q>yb74&>%q|Q`)y=g`E{Rs;N zg`6b|^VKVXuB}34WY7F+u@sbuIblzdV~mP*eT(+voVzQweI9kCyD?Q_u=QnmaPv&c ze7!9AO5uDaq+?zVB?wgzYuY<DxI!>)rEux(DQrS%22;(8N@l{2I5cF7+|^RQf0LbR z-Qk|+8^IX9$vb3&O3>-X4Bc)W9Mz4CRC^ed3v8u>_a&*Uqbn&%k%(sV9-jhXmDR$j z75%;8kNo;A&P2^>4U47|9m~-`k={TVc{jnpt~IiPrP)6Cq89{Pq`NI+S(Xt$hMcZI z+l1~t=#*4)eGa6Ua;^@#<0L+_k8lV*aVU`#2q40Q-SlDtoQ}tJrG3n)yRteDc4e|T zPI~Lb>+6Ss*-^YP)OW}=z~6hj5m0x3$Y2}VgfZeYW7uSh%@jr@A=%zc(iaaTTR(Cx zM{BD=!{|(zqZ)FUqmnE^hQtm8_30r%`|*)|F2+gKn1zFZRfP+)a{s_9FJdi}L7Xab z%$2@=>uRjWNNf?qEKGym4Mm$=PLi$AkFpVnV@j=-P4Nm#s+?uwnbrFcs2P3FG?Ut8 z6W9ewwVix^_DHE_DL)svxXWQduhpz@{(Wv#$-&yU+ME7onhHKYdfCzN*wU<bOy|jn zFV2D@xQntFzMAs5p7gCsxg1S{98G0XBhB8c+bFuo&LEl_0PkgDGE8Cgz-}C{6*{U2 zMr&<DcOIo*(@#@PxgSGWqz@6f!pIRJ`rLF4pUNT93cO+Oo5-%vv1ij6G$PL3EE(-v zX&4`T(p!_Uyptn!>c1^bmL;Su$3IOG?C&*29A?iQ;tebnbG1Tv1fJWuq8PyoOgJK7 zCNjgGG1HaANoS!!oirx&!R$i$DpPe=6EEVohpe6RfWb>K<u#AS48dYvITXX@s#PJl zEOk9*gkdxs?6QYat5E0ZwX2bxx!rrQpwmbcD0y>ONO+n*G98@NASuYf2BbSz9{s#* z!2&$7$o9>VTb5_=#|cTWHG3JPL2gs{4!rY3u_;WRLNn^11_&vKto9ENbR65&X0~3W zGv!YYE9zM2q_`=iK=-YUif874$s8;y)j19)k)#Y#u!uxQQ)@=l=c2iQNtTVsK!ngT zVDn1a*{qc>iFev;x`JQB){=->Dc|>=E6Dl1P*^Nx!bsiFK<oy8l*>N>RXWM)xqMDs zkmJEHERiX_k4%YG*j&!;uC5>rvHTn=GCUV=zRZBr95r-Kve)x*cliW$Ikm%acN!5Q z7ya8Yfpi%^U$({!aO8Jlgt(J_Qal1oR<s*tOHXW`j*~00vwgHM%CN5JEZt51j4U^s zC!OVSfv<z(#mD=@snI#SA)Rmy{Bnq1TsEHAvAKb|L-GaG2s$(Kq4If^<0>aOiC?SH zXT|zdE8Q3EKevM<Bf(RkwHTK!WAtwc1ua@rIfj&%lu3>6^-xXn+TQ0fKlx%vR`a98 z)QLD8U?m)b3jGW(%}g{rN_GsI7{bGpIt#J&Q@8rcEYG^y>|!|To^^D;Y$Z%}JS$rK z0ipl8&_<^mVA5`Y;;wbns=S*t@HA$stD3_k|Gg!=3oV&-Umaso67txbd~nE>PImBV zsr(fCd<GJNpa;n|!#+r~F2B2oc~a`QIU^&LMSnP)@lm4y7fkz;(ODTMW;PQC=l(1d zdXNqA6AT)+ZaJGu3*<H3&oJF<eWLt*L;K^J4kw?5$}?w7M_}{1x2J;sC7^|FmC<nO z8a0SkIqi=;T9o@VMiF|AvA6`T$Q`+uHa^*rgdl7l>ph&;R@fKu96;7vM2K!9k&a1& zuru{K#>=l{WH_x+6mn>h??G}+89ht8ACk|(<N_PN1Fw|xcO+VS3$i;f4@VEmg3=m_ zv=$o?xaz+MM5!&3zuh>vdEG)$ditr?AA0kwJG@#wdu$P!mixp8+@cT!d{d-(deyaW z^XacM^4?hepuVN07O@G0CrCBBf2gn`rWY_BXIJ7^@(tX>Rh}=wkKXai6Au!9wrl*w zofXkjtVXAC){CkOc^R>y(>!H2F*V8wdmMFk)sK=|TraE7?+t;T@BKg15Ye2?-$DPH zTAY2Pj%o*FOX~j&y8fP8{8gFh4@6W8_DkXqwxj(^o{9Ev&;|1w=z=(&g51F?=fW1u zhFL&lK_x2#T7dkN1*rmxG6!V%J7g>ObY{`_WW^@h7C_790|n#HL?B}40j1FoF$5-K z5{ID6H%MX`A(RoMfa?bu(PmvhD83e0E{Z4`H7XARhGfOj!J`ElM8`#P0%1Y~1<YRa z>wg`BQW*{$2(2&(Xw=BxIWh=9h%d(e8#>eCm~49g-{|b`EB^;{22lN{x>ks43Zc-D zsUy|fAf~8NVE1TI##)Dk_`E*m@Z$UjI+N+Xej5K=yTrhw84#cB)vijb)=YY3eW74i zVC6RN^n|EUxiEFQdau&pB5fkLEDDaWPulx6s3tPRm}%oF-wJ@vIQbSLL)OaLCIJ4z zFCPZP!oMO9l*FcbZhD_*v_Fg=X`0>_+N9vf?iS9sRb!X5xNOpEG*2FyHf`FnR*wrD zu^niKBoxb^$+T4&7O)wLPJFQ^w{79krW{R})xd8EkqWOp>(f%2)JS6vXHWSyxxJaq z03w72KxY6p7#PL3z`;vaSpzI80R;+l$>gY*TKqg2PFP_|R$p%Z(E)(yKl0Tx7vy`O zNJL=tBZ2o2-j*0W^k*<3bWQ*|3tp8;1(G_^{PM~O-of!|S`%?fI&&lS9G>9NNsc@) zWS8zg+x%~IhC>RR<Ig;-8Bo?Y2c^9d#12x?hRd~QcnRr~MCAxdK*Yr0h<~Ba4%|@4 zPPBG^U_UH0b#@pS-QBB0=w*mo$9RYCay(Uj)~*^81A3yER?qYRGCR*k4iYZU4X_r* zb3XzbLOGM@3~vI6{vVEI;;$-EZ}E`{x`+6y{Y%7A(Od__ibNK|VZ}_76`O@7Ss-fH zWwGv!reL#ppNDKePd5*p?h_Gc__IKaf*SP0uD-m!tpR(L$#)I+Yf_3{Eb@QRb)R%d zdruArF9&W&o0r}i=mtAy6uB_dcR0c`etX=^3ik=t)|Oa>{N8RA^zx;=<+A8%mWwa{ z^+{Le3VW+9Y~F96Wc6`YD<vAFiz2~DUy!U*DWOx#5#TKh;wP=~ANcH^Bc;2kbLkI! z){h4!=R!0$rb*E2h}|EslIzM9HQcp#Cc>oG-(6zJ-z1uJ_;5oa==#E%H&n&QY)SiE zt1mi_vT#bA5j);;S#~m48GJ;g&Aq+J$WKZ)nNX{h;s^JtHu&|=*ztdYXHFJ2&L&RI ze`|ZzV62M%zYH4t^Q1rF+200@ng1Fz7XOD-x=kvdjX37rj<%c%?hL`s%q)fvFlfx? z*Pt;Qih1FDSfe{o@@btiTVc8;+bW;BG4Zj9Y8hK81c4z)i{9*Leu7FJtNFcQ8Kuy6 z3)woX_d;QA|J#1VH2P|+JORv+r&C*vO<C|%U_VD7TOzMKC5wTZXUM!iFT(HGY(_BA za2UX>hzE2&i2#B0Z}OKv*Yn4o!6-#l$8MDut$V7Dv+xr*Yhg)Ihk9#NZ4X*La7=X& z3B&q8vU#s~#BsaI&r6;+DbW9iv2zZRv|ZAE+qP}nHm2>Kwrx*i+P3YUwr$(Sv~62o z&w0<;v-|Gu7h4e(^-nz!^;AUWoljoByt1I(i#Q?WmgjJpPxrxm-Ipt3cY!NcAUotG zs9N?}SW1<E<4x93&{tyBYh2<5oQP<cNNmIJ7lB!`Y_k~v$QVZ*8433e3vf+BJ;`>L z;lmZ=01}`Xkxz3G%y3yl3<+dp4iVO=h%(D1j=P!$8b5;@$p{$iC@1;FJZLWwhWR46 z(Yx~49=0#pr-K+_m|B7{BOI|AueO;9bm|i1RIz4CW~=X3$u7<S%{Mm0K&k1LhoDGf z(NQ#-Jm@PQ7_dpiC<7MS&+b%55e*c2oZ#9Cs8%!br@Epm7;Q)&UuN`9ug6smi&h3a zIB$@R=^>xPD~DqaM&xQD#xlMej#ADkxJo!QNOB;uy71?6R#$xsaAMwO<$@5~iy3Xh zERbeV+S|9B+lt!`P-~Aace@_P++bVyE^B&AYFKm|-QW#accCbc$AwooUQ+g-mZ+3m zOP0IsB!%C8Gwzw{BIA9mrcSgKN#@b+=X>+rv@K=Sj0aZw^bwo8rAmdSb3?xqoR^4> z`Q9aF5$TpX6`(adiaMa{p?uezrw*a3FV;oCymhI|u`<7^hwEd>qdb5%@lU`&ryhXE zpTaUxJ<axGI*9^Bw5Ndm?tI#jDd}m0Fvi@;dOGH=X~sENcGdd4(OKL@&m{QMPa+sN zj0icEHc7?|WhCN@TdF97SB)>#RoSfdFy=f_B@`{9-a|EUPD;oLCNxnWq`pHp1!HXM zZ!tQ5)~R#XsR)veTeM89ab?DG%JD+gisTj?SfKhIT_~#umG2L;t_{bCRd`f$FHTuJ zRtYnL++u=5fvw)~ODPXLn^7{?)j@I08TG>aw{Ux4Hql2r>zL7E`cymTY+0%My!<^# zTEiIaqEqw&wSMG-`XC0_Bn1kKj?3(}DW2zo_apH-1@wL9<_c5;Ux*QEqB!BDqH&Ie zg|WaTZO$iJjBBH!V{rEe;j~kN!+7I56T@YHVfX@U0ZN@rGfSbfE}iey*{Vl1E~r*a z|7Q8u{t>=XW45@@l29oJSQZqPmr-__Ug?1P8*gYAn=<QheZ>xa;jC#<W-~*PE4*t7 zTS=}E=4+dV@9yUqSMr4n2Q)UBB$tbLhMKz(>j_n1<b4m0R;^W(mFsbFu2}0P=13(` ztxA$v<)qFiiwoDLlVSkc2FvWmp}1vh-PcAgY(w}_tAUeF0{SmLsA7ds19_KE)+0@` z31Kp$do8y+Z-1+zA`-=v{&ac|znV1vha_N9q4Jdk7*M<p)wJ&QJ%^=o^XFJf;AwJ8 zeTxvM8}24Z=|q^>q{de-mZn^+*hA{ia@&_P96i0fx{%m}QjF7S^96K6G_pnL9DDWC z!&PM22taubQwszV9vF8?d;$|BZW0m=Vw_rxg}?xAomDxwr81y2e`;Bx8t!oJmf=Ur zZv*g>cCIMG?M=+bF^DN~#P%eOAQN*d)e0&YQN#H_tWjFNbpEIp5O9MEMf6h1<KE3# zmNdSq+CrJN5_XR*v4(n2b|gNd)*luTjFh|B5NMkRxV@Dt3bay(8QR`s!xB>BWkwbp zOqLO+T_Pcumb{gP-&q?WX-{hv)|yT1eYL=!8Cr+Zk5I@M1{x4<v<D+PB>mm=a?~EF zr@z!+uF6&z;M{q-{;j%&%h7I(UQ5K_ahSqS`o8G-^g;eM$1fL>W$swUJ^(3Bi4LEm zcR-FTsS7@8D~8EMMrV51de8=0H^}c6NPBRJNQG^w<-?Yigq<S`{+Gp4m}>+nlemX9 zzE;kR>aX)1eSZja1RdC-ib`(1NQ(ATqF?@{i_k|J{T*#YHwq<s>YVTgdYeSV(HY;3 z&Jaz14^$cq7YPySb~yt_uP&<w(2c5)kGiSR*~M0dhy_nSA=J7T6Bvt?W+k;ShLqkD zK#XoMXO?iwJu0s3VAY<#EvD?pvXW9x5bl<OvWt}F!Fq1$8UK(?PBHD+&?w{VTN*Kf zn9<`)fjyj<Q%YA;9_{MhsB(vgmWV1HSLY~&ilWp?ov$;lT2$;z@oW$S^3cA0z&p9r zC-!e~09shbh+Kv0$J696+so}Q;{sC-Qr<8cbe-QnpEMo$*77+#0{qKZc9gIR`dK~X zEvMMn8F+y?-!=8REh3xY9*y5<2*0+Gf0J+>qTKjhtK7B4YQtkTa^Pi^+SHhK=^aLW zYGlgr?6=t^diKX~QoMidJWQz6gub?Os}NT!h9{|zMmS<@E86|9E4=4z9dUZTB4nA% zrRSJmY0ke)6s^ux86$oE>jBC#{PY9h>j1_6GUWdsnwx(=KutIqzM@A7i}4@P<3)iV zuOXN_=Q0Qm#Q|ow4p_eR-H7;%g=E~OcvW|kB)#AGC=C84&Tg`WedK*LeiZUs{6vyM z4t;;Q98n_WcD2j^6)AQMP}ZD?B7xLvid|f%&^HoyDF;T0*56Eoz&}^GMl$e8qd+GF zDjUKWuQRR|qDMn}0X3yO+X``p)5}QpBL?lL{AuHViMdo7t<y-W;(Q=9Ds9}kJN}6t zm{>$@ikXg<ujtwT6Foad!tP1M)-dPEQHYI+)k7j;6PdqTd^;6E$EWyHO==AoaUKR; z-vN~un2`~Aylho*8?@pRXh>zSX(28LcQ@|)G3_PQplr*$viUAlAq*pWB}^!Asv{kz zU7G^jD<Zj^L7>~jOd4t-Nz1QgE{pso5+-^myX+Rx+r-5XwMy70bee+Gz)@jja!O=v zBVH+pDEDuCi8J1f44z-RK^`d#+4n$U*G=}=wpHZpvU1C=#QH}MxfVVvf{)OG>v}}a zEw-a-B#I=e?)`yTG%e?~d8`n&kvx{xB`c0$%8>)vwfCIl7d#+o!<${vMfj*dVamq* z8Lhq>9mPh8is9K$YM((xSy7=lTsL64%?~ybI4RKS5JkIg1E3%KnYlqk!V#ti1I3vZ zxXtmfgDEuNfe3E=C}MU#Jk}Zgt|i=<xrxQhuAzi9hk{h8X(wDjwc7m%tJ-Pm6zV=} zk-1c=<cS;!K7BdaI@eR~;bL+dwiV90{HbzS{qqQziy4bA2Rh19t0m#ueJLrXv)Xh2 z0kl4i432hwqb~^T)Q$fZORTRIs3sT<4$Fh$rZfmJkvLH}^$ORSv;7g18Tk_U*?o&; zN{;W!SpgqD0Uw*R-KLny<_V77Bly<w*Z3u(w^Kk<$9JhVK#ktl77ds8_Kq<#cCIlh z=ImlptJ_-$UKRfIy1JrH-GZ0C3_0vk17>xohEQkc6Do@%hig=5_lbwldDb%iY{xx* zh|hfV%emO1$5;Js!wIgk5|r<4D&O|;|7-kQAH28ie8tZV_W$TJ^|$yj{FjS?#-{D6 z1i~Mi;^5&?;nFaCLKaDtW+*F(89@O7A$%gyaNcg6Gi^&(neElrP1{8_j_Di@h1t0h z@7qalW^Qg~?(D_y@9lTL{XrolIm<AI0^{rf#t-0(>(UsD#<w?(KAPWhtvo+=&(lv> zzhIkSDm#ix=nwSelk;?~H&)GOd1j(v-{+4GU!^6>xx+w3NocyzU;;^AP{kFoJTLo& zMvKA6IfpXuRUY<R^25Uk&q8I+G4}Cj)sH@nLIqB0RzB781Aa~G?v~lXuZLRPaG%~2 zY;@UX-}u_bs=_0m%2n6UG>2_TUa24tgf_GjGtbIq^g5mjk`N2~F*E1>mbE-Ok^G&9 z={+kcQ(pq8d?fA~(zd2B(0IKE;%o9H=mdO<a3~mb^s+R2H<mq{oCW!(iz~D9kVPLg z9-h@&94KO8>mmWSE&04H&~fXLd@2qddKU1nr`;3~`~XeZLjbA82%&8g5SKRBH7%s6 zp(7NuKbv%DCqoI?xHv%?7}3P2!)%{WgO69wpv^$$oztN8q~ye(c630QW5Ryq%3?h& z*$fedX#oKLCPp`R`lCgv%VXP}jxEGHwON<NgPFQ~yLeXr{#btC(V2($&OI(VK`}7f zx+_mhXp_ETvt>0a3s{Hf&k&UYj9swT>qlvv3pE+NmQ21c*Q8o!?|gl{c%}{aBh#dO zUNlAgHy|2yP@M?{q5#hVLENhU&s<@>$(~MOCGu-6nv3aBg4Tz{8|qL%VD8oAThI_- zqLslEh@grRU}!sJTxgVw{rcIQ(y2fq<P*h)-ex(itGy)Y?Nke9?FIb+&290CVji?p zI(;LsNdOY~09bx-@2(R^Ck8Ow(F;YjdNA8WUo^c^P&YGQz3NeZ6(OA0U@Ag7wPn~P zRhr-)qvklM_6f*|$dDA@6Qm!q8nd7eZQ4sVMJxD0*|IfVzk0kI5WK<7b70MX1vVy; zJ<b7~c1D+r|6<WDs!>qiYV+JL{N|i3-O#nJ68?Ri1GcYx<t+5g;TFbQ(vrY10UUZi z5QCJjNTxBzk6GI_T_-Jef}S8<+%PkC!g2WEjIoQk@mX%g1b_|!awXEl(2D1<^5TG5 zu>D;1<p=USvc?hV)4`2k=L%_*v+h{PZeobx`kHPc$4)*NaEc#*iDmrhI2&e<XG%w< z3VuT~_B+IPIg_RIPtxtTPV|fjJvQ>QL>mFj$KR*=n2&E<7b7;@(S5qvo-QIY#By<K z5Vg!3?O>wW+dvX3W_o~Lc?ZiUwmXOAez+C*^i|ujBYUF9z5B>JgVdz{7T3N_TnYb{ zQvZ5P1>v4)C;rM3ywLxbEMY?DVq)iDYjLisA&1R~;7!+MV7yN#I10KSGVB*8Ba{y$ zNHQ(H7a6Q~wMvbjaQAeHYwLpT*IZCaPwSqtT*th7{bgeQo3B|;#14Gbj#PNIoK*tA zp%f#zE+#_`Y(d+hx@)m>Yfyo)G0NV#bOH98b<C$YR<Q~fiLkjK2ykIVQ5;CN{)dV= zTAYMrJ_txA3#z9SZI*~%_|C9uMX2dPP0-o2z0-4N+xnSUWQAbEimkN@KU-R+g=y1F z)rHl0BUgtG^Q!s1PuzP0{JE0gdE#tn&x8Yd#x#h~P2kuBtm3Ba5`J0(V?H&XBiESm zc5~in#}9<Im1xljy*;ZFt7yw_O2_UJQu{SXlj-@jid5+2Zktja$~vJbl#*M7vycq3 zv~T*wco5aoT}=eMF(xF$fGB|4RV7a*wjD_nK}^PsQWi*6xs+0D$vQ<ig);48#h6lb zHVVDGXNjZ8rKWmvB^{M+G1p636r>JXbYMdnkW~ad%Y`LihJ#5Kr?Yg4NY&`&E&_gX z0+>gD=+$;KiNQ#M<2LebWIaY%y@=7Q3%7;7L(94^z9p!PXxE`UvaC+H=;c1(vnG(d z)<qFs;o2K*u~LfT8eQ8#8sRX7^s1^Ef{hT6w=bPv69qvX@tRpzwyB~L^9I4NdN-H2 zgUz2}1M;$ghFw4W{jYPrz0B+%xa>OQ&zPy4w7^0}p*jM2CNk~Gl67or6h;jVcqj3k zmA!-(DTN&0H4b-{Wf+mQ1{I!+OO96-OG(u8y7b<RG(0pIt$0bs5VOP?WO4I_n(jrY zNCv&#=HT1Af7k24s3p3cc_wn~LxvvIc|IWVZ4!rIAyJp65+YJXB|k|_qn(+weI{Df zj<RxwIJz`_P-qE{k<ew9iN|YTDFVyt0Fcd>qr;nu3?v~bQa`|XW@y1HAi#{XPf7}; zRAcSQ#s`TWqki`S6XWC!TmYl5m%h@)5$k6)oJUpkND`ikDME;KMe{P9Y5KOOyWgeO zeEyl=;1d^$cU}jc4d38)_>7w6Ki_?Mvp8}p-)6yDYZqw$Dqoxewd*X`?(?|h{r@pT z`5%Y{M|)>|hyUgj=}8BAn)uZ^`d^5Je_iyimYB+angsYav5@-@_rT^a_drIO&rM}{ z%D-A-;lQF1aEXsS&w9!vf7}DbY-vFMxCed#3v((%f7}Dx3M4$BzSeVbR0`-AdGV<P z%Z44ZmI)xUSd)Xt?)xa)o%41(vpqBh%Ow5U1T}d+bkOM322FxflLWAq<W-`IP~TYk z_iC=cvQ77|>8P+T9*XnJG~<7&>HqmR{PWKK01KIF*0yVG2p^TY_IAGAF2IEkY1S3# zfI;VAU}?z%I%!52P^x(}dG*B#$~a9&KAW)#D3Y;Oh9W<g+k=OGct!CY_c0kkPLtP0 zae~Sz=9vM3s45mPh5*F*C=pSX7pp6gV#-AMBGCuHDiI=pziibJ<iv?V0S$7x`9VXz zBOjtdcmDzmFNW8pLyM<xs>421p&7A|(Gxc6&qH<cN{Xq<=nQVU+<0I0kLU9=iKS<Q zB$4vCZWIV3V9+!VK<9!3`lS{>;NV&3SydeT&~hS~YDpaZi!X4}fh|?HMgP$K6!=6$ z+vX{Fmx0AiMt%OAlOLy>wM%Pq(v;m+U#hE!x&zph0Yk;O>DGu!kp;up)}l5#Vs4+U zXqq5hxU>FSTPhh!0swu%278QhA(NkYuM!Nu$9Bq>k4cz02vq@BGm6AspBR(q1lkL( zV{SKjm{|>{KPDvQbqNR>s8D670nsQ4`65NV;Lw2s9|laDHa$u0<|&O;-c-1VYZR_q zjl&)8@4kE40NRZH$d=VmN9;mzcLwZ0GU3QLBL0q8*j(GXdplYrTn}{rsy+{QCa?%u z)eT9!G#IboBL(-}4J&1(u<yu(1wMqH@i&S(YH`oY5EMqS<`kI<UKsmCstEeC438p| z>r!lqaxT!SXNb%n+9LCyPdF!MmYC8vXRAuf%B)X}46uFP-wb3MArKIUJ|OFWW>d7p zF%MM3iCt~2DmB8ud6HVxK-C315g0H~W$B8UTum100|QqLFl@tLD$UX`Mk&l^C1)+- zzC}u)isOwmi-rb`FR9^oI_!9HgJ{&5Wa*vT!(?kLRzV4H8^7`Z!&n|vI#eZ!;hI%e z^b6;({@~X)s;r@)Knh_ztT%~*)XpG;t2dE~v!g=!zy+#effq2DAjhh(lgJUh&{GyQ zOSiuvxIHdJ>^s~kc`z}*Yqxu6($*~_VFzA$k?D{aQVffv<uluHByK8%Bi*2bX*gVQ zP1~F%!51&n`lNRTp6&<LuCV7JQ|&P)CUD(_34$nQoajY%ZxB?CO$0gIo7wIqZub}2 zQgrp%h>^mB-1T_dDQ8G)S6-E*8+rMud4?UvxmW5j<cK!pQJSu@8<pZgv%EUnKpJp~ z00b$VH6Z7)nFNNkhtySo*mp#D`2s2`#Y+InWd8xcIF-m`sHQ=`<wwyxm&rSzpQgd; zB*$D={?<umn?VYDZz0G37Cm>+jF)gUKQIKD6?Qae^~Q_w@exf+`YL~t_lCh0&i{$E zInMR`G?&&Ux{O)(xbq2bdX@fh_2N7Q;DaJb(`EX^%xV~ifsIPROSHYu)rX#$*@b%d zE_h^$d<MPm=~AdmA^uWXWL~v2^G>(jN2lL{qba!0xa>VamkX(1RuADoO_VKO@zWEp z0Z0ltj~Byua-(GA%7waD(cuRNG~Whnjs9jnn7Mm2n#_0wf^gZn`51*o@-NQ1%bqhR zi5|{#&`$L0YIxuI>AHz0W^CHV9+PCHb-jV_sSaWMv<TKcD^*Be*y}C6mYdM+?BBW* z909m2^Iy3c<IA7w|B%W4rjP0o(1GkI{?SLjL{iW%_|zr1_STmJeU#3(bR^&=Jon(g z7@^ynB7oK*qd&oeFtAC`A|uoRU1ula(?64eE(;%lyrO^wXe<z&{>E2rSpJ1}stJPY zsRw@}M}QCvR6~pa4p>7Smx|y81-HC@*MpZR)(lyc{9$8YCy>8wV_<+m!EVoyGYi4a z$PAN^4uT_Z9+0k%0X8Z_1Xs+`D^m^wyiW!Ru8g%!#unu35FY_d6={de4b1zye&p}U z>Ca0|;QtTT`mgiqU)lZN$|)A(pUtcxs+=TYZe-IU2FN{hA`<cl(=oyYqcp(H*Q?*x zq;sP`H&(>a*eHGR96}xbZJ2JdUz<<*55siDPBR=p*Zzc?7V`+o>@a*PH7d2y!3pO^ z7x6^7W%*Ynsux91U~yCCYlHfSZWf~cSZ5a#BW71Qd-~e}q6>axbi$K1IT8xu>-P8A zMwwl;77cUF0S{8O7OEsi^m_|dSB)y~(S@?YBIgAw6ng5!FXa?L2s}1HJVUwp)T(IF zRAef^3Dt&;TWjb`Id#XZNfr7@XVqs(OsF2t1i>CSKZ)cicGyXR^(<1OR3rn0P4@BT z8b>yF`;U=P5~{sbmMFO(zh_@$EV*boMSDMtU%9&JmN9hSC}(1BHhkq$^P4CJe9;I> zf+$tjfJ>J8K!2(h#ZK`@belhRvZ?jo$C!DS@bni`Z1_p+Y~cpw$Pn)!T}6$e&=~Z( zs_F{${jyrs0$S=ZhoCzX_}=-2QQ<xqT(;q+n>j$^#H7Uh_$Sv2{!gye+V#P&Jc?8c z{)YiF{oF0fmvUNtR-_OSp*>n6y$tXJ&^#?DiBE(aHm{iZij&K?0pJi3e}{)Ftm2Pp zp4-VX&zEVQ?O8XHx<S35p|~<VmhxlZypa&*g5@5M{#NOEfIfet`}E#6?)U9p7CIez z@NFZwIY5eSX>gtCjs3?>xMgnKQG9sIOn?^c*C+RF&LQg$Vxq&GwtfxythZ2Y$P>Y! zj-~FMY0TpH$Brh%SBM|>u=_Xxe@yevMHhJC1Cu9@0QZMJ4g81tS9uFQymId<vvsHo zP>xtbaR9y+-(-gExe==8@HtBUuICUb;S;$l4B<=eyh)eZeD3@Q*n06Vur+R!jkCu= zqoYzAzX2qCu;c09!f8PK;lZ_#fXA0`Dpp4DM>wU+mAeD_5>B(CZofS9PL!xYju^C< zwl<g;328=S%Pj-Hgwv&!u79;`{=0Dc2N(aFX6R(>_IK5ErwL#s?(3VQU+@26*Xcj5 z_>cNfW(=yA0fDDYw?+@1lJJ^tPhOZR5D!Y>3d=A-z(Ocu>u?Q<Dljl}#r+Jcfm)p? zEy3a2O8SnxVi;T02zas}oPV<d*JY#agJyNq?F7rfig@D_F`onQNx|Or^qB`~*bh{* zHXU<?*w2mwHqxKBbHQV1s;H@9mgU1koc@>jSQ`DJNZnwj7fMvo!<Ew4|FO6Auj26O zop4I!t2lgu{on89&kg;zvXFogh;(w+#ySbGB)%T-pdh4yO_C9%UPMF7Oflz(W25@B zllx?#R;FnZ0wd`8H*U1&#RRx^2$KSUk4e0igT#|aSud7}J0Oi@02VOtST^m^j4n^3 z9;=NA&tzdEpcA2fk{}fc{PmLHl~jQl32GSml{Lee&#R|BcKawSwj9QIih_|nJ0d8y z<Of{TW~WyjIJou`k#e3X=+=ropDl@V8dsSXDG@9X3QyNDe16^9QKqPEmURfeYkAl{ z%l33A-HRH#{-TD}dl=h{YRWqrh>%7KL$1rCpAS%XAeya1Ww*)ibs!f#lYo62|BC}Q z=1C+Qfnw!!$T}hFo3Oj8%KUJ6^rj)ZN%1+x^KQyJ*`%5&wSktboj^oxtsc4=Z<Z-e zw`%HQbp6Q{b6@yyoPNw`{LJ{EwGxG^{=I~FwL-}GoaE-tllv$a*WHNJ3mtMHJnmP( z@(Rr@xQp#MS5gX;UM=s<Z%3l8CuJUjkKQ^3?j0TRIR{oLx9SCsj{vT(N32SaJOY)_ z+siX0{wZP1)^_P`RT$DzWB?a@#|F<7p8M51IkBye68DP*cx=l=x>fL#0J~sOlVc(l z9Hr)B>z#{am`4HZqY|zI>=BU?1Z0r8S_X?~2um%Xg=6*gNdu{EP25AqC+a-<PM;O1 z@PM60D8~Vzd7j5Mg(_ew-#zg`LIH~`=vHt*>*G>VG!kh@l-A6`0~ZdYJTh7giQa!& zgmcr4(Nue6_98l55c4h!7l%I^oR>@Ys-E4A-aQZRBR3J5T<MJUmp#XZ+napK_o5|& z%PLXO!xwCb^ayo0U(r_-?=N!l&rYcy9Tdki_mTZ}sPhhgd}%3%rf#B;(btF@hSbo! z2SNoOkC@pGG<bR`P|Qe}4q3yjDlQ1QBFS=f)-GaY3_7%}Xt_AJTqdi2?~e{c4|H^F zaLAL_mHw7xqEfPbp;*76lt)VfZrtP&BIHe?@rGejQ9Fr<#=7EAGoi4?yL0N(Y?>DE za&4g!_+pey+A_n*uIdK#@GWxRVKlQ>F4(!4Ay~Dro=!V}wzjprO8VvWQMa^L)z%CD z7mj1#@yvt44=>NB<aRtSRypAs&T)-zN)j!_7hO7`awo-OfF4l%RlGm*dtyKHPN$e~ zL>kd_&#C&<56ga6Ix4w_Ma?tDZ*-n(t0M?oQJ#fDO6KD%h}SoDc<``-l>{b0<($&e z7nZh|>xS{@UV$t?sCI%!lGsESzq}k=O~vn@_ZWYk&e%76m(6Y?X@$?!=R|HRF}IZj zNJPLN*Y7sS=f2ldl+m8i7ExM)gT>egJ@7`ps)jU+hS2eK@wrdm0Fj?tg{V*4hBs=r zTj*ocH%?y-pmPqE5u$r$^OdoF;KxjCf`ve(p`WLM)@i4N(3#&aKrb;|25+^yJ2OP7 z6xkTK=M>fH`2Nn?&3U@{(uFJ~|MB*>v7-*ei=}|Cv<mU%Li)d@)_<g<ztwgKUlrZg zRsuTTFvkD9%tr33hMS89z(3QciNQhE`aKNTUxlV|_)%Tj|1mWho$MJ8bf$lz8178# z2gmpG<Xs;g=@lO2Okfo~gxXgfaP+HIG$Nn_+VLc5^UHN;5zqqY=Y&Dv_r24<#TWjX zPx>3hCKjMn`ue3j(|pYs{SPhz|2P=_@$3Ipg~{0NFd*>uRTbyqwU+(_&|U>LM@1@* z(G%=W!lSDAhVf5+?fvPJ``L`(e6~7Rr*z}&Ivw+Cy2w0@9XmO*Tu@?^SGX+6`5c5N zc&em{rJnNs;4PR&#WLG+b;7yEUHpq*QwMb%4fgW^7e|F2F{r)onKtMTb@r}Ah5jnT zszzI*{=u*LMb0WVtyO8SO?x}9vMSjsPbl8soYXogEPN-eGd?Nw$k%6IH4(0I)%+SQ z>TiMSlgQ?1Q(qboavToPwA+^Yedf|EJ4=-60s9xc)|ZYvsS*4aytcF9M+Yp3!t@7T zYXe~$_uKyiuOWQFYiy{)ap4uYnOTvXf5B_KV}HSGtzYn3Zw3-5<|Xh`1gCeP1(F%4 zA61HBi5G$ew+<kMx!L|rA4tZ<*7qO6TKJ(!OMlw=yA>e>a2xtCqtga-gqO|VwuuNm zO<_UnfkqF`S>333BD)iT&8TC-+G2(29y&McLW!ET0Ficymh_?O7(-Z{0ak1phqxcw zT<Fn_?rAPwmXX`s0)4BBrT=WKVc}(aC=u8075my)gN&^Vf{<MwQZPwzH4Ryg$`Sp9 zaQ_EhJNkmxzBbk*K)`?M!!LF#=EFj9=h@HXSqujfF^?9n5*=a!t6h+PZLB#Bl)+oC zL8gT{-}#y?il))$0~!I|?uK3s{tI3c?-<(s1FtRdx&MLJvOfbtNQ?RGRp+HY`*T4| zQV1Wh)Nxt?QhhdmVAn*)gj-4;QfQeP+Vi6uzwk-XY5!|u&2`0(Z|}icrNaCj8Y2{c zW{ZHpM0&qwi;lzU<h_#on*TGq*6_uyd2C#Ilg}nQ;Ya8J0v&S3m>aKsv1=Osoz}8k z83X=04iC90Rr;HXjM*A_BaV-5hy-n3X>z+N7?=&HUP}xl7J(=C2vLK^Lyt<w=Bh$w zDAbuYwwT$7Xyg)06QleGZ>KxD|0==$Dne3?QFBuf0RSH40RX-}{#k;3g}95kvFo48 zV*%$<ZB63h#|M=4L!yk(Pk}MK>C+8p!f64CW)kDaq??y-OpxBJE?MUSD{UW_<dLRl zHM}3Oy<Qw0OJsP`X_%74<|ZgESg2;*dK|~jt$NGMN4v>A&CrfRfspBRv_rvJ9a_)a zeTmWd)9ja8eO^IWo#(Kp)u4T(b#lSy(t9G~T$48|tmuz?^IXo$ygVGstCkILq)lYC z={CUiw9p)B;B>bsufrx+d(DeyBN;W;J<?HISuJN5m}r&y#C*=noV<Wzo(x_j%&H$9 zyJ;WHPjKVkrd%i55~sFC`X3VIB4EZ$E4S05U_W?)r!-oWz?4h}LxR%k;~V@&*tW~g zc~-hP-MdXU3T&nO?t4=GL-V1yi)5>1!UDq+JqRpTo(5byhw*+zy$@^Q;7jczOZ5_4 zd~V$3vFkO%9By$6A@zqr`<w7*GEFHJ&0v?_THbu%N0_425n<0AQi&n$G-$O*4;jv1 z`|GdreK4PcnifZ0<lpvR<w7>*L*Rl_4GNXp;b<+t%=|Rpb;~Nb1n>U9hglO_R9t5< zFHxC{7ehfl8`sBkx%6++%qw1w7=S%Rj~;W!!Xk7T7WeJD<lv|)$*vYb>hs*+vC|eQ z^0nvAW%M=h2V`SyU-xN)|1}Kp%eK4bp2M<t*>tVCYcub0XuNiL7mD=r2R0nMW`%D0 zmHF=?HMPg6i6}is^o{fLzN%MSee@-;j+V#w{h7(hxw*MUe5Yn!XFM06o-<_^ti(a- zT*Ux+2-IsxOJP4?SJ>Em0nBz{@@r~<%A0_EiUGj&aYB2yG0u8=@^v^TaMKRKChim1 z$sG10D{_uujTmAq&?qw!9EEvH943x(KuI`$xJ04=q2e5E6`j6Xs$(*ai@dAtf*<SW z@Ktne{*a)l7Z_Mv#b)1^eoB!ZRWbAQd`xbY^0!<#`&4NOpW6Mpw>i85=t5(p1Tu(K zJh~pOH>qx0_v@o&+35q0oE0`}AEapYN9LT8Duif5QO25XYsZQrv(7Cd##mis9-m(M zK6&Gti!YWO9+m8A>}>uVP4=VI@6ga}g^A|QoTaJW?ji=KFT@;t+sa1sh;%4Iu))iL z2}jFSeC<(X(#gYi8Tw3MXuvp05KvHr!;o!F=rKb`X=@*BV0(Y3a7AnG?N?NTN3}jW zaMmlTBdEVnHIh{=xu3ptAAvmhpl~{`<o0oj9oUdN%!Mkn@;E#1vt`H)Ye5Q7j*9$j zTYHcXq1tm@XbVJoI@>Bylde_GuSF=O7^*?+jev*p`Yf-LOeeXa60r@0YCnZ0FQFMK zKnxK6=OR{v!L#LhMsQw6Pht`*ADoX3><l=|T@OEq7P)2iu8w{YN4CNC5uJHIqldA* zu@M_bEgyV`<0!G@-8zuy>QiK7wTHaZ*5nN!d!bU7F8(u5^JuYip9Qdqk=r=dP~pf< z!F;-6|4PP2t~pI>d0V#w-SJe%0*^W_LnD`ZfKtTWIfW+dn@Cuy!P@{#KsA;h=&U-M z7$Q7_$WV{(8*UDZnIP~D_Kxy$S4W0Y?t`9$_(Ic;M=<=bWQqb@aJZ(%ucb~zH}Q1I z$`l(YEg29B%wvXOky?#I$QL*&ZO8D@YwvDr1-y8!;>ZhGO!L5uu*dg`im1Qn3>#MS z4JTtTCFyYB6sN~`4Mjo=u;o_cAAU(j%LOaO<Ru1F_`F?<v%y=tdd?isGlOUvaFpdW z1XhboJl|^GN2<}*MWH}xiHcthzFG}I)>Ww378O@ltTPp1#a8L(c#NSKB@Z^iRkBC3 z6%(@sdi`#Ei=Z3KFoX*Y{b?&}&-?nb54Rkz((^K`1@||^!bktv&+=1f;O7RNXV*Y3 zk~aWMK7mtS+grOizK&qc0O<-qzMlCjA~9XrHss&_E70LR3jHVNKbjp=ukXFc7WmZ$ zBf8{^H&7L2QZBJ9m2le*?kxRI2t)%7*i@6Mh#*5f4?o++bz9ix{hG{#H}4IWM%pkR zko-ULOsAHc==nnUei$Q8jS=a*$tlB%4}?whKrW>Ce{Bo~KOC*eLQfGy-Tqyddb%8D z5LiF9{8PXhq9uGPoM;Tf+W&`nO$L8nzM&1gzYPKxDGOG@_lQ(}Mlb3yb)k^<{^UZy zNXtH44EXWy@ev}*VX};rSmvF%2TH~o)_e=1h>5jZA*FgVfiVanS7qBCslv2HNgl(p zp%eB4f~ZZXU~c2!*;u9bkBIaozrMJ2ga8gG?c!pdUI@utl+syvtrNu39qfATCAZ2V z%#1@u4tUHAQ>Nx&LpwyK=4pnIA4Md=@^kWux~x1x15#+_*OCd3s8J|$R58d;^OxW_ z!mMEB2310&1-g=$mc<2kOuE`fI)S$`U2%{?Z>W!w`gAiN`L{K^SV~C?m$0n~-|DY; zT~&!2owPpZ>(zfNvC5h|yr?*zaiB3<X*GKdr9?)M$LS$bP5Ij6(@hUa8;-s#8)!^9 zpn5!VB!o1&PH4fqp7wleYpiO9zL_UMr9UOLkZlj=+ze<`Q5fU}=~vG7N3R1$r9ap} z5>p6q)j_%>ibQvefm|C&6(5gL<{2eLIeJ?Om~4=(7eJdA4{wvy{C#j?Ex_QY>YBu0 z=(Mp^5Mda$9m)qj8KI3e#=rs+4Vc=$8`7K%>1MA46V-|F`*yl4>*=TA_o+1?*I!64 z;o1FSg>0B!Cl=p0EK#i_cIP{&LoTsrU6?mwk56>=`#&Pv0lH#w2iR+c@5NkrHijWv zv3sMOYONlJxG<N9tl6=e2Sm?Lssqj?5<HlE?)xv~GzkYoqx9$2QH#8oy|JLO?U|oj zURH{@DLmNx$7qS$quO_a`MZg^`S}ZZjr2f?MiD}Ai_aw6A#a4e>k;rZ_CRtEVY~7` z;~PZJh7nNZum&na0!7B|^Qas$65@k@_&t`m&Ir9B@XsJ5NhL4#GVEj7<apvs%DRe} z6#J@!a#>e8f9$Ox+~Hn54m<Ad9+>coA}VM@m!AF%Yjg4(C6bcU=oL74JoZ|XIh<N6 z8h>2~cD&#A!(*w77br!{e0u<Nx!;XPfWl5?>u+b{UTQL5A?ByNbeK&-z|u$Ciy*w| zm3-2XWR;#OXHPHM86MHG^7IfmQ>#bon3cpY4chJtrl5n<hJmw6svu!J`pF=Um#R3~ zD54plwrw715jz5$0Tdn{t$^Cu+lg4WujM~2T+FAuq07O5fHhv*aapqHCjCZ9+ExEs zd8j~5Bmw(~0f~%y4ipmB{&O+?mI+b^!f)(!(!JmX-l?I>je(s3?kWx`9g6W{9CX|+ zxC<B8m`oi^?**^!K>ofnO}Yvyy19Fp27lS#AMjuVAy)k97L(m;Zc~<FEi{_nt6o0A zs-J*9FoZaXk6~Dn&dDt>7>Ltc9H;7R(1*BYJwApl5OFsYNCUuqb?b$NBJO$u988s~ z&kA1lDc_REJ}tqSlTR3=PYov3!v6w;MjMSXJNe+sBz(e4o%Z;FwXfZ6Ku!RHwRL@B z1QJN8@>hkFSHymghGbemhBaYudp}1%rForuXl+=0EJH8_X?bTtPjdA=l8H`l?-+)w zY#uG)5QD=Iy4$=~sFY<Tx=E&))-1^uI|mO9cCXU0=LOd<YWyMIymdg6v*+SFeBA{> zbKq~0dOsu*ZKcDh9_?5SbC_v5i=?mf^Z1e1pB+YqXLhkNx!Nn?i%>#-jXzKxZo!z# z#Uk?ejaBzA3I#evEF2J45vkPp63Kx$iOmPFZ@A<NK*YZ?=ZR*U{LF6XC_R8DXt`Dt z?1EGxq@}ER-;t$Dr4ZTdt;*#pwNEr}Ok**{qUlI-jV{?fEMfO24{7k{*|fQw<Xp4k zJ@2-$Y*U#Qd~*0DSQguhy7>wP40{sb>0LeQh?D$WIf5tp`(}C8ZYFr^=IYyzQ6uHN zzScz6cq%vx0}~6g&??X0s0|4X_)W4mWGou?R-|2dMFzIAYDuU|nmYhe22oy*2j?5s zIFI#9mtt~}b5DYCASiKlMlK{|nk&#;yXdeaB}O2mI*vqTpxcP07upV?@f@<@?S&ar z*A{%H7ZZX8P$0Z(K5fCTCAkx|x>AB$jt1T!97Dj(Kax;Q;0Jp%KE}ykDCR{sHz_GH zY#kOs9HqXttJ<X#lw$WEeQ&xa!`Y&mw!Y(7AB;KElHYdi-<%jwJ3yVKv|hOjlU&$Y zRE-{?TDY8d;8C5c9bdL9mZLCVy*yZnYEMe+qhLWCB~%*Qp$HV;dcJUa#;F}N7SsWq zsoRm;2~rknonl_fsF)$o?P{K?F}%*ZV|_^^v3#Jl3A)EM9zuZ3j9#A<jgd^gWVhka zm=Va>6GtRVv&k!KSI-aNkP)|V!E-@rV|x~VyM}NiQ0cV{YPpI*eCju8@4_-z*iT2l zE?NgPbDv9(D|crg9<a3%aH4v_u0PRWq#ebr#*SeZ5szUJJ&#T1IQf?8W-J2ZE*JXE ziB)#{BlyX-w{nnzH7~!G+8sIwD|yonZ13KQIxL`I5}>g*O31tht8?|c(h$S#Pg<GJ zl||D9V<ro%rj#u2=26!A?moOif%@Ro>jj(@zuzXMwm*^w*<X0jv(b0rAM|myQ68<| zq?bG(E_Pb$59W}gURFG`AzG;#*T(Z#Y5HLIbDMsfsbyKWmeg%zk7nF|*(dK8W?_qy zN_;*?C#B{5<f4!r<?~pq=&R^JqbsbSjf#2mtaJXU(fs1mlN3gfKwWuyW!YRUJw0~` zb8=ERqDg{&8lQ296MU%S@|Gj8Kld5=?G{9N5FCkw8iZ4tw#fS)VNV&6>H_k6i!@<a z1P)DjuA)ORLxJjuy-bjlS00y;1uD*xQ85ZL6^#37G$To3<O)%bd_5S=(q8erA{CD4 zDZFDsVzPbIvSwKRx7OWbM?94oYvdm3$-#m$x4L`w3+?<*;m4eJAxV>q9k0+T^*Ol$ zPZ9UKcIitdI?@UlOdV-sO(cc+S9{EcTSr=BU1H>i@;e?WT^IkmegDc%{&sFn;zCT* zJ*Jy>JPl(b#@$)-uyf(T%=%?8YBrh|nM)p$yJPu)MiB{1#x@42r%IWTM=|w_g)Zyf z=G02&-$IMutCJ_lC&^acY2{9J9h7Br)KQ{pPU?b5ovl})aS!*Lop}x?Xyyqe$}Boi zG^YH2&eKX?#9av|GJ$x`#Vdfu$t2=FL7L@sSi#dPfPJ1i;H)4<yp9K5p(AMI*uT|h zikPQ>C31l-p;8=m*(F?=3^oniFc2;$%gY!IeuxCticu44Vbhl0JncK4CVP6?z;<+F zc=*!Fcc9<h(D)MQR)PF((FPUGXMd%g7;!>smL>+Z>h*^9mVOR?LqtT04%5@ll~Px0 zMjFLL^)1q)f}DK_FrqxHp8P4R!?buHQ#E|UxwZ!wx~1#KBCo+iA~GMiSK!Rj!(OfX z>;1BAX}0!an7j%^7Bp@4z=Y9;%aHOj>GOr4zPq<_kyY~^f~t?nfYeWLK`-m)-Q0F! zgo5=->l!~EV47Xl`gxg3_m}rfVX@A(3(lH}(xzttf4*UAmQRAM&?yJRh5Hon)DJul z9lVBW!l`$(fcfFji-yI=ya7u~ZDA61aR#I?715Zk!MJT&rnDt!dtk(!htU9z;|}oH zN1fQ)$_lF~t!Z7lEj8E~k5*1w5&w;|^`v1;H-5=OcDGn=dhyJvaQy2bQE!g6A=dU& zF0hJ^D?UX<<&w92=SmRs4JUk3s+>!Qv1aE<zJv9;5$IEOB=KkZVhUO%HMPp>%5TQn zsk5z24bFvOr}L!>9&dEs3c)5%N^iDt@+f&-+hSwTthL?mUUo3@eZfQNYaVYy)|rXY zYF~4Vx&(-@q*6OYG&hPh{3Z-~RxSb7J)1x~10Zd7!uUU$syi|%C=EBibu~6%!)5t^ za1Z48*q;&NeN2Mm@s&lfT;B@tk^2UXkx-z4y3b9N^k3$Gzatj8Mu-0R4~v+;`Z&0l zAXX<|T;m=%006>&^l==F^^L5JzfN+eL=_pw9WjKCQ?)x<0d?P{LE}qU!;F|(nbE<- z)wx9iRucnru~f{SINj_e;?RM%mU6nB=OgdS`_o0eD<wH5jOpm9IZuyQhEIFmtj`j1 zN!6sq2090*??tGl;iRY@=Ly^~OwYru%?haczue`Vrvu@@rP}Grb_6Qf>_1D`3Ox*O zQs-0%Xv<cWDsfGFT7}a{!eNaY;2Y;ZOLHm+&#(_N9A|wWS}BU_`3PRIiEq*<n}U!7 zUe3MUnLFf~=Ao0ECdrN_e5Det8}t>k=;+NVgu8&tW#Y<m>N_Or5{{xZ^E6+@u&pMu zin2jBuLFMP`B%h4=;vRf*)Pi&fe8tkmJ;l%y9fNJ_pQnIvm$>}dCi%iHf94i81zEW z#9!sf`Y2(Y{0>3m-Z)A=2v%)KOkpvFnAk+>cM?Z9kJBI0MFlbL0C?k8`$HIB-Yp+m z_PDO1=kw<}Zl#9e^Cm$m#73rrW(D-aJVC$9g8ea2e?rcgyc+72B9Zk?KUFZGhgXV_ z)M^J5v~_J>RH4NQF2~%1S%Pz99DBc~w#s6l7_e3q6n0QOgJK9<UO(_<1`<JVvAZjr zC<~ITl(65Nl3Xqsw+miSXaoR{ZwgJLauKt2`#N6!=t|~fA=zdO8ST8c)D#YS$Cy~t z+`^r41A=8JQK2);*IpwhvsH*0_b%$tQYw!HZiQtW^jroB$=Rg+*bHSdqLm%kX7<UX z`77kh3rv{n@9L<G{&ux9FkLK6p4^#HV34p!_AQ#@2QxB{Pq$Az(OcZ8Xho%cW*Xpc z(_Y_mbga(!ymE{O4s1BR1V|v+>K1yAm#lL(%H>R#)YS0#qK1|>)oh?5u2aCtr)+{x z&MT;Icvl&%4V@tx&oBmjoJY6XNix>gd#MZ2z87;@Rm5Wg`8u#f&sD=40_b(XAxWV6 zYBLjyu*2t@{AR(p$Vhs_U1{tW_F$f+WsI{GTb2J%86Buha^WINB2hmz3aym_YgwoD zhJ27tW~>9_1LiBf0V4IB`(Ax#FHQ!^;kHIan45>u%Qv?Cij0NPME(}U*yYr?i)_t+ z&pttrq^@#Kb(+5~RR}wnay;%GcH!D)+72_aj64HaKR}dg<P@^}87-Eko$9|wS9mRD z3?t;ak2b5VV)#w)PImcsp5$r?KncU?CiW>hzVl=hnMiL4(3L6Lc<ogtvS^UZIlxlK zrE&o0wVtCU+9dfQa;wq};%t~rm^NR*;ZH=a)Cl8Gu=AldtkF-_!qc+rCkF}oDW#Pc z$MDN3@|XJvIzHJW2M1ZxBiNOdAbBsW$cI-ith4}glQ9M2af)a7|JvWp_?S}w`pO9k z!~g(aI`cpKyNb>>*7}yl=UA3<yJA;uJ_GXwynqeD-ynYHW*Ei&-qwL&fh0|&^4+zH zTi|r5#${0S@ibks9dfs`qb;4x*ttJzchPBk_&q7NPuMVep^QK`PhXMl*r1E9>F=%f zKCjCEcp_A_xlp;>OxFVBjB9|jPU<Xe*EQRsKXou~B<BQ!XU|J<{*#4J-dE|Ws2>TS z^4ogd9cD=~)zhBr@p9kmF3Pb32?XBC6EK23vNS5<34v6uI-~yBjDd3&M?i{n041$s zzxlgb+>ibomneot<m`m|m_^cU&ruHpN_T+05yruUO(N+Ct8fTHPR1g(kjN72Hjo3e z=9=?yzL0B}f*^*u$Uu5ExKd7ndrK7%{KB4#fENdu5q~&nJqPPhq-R>-L>?=BmHqr( zo?=x1o{|x9%!*^XgRzA^9tiVf-y4NOfGUg>LOeua_CqCYzVY(ZfuG*lh76hbuV!n; z7|hmiQptK`4b#k0&X9xh(A~9pG(C4jTOuV{45$g3J@eN$5!**{gRlM|BwlZ0dU9|x z;`Sy`EyL2_ILby5Ztv7%DtPC5-w%|q1V@OE79k9me&p;apb%+<e1oN<tV98XAaR%) z1(jw{1%$eVRs#FHhFWMgTQsGRHM7j5*N-&lYjg=BZuq{0`vyyPfgez`c=}j5m8Pjy z0`2Gfg^<m(`rafACakQ%DxzaWj)j-K82RY_JiC`XEj|}ZS%|y9P)eDCg%G>DDga}w zR)rn<kUUS~Wl6Vq6g%C@@mhH<zsLASO|SKfr&zhQfvEw;k&(zi$E5UbBc)5q+ncYZ z`<6u$$;o4sK>tR%;l#!)Sj?~kbGlU1Hb!G9Vp6*u6++Uo4U1YK5Is}d4Z0L0j7Kdo zrVceBeOx6+08ul~7pe4$2lfm$FZ^JxOtq5~?TW9Ma&rQCl--SJ@t9Rx5z^V+mkKqe zak>D5T4C>MKMcplG#=H=m&(%?4%$2?%(ij?RE4AM=)nRU9Nd3_rUvGW^lPqF@!Rcq zz?PSwy69Q}1uVk;hyFnC4zQ3`1dLA!+F`w(*~z7U@nkS69*Go0i&w$MU6N-160BT+ zL2gOks13#ZGC|#nMe%u=<2|UNzu}Y))%iW_b^WGQ-uXj1uP7gYq{__Ep_;~=X#!+p zJI__`!;yL{^_WMYkX=_vUJSNGc)P}S-ClX)yAV`!S1u|k`NX+ef3x=`DvR3U=@Cq( z(WOb`Ld&_^3xY1Jl1EooE#s?730_9B()aPfa!aQLeubISC^n38DQa(l&HVNRYxiCp zU31t2#tKK?kPECdkBWdC)lPw4GQi`L4;sL-Wia~4g@m55hu_qXmE7zXziXbGLL<4c z41hn+wHp`oT%q&&vXD;^Ir{?{0HWJL3}$olx#gVO+2ei%okqrykA1AT-&w6WMML{G z<!^(KeAd>w0DI9&N(<#R5p}Zl*|p3(Q7ghB>P9uz*woU#wE71RtBAv2wC3YiuIbFK zIjmoYYd`jxe|F9(n$}sTR5@y%@LUBhS!8>W6!W+H#D9#JJ!!^mhWW%-74pBmc0F9a zt}m6gO2cK<=<D@D)`SR0vY(w08S6?1H|^XNuf(<kTlc*!z)6k`U3?D1U4y%XV1d&P zJp-iO=cGHKG_@ubhst#TMfESh3QDv(+Y`sQo@Xh-wy8{Tl&rM0tNiFtZQ4Z6fB1gW zli7rg^pQ$OBvq}5lz}N>xEyc2Ons}X5gaX#7aLsLz#t>f_o29bM%3?T-p<5FUzkNu z_TXH#aH6HVRqV52-H?`7O?)PBSiAWGutbOHYueXK+U*IYw1a>_$CGkmW;8U&zL^Sr zCXKKoZwUm)Cx;nYR~;i`XFt2rdv}y^Z+0Bf3}Y<B)182;7~SLshsx(k5G8Fr2Koa= zkV$c8)Xly_O1~WxcyU4BS4FWc1@<0kD#Xc{V!)7bKSGfwU|GP@8p!-rAMWgmzXziR zFY#3GD5Io9_511lsVh&V40-`n>tM>%CCK*889N`jo<wiTeMt#uVTi~UuSNfHF?z)d zZu9}t&<l3T`)1327e;=qRr2OKXmLiSI+S=W+P>nj2#OoL`ZC*2*g{zPp<q0<2t+(M z=}YI-yg_KO3-;kEKCO*b$p{a!P@bGj4tJE~7f`(%!9UCEwXMKRupE(H39j)mV>6<Z z0q@oVVMv;eLCF;pp*JB2xq_t)fqg|I$jHZF75Kahp^X?eAVC|*N@rsy=8Y2AFjvE_ zv3kqk=mf1q;$$SBHg^@%LkThRDWX?Uu3SYlHBn($!w^KRQE-5SHcp0lDxIbUXMoOR zGqH*(gWc$(!IBf(naM%U?~j?g61u&6f(WA_jiERo%v1xkCTaWf!w&W1KTR#9Inwid zosa+V`uAb^MWs1982-(^gN?doo9v5)1^E(9(Y`MF3tju?SM{x|Yz_a2rwwZQf2IrH zFLW8L3o~*_VjhZT4;+vH$pu+COmk)^OJfY_drDVCPn{{$?z=X}vHWGeNzQRg$7Zgl zvfFNqN6B<p2%x@9R<AX7?*cAAP2;OGAR+~gXNwC7CQl)&xFQ9zSNCxrkC3J`uQ^lM zK}=>`L;qS3CIPYxe^v~7R01_=0~)%NlZD%4!MbFw$Lf6+2dJO`vPSbaVvL8U`573a zPz?d>Qr|m@@h#QJRk}GDPy7eea_5l%%A`=BjZR*XP>=<rlmNn@RFG?^K{bRuuL8)P zXqcp2pr3ylQ-~;$7g#3*#`CnId96a46>O(n%~npV!F1}<k@<xrr~wdRttNO8L37eb zo^c_>UM6i+B8DlVR}X%Qh<EWQL}JLucbPu7I^Zm$6k!@wDTD+x|Jp|{w4oN3R$0ET zv?%`DBnn5_bopbXd}#d%WKML({BCCYJ*ZD1?<&CCv&w$IZGP4*B62PyZF@qBz1#sh zQ(!`IKIt%C;0XR(4)LS%-w95tDv^>AP`zM&0~k7j8DAz-Xw?RW?`W2p@6N~u0uw;T zO`s+RWfig{m}H?Mtw@ofDHq5)AT4;`D$KX7Z>^E(5Fq9rw|G1tEEwd^Akrql&a>+% z4B#QDeCGTf$s-5bup+={S6j27Ci%Kg4WHg+kT+O2dl|D}S5v82Kjo|F(ZY!n!FX;4 z%Cn&UA6e%VBv`Oz(XwsZ>auOywr$&0UAAr8wr$%sr(<R!CgRQS{lA%UPOiPS5}R(w zRxFbAi%Aub-NUo_2V?7s6>MmVl+{S3zl>l^f%>)8CZ^{1r0wnnM|Qjorf9dNvfn%7 z3+7dC^fIpR&qkpCKpe+99wXn-+pYT7gvk}tnjhvG!R0`!^`=EFRL^;w)Fy}B`f$yB z%5brP6@A^7K}R^boDi4>lTXuDkBJewz@`H&20JnOE|yKHQ9u;W%lO5astGp)xhP_v zO*3DNm-*2T&q$-a1!nz#(TNbw&)^7@srAY+`_~=}R%z^OsG!F@YR+j6dGA%71-T+) z&5JrLxA#1XjVC*NZ_Fv4&E=`mpgV$r|001h4=b`GM`X7bYf{cH=xBjNChB3PK=z)d z-`|cJlO7CN(#JptPoYZNEs@u`D0*joRjSerZxazM&LodGP?4b9$~NC2Zr+SvzWhHV zMx8>`P)T66#L(%KDiGRKuB!ctG>SgxORge#g{guEuR(XyDhB5*w38jhKSNYTk)Ft2 z3tQx=@!1c_`Ly&Usx;*4BfPNpAJR(fI-_eKeoH;rUkM{SW$H0a#nOP6Vk{o655#!M z#d?YemQ@X&+~gO?Bz#jOey(x2<rYj|V0g(-@+mJolklM`D=I``RvU#aF)6)~p<19` zky870+`|Ty&yiwBN|QIPBQ-7zu3HX%#+#;eLDsfcOgpyY<Q=Gt9u-OqnUecS#$Efv zm~oROJIh};F-$M)@!9Ofr&sf1REFqbTXaVW3hL?`qO`KHI%T9xC3V6!Ixh=1u(lmO z?Ck1)&fr7ulb1Vm{cPs=c$zHndfzRgJz2h6mdPt3QwZh4JWod)xcb1`36UVbI24Q3 zh>A39i{@PK#6(RJe<n7heW;o2zDE#{yZ`M0Dk&(jq6}LmKO;RJleS5fRu$*$=rozA zS*A<D_yEW<g4K>(H{YTGn{+J6(j`g2nNW)y^L%V$`P6ch@&h|GwR!TCu9Bu=4B`}N zi+^mg`$`B{d9wQhEKD^mJ~xGAxEp8f$1;%ql%wk)AEZIXt)J>ckrqT*<{@vYq~PlB zvL*cICL>z$5w!H*#Ip47Sp7dJ_<v7U0cmMDAv*JG3@baV(HE}XgQEB?9YK2A8tTzE zO(GB^WteX63{{n8ELZTxX~xcsbe4V5pWD~0bX;}%5ed!bMO?@ihSTpHo@&)RsG$9# z)f)h0#HV{x`kOxPWcq!Blp-uoqRHoT`c?M;U+zTdn*PD<ow=}7`l+@vI4w5ui16k` zYudxj5U|?o!S&0is8l{?tXkY=tOV#wfNByz;1Yhv;bYub{p1M}&0)k^^rkEjXu5Z6 z*wzHdVDixG8!hnzlPbi&$DZ*M>a_x;2*Z+-?kQGql^DCH84&ftPUFs5P;=05RMRG7 zgwn*a>`xbY4G}6WVE7^(Nct3%^ckyXbViCooM9Nn8}wvkZ!_t`Y02yeEnb*s%=S2g z%3BT*5BVx3=8z(5o`{v#aP;E};K^ty1d1aVMLrmg#gdj!p(fv!p}z^$^HZdoLmO=v z3gN0LlQb$>7=JWqn12i%tRPZ~y>e^Vd6)Q$NDB+|LTH4cj_F5uX<&zdjx~^PNeO;Q zk%1(*+!7aNDnrR6nvB*cj-l4A<UK-54iI-?t8SC)o!TG;jm?Yr?>8we(Js2hNtmXb zA`T=$$oi$T;-uvx1)ydA=w|nFhS4DjK4W%C+!SC%v(yg0dj!4g-jVFPacKSsLF?)< zWAUx%bK1_Y%tk5SNx3_K{eJA@_;UM!nx$bkHO_H%a`Wg^tGd`=t_(VRSi(AKa#X8U z_<5-00J(drL{fWyZx92HP7W$y`Q@Vcnf%Y^x#ro!_V70x&F`N&+^$;g(J=M9X(pg> z`f-N2-pr<v!x?i$J#R5}eL!LeAZDGKvsTa^BySfTj~Nk^S!%Gab%8fr+v@qU=S;RT znH9`hgOzvnlY6v^p9E3~EYF?3+KRVc?(9t1-Cg3jOlR9JTGkpKAg{6eEM@o|*B$9y zgE%Gf3+;@B_+s^ck6fq}HRV;zye<xanVlDmsacs%f8S_&Nlz6EP+~?ni|PNOq5=Tv z7Gbg_vlw$~%ezDk<4PTv4^paKr69wWD!MJ5qmaEf&yh>+H|}40xKSRc`rNAR+6gZ6 zsC^@Q0{?=6>kr!w@Km8W4D?&Qb>c)%;{^5o1(rkMD;Wny8x7_Jum-NwH`->$Y~J7l zWy{XoKWhb`-szML@e`bcqEA~>dV<v}apWPDk|TlUE5L`*=xqnaBFl=fcnO)yc%iYj zLN*3$f#~9f+aS&EfoS-<F!s78W1IH%77SqIIvN|W^Uweb^`oMm;l>m2-K*+R<+{HS zVt1<On2+0A+egAsXxEonltBsyuR=ZGzk%FDYR0ZXpX!-ptsYGOnKrU7bc)pIK!5$p zfRuDXBZ$LvKISa)UgqrV!C|DJPX+onoc|E9xGEh7rOJM1PFuf(h}+Q4DhAV0l4XkV zIF~WzI|p?O@R6sK5M1Fe4#i>CumoK@@;KBGBGXYiCNMzf;_&3i`{W2{lfzgus+W?N z-3Y!XFgwROnvvEdvz{qr`k|yzIkI(x(}W8t8l=e@NCgop?x<0p8Xdwk(tAVL+eMn5 zJ&h7OCtX_A08XN>KTb@)QN-p}B217s$KgV)H!FMLj9*E&!l+Z$J{H#5_QT4bYTsKM z`U_{C(V5+#wFKIHxeDf;(}<Q>&6?@w#!Ac)&HlW{{_ei;a_-sTlNJieMF+b(Itqc! zJ|`*-JauG5Gh+SfDoSZzw~g<4=P5jS+BSu?lpRe6JjDK#KB2&?`YlOsyB`^1AUn1z zxvv3UcnHNIR_LcuXu4}7cTdm_rl`|!G<Py{HXOX9S$&Cl^|(8klvEXO06Q%&|8J+1 zyFEZ#iR%U69LCb)I;hY>e_`5u&1adD4vY>zNBwoFD(a2)lJ;UWkZs*wWDxhoTiCl1 zmvOr(mD9~X;zT5l?9f><`0&_P>>s~=U0;Rw4cQJkY4(#zvn@%~Ez~VY9}o_mePHqS z(F~k@k+;n@UYopymM>#`vm)mI9PSUSYT^cRf?j!S_`oEyisi}QMFFPH+g70`-{Q79 z4nw7O;2jvbk*vC<tgg&g({+j`Un}9a20VP@O%^!dn|mj53>aW9O^mF*7QMGkeh)d% zOW0_C>*jx|ig76_c@rx8HO5~}2E+u>?t55ur>E3{sVy96RAH|I<hS>DqLm(%-`-#O z00=WX$!mEE_5J6LwPJasDL)vIQH4!CvV`@#cIw+oPXxh+m4-pYyf4!a^!JxK`J8hI zZr7#R5olM`!DZ33s)U+YU$~2j8KuR~QE&}LgcAwNe8xbg*ewHGMVK5)4vhb<u;CTf zwdBW~NTxE=&5P0ENXO@-!=hU>FoZPdRny?j_&4%7SS!1n5n=yC7-ZZ{LP<D|Mm#T1 zdz$lCtZEI&Y>}0^Gg}NZU^UDaU7}{CXQKZ>(1+HYb!>((#jwFk_7<BbXMFa|jtQXB zakSwU!)N@f1U(K>;E${>tjb)cPW=z>Inn?O00PYlfwr4;8?iIme`iS;slKM$@Uffq zOz4OgGl<O(#G7!a*s(?Vo?TANb`-=eNzrGQ3>|s&hN(*wO#D7kIf~h~w$<G{?ap!C ztwM1K^f>BCk*E0mk5%Lf-R^8982~{2`o9?A{~MVc9jz^#{yXb(&GYTFHB#OCS-W;L zy+*E)LRxxWq>#jRx=1;%oU)a8)smPxFYm^Uo9l6ud?cZo_;m~4=j#_IrWm91n#^Ql zyhG<dYzRo>ufx0RJJhni{(d}eK2=~nBD){k7{!oz3fdW6TFG3yCefm)HaokD`W2Q< zwko2$)d=|I>DV)zQ~#)vg_{en2S@_KI-&N@bJtk5rr$LD^7}N+HmiGe{VgH53248l zGZJbsQKm5-*%lqO={|DvK$N{r+UTy<m+-H$kf^7}j7=m-z)P5&lh@FqL7M6et-4Y~ zmt>iz(vekaqC&i8Rb}c1$-TD*K|V><0Z~OFr`{5=kx>tQF-_)CBiiRq#lDUb{|e44 z_1F!QSe&#l{&r8VvaC#<*9=m=7=akcoqS!;S_EcItEa2tpO3^L!>rW-@Ci_D2Y_7i zN{2Q<@pqtrD3l?oeGep%$aL?lbg_-*uR&H;=HVvc*W?-An)Mx7xp`zh^nhk{l#1?1 zxH~4P2I#L;12&Mk;;WG_`XHaHdJ48QxF9Gk1k@RUX;`^|1lZFS@eL{P*CfRxKvR}2 zPE(djU<8UrboQ|W<QcVUjapxYJKAR8a}f!zTrvWXU;)q={xN-n#j!Y1gFz3S{}vDy zu>lFWI5LxQT<ZwBp3nF4>J<h+{~hrQV|Vs-T@=-h$-e^Ru-@M2MdltI;L~4DW4{km zyW3c<tLb3`KhN&5#y71O=iKl8;nk~HJ-^`>1Dm}+Q5Bj#pI`6W+uOFoh&Qs2$4)b8 zr?EfO<0a=<V4o%$(*^IJ+rz0Nooa(ollQ?p(+3_2fN~>+tEH#^Kt_DonUUI=*qy8x zd>+r3I=l~WafGVJ!@#n6*4?&^62$N#V3md7%AyE)3ENc}0#0tc@SoW*!27Rwq}+XD zM^8rwN)R#V4fxX2KVhXUcRFx?=tdHyK9BF7p1g<j`hm#um?)F{@Z@GjN(ug2JM&^T zMm@42)AJTS7BXb|SM}iH#}AFJ)1+q-aL7PB^~=92>JO%(rzY;7J!mQYZVlzd7bu?( zp)A2`rRKR3&FP2$W-x2iEVyF^u@cGvejBy`^!J-uWB#c<1nQq&T}Q!AvPRq<fS+#~ z6JXjdhy-V8kKP$BBDJx<;;coZ$(c>G0J<HEBxJ5jsKjVOe+uTC({y|ULrAS8(jzNY zUeD`0Bnl!#xref;lpq&W?2Vf58(a97^eb}#{J^mW4x~Krt2#{3-KjN{ugXhFt&;wM zthiCpRRvOxH#T83krS00TM(}d^^vq~wJjw1Tcgx)L15hHeNI6#2cl3Nd4x766$l_V zenL-XTV=2|&JD;JOo&)g6B(JARz`5JEUjI8>SWBY!ENk{Rb3PSI4FSAcZ#zl3ZyN5 z+g_jCIDFGrCuZ1EAp!yuD(a6*<_dXd{HvkZ=Unuv=zc`JieOnn7;_2|#?(e)c|Htx z_{*L<JBgvZ^qaPAl>?2{aW?ZiU;Ig-XI2IikOZC9SN$Oi%rMn|7$EVuA_ts!R&4`$ zaazra0zhvB0x*RmsHV@1v212Fsof2IQ{XRre5Rl((gQY5{b&;XgY}JW>I#S)?0ZV} zw}jz!CVG811Qf}CQTCEqS61!yOkBT{d3-0I$$9*9?~kOT^r>+&I!UG=kXjo%A|O(~ ztp0q>B4)ElcD!<DmN#gHwtUcK+V^e7pXM_xbS@Y}ya2(3LlFHsZDirenndimNCm25 z+^$9Q@o0&pEFVn38FN<ZIR_Fmr5dt&AcG}>EeA(x6cow38t4SMoZ#_YKxS{sfSE)f z^Whs&J0XM&2&AZN<X{+?+vGr}Glmd}z@yuZIiUlR&g^OhFQ;6*X8GjAKNifXj^tih z;??0ujy`(Bq^nM(mfMt_(~0So&?Ql2aRXg8RH0&3KOEg0<EHnYl~BJ1lyN1xXjDoO zO`;~0nJe9G0~VIP_1u75&dBI%0<<S$z4E!^Z-4A$$qxHB_s_@YmyNxx&kL%7E91vu zUcL!8oqSjMrE!m#8N)Dv9@Yr<$dM0cucCxr*8IN`Aur6pVeUcqZ@Kuc8gJoHvDXeq zKkVH3=+l}*8d7G#gD+9CkgeUDNA3~$QQB+>32G|?0Ucb5f<UOJz4V<=fDy7UMNiyP zQiS$*=Hpz~^!<Z@zlQ>83%TTfGF_oVnU>tQ{-lXknn!v`??>f*Od4+88bScMFj*_7 zj*;|bqp!)fF`l^+GH-1ci^IP=9MgFv7B}gvz`;fB%Jt_S+@{Qb8n>UshzTd%*;E%C z(E(NhSYmz!GRLq>l(`o!*rye_f-Oh?dr~9E+5^2n4F<>ZLJPufA;C}Cg1Nc$7a-!_ z)5((>b6b7Kt>9JuGWV1{Au9*M!UyU5FoW@pV#OEHu7>V2zy>AdR*ag5zPXGvC<Evt zny?jbm%vNwaMD5HKNkNY%8yvhuoC<gg^B_+B3eHYa4^F^Ne~T7gwj=QlBK?h#R4fl zW5yRzDH2WDZlvrsVRDCk5VA&^hi4ccvm7U!VOZ9I2*87uLF1eb1+hnrvTjc}8VD5v z&@wv%PlSdi(ww=)727<jYar09b<`x$0@-aMYSR?)G{knPeP6TO%$fD&?}D^}HC5N{ z9kC!`_oOOTnN!#IgG>CwoTHqtNt|L=$eezTUekc@PSPMG|6b;b3pe*k`*K;kg79^- z+lgDu8H$SE_acJKdhr@12%)8U(`vr#3Q(Y0lUh$|3z^!Zp&fWL*WesmPy{K~6QKDj zegO0F_lHk*a*fas>Z6H~Y|q@A+uO<0g9WPxFGiN`7mlFU(;+WI>j7X^D(?$dqfzL^ z@~t&s(`WQ>$mzvUY7p8<!AXkO(whzlRuXpR5*aDVOusAuP3Bk0yS`dayl38T#0=ez zzl%gT>qyTp8KMW?UI!+=5{Gm-l;w*Mtt5_HTE0*L?4JOAi>#65YR?Fd-JaWb%@h2o z!(58%v91O?3N6?w10BP03=mTjsQwhqC)ts)n>|m3pMT_RIqXS$SU5#{+_ZI1^MrTv z?P|Ib@MY5gj`{c|sZJ}CZp~k4lr41bpk?6Zjf^@Gn?8*AE~>X0G04BM8Etzkm-PrK z*UFxA2e(PUv)*6E0KbaV_3AI$-ittn@wY<G$+`@F7Uk1rG)mw1Jv?rm!e`}8&?N;^ zw{US~_)}uEEz-Og0w)xItp}g%W7#D8$yyIn3UMTX3qMmKT=qRg;yU2JqMK}ozl{~t zjO)eVtf1AvoR2DM-hUo(a2~6GS?3GE>CWq2`Af35=v&B~OWp%@T)?YRK#ey46%Mc0 z<&;Ti@Bpy!-$Y<4uL0i`FkVJrplZQS85eZqqo`JcH{1*?DTV$cz4hYHX{f$QiaL#- zP#_vyw&~;BF9Ra6yKLLqrY{4e*XnH7o^Ber1T98843<`E!6iX!v1Jcc;EM)|T!hN6 z^x=aSs$2%mg}p81S@*p&$s29oC~y~j>_>_ItOBp=ds)>jWA4*;{-P1{VLY}MdOJVh zO^v%a7dk14YMT*LLUoLxF*j<0s9A+}xcMh3yaSOc*8>nrFdX-Ut5$yMq}I*H9?s{2 zj}9(IIq=|LK|q-Zfeehs9_w8*5kge(mN5d=q);V>BQ{p38}XovgdCc8AT+}@JmmS@ z;S^3{{OOP6=amBC={@C-#wp0ILE%6}G@bX5q_Q|da0c6e%I$m?|H3v24n?$>;57Yb z{sW(nH%z{wQUgO)L5d85E#nG3d;WS$UnZ6%o2{&f=ofGMF3ZI-oVT4@aDNJBd16Ct zc^s3t2=h^5T-F5ejI2?0GF!khz{q#|#AE?EIPdK~yz^o_rySBN;u-GUV_SY)f8}=i zpvhuC=G)lLjcf&^hl9Yg=H@NLsh?&*H4`?#nKPFFwiJDE+jTI$`7D*&PAlr?<R<}y z8k2+ln1(qARO#{|l=@e(T<bo+9RgHI`>GJ*QX|naqTb1q7QpOxRX>jO@klN*Gs|@n zeTnG6Qqyl2kD0eYITfm*AvH$=D<~1-Zi>+pIyHJ7ffC{aan(wu(yLoM&TLtI0X)o< zYML+2zYPtO(sSzLU2TUxtv;bQXraL8WUw;PR21=gZ_xm4HUK6u@Hs{%QSc9<$ykyz zO{z=GmTJ%H!Zg~5+<*ddaWQBwsqhi`^C3zT)-tRUcqypGVPr75?_^}A`ob=EnL*@< z1rtl&mYL5IzufW@o<r84y}k`o-Ot*}Fmqs0V38P)7F&&$d{m(69NZ3DrJ0FKzoD5R zJMrkIk0UP(uetUJC!!wu?xRkq%0$qrK5>xbxogu|S1&mEinOHc@`N;|5WsPEKx_Wv z$s083x#@H#U;*cqr+pG80Qp|;q0fo#+n+x0@<>+C+V@s$cHQqz7v0@|l=%Me_2taX zjlJieWkZ~cKbXj#aIC3VnTV<(yiW6X9+0X~x_FuG7P;U4fr{F9p={kZO|{av^-Ss3 z+^WACd>8ASMfWyX%S4dynEyJ2UkV-`I@Wv=9#{vxzDAwP%gJ*BHz<?2H%5`sULr*q zlK-6?LmCl=ox_VOD+^|pj)l<dl6e?%`xsHIB6V#$QA%PiV4?guv}9A~`3{2xIP@@l zAEnouU@qGVwa_d(u%CRXs=5bqe+T-;H3Jd6m93#pxS?KjC!#fHEGiv-CAUloLlY}E zNtI#Tv>e>-#x~v`pUg_a9hU@^CL}drUZcSCXDnU%FH+gC8n*HFH65{VN=vOCUt}{C z!HKw5_#;Vjmrz~Ga9SvTpJmoPkWjI!GlO9aIRE1@BRDxKyq78p^;8|B^Jop7Fn`4^ zLF4x&t#1M0Nw{fMbUSeNT2y+BsJ;U6pWfD48tFn9YT1xkAKL9xq!VuN=D2xVqM4?j zw1;Vpn7laU;nb+MkIm25IlhBaz$XbRs^00cHdj1SN=)q@70QS<lEl6)%}Q9qi{+{s zDHPYI6?BJ=j9R6ZK9YDn_KAWgvOhPKA?>+q+RGIsc}Plg6*JB2iuU_)&Apba-~eZ` z$>k#&Jv|!M*Wv&+v=MQF9R6V_IjpNup**UqD#^+1uAqfGe%8>QX2P1K$2Kk89?u_7 z#>`#Z9DJ3O0$U8I{yJF{Dk47L1sa-IRMfENt`~XP!l{T?a~XjEAOYgeG+^6gv)({` zT!UwNe`s>2g{;HP->;lXME2}6mzSI>YzL%X_WcB~v7D=2-P~>s=R)1`WQ7gh7-Omr zQ-5ttmE@zx)Ku(z>&u!*@L-Yg2D`Cj$p(8rjjhA7(q5`YLs|xVmUjA5WgWpITp&0} z+~(=lzlR6IdCeSV3o;?Pj2qYo@+`J#Sc(%Z21<MOJgM1P{XV`ec<wwsRfb^qUMy<* zIeE)5LO&-+HN~5V6h^u)`{;R3ln)vmIQ<%bNJBQs9-$ffJ5KF9d90Cixf5-8>mHSJ zz^lXGzM)*TLY)k=sTj18Z&D#9&w)a&7c&atzpO(&^2}%KirP-m=C@prsU3VEK6uc$ zy-rf}M-MIU)(j`*N<0f1D+AU)JiuWj%tyY~eNSwFS_Bbfbb{d@cFj#^*Fs6ppN_d= zKUj{l+?v`H*koTFB(CRcO~hkBTb;Ci3ixuOM;#$Omssd<FLQTD`kcma?21c*@>K_Z z;73b;`Rr2$p?}x&5ksn1ST1mdFeAOdqB~K{Jt8QeXbm*aO_FISUkO=wUqY87;vb8M zv?y^8gJ*=t@Y?cL(_N1JU&cp~s!kK5{!XxLBxSPTA)xHT<|6rBk|+XqB5g#7A?7@) zGCK?h^<@`&HvN+X?}d5+AZ6i{k@QVbZ(k<jy|LjU%v*QIFu)hlxzRV`8vKzMP<%(u z1Dh>9q)W`0JLZW*J}}RtAE{GP0&rIrH|7KRK43Qy5W{-(CVL^wEMMr!jD%u7HAM-) zhJW=Sf?!Uya(NA9SCQnv=I{xyQ6ljI&b2?1O&Zw1n@7T6CPg|rl(1?fQ^F8dCVrBq zslrXlXz$||nU>20SUsgWYIOMNhJb5e#pt<DQ_GDtcNh~F^BjZbYRADQ9H~S~>is}J zwCHz1l%np#RRq%4(5jAmuMK5EfVcD6Yc4FdZ9X(0Z_SRBu5g_}q`hi6e*M>e8{CU- zPJ+3)1R*W1NamiB#tmpLObE7(kgmjZ-D7v~5k)gT5ovqgCnBf#Q1rwGDR~b9ePY=f zEjl^KInR9tBtPlE!@oVka{8v;86#@jCVCjeNbC;R&PV++m0!VU!0&*@;UK3FgYc=k zzE0|wk5+`;oFJh7uh(q7rwYh^=oSToJB3Gq!Yzq$eUJNIR%?V~PRJ^e<YQfdOiAPF zjT%l_!{2lA844sm_Gla8V1ab;YJXa$7=rt)rHas!Gvd?%(M;)v7$l2xuuG|j-W3|+ z89NVmHZuj1Q^I@_RzJxg!;sm&8|n>H!?v|<5z6NV3?Z(KvNWlP93cg@0lyo+vN2Lq zo~GuE6X3Z5PcZeWH#g{Y>tkcB3=ej^{->09(&pkE!T);#Kv3TP9gD)!`sC5Z=WaX0 z<IaCNQuk^5>?Ke5l!z293@!k&@$n??vb9t7zMSD01F40uEKM51G3f9}JTQB?#UsE? z0V87pvm!{<63I_`1aI|5$j@tYOB5@KI=I=~fs-wQi2F!9J=*G_@Qy)b);`7>7bi(h zIan3(I5X;gxpLp!(bvJno41|Q*NIi|+H2p0H~Shd^Fdg_v-U>vc%6>JTFMB_6$@MG z*Y;eCC*w3W+BqDD89~-iL}()p%4hB`R#$l{h{{_;rzkqtA1Y2P+jg^#Bb&ceupQbe z4-@=@ta~NsTX=>mU`{5|z}tT)8s^n+az@+%^C3@nXRP-T!n#fl`iCD>xpqUFnGB$0 z!!{mW8!TF`Y+|GdHu9fbSrqH=4HGh^;{&*iqXxnVT(hQ%S_J6YGS1hny^Y6wGjYic z4;`@23yvFDDRvP;QW3a74q@?Z_mZM#v8T^wb6<R2*Hy5~Q-faR=VeEf9bk#DvX+Hv zplNe)SFOi$<b%iqD=#dSr%_x8k6CgCGfv&DrMLD%?A`flj_Lx*O^=Dv4|kcm)^Mc6 zp=hw=Zr@?+W{ek_jjvTMnOkcRPREiHT$HU+o#cxO2U$+Bqeg|=etnic!sgH6c>tf| zgrxCDGQMU?j+of%p89DsTrb`Y9j7sq!xfIo|8i_vH^WFkXV!*o&=lR!scy)}N}vBr znhYX@C+mgwG71ugLfDIkJ@_k=(c+ye*)JB4)TorwRcaI7nehKzlc?<&u`Zo9w7DRO zFkjS=^w5XVviX>_Kpl9mJyuxifbPk?k6t!AxHf#|A?%mw0fkug3_;E2Zj!;MS#{no zYD?5OZCl`08aPUHp@1h_xXr{(tosdUoyixuJn@jn2YH0Vjn(x9cd6pre7QYl<zBLK zFI&tDslTv!<pXZq-89{V<~qAs7j^P04Z*ysfFxt+?e;yC4b~ZDlMuC%*RiCDfg8&X zFI(Fw;<yt%Ce=B-y?_OI`mBW8V6#W!JcIL^9q4@BYBb+kGgmqn3@A?<Xsc3kj2&#G z!X`=54-lH20HY&}F?OYcZEcdE{?5ny1^Re-2EtcE_x7jd=eo_7tyn~dDPo!o0eti^ z<bwSJ+o}7oxI2&y0p^D75-VY;vmeAlO#6iSD)P6<$_sR5$zI8{g*TDPWgob^fb;qV zQCaKHv?wmF%n3DFa6u^AL3FiX-TN|UkqBO%u;p@iDFVocA7J*JtpGYhBv?H&IzIiu zBav!VBTEw7bNNPyJ#2MA#?Mw;&=$PyG%RPcBP1Q7Tjzox^wsMsz%%tb3H4#Yz#rO$ z)-oF0^9x~3spR)-${(tNV?z$klpv#);zO&hm~D=ZFo3b@^l7B62vJ5v5qfDPeVcyE z5k@s#Kg_NMl02|Cbe|$L1O$#4G)@3-j$|6Ca4S4JZFTe~Eq|m>D_%O%9?ABsJ7im5 zlM|>|V>QOe!j^knS+PZVYn4HcHO{GagYxjvfj*ALeZx>wouP;)xJrv^<TAG>e+bSj z(*sqky7hzCx!D4!dwJG_Ussn5Ypue$Iia}icHO1(3_TPkmeyHwt4in{6=b}nMRE?q z!@jEapD&hDMc050gmDS7FouRh`?oa`hDjK1la)O<WwG0*IPl>Cb$AF$mk+F^i3NJ- z<TwUWXj`AGINz`$+MxCE&>(KO&mJqo+-+ohR5g`$_j4z8NjF3>rt(^$)6yI}DVF95 zsf9A@?u2J#TZu4!1hB(0zmC_sv3}Mu$48nTWcxQ{0OT(Wef9^-=_gUMQZ&WOoCW;z z`Q^G#7n$HMycI}#-j{JkI~x!YlF9a@@ar3z-F-D>cZJ0a<UpI$R`09(CavR#avtin zzY;5a&F)rVpxKc!hj!HAe;EnJQMxl`P1YZ(elX*3J**>sluozSU29(@NY39dKe6^V zL^k9c4%Je$O20Tj+-$OBVb(B4%awBP4({mZyl{6<zqs}x;1(s?9SU;&4(f}jF{Y;T zzna()Vsoiy-kR+wpjRDS&_~msq!-0Uia^wxJ^HLh3_-`N!a8J_DZ`sGU4-#JPk=)l zZku<*p+I9wJ%MXT97=l0vCeF5BwQ{#EWVk0$dOJ%_MY*~gXmm?ZfVu%A6xt0a%I&* zK(p&_yv&r4Kk2MGbsVa1R~OD7X#xY58K9<rc6dv77T$E>(c5m&olmDua>QE4GnrTy z4Z>zzPnxQqv)VjU*1$T#e#usfjVb`*4m%7A8s~wLc`|Ks7~<l7n|IsnGdNqX*X9oy z)%e%;9S!(=F0fR*GvMK$UCKCVaNpglApQ`&gKU?c5LWW}u#Fe>2I(){K_Y?A4f zu^NZ+`8FZ16$wbOQR*zHNUQq4p<$oQu(V&xeBV02bH*19I);z>ix?90gCtliZT5es zz$?CdK&*~HwXl9-9Wj<%T>3`egy-kfd)(&|W!lD~ewU^9Sf=c1h-(C~Q!RXQ>IJj! z(*T#^@Mk8F*$iJm18G)~-7g84H<Pbaip|#1kRkkT!4PT7&N-J;HQMd0;3cjPIT*MD zAI|WTJqKP|*Msjg-KgM0$d)<b{7C31X@!i{{OZ8vGRD>Er6qqc<}Pp}4F#<_zrqGI z*2-=xWZ6^HzX`><HCN<-w=RQs#^|`d(rKYvU;8a~)Pek+dM+V0=LX{Gu8}zzYCGR% zr6Tj&t|W3HD)!2U0GiKaT=;Mt^hr@WnCTmmGz!A0cHH=0c#bRHx`krAbK5tHH072I ze04ZWbqG@uaxo!FGrYA~qu|?Jt&y1O;b0i6p++R+^=X1a>~+u6GHn&x7``RXTF|>P zdGSCGwa3t{2kW&G2HA<W#jOGKP<0FZ&Hv^ZR#T%baA8qL)}&k>knm0A^i;Elc$V$q zmX@o{_;OLRY2AQ*>q=oATx%$Q{4#tr687@C0qzR@w$kzqpDr_(DWg#aUC?lg+*nz0 z=#^EWNaY+e$}=zHLhLB7wfxYgl7$%S6^<9@2l>pN9U1pge86D03>MUpm>2N;<;=>; z&icNqPRfP;s?#VkQQPJ3nlc;z(jBS>nXsbIWU#p?W6GAwQ;a3)9QHUuOe$hF*E(`@ zj$#OTF%e@Nf55|55zi^YfFQ{g0qH%t1cIgCnI`Q_kg9{Wt&wECYNHsIG5UHrvO4r- za1p}D?2pVkn131LGQmwg_8f=To6NB-=OWij&ib{o4DrvR*xbK_&Vw^Qn(3;fmIW!2 z;I`wm+7)z5n+4-}h*t^W_}Q?OPeh!__fwKsW1Vb~GB4k$sFVnPuV7NW=?17>G{>@Q z(d_lxfDH(r!VX(tx(>Ckn%WGL?VO*`Xqs)u3~`WkT1WUziNi*+&V8rM@Rxl5eh5M* zOdaywpiB?TnY-^sKkR3_{(RxyRl-j&!sT^YQVPJ@Xm~;D$2;|;K^b}01M4WY=8ID( zKUGp{SrSj}F!RKBFIsJ;_<>VF-1?ld(@~v?&)azH!Dr;Tnw=0@Xkguou~@J3U(z;i z<=B4tr6*+7uI{_So(ZxCQ((>##BZDc?`)xXI=3tYEc)Sx)5|EPe?vsPD4x~+oXi|o zFmHUHuSPesp7U>R)SP1DdduyI4SG_(k)cv57QGtAsn~?nt{5!8_Eg>P5B%~kgdx#P zm2KR8ZtEX5vlsSfT0uLQ76Yj|L5F?*$s}RZKD%Y<d>bnM+7~IP7_U}b#g&mcJb2@8 z&LQq0dUCA0d8SV`g66@Mety%-Tef4hHJPd%{Mh`*9sT$)CvW0K`(bloMZex{(%d*o zH_osCQ2!A<{CoQ7E~%vn<m6K;MBvjZ3U<Bk@?IzjCo*CdGz=2lL%Et3Vp*TUcAPgi z?C};e!6^NrrhUzZZ!2ds|J8R^-)lCX%c$aoM%zE51L6`vwhM%1$D5e77`pk=M7$$U zL`}%04dZJG>Pqftp|I6C)K~ZNBfSl9i3WnFx~*t8aYSrx&x^RtxoW~avghTRnB#rv z1y(((!MiUv??oCg>s1VPf1ZgqR7zdTc~9IoPb=0_#iah$mM(&B01U3OD7%{NC7_LL z>Z6H-mM&yTP_2Xhz3kc@e$MDrCtfFLYxH9LB&?1^T#oP%hVH<Lybc6HvL$5`Z0(n~ zA_0pQq)!9}Yj>rG{e=G~e?$tS0t5yBg-Wkl>4Qz@)kH48OS%8?fP}e^;yp0v1kf1~ zjc%F*v1REv<y|>hMp8V@iF#ED26uXu5*}RoeRMNnA(Js#d~ug7(VsmYxNAUa1&?$c zrbVogg@THsz$Im&H0%pA^;`^cwoA}8YI}d#nOg&JP}*s&7<EJ}VrW^8)6XS+F;~VG zA@zNF7_s|1SGFfM-EZUQDVR+V{?R=l)M+AE#8bH8YW7PrciUl;3vhLWit#ysH~&IB z?`Zlgg;A~P?s6XWyCwILqk{=WV{6B<M$sN`{7Us@{k#wt(+X<S|7}P&I=a8bNQE4) z*(_vIbkys;;9V=O&MB*B(5J9XKuVj!5gpas&dtqD2knkfk4~)(rurUV{W=;RhyO4G zHAL==y&|>XM!}$X3+>X1a+@1%b>G5KeFiJ5P{ww$to%*6FM`xSpu#wf{;s&=M*ine zgvC?Av#x-wHB)~7&|{%L%~FS@&e4q%1r#6sJ)x7>m}_wM1<X&FM+Sdov#Q~2-ZtTv zuzOko#v7}vu;nHmuyRt(mj(^|o3y%rAO`7G(bJb^)^2z8up){fq7SLGZznx8h~xK{ zh<!i?iMm7wKSHdNn-+bN+|7m4LHq;s+MU>V`dH?aV(QEdvfCXy_Xlr0)`N<1Z_zs< z1u{g(mLu6g2wV9C)YP|)cl4sk*wU&q9*AELO66BkjC#3;BpBzetJZxQ^;uf7D<N}r zkqna#r#Ws9e-HZMlNBLa(>|YYDX}K0l1v4f{!s7fj*?VZ9lcDhu5!BTsXk>deCSPK zpY!OXp6{=YWO~qN8vJS&sWDuoVfMIBK|c39e%d}CQ8c+_$&Vx86Su-weYaSVz8}(T zF+(fwz1v?Gp?Pan{XC-6&TpSlA+P!3$EdnLkI}Hhe{WEb%KLH=&^w{CD1bl6LC4Rt zX1{gs`Rp_NvpQtij`Gl1#H;mCAy_KwR59vP<-k@C2Q``kd4U@<R2$m=#x!5rlg1X$ zizS`Nj%vmgSQ_^Jl%mIk5kM-P-1L3EhkP@A%VP1!%wOu%!jL<4z8gvosFp^UP!CsT zxPEd4ppu-~3Vs#99-#9eNX0<V4y*l}vvyqRR-Rdo`0a(~&=;g+ceJfO%|2URb{l`& z^{gQ8jzYNI9XRm1d3k!j9^D;Tc|pGiMNbnMI@$f0F#qn~7BYknR6e#I65~YE4F5a< z1Q!eypJwZ*r#d!%!Y>WcNZR$Cm!auEH90CCtn8@IL|fnN;PVdy6@jX|q-KIdBz~Jx zM)#uQICzC`OfdU?VbHWCC`8~#kKXcOoO19SnhE>ceD9+CEXxdDl=q)tdzW8sT8SMR zVO2x>y^Hgx;p?z^S$KElS|nzEj2HXf+4qaA!B6d3bxcv|C8^s3$?r&<MY(s-Nlw@g zp{V7dz463*&vawln@HJ$HJ`xMr`P8_aNc>T-zf8(23@(-VQ8Zp4MC~av9^qksfzsk z=wj!<HsP~RTL<be4l-AGFxpYb3!fbPVAcSD=oCc&k+zIr+rgvpH!5A)q=jl^g{<`@ zd^{_UW|uT8vt_efLUcA&Bz(!7f27t~(cB0?6c~2o3DZ9)ry?J}b1i+MKp5xoltK?8 ziGyPThAffcp(S*i_tv9@xxBR~=e!H7^7+mddKK5B&qwfM;taxMTbj1E7cv*uhx9vn zeg)(8_JoUx4WBu#y_8`atMbsGJL<4@C5gvNjl2^WTi6+a(<6rIg?!b+<}&C<LQBHb zn)I={l_+nspGZTBa<@YuWDeOOWwBU2E0N9Sj^naKhYTo#ksv<G8_P?!BH?A$bRSPI z;b6UjaV%l2-{3kZ#36~_V1iKT>gmos@eK*sYwg3Voran#Zn)i?8B-wGc>fhefJHpE zAyxa9Gh@YYY)l_O;iWH!jMvml{Ep-`H3R7D3*0`!s3o4K6_lA-kz%BCyn3OOZ%`f~ z*xo6P2gNVsN7`ZX01$ybV2HROOjY|KHZNf|1rD3Lg~J_-#c%vm=5}@yPLZvs0$B}l zAHgRSl88*mo#*KDUDapl#`JN<v`~CnE;EDXHFI=>g}+q>Erh!U04E(v1oP+|5abng z3vX3WjgiuH?|tigvTeGV&(`v<w1yyB9n9bN)Q4;5BozL+9D4bNu0&^a-*5348cSRT z6qxk@LEnVpJRwtG&0ZPW3uF^^iA~<tB{A;&qw*i)GbD>0h;E-~L>6OZ%3VclJQZ`> zAqG_4ziLUtd1Vs^3_b9+>NZ{3QooS%hng#p|5h0w|8p63gMt2!{a!02Kn!XcN1QG7 z@q2C*)<6Fg?1n%zjAjTpDF@AG1V<CRp403w%%iL}y9`qQck%`{=EnBO+_a+7;<OvV z(ypI=Ed|$~#nYLf|LhRwEep_d{YSRt{WDbmzf6#TqN22flJY-xUFXv7kUilyr#CPR zkgSC*+jr_kzr?Hbb}NF(Oq=ZdZ(<IhD|mq6e0_<@c&XUd`u68;ZKT~q5nfC5ry~#+ zZiMl2?66_Iy7$}hS$Oo=^7HkRwO}9#N$TC`vb7+Zg{bYhH*P6tI@x7|yT`w43co!X zuYtge3|Kr{7k(VtvAbk^`1uVzFL-EX;n@j|hYp&N9Xnx_@8@nXimg`no1*-me*B%1 z@Q|I1MoX44WAQ2?)Hu=9p)EqtlgeBIL@HxG%<Lfz6!J(c)C~QUBt}&Ma5%6*y+lKq zJCTUgAPHULNggf9n&?dzO`IYeIs;TBiL6LnF`?9iwbVE#6lHRc+|0yCcOChGRDuoC zAjxsS(l^krI;e`^JW$wQl0lU0?w?yR0+mDG;{Coy{FZdoBZGS$<}N__h98L|g)T** zMoBzQp-d<TN`ior45sSaTlR6QY~*R9Y8Udb7b-_!D%83lkc9z7K=YDOtCT}zq>?}q z>J6PVHaaijhHnuzBo#TKD0B|6tS_(#035jm8#V%|?=iYd4dkshkOXj{p}l^gK?PGr z*cg&k+5+whIw92x0Ts5qT78rw@ll(SklvUA;70?BB@-Q0Mwo$S0%p%N4l{s(M?iXL zP9O)H&-?YIv-JoFLf{$rfx#C_ZmcS=^yqq1E$t_Mgu#bO;Gs8WJeIG^^Z6UHJ@YTa z`68pt8P`MU>d~y-PQvZ3ub8gTZeNm#Le*}!cl)}vEcDEsb54z}V}BR7CkH3i^(PLC ziMe;o&~MSBQvMzT5})$l;2>c;j2HKq3`S;NvAL36Vdw`tLLFg9^Ut@F6GzU@ZaqAo zK|V}9b=h=>ht2DwlZ!KK!3mI_a<`1&`GE;ah%ZMUUpJ0^pujpR#8c->rhL8pN3w(+ zh5N3Ou~4$(i?duYicyCY(Am^EN;|^qAG+~EF@3idn1;lRCrtII0=hxwa+x0KL@_l^ zl+T~p8W4PfKM3#u_=i#Kuvwrpiw}e)vWl@v=8d&AMG}hci>B26qWI;FocN2(B?1SM zSZ46Kfi&vN5vava<>t2Sq1*s<gy50$i6Jcc<ket$xO99uSU6Q8JQiIFKFl7So{A=m z9~FdJtBG`2Yl&2wYl&YRe+BhyCXHi&vt#WarugJ)W^S)ZN^Rv5O9^5GACTWMf|2Xc za)a86#D0~=MR%<-70LQ^F_IO_Ak&3{g7A&YPQAE<Vy0zjj;oFUz(dWE2(~3XVW{#J z6$stIO2S^%Q_9qG1_a8*3J>&`jPmvgmI~$VPcG)S(93){11O2*Ak%NkQEDQ&CCqa` zXmvd@mbl_6^gId{ICCm=Ju2onBwh;L{p7|b5#O(eYZZ`6GP9C6*o}x_yHTd7Q5BPt zYm>?LfN)i+;u?#^RF&*b4+8Npr@OPmpnZ&4+b5JQp5vQDXHxJr#Hp+K8W2^P^^J)t z&HKj$mFI)wo1|oIFeoRFmcrv(WMr!`FjvOQF^Ly>Ihu`%XqUWFp`u~1hnctoRERz> zA*oGB;6y_`u;A`C@479dOF(tDQ}v~FW8P3+ZXS?KCE}ov!*RBJ#m#Db5JJoB*rOzf zGN#r^$R+i2RQ6EF_eeEdje6Q(a@If~P7<B*8rRXM3IcJS!~Eg>Bxm@K@hMyZzu>A4 zFgk{~7!v!<GW7faoyrKAN+7)HrPP#t!q$Pi9_IB<d#KdXP%UMSaC{zOX5(_^8WL0> zmq9={Xc12N%u@!al{IEfG=7%^$K^<wf2z))px}F0+(#G~c?fG|#qqv_N}~E#%IJ;b zbnzhl>KBNNqta{(XBF^J**6Cw%+UIz8O>zkFfioC+51=g$2l|ccpJy@q@UNK5ldpk zDReH!xu23`P)6rw{POtMuJGa>IhawI^Ai)3rterS&`#JtQH$bnR>87jLYYgf9bpm( zqiA$6nTL+h_ch;8SRcfpv2iQ#t#YCE=uMgn^i~;J`<&4nCd==zxL^d{x938vS>KRL ze#-_8Tl7@k$dl+{<yb-*F_L=N;UoEx0?0_5UXp|F(v6>bCn<nw(e43cNmLRaqR~jD zA%xF2Gdm$2!{9)_OHtbEG1KQ{+tSz+WKANX?vJgBh?umB)5s+J_&1aL#}uja*<UX~ z*+3U;A@1$nik^+q$Z2uqEwi|~2LRzZU}JlaMBe?gv9anQ+Pc+80mJe6e-jzH)4!f= zJ()1Q@$_V8Z|%s?fv?E?Bc74WLgS|dexCmj>5a+pF$jSaQ<1%J^CSv>Mo8o?enUfD z2Px#h9F^uHL=mvGXKYgf;MdmvAwR4PD4_~?FlAi}Xjf_EUk{qK&^12Rc0J%Q6fRG) zVveNA3wkLnNO`ABr{fRLr^7uKmmP9gnS-jrCJ9x1<PA?@i&edROD~s;3(@YBiGuJ( z77vT(^f2ZbEabu{6a2Vjjyah%Zj3&WvOy4G8}oo4_7)`C+7Q%0`SIOG{)COJ(!Sjh zf(6Ri!OS0sWTYlAd}heCuDb0=Cp_<-{~~2x=9Zt%t;wx_-em5k!#rNNX|eUx2U(XL z2Sw2<-BUAgN2E$>w2drMB}mHR){j$a>Zfd%gr3l1+6e6%v00fgk#=~SiHn{JO2LwG z(&arO5VwXTbOVzTRrkk-j&EpbP&s5B(`P@+Be)|ibi(3MNFj=s7g92%iP;D!QRYOi zkFhipFOhvlLvu$t4Bebf5GlWA5P(IMmZ$(l7eFcW(i;;j`24q=v|iWG4ix)E7$$nD z-3af5eA5r+g)&TZ>|_wT{8*_oYPK2e4^!W{9kX1xDT3ops`q4tGw*`?yDsX=%le^_ z`(>1OSA<)b8!?9kT+P}5t&)ZnQngZs&5I~+vNt4GL+CX1rI_E*&zV+OW4H>09R-^p ze}&Oj00z|+nP48WL)~^_5&904rfT18k`3Nz7_EW~$I~ul*zz$rLM@x*o2`WPU{|?k z)kM{fJ;`I-BUu<nzl&*#s81@ehO;2_6#fh8IR~CP@QiB9WNe1Pcy-(57Z@6{$6-co zioT4HQL8W<T_64jtr&Z$7qo8BgmnHDR9WD!8jyLt2ds3{B)jm4_QnR}-iY+Gw#j4@ zBFeJ-rN)*_I1(xFB1H=3+QNZ!k+|hSV@gJvHpU{F%%NzcO_XHwb3U!cb(&9cR9^Hm zPF{2JzyGD^aR%GNBwDN`9S@px&Sjt2*wz9-t-f!C8j?-XNG=@&BNAYET0rD+xG{Zq z&%rWX8#kX`x&|dCF2{e|rgp-)7tUG9tu^JM-jF1j^)~7%1?x&+4XW(P^z7L_)o*03 z`bVDSAgFpGui96n=evc9=LOfMQ)T`70N<Ib=Z&COa<KN;UC8MSrG@llmmL5@Xy`I5 zx21gzOmm?@npwka9+_Pf3vR#0E`8q3TNkkL2_<`&o0JJ7z_v6sZxs@meN9NH)<d8m z==ilg&Yd(|yltbGtp^|>>{L(_<!Wk@8LoKx0InXYE&~t~DhK_`Zb8s69I`s;Tt4a{ z`3=vYF%2^fS41c<-T@`r-G3;jpbkVXk|Q}#m2@p!>dHh>nJOiz5*&kijTLeTF}<fJ zHO^cJISFT~$b9QWUA_v0k^$#c0|d8j;N7bzd|9xU-AoAtb4}ou$&h_j<0EbVO*6TB zR~u0-fr<ITn;XQrw-qS=wVgqLOG=I2cCX7kF#{P8t8t!<ja-CT@D;lm&18JkrKq2{ zTy-lh552*_a$FIWgJI|^EC;SP#b_}2bibY`G!i6MAPE3#>h+{a@lIwkuy#6dbC6i{ z&)I4qWyQ`^zg3q3m#ZV|<DpZr5$Q<p%t94A88o7cDodl-EV?nx0pP$TP&T3w5qOwq zVWP9h^*~;&R&icEAk*FhDv$`wTMrhx617VF+z2E(F<9f~V<SUTF3;k=WT7di>W0s_ z#uei~PeJ$k-?(jyDn$8_d>6mhSgVv@0Fz2WYXgPl&slHVdGWq}uLOF0$(Lh1?=;Wb z0R`-+MT}F#AX=tNcd|Wdq1yAaHtWBVG2n?Eh?lmeS_`-RP*xF*klh2`GpE+BQJb@6 z)j;YxW04bxpHjrQb|IU}5a=Q!-Yn#`m1>)o5v8>o5v5_0FPeiHGoju!=uufW5@GFH zwBk>c=Q%@LiAi2aj<G-&6!@*}J^7VS<Ha$!!i9KJqB=zdcwPh1lBZ?<7$>+cYrRlA zl1p#{BavPzn;n5=7aC>^s>8v*%>Z`5rwY?(IBs^1QTXuTD+9)f6`q~#wN=N9<#=yz z5X~%^Z|c{kG-;T%)s*e9LSB`3OfC`~mF}<da4%QJFd$Dn@wcX6rgS?mi;xm>Ml&rk z^mtzj=|jH2YNz>=gctXoGKqEQQJd@fjyqgfQ<{yZs+!z`bD6U1*XA`mNS{(%hS?kO z?f+P3$IJ#kuX0Vh<qLIEw<sOs^T^fe2H<(`p$~mzg6F5boJTRXz7>>?=PAtG9pjpu zmVwro+%4G|ULD=tA9Uu?BP5|~vsE@^#?GEjj?BK@Q)EY`_v4SpqkmyoB9hxIrn<SU zpAGYf;Ybg}?-l<1Y>Y3mi^FKJb#D!|^pxgu(;YkkS8PG+{-)&Uf}_|<bI9g=<;C)~ z8om_G<+jfCqo36K_37uUpM#H+pM#r=D_2h+mc)67JAsFZj%$X{_xnC2gv2n%`aI0> zGc5QbvJhS{_tZ^+{@os5)KR)c8uCn1nYD*E&gn-8bm8{_i=h^jeK<0-IkZct2zBD& zW>qNeLU!ZIS`IDv(cj4|yJ+UTPzBLbk*{bjE!O_VXxU%Rp7spg?=M-fC<pv{%$L;p ztE?);GhJ_w7DYW&3sbGAbyxpz{9_2H`l7NI<#cR7qUQ8cTP3)gyFnk=e)I}BjTBEi z3N2*L;q7(-3{i;Zq6tNsZzo8;vV{CCOu*}!VkH~ht$LlBHC_f4MZ)0Fgvyg-8JEiu z8Bp~&8v>Gm|6=PMgF6YkZtrAb+s=d&C;!;ColI=owr$(CZQFJ-v7MaU_fz#&J?Ffi z8hdwFf9vkOuC;!C%9Ve_peF1E>Q?c?a9xzzQjRU0?X4;(W3J8@Jc`|AgjF`T^KETP zZoBK3*ojZI$#}K6o5}*F3&5^6B-2W$oUr}AdW^qxEXb_uSfXuUq716cFR143QN{gx zDA9r)RXbFkKGLF^m*5_F5XUwvYA5q8imJp>B+iQmK4|iDssQrqikn<fg(0UX4(V;e z=-dtCo+H$@`UGy+EVjlFq2_AW!)bVm=K64q)fM;AmHeFPm<MwuUqw+6m7bYvP&Mo0 zS8_&nk&`10;w8@e>Lm)&<&7u<8q((Txmj$>6mkjs7lSo2HmmHN=(wB=h9RGxxUXy7 z#>rW1cOZe<W%e^2aVF%+<5|ykS)q!d(w3ZdS)~Qh+cLz@0?ap;gUhSBM+a2J!O~5a z!>UuPUVo1sD#NVEtKFwp3{QvV)ajmOEH4uV3&^(b469>atviQ+kI0Tcc58J0buf(J zaYt1Swe4pcP0P@ExJ`g8c9o}b6<r>!7iw|ZRjF2!6|ILE1;{X;&C76ED3^%`Iq(0N z$M1SQP-bMPU(4L-WSt_rXY%+mm!2n*V<MvdaxyH{G12XW@jU2Ew4&&6Z!SAx9WeTF zOlM(caHe-<K9YiQhiinmc6mlkAiSY8A(=ihqNn@;Jmy(PzAD7E?EK@zd8;_r1t4Sa z!M0pgGD0;)x$CK|isqXVgp?93;0EgkX|_tjMX_SSfh&uaLN$aO){Z5ZX3J`r9@0Bg zuvw91pcC>8<3Y<rw3P;lMEZCQnBlC|3KeQqbni9F>5=Dyl-V~xbI##PByE(|qRi?k zwFUj>P%LQ!T=S1<Vaf_?W^)`SPSoA^Tkrylgn=%@R{zhXa66`e<c8Isq8?t*@Dt(t zPjTG<h!Jn%KSdBTKyt_0PjQbZrNx1dO*+BjzuSdjx9{fvoQUEF4ry@!Vp~YgBNI$X z`p<6EpUy{9n-d`0bfwj>W83o0%6=KX5QQTVH0ONw)ITjzZtA9i|7o-u&?Cb>yTk>O z+2Bj-*LUTF@Lgc>CYwv$o(A4+j4DU^@13m#t)OG~{@VqaDP-XO-!58{fPKFfkX|#K zh6OoCK5JgKeRTM9Y|m?SnYt3^?0s&aB)D@=%iG#V+_fj<@~VO85S7W2TcC((-Tiqx zL7$~Wp{;<Lauk$WvV&AVSgBiB2$5|Jg4LZ>Z(3TkGiA0lbLG9es(`5-a1p<_q-ZEt zi?M5biec}X_VRJ)jKbG6GIC|~Dr16NcjKXIe`0t2lyEq>@;3`|2A1JLY3l%%m&ji} z3xVDQ<r#v;mN|^-VE5EVEBF{6EOc%qI-o_1!84g#NtRlN$fBN{`R(^m&oXy-p$JF6 zwegvC=3g;R4=iVx<PdvI3$ACP7T~T5LC+dE$8U<GBdyYnNr%7%40@iI9zR`KGB!7- zdz+PqMlD{b0@}P_1eH;yT6z#QaSq{N^dI>lFQT`!JSX|_6R34L#nv8iM)tQ04et0( zfVEKrd6(jl?5y6xI#t79Z=%JugNP{WO~1gd^I>mGf}uMn)3%}`C;K0UjIsFN2hG}f zkT_#*OKjs0{6G9$M66A58$|XxL>89*Ahy7lnAhBR6Yn!O2|ohccyRQ2yau~sDRHu! zFVG3SLS2{4XT*5DM=nX*X}}PiI*i-MiE!{Obv~tCgBiDA*6D~#Fm*DATIC}=dK+}2 z|J~M(6v8*H%iHIeXNyfSg|0V4=N8f3xUsJC|0A&EDMp@$lSWl=SO>c*OLALbf=}T_ z>atirHMMU(A)W5!ccxlxT{CQ6A2G5v$8wJDu&g*_)%0<9t4J&9Tumsy@{uTx>&1ZW zHCzSw3QVvgxc-$MY!v}ca!&0PE^uoh^Wvd+A!FynKM&0~TS7tOfM~>#lj6!s#lB4A z6X~Dw3~ija#k0KE-R+OJHZV2vck0%eU4!D%v>}XL>!p4oQVP_+US}&jlVsBN?!EEH z$}O&ohU$B%wy|U|CFYaZRs;J7C>rW~wV^~~vmiYsLKtB3{1G-mxMCU$vne~JB(F_r z{kLuES{ZGtYkk9nW*F^b17GXQTM3IGOJv~mlzb5I>mq%o2S!xfs9Zbxfaa@YWgzcQ z^h^&(B7cV6(jBfh!9H`&iykDblzXK$i|AdReoHE=98J-j<xx_nBc2Q-YaA{1^{6kY z${*+)bp!ZE#3^cFnY0#KPBYp|pbkb__rLkr27K}8A182$w}`wZi1fk>f-D_7(jT38 z<tJs`a+>&_Kn^K9bC%*DkyO*S{XMa}N1sMAUx-@yhpeynFd0kS)BDQ{i4Byc-9ZaL zx;n^b3LD30c3-T|oz8ME|L{MtVVNyL!9%_1N4b}o35&av1Qp>u{6aI~Zz`w!U39F7 zob@^Br9LY*lYyMk2b3<4Tz+1NK_0fxRC=688v#yHS4|6T+^!zV)mi12Kde<V=7`x( z$iG)#E;rShcH73?AU00$y`=Xe>5rQ<SDf^$vY>1)D|8g9z!$wc95}oG%pWC3(LgzY zYGt9=5ErYlpXWf2-GCv!-;DP0(|bACXX!6I3KF14;DMTF5CL!>QS?vzc`n{72%k}e zPbeaZ0RK`gj`Jen#V^~Po1IB-m!V8-6F4q-K8vT0n;OLtXY*Ewdkq@P5-$(i8u@N# zi57@!j;soutV{ljH%I>!G}8%hh^t|CupXw__;2`&OB5L9D?Uz0PQubmtx^X_4ZT%h zfk)JU9a7UEU2@nbw_xm&T)aR$L?sy(Hp0c~oF_eqMJ$LEJW~ytt(LE2vk)uLkMM?e zS24-Q1)qu1B+yw@m^vahlfr>+!k6L#7VweD#;OlZU0Yd6E6{2zb04_9wCwPTr@wWv z)(r~0pgy>POwUxh2$L3%Gc_*Uw$-YfJ?)RZ?J^r58p|LD8l(=v{BQBibfEp}9R-A0 zol?9OHlRX~A9Gj%r;P0{ZYyAXY#utWg#kHdCOSCZh+dNzzs#=9-d<Nic-eqtK?@09 zSA=<gT7U{MURS_*n?u|}dghFSFHd%G-)&(ZWKg|)Z)7=Ig56t4-1+x1JgpI)LM-5~ zNft4$xQSOa$<O!k-Fs_}x)I*Nr5`MG5jrzaXKP%!>1$Rvd%Axflz+=pFGkz&3c)Q^ z&<F3CJ9R~ftFo^r_!EEg90dRA=32BC!dKj@vtS>{mFU7RmvU3D4JgDc=*=|b5)`)( z4ci|N*N=RAPWJnGm_z9MIfV16rVH<1ZYwFGPlAo7g9Cfk);8U(=<^rG|4s!><pz=B z`U%&0*8l&r;ybw->N)EDC%^2H%fbPtEpF$LO1Eg7m{KF&<zTVe$OesOPFuxvK97RD ztb=MP6m%#oglTe84sh_&Q_=xE34}Qr5YO7(j$3XS=jzCc9pw$YYj)!6v}($Q_xB+U zV|opdC$jp@5^2bC+~k~4VvX>x&HTbGSrD(~>CUirrvZ&AUgX9F7EX=Zi}R)jLM-B{ zaO3vS*A}BuRRoL2*S#z+_xs+(g$Y;{%&swc<fFf@d`sXE*WN96PJ<OH#C;X-2|03d zzV4WTcZY#X9fp99kn8PJJlNN`tX^u1c#8Z*31_m1<rTTv#g6q4k%4E?MgjB?j54Nc zF-9PnmR&Mmn(M$4eTqH0@6U-L2*VofJF3V=EK*_M++@d#+2s&r1o|XIIpbg`=s#4= z(5g^i(Ted5K)XDqiM;EKK`uh8JzS=ktz-K`LT8X0LkK%b+~I#c_!lNj*(B=#a04%I zt^S@n=U(F|R&NPOSV6>Pca)lfz~B2xCn1y{_XC{2N)?|i8jo&@Ci=w;I1vAs@yqc+ zFl<P}-3#WLgtV%{-qdu`gU*__+0C0PLy;*M(mUhdg3gvuuT}afdrnLDaY%&DG)O@L z6UhS~>Il&{sGE!bIPmMj{5CN;{>Op8U?}%698RF~@#5bF#z*fJ(*<>PqUD@)hw`*P zgw@=$$KQL++WX4;ygI|1mGzl7QC;J{`k;pu^g+t$J?;HH0P_@r!CQY)%UWxcR(zgP zQnGRRM1lq>YdrT)iT?Ou*TtI+hJ}7@fF#Q!VupM|u<FX|+I&4nZYz`S1JQN9=Y<|u z_PxL*K>qvl<<5PTmyJzWErw<X8FZs#l~AH_O18PV3@ERZF9?7HZAOe1&t8i^h+hP> zzjw6Z%f>w#SmN@TGO^uAK17Dm;4*NVu|130Wp@3qoHs2!$)~*yAC7i7#jBy66*ro0 zvb^H#(4C`J_lYcFZ+HABvOw#xBxuh~b{19W`>*&n!Fz(d52XIgk8hu+16xP7cbrJe z@>j;b!FPN!I>O190ED?g+(++tfV6)&!-EQ!x<~Hfp|RI1vLmW#=`L;y7G(oMozJyj z@gqylXRl}i`?CT9DxD6)1(zf%16KP&fMW}|aC7Vugbuu%0N*W{E^e~6)E(om#FNF@ z2peA4x|VkF+YM2=)zaXp6G=V>FjLmtU%N4-J}AP#&jND<fjCR=uYIaZK0v5jBvX(% z!iKnf$|^E`TVkuMVVQ8${sh||xeNmjq=Jcpa_6R;Kg^7rSH1p$LD^3az%;`@pW0_^ zzZq|Sa6+;^|J4m5-;AadU`|nznn>}wX}WLboj&u|hVQ<*wM?^aap-jK;q3tKk4Rrb z950iawNrPtK<#iEZs%*TuT5i^@LyHPn4r27<{%C2M=rX~v!A;7obBuak|$v2MWV%& z=M}K`G!Va0L3RI{E$b4G0z`E0^=wn{vU+_0_~$2ISvlCg$aSEvj8ym}1abO?n_v%C zl<L1EA#>UxDyt6>A;w}o9B`MDVai*uOnr@3dCtDi-09C+;OpSg*$2(?&w51txGi&V zx_-<w0TUUl2e-95I86XcE2wFKUlR++J~}7?->)<EYcEiC)kV4TTmDVir-}+$cxo5r z_EKt$=`zu$9!@sAc|(?1OkmIN>wQQ8(9ChE1MsjBR5#2C>%bH(SQp2j<WaO~lAd}P z@s>GCQ0xK~$ydes(y`@*9&~foX5sOThVlYV;8`2vO-ygG!?b3Z4?E3}*&0|6sG6%d zNgx16r&c-D`b$Xu6u+YL38RAi7_T>_*uHGv(~sx1xMjGCn3$kYZ#yV+n*Elpy`=t+ zrnJbUi4<DRl+A!5w0W@i4I?@^czQO0jy?wGf$+cqh{U1Ah-+79A`k&Vr;1;G%<HUL zp9ZAKP&#}-sM8dd4hN{nzn$K_K>I8E;z(MkspjUosctEu1GdM?dTJAZp`UmcsN|S; zxsrtPh#A*&Mx8C%9QH(#NV=P(m3}}t{sFmWzQ77eEeYP=;2)LSI+_CU2o5s)#=J_X zf8<ygA82h^+Gp&*^fX*ke!uDGqADeHC@?@xWzEe+=uMaD&J_!CN4;W#Lrkn(pdcVy z19iMK`P_~quQRBl^bttCU&GnMQKx;JrA{`b;0F=%?}U&N$6q&UPw^<e8-o(<NJfTv zUO;0zA5FE1k=y3|v-?I8oUCGrhsKwzfh5Q`$KDb!iGnhL^J;n$hxf<Sf%`2;9g@2U z!0elCTMULmP=Tv#u<hT|7Rk_^rZ)o0-iLzKM-u+npvWeNUWCPhnDgA<Iv~iNMokGM zo-{Qg+TpnM4eA{dREVF_-<$EAb+;Vq+q_&|E?5lm-{11^-rWM<oK;IUp6`xFY>ce+ zRT2OZl|dEVo%OUNYBuFsMDwN~wU|QxbuAsMfnR78HK&FSr)^yJ7#HwN5F8M(?MRQ` zG>)e7Dg;=R&_P;RPx8*1W8Rpyj+i6R>LH(RCkxr?N-9d`Qo@$7h5H18tqsa%#MG=R zmFtl}Bs~^=ejLfMe<TwTH|X{C<vL!>0Bf7A6p-xzS);`DX;Y72Hk<0xOC8ou1+8t0 z8XEF9%tc}V;u=FOfz!dtVuD8Ma}d+5AdSEaOvmgLu4p3gHD=S#m_;Ch1j~DaC@$#2 zT*wUz=cprWfaDb06SN{69Bsy;X7Es#EjeP+GZ@=7(5Up!fv%obRJJT`vTvG8j*SRd z^ru)HYU;gPdQqY8Rx7VPIbHx=UJRe8wfPt`ENE6v^mtK<mEQvt$i!yNjwx!+rZzuh zCn+r8nd~YyQaz@FNJQmoVNlxTxGOAVM!-gd<{R@}Rk6Mc<%uVw0(Z0}v*QMuX}D*S zxz5Riv`@MVEWo1m8ds_BMF3gh*vs@`3sY{8cwVujV}8#{<$hh`@E%iPR%>?a$EJi2 zMyp{lU!%W1<U1Z(Vs8*DJ1VBi77qS76Tys)Q_|pGudiBkOe0JWLRg)PCWQ2HLiE#u ze(NVXL?>hVl#52;6dxNV-4d+s=>dEX`(GsPj!0PlmLGa3(qL2+Dk~~;WkHtKq_z;M zm%ycwr^Xm?N18OWZGit6&jdw0Ss+4iBaP_o7+5M)25TEI099K^<C^Z=3R9FLO(*de zW=|F?XcY>TF3VEbHjrIYPRBGoNF`HcdmKFtm(d`ATm`FbWi5;pL=@A*$PONDl{6`h zY_UH3V7oox<2$lOMnna3osH;=hu}xevaa}X2?-xIKcX<%+S_zn>P1eOQ1gAFCklt? z+O{)*TG3&&)Snp@uu9iUA5c5|KDE(Jjtpzp3rhp|8cDrw600Y|w5^WM(an+2-c3A4 zNAyC|99_t~jdLpsR<s^esj$p6H(N?5rzMCix3y19Bl;M=M;c~3=fKj7S#gvlLZjwK zOD$^1QV-G(#jjN$R$4(g8~GP1hgJ$w?sg#~x={wT=%^6W6#+d<C?6I@Ck&}APDwH$ zA~QrF)g;pRad{2W2K5fGi;TA7r1J}j-x2f^FEoa$^_aE$oCV$cX1sc-Lo^ow+O7c# zMYDZ{!|tMBPY-;u51QIRS2#;#&*xhN1J7mlp5yhDX^OGJ8SED(J-g|82C6%OLlmVG z(*P{$<B|x<oQu=#q+ILR%xz8vn&nE80FCC(rZq)Qt8$w94+;P}bl`w^^=MMtogrB9 z68VG@xL_5|z5*4k80Yyhb0XjkvT<G>ub)YkWu!#V(I|j=?>kBn^DeS)PbME62zhiQ zxTs?YCThdT@$jJ)DbewZ+QRtlX#Bvym5o~NKzdNC9TcKb3XvXV>5oc^2FO$fLl|XJ zLAz@?N0bGTJjdaCc<D4i8Yk(tQVr0Q<gw!s+0v@efCe3RgaLvQUALlO^R18zLnppo zG$1mEeu1vtpfx;qY)uJD;6{cFjR|hG+<)qaNJ_mMp#&Ne_j>{gu}YbQRn8J)#F~GL zT%TZ7i`KN2_vP2M5~6;L7cK(r8poYrXO!K9$+n0kev$By{7M+evRR(BD=Xy52NO6M z-;rw_5QyyBLwYvG92vmy98b2ax;FBXxb$)!B4T!)zI)scUDh`OChSPbEG3n;ZMG-@ zH4;ussIOv_Iyfk*uXi(nwVQbAsA!hwfL2A9KW)B*q{&53K`Tnjs%2VbNSZr2v%sb^ z5Jq>wl$gT1N{_<67E-@aeb1K!#Mgv&W<qqF*;bc_wtqfZ6hTo!;y3s*uw9bK;4*c{ zpQqXbgG)dkE#}&-??kQ43j<rLRAjAbHDNS~VT_Sr9I(f)T9dBpo5_$eU1j!B_zvwE z2Da&<Gjtt&+w1J}w-FdygaDTNGjuads|ww>R*=Pn;8-8@5h_f9o0)Cs$`U~o<ARBm z>p2bh300G-dq=6HOazK}=L#tLZxuWJr)wwtoiZT1<}d@t+W|PNZqq%+2=ON};lIQH z&*|~pyA|p$KwrB-yu64I%`)ux8Gp4FseNkZIzRl0Vq3g$(dJ+ZSFGbaP{|}37b{g> zHr&^d6S~Q$(>Rn}C8`z1y6~_QacvMxFK0@c!vpo83%1}^i=h{{e#69BTA37sHdTMd z4uZDAh!$Bprmrabza|vPR*aeCVQI3R?(sm&+@rDnrB|-xn9AO+1rzc#A~NawIM?um zk$Mb}ag?J`k1%*Vj{a?Bye#oM0q2h_F_;B_6MI!uykVWq*7D;Fn0BVuT#Np{cN!V6 z4gPjB;*(|PydLKx9uG)PSP=q`1b!QU6&^avWVa3Srs^7jy%r@w8k3lnju9gRDiH=q zrjk~`TZI!JMBM(vp^dA2#`d@yH4qwj1qrAQe_u+R2qucq962BsM$o&+m8uV2^KW0R zOZz`5{YWLb4<gx#JCq-=F^J9Z33Ozqxc7NTD;;RsJg($Ig+-?VX+-859^THFDqqS$ z#-8rtwX}8hZcl^`l+u;if|a#?eJd6TPxrWy_+n|t%CRnWI*A(V<LY_8aczv^IxR#i zrZWsS^$2h(wEP{kBif8TSnc+$Ws^19V1p#bY%rf*9lYP9-&_f1!l}ms_SaieT$92P z%kegO!@9F*cYnUol~^>&38v5nt>&A{1nw`Tv^a7WgF6NBQ6}!}F;&)zcp|udx5spm z>z+>L3OyDoY{;X!-cgw~gcGAtToaoZq+~{Zq<VS86b*hiqX{VVHfa6oR!~ehxWcOa zjf<o)Js_0_xxn4kVA_vlf}wrnY>b2u{G~KxihBw!;&YU3yD*kp24jqzTT>pOwTx@} zaZ#!LDARgyh@ra^`Io;q{mimN-XkOZknH4X^#h!}nRl)3*~|_PSH1Ux%v=3po{(_W zBjfL&$)*8qus7rNX%dcsRp8}&4j^r!VM<%OLY8ibj$^gBdi~BJseVQK?h%8*+mm4t zejcXLX3phRDaGmj+vf8tn-OyHCmghjZOf6rj2w+>n3O=UDVQAQ#zz?33lm&ClQN3> zopzTKJX4wfs4A~T>7IF;2xfk@OxPvT^3@+R`Ro-4hO#9-Q*8f|N_iUk`6bD`q8)Q+ zER4`HQu(awZrNi-aIEQN28L~-=N}sa!&=b<4LP{<4^&*_OSM75?l1Msnne^jk_;;5 z+vmEc%5?d(ReZa&aTcEGO1rLR-<PVEH}W~hv+ruK;bA&m%sG`TKicq@xeV)aJ1;!o zDzHnp`gfxh0HVMuv0zARl0e_hF-~E{T<ykby$@6~p;;ABW^-NWcsS)lT@$gHkTs}f zt4e;k?kUP6VEZtxLn@|j=fqe|jb`&#X~-VW3+hnr^Gy5%*hUstR#pSAEmgTj_F_8d znS6Nh^i{lM|1)eM+1b9$)U?d-i@HVWj~nO}@;9u099H(VeiMEU!yB)Wt*xuumAKY} zX?=f;luXy!+}HZfu%6wAx5#B`mox_4`hurk89*=EGIcfT__qA&-dnZciH1>oXI|!P zE|^j-cxEvv<|W6N1{oMUz^#){*-fnAgu6!9)4HT~_0EE5k{(!vxm89b5HXxQrP7vC zfXj(7z#Xius^n)7`;`JF+Kx2wmN@^emQa!slFr+ul-fTc)v#>OgYVimt0Ekp4m=EV zKWJdagkhJMCdgQHH?lc<k<V?|BCwEXp{K4|9?4`S)fOwiq+X`}cO8rO5^8w9z`h1C z_4cum9XADj<jrfZ^|2kkL}2K<hm1}Lw~bpxR%OOQsgtreDly9T4cpnP9MWvHCytX) zqIk2cLoX;Y;#*>a3M@r_5dM3;hXd43u*;@&Y@CST3Ev;&3CAD*P|u@>=-mJ-#&nWL zF#AL;eC9XLxaz3e^n82Y^=U<x2G8KJ272$RbkZ9^=I0&I<mX*P^}>Q)W~)d;uMl&; z!k7b6hS4;4`@`u9MgTJmy>U5;lYC3xOw7Y%Y?Z2W+z0RdiiEi!BeoF2@v+0~!}Jhs z-L0yC#TA~xC5G1J^Th9BhHCj-<sMr7=A$01ytTgXAol(coW1YZ9nLv6Q{&sgd+0sM z<Phn9eaY~{p2bHK1h2K1erX&g?x@x6hT?L_)o_XgO&hVhF#SABi8kFKN7Ha};eZ@P zVD>mO<-+V~P!20WXJwzl@31rUCE@O4^%6sQ9<28HJSyn-^oB@tv?7f_4L1BnKg~a- z;Py;95(W|2raf7VZA%v>{EhA4dQD%&S1odwc59s6osu831_KaShoX4zYcbD@(xxLw zs$E+7`Im}BTkqX(9*Yc7v+_e3TSXy6QQ2?IIy=W>PY_j2SDt$(-0??C+LJxM>nbHv zvZhTb{;K`+v47YwvL-l2pPk(yL<%pmE-`o4l%J;twI61U`Ovcgv<%aKjD`CAe`tmO z;gfk!g5Y6-0s*o7z{&pKwb9CILi|enw5C<68}|Ebh+ZdD?o<epYT)r>j7gI`c6QFC zq;}Aw7oGCqTcAtWW26&AAD_-JoT-w=u!R-9&XQhl4|baM8BNfOyW0fM9r%!F{k}3+ zqWDrxehlDtg)|S!nd`+l8XUcRJXm_kaz%69KJYocG4fk)mz)CnwbjunB0MwHN*yP* zZVq0bXZJ%x($Om9t+~Ln(Zse3$n>eXZheU8>q2`1!K<US_TWr_m&QPo->6e3fm<8+ zLiV&YL1By2jd9LUDuNU!7Ke)FNa*n&Wk!TZ>VSTUs@`ct<g9ccqFEw)*p4T3oT~7u z0UrrERJKCUzei3y5kYmiC4^y1n))&V-G9-^sZ4fHH`(jl<4s^2-T4JS#F9i6i1$o6 z6UN*@1NqB|=F*U1j|O-D1pp-!%8BgIEvve`p6H7+Vl>7rZ|OtpRkAVH$;6_}1SutZ zD{yo65_j0R`#H)(6v5=9%tgWoA|a4Jd9x6r-KyJPvCDn6$%W_MZ%hfFxGd>07QpEV zMnM&|#1=A$2N7AbEMJE$u)A6aNSvx6epVNc|LRx@qaFY-3$4r=k{!PVvh(Lbs5Y$G zEw!8X(E$G>XK~C)s)fW2fj4SkaBcTd^rs{yez(A}u3%v3{JUW@zn>kDqWXaL`P-k9 zqj^*01eWq(c{4h>{$kP4rbdnJoK%Z+>gGTy)i8fJQ1%puXj^L~*x4ZW*M<(&gPtdL z=qJ7%acVp*v)_hDrYOJKhWG2VY2<RO(!SXqjmz4YXYQThDflM^)>kR+`Vw22q6CMD z$(OU|neB#+5X3to6nWDQq<dbl(w@t_7j4b5vA`)%K$^O7VI{jZKgSaz4)%How}VNq z9Qd;e^<={R=)}dy%3{}>kq^oK;Z-N3ux36yX|{YE)chj%=JJKw96916vH3Til1?M+ zvy_PoPhCjAG!5Tk{XKVFhY-!QhZu~;_<4wAs<QS$9+8Zs#S)7wLVqZ`pCD^|sinw% z%Ftbc>Xy^@pZj)9Z3&e1k|{*DnpMS@-8NaP*LK<uo5ts}Obe-}LfYSWM7FI1-2Pt1 z8(Z>>mRd9aMA|B}sv@%DZ!f7`Fca|j+GEovvr?d_P@y}ol4zP&RZvA|lr?CrmFHZs z4nXsUM;P^jiis<_Hsr3G1WnHH-wKwDHsZ@G6)Z=}hnx%bElWz1U$@b&<sKP1`3EPP z!#TtzCS_s)4FySfRd2VeGF%efQ&&`!tHmNmB<o5=ofO=Wv-@8vR5Vi=Nvmrvn2iQ+ zhtMuhS#|U?rU?0Rq4;fd>5tow3(rAKzsRk%f}#j_yjip#hP9vdc4NMYptpV5_*V$r z>F)?a9_)4=J@8?>IKMkq9Bi_#hTu(?MKBT2hMjjL-TJ@(w|bFC*9EeK1_ZQV3<QMn ze+LQwN4hYx`LB4v{i*nywZ7+G)zr-?^YSr0hB_q>u8mRGS&M<C4sOiqk1!lQ)(k`T zZ3coGZOixj`SM6);oRhEt;h3rg(4|T@=}#bMaR<Cn{G>!u!bR9`jf23Ak<$*U!C9t z{In3HwE4Ah1eAFM6|;Iy36vLp@NKI@A=yIUohMQ0yWmI_02_f59S{mJC!DHmoJ)(C z*g>QCQ_uHR2P=e!$Bv|>6(8$4;{2mmfBFzfK0_3KsU-fus0#siiZdv!c%Q$>!&BI% zunf>;-N3><)4qo!9WXt)G`ij)sVoUp*!ht7;Z`veX$<~i2^6vYN1%wzeh{!Ydg7oS z_7p{05Uns~Wj*}zNq|+tJE12m<NzuP%N@&CvwePGpu;|}viis>)S`GZeX~9SBn_2K z{Ef&H8%zKMHn3N364kCy<m^~~#Jx=@iae$uF0>5cpJ7<sPfL*lH7pUI!swc*HysYy zUgIEE?fzm+KE#zjQ7U>;bq7TUU{D{|U@owE5?diRas44IPy#_`e5JWy^1yhJYtH7O z7(m>ztIzR#-;(5zKu!M>ARLTBIgfcB3<$nLK`x=vMRO{nRr86)$}vep6bOlgCj15j z#!Vp$BFDkq1Af{6HjNBqVCPQ{B@XChR`GOrnId9`5Tf@C$$UYu&X7W0CkhGic=?2S z^m>c^b>edtf8DdO@h+M1SGxUW>4+Hi6v?eib{iizz6aM^@QI)GCPO&BGTPaNfPjD# z>bjN*CZ!{jp+ocg2#kq0sLy&N?0k~f34KFiOW1|+GD<y5@<bbm>nuwfUSwhW#>;25 z12ant&RtWpqpE5-VnXHTKd7G6JANv{&)<~gm~&xRY5&Dusk6{>iMf<claOF-FvqE6 z>q~6Xm6qrlq9EalFD2c~h4Cz^#QkW7RdwL&?6lIP5zHvk3*y24S3BnBUds(L1^M}M z(ywPl8?FmDzWLEJ)6L%rb4!@$=!2regdr<kOk`7wF_iuwfVR|+c>?0WGz`ubo>VJx z{pFE1umhS4*~oU@n10e*L4XudSl=5-ZcN|<zA2w?qNoJ=G>EW=pX=X7yWCF&z4cY} z^}#R*Nm;%;U>#bu5>wT-ATStT8h)6rT4{WYZA*So0)4$?RVv13&so>uSLMS^nyko+ zU?De9iLWOs6cL=(ZQQ09^@Jm6TOWy3_3i@t{0&E*5G3c+{1GU%94t2koz1~Y=C3!I zWm#Z_#e<q_5__X^xnE>mXW2Y{as{fH&k$W>j+^J&r;mSqEuC!OA{TC#8f`|Ep8u&@ zS}H}41bi840MV&9Lj=s3)m{I(P3ZCKV}ksCJ=VYbDzYC-O&ey5@oOl&9rp{8#5^qc ztrnt-cDK`22m|CvO4R0-yrt1i>}$orfx|qEk#L*=qekQW+_MIz=;BJE(b>iYgaNy3 zfEo)RbBI0HG;ywh4f)nBRgy@%fiCM5`yBLepzH)%5ywrmk%JxyQfAQS?ai)##QFk} zzPXAW$IOBcaZ_t0<IGh%MTSBk6ZEZchwN#SIt4?th-JIwW*M&WJDc>A+r2x&v>QZ? zEr267#Y|<s`GwhXec)L~%T9y+*B2iOM^P#v`mbDzO#f_&jBP?JgQGLJPR>9qZ*4Tr z3l%2Ezg*<}z8R`iEK0gb>N2!X3+pcPU3+_>H0plQ!gAj9+O#UaYcO$M+cWa8TxO{h zg1$9Z_{}DiB|qt8FWZ+ZQ<7c83qVwYExWCC8E>9AUhrCfSmIC8Aw2qSvG)D~wwfN8 zky(?Bu612KxQv>zIvcLaa#V7a8_12IjS74}rJyishF=1@`>O#*1@L)sPAoYtcpqqp zke5~oV2luIeltc-TegptyNKQi5w;O(Jx~$RJQO0+*RcRHA9N)E?JVpA#0UbdC_f^9 zv6+YM7W-ZoWWcO60ZT-0T6A6jDyQ-k_Wa+Ap3E;>gHST>1s-6TNuYBy*B3z^Mcyy6 zhm&WHWvqKaUGL%PgV);kU00qrgwV7}Px5HJEzx`7{$8K*toXjH>Y1v0qSzlC@*K(_ zFaM;8mqX{gfJ~0cLojqgC_%cW&(A<p;r;eB8yCeE$^ANfM~3g0hdij?3IqE!JXwAe zPVp)0?cF&~%}>q*iXD{Fz4?U~ASXb)r!RF&l51q7eS-dJ_G$n-YHGMEr{?WI`=Fik zG-oT)<0Rb7CO!*K|9yWd=EbAoRYs5qj{P<60!zn^guGxbcLk3{YQl<myd#mNy&g<L z(G6tDoCPf9>s2;?DdE6?u@f71yiV+$l0l5R-kTe?w4Vi5O(%vw6&?+EfbidnKyPHI zxPN8MNNzexQkuCJH@cac6vxlFD0p9g-4HYU@v(JKLs7S)lul3%l|k=N&cabL4`7vM zl}BDcdyUw=h?vw!RV2wexa62-6-V1uomn04Yy?YJ*&scABk+k`$@&31pszj{I1vV{ zLPv7EzJQ8)-t_1i*(4IVS*isR^;e^wUDs5o3VJ3bw9WcDeeJ<ahICK&nlW|q-_fN* zfQi|}MaFh=21`LzqoLcvWN_I;mg%@v^0G=QRYRR|wmr}m2UeruFojLd22nwkaJD@~ z#wC#ldo5)-yCFYz)DPd<htxR5>svG!9ApWW6f1bQq1f+wOR*mIKnOgONb(?<%VXvP z8x|`C(AUTj!9hR?r4WjFB5Q?~#}6u$(c%lUrH{Z0s`dk*H^!_R2^A<6N2<Un|52RL zKN0E9_)ew9&O)}&WJA+QGw82jtuc#dIiU@&g6ocF0M(ftIm!%jR;xWBBj8BiRBoMp z0(y69)s1b3CKi=Mw?m}FA$8O!zcheZE1RIL(k)R|0dwq@eNq^FOfkG6W0v*!gqZ`4 zkYbcdG{;>DUYVJIVG{Uo8RU5NRR5Tq>Qq~>vpe)63tD2i#4s!-!a-3Ofqkx~Sz;}z z)piPUNhxm+2U=Rs4r-vj!K$IaJb&wtSR-|;Q(E$AWOm(Edp8H3OE~bMRK7^4qw>CB z2dSr>TT_T+W9`QQ26oeKg95M5btQ(w-w=Z;>Q38yECSeMUE8u?*y}9$8=xE8Qtk_6 zf1b4!2SS8}4E4n+9aG?lBysgJ1DMzEh+!d?TQ0Qgf?s2PVI7+%1+8f9AegvaUw+__ z$*ts_Xp_lH*J@LTTB7<%)bVWg1W;sgP?><E>q&ic7Gd^H*vioOYegkny@<Te9Bl$t zc*b}siaW}a_tVpEyMB$<3mH^uaFPyzr629tv>(_#+rVj>%gz)xjy2Ew>PB4tNlvC8 z`bF%fj(W0BUt4N6riX-wUfeEt+!0Ik+BeMnBJiiW3Ke|z!|J8O_+Tj?Ml`5&bVxwC zP9Ro=HR&}xVFq!fG8}5mo@q*CB3Iu_yv4)L64eM;cS~1_Ee&bQl#g`#X#JqxL&owi zsW<Su42gB>ujQzPK?CfeE;=LF9$$89BT-5ktTTETe_Ir3&XX0K`km!`L3N2@F-mmo zho#C?;$AZ0kaK08IP^#~JI^VhimN7S8v83@hK=Llts$%(bO*IR_?d(c&Kz0MVAZMB zP3_Ueq!<xYGdux%SL4~?y>?-EqT3kn8Y@CnI5GrO)DNQ8c}&b76jIDHDc!#bCa4>` zRH<2>Cj957e_!bYGd1J*2bcuPnKbKu8Gu>39d8bo?C|XC_W^K>^ZIZZVN#6hRvQ^B zkIpHQXM)!C;W$(DRP^V%L?1Kk7u0V^VEV$)gU9t5Vv|dYlYP>LerTm@2lOCCP9gHJ zwGxd?8w2uai@wzlwc`|<g9H8jN(?*lcdZKU<+S}H<|bpXY(DqiGfblOhnwG-BV<pR ziCJ4kuVs}<`mV)#`!8#i_!R+bR!Fri)Br92c0U+qS+C&`G!ZKZ^+O8IB(_9gqlh$q z{<xL)*jk#~<-vav^;Wgre3pYY`s=s2g1mAAw#iQy;MJ2aly!$po)9X_T+?zI*b)zt zUlPt_hoOL%UQKD1Dji6N<TSSZ?y`E9*ZyedLjV_sAHP|044A~DmN~y^1Bo`BxfYq5 zE~vemP4Xz*zPvc_0?VFrIu4JA4EOoOXqBv^-%wHDBYhneb@IJk4SD4bs8m)2JO^zj zRK612=7~9}``Q@gio?f^3@3XLa#{xOZvNyX&atFLK$`cQNcObiM)J&d%{$OzHklxw z?d1!l@*^5(`rAb&vTW^ZUO=}ygnz(i7x$AxNFFoUtDPTt+np;ohu`Zd7%lHV$33BE zK)I7voGHn5sxacO(%JDVk1^PB=}Z%!Q9Bha>?ysm7`Vu*l08Dl*^()vW<~-9ilglA zE{C>EV<FWaQ?|s!=e%bm$PJIzf)1q%oI{y`@34U8xx(G!FNhx%ae4aElSMW|v%_-y z%iJZf;ppCl-fMJqs$(>|A`Xx0o@J!f;J_%zr`kPy&3DDwc}anmNUfIO9B~3^ocOro zynO*t>p%SHq1Q?nv2ghSYNJZE2_2S*Av>kRBUg~P?@ptt<|0J3vRX>gwww8<WT_sF zag$8|w~cqFBe5LrM<k?dyGiOrPumrIwfnIjm}Z@Ud(lg`#oGKZzO{{-9i=9i#wS91 z#})vE)4Yr&Ppv$OWP<q-rM**p%nVyRy|%d1fLi1rT1;gRz|~u`8#Pu_aa#&SCscS% zRNAgGW7CBBU<Fy_pDmwl0sY&fSvJ{TnNAv2w~W=$NI%QO)f{3aB0u7#I&L(AGRi7C z+~#TTY`8-=EQi6_z{$sc%$a6gU~Ra<p>@GivXAxgge2cVt=k`K+kZ`)H+1yzf_bfG zmpxhHYW%Lo04Q*Y&HV?KgZKs&h&i*tl;}D%f8g?G&cmcdzZ+Sxa57Uqx!B@jG#s1l zvDVBRe@W$H-@2wMGyjhQ)k=OjmqamkjZVsYj(PRJ{#O#-x<sEag(M3L`F{5tV?@%u zi--(opXf2_DEm5t6jlb!NAi}2uv)8_vW$IYoCzdf&2YRs7!r!V$$m?3?a6~h8p{cB zPE4f|je)oNZjBEgnnF%t8dn<z*MP9>?6hY$nd%S*cNAYdw-GCpT)|M+40Ts4i`z|I z*dMxG^Y>p?&^T1trzEt;L7gl=cfY~J`hTQqI*G1j9rev^?Rx)?c1o;Q-<g!G6qz@~ zhMW(T=bV7yzvxVpy*ryLDMqZn3smXmsf<jF8a8zpd{p;=)fYV0i@-F?5Y%Zl1dNLC z(=Mq|2U~VyP^&E#e>1@&CEW-!(L;|)KH0M{v(=BXucKDyk^FL@E-9h@n}pR@Z|Ik9 z{zqV?b<Wr#Lr|*%c|Uh?VySPLwgVStGJH~Tu<5M;A8oe9<q+w}DNwr6D?5{0aIm*z zBe&^~0(8ve)S&xWT<Exwh^;WYT#JSu-ce2iii1^rg8W?7d}*VgktVgxHrWPLH(uQE zg~-=r^LNY;F}-nu#@h7Eq!-@pamm#^Ow!NyZ&J|r%=WYT`ECw%`XLPBySJECkGj0j zB3F>BQcKLkKX!Z-2JLGIgy`!wA+CHP?GwIRsNWa_qHT}AJSQcOt(z<28+2&IjzfTZ zqDzlF3|ptNlM8*Ve!1Ngfz5k6))!*P(Ci>wg;0cj5>l?^Z7|Kqjz{U@?4Pt>Z(T%p zFvi;J^;!RuwrFa|c@F5DhB7tAdU{3^m0*Xkhz}4eUZ3LNR9q4=n1ih0Y_vpgdn_PS zHz*mSw#aHfqBf^`P&wmGzQgk~xkA&OTUFjW&_&vet9Zr+*TmCm>QuqhqF%b!w)U*) zI7q?Lras5gq1GXZ_{<a*!8!>*akE^|JhbnV3TBGo9=)ggt6$l>1hr>={!#>gTFSPR z5c8q)^t*?d^-in)KZ^lVTXoKUwSautlkhB!>fG*Lr-%Ld_s3zEx=d);9{OTfO=_@v zs^4>q5_0Xg1-%vUPzkBL%q=#4W6r^S7!!HysWE(O!RiTD)T@EynhK%^b9f-tHU_T& zSk}WyGj7kIi6to!^LMWNC_<2#uD#>M-UPQu&V-BROGYwo&M?S+z#P-ncUhcoy_>z~ zqz%kXyM<d^fTVCW&bS@t5nrmB;!7Hjo$O$1Kvjh*zWOL!0W9%Iy11xFi+=UjEQe}K zMwpwTY|4dYS}gau=F+((wn2=^KY6~R@fbTtIf7>7<I@=4IIG73tkcAuvyr>_!i;R( zca4P?(zArPY<ty8b-@JueB)&i3Nq~mXZ_}x2;)}iE53VTde;4`pT$ylp0d?{{}vqj ziIbQHSm-uuvIrF4GlUMuyW#~&85oZHZgq|?$Kp!9rYCU&OtfObYy!u6P2xR752+8E zS4K+iV#zHRaMbYp!_vY=PLIv#50bCtHH_%Qm^ubw)M$-K)+C)TjK-8hPde8Q8Y=T@ z6}t8g!?|Jgy9o!jhfLKg?$dgP<BqEi->71r=x8B67p@w4vC~x%B@MQM-5BcrfhzbR zQu<9nOI*||@W%qzf@>WiP#Fda1H=pXTtTm!XJ5LNyd<;rl=|1u;AB#%^KItfHW$FM zwshEBwk=0hct7p>m)~Sju!VhmYn-C{>#)Et*gXPZ$k)S=zucI(-ZH{y&e|{t&~X;n z9v?3=$054Y-Eo4H)5;U|`JGcC6Or_zd%s{YJ!D1U^Ir2?1enOt2`r9cXb`_R`cCUv z4*~t=SX<-F$TUPYM&R{W=Ya<m)MSu@J+v>Ze+I<9{6^|u+NO#H)OYH=0oLbj@K@u8 zG(&W!Rz@-SrL)qnSAKtV$2}lMUZs>^NhPmt5}|q6h|L?j@8V8l@*GcIFvC2<UN*eG z;^}8W68=S?$m9Ry<vJ*ikXt&*?|~U^5|Mu}qkMsuw-{ch?{fbQ2CwZSb`s6Q>$aLx zkq3RjhXF|#9c_WIy1Qik2z$2K`Be<5qh^w|vBNo50%2%##8=~qmk2DvA|L~n7DB%i zBU<Ewi(|9qH=EhfI%`6(i=(T&$6tl3k%ngJZn||t6%<@s-tJ&0M#)-It|0+<<7yx@ z4JN|~K=2F?W*4qiqRa9~y#r)$JOo=0K-^Y;;#q_7xYmti_s!gL(^ABkjhn_Xz@-}S zT=$4UGNAoonG5ym(&F{n@E3T+fOJ*G?ze5Tzab0!Qbi0`+E$1Kc`^Y#oLFm75<aZ$ zICQmO%c8lF{ax!<5Wnd`wO{)_<(N#i9T1PIEBglY+5&JZRKh9CH<M~bXp4<VzDe@} zg(`JlDRBh2g6e$}GKpS<+z3=RwcrLZFnj>ZQ*rs9;JD_aT21({wg2$dWFJ_bF5jK_ z&~9p+TX%U~zkT*UdvEYfU1M%=0q;1NrZDs{gUj@dL@%I{s6|wb;0`-&Ai_QeLv4Zu zjvXO*en`8{Q%C%>G+Jy3+L%rpc(*A$^nZjM^zjYrI2Qiz#2wO~wZjh}KtR$kKtMkO z;r~tH{*R<2E=y}#q+<0S2=~`?4JIW)`U^$uacTVa83}zczo;!3iA(ze6wMP*#d^o` z6?T754_1Ji`0piY8sXb$mu$D=v^Di~Z8$E>pankyUpWTYGa~?$ZXTQz!#MJ#Zf^Z1 z^T6gDFXng~k}*umgA<~5p9dt9(r4{GpBU`%xuwOS{n74xkN<hc#>O*&MpXxLm5i-C zNNxg&oMnUVY`(eyERI#Y>u&?gi#iE#DgfI~|2(AdJA3ZVH9xW9*{JlPby1X~rY*L< zSytTrCXpq{n!^Ymv7KpPf`*?aky=&;B+)!WJwk@IG|L*PW=M^M4JxV_didn|M>5m_ z9~~cZg`h6HK(j)!fJ$`lc9GrjLuDkUS(C{Bh)VtSEt=vUAHVtuk8~fkp@RPm?p_o? zR&k3PAZ8z{((RY%OETt|{??M$x7VwrW=(4z^;0BDD&Q?k2HU0V@aW>#SmZxLnF~A3 z{t=a81TI$Ae3b@GCh8P(U&?+&r3rh7c_U>QDPu=6%gQ+gR|u9Fu|JWwopsx50w<@l zfvB~*{10BzX~I{+<n^!-n}}M18EI;B<daY`?zSx%aIBXZEDunj^BA+z%XWBV@Hn&9 zEiWDz37{+Nl;5flSJs+UF;1?TjxP%-Nh&W;-fh7;yp4MX@8H#EmNzL$4r?XG4h?I7 zO<LXG^JWg@QVq^T;t+qug!@5#WCLzXo#UwLaaBt7+t@Z%&ZRg5Zip_p;RDu(rrkHQ z)jah;J&W7RkjtA}oSS6iO4F#)Td2_RLc67E3-o=0=2jr;66YvnPfTgoc<jK1IU07| zMvS_^dB23H^rES1c#$c)p+emPBZ7oQ)q&6=qA#sK$=D>LuHmU{ZiJ%5@EjgDsM4e4 z2f6n^6<bT5Q-~RQW5ylvbF$<4nV)~ReKM(^!8zat7Di53F{kpi0XywFgdNBud<b5C zqFl-LD?MZvf?%^r0z6!vo*d2{IZz#>$WH(K%6i6pq=w<YQap<fpJFL;Xs9r}b=6i? zGc;g+o+(|h*<4eb%EAs2d5kqaq(-^$CI<Q41qH^{9XgDue1CN~L%lJbl&vt>)rAdt z$qNKT&RDyM!1E(kmn}PbC=a-;ZEttgE>+y7vtktJb2>#LZ4^ZA-iD<bV%Ak*53&{! zqPgC6B>}fxpUc_$7C*n&Y5RP1@H&6bk=}EgdTT3%73bhZNc$|R!=#0>XJJ7D$rD#5 zAq}E}HA*zgA$hlQ5kLbT!gN)Kj3rxI>YZLFU+j@(Td<~WdEMRm8s0DNGQq!6^w>TV zirwfd<)wIWA?Tq9Mjiy$5Ile*143>nPtjWLuZBMe{<mOcb~EberuajioB{^=f5?;n zBNzexqZn;+Texhn)bD&!AzriBkx+S)$}ALK;j0&;4A&n@*#EP(i9w+0W3Zu6NGaTR zb-CZUhSdfYlPgRdX^vRP4ka<B$DD*U21mGVW)X{cfG}t|N2JS)$NxBu!L`R3GL#~} zCzJ@onZ`J~(v9oqEj-y7)c)YZzFEQpjG-{5F5EcIvO`FPR^m(%=zo7|Nnmf0t$p7P zMUel<MZ6OKk&D)d3Q<4<l_kZbP_TUp73~Rz`X07(=JEU_6>LQf-0%6eN3<ay>-w(F zprAg|a(<<@h+XHe$`XiS$Cc$2*7-DuQMNtreG&@`X~)j5N`6w1oZ*p*H-?fYO65}u zV|p50TJ~~okP-Bs@{qtP3aHI&yjWZfQHEKEAt;pv*CG8NC;L~!X$TuV-Lgbh>W9Qp zy$cy;A^x_3%8)>2ZNG{?1-UW=@sPyrg68W__HN6P0mK`vTS2;ftd_qfJ%Cs&I&T$O z27&xrk0V_1Nl|gK-Mmx#zrA0wi5AN|P_`6ZO%v$nQ{e-lH4xEe`%<k+f?tSc?|rRi zARBq_`w`_P_J(C9<c-+khy&^tLdj-5CE|y0)r3nHQ7fwgZ{6|(5wQ)GfL^yC-C4vP z;zKQ4wFddDVUyzM$$pTNbB3`i!x*v%Ir#C4e4ty;qjooT>tqFqSFr;F+#lXj0lwaU zflhobV+nLFF1c+ICgdS_wKj!`yu_QI#~K0z?>=rQ*C4if>0Hb>eA+rZe0+Km?!aBh z<}6c~j9m_FyxE}8XV<1kvfNv8oUd4#Tu!p)R<Y_`6y485dQnO|=5QjjzARd<GZAEH zJ*J0;tt|>3hl~o!1)P5Jd*hcR;lUUzCnGwe)WZ+X<!?#<rvmgU2jVl2<+9nw#Bi7v z+Ia;R&B?83Ih-{&iWNPT((_m6Y3pitkU_`Ay^9}1=j@ucrk1^dxEqU|y|Bc31}iE= z=HzcKP?hn6Oi^Jr`#|>s2omX5-z-r<-w~oQNnrpizwZt^xfGl!+oO#Wwl-(LJxBwC zr%|`vJ4On7I5bIgR)t+1d9Q@U^OJq0@3dC*7OoHHfZhz=5e~kl_LsdEkGqy`6sM!8 zdQpz2#M!0i$(6}au&}=h$Ad8-%|ll&=*aaI8I~+{Vi#@XS&YyUv(q|$B*sWF>VB@q zx~J`yl`*F4nJH$|gJBv7uC{Ainr}>!UTr3uS$U#^ro=~Jn=K2)By_(eW9?cUpap8V z-D?J#lK^lf<ad<qrJnbF=|IBVwDnhES<^e7I(-UTxO|}9b{y^buG)5jIKjx$S+yYj zw^Dt;wo-zzqPt(sv1PXxKt_x8G-vd^)?LnFpV?r6DO+#S{ZAWSyc*s4r8nH325GxW z;oRLQps`zma^SZ#{txUPm^#@;dZrxAkV;%nASZS#3nM|1z$;;a@NS-#i`DuTqs`p< z!vf@e=%1rb-41<kl*mE&ho?|B{>24@lix^AwC?m5aCQb^4o*B#{{GiJcftPwLO{L0 z=E31%q2?7iIwDxDsor(T5ouuC%`4tE4H9a6-TM0${}R)55r;VKz1sM^v9U3Y7O0=E zY1*fs(sy34pbh9G9i=h#X4eUTw6f>6LaLWjp9a$tFZIR`b9zn9XFG^!R+V?>ept7r z_sL%KIEn)5h1V&6Y`MwcgB%!v1$c+71G|PVht4mT?$Bwx>-5}{>!EYnU?9kT{_1!z z=sBH!gQIG`GN2xb*Jx&V^;6gBom``ZzaIZ~;WP|BRD&Y{8LP3rk|WU<eEgT{djj#v z<c{Q;QJ=GlSSDVQ8<=Y*#pI<?%>=?CB>YNHqZdXMir)C*`V=PTlg8t#t2TMoCi`uY z_2kLV_`8W>yWg~+!45vstGmhZLrMqnl*WBfy^mU_^fGkbIm3~2{p|Yqx3M$A#>>!a z{L2><i7TNtdNEWe55QzdfBBi*0PP>lmlmF%a5=1Ex)j$HxSsg`q|t4ILpGNWK_2Co zj=+n*&<MC;`t*QQjsU9$rleP-%Q65x#eV_!od-avK(7RO1^cDg^w#F-{_|Qq-G2@| z9o6FLNarcSeP^B?NS=<qjHjdZc#5=EvlMFqM~`c9^jL9}gRQ~PnteWAv(J9@e1wrg zzO;xtn@4eq37;@Z=}TJ`7+LB~G2pp@W~R_4@yJJXcnC~z9!dQf#avVrLbL(z{V7ZB zcy?SEIe~>nR1C)sac^15>eknT7mwTo(c}Y5j72d-Sa)7%M;L_~HkNaHh!#LuN@w#F zvtq!(DW=^#R!t*0wIjUugMeka?xXmFNISB8p-O?>EN*W_q79Kl7eW%Dde{+48niy$ zVB!+#oGp@+%xTQ>a<T$LYQeSpR}tgJF#%6pw6d2+W|eA)>AXddz9ii@PWP;F+Ubp) z=Bs?o&)FntA;%PY7Dqrdz<gxpE@G^}{NSe9g`%=Z?lCfQ)Nh!-1W6)3xZ=@4@4XvN z=_eQ(5g@o`a8MN*7%sWtkY|`(oXx+wN8Ygd)EOf4gAkc&pIf>G>|cnMGM*L%wec|m z8`6SCRrN~eSYlgs@+vq2vPIn=Lr$B7f7Zv`wT!tNArSzy+PGs$?!Y3er*||?{HP?x zBf30baZAHNOVzS?ko-sGZx1z=cbb8VpAggwJACYiUi^TJ6yLsyIF}(r4kIzhK3(c% zolLxB#$Zpcrgi7})4Y=Kkda)O;=I(zF{{hqnkA`-wk>)s9eATibI$twgzWF^(I@+R ztHOGp$hLwdtTU!XEtyz~Rv9aHjz^8FCdi2B^?B#Y?VmVT_DKn4w4p?{xk|89YYM<( z#ZUq*rwjv5vyuQ|nJ^5lea?ib;Q}9AHM_YmySe7<mLr3`mvZUyOx7;T`H^EU@h4sY zE*x6{h5t68=>YtZP4IWXX`0Wyn1+~9&OV?=6mEe-MDM(h=nMtEcN4HxQjl?|MCO5) zqHiPe%_1e3nU^6)1^vXVH%kL@!dv`RrLbl8s88>EG<=`lNmG@zf?VL-V=c6xDo0;x zzWC?7ArM62q|?9b^~@Ah%MPP}9tj|@J&IJ!U25`~q;WvQ43nO}#8Mz2k84lO#Hx!h z`fLs9x-%Shersgaw{b#6ezetydbs|ZFtAP04LLh!_(VU%ca%fhgwK@Pq_)h4Db&C3 z{edah|JmEhYYY}c&rA$J@?`#y(by)Eg{I<yf8hu|Ncke0QIPL5maJXX3!;e)ufqOu z`lCxFJ93`Wr#Vr<J-_I=-Okt@@Xu|V><AF)SunXp=R#;HMq(HoaeB#Z9L<=TedN;$ z+rfZw4$hFEdnt>m<SIWXus73Os0|jK5VkjhhhGVMPv%kL<027ma!C2U4c?xJWOg!a zu9(myE<QPPY=S5fE@n4;uYmvp8-<Gi-Xw(@64F&uBg~BQCE-h3Jhp=$^b-Iv8$|_L z?D0e)BMta>!OR$&9+Ebp-sCPrhtXn8=eYAFOtDK|2ECPF6bBs$c!Nz9xiLP=Aa$oe z@y|G!v(WP*j&M^5PPQoZ<Kd-~wGDx87==&%N#m%^tt{`Cq9<W(1YZ1}LR6UX{DumF zpwk@<9R!_h^901HQ|Ksziv?K1cCHkO=eC^LX0GlTKG7cVb1}zOjZs48D;h|LU?=3T zgi{|;A@yFG;nU;>!%oDo2-VghVAhlZ<{4YbW4VJHKCXNONx-a>HgdN*Mn5#igA3Le zS&)KsOR$T`580lWh}@x`GyFMAho;IhZW>zcs~UUNY5!Iw0#tYJq6IX@hb{K$M?P){ z%XuiVU^@nadoLl$f^96iT?A|+l`&efg;t@bB6H%4-9w@tL)r)<DIAzaftUZc00Bd` z$0VfK80c)XEm1LNfy>stpHMz?8&mew4Y|R}EqSdT-Y6w1tq%jJKN?b53Y0k#1bqp` zt$G0u(MR0wO%N_5rT)VT!G`HBVECg93qZPB#84UlnJA2jMz^ZyuV_7M=Tuz!4`sLv z(5y#_xrMmNoDy}O>LHOqV&09=vz8#812Erc?l5JR8SWjPq9l%(9X5@AZE7<GGnHCu zO-reX^*Sx=N8$`YkRMFvBa^P2t7URmcehdoVevY!NRLayYr0%ma*42IA)*$sn+;)> zw!x!#-YAM2jDkToeA?cw3e47xLUA>!&6oAt<gq0*#KNNMVt6QvC6_3ntb?Z)jmOR3 zU35NAbNdvo^0`ansj`t`18aD<P8^>n?;C0Cg$aaHw6WRsLd-+UX@Sh>EQ;CYPHFh3 z3uXT|D`Ke4Ee^8<XgqEE>1@8hsWX}QG@MYL_)lT%Hk-|S2MPhL+`z*Mgy`3!@$mTa z^wb$%_nba?w)f+qLZNRH0X`kG<ofRgpzZxXvS#&EmV$w}hNq-#wbVE)t>u<~LUCYH zt);!NER_MnHlPY?fYYdCy!Dn!Qi<(s-Xx$p2Zx7t{gJi-RlAhPqCW4o$jk$;;63HC zAgux7Qx1b|J%VK=GWvfaPY<x^?9C&t0hX8HRw3M#MZ<`DeGXoj;6LH^pQc^IbzW|f zEz2UieO*jAWz1bg&lS~;ewxrJowh+@LEiWl?joedtWfL?=j%n5%610YxMk-{!CK=C zZ@xHUlX?NXIObR~_0yFK%@*G!r6?=fTLT<`wzrFQJ{P%f_V-Biw?qz1O+P9cmb(4K zRt;pp=so0}uCMu|g<kAvv6QpWwEX#E*r)9yqp#&q!dEb}XqmTbV6{xGvJ_niTY+f; zW*covYiCq0L0+)WXkIYjHBt*=P1T|jSUwltns0KF<?7Ox)x5vM2v`}!oJ>n?YidSf zmsx^)2sAwaostQL01zIR*+J#2i07Q*>S1Q?lf~Op-%V-LlUUkNYzh*!Ks4`JT4p2p z$ym#@B&>Abzigzn@JDldO4KTs94pVBsdP1;-BiX}C6n1|A^QJ(kJvFTp|8H`#)=sQ zo<xXsIfSvxvc=_mIfS_iH-b<gWiM8N>Mv$YWXl6!R?1iLP)>RG@&T9VQ0wG^NeS-} z1TPt(na~uMZV{@ur7k1azJS|6fa|oW>S=OYy`YP#ymXCBTOu&^fdxQ)Zj<^jm8$mP zF(33`DQw%r?*88Yqskw~V(<$0wHGo08lS+8$n#L{j&JfAeW@a_@Z}5iU}ZHB3zxjq z(So&<U>zM;M+JCqTBmDiz^SeQJS6__QvkJF;`Ey<fMlUf{!10$*k51#R}_A+1B;hx z(O+GL%OzMwE-j#v$b7&(a{xplU+s%yY3c+8*vIB&M6<UeF*NuQB4{Wf?`bq+dFzBs zc%osEP__9_f^ert6RpJzd6BTiLN$)t<cB8NB`;o8=v+~eDp{G|%(kSaq-|N9D#c_7 zgrKi4-ke3P!bZGh<~<W@sJ(_<*OutovixQh^ZjN8kzdDLmx+#HvcH-fRqAV{AQ={Z zeM!n2%B7-IlqI$|d<|i$FHLIOIx9;}<4W?hl0dB`QIhZ${8-Bg;BYl$PVLbDZbGMU z{2Bd<18o=PH}@>E(-F0dZ>BKgh;0U4QEx=4uRfy4owKY|I~c1flNG3z$SqN=rR$+f z7YT(zTI(Plk!{L-&pOE$G0m^p*jql<-?3U@G%^l4;gr*Iq;Vf?N2Ub|h$%`2$vzih zUkMRM+OirysfJ!@uXXh@wN+X*O9HoO!5*_(UvQFWE%PEv!5%PbaxI87Yu0s^r<Ui) za=rY|8;_?4-+Z>MX(v`Q5Gz@RHD_B!_;;CY`5D6{Rco2P|Bl)A*>|38#re)!3UjfD zZJ`dS)R^2xo@FY-8q3Nuomu^)zNt2qYL>6QLYTD5+`HOdq&idcBmUal3T>aI->rVw z|NBksOD+Y-)Ud{70H)3k%d)Xc9jh8%p}0V!)vVzVR#|vaYFWPg`HjL^zB*_3i#)O~ z-7F=f4wvL9lzM!s%cz>1T8CBUL0*$je9>Cz11?!t?c*r!9CC3xEbefIPf`4mbaLlp zvm?H#+N?~X+uMYuRr`prY$i0j(GTy`+e+}NIo!|7&II$Tdwh9S-xf5t#o9AA70FU^ zhz3iIBRE5QBDkU#b)-rjZLKL*b>(F(fx*-6%QVZDGh9YSb^llCd_9e-#h*2p!<_V` z+_7fCzSuUa{80@K)nrjU9<9lwrw3I`Dh4lKgGt=&|4T6G?b)fgIgPx;T_OF5t%^*^ z15Nb}Aa({ne+E#zEP<^)0?)0Ub<2eEW~>Vbt9sI^2iJ4YcrMhe>2EJ}pxuy#4SARq zT<CmNnHi}fx59I-@*H)jWyibp>{m^&rEW53SjB#OyT7itC&tPkRJ4*E>CaXfkEL(m z;|08v4<Ny8i{lNhY3-1akK2Ux%QD!}P#(*pbCKXJ920quM~kgM%BwHX@3?u;F7n_2 z;tJoG-r^-7?6M4YR7ioLU`u=)L@aw2mnzK@EXNN_DF~kAE^_2GO$~-?jKQeYHW((G z^(OFat_1=;xPtd*BpS7JKxUPV6;~1d9A!DjCuYuZKQn8HQ6sA?&A=~TK=xgGaqK;q zepfz?qn8YZ92p#Z2PiMnSYx7z)at$&*v!ppScWA@f-m!JvPPHHs$;ygQg8CAHFxEw zF7<24@qt=-Bb8uo7#XCdC52QBGenSeLXOJrLu^}lMxOLK!`IHq;PSZVw2ASM>!~cu z<PXb8h@B)rPFtjJE(ep79P;9|F1CrZ8+b|LPgvTHPP<*}#L7zx+pQ;;tmLQM+}rx_ zVurQ6trk^Qdb!Dz7mx|}B2B&&$J?)f<E%c8ynDimb=KFXfmVJ3H^*}6B;NWuvv_Vc zHmew8QIZ*ZTUFs~X@&Yu5Cf|*UA=9Svsae)*cl|2pq)25)-nag2JFJb$KSEz06ES) z!R0D_WlE!_2>7-Z;8_vytQMd?T{jrrElx#?;nZOCqozGSq<EGUU~)9#q8qya!XSVx z#g!eP&`OR|-wIidUOmgh4;}FSnZ`T|S#ma1Gl%T>t$kW4p>|JSmtf<Rn_~)Y2%8|! z_yl<d(;^#sJR}Kl@W!^b!a&|~khcKx)&O~H11Zj@STeck(jegO93E2HM)WOHQJVPn zOuR*oTP98{--fTUC_393$=h5*ZS0oCcJ!b+w$-<McBcOekwF*!k7nH{h~kEM$h`85 zxhM=)vb}Z89`n=0S2&-ot&{L3bR()ChyFoaX)Q=$hu;p(S9sU;fqvnSc>m;x{2+IJ z;ko`H%j3vl$3Y$YX+S$6cuH{}FS5sLC<1Q+KXP?*^$;6|Wg?=>?qR^Qp?F>5Jq$j+ z$9D<8!r)_eQO5q>kM;`%meICK>SB4x-9AuTG;+nbUx2ijuLrItqkBbEdcVPKYsud$ zqVdgZ5?ajEEx94VUPkQPP|r_N=7qN807xxx!Zh>Ax{DaTbJ;fhERnYV(_WBZ`gL;L z_$6BUo9wVsxrfFFt0{tf{!|SoMyI@jVm!aZPU@(Jm;uUR=A)<1F0&{}?^<Rb%>HSC zHJgs#8H$?s<*<tCu_0Kktm~v<N_4aA2=i)^Da)D)D@)DW>k7r_(<lnqA4OUdSN@=O z!S7g|V>P(4tmmutPVd2IB|Y4ZkMbA8l;Ei#xskgUg#4Yn*ds6b>E@UnL`<Y~m!PO& zlpD%!HBHTbq>d?Cbil4!SjMqG>j4{J?i$CQAB^zN!z2wu>$H(q>Rb1qKLi~A81$X< z&PCfY2!<e;Yp0ot%RG;2`)A}SJp3aHX)=hpUCQ;kxR5-KB3#+U8=qsm^p7US5^izj z_H&VjY<4kQW5Hxbp0><w`pUbl><SEZCt3iL7y2Fn{#`qCK5!hjlKjcyR%TPRS+9fW z8aXFb^rex36z^lfBD+>}@dbvgoe?_>i+ZAvwlis9-m++*(1PVElwt(II9MRpsskBO zC;Sw7Hun^L^`aaM7VK}u@xOz_4_J#a!NCCG;D08mu)bf+x3Pa%{KOp#Vq8okU;d=n z)O;m85E)cuY+&wL>mBw&&2f3rT+LcZ*lIgVthVbgGhKqcOLrj>r5gbIn0MqQ>qte* znmsEFe<Aj^X(1L<p0KW9rA>~C!iP(ocsZrC3|s=(g>>?d8cuP;32r=j5Fah){^juL zS1M&!C~;t;iTrVQED66ElHmfVd=+yWNs0Alz<E{7UmMcO3?b{OI*-Tu%I-%E{4}Mp z7m$$N!$YXutdiuhq3Pnm)r{TQ2R|Ng@r)!Pr5{*)h4=b(MqStCt8zTvN}@a_!E^TK zANhqOevH?-#?c%I2Gg0|N7}6=>NZ05*BEoi%u!OB!~(}Yy~jTN3WOhflMi4YlDmH6 zv6XuQQi@=OVdQGwCK8p7DU;4pE2mwUAmyM`ZgTf(<&3RGF{F~=?%kp$$x_?Mu3=y` z9V@+>X^mSJipOj75&H$Z!~@+1o^&yS^mRh?^|CgqASI(Yo$wTae5$y=4?ktOHr1Iw zdEBZxClyN(UeA?$0*18bCI8>vw>GzNBa42|uNZ49HpR%aDA`G_ZTS?%heVqabx2yV zoupJFawJWe;%GUf9VN&A{i5-H4~C?&yXRh%O_4J|qtR$I8jVI{fula-a;iS5sxqo( zMwzHF>^3i&{a$}i;gxT@h6=;?=^Oag%Yc2ZvYN(0pkxUP!?x5JGAz^DC))KmtRiES zKmzR<H&Eb%M9R~;I+~q|ZRilgmSC49vq@xiGrPUbW~1~r8D(ra2ETZ}!vND6+|MO) z4nd^G@();=u$f);;x@8zZj<(37RfFCF8IcTE+SuZQqotzstkfzaEE2PAOyJp8UUlR zBE~ue&2>ooXV$su5D7()vZA{i^UE`c=}I>QwNpa0I<|uff5l5}D{+uOyj5vlQ=4>n z?`#xDzeut@X85Bv)ALx5v1u@ROlp_-nD~q>LEpK(t61sApz(tjYFTEvl8Hd(EqV4P zs&#udIkQ9&qK*JE%c498r$siYRHV+SZnO3fNSbO&!9SvL$5?jHI`C^k9D_&*1T;+| zy@uY+ic}s@=J=&Wni4~ULZvy*UZG91giIqZ?2)BBNMp@_(ThfyDwL8M1?8WwTtz@< zm~>nCF)A_|G)`L=XeghxPg~v7BTa~sPHrXBWRZmOt3|o^#x@wv;ykZYC+|N=lx?~{ z0GkEa=R2OJe<mcxHO_(fVmU@KF~OGuM57xdqos#5f;Ad*;42Br5RN|x#g{qyj^2zH z`2Ka!wV^t!Ed!`@X5V9g#vP+?$%@L#3JQu{De)FTI<Vve(uD;hY^XI8@ZC@RZncVm zJ_^|c(2wj5;;)_4#uqeVK(F)`RU9;`ol{iZ;cPO$N3+<>wq<Z`*)8xWV^O#MAEbuK zIgCEDPq0Qdi=PKJ2o?Bes9omSt<ZXi$@L*oji4nh;)9%vrYW{Vy;;hdO9(SC%;kA{ zJ!3x2Vx2-{Fj>E3vzKV>PSAo_lF3cP8FPe@g*rm~P_AkJafhUfHS-Q<exj>wE6SQ_ zsw=Pxg$;I_<)<!Ltv}7Y25XumB^FQq-pnv?)IK6hY88fRx=}g`vn7_t<;*mC1ztN1 zhreZZVnu^w8dvRxRchMNh$U=1&aQTtc~n3OO+}y9ck4P0wXIJ8(}DR;nyK;rN;bcZ z7f7vy4B~-on5>5_-gbAQeX(3qs8m5PUL#pS?gOevZ=!wYnv5;^<>3KIGJ&Y5^1VIU zl5H-ZA;~Rgy(*VIkg3pV<C__Lu0;jqi4XHD6<5p3ubX#gIIn1f7jpOQJLa|R9e4Ir z7HM_UHTrSSy4Wl-x5&()%Wb0;B$u>vgJC|qEM&XKXP2@h7AyVfB>HqVjnTM2XKJ@+ zK)V!SB*ekZDR^M8>%i>cuywd^Hw0JTJJ%^}tNY!C>b5%1+bXMDhj>v}psws*k;?+# z!bkKtdIwj!!88Fk58(r%NbjDJ8*Q+lhg(dx{>*MK(`2$0UEb^H#c;0*tOuyp4m*jT zkx~%fXUhe(W242w^{l3F4J2%otyC-w0xD8u4U}!<ep@Q{JCfU)-G<5Q10sM;*cL=e zWPV2^yFD{lswMdg8)mL{Y-?-VzYK7u5gLR5^a~vQ8E5nP@(w8n)-$`NeT=1VW>3mE z7a?VgvAQ|N%u<j9A()2>JfYqx7Bc-1*{;8Z#DWB<5bgV_c3dFgGlCq2P8;bXF<grL z(mHJSjZ1Kg;QjY9p1j0wZ1A3!hBrzOC%oJoyu*1q{_KSJb7^?sLOe{aU)tgA6~bfZ zE}a?NT?xrETKG_T8Fgo0@YUGKG`U4fln8rEg1MyAW{xV>@gyhr*pkyX>l^c_`NTSv z1db_<|Lo}5`KJK0f}{Q>es0|8xgBjYQZ3VkRb(r@rR7xF{#2et&9ZOZW#1N+edjLw z&MYgtPw=nmWl4khE4IC1V;Q-RWfEOx%h?3q&<D2BS(0AgTxN3+>a$sb&o_euFWtXR zXEHoIzaxgdn<rn=Y?&*U4&rMr$lZSvz8P)5XvwfKnJlf_k|ftg&C^NrzP$L=92tKK z*q1ts;dWE_9j2GT4w~@BA}%{F)zEQ!ku5q05fT$BKwd`V(p92X5t9m*9{42eB{puy zvncr^&GBw9&L%tuq8!%K3|LLu9S)(~k50-Vy^vU(qizecSx#-#(IUM~YU1S+%pZn1 z8c}d>2XPp&_wr-Is6p4sESZB}LN0;OjP|16G_!X|&+UcvoK%NujSpNek(f3i3#Lsn z%q3E&IZe=Lm2r150P4#-av=w1pfTS2lqgQ;9mXT;E=N&yOd>0_)HT&CpfAzt=qHnm zOik<7UEGURh+SFXa!nN^zeR(<AnHC4Tr+v)1F`1^!IZ;S9uWI}5O_YO`CTBM7hnM@ zU;!;&_(5Q;uK>i4eh_Eb^!_@VdCB=xF^HRFG6yIY5LQ*t)G$H@;&S$RmVKR(AqCoA zt?YV9M^GKHAZO0v@n?|xmB#dIe4j^$y?*l@i}QX>++VRGN~h|mUf)B48ZEnTvo8s~ z8kSDmSJ+6kt>0!N+dk`>c}fr(zPU|qMx!eg3H#uY&gC?-t1$q~tj53_I$|iI@{tut zaQzS2uypKSL^*<*UZu(8zjVS$u9#(;N6!m-rrvXg4zaEE7&;IpBSxYRJY}^h6MNR4 zGq>7v>`Ke_m-qq2bKy;EuN%^4T4%SuSoS;Jj(sL-1c1J+;Olh9lFPp3ASYT)V=@_K zjvXlMw5Xfc<z!uOu@oX?#&Fhd%m}sRgk>b*0m)QJq%z`YDpU~ELc+bVv^7k~O@UhI zw-aCJH>t8GR?+BM2C8xpdkLVWj<%r5mv?v56o;t6nBi4PPL?>vSXGtYpNj^dZ3R<u z6qq`n3Djn9)aN!+W3k!?J;k_|QfL<Rn;$~h)zVM5@jYH^A`T2--!0y)z*8A*F|ndx zhw41JzGVxh+?;XsQwNZYLFieaN{lCpU<<jWY1l;0VMu(4r(|q1r{hJ2MK2G>{^QF< z_LOd<Ls<#*)dJt<4Kq<Zv9Gg5pQEPC6A(=uaMQk==R-!t1GBN}^mm))AY<ZL0xN!{ zfv81SnX<6gSM8yr!o9(P2Zj#TjC?6K^(32M8!v7vMHQX}s~N7n)sjL&Yzxbn<jw5% z4t%cc1IgK5n=sG@^&?Xjn6sA)m(}O<!gCQ_$!Ck1p$zL2L1cPQ6)Nn=XWp<{)eGW5 z^c9V&3}TIajc3?`ppP3oOF~H<nm(XlFd>DqMsdF9Cpj2`q(VffFNqC1v>?WccO}l@ zdlX+HHG3Pi`YxGGKrCehAu1KpX}Y*))-xnP{Ee+?ul3xg{Zad+{xFL0#ZKs7jB0>T zYG~LdS63<A>I@XaXF?d!{S~VEB(SQLn|xcJK1n28z#wV%sp5Ihw}FW_F3I*K-n?{L zlm0Wdn{~LG+DbOZE+Rdih$6C^OBS;g>Br0H4jeg%qbC|=lN3$A#43!&jt&ksi?_)b z62<U>Ws=T`ZpQUdzOpLhLf2~Ikz<?KzVfhiR&ZXrwQAh=3dx0pUrkeR2+7KJca@xF zEf*0{)6yAiT%rD8oj_NYNK%F9Xx$x%^@J3JcdVCXWsNH0i_+$h@62zWsCN%FrVE4- zH&THIR$)G3i7M)|4G#C{*|Vrtt06cbfODfNL(i$Nu**)NpCYA;2c}pN->{mnu7n%( zx6}mw@SCh@&F#)mrv!VqZPFQGla2_RbVAsq1HvYq514bb-SfcSUyuTYxZB~tFN0a~ zulFGpITfhCHmMFd085+qt3tK|e)~{>-)#=CY8Qhl;Fu3uWPo`e?B$3jCNP&HCb-Jz z+4ReMYfeec!iM7#zR3<77vDZapdRt<eDQXL3S26`I!9|~9DU0Zo|T=C^2P%(%dHp} zWPmqRDUgDVRB;$n?s)Qv|A=_q^e`#31xi23BXS(DhWD}Y-Va>y0sHk){1ukE!gT{y zg@2+#43@IH4=qX;#O;8s5-G#zTSmJ-ns$=VL#}L?hn}p}53j>XFzH+xIWZiebvK$+ zqdY~cRkXk#!!F%4nOx(OX)&yI#!^P`WyNsr;yD~c!=4VG)4M!ED|>2z!vM*FGvmY= zskDc)NIeUu!9ow68A0nfQ}|11=T-ZkM;UB_6qFh&5#Xv4{)cGhV~4twsHUWKq$>of zUGl(j>>j_{;IS^Dv^q{oF}`7B&;dLWZ`4CtIt3V4@`i&bz|9V^oYh?dTz0|{psDGP zcODr;LfYy56M2IfF~Mb&vLCszc%hh@N0ZzT&f_rMCbt>cO=bg*G)1Tya-<(vmB~SV zx@1$56hX_Ct}C|B2xp1P2KNaZJN4bY=LKi92m=00yw?O>9cPaSG{fRd$)ff?q`$uV z2g<;#siSuDtk)mCYY$G_JtX*|W`EF*hW+=0W*dEPwGo$}^v~NZ5K;d~kP>jE;7y4p zan2nWEGhYPZrO=AwlWYvnD$CYBo<1)XiJv1dU&2vzEFXjsJp?5PfKlXO`D<}qdAby z6!T=9&GCMt<Om6q=@yq6g)<q=@F+wSXl5bNd*^_l(QU3U6vmVVd$)sRyvl4<dZJ3z zsHOOrB#VgDAR4N>uo8r|TBUez^FxiOKam!bUeDm}5XAX^iC$h=K9s?bBIJ54$LgY4 z-C+majQD=o9t_&e0`_BYY={27$$U|v2TJ8j<8=-(HPz5F^komwvp5#yI6TvQtr2~6 zb)%Iv(HbWiFQ5o{DHx`TK;grtd<KE1LaRZqv1bh|@@-{_+l?~&Y*3lmz!`OKU>7}{ zi$W?;5bW!jg1Ob%iN)QlM#kHL5nQX)qC5dZ8v>qZGrWgxi4w=sW7?zcN|aVwv@Vqj z=)ogO2Jq}bBMqQeXe}kiXUrGYcy$Gbpw%hJG_x2hx$$xiZs2IWf`gpEdY$;8VWUn; zyj?Olu+2(D;N8mC^q5`gDOA#NG@rC+<MW<qlspQ8SLeI-U3{+MDL^4u3LkabmdG=% zCB8}T_cKleo#sF#!_sAv9g?z?HW%)z4gp-Ya2P<MLxE9=)KQ>|vdsQ$rTE`yGVPlo ziEhLsM3Ije8<eQqdElk(Fm%;uOd)h&!4N=vkoZXa_$YcZhIwIm_flt$+js)eW5?MY z--?GZidXtdz#yO%n>Gv$SJG^Go41&mRj)Ed6jY)iP|##nDS%B#R{$I%z7?!?8akmI zlkA9i`8O7eczgq<<Q3+9lFH8hBq<?ns-KFo>+x&|-UVTEEam#f4M7{2*+tGz?pFe5 zU!H#0r9AR(-t(UXQ&m4jYP7uo>8_r6+KD7FuU--V2`}p{NZ>myc)m*Y)ArM+Qa&gs zLhk(~1LR3D9ZUVIPoeOsUtBNcmCR7CJ4f_h@ZU`$<v{4th&|F+QkCeFcs$S8m7-t? zMdD_a6_=Sxuffc;n&nVQ+S<(4TvLr7Bspw{DIK}N!MC=JP*i1Y4;yy88O5tiyrE-( zwIkb(+{{O6(#_!XseJv5WClM<vfBiqlz466*Cf|{fc=|gwTE1z)!nZ$X_THXRK^Y9 zTfmOr*;j>Mp3LffbVyMH?c{8cn?`Y(y07fdhvd0&V_&B;dZi5s1}T?p=kQ>}6klqk zqY5$oaS&M+BD_n9rGRS(CU*lJ?30KpzY)HXeupWJ5@VSYY<bBENqap!&=PKb@ajX` zd{l2l2!`@p+i1qP5eF*{4T$vg%~_VGWZWW>4)0+zfPK9<nx_+ih5%A81Ee$O@k_;e z5QEu+g&($VDtY@?S6C~AsEaxF-otlI^CcvOp@7<FpkO>_Q@A)`Hp#vsr5Hg@XZSGg zeZGL;in!D>ORJujX%&!Wzoqq&nD0w4vw@-|!kD?VCKwKp(vO{=@t0r+@w#Q_M$)qC zyL&n*TJ!iTc2kAQ_>Wa9BrqGZF%pl6$h9LlFrAKT=X49*aX7g%3O<YMtYL3cH5jVt z3!P?`+V?kAyCN36)$P`p9_w2M$^G@1z=OQ}2Prhl=tEhwkPL@B{`K${u|jf<xFbj< zN8GXZ;)Mp&8zEb+(7sUM>x92F8X**>8^cru-OW4X%9d!ovj_}o00~5EwykRhZ|h|$ z`r2ZO9@jjlR|lWe@K#~pgC&NA&QPxonY05#rhaVse#>QYGrhwtg<&F@zzq_x1&7pF z7D;jrTQNp{9UwlitW6R)Mg&qNwY;h&SZf$dmiE1}lna=tQ0r^88a<nZFY~xe5{PYl z4@W2@Y~&3^Co8Shx6jqSHQj!0lJRFeL6XT4=0$t}e3_G{U=F33g=Nb{34;`}kGs~I zM;3b94du3}{UptAWAJ3XOcq~(xPYvEj>p;!e@)E00kgg?<{TprP(O>|s+JiRN7C=$ zPLizJa`9H2-?Xv?`lojyd^-8Xk5Q$P&OlTueer#?X9!tke5kBvh4BnYr)`6Rvh;fX zf5>&D)B#2lF!-SUp0QVAi~)|vAQ>-6v<odW7pd|Z$bl2PHPwaF8>E2i%7$Y=R=8u2 zl8FR}!ypC_1ck2f>AYfJ&*QtBlxV%QWw-Hlf}o^-Ca8%EtRfoEE=EY@S<bCXC8RvD zHJMIg$|AjFc8%mJNd+1dhY*~UO1iVV<pO;7YA0zalM_uYU~%DH36^BnG+^wEZqo7R zS(3Ar|Hg@;RI)BnT);L+l+)#Hdpb?;^5kqGh*DO?gTPAh9|%G-osXwUe@<b#l)lD% zo_)PRbNg^{KTUY8>f=>Jt_I;a14oTQEQD&WU?Cm{p;Ep}9BI|7N-fDo8mU>0#bLI% zY0oBQuM74h!%<)FawOa~JMa|HYm7M;oU+5Mh}&SEdl&*>(3_xu4ro;p@IuDS^}@B< zph{f8UP(EWRvV`QresU<C<GE;e1qNTFEUM-UT(bEl}&HfDc?4`5i`baU1vp`dO-5- zg-B|YRg<%4Q+y+mqo^ca<)V@tI?ZN==BEh^3CR})LyKjt@6~pZD%)xwowWypMyuO6 z9r{+}wq-$3z`x)C>HndC?d1B&u!%G9QRv=)QLLhEjRZ`)U<BGz@g>(<k!_8mcK_s} z({1-!7p=yqaWVRM)~=}a@*NNIxQSGkJF-Y+UoYUxC_7J+ui$8e9ZkdqC*ZqrMdG7^ zRY!zJwH=MYc4Ei+Q>wYbs}7>Uu0aDxYOI<O#05>p8CpS)Sw#eS2-_}fH_>E?*XUpB zyXfhcWSZUKu?tJ@#mzEjLF8&G@HCG|Y&nf+cyEH<KN{^J7<bgvKn^0o)BQPGC*>K$ z^PpxU88pFh4?t)TsoxhpxP<+AOx*DyNPD0hVg3-5S4pqMy(?l6Y0t(!W?m>~`t>Df zfE9&n?L!jpC|^NauVZZ;L1Hij=WOb5!7u`E4#A1!xCj49uU@MRVMUF|VzkN@bN|s* zl3kg5{YBw;hVsR2kmSnHlI7Ro?@`e9pz{O|OT-?5nq;Zrjl6AaKiUE5FTK$ovl-Na z&0r9zFw3IL^xAe2vS}1!sq}$!(8+KFJ%vJoi=lnerW83d!Zj#O+9T4Ue|Bm)L-Ur$ zV()>lC}ld`Hj0;T$o>O01eH0k6mqeO_@+4bdPEtw?QL)4auAnCk%*E+R(TF;2puQQ z?Cu^b4@C7TV9MP>w%xOkDzJ{d!aDZsb?8(U#^It(98O~+WQ?Z}HPYx)486<q1Cnwd zKMDjteDJMVb!H6IEFpdT_&|W|?4!*N$->>EA3lDnec+w>;e*y)g=IhTvL8Rn>puQX z9(HUtH&$z6RPO#BMIwiD>wtHlfJ8K69|sNpxs2zD<whD`A!6>69qb>BOCGW_eH~KR zBT|3hKY*zHFrhq^vn7Xlg5B`jTOd;UJofPWVsAajX7|*CJqD?pg1q!fdFYk$&I4?O zXCC}=WHh|;Aa5_36?x^kz3(JFnv|dr!AipQ*9URY!+lujo(JgsfA>7evS@S910ogg z><cuk?s>&P{uABvid(g|dmd(F1HD?%E<Hhy_~wyasCB&a2(*WEmUGtdV9s*N;B!|0 zFy3<B>cCqr+$d&gTlCx*!tgn~iSLqHCnGy^@Hdzpq^&Ppu9+?8X)-@V!>F*8M%5U? zaWegqEYfjo>73Wm^L^PIx&i7t1iToHkij*iwK1)(p7ch7h5h|3#p);iD~U)*hH0P} zfMN+VVED>c2!Iv3nH0qL%WCt4Uf(f<u3c<unCP5rI8l=753@gN=s&Y`!$b6Qm4>pS zuI+7)YM?62f`b&~4kEP%(|loT5i8Td4m+=uGJHz%)<#N}tBqi2)8$2}lX!le&hW!c zZo5(x2=p~}U0rZi-E?KYUEV@02?D8`hnu7kO&fKK*|1}bNjQhRvr!67eA4nzVpQTU z3<-7=;75t`mM)iR0l%YoWN!+-*LhlRT={YW>22%O;FFk`kZjPa`^Aodjy?D-0Og+f z<tAMu7tKNnA5PKAo8=QhgS^u-0i|w92lUO;pY~Aq;1AM0_AP8t1KujSi^oJKH@J~# zYzzT-MxI>slB-2fHyBOWglr&)tl_R=15j%G+Xt6Q%?&nI0=!O>?O-<0aFtIg5~HlB zq0rLDNjw>Vx@Gk#I0`*nLy)BBXeh?+!!>jmv!T8r5g8)pWbx+F!*EwJ%Tjn0K{(;D zySuBkR`Eq9c!c^QliVA1c?gq^#DLh{i6nWZL<U5q1d*hGfGQYB!?Gl-D<qUb$yR0- zm+(NgExMFb`24jC*5C@9fZvu{rS6#7_p>A*C*9MEX!wp?Ie>ri+wPMBsZ9bU0#&pa ziH1V>zuO7VJrbl||EBCmaxXk5%@h-iN;LDF)C0QQunHc??S_Egu<H#5s-E96<j+PN zpCF0VW}tJA6&<&O4<zlbnnCI4PyypXjDJt2$3xFc5!J%MxFQtp5aPu-;^7JzrAO3) zwh#3U`ZZmNU|1@}Y%$>Q;8eESME&{`NcmzuzPp!Nf~Fs>Es)IU_EIFK;ZC$QNTx}g z!=Bph9RLMhfyrx@d?gleYfw|u-^Mc|K$2#KT~+q0;EeUE)5N~+=A;?Z1}=Y!=PVdu z<qEc$2;gGYrb&vhNXra^f_^D`aozmzev#ng^`{8MFFay3nGGr6!{rs5qND0|^q3*( z+;US8Qup4>3K?3AZfa@VhX;|s1U<0%xkXyBx?ZdvRBTT#wii@vUoW=*I~(o_n>pHO z6c1~ofoxbC4bp_Q(dY=$#&4Xx2^XKkjuy?8{|W=}ub*nWonp59v9{mYL7#j0vyMMQ z%Do86^}O~Ig801lBmR7WKcC~zef+tHKkN8&w^Ib}+pF*XLBurD7EdtapSK6YZvS)` zk+Y!{IF6WIRTOe;KeIiB-bS+wb7E-!v6#ovIHnf}#GjK{bd${Sm6-TC6{26DITG)Q zvWrVF^|7adA#IRGKsKkDyjfj#M3InH)ec@u2TQCl$&<o?hwdwfWKpW*l0{zv>3yOt zgg_8!5?Jk!?(aL1N*D{iF1<h{3qneVt<G;+AYt}cjWXP!@rR|!ge(QIspYF&q0=XY z5twhh(?8FIz$XdD_H&A*<gwBfE!s6-k|&b)NPm`K0}y$k^!x)}Y#_fkyG)vhMrRjD zJ!!NmsI}Ndq7J7$G~jSVzi!S@yD}i8$jrvKcLdJXKOT)*TL|8EL8*;ZPi70q`Q-eG zCvR6+Ihh|hjFjh?zG*&5uhRtv*8N?=UFviGwTf1A(GQqQ(5M1G*(ac2af}?c8yO?` zE&MH5{x^{`S~D&ohM5`8mK4DYD}DqF>6O@vE9MsmvsX3W#e7@u@2=;tG-HL3a9QRM z;S`)n5X7^2f}f)W-Q7H!EXUrvn78C>jBD2D;*0{Skxw|tw30<KzlF&L7&^inE$)%Q zU)X5#Sj*igMnOv|l%8@|es8w0T!v4QreYf`>>b;npb8?uxY5;dLF8{NRy)MKg_mST z&93l`o8)8w+^LDy_jyXLVT^O=e>&Gf$pvMOOEr3Y1PAI+??h2!yjaH5={?JV*ZfeD zFcD@;#;Hi<h$?dpm*>0N{6bwRV09I(8Wa39!S{jQ5pJxFw~3!3pBG9^3W|T8BB9}d zv_3)IAOkig0>Mh;l@i%fRVdjU1K1EhFI4?-5ziOY>q|sM6=R{3&hrI=3PD@IqLN@C zf=Q1CX%2&)WlaH3PU9;a&s!TdXu143N$$WW3&BG~&z5tvG({+&9~cKZJ*sGd^d7Z) zJ##u@(pJb#?+m?dlbc0y5E2VP%xDcQSxO<jS*s1_HjWr~{}W;r!I&rDEC-Z@0MK)Y z*b^o5Ill85yknE(Gc%9b$V5;B5H`}V9F)KCBsgrh-x+y#WO}0?D9^>PJ=!K%>$cgP zoTlJYs;0TQCRf#WQPtrPCE$$EWwyA9W<<U~^AQgva7#9&F5<T3?IrrITUoF)Gqi3E zug9wT>=$o^H`Nvi$4A}_ujm~D^8}iPFYAsjVXnz=7(R;;iT2@U8|kzBxUE*wU>o$` zpSFhTDgi4jhGy-IS?`#X?aO$we?mhSuWq|T1s}1J?bD;~X&W2z`mKIta5CI}dK}gF zo}qtxySp!5(i|@l7FY2YZYM+o5)>5JX2U%P{@C;R@(u*S)il0Fv)9u!Cssme20eC2 z|B#zYHj&W$vytS2!^q!%KRSCqV!!NpAw4ucWz#c$NeofsF5wtkju!R!CMKkCEN4i) zxCSmjy-LR-xuXVU&$VL+zs%D`LZ%3Srk{x;rvZx3B!~p+&H`gb)PO2{#R^q%pc7K| zSS<fem$#(ogNB6{80vX={VcXPersN@hbE0*2HjD+Qlhcch(jo~U6>u4f>1_|Qeg?} zWMzP%Z7O|T0cAn#AVhmRkOj$fARC#|*%Yr!TwLi?JPT>SlVC{p3pam*d}VM&!O%j} z8b@OXuQUM4iv95HJJ=6_Rc!Qnfw~0WrZIZ+9llHg&Q3OFlL6_6_pEQA_PoL+Af#$5 zU!W!VRWc8utTNQA!}*vLb<>nXcaKE@g=QiAisKF9Xe0-0;EZSnY__Ah(v+C*(BId* z2>g@{ca;i5d0WQl*EGdG1kzgxnO_;Sr}d{OV;Rz~OYpyi%uXr_YHx&$VYIVK0yrbZ zX}Q)M1<9DF@IWl;3n@_mV#$jEbZ0~h#R_Rj>C)-;+84)-(^jutV)l~owr65e#DX82 z(MI?JYRS?H8m*Zh41|8&n-k6_b6$_$R37sRcOtn37CqS<Lw*27bF^HNbGK)Cx9SYZ zr$}%VLI0L?4!nisFk<>~LYBkx<e$rQjt`ZxZJEo27-h0MMD&bW>RfsoQq=1|t~N#D zqI_CZW<=XXe}Q})qJ3=<8yiv?ps_#^iVNGhHz!eL{J*Bz-zYPx5IV5GOu85hP|vC+ zGgqIjH|72v{kp%ma=-5H{rmJQ;8LPrA^X3sUrWtNSgG6Gq~w^DigkUQ+{>pj<@FgY zSEviF7*<YFOuZVd+VS`X!x|=c@f=ZhdcXNiJ8ecRUdx$<m6_6PH=A2rZ34B&UbJ}P zluWoT@VcQDt8AjTPw|&Xx!apQdo4KO6@BJ*=`9+dBXwv}n*PA*s>*Y!gOIOyg^tMW zV9ToWOjIpJZNRhtD8slR97UH_^;LnT9F$rlGesAm!$V(;>vdUF15phnn1SAbUh^wz zInxRjt`ixO*5+=%k^_K!TT@qgpYzo`y#fICGnkqnIiHFZKAzb;W+hzMCnrk_Nt~1g zeHB+yM%LjZiOQ(7w8Tk`Na2^44<hTNhCiIZ^O`o4p0%oF;pEiPYQ3tZRk~G6UNN@$ zv4&N*Rma-?-rq3R_V-GY^nb@#V-5dz8Eb~B98OLxt=6krTBTdHwBfPFm3r%V86@#^ zRi&MV`Vwg{@MSkcAIT4#I&}y8k<*P;w4PjmL&@zO!f?+04>ri`6$LBMVJxAHwj(`M zSy3^vyK6)^D=G$ZhYyVWYYG?DR5ZH5E1|$**H#P4(Mz61)pm(f3eJN#4-vfCKRs^` zMi(U7#Kow8(dqRYqsm|)seF)%^kfX#vy5eRvX!jL@O%{u>05M(0DOMsYbGJFvz?S% z={7rQX|Hi|M%!7wc?6)ReY~m-H4tDsn}^27X|_mSVxvFV7Y*EvGTbg`8xB=+;4?;p z=nb4qHJt|z5v9-zwFq~YLFHaYyY^DMW*KWfwlo<Gin<9hD!p>(BQ!l%`jUnz><|}W zIoHZd3QgiFy}7E;jckInRdgQQh#M!7i+hZ-l{b6L@-jCKk7Z7cc+?s(l2{Ii5+}Ez z+Vfnrp`s23cMCRh2>0p^4XTA1qj@LV8g@^QdhKXS?N$$9CQ6C`6VXuuFs54o#=Sl` zr;N%$uKySSd3f9(jLLx~awjSTefV)yh8Bk@?z>{JT_>{ku`9;9!NQ%h0cv}v|E@A* zEc$Il!zaG*E+_U4qO$2jI($S+Nwa^JaUS7GH-oO~M6%j;oWR(-M&O>sHhVnCB9U8l zF)W&wHS?TAz(_hAQe=lx7aAUzLgVML4OaJH6Lzf9vkhHSchC&a#~CcAiGNDE*ul<i zQWJSD+}8dTWP~wEm*Tau1HuN+nB`U+6^y5O9T#`8_)#8?5}s9dl3fpyGSJrL0?Xit zlw-BT>5@~SmClp#qA?yPdES7yWZ3jUUmDjTGDQ{sHs<pfZ1+brgfZ?!^!#iwmmowx zDDK-<gR?o1OfhL2Oc;Y5$(S$Pv$&XsPm4Z*HvvR1aOZLf*H`SRvJF6<xwip?n+h&L zcGp1>9c>>ev7QAVQkdF8!XnItJ}d3$ks6A$+c1LSH^Qk3lDyMUTDlmAA&Ujc=ElBA zo00+|703g+t|D997XR&#^e-0_+BOh+Sx19enqZ$IMv0z9KmSYQN=fNKDhL!IxV=RZ z<k>TrA9H+4=queK%a#z`9BaNL&Ut!E&MxHXY@9&Ul594GJA!YqLjyio4D0Iq=;y_a z4EYjf-rM+d66MP|j$RVyd2$QO3kv@W76?2r$_zp{{0!xC5xvAE<aT|c4er+X*(Kd* zKdGWkTZ`jb;UKZ%5BIa~2WJ9@L@Q`6=b%)G^?QNrM2wlHngE3)Bl<rON`=6E{o2f~ z9(Y)psUAyJZcvgw^H^h5NvaCa(y~*Ll4ZrD8o$1@hNKq%o24DKCCE~T>Y^^8<+LrJ z1**wEw)xIx?38$0nNlRxCcx^)Z4rTp*vyif!Gstu!ZEQrGHnc%`j6#MF@5DWg9?`6 zB~Y=6nhjx+;^7vGiK?Qlgv0~dPVEY3W7zC=IihR|Sw~8ew3e(SNfmizge6Jp{U42d zoTg_;@k+^o)xUgVPi&4Q3w3jBBf^&MoSa8eSX+D^`4Z2Kzt(qmt0#>Q7sKwScE9s} z)cLu2+!*{WWvt@nu$9jxUFQIH2)We}JC}4z_fl-*lfp}17GoC*(z7b-FK&Ny8a%h6 z?`zfe)(#GTqq4!yIT|kdDkP_XE~%oz%11T;(YdB86-yOrvew!Ym1<CRVs8&VXWFZv zW(Bniz}TB50IkqGu$!;dydM!>7=yjwra+NMlqrifo^;kjdY>UZ3`TmNBRyOR>2$Fs z&SS(zm2+}@J^C*Qn1W`zC-o<R_>X~o?B%^}37O{LGrTQS24dgEHAOU396G(q!Soz% zA<d?$E37fSt~{x#yOjv%IgTC@R@hj2bk7z6dnZP*x2qL<7gS7bp`@r47hOqD5RT~r zVPP-OUUYY&w>!~0Oa3kpB@(ymN@d!!2}aNM@~!XXJM*QCK7<^P=kz6h8@PED;_M^m z<Z6H|i!`PLFIu*@fY)peaFm}MuiiOcsddYH^IFF4$yu-4Y>c}7)5;^6n>79)l`x%1 zM1yJMuv7Gf270LP?(?8cU=K@jIXn-Ix|?U@3c!reBN`{uDFZi7AaVjkO#rHrQt50w zT~6p(pzE6qqR*frd5wk<jz2>jo<(%KL~2?R=P4YJCg8vf#qe2VDC=Fsf<Z-JZ;~03 zZt(=p7+l`7s|o>ac#<s_3<~dIe1#(6{F>47=Q@7y8i#2C!)MN+-DY0^eu_Q*S$HAZ z#tD+{3qqYqhFX;%Q9mXjB@jLkOee-oO>+h<U!>Ei9YdN$y3Ac>L11^e!_81MLY`D3 zS}?+^D259nemwme-{;XZz6TGXC0M&r<K&WjwS`90a*XDZ<f1u^^Blre$^n5STp@9h z5gjl|jDXR>Am&#tJWw{Ykl+IeUmYwP-rkxS-&!-iGc&%kW)wE?14LRVRVB4lF$~2x zO+^vp<Tb<AG(KlSE5KXT<~^n~@s_P$jMpyw7~s=l-j<svFMs%R!xk?Eb@A|4k(I$^ zT-a4i3Vz%zv(;HLhmJrs|GXPLiz=Fg`yqNEb((#^u]#zn2TN^z`6$%U=s@9^{J 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 literal 0 HcmV?d00001 -- GitLab