Commit Graph
128 Commits
Author SHA1 Message Date
abv 4db4247a0b 0024836: Stack overflow when raising exception in low memory condition
Standard_OutOfMemory exception is refactored so as to avoid memory allocations (which will likely fail) when it is raised:

- method NewInstance() returns static instance (singleton)
- method Raise() raises copy of that singleton, resetting its message string
- message string is stored as field, not allocated dynamically (thus maximum message length is limited by buffer size)

Class Standard_Failure slightly revised: method Destroy() is merged to destructor, methods Get/SetMessageString() are made virtual.

Add test case for the bug
2016-01-21 15:49:51 +03:00
abv 8bb8064e8f Fix of compiler warnings on OCCT 7.0.0.beta (CLang and VC++ 14) 2016-01-03 15:17:05 +03:00
bugmaster a1613f0a65 Incrementing OCCT version up to 7.0.0 beta 2015-12-23 13:40:41 +03:00
abv d9e9090564 0027016: Restore global type descriptors for old compilers
Global type descriptors are restored for VC++ 10 - 12 and GCC before 4.3.

Checks of compiler support of C++ features are corrected for GCC, ICC, and CLang in Standard_Handle.hxx
2015-12-22 14:15:01 +03:00
ibs 4ff92abe44 0026229: Add the possibility in OCAF to open/save a document from/to a stream object
TDocStd_Application class extended to open/save a document of XmlOcaf and BinOcaf format
from/to standard SEEKABLE stream object which should support SEEK functionality.

Open and SaveAs DRAW commands got new additional argument "-stream" to turn on using of stream functionality.

The main changes for BinOcaf format applied in:
FSD_BinaryFile class (static method using standard stream added)
BinLDrivers_DocumentRetrievalDriver and BinLDrivers_DocumentStorageDriver classes use standard stream object as an argument

The main changes for XmlOcaf format applied in:
LDOMParser and LDOM_XmlWriter classes  use standard stream object as an argument

Unused class FSD_Archive and its siblings removed from MFC samples.
2015-12-17 18:03:34 +03:00
abv 795be040eb 0026551: Optimization of initialization of OCCT RTTI
Global instances of type descriptors are eliminated as unnecessary
2015-12-17 16:41:29 +03:00
Roman Lygin a0218ba1c5 0026913: Vulnerable mechanism in Standard_Type leads to assert 2015-12-17 16:41:24 +03:00
abv 92efcf78a6 0026936: Drawbacks of inlining in new type system in OCCT 7.0 -- automatic
Automatic restore of IMPLEMENT_STANDARD_RTTIEXT macro (upgrade -rtti)
2015-12-04 14:15:06 +03:00
abv f5f4ebd07b 0026936: Drawbacks of inlining in new type system in OCCT 7.0 -- manual
Restored possibility to have out-of-line implementation of DynamicCast() and STANDART_TYPE():
- Macro STANDARD_TYPE() now resolves to function get_type_descriptor() of the class
- Macro DEFINE_STANDARD_RTTI is replaced by two variants:
  - DEFINE_STANDARD_RTTI_INLINE works as before, defining DynamicCast() and get_type_descriptor() as inline functions
  - DEFINE_STANDARD_RTTIEXT declares DynamicCast() and get_type_descriptor() as exported
- Macro IMPLEMENT_STANDARD_RTTIEXT provides definition of DynamicCast() and get_type_descriptor() for a class

Upgrade script amended to replace DEFINE_STANDARD_RTTI by pair of DEFINE_STANDARD_RTTIEXT / IMPLEMENT_STANDARD_RTTIEXT if source file with the same name as header is found in the same folder, and by DEFINE_STANDARD_RTTI_INLINE if either source is not found or class is defined in the source (i.e. not in header)

Upgrade tool improved to recognize include statements with path prefix, like #include <occt/gp_Pnt.hxx>
Code corrected to eliminate warnings reported by upgrade tool.
Template of CXX file for testing upgrade tool added.

