Index: src/af/util/xp/ut_misc.h =================================================================== --- src/af/util/xp/ut_misc.h (revision 26785) +++ src/af/util/xp/ut_misc.h (working copy) @@ -37,6 +37,7 @@ #endif #include +#include class UT_Rect; class UT_String; @@ -228,6 +229,15 @@ UT_uint64 UT_hash64(const char * p, UT_uint32 bytelen = 0); UT_uint32 UT_hash32(const char * p, UT_uint32 bytelen = 0); +template +UT_sint32 UT_find(const std::vector& v, T& value) +{ + const std::vector::const_iterator cit = std::find(v.begin(), v.end(), value); + if (cit == v.end()) + return -1; + return cit - v.begin(); +} + // Hack so we get AbiNativeWidget with an xp include #ifdef TOOLKIT_GTK #include Index: src/text/ptbl/xp/pf_Fragments.cpp =================================================================== --- src/text/ptbl/xp/pf_Fragments.cpp (revision 26785) +++ src/text/ptbl/xp/pf_Fragments.cpp (working copy) @@ -19,6 +19,7 @@ #include "ut_types.h" +#include "ut_misc.h" #include "ut_assert.h" #include "ut_debugmsg.h" #include "pf_Fragments.h" @@ -154,7 +155,7 @@ */ void pf_Fragments::cleanFrags(void) const { - if (m_vecFrags.getItemCount() > 0) + if (m_vecFrags.size() > 0) m_vecFrags.clear(); pf_Frag * pfLast = NULL; @@ -164,7 +165,7 @@ pf->setPos(sum); sum += pf->getLength(); pfLast = pf; - m_vecFrags.addItem((void *) pf); + m_vecFrags.push_back(pf); } UT_return_if_fail (pfLast /*&& (pfLast->getType() == pf_Frag::PFT_EndOfDoc)*/); @@ -185,10 +186,10 @@ xxx_UT_DEBUGMSG(("JCA: getNthFrag (%d): Don't need to clean fragments\n", nthFrag)); } - if (m_vecFrags.getItemCount() > 0) + if (m_vecFrags.size() > 0) { - xxx_UT_DEBUGMSG(("JCA: getNthFrag (%d): returning frag %p\n", nthFrag, m_vecFrags.getNthItem(nthFrag))); - return (pf_Frag *) m_vecFrags.getNthItem(nthFrag); + xxx_UT_DEBUGMSG(("JCA: getNthFrag (%d): returning frag %p\n", nthFrag, m_vecFrags[nthFrag])); + return m_vecFrags[nthFrag]; } return NULL; @@ -247,7 +248,7 @@ #ifdef DEBUG ++numIters; #endif - curFrag = (pf_Frag *) m_vecFrags.getNthItem(curFragNo); + curFrag = m_vecFrags[curFragNo]; if (pos < curFrag->getPos()) { diff = diff / 2; @@ -285,12 +286,15 @@ return curFrag; } -UT_uint32 pf_Fragments::getFragNumber(const pf_Frag * pf) const +/* + * Returns the index of the given frag, or -1 if not found + */ +UT_uint32 pf_Fragments::getFragNumber(pf_Frag * pf) const { if (areFragsDirty()) cleanFrags(); - return m_vecFrags.findItem((void *) pf); + return UT_find(m_vecFrags, pf); } UT_uint32 pf_Fragments::getNumberOfFrags() const @@ -299,7 +303,7 @@ { cleanFrags(); } - return m_vecFrags.getItemCount(); + return m_vecFrags.size(); } Index: src/text/ptbl/xp/pf_Fragments.h =================================================================== --- src/text/ptbl/xp/pf_Fragments.h (revision 26785) +++ src/text/ptbl/xp/pf_Fragments.h (working copy) @@ -50,7 +50,7 @@ pf_Frag * getNthFrag(UT_uint32 nthFrag) const; pf_Frag * findFirstFragBeforePos(PT_DocPosition pos) const; UT_uint32 getNumberOfFrags() const; - UT_uint32 getFragNumber(const pf_Frag * pf) const; + UT_uint32 getFragNumber(pf_Frag * pf) const; pf_Frag * getFirst() const; pf_Frag * getLast() const; void setFragsDirty(void) { m_bAreFragsClean = false;} @@ -66,7 +66,7 @@ pf_Frag * m_pFirst; pf_Frag * m_pLast; - mutable UT_Vector m_vecFrags; + mutable std::vector m_vecFrags; mutable bool m_bAreFragsClean; mutable pf_Frag* m_pCache; };