View Issue Details

IDProjectCategoryView StatusLast Update
0000770Ecere SDKcompiler:templatespublic2016-04-19 05:29
Reporterredj Assigned To 
PriorityimmediateSeveritymajorReproducibilityhave not tried
Status newResolutionopen 
Target Version0.46 eC II 
Summary0000770: support for all data types in templates
Descriptionvoid * not supported: Map<void*, int> will not work -- Support Array<void *>
Other combinations do not work well:
 - C (non eC) structs/types
 - [add here]

Map<ProjectNode, int> considerations:

- The data type OnCopy/OnFree() handle the assignment of the key
- With normal classes/class:struct classes, this means that they key is going to be deleted on Removing the object
- For normal classes which do feature a reference count, it could potentially increment the reference count, but it currently does not seem to be doing so
- With class:struct classes, the only way to support both freeing or not freeing the data would be some kind of option, either at the Map or Container level, e.g. a Map template parameter [ determine if we want a new issue to implement this ]
- For a pointer comparison to occur (as opposed to the default content comparison or OnCompare to be invoked), class_no_expansion should be applied to the key's class
TagsNo tags attached.

Activities

redj

2013-02-25 03:00

administrator   ~0000667

Last edited: 2013-02-25 03:02

also Array<FieldBox> fieldBoxes { }; fieldBoxes.Find(fieldBox);
this will crash there:
https://github.com/ecere/sdk/commit/6683e352153e50fe3acb1950e64302604cd458ff
   (ecere)src/com/dataTypes.ec:364:31 > // TESTING THIS!

                              // TESTING THIS!
                              memberResult = ((int (*)(void *, void *, void *))(void *)memberType._vTbl[__ecereVMethodID_class_OnCompare])(memberType,
                                 *(void **)((byte *)data1 + (((member._class.type == normalClass) ? member._class.offset : 0) + member.offset)),
                                 *(void **)((byte *)data2 + (((member._class.type == normalClass) ? member._class.offset : 0) + member.offset)));



  0 inside ??, /lib/i386-linux-gnu/libc.so.6
  1 __ecereNameSpace__ecere__com__String_OnCompare Function, /e/sdk/ecere/src/com/dataTypes.ec:1826
  2 __ecereNameSpace__ecere__com__OnCompare Function, /e/sdk/ecere/src/com/dataTypes.ec:365
  3 __ecereNameSpace__ecere__com__Container_Find Method, /e/sdk/ecere/src/com/containers/Container.ec:184
  4 __ecereNameSpace__eda__TableEditor_AddFieldBox Method, /e/sdk/eda/libeda/src/gui/TableEditor.ec:1391
...

Issue History

Date Modified Username Field Change
2012-10-29 20:19 redj New Issue
2012-10-29 20:19 redj Status new => assigned
2012-10-29 20:19 redj Assigned To => jerome
2012-10-29 22:17 jerome Description Updated
2012-10-29 22:18 jerome Description Updated
2012-10-29 22:19 jerome Description Updated
2013-02-25 03:00 redj Note Added: 0000667
2013-02-25 03:02 redj Note Edited: 0000667
2013-02-25 03:02 redj Note Edited: 0000667
2013-04-24 13:38 redj Description Updated
2013-04-24 20:22 jerome Assigned To jerome =>
2013-04-27 06:08 redj Status assigned => new
2016-04-19 05:29 jerome Target Version 0.44.12 Fixes => 0.46 eC II