Documentation of upgrade procedure updated.
2015-12-04 13:57:58 +03:00
abv 79104795a1 0026912: CLang 3.6.2 compiler warning [-Winconsistent-missing-override] 2015-11-23 14:58:23 +03:00
ibs ad77956498 0026867: Configuration - update any comparison including __cplusplus macro to remove one
__cplusplus >= 201103L replaced with __QNX__ macro
2015-11-19 14:27:06 +03:00
abv f2139a7f0f 0026780: Coding rules - eliminate warnings on Linux and Mac
Fixed a few remaining warnings found by GCC, CLang, and VC++ 14 (recent changes)
2015-11-11 09:43:26 +03:00
abv 6fab2d4f64 0025078: Coding rules - eliminate GCC warning -Wclobbered
GCC warning -Wclobbered suppressed in Standard_ErrorHandler.hxx when OCC_CONVERT_SIGNALS or NO_CXX_EXCEPTIONS are used
2015-11-09 15:04:55 +03:00
abv c9246067a1 0026178: Coding rules - eliminate -Wtautological-pointer-compare CLang warnings in Standard_ErrorHandler
Tautological comparisons removed; buffer initialized by zeros; LXX files merged to HXX; descriptions added
2015-11-06 07:54:57 +03:00
ibs d8d01f6ed6 0026823: Configuration - use EGL on another platform without GLX 2015-11-05 12:04:05 +03:00
rkv ee9e67edc7 0026668: Eliminate compile warnings obtained by building occt with vc14: conversion requires a narrowing conversion
Warnings "conversion requires a narrowing conversion" were eliminated: IVtk_IdType is defined via vtkIdType from now.

Check of bitness of VTK libraries is added, to ensure that OCCT and VTK use the same bitness.

HashCode() function for long long int added in Standard_Integer.hxx to handle 64-bit integers
2015-10-15 11:27:46 +03:00
rkv 5a9487c4ce 0026581: Eliminate compile warnings obtained by building occt with vc14: 'type cast' conversion 2015-10-15 11:26:55 +03:00
akz 42a9dcfc64 0026360: Useless global functions IsSimilar() in Standard
Remove IsSimilar() global function for Standard types. Replace usege of IsSimilar() by IsEqual().
2015-10-01 13:39:24 +03:00
akz 57c28b6122 0022972: Eliminate macro definitions that has compiler-provided analogs (WNT and so on)
1) Macro definition WNT replaced by _WIN32 and _MSC_VER for platform and compiler detection accordingly.
2) Macro definition LIN replaced by __linux__ macro.
3) Macro definition DEB replaced by OCCT_DEBUG macro.
2015-09-24 14:13:06 +03:00
abv d1a67b9d1b 0024816: Tool for upgrading OCCT and dependent code
A new script adm/upgrade.tcl defines a Tcl procedure occt_upgrade, to be used for upgrading code of OCCT and applications for changes introduced by OCCT 7.0.
Batch script upgrade.bat is provided for convenience.
File upgrade.dat contains data (lists of classes) required for some upgrade steps.
Details on upgrade procedure are put in dox/dev_guides/upgrade/upgrade.md.

OCCT code corrected to improve compatibility with code based on previous versions of OCCT:
- Added conversion operator of handle to bool, for use in conditional expressions.
- Forward declaration of argument class restored in macro DEFINE_STANDARD_HANDLE.
- Includes of used classes added in some headers to avoid problem of missing includes in dependent code
- Type cast operators to base curve and surface added in GC and GCE2d classes to reduce porting issues.

Added test for local reference to handle initialized by temporary handle to derived class.

WOK and CDL User Guides removed.
2015-08-19 19:03:16 +03:00
abv 52f7e0d0a8 0024002: Overall code and build procedure refactoring -- Mac OSX
Draw_Window_1.mm, Cocoa_Window.mm - fix compilation issues on OS X
CMake env.build.sh - fix libraries path

