On 07/05/2012 04:22 AM, Noel Power wrote:
On 05/07/12 02:47, Andrew Douglas Pitonyak wrote:
On 07/04/2012 03:23 PM, Noel Power wrote:
with
http://cgit.freedesktop.org/libreoffice/core/commit/?id=1720641bf36306fc296635925e571556ced8a302
a long standing wrinkle with modifying nested structs in basic
should be eliminated
[ blah blah blah ]
The behavior change scares me a bit. I seem to remember some time
back that there was a reason for this behavior, but I was given that
information many years back..... I discussed it in Berlin
I'd be interested if you can recall
Do you intend to change UNO so that structures return as a reference
(very dangerous, don't do it), or only when used in basic as
object.structure.property? This may be workable / safe, but may break
some existing code (although I can't think of any code that it would
break).
there is no change to uno only how basic handles an already acquired
uno structure ( either one defined locally or fetched from some other
uno operation )
I feel silly asking this, since if you know how to change the
behavior, then you likely know more about this than I (I don't know
how to change the behavior).
being bitten ( often ) by changing basic I understand the fear :-)
But, I can't see that this change would be 'dangerous' it surely is
the correct and desired behaviour ( but maybe indeed I am missing
something and perhaps influenced by a long irritation with the way it
worked before ). Of course the caveat is there is always a risk of
some unexpected side-effect with any change ( especially true in basic )
Noel
The best that I can remember is that it is common to do things such as
initialize one structure from another. For example, set the value of the
top border to the value of the bottom border and then make some changes.
What if structures now copy by reference.... Consider this code:
Case 0:
tempBorder = table.topBorder
tempBorder.someValue = something
table.bottomBorder = tempBorder
At this point, the top and bottom border will be the same because they
reference the same object.
This is why I asked if the intention is to change the copy semantics, or
to simply change it so that in basic when you use
Case 1:
table.topBorder.someValue = something
THe example immediately above, is not likely to cause a problem, in
fact, it will probably eliminate bugs.
I expect that as long as copy by value semantics is retained apart from
use in a "dot" notation in basic, then something like this will still
work without introducing bugs
Case 2:
tempBorder = table.topBorder
If the code above causes tempBorder to reference the topBorder object in
the table, then there will likely be numerous bugs.
So, with your changes, how will it affect Case 0, Case 1, and Case 2?
I consider Case 0 and Case 2 the same. I believe that you are saying
that your change only affects Case 1, which will then work as expected
without changing case 0 / case 2.
I was probably exchanging email with Mathias Bauer, but was unable to
find the exchange. I did spend time looking for it.
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info: http://www.pitonyak.org/oo.php
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.