%module lilv
%{
#include "lilv/lilv.h"
#include "lilv/lilvmm.hpp"
%}

%include "lilv/lilv.h"
%include "lilv/lilvmm.hpp"

namespace Lilv {

%extend Plugins {
%pythoncode %{
	def __iter__(self):
		class Iterator(object):
			def __init__(self, plugins):
				self.plugins = plugins
				self.iter    = plugins.begin()
	                
			def next(self):
				self.iter = self.plugins.next(self.iter)
				if not self.plugins.is_end(self.iter):
					return self.plugins.get(self.iter)
				else:
					raise StopIteration

		return Iterator(self)
%}
};

%extend Node {
%pythoncode %{
	def __str__(self):
		return self.get_turtle_token()
%}
};

} /* namespace Lilv */