You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2004/08/23 01:21:56 UTC
svn commit: rev 36705 - incubator/directory/snickers/branches/encoder-redesign/ber-codec/src/java/org/apache/snickers/ber
Author: akarasulu
Date: Sun Aug 22 16:21:55 2004
New Revision: 36705
Modified:
incubator/directory/snickers/branches/encoder-redesign/ber-codec/src/java/org/apache/snickers/ber/DeterminateLengthVisitor.java
Log:
Completed the visit method of this determinate length visitor which converts
tlv trees with indeterminate length nodes into definate length tuples be
decscending the tree in postfix order (depth first) to compute the child lengths
then finally the lengths of parents and ancestors in an indeterminate length
tree.
Modified: incubator/directory/snickers/branches/encoder-redesign/ber-codec/src/java/org/apache/snickers/ber/DeterminateLengthVisitor.java
==============================================================================
--- incubator/directory/snickers/branches/encoder-redesign/ber-codec/src/java/org/apache/snickers/ber/DeterminateLengthVisitor.java (original)
+++ incubator/directory/snickers/branches/encoder-redesign/ber-codec/src/java/org/apache/snickers/ber/DeterminateLengthVisitor.java Sun Aug 22 16:21:55 2004
@@ -17,6 +17,7 @@
package org.apache.snickers.ber;
+import java.util.Iterator;
import java.util.ArrayList;
@@ -36,6 +37,21 @@
*/
public void visit( TupleNode node )
{
+ /*
+ * Because of a recursive depth first descent driving the
+ * calculation of indeterminate child sizes we just need to
+ * add the sizes of all the child nodes to find the determinate
+ * length and set it for the tuple.
+ */
+ int length = 0;
+ Iterator children = node.getChildren();
+ while ( children.hasNext() )
+ {
+ Tuple tlv = ( ( TupleNode ) children.next() ).getTuple() ;
+ length += tlv.size();
+ }
+
+ node.getTuple().setValueLength( length );
System.out.println( node );
}
@@ -48,7 +64,7 @@
*/
public boolean canVisit( TupleNode node )
{
- return true;
+ return node.getTuple().isIndefinate();
}