MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0026549Open CASCADE[OCCT] OCCT:Foundation Classespublic2015-08-11 22:592016-04-20 15:51
Reporterabv 
Assigned Toabv 
PrioritynormalSeverityintegration request 
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target Version[OCCT] 7.0.0Fixed in Version[OCCT] 7.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
Attached Files

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

-  Notes
(0044006)
git (administrator)
2015-08-12 07:22

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<>
(0044007)
abv (manager)
2015-08-12 07:28

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 |
(0050080)
abv (manager)
2016-01-22 19:32
edited on: 2016-01-23 14:12

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

(0050798)
kgv (developer)
2016-02-16 11:39

Related modification within CR27111_6 has been reviewed without remarks.
Should be tested in scope of 0027111.
(0050990)
bugmaster (administrator)
2016-02-19 10:38

Tested in framework of branch CR27111_6
(0053254)
git (administrator)
2016-04-17 15:07

Branch CR26549 has been deleted by kgv.

SHA-1: f04f725c49f684a3b7abd65d21b280b7b7c6e883

- Related Changesets
occt: master 5d351a08
Timestamp: 2015-08-11 20:01:05
Author: abv
Committer: abv
Details ] Diff ]
0026549: Provide move constructors and operators for basic classes

Move constructor and operator added for opencascade::handle<>
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 View Revisions
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


Copyright © 2000 - 2019 MantisBT Team
Powered by Mantis Bugtracker