1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

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
This commit is contained in:
abv
2015-07-01 11:00:57 +03:00
parent e35db4162b
commit e7195ab476
23 changed files with 524 additions and 754 deletions

View File

@@ -25,8 +25,6 @@ proc Standard_Copy:HandleInputFile { ID } {
scan $ID "%\[^:\]:%\[^:\]:%\[^:\]" unit type name
switch $name {
Handle_Standard_Transient.hxx {return 1;}
Handle_Standard_Persistent.hxx {return 1;}
Standard_Transient.hxx {return 1;}
Standard_Persistent.hxx {return 1;}
default {
@@ -42,20 +40,10 @@ proc Standard_Copy:Execute { unit args } {
foreach file $args {
scan $file "%\[^:\]:%\[^:\]:%\[^:\]" Unit type name
set source [woklocate -p Standard:source:$name [wokinfo -N $unit]]
if { $name == "Standard_Persistent.hxx" || $name == "Standard_Persistent_objy.ddl"} {
set source [woklocate -p Standard:source:Standard_Persistent_proto.hxx [wokinfo -N $unit]]
} else {
set source [woklocate -p Standard:source:$name [wokinfo -N $unit]]
}
if { $name == "lctlprt.dll" || $name == "lctlprt.lib" || $name == "lmgr32.dll" || $name == "rtk.lib" || $name == "rtk.dll" } {
set vistarget [woklocate -p Standard:library:$name [wokinfo -N $unit]]
set target [wokinfo -p library:$name $unit]
} else {
set vistarget [woklocate -p Standard:pubinclude:$name [wokinfo -N $unit]]
set target [wokinfo -p pubinclude:$name $unit]
}
set vistarget [woklocate -p Standard:pubinclude:$name [wokinfo -N $unit]]
set target [wokinfo -p pubinclude:$name $unit]
if { [catch {eval exec "cmp $source $vistarget"} ] } {
msgprint -i -c "Standard_Copy::Execute" "Copy $source to $target"