Question about sharing data structure in octave
John W. Eaton
jwe at bevo.che.wisc.edu
Sat Jun 28 03:54:40 CDT 2008
On 27-Jun-2008, Michael Goffioul wrote:
| I would like to request some comments about the best way to
| implement shared data structure in octave. What I'm thinking
| about is to have a C++ object that I want to make accessible
| from the interpreter, through some octave_base_value inherited
| class. At the interpreter level, I want this data structure to act
| as a reference/pointer, not as a value: assigning to another
| variable would share the same data structure without copying
| it. This means in fine to use some reference counting. Now the
| question is where to implement this mechanism:
|
| 1) octave_value uses sharing mechanism with its internal
| octave_base_value representation; so I could inherit from
| octave_base_value and implement my C++ data structure
| in it, using implicitly the octave_value reference counting.
| However, what I don't know is the situation where octave_value
| decides to clone/copy itself: it must do so, because by
| default octave deals with values and not references
|
| 2) define 2 classes: one pure C++ to hold my data structure
| and is reference-counted, and one class inheriting from
| octave_base_value that contains the pure C++ object and
| handle the reference counting. This decouples completely
| the sharing mechanism with the one from octave_value,
| but increases the complexity and number of classes/objects
I'm not sure I understand precisely what it is you want to do, but
since the reference counting is managed in the octave_value class, why
not add a field that says what the copying policy should be, then use
that in the functions that manipulate the reference count? Would that
work for what you want to do?
jwe
More information about the Octave-maintainers
mailing list