MSVC project templates - /bigobj flag added for all configurations (x64, x86, release and debug)

Standard_Type.hxx - enforce initialization of all type descriptors at library load
2015-07-17 11:44:53 +03:00
ibs 19286d7cf7 0025114: CMake-based build tools for OCCT 7.0
All CMake meta-projects for OCCT are put to OCCT code (including fragments previously generated by WOK).

"/bigobj" compiler flag added to TKQADraw because of the size of its object file

[GeomToStep & Graphic3d] private headers are included from current dir of including source file
2015-07-12 13:57:22 +03:00
abv 5b111128de 0024023: Revamp the OCCT Handle - gcc and clang
Adaptations for compiling with GCC 4.7 and 4.8:
- Construction semantics is used for Handle objects being initialized by const Handle objects of derived type, to avoid overload resolution error in GCC 4.7.
- Missing includes added.
- Fixed bugs related to misuse of direct casts of handle.
- Eliminate CLang warnings on uninitialized and unused variables, functions, and expressions
2015-07-12 13:57:20 +03:00
abv e8862cf41a 0024870: Provide OCCT RTTI test cases
Test commands for checking performance and functionality of OCCT handles and RTTI added.
New test case added for that: test perf fclasses handle.

Implementation of opencascade::handle improved to enable compile-time error if two handles of incompatible types are compared.
Comparison of handle to NULL is not possible any more; method IsNull() should be used instead.

Method LDOM_MemManager::Doc() is removed to avoid cyclic dependency of headers; constructor of LDOM_Document(LDOM_MemManager&) is used directly instead.

Inclusion of headers corrected for compilation after previous patch.
2015-07-12 12:30:27 +03:00
abv c60ae7f6b1 0024002: Overall code and build procedure refactoring -- manual
Documentation comments (mostly to package items, in package CDL) lost by CDL extraction are transferred to headers manually.
Some wrong comments (artifacts of CDL-generated code) are removed.
Missing header files added.
Yacc and Lex files removed from StepFile/FILES to avoid problems when building by WOK

Conflicts:
	src/BRepOffsetAPI/BRepOffsetAPI_Sewing.hxx
	src/Quantity/Quantity_AbsorbedDose.hxx
	src/Quantity/Quantity_Acceleration.hxx
	src/Quantity/Quantity_AcousticIntensity.hxx
	src/Quantity/Quantity_Activity.hxx
	src/Quantity/Quantity_Admittance.hxx
	src/Quantity/Quantity_AmountOfSubstance.hxx
	src/Quantity/Quantity_AngularVelocity.hxx
	src/Quantity/Quantity_Area.hxx
	src/Quantity/Quantity_Capacitance.hxx
	src/Quantity/Quantity_CoefficientOfExpansion.hxx
	src/Quantity/Quantity_Concentration.hxx
	src/Quantity/Quantity_Conductivity.hxx
	src/Quantity/Quantity_Consumption.hxx
	src/Quantity/Quantity_Density.hxx
	src/Quantity/Quantity_DoseEquivalent.hxx
	src/Quantity/Quantity_ElectricCapacitance.hxx
	src/Quantity/Quantity_ElectricCharge.hxx
	src/Quantity/Quantity_ElectricCurrent.hxx
	src/Quantity/Quantity_ElectricFieldStrength.hxx
	src/Quantity/Quantity_ElectricPotential.hxx
	src/Quantity/Quantity_Energy.hxx
	src/Quantity/Quantity_Enthalpy.hxx
	src/Quantity/Quantity_Entropy.hxx
	src/Quantity/Quantity_Force.hxx
	src/Quantity/Quantity_Frequency.hxx
	src/Quantity/Quantity_Illuminance.hxx
	src/Quantity/Quantity_Impedance.hxx
	src/Quantity/Quantity_Inductance.hxx
	src/Quantity/Quantity_KinematicViscosity.hxx
	src/Quantity/Quantity_KineticMoment.hxx
	src/Quantity/Quantity_Length.hxx
	src/Quantity/Quantity_Luminance.hxx
	src/Quantity/Quantity_LuminousEfficacity.hxx
	src/Quantity/Quantity_LuminousExposition.hxx
	src/Quantity/Quantity_LuminousFlux.hxx
	src/Quantity/Quantity_LuminousIntensity.hxx
	src/Quantity/Quantity_MagneticFieldStrength.hxx
	src/Quantity/Quantity_MagneticFlux.hxx
	src/Quantity/Quantity_MagneticFluxDensity.hxx
	src/Quantity/Quantity_Mass.hxx
	src/Quantity/Quantity_MassFlow.hxx
	src/Quantity/Quantity_MolarConcentration.hxx
	src/Quantity/Quantity_MolarMass.hxx
	src/Quantity/Quantity_MolarVolume.hxx
	src/Quantity/Quantity_Molarity.hxx
	src/Quantity/Quantity_MomentOfAForce.hxx
	src/Quantity/Quantity_MomentOfInertia.hxx
	src/Quantity/Quantity_Momentum.hxx
	src/Quantity/Quantity_PlaneAngle.hxx
	src/Quantity/Quantity_Power.hxx
	src/Quantity/Quantity_Pressure.hxx
	src/Quantity/Quantity_Reluctance.hxx
	src/Quantity/Quantity_Resistance.hxx
	src/Quantity/Quantity_Resistivity.hxx
	src/Quantity/Quantity_SolidAngle.hxx
	src/Quantity/Quantity_SoundIntensity.hxx
	src/Quantity/Quantity_SpecificHeatCapacity.hxx
	src/Quantity/Quantity_Speed.hxx
	src/Quantity/Quantity_SurfaceTension.hxx
	src/Quantity/Quantity_Temperature.hxx
	src/Quantity/Quantity_ThermalConductivity.hxx
	src/Quantity/Quantity_Torque.hxx
	src/Quantity/Quantity_Velocity.hxx
	src/Quantity/Quantity_Viscosity.hxx
	src/Quantity/Quantity_Volume.hxx
	src/Quantity/Quantity_VolumeFlow.hxx
	src/Quantity/Quantity_Weight.hxx
	src/Quantity/Quantity_Work.hxx
	src/V3d/V3d_Coordinate.hxx
2015-07-12 12:30:00 +03:00
abv 42cf5bc1ca 0024002: Overall code and build procedure refactoring -- automatic
Automatic upgrade of OCCT code by command "occt_upgrade . -nocdl":
- WOK-generated header files from inc and sources from drv are moved to src
- CDL files removed
- All packages are converted to nocdlpack
2015-07-12 07:42:38 +03:00
abv 35c0599a42 0024023: Revamp the OCCT Handle -- automatic
Automatic upgrade by command "occt_upgrade . -handle"
2015-07-11 12:08:01 +03:00
abv e7195ab476 0024023: Revamp the OCCT Handle -- handle
Macro defining Handle class is replaced by template class implementing the same concept (defined in Standard_Handle.hxx and Standard_Transient.hxx), opencascade::handle<>.

Header file Standard_DefineHandle.hxx becomes deprecated: the only useful macro DEFINE_STANDARD_RTTI is defined now in Standard_Type.hxx. Standard_DefineHandle.hxx is kept for compatibility, it defines macros previously used for definition of Handles and RTTI as empty. Macro DEFINE_STANDARD_HANDLE(C1,C2) is also kept for compatibility; now it expands to typedef "Handle_C1" to corresponding handle class.

Definitions of macro Handle() and STANDARD_TYPE() moved from Standard_Macro.hxx to Standard_Handle.hxx (new file) and Standard_Type.hxx, respectively.

New template class NCollection_Shared added, allowing to define sub-class manipulated by handle, for any non-transient class.

