Ignore:
Timestamp:
Dec 12, 2012, 6:10:33 PM (6 years ago)
Author:
cameron
Message:

Various fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icXML/icXML-devel/src/icxmlc/XMLNamespaceResolver.c

    r2720 r2774  
    77/*
    88 * @author Nigel Medforth, nigelm -at- interational-characters.com
    9  * @version $Id: XMLNamespaceResolver.c 207 2012-12-02 20:38:22Z robc $
     9 * @version $Id: XMLNamespaceResolver.c 224 2012-12-12 03:31:56Z nigelm $
    1010 *
    1111 */
     
    7878        else
    7979        {
    80         if (unlikely(fNamespaceToUriBindingTable[namespaceId] != globalUriId))
     80        if (unlikely(getNamespaceUriId(namespaceId) != globalUriId))
    8181                {
    8282            remapPrefixToUri(prefixId, localUriId, globalUriId);
     
    379379                count++;
    380380
    381                 if (fNamespaceToUriBindingTable[namespaceItr.pos()] == globalUriId)
     381        if (getNamespaceUriId(namespaceItr.pos()) == globalUriId)
    382382                {
    383383                        namespaceId = namespaceItr.pos();
     
    389389        namespaceId = fNextNamespaceId++;
    390390
    391         if (fCurrentlyVisibleNamespaces.capacity() <= namespaceId)
     391    if (unlikely(fCurrentlyVisibleNamespaces.capacity() <= namespaceId))
    392392        {
    393393                DEBUG_NAMESPACE_MESSAGE(" *** expanding namespace space due to namespaceId " << fNextNamespaceId);
    394394                fCurrentlyVisibleNamespaces.expand(namespaceId);
    395                 fCanonicalBindingSet.expand(namespaceId);
    396                 fNamespaceToUriBindingTable.expand(namespaceId);
     395                fCanonicalBindingSet.expand(namespaceId);               
     396        fNamespaceToUriBindingTable.expand(namespaceId);
     397        fNamespaceToPrefixBindingTable.expand(namespaceId);
    397398                fLocallyModifiedNamespaces.increaseBitCapacity(namespaceId);
    398399                fDistinctContextSet.increaseBitCapacity(namespaceId);
     
    404405        // map this prefix to the namespace
    405406        fPrefixToNamespaceBindingTable[prefixId] += namespaceId;
    406 
    407407        fNamespaceToUriBindingTable[namespaceId] = globalUriId;
     408    // and the URI back to the prefix
     409    fNamespaceToPrefixBindingTable[namespaceId] = prefixId;
    408410
    409411        if (prefixId == localUriId)
     
    505507
    506508IDISA_ALWAYS_INLINE
     509BindingSetIterator XMLNamespaceResolver::getNamespaceIterator(const unsigned int contextId) const
     510{
     511    return BindingSetIterator(fDistinctContextSet[contextId]);
     512}
     513
     514/// -----------------------------------------------------------------------------------------------
     515
     516IDISA_ALWAYS_INLINE
     517unsigned int
     518XMLNamespaceResolver::getNamespaceUriId(const unsigned int namespaceId) const
     519{
     520    return fNamespaceToUriBindingTable[namespaceId];
     521}
     522
     523/// -----------------------------------------------------------------------------------------------
     524
     525IDISA_ALWAYS_INLINE
     526const XMLCh *
     527XMLNamespaceResolver::getPrefixForNamespaceId(const unsigned int namespaceId) const
     528{
     529    return fPrefixList[fNamespaceToPrefixBindingTable[namespaceId]].getKey();
     530}
     531
     532
     533/// -----------------------------------------------------------------------------------------------
     534
     535IDISA_ALWAYS_INLINE
    507536bool
    508537XMLNamespaceResolver::isPrefixVisible(const XMLCh * prefix, const unsigned int contextId)
Note: See TracChangeset for help on using the changeset viewer.