Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ Core » stl-compatibility
Re: stl-compatibility [message #39674 is a reply to message #39649] Tue, 16 April 2013 20:11 Go to previous messageGo to previous message
piotr5 is currently offline  piotr5
Messages: 107
Registered: November 2005
Experienced Member
I instantiated a class making use of each container's stl-compatibility to check what containers can be used. what I found is:

	testIterContainers<Vector<V> >();
	testIterContainers<Array<V> >();
/*no conversion from iterator to const_iterator*/ //	testIterContainers<Segtor<V> >();
//	testIterContainers<Index<V> >();
//	testIterContainers<ArrayIndex<V> >();
	testIterContainers<VectorMap<int,V> >();
	testIterContainers<ArrayMap<int,V> >();
/*no conversion from iterator to const_iterator*/ //	testIterContainers<SegtorMap<int,V> >();
//	testIterContainers<One<V> >();
//	testIterContainers<Buffer<V> >();
//	testIterContainers<Mitor<V> >();
//	testIterContainers<LinkElement<V> >();
//	testIterContainers<LRUCache<V> >();
	testIterContainers<InVector<V> >();
/*no operator=(ConstIterator) for InArray*/ //	testIterContainers<InArray<V> >();
//	testIterContainers<SortedIndex<V> >();
	testIterContainers<SortedVectorMap<int,V> >();
/*no operator=(ConstIterator) for InArray*/ //	testIterContainers<SortedArrayMap<int,V> >();
/*no conversion from iterator to const_iterator*/ //	testIterContainers<BiVector<V> >();
/*no conversion from iterator to const_iterator*/ //	testIterContainers<BiArray<V> >();


the containers I used all at least instantiate and return an iterator, the containers I commented out have no stl-compatibility. additional comments are talking of 2 compilation-problems: InArray delegates SetEnd to InVector resulting in

/home/p/upp/uppsrc/Core/InVector.hpp: In member function ‘void Upp::InArray<T>::SetEnd(Upp::InArray<T>::ConstIterator&) const [with T = Upp::Vector<in
	t>]’:
/home/p/upp/uppsrc/Core/InVector.h:332:65:   instantiated from ‘Upp::InArray<T>::Iterator Upp::InArray<T>::End() [with T = Upp::Vector<int>]’
/home/p/upp/uppsrc/Core/InVector.h:345:2:   instantiated from ‘Upp::InArray<T>::iterator Upp::InArray<T>::end() [with T = Upp::Vector<int>, Upp::InArr
	ay<T>::iterator = Upp::InArray<Upp::Vector<int> >::Iterator]’
/home/p/MyApps/stlpp/stlpp.h:532:53:   instantiated from ‘TrueIterContainer<C>::TrueIterContainer(C2&) [with C2 = Upp::InArray<Upp::Vector<int> >, C =
	 Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:17:27:   instantiated from ‘void testIterContainers() [with C = Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:40:46:   instantiated from ‘void test() [with V = Upp::Vector<int>]’
/home/p/MyApps/stlppTest/stlppTest.cpp:50:21:   instantiated from here
/home/p/upp/uppsrc/Core/InVector.hpp:755:2: error: no match for ‘operator=’ in ‘it.Upp::InArray<Upp::Vector<int> >::ConstIterator::it = ((const Upp::I
	nArray<Upp::Vector<int> >*)this)->Upp::InArray<Upp::Vector<int> >::iv.Upp::InVector<T>::End [with T = Upp::Vector<int>*]()’
/home/p/upp/uppsrc/Core/InVector.hpp:755:2: note: candidate is:
/home/p/upp/uppsrc/Core/InVector.h:200:20: note: Upp::InVector<Upp::Vector<int>*>::Iterator& Upp::InVector<Upp::Vector<int>*>::Iterator::operator=(con
	st Upp::InVector<Upp::Vector<int>*>::Iterator&)
/home/p/upp/uppsrc/Core/InVector.h:200:20: note:   no known conversion for argument 1 from ‘Upp::InVector<Upp::Vector<int>*>::ConstIterator’ to ‘const
	 Upp::InVector<Upp::Vector<int>*>::Iterator&’
/home/p/upp/uppsrc/Core/InVector.hpp: In member function ‘void Upp::InArray<T>::SetBegin(Upp::InArray<T>::ConstIterator&) const [with T = Upp::Vector<
	int>]’:
/home/p/upp/uppsrc/Core/InVector.h:331:65:   instantiated from ‘Upp::InArray<T>::Iterator Upp::InArray<T>::Begin() [with T = Upp::Vector<int>]’
/home/p/upp/uppsrc/Core/InVector.h:345:2:   instantiated from ‘Upp::InArray<T>::iterator Upp::InArray<T>::begin() [with T = Upp::Vector<int>, Upp::InA
	rray<T>::iterator = Upp::InArray<Upp::Vector<int> >::Iterator]’
/home/p/MyApps/stlpp/stlpp.h:532:53:   instantiated from ‘TrueIterContainer<C>::TrueIterContainer(C2&) [with C2 = Upp::InArray<Upp::Vector<int> >, C =
	 Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:17:27:   instantiated from ‘void testIterContainers() [with C = Upp::InArray<Upp::Vector<int> >]’
/home/p/MyApps/stlppTest/stlppTest.cpp:40:46:   instantiated from ‘void test() [with V = Upp::Vector<int>]’
/home/p/MyApps/stlppTest/stlppTest.cpp:50:21:   instantiated from here
/home/p/upp/uppsrc/Core/InVector.hpp:749:2: error: no match for ‘operator=’ in ‘it.Upp::InArray<Upp::Vector<int> >::ConstIterator::it = ((const Upp::I
	nArray<Upp::Vector<int> >*)this)->Upp::InArray<Upp::Vector<int> >::iv.Upp::InVector<T>::Begin [with T = Upp::Vector<int>*]()’
/home/p/upp/uppsrc/Core/InVector.hpp:749:2: note: candidate is:
/home/p/upp/uppsrc/Core/InVector.h:200:20: note: Upp::InVector<Upp::Vector<int>*>::Iterator& Upp::InVector<Upp::Vector<int>*>::Iterator::operator=(con
	st Upp::InVector<Upp::Vector<int>*>::Iterator&)
/home/p/upp/uppsrc/Core/InVector.h:200:20: note:   no known conversion for argument 1 from ‘Upp::InVector<Upp::Vector<int>*>::ConstIterator’ to ‘const
	 Upp::InVector<Upp::Vector<int>*>::Iterator&’
stlppTest: 1 file(s) built in (0:05.84), 5848 msecs / file, duration = 5855 msecs, parallelization 0%


minimal testing program is

struct InArrayDebug
{
	InArray<int> c;
	InArray<int>::ConstIterator end() const {return c.end();}
	InArray<int>::ConstIterator begin() const {return c.begin();}
};


the problem with segtor is

/home/p/MyApps/stlpp/stlpp.h:75:2: note:   no known conversion for argument 2 from ‘Upp::Segtor<Upp::Vector<int>, 16>::iterator {aka Upp::IIterator<Up
	p::Segtor<Upp::Vector<int>, 16> >}’ to ‘Upp::ConstIIterator<Upp::Segtor<Upp::Vector<int>, 16> >’


please note, I haven't updated svn yet,
svn st -v |sort |tail
returns 5977 as the revision number on googlecode.

[Updated on: Tue, 16 April 2013 20:47]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: small dli enhancement
Next Topic: Is it possible to use Core/Rpc in non blocking mode?
Goto Forum:
  


Current Time: Sat May 18 02:25:04 CEST 2024

Total time taken to generate the page: 0.05064 seconds