Re: Range-based for and STL-style iterators for nsClassHashtable, nsDataHashtable, nsInterfaceHashtable

2019-10-16 Thread mike . toom
Op woensdag 2 oktober 2019 12:15:36 UTC+2 schreef Simon Giesecke:
> Hi,
> 
> I recently [1] added STL-style iterators and begin/cbegin/end/cend
> member functions to nsBaseHashtable. This means that it is now
> possible to use range-based for and STL algorithms operating on
> iterators with all of its subclasses, which include nsClassHashtable,
> nsDataHashtable, nsInterfaceHashtable, nsJSThingHashtable and
> nsRefPtrHashtable.
> 
> I also added an overview on existing support for range-based for and
> STL-style iterators in Mozilla data structures on MDN  at [2].
> 
> If you have any questions or issues, please let me know or NI me on Bugzilla.
> 
> Best wishes
> Simon
> 
> [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1575479
> [2] 
> https://developer.mozilla.org/en-US/docs/Mozilla/Using_CXX_in_Mozilla_code#Mozilla_data_structures_and_standard_C_ranges_and_iterators

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Range-based for and STL-style iterators for nsClassHashtable, nsDataHashtable, nsInterfaceHashtable

2019-10-02 Thread smaug

And as with other data structures, be careful with modifications when using 
range-based for.
We had plenty of crash issue with nsTArray + range-based for when we started to 
use it.


-Olli

On 10/2/19 1:15 PM, Simon Giesecke wrote:

Hi,

I recently [1] added STL-style iterators and begin/cbegin/end/cend
member functions to nsBaseHashtable. This means that it is now
possible to use range-based for and STL algorithms operating on
iterators with all of its subclasses, which include nsClassHashtable,
nsDataHashtable, nsInterfaceHashtable, nsJSThingHashtable and
nsRefPtrHashtable.

I also added an overview on existing support for range-based for and
STL-style iterators in Mozilla data structures on MDN  at [2].

If you have any questions or issues, please let me know or NI me on Bugzilla.

Best wishes
Simon

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1575479
[2] 
https://developer.mozilla.org/en-US/docs/Mozilla/Using_CXX_in_Mozilla_code#Mozilla_data_structures_and_standard_C_ranges_and_iterators



___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Range-based for and STL-style iterators for nsClassHashtable, nsDataHashtable, nsInterfaceHashtable

2019-10-02 Thread Simon Giesecke
Hi Emilio,

right, removing entries isn't possible within a range-based for, and
it's neither with STL associative containers such as std::map AFAIK.
It would probably be possible to add a method to nsBaseHashtable with
signature:

const_iterator Remove(const_iterator);

to support the idiom used with STL associative containers [1]. If you
find that useful, please open a bug. I will try to give it a look
then.

Best wishes
Simon

[1] https://stackoverflow.com/a/8234813/2019765

On Wed, Oct 2, 2019 at 3:52 PM Emilio Cobos Álvarez  wrote:
>
> When trying to port some of the usage in layout/style to this, I
> realized that there's no way to remove entries while iterating, so you
> can't port [1] to this for example.
>
> Is there something I've missed? Should I file a bug about it?
>
> Or should we just keep using old style iterators for that?
>
> Cheers,
>
>   -- Emilio
>
> [1]:
> https://searchfox.org/mozilla-central/rev/f372e8a46ef7659ef61be9938ec2a3ea34d343c6/layout/style/Loader.cpp#673
>
> On 10/2/19 3:02 PM, Emilio Cobos Álvarez wrote:
> > This is great, thanks for doing this!
> >
> >   -- Emilio
> >
> > On 10/2/19 12:15 PM, Simon Giesecke wrote:
> >> Hi,
> >>
> >> I recently [1] added STL-style iterators and begin/cbegin/end/cend
> >> member functions to nsBaseHashtable. This means that it is now
> >> possible to use range-based for and STL algorithms operating on
> >> iterators with all of its subclasses, which include nsClassHashtable,
> >> nsDataHashtable, nsInterfaceHashtable, nsJSThingHashtable and
> >> nsRefPtrHashtable.
> >>
> >> I also added an overview on existing support for range-based for and
> >> STL-style iterators in Mozilla data structures on MDN  at [2].
> >>
> >> If you have any questions or issues, please let me know or NI me on
> >> Bugzilla.
> >>
> >> Best wishes
> >> Simon
> >>
> >> [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1575479
> >> [2]
> >> https://developer.mozilla.org/en-US/docs/Mozilla/Using_CXX_in_Mozilla_code#Mozilla_data_structures_and_standard_C_ranges_and_iterators
> >>
> >> ___
> >> dev-platform mailing list
> >> dev-platform@lists.mozilla.org
> >> https://lists.mozilla.org/listinfo/dev-platform
> >>
> > ___
> > dev-platform mailing list
> > dev-platform@lists.mozilla.org
> > https://lists.mozilla.org/listinfo/dev-platform
> ___
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Range-based for and STL-style iterators for nsClassHashtable, nsDataHashtable, nsInterfaceHashtable

2019-10-02 Thread Emilio Cobos Álvarez
When trying to port some of the usage in layout/style to this, I 
realized that there's no way to remove entries while iterating, so you 
can't port [1] to this for example.


Is there something I've missed? Should I file a bug about it?

Or should we just keep using old style iterators for that?

Cheers,

 -- Emilio

[1]: 
https://searchfox.org/mozilla-central/rev/f372e8a46ef7659ef61be9938ec2a3ea34d343c6/layout/style/Loader.cpp#673


On 10/2/19 3:02 PM, Emilio Cobos Álvarez wrote:

This is great, thanks for doing this!

  -- Emilio

On 10/2/19 12:15 PM, Simon Giesecke wrote:

Hi,

I recently [1] added STL-style iterators and begin/cbegin/end/cend
member functions to nsBaseHashtable. This means that it is now
possible to use range-based for and STL algorithms operating on
iterators with all of its subclasses, which include nsClassHashtable,
nsDataHashtable, nsInterfaceHashtable, nsJSThingHashtable and
nsRefPtrHashtable.

I also added an overview on existing support for range-based for and
STL-style iterators in Mozilla data structures on MDN  at [2].

If you have any questions or issues, please let me know or NI me on 
Bugzilla.


Best wishes
Simon

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1575479
[2] 
https://developer.mozilla.org/en-US/docs/Mozilla/Using_CXX_in_Mozilla_code#Mozilla_data_structures_and_standard_C_ranges_and_iterators 


___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Range-based for and STL-style iterators for nsClassHashtable, nsDataHashtable, nsInterfaceHashtable

2019-10-02 Thread Emilio Cobos Álvarez

This is great, thanks for doing this!

 -- Emilio

On 10/2/19 12:15 PM, Simon Giesecke wrote:

Hi,

I recently [1] added STL-style iterators and begin/cbegin/end/cend
member functions to nsBaseHashtable. This means that it is now
possible to use range-based for and STL algorithms operating on
iterators with all of its subclasses, which include nsClassHashtable,
nsDataHashtable, nsInterfaceHashtable, nsJSThingHashtable and
nsRefPtrHashtable.

I also added an overview on existing support for range-based for and
STL-style iterators in Mozilla data structures on MDN  at [2].

If you have any questions or issues, please let me know or NI me on Bugzilla.

Best wishes
Simon

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1575479
[2] 
https://developer.mozilla.org/en-US/docs/Mozilla/Using_CXX_in_Mozilla_code#Mozilla_data_structures_and_standard_C_ranges_and_iterators
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform