mmidy       02/04/10 13:33:16

  Modified:    java/src/org/apache/xml/dtm DTM.java
               java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
                        DTMDefaultBaseIterators.java
                        DTMDefaultBaseTraversers.java
                        ExpandedNameTable.java
               java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
               java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
  Log:
  Change extended types to be an integer and use a structure with a localname, 
a namespace and a nodetype to represent the node extended type. We no longer 
need to do the shifting left and right that we did for the previous extended 
types.
  
  Revision  Changes    Path
  1.7       +5 -0      xml-xalan/java/src/org/apache/xml/dtm/DTM.java
  
  Index: DTM.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/DTM.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DTM.java  8 Feb 2002 23:33:49 -0000       1.6
  +++ DTM.java  10 Apr 2002 20:33:15 -0000      1.7
  @@ -190,6 +190,11 @@
      * currently a node type defined by the DOM API.
      */
     public static final short NAMESPACE_NODE = 13;
  +  
  +  /**
  +   * The number of valid nodetypes.
  +   */
  +  public static final short  NTYPES = 14;
   
     // ========= DTM Implementation Control Functions. ==============
     // %TBD% RETIRED -- do via setFeature if needed. Remove from impls.
  
  
  
  1.28      +3 -3      
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java
  
  Index: DTMDefaultBase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBase.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- DTMDefaultBase.java       9 Apr 2002 19:06:42 -0000       1.27
  +++ DTMDefaultBase.java       10 Apr 2002 20:33:16 -0000      1.28
  @@ -461,7 +461,7 @@
       int info = _exptype(identity);
   
       if (NULL != info)
  -      return ExpandedNameTable.getType(info);
  +      return m_expandedNameTable.getType(info);
       else
         return NULL;
     }
  @@ -1572,7 +1572,7 @@
       int identity = makeNodeIdentity(nodeHandle);
       int expandedNameID = _exptype(identity);
   
  -    return ExpandedNameTable.getNamespaceID(expandedNameID);
  +    return m_expandedNameTable.getNamespaceID(expandedNameID);
     }
   
     /**
  @@ -1662,7 +1662,7 @@
      */
     public short getNodeType(int nodeHandle)
     {
  -    return (short)(_exptype(makeNodeIdentity(nodeHandle)) >>> 
ExpandedNameTable.ROTAMOUNT_TYPE);
  +    return 
m_expandedNameTable.getType(_exptype(makeNodeIdentity(nodeHandle))); 
     }
   
     /**
  
  
  
  1.12      +1 -1      
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseIterators.java
  
  Index: DTMDefaultBaseIterators.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseIterators.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DTMDefaultBaseIterators.java      8 Feb 2002 23:33:50 -0000       1.11
  +++ DTMDefaultBaseIterators.java      10 Apr 2002 20:33:16 -0000      1.12
  @@ -1036,7 +1036,7 @@
             return resetPosition();
           }
             
  -        int type = getExpandedTypeID(node) & ExpandedNameTable.MASK_NODETYPE;
  +        int type = m_expandedNameTable.getType(getExpandedTypeID(node)); 
           if(ExpandedNameTable.ATTRIBUTE == type 
              || ExpandedNameTable.NAMESPACE == type )
           {
  
  
  
  1.9       +1 -1      
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseTraversers.java
  
  Index: DTMDefaultBaseTraversers.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseTraversers.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DTMDefaultBaseTraversers.java     27 Nov 2001 00:15:43 -0000      1.8
  +++ DTMDefaultBaseTraversers.java     10 Apr 2002 20:33:16 -0000      1.9
  @@ -517,7 +517,7 @@
       {
         return (m_indexing
                 && ExpandedNameTable.ELEMENT
  -                 == (expandedTypeID & ExpandedNameTable.MASK_NODETYPE));
  +                 == m_expandedNameTable.getType(expandedTypeID)); 
       }
   
       /**
  
  
  
  1.4       +104 -34   
xml-xalan/java/src/org/apache/xml/dtm/ref/ExpandedNameTable.java
  
  Index: ExpandedNameTable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/ExpandedNameTable.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ExpandedNameTable.java    11 Jul 2001 04:00:13 -0000      1.3
  +++ ExpandedNameTable.java    10 Apr 2002 20:33:16 -0000      1.4
  @@ -58,6 +58,8 @@
   
   import org.apache.xml.dtm.DTM;
   
  +import java.util.Vector;
  +
   /**
    * This is a default implementation of a table that manages mappings from
    * expanded names to expandedNameIDs.
  @@ -81,30 +83,27 @@
     /** Probably a reference to static pool.   */
     private DTMStringPool m_namespaceNames;
     
  -  public static int BITS_PER_LOCALNAME = 16;
  -  public static int BITS_PER_NAMESPACE = 10;
  -
  -  public static int MASK_LOCALNAME = 0x0000FFFF;
  -  public static int MASK_NAMESPACE = 0x03FF0000;
  -  public static int MASK_NODETYPE = 0xFC000000;
  -  public static int MASK_NODEHANDLE = 0x000FFFFF;
  -
  -  public static final int ROTAMOUNT_TYPE = 
(BITS_PER_NAMESPACE+BITS_PER_LOCALNAME);
  +  /** Vector of extended types for this document   */
  +  private /*static*/ Vector m_extendedTypes;
     
  +  /** Next available extended type   */
  +  private int m_nextType;
  +    
     // These are all the types prerotated, for caller convenience.
  -  public static final int ELEMENT = ((int)DTM.ELEMENT_NODE) << 
ROTAMOUNT_TYPE;
  -  public static final int ATTRIBUTE = ((int)DTM.ATTRIBUTE_NODE) << 
ROTAMOUNT_TYPE;
  -  public static final int TEXT = ((int)DTM.TEXT_NODE) << ROTAMOUNT_TYPE;
  -  public static final int CDATA_SECTION = ((int)DTM.CDATA_SECTION_NODE) << 
ROTAMOUNT_TYPE;
  -  public static final int ENTITY_REFERENCE = 
((int)DTM.ENTITY_REFERENCE_NODE) << ROTAMOUNT_TYPE;
  -  public static final int ENTITY = ((int)DTM.ENTITY_NODE) << ROTAMOUNT_TYPE;
  -  public static final int PROCESSING_INSTRUCTION = 
((int)DTM.PROCESSING_INSTRUCTION_NODE) << ROTAMOUNT_TYPE;
  -  public static final int COMMENT = ((int)DTM.COMMENT_NODE) << 
ROTAMOUNT_TYPE;
  -  public static final int DOCUMENT = ((int)DTM.DOCUMENT_NODE) << 
ROTAMOUNT_TYPE;
  -  public static final int DOCUMENT_TYPE = ((int)DTM.DOCUMENT_TYPE_NODE) << 
ROTAMOUNT_TYPE;
  -  public static final int DOCUMENT_FRAGMENT 
=((int)DTM.DOCUMENT_FRAGMENT_NODE) << ROTAMOUNT_TYPE;
  -  public static final int NOTATION = ((int)DTM.NOTATION_NODE) << 
ROTAMOUNT_TYPE;
  -  public static final int NAMESPACE = ((int)DTM.NAMESPACE_NODE) << 
ROTAMOUNT_TYPE;
  +  public static final int ELEMENT = ((int)DTM.ELEMENT_NODE) ;
  +  public static final int ATTRIBUTE = ((int)DTM.ATTRIBUTE_NODE) ;
  +  public static final int TEXT = ((int)DTM.TEXT_NODE) ;
  +  public static final int CDATA_SECTION = ((int)DTM.CDATA_SECTION_NODE) ;
  +  public static final int ENTITY_REFERENCE = 
((int)DTM.ENTITY_REFERENCE_NODE) ;
  +  public static final int ENTITY = ((int)DTM.ENTITY_NODE) ;
  +  public static final int PROCESSING_INSTRUCTION = 
((int)DTM.PROCESSING_INSTRUCTION_NODE) ;
  +  public static final int COMMENT = ((int)DTM.COMMENT_NODE) ;
  +  public static final int DOCUMENT = ((int)DTM.DOCUMENT_NODE) ;
  +  public static final int DOCUMENT_TYPE = ((int)DTM.DOCUMENT_TYPE_NODE) ;
  +  public static final int DOCUMENT_FRAGMENT 
