/* * 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 #include #include #include #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 #include #include #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 || defined darwin #define UNIXX #endif /* BEGINREMOVEFROMADDON */ #include /* 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 #if !defined SYSV && !defined MSWIN #include #endif #if defined (MicrosoftC) #include #define EXECOS #ifndef FAR #define FAR #endif #define VOID void #endif #include #include #if defined UNIXX #if !defined ENGINE #define X11 #define MOTIF #endif #define FAR #define NEAR #include #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 # 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 #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_ */