View Issue Details

IDProjectCategoryView StatusLast Update
0026549Open CASCADEOCCT:Foundation Classespublic2016-04-20 15:51
ReporterabvAssigned Toabv 
PrioritynormalSeverityintegration request 
Status closedResolutionfixed 
Target Version7.0.0Fixed in Version7.0.0 
Summary0026549: Provide move constructors and operators for basic classes
DescriptionC++11 introduces notion of rvalue references which can be used to avoid unnecessary copying of temporary objects, see http://www.artima.com/cppsource/rvalue.html

Rvalue references are supported by VC++ 10 and above, and by GCC 4.3 and above, thus they can be used in modern OCCT (since 0024023).

The first candidates for this improvement are Handles and collections.
TagsNo tags attached.
Test case number

Relationships

related to 0024023 closedabv Open CASCADE Revamp the OCCT Handle 
related to 0027111 closedabv Community Add generalized copy constructor in handle class for old compilers 

Activities

git

2015-08-12 07:22

administrator   ~0044006

Branch CR26549 has been created by abv.

SHA-1: f04f725c49f684a3b7abd65d21b280b7b7c6e883


Detailed log of new commits:

Author: abv
Date: Tue Aug 11 23:01:05 2015 +0300

    0026549: Provide move constructors and operators for basic classes
    
    Move constructor and operator added for opencascade::handle<>

abv

2015-08-12 07:28

manager   ~0044007

First version is pushed to CR26549. It provides move semantics for Handles. Though it does not give noticeable change in performance in tests, it reduces number of calls to Standard_Transient::IncrementRefCounter() methods of Handle, and thus is potentially useful (especially in multithreaded programs, as each call sets a lock).

The measured numbers of calls are:

| Operation | master | CR26549 |
|----------------------------------|
| DRAW start | 4075 | 4075 |
| pload ALL | 137767 | 128967 |
| bottle.tcl | 30749697 | 30440160 |

abv

2016-01-22 19:32

manager   ~0050080

Last edited: 2016-01-23 14:12

Other classes for which move semantics would be useful are vector and matrix classes from math package.

kgv

2016-02-16 11:39

developer   ~0050798

Related modification within CR27111_6 has been reviewed without remarks.
Should be tested in scope of 0027111.

bugmaster

2016-02-19 10:38

administrator   ~0050990

Tested in framework of branch CR27111_6

git

2016-04-17 15:07

administrator   ~0053254

Branch CR26549 has been deleted by kgv.

SHA-1: f04f725c49f684a3b7abd65d21b280b7b7c6e883

Related Changesets

occt: master 5d351a08

2015-08-11 20:01:05

abv


Committer: abv Details Diff
0026549: Provide move constructors and operators for basic classes

Move constructor and operator added for opencascade::handle<>
Affected Issues
0026549
mod - src/Standard/Standard_Handle.hxx Diff File

Issue History

Date Modified Username Field Change
2015-08-11 22:59 abv New Issue
2015-08-11 22:59 abv Assigned To => abv
2015-08-11 22:59 abv Relationship added related to 0024023
2015-08-12 07:22 git Note Added: 0044006
2015-08-12 07:28 abv Note Added: 0044007
2016-01-22 19:32 abv Note Added: 0050080
2016-01-23 14:12 abv Note Edited: 0050080
2016-02-16 11:39 kgv Note Added: 0050798
2016-02-16 11:39 kgv Assigned To abv => bugmaster
2016-02-16 11:39 kgv Status new => resolved
2016-02-16 11:39 kgv Status resolved => reviewed
2016-02-16 11:41 kgv Relationship added related to 0027111
2016-02-19 10:34 bugmaster Status reviewed => tested
2016-02-19 10:38 bugmaster Note Added: 0050990
2016-02-21 08:52 abv Changeset attached => occt master 5d351a08
2016-02-21 08:52 abv Assigned To bugmaster => abv
2016-02-21 08:52 abv Status tested => verified
2016-02-21 08:52 abv Resolution open => fixed
2016-04-17 15:07 git Note Added: 0053254
2016-04-20 15:42 aiv Fixed in Version => 7.0.0
2016-04-20 15:51 aiv Status verified => closed