=((int)DTM.DOCUMENT_FRAGMENT_NODE) ;
  +  public static final int NOTATION = ((int)DTM.NOTATION_NODE) ;
  +  public static final int NAMESPACE = ((int)DTM.NAMESPACE_NODE) ;
  +  
   
     /**
      * Create an expanded name table that uses private string pool lookup.
  @@ -113,6 +112,7 @@
     {
       m_locNamesPool = new DTMSafeStringPool();
       m_namespaceNames = new DTMSafeStringPool();
  +    initExtendedTypes(); 
     }
   
     /**
  @@ -126,6 +126,22 @@
     {
       m_locNamesPool = locNamesPool;
       m_namespaceNames = namespaceNames;
  +    initExtendedTypes();
  +  }
  +  
  +  /**
  +   *  Initialize the vector of extended types with the 
  +   *  basic DOM node types. 
  +   */
  +  private void initExtendedTypes()
  +  {
  +    m_extendedTypes = new Vector();
  +    int i;
  +    for (i = 0; i < DTM.NTYPES; i++)
  +    {
  +      m_extendedTypes.addElement(new ExtendedType(i, "", "") ); 
  +    }
  +    m_nextType = m_extendedTypes.size();
     }
   
     /**
  @@ -141,13 +157,25 @@
      */
     public int getExpandedTypeID(String namespace, String localName, int type)
     {
  -    int nsID = (null != namespace) ? 
m_namespaceNames.stringToIndex(namespace) : 0;
  +    /*int nsID = (null != namespace) ? 
m_namespaceNames.stringToIndex(namespace) : 0;
       int lnID = m_locNamesPool.stringToIndex(localName);
       
       int expandedTypeID = (type << (BITS_PER_NAMESPACE+BITS_PER_LOCALNAME)) 
                          | (nsID << BITS_PER_LOCALNAME) | lnID;
  -
       return expandedTypeID;
  +*/
  +    if (null == namespace) 
  +      namespace = "";
  +      if (null == localName) 
  +      localName = "";
  +    for (int i = 0; i < m_extendedTypes.size(); i++)
  +    {
  +      ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt(i);
  +      if( type == etype.nodetype && namespace.equals(etype.namespace) && 
localName.equals(etype.localName)) 
  +        return i;
  +    }
  +    m_extendedTypes.addElement(new ExtendedType(type, namespace, localName));
  +    return m_nextType++;
     }
     
     /**
  @@ -161,9 +189,17 @@
      */
     public int getExpandedTypeID(int type)
     {
  -    int expandedTypeID = (type << (BITS_PER_NAMESPACE+BITS_PER_LOCALNAME));
  +    /*int expandedTypeID = (type << (BITS_PER_NAMESPACE+BITS_PER_LOCALNAME));
   
       return expandedTypeID;
  +    */
  +    for (int i = 0; i < m_extendedTypes.size(); i++)
  +    {
  +      ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt(i);
  +      if( type == etype.nodetype ) 
  +        return i;
  +    }
  +    return -1; // something's very wrong!
     }
   
     /**
  @@ -174,7 +210,9 @@
      */
     public String getLocalName(int ExpandedNameID)
     {
  -    return m_locNamesPool.indexToString(ExpandedNameID & MASK_LOCALNAME);
  +    //return m_locNamesPool.indexToString(ExpandedNameID & MASK_LOCALNAME);
  +    ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt 
(ExpandedNameID);
  +    return etype.localName;
     }
     
     /**
  @@ -183,9 +221,14 @@
      * @param ExpandedNameID an ID that represents an expanded-name.
      * @return The id of this local name.
      */
  -  public static final int getLocalNameID(int ExpandedNameID)
  +  public /*static*/ final int getLocalNameID(int ExpandedNameID)
     {
  -    return (ExpandedNameID & MASK_LOCALNAME);
  +    //return (ExpandedNameID & MASK_LOCALNAME);
  +    ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt 
(ExpandedNameID);
  +    if (etype.localName.equals(""))
  +      return 0;
  +    else
  +    return ExpandedNameID;
     }
   
   
  @@ -199,8 +242,10 @@
     public String getNamespace(int ExpandedNameID)
     {
   
  -    int id = (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
  -    return (0 == id) ? null : m_namespaceNames.indexToString(id);
  +    //int id = (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
  +    //return (0 == id) ? null : m_namespaceNames.indexToString(id);
  +    ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt 
(ExpandedNameID);
  +    return (etype.namespace.equals("") ? null : etype.namespace); 
     }
     
     /**
  @@ -209,9 +254,14 @@
      * @param ExpandedNameID an ID that represents an expanded-name.
      * @return The id of this namespace.
      */
  -  public static final int getNamespaceID(int ExpandedNameID)
  +  public /*static*/ final int getNamespaceID(int ExpandedNameID)
     {
  -    return (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
  +    //return (ExpandedNameID & MASK_NAMESPACE) >> BITS_PER_LOCALNAME;
  +    ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt 
(ExpandedNameID);
  +    if (etype.namespace.equals(""))
  +      return 0;
  +    else
  +    return ExpandedNameID;
     }
     
     /**
  @@ -220,9 +270,29 @@
      * @param ExpandedNameID an ID that represents an expanded-name.
      * @return The id of this local name.
      */
  -  public static final short getType(int ExpandedNameID)
  +  public final short getType(int ExpandedNameID)
     {
  -    return (short)(ExpandedNameID >> ROTAMOUNT_TYPE);
  +    //return (short)(ExpandedNameID >> ROTAMOUNT_TYPE);
  +    ExtendedType etype = (ExtendedType)m_extendedTypes.elementAt 
(ExpandedNameID);
  +    return (short)etype.nodetype;
  +  }
  +  
  +  
  +  /**
  +   * Private class representing an extended type object 
  +   */
  +  private class ExtendedType
  +  {
  +    private int nodetype;
  +    private String namespace;
  +    private String localName;
  +    
  +    private ExtendedType (int nodetype, String namespace, String localName)
  +    {
  +      this.nodetype = nodetype;
  +      this.namespace = namespace;
  +      this.localName = localName;
  +    }
     }
     
   }
  
  
  
  1.28      +1 -1      
xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java
  
  Index: DOM2DTM.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- DOM2DTM.java      18 Dec 2001 21:55:33 -0000      1.27
  +++ DOM2DTM.java      10 Apr 2002 20:33:16 -0000      1.28
  @@ -1232,7 +1232,7 @@
       // time, and was wrong anyway since it wasn't coverting handle to
       // identity. Inlined it.
       int type = _exptype(makeNodeIdentity(nodeHandle));
  -    type=(NULL != type) ? ExpandedNameTable.getType(type) : NULL;
  +    type=(NULL != type) ? getNodeType(nodeHandle) : NULL;
       
       if(TEXT_NODE!=type && CDATA_SECTION_NODE!=type)
         return getNode(nodeHandle).getNodeValue();
  
  
  
  1.28      +3 -6      
xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java
  
  Index: SAX2DTM.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- SAX2DTM.java      6 Feb 2002 17:46:45 -0000       1.27
  +++ SAX2DTM.java      10 Apr 2002 20:33:16 -0000      1.28
  @@ -570,9 +570,7 @@
   
       int expandedTypeID = getExpandedTypeID(nodeHandle);
       // If just testing nonzero, no need to shift...
  -    //int namespaceID = (expandedTypeID & ExpandedNameTable.MASK_NAMESPACE)
  -    //                  >> ExpandedNameTable.BITS_PER_LOCALNAME;
  -    int namespaceID = (expandedTypeID & ExpandedNameTable.MASK_NAMESPACE);
  +    int namespaceID = m_expandedNameTable.getNamespaceID(expandedTypeID);    
                 
   
       if (0 == namespaceID)
       {
  @@ -619,9 +617,8 @@
     public String getNodeNameX(int nodeHandle)
     {
   
  -    int expandedTypeID = getExpandedTypeID(nodeHandle);
  -    int namespaceID = (expandedTypeID & ExpandedNameTable.MASK_NAMESPACE)
  -                      >> ExpandedNameTable.BITS_PER_LOCALNAME;
  +    int expandedTypeID = getExpandedTypeID(nodeHandle);    
  +    int namespaceID = m_expandedNameTable.getNamespaceID(expandedTypeID);    
                  
   
       if (0 == namespaceID)
       {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to