Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » U++ Developers corner » Proposed change to U++ to allow owning children.
revised ownership change [message #32161 is a reply to message #32160] Thu, 28 April 2011 18:28 Go to previous messageGo to previous message
kohait00 is currently offline  kohait00
Messages: 939
Registered: July 2009
Location: Germany
Experienced Contributor
hi Lance

i've gone though the code and based on your work redid it.
current state is attached.

the scenarios are basicly theese:

1) normal scenario (current upp)
Ctrls are added to arbitrary context to be displayed, ownership context is maintained somewhere else. -> 2 different contexts, perfect control over whats happening. for complex environment.

2) ownership scenario (additional)
heap created controls can be added to other controls that will maintain their lifetime together with their visual context. means, when an owned Ctrl is removed from its owning parent, the parent is taking care of destruction. so both contexts, visual and ownership are bound. fits well for dynamic environment with reduced Ctrl API usage (GetData/SetData, WhenAction, etc)

features

* traditional upp way still default
* ownership adding (AddOwned, Detach) is only interface for dealing with ownership (similar to containers)
* auto transfer of ownership supported when an owned Ctrl is added to another parent.
* least intrusive code
* drawback: owned controls may not call Remove(), since their parent will try to delete them. ASSERT placed. arguable.. use Detach for that.. or specify implicit Detach with Remove?

changes to your version:

* removed template creators, not needed for ownership management.
* code cleanup and simplification
* redefined public interface for ownership (mainly: no public Owned(bool b true) method, veeery dangerous)
* some ASSERTS placed to ensure proper behaviour and early fault catch
* delete only in one place.. avoids some conrercases when context switching.

take a look..
maybe mirek will be really considering it. at least look at it Smile
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Get MAC addresses for windows and linux
Next Topic: Testing framework in U++.
Goto Forum:
  


Current Time: Tue May 14 06:48:21 CEST 2024

Total time taken to generate the page: 0.02967 seconds