iicm.vrml.pw
Class VRMLparser

java.lang.Object
  extended by iicm.vrml.pw.VRMLparser

public class VRMLparser
extends java.lang.Object

VRMLparser - VRML parser class Copyright (c) 1996,97 IICM

Version:
0.5, changed: 31 Jan 97
Author:
Michael Pichler, Karin Roschker

Field Summary
(package private)  ProtoNode curproto
          current PROTO node for reading IS fields
private static int HDR_MAXLEN
           
private static int HDR_VRML_1_0
           
private static int HDR_VRML_2_0
           
(package private) static HeaderInfo[] headers
          recognized header lines
(package private)  StrTokenizer istok
          input stream tokenizer
private  java.util.Hashtable nodeNames
           
(package private)  ParserOutput pout
          callbacks for parser messages
private  java.util.Hashtable protoNodes
           
private  float version
           
 
Constructor Summary
VRMLparser(java.io.InputStream input)
          create VRMLparser for specific input stream to read from.
VRMLparser(java.io.InputStream input, ParserOutput po)
          VRMLparser constructor with message callbacks
 
Method Summary
(package private)  void addProtoNode(java.lang.String pname, ProtoNode pnode)
          add a PROTO node name
(package private)  void addReference(java.lang.String refname, Node node)
          add node reference (DEF)
 java.util.Hashtable getNodeNames()
           
(package private)  ProtoNode getProtoNode(java.lang.String name)
          get a PROTO node name
(package private)  Node getReference(java.lang.String name)
          get node reference (USE)
 float getVersion()
          get VRML version; only valid after checkHeader or setVersion
 boolean isMovingWorlds()
          this parser is currently designed for VRML 2.0 only; this method could be used to distinguish Moving World Scenes from VRML 1.0
 GroupNode readBody()
          read VRML body should not be called before readHeader or setVersion
 float readHeader()
          check header of VRML data stream
 GroupNode readStream()
          parse complete VRML stream (header + body)
 void setVersion(float ver)
          set VRML version for headerless VRML stream
 void writeHeader(java.io.PrintStream os)
          write VRML header line
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

headers

static final HeaderInfo[] headers
recognized header lines


HDR_VRML_1_0

private static final int HDR_VRML_1_0
See Also:
Constant Field Values

HDR_VRML_2_0

private static final int HDR_VRML_2_0
See Also:
Constant Field Values

HDR_MAXLEN

private static int HDR_MAXLEN

istok

StrTokenizer istok
input stream tokenizer


pout

ParserOutput pout
callbacks for parser messages


curproto

ProtoNode curproto
current PROTO node for reading IS fields


version

private float version

nodeNames

private java.util.Hashtable nodeNames

protoNodes

private java.util.Hashtable protoNodes
Constructor Detail

VRMLparser

public VRMLparser(java.io.InputStream input)
create VRMLparser for specific input stream to read from. (underlying parser buffers input stream itself.) Note: will not return before 1st byte of InputStream is read (blocks)


VRMLparser

public VRMLparser(java.io.InputStream input,
                  ParserOutput po)
VRMLparser constructor with message callbacks

Method Detail

setVersion

public void setVersion(float ver)
set VRML version for headerless VRML stream


getVersion

public float getVersion()
get VRML version; only valid after checkHeader or setVersion


isMovingWorlds

public boolean isMovingWorlds()
this parser is currently designed for VRML 2.0 only; this method could be used to distinguish Moving World Scenes from VRML 1.0

Returns:
flag, whether data is in Moving Worlds (VRML 2.0) format

addReference

void addReference(java.lang.String refname,
                  Node node)
add node reference (DEF)


getReference

Node getReference(java.lang.String name)
get node reference (USE)


addProtoNode

void addProtoNode(java.lang.String pname,
                  ProtoNode pnode)
add a PROTO node name


getProtoNode

ProtoNode getProtoNode(java.lang.String name)
get a PROTO node name


readStream

public GroupNode readStream()
parse complete VRML stream (header + body)

Returns:
root node
See Also:
readHeader(), readBody()

readHeader

public float readHeader()
check header of VRML data stream

Returns:
VRML version identifier or 0 on failure

readBody

public GroupNode readBody()
read VRML body should not be called before readHeader or setVersion


writeHeader

public void writeHeader(java.io.PrintStream os)
write VRML header line


getNodeNames

public java.util.Hashtable getNodeNames()