Adaptations for compiling with GCC 4.7
2015-07-11 12:07:04 +03:00
abv 69ff08ff28 0024947: Redesign OCCT legacy type system
Global static functions instantiating RTTI descriptors for class types (used though STANDARD_TYPE macro) are replaced by template static method Instance() of the class Standard_Type.
Implementation of RTTI is revised accordingly (global registry of type descriptors added to ensure single instance of each type descriptor shared by all dynamic libraries).
Obsolete methods of Standard_Type class (IsInstance(), Ancestors()) are removed; new method Parent() is added returning type descriptor of the parent class.
Class Standard_AncestorIterator is removed; this iteration can be easily done by recursive calls to Standard_Type::Parent().

Definition of macro STANDARD_TYPE() moved from Standard_Macro.hxx to Standard_DefineHandle.hxx.
Inclusion of Standard_Type.hxx and the class header is now necessary for use of method DownCast() and function STANDARD_TYPE() for the class.
In general, Standard_Type.hxx should be included now instead of Standard_DefineHandle.hxx in places where these macros are used.

Macro DEFINE_STANDARD_EXCEPTION changed to define all methods inline; macro IMPLEMENT_STANDARD_EXCEPTION becomes obsolete.
Macros IMPLEMENT_DOWNCAST, IMPLEMENT_STANDARD_* become deprecated, they are still defined (as empty) for compatibility.

Implementation of Handle classes became fully inline.
Method get() is added in Handle classes returning pointer to the contained object.

RTTI removed from NCollection_Handle class.

Standard_Persistent is made empty descendant of Standard_Transient, instead of implementing its own hierarchy with reference counting.

Unused enumerations Standard_InternalType, Standard_WayOfLife, Standard_KindOfType are removed.
Global function HashCode() accepting Handle(Standard_Transient) is removed; HashCode() for Standard_CString with length should be used instead.

DRAW command dtryload is added for testing dynamic load / unload of the specified library.
New test perf fclasses bug24947 uses this command to measure performance of multiple (1000 times) loading / unloading OCCT libs on example of TKSTEP.
2015-07-11 11:05:31 +03:00
dln 087da3bdd9 0024927: Getting rid of "Persistent" functionality -- Storable
Delete "Storable" class from "Standard" package and all use of it
2015-05-21 14:56:11 +03:00
bugmaster 32dd120d25 Incrementation of OCCT version up to 7.0.0dev 2015-05-14 14:56:36 +03:00
bugmaster b767425413 Incrementation of OCCT version up to 6.9.0 2015-05-08 08:56:49 +03:00
bugmaster 41ed1ed236 Incrementation of OCCT version up to 6.9.0 2015-04-07 15:38:32 +03:00
kgv d44e14e3f6 0025963: Define HashCode() for an unsigned int within armv7 target
OSD_EnvironmentIterator - do not use _NSGetEnviron() on iOS.
2015-03-26 15:31:24 +03:00
apn d2094e110f 0025765: Coding rules - clean up code from obsolete macro checks
Unused code paths (including definition of these macros and meaningless comments) were eliminated.
2015-03-05 13:02:27 +03:00
aml 31b1749c42 0025246: Make methods Intervals and NbIntervals const in Adaptor3d_Curve and it descendants
Qualifier "const" added to NbIntervals and Intervals functions.

Fixed Standard_OVERRIDE macro description
Removed obsolete method declaration from Standard_Transient.cdl
2015-02-26 12:44:52 +03:00
azn 6a38ff486c 0025616: Avoid Classes using "new" to allocate Instances but not defining a copy Constructor
The empty copy constructor, assignemnts operator, default constructors added to the following classes:
The following classes use “new” function without Handles:
- Select3D_PointData
- BSB_T3Bits
- IntPatch_InfoPD
- LDOM_StringElem
- BinomAllocator
- ProjLib_OnSurface
- Standard_MMgrFactory

Useless declaration of default constructor have been deleted.
2015-01-15 14:42:36 +03:00
bugmaster 0059facbbf Incrementation of OCCT version up to 6.8.1 dev 2014-11-21 16:16:50 +03:00
bugmaster 32d5cd7b98 Incrementation of OCCT version up to 6.8.0 2014-11-07 17:56:30 +03:00
abv 0797d9d30a 0025418: Debug output to be limited to OCC development environment
Macros ending on "DEB" are replaced by OCCT_DEBUG across OCCT code; new macros described in documentation.
Macros starting with DEB are changed to start with "OCCT_DEBUG_".
Some code cleaned.
2014-11-05 16:55:24 +03:00
msv 75827e7628 0025396: Crash occurs when using TBB allocator on an Intel architecture not supporting SSE2 instructions
During initialization of memory manager, check if SSE2 instructions are supported, when MMGT_OPT=2 is in effect. If not then use MMgrRaw instead of MMgrTBBalloc. It is to avoid runtime crash when running on a CPU that supports SSE but does not support SSE2 (some modifications of AMD Sempron).

Fix broken compilation on MSVC for x64 platform

Correct the last fix.
2014-10-23 16:20:50 +04:00
abv 3415763e74 0025401: Some warnings could be eliminated
Do not redefine macro "strcasecmp" on Windows (MSVC) if it is already defined.
Some useless declarations and comments removed.
2014-10-23 16:20:46 +04:00
nbv 9e20ed5793 0023547: Tests failures in debug mode
1. DRAW-commands for curve/surface continuity returning were changed.
2. Output of "distmini" DRAW-command is amended.
3. Function MinMax() was moved from Standard_Real to IntPatch_ImpImpIntersection_4.gxx.
4. Incorrect computing of nbcurveC1 in Geom2dConvert::C0BSplineToC1BSplineCurve(...) function was liquidated.

Test cases were changed.
2014-10-16 16:45:13 +04:00
dbv 63c629aa3a 0025266: Debug statements in the source are getting flushed on to the console
Output to cout activated previously in Debug mode by #ifdef DEB is suppressed by using macro <PACKAGE>_DEB instead of DEB
2014-10-16 16:44:56 +04:00
bugmaster 09711f3720 Incrementation of OCCT version up to 6.8.0beta
Correction of license statements
2014-10-10 12:54:43 +04:00
abv 868dbdbae4 0025005: Global function HashCodes() is not exported on Windows
HashCodes() is exported
2014-09-26 17:29:02 +04:00
abv a9b30f0acb 0025077: [OOP] Explicit initialization of copy constructor
Explicit calls of copy constructor of base class added where compiler warnings are reported

Minor correction
2014-09-25 15:58:14 +04:00
kgv 9bf6baed3c 0025215: Porting to Android - fix minor issues
STEPConstruct_AP203Context = pw_gecos member of passwd struct disabled in android case.
Standard_Atomic - correct usage of __atomic_inc()/__atomic_dec().
Standard_CLocaleSentry - Android doesn't support locales in the C library.
Standard_MMgrOpt - use "/dev/zero" and "/dev/null" for allocation of memory blocks on Android.
OSD_Chronometer - fix compilation on Android.
OSD_Disk, OSD_signal - fix headers inclusion on Android.
2014-09-18 15:45:43 +04:00
apn 03155c18a5 0020716: Eliminate usage of "config.h" header file
All inclusions of "config.h" were removed.

All places where macros defined by config.h were checked and removed

Small corrections for mac os.

Unused code in file OSD_Disk.cxx was removed.

Unused macros and includes were removed from samples and code.

Added necessary includes for MacOS.

Correct new additional compilation warning on Linux platform.

Fix for error in OSD_Chronometer on Debian70/Fedora18
2014-09-05 10:41:05 +04:00
dbv 71b73fde24 0025181: Incrementation of OCCT version up to 6.8.0.dev 2014-09-05 09:55:51 +04:00