VirtualBox

Changeset 48781 in vbox


Ignore:
Timestamp:
Oct 1, 2013 2:43:59 AM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
89419
Message:

iprt/list.h,xml.h: Because of gcc, we need a C++ version of a bunch of the RTListXxx macros that uses RT_FROM_CPP_MEMBER instead of RT_FROM_MEMBER. I don't dare speculate on the compilers optimizing the two macros in the same way, thus two sets of macros.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/cpp/xml.h

    r48779 r48781  
    461461    const Node *getFirstChild() const
    462462    {
    463         return RTListGetFirst(&m_children, const Node, m_childEntry);
     463        return RTListGetFirstCpp(&m_children, const Node, m_childEntry);
    464464    }
    465465
     
    468468    const Node *getLastChild() const
    469469    {
    470         return RTListGetLast(&m_children, const Node, m_childEntry);
     470        return RTListGetLastCpp(&m_children, const Node, m_childEntry);
    471471    }
    472472
     
    477477        if (!m_pParent)
    478478            return NULL;
    479         return RTListGetPrev(&m_pParent->m_children, this, const Node, m_childEntry);
     479        return RTListGetPrevCpp(&m_pParent->m_children, this, const Node, m_childEntry);
    480480    }
    481481
     
    486486        if (!m_pParent)
    487487            return NULL;
    488         return RTListGetNext(&m_pParent->m_children, this, const Node, m_childEntry);
     488        return RTListGetNextCpp(&m_pParent->m_children, this, const Node, m_childEntry);
    489489    }
    490490    /** @} */
  • trunk/include/iprt/list.h

    r44529 r48781  
    184184#define RTListNodeIsDummy(pList, pNode, Type, Member) \
    185185         ( (pNode) == RT_FROM_MEMBER((pList), Type, Member) )
     186/** @copydoc RTListNodeIsDummy */
     187#define RTListNodeIsDummyCpp(pList, pNode, Type, Member) \
     188         ( (pNode) == RT_FROM_CPP_MEMBER((pList), Type, Member) )
    186189
    187190/**
     
    206209#define RTListNodeGetNext(pCurNode, Type, Member) \
    207210    RT_FROM_MEMBER((pCurNode)->pNext, Type, Member)
     211/** @copydoc RTListNodeGetNext */
     212#define RTListNodeGetNextCpp(pCurNode, Type, Member) \
     213    RT_FROM_CPP_MEMBER((pCurNode)->pNext, Type, Member)
    208214
    209215/**
     
    218224#define RTListNodeGetPrev(pCurNode, Type, Member) \
    219225    RT_FROM_MEMBER((pCurNode)->pPrev, Type, Member)
     226/** @copydoc RTListNodeGetPrev */
     227#define RTListNodeGetPrevCpp(pCurNode, Type, Member) \
     228    RT_FROM_CPP_MEMBER((pCurNode)->pPrev, Type, Member)
    220229
    221230/**
     
    231240#define RTListGetFirst(pList, Type, Member) \
    232241    (!RTListIsEmpty(pList) ? RTListNodeGetNext(pList, Type, Member) : NULL)
     242/** @copydoc RTListGetFirst */
     243#define RTListGetFirstCpp(pList, Type, Member) \
     244    (!RTListIsEmpty(pList) ? RTListNodeGetNextCpp(pList, Type, Member) : NULL)
    233245
    234246/**
     
    244256#define RTListGetLast(pList, Type, Member) \
    245257    (!RTListIsEmpty(pList) ? RTListNodeGetPrev(pList, Type, Member) : NULL)
     258/** @copydoc RTListGetLast */
     259#define RTListGetLastCpp(pList, Type, Member) \
     260    (!RTListIsEmpty(pList) ? RTListNodeGetPrevCpp(pList, Type, Member) : NULL)
    246261
    247262/**
     
    257272#define RTListGetNext(pList, pCurNode, Type, Member) \
    258273    ( (pCurNode)->Member.pNext != (pList) ? RT_FROM_MEMBER((pCurNode)->Member.pNext, Type, Member) : NULL )
     274/** @copydoc RTListGetNext */
     275#define RTListGetNextCpp(pList, pCurNode, Type, Member) \
     276    ( (pCurNode)->Member.pNext != (pList) ? RT_FROM_CPP_MEMBER((pCurNode)->Member.pNext, Type, Member) : NULL )
    259277
    260278/**
     
    270288#define RTListGetPrev(pList, pCurNode, Type, Member) \
    271289    ( (pCurNode)->Member.pPrev != (pList) ? RT_FROM_MEMBER((pCurNode)->Member.pPrev, Type, Member) : NULL )
     290/** @copydoc RTListGetPrev */
     291#define RTListGetPrevCpp(pList, pCurNode, Type, Member) \
     292    ( (pCurNode)->Member.pPrev != (pList) ? RT_FROM_CPP_MEMBER((pCurNode)->Member.pPrev, Type, Member) : NULL )
    272293
    273294/**
     
    283304         !RTListNodeIsDummy(pList, pIterator, Type, Member); \
    284305         pIterator = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member) )
     306/** @copydoc RTListForEach */
     307#define RTListForEachCpp(pList, pIterator, Type, Member) \
     308    for (pIterator = RTListNodeGetNextCpp(pList, Type, Member); \
     309         !RTListNodeIsDummy(pList, pIterator, Type, Member); \
     310         pIterator = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member) )
    285311
    286312
     
    302328         pIterator = pIterNext, \
    303329         pIterNext = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member) )
     330/** @copydoc RTListForEachSafe */
     331#define RTListForEachSafeCpp(pList, pIterator, pIterNext, Type, Member) \
     332    for (pIterator = RTListNodeGetNextCpp(pList, Type, Member), \
     333         pIterNext = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member); \
     334         !RTListNodeIsDummy(pList, pIterator, Type, Member); \
     335         pIterator = pIterNext, \
     336         pIterNext = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member) )
    304337
    305338
     
    316349         !RTListNodeIsDummy(pList, pIterator, Type, Member); \
    317350         pIterator = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member) )
     351/** @copydoc RTListForEachReverse */
     352#define RTListForEachReverseCpp(pList, pIterator, Type, Member) \
     353    for (pIterator = RTListNodeGetPrevCpp(pList, Type, Member); \
     354         !RTListNodeIsDummy(pList, pIterator, Type, Member); \
     355         pIterator = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member) )
    318356
    319357
     
    334372         pIterator = pIterPrev, \
    335373         pIterPrev = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member) )
     374/** @copydoc RTListForEachReverseSafe */
     375#define RTListForEachReverseSafeCpp(pList, pIterator, pIterPrev, Type, Member) \
     376    for (pIterator = RTListNodeGetPrevCpp(pList, Type, Member), \
     377         pIterPrev = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member); \
     378         !RTListNodeIsDummy(pList, pIterator, Type, Member); \
     379         pIterator = pIterPrev, \
     380         pIterPrev = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member) )
    336381
    337382
  • trunk/src/VBox/Runtime/r3/xml.cpp

    r48779 r48781  
    472472#ifndef USE_STD_LIST_FOR_CHILDREN
    473473    Node *pCur, *pNext;
    474     RTListForEachSafe(&m_children, pCur, pNext, Node, m_childEntry)
     474    RTListForEachSafeCpp(&m_children, pCur, pNext, Node, m_childEntry)
    475475    {
    476476        delete pCur;
     
    764764#ifndef USE_STD_LIST_FOR_CHILDREN
    765765    Node *p;
    766     RTListForEach(&m_children, p, Node, m_childEntry)
     766    RTListForEachCpp(&m_children, p, Node, m_childEntry)
    767767#else
    768768    for (Data::InternalNodesList::iterator it = m->children.begin();
     
    798798#ifndef USE_STD_LIST_FOR_CHILDREN
    799799    Node *p;
    800     RTListForEach(&m_children, p, Node, m_childEntry)
     800    RTListForEachCpp(&m_children, p, Node, m_childEntry)
    801801    {
    802802        if (p->isElement())
     
    832832#ifndef USE_STD_LIST_FOR_CHILDREN
    833833    Node *p;
    834     RTListForEach(&m_children, p, Node, m_childEntry)
     834    RTListForEachCpp(&m_children, p, Node, m_childEntry)
    835835    {
    836836        if (p->isElement())
     
    882882     *        pointers in this variant.  */
    883883    Node *p;
    884     RTListForEach(&m_children, p, Node, m_childEntry)
     884    RTListForEachCpp(&m_children, p, Node, m_childEntry)
    885885    {
    886886        if (p->isElement())
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette