mirror of https://github.com/CGAL/cgal
Trying to fix the compilation warning we get from gcc 4.1
This commit is contained in:
parent
80a2a418a0
commit
fdd566b269
|
|
@ -673,85 +673,99 @@ namespace CGALi {
|
||||||
typedef std::bidirectional_iterator_tag iterator_category;
|
typedef std::bidirectional_iterator_tag iterator_category;
|
||||||
|
|
||||||
// the initialization with NULL is required by our Handle concept.
|
// the initialization with NULL is required by our Handle concept.
|
||||||
CC_iterator() : p(NULL) {}
|
CC_iterator()
|
||||||
|
{
|
||||||
|
m_ptr.p = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// Either a harmless copy-ctor,
|
// Either a harmless copy-ctor,
|
||||||
// or a conversion from iterator to const_iterator.
|
// or a conversion from iterator to const_iterator.
|
||||||
CC_iterator(const iterator &it)
|
CC_iterator (const iterator &it)
|
||||||
: p(&*it) {}
|
{
|
||||||
|
m_ptr.p = &(*it);
|
||||||
|
}
|
||||||
|
|
||||||
// Same for assignment operator (otherwise MipsPro warns)
|
// Same for assignment operator (otherwise MipsPro warns)
|
||||||
CC_iterator & operator=(const iterator &it)
|
CC_iterator & operator= (const iterator &it)
|
||||||
{
|
{
|
||||||
p = it.p;
|
m_ptr.p = &(*it);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construction from NULL
|
// Construction from NULL
|
||||||
CC_iterator(CGAL_NULL_TYPE CGAL_assertion_code(n))
|
CC_iterator (CGAL_NULL_TYPE CGAL_assertion_code(n))
|
||||||
: p(NULL)
|
|
||||||
{
|
{
|
||||||
CGAL_assertion( n == NULL);
|
CGAL_assertion (n == NULL);
|
||||||
|
m_ptr.p = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
pointer p;
|
union {
|
||||||
|
pointer p;
|
||||||
|
void *vp;
|
||||||
|
} m_ptr;
|
||||||
|
|
||||||
// Only Compact_container should access these constructors.
|
// Only Compact_container should access these constructors.
|
||||||
friend class Compact_container<value_type, typename DSC::Al>;
|
friend class Compact_container<value_type, typename DSC::Al>;
|
||||||
|
|
||||||
// For begin()
|
// For begin()
|
||||||
CC_iterator(pointer ptr, int, int)
|
CC_iterator(pointer ptr, int, int)
|
||||||
: p(ptr)
|
|
||||||
{
|
{
|
||||||
if (p == NULL) // empty container.
|
m_ptr.p = ptr;
|
||||||
|
if (m_ptr.p == NULL) // empty container.
|
||||||
return;
|
return;
|
||||||
++p; // if not empty, p = start
|
|
||||||
if (DSC::type(p) == DSC::FREE)
|
++(m_ptr.p); // if not empty, p = start
|
||||||
|
if (DSC::type(m_ptr.p) == DSC::FREE)
|
||||||
increment();
|
increment();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construction from raw pointer and for end().
|
// Construction from raw pointer and for end().
|
||||||
CC_iterator(pointer ptr, int)
|
CC_iterator(pointer ptr, int)
|
||||||
: p(ptr) {}
|
{
|
||||||
|
m_ptr.p = ptr;
|
||||||
|
}
|
||||||
|
|
||||||
// NB : in case empty container, begin == end == NULL.
|
// NB : in case empty container, begin == end == NULL.
|
||||||
void increment()
|
void increment()
|
||||||
{
|
{
|
||||||
// It's either pointing to end(), or valid.
|
// It's either pointing to end(), or valid.
|
||||||
CGAL_assertion_msg(p != NULL,
|
CGAL_assertion_msg(m_ptr.p != NULL,
|
||||||
"Doing ++ on empty container iterator ?");
|
"Doing ++ on empty container iterator ?");
|
||||||
CGAL_assertion_msg(DSC::type(p) != DSC::START_END,
|
CGAL_assertion_msg(DSC::type(m_ptr.p) != DSC::START_END,
|
||||||
"Doing ++ on end() ?");
|
"Doing ++ on end() ?");
|
||||||
|
|
||||||
// If it's not end(), then it's valid, we can do ++.
|
// If it's not end(), then it's valid, we can do ++.
|
||||||
do {
|
do {
|
||||||
++p;
|
++(m_ptr.p);
|
||||||
if (DSC::type(p) == DSC::USED ||
|
if (DSC::type(m_ptr.p) == DSC::USED ||
|
||||||
DSC::type(p) == DSC::START_END)
|
DSC::type(m_ptr.p) == DSC::START_END)
|
||||||
return;
|
return;
|
||||||
if (DSC::type(p) == DSC::BLOCK_BOUNDARY)
|
|
||||||
p = DSC::clean_pointee(p);
|
if (DSC::type(m_ptr.p) == DSC::BLOCK_BOUNDARY)
|
||||||
}
|
m_ptr.p = DSC::clean_pointee(m_ptr.p);
|
||||||
while (true);
|
} while (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void decrement()
|
void decrement()
|
||||||
{
|
{
|
||||||
// It's either pointing to end(), or valid.
|
// It's either pointing to end(), or valid.
|
||||||
CGAL_assertion_msg(p != NULL,
|
CGAL_assertion_msg(m_ptr.p != NULL,
|
||||||
"Doing -- on empty container iterator ?");
|
"Doing -- on empty container iterator ?");
|
||||||
CGAL_assertion_msg(DSC::type(p-1) != DSC::START_END,
|
CGAL_assertion_msg(DSC::type(m_ptr.p - 1) != DSC::START_END,
|
||||||
"Doing -- on begin() ?");
|
"Doing -- on begin() ?");
|
||||||
|
|
||||||
// If it's not begin(), then it's valid, we can do --.
|
// If it's not begin(), then it's valid, we can do --.
|
||||||
do {
|
do {
|
||||||
--p;
|
--m_ptr.p;
|
||||||
if (DSC::type(p) == DSC::USED ||
|
if (DSC::type(m_ptr.p) == DSC::USED ||
|
||||||
DSC::type(p) == DSC::START_END)
|
DSC::type(m_ptr.p) == DSC::START_END)
|
||||||
return;
|
return;
|
||||||
if (DSC::type(p) == DSC::BLOCK_BOUNDARY)
|
|
||||||
p = DSC::clean_pointee(p);
|
if (DSC::type(m_ptr.p) == DSC::BLOCK_BOUNDARY)
|
||||||
}
|
m_ptr.p = DSC::clean_pointee(m_ptr.p);
|
||||||
while (true);
|
} while (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
@ -762,18 +776,19 @@ namespace CGALi {
|
||||||
Self operator++(int) { Self tmp(*this); ++(*this); return tmp; }
|
Self operator++(int) { Self tmp(*this); ++(*this); return tmp; }
|
||||||
Self operator--(int) { Self tmp(*this); --(*this); return tmp; }
|
Self operator--(int) { Self tmp(*this); --(*this); return tmp; }
|
||||||
|
|
||||||
reference operator*() const { return *p; }
|
reference operator*() const { return *(m_ptr.p); }
|
||||||
pointer operator->() const { return p; }
|
|
||||||
|
pointer operator->() const { return (m_ptr.p); }
|
||||||
|
|
||||||
// For std::less...
|
// For std::less...
|
||||||
bool operator<(const CC_iterator& other) const
|
bool operator<(const CC_iterator& other) const
|
||||||
{
|
{
|
||||||
return p < other.p;
|
return (m_ptr.p < other.m_ptr.p);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can itself be used for bit-squatting.
|
// Can itself be used for bit-squatting.
|
||||||
void * for_compact_container() const { return (void *) p; }
|
void * for_compact_container() const { return (m_ptr.vp); }
|
||||||
void * & for_compact_container() { return (void * &) p; }
|
void * & for_compact_container() { return (m_ptr.vp); }
|
||||||
};
|
};
|
||||||
|
|
||||||
template < class DSC, bool Const1, bool Const2 >
|
template < class DSC, bool Const1, bool Const2 >
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue