8

I am using SWIG to wrap a function that returns an std::map in PHP.

In the PHP code, I need to iterate over the elements of the map.

Thw SWIG library provides support for std::map with the std_map.i interface file, but only the following methods are wrapped:

 clear()
 del($key)
 get($key)
 has_key($key)
 is_empty()
 set($key, $x)
 size()

How can I iterate over the elements of the map? Would I need to extend the std_map.i file with some sort of wrappers for iterators and begin() and end()?

HighCommander4
  • 50,428
  • 24
  • 122
  • 194
  • Challenge accepted. The "right" thing to do is implement PHP's [iterator interface](http://php.net/manual/en/class.iterator.php) but it looks like that might be a bit tricky. I'll have a think – Flexo May 14 '12 at 07:32

1 Answers1

1

As @awoodland said you will have to implement the iterator interface.

Here is another question on stackoverflow. Although it is java it can give you a better idea of what you are looking for:

No iterator for Java when using SWIG with C++'s std::map

Community
  • 1
  • 1
manumoomoo
  • 2,707
  • 3
  • 24
  • 25