home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / text / html / parser / DTD.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  7.1 KB  |  276 lines

  1. package javax.swing.text.html.parser;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.IOException;
  5. import java.util.BitSet;
  6. import java.util.Hashtable;
  7. import java.util.StringTokenizer;
  8. import java.util.Vector;
  9.  
  10. public class DTD implements DTDConstants {
  11.    public String name;
  12.    public Vector elements = new Vector();
  13.    public Hashtable elementHash = new Hashtable();
  14.    public Hashtable entityHash = new Hashtable();
  15.    public final Element pcdata = this.getElement("#pcdata");
  16.    public final Element html = this.getElement("html");
  17.    public final Element meta = this.getElement("meta");
  18.    public final Element base = this.getElement("base");
  19.    public final Element isindex = this.getElement("isindex");
  20.    public final Element head = this.getElement("head");
  21.    public final Element body = this.getElement("body");
  22.    public final Element applet = this.getElement("applet");
  23.    public final Element param = this.getElement("param");
  24.    // $FF: renamed from: p javax.swing.text.html.parser.Element
  25.    public final Element field_0 = this.getElement("p");
  26.    public final Element title = this.getElement("title");
  27.    public static int FILE_VERSION = 1;
  28.    static Hashtable dtdHash = new Hashtable();
  29.  
  30.    protected DTD(String var1) {
  31.       this.name = var1;
  32.       this.defEntity("#RE", 65536, 13);
  33.       this.defEntity("#RS", 65536, 10);
  34.       this.defEntity("#SPACE", 65536, 32);
  35.       this.defineElement("unknown", 17, false, true, (ContentModel)null, (BitSet)null, (BitSet)null, (AttributeList)null);
  36.    }
  37.  
  38.    protected AttributeList defAttributeList(String var1, int var2, int var3, String var4, String var5, AttributeList var6) {
  39.       Vector var7 = null;
  40.       if (var5 != null) {
  41.          var7 = new Vector();
  42.          StringTokenizer var8 = new StringTokenizer(var5, "|");
  43.  
  44.          while(var8.hasMoreTokens()) {
  45.             String var9 = var8.nextToken();
  46.             if (var9.length() > 0) {
  47.                var7.addElement(var9);
  48.             }
  49.          }
  50.       }
  51.  
  52.       return new AttributeList(var1, var2, var3, var4, var7, var6);
  53.    }
  54.  
  55.    protected ContentModel defContentModel(int var1, Object var2, ContentModel var3) {
  56.       return new ContentModel(var1, var2, var3);
  57.    }
  58.  
  59.    protected Element defElement(String var1, int var2, boolean var3, boolean var4, ContentModel var5, String[] var6, String[] var7, AttributeList var8) {
  60.       BitSet var9 = null;
  61.       if (var6 != null && var6.length > 0) {
  62.          var9 = new BitSet();
  63.  
  64.          for(int var10 = 0; var10 < var6.length; ++var10) {
  65.             String var11 = var6[var10];
  66.             if (var11.length() > 0) {
  67.                var9.set(this.getElement(var11).getIndex());
  68.             }
  69.          }
  70.       }
  71.  
  72.       BitSet var13 = null;
  73.       if (var7 != null && var7.length > 0) {
  74.          var13 = new BitSet();
  75.  
  76.          for(int var14 = 0; var14 < var7.length; ++var14) {
  77.             String var12 = var7[var14];
  78.             if (var12.length() > 0) {
  79.                var13.set(this.getElement(var12).getIndex());
  80.             }
  81.          }
  82.       }
  83.  
  84.       return this.defineElement(var1, var2, var3, var4, var5, var9, var13, var8);
  85.    }
  86.  
  87.    public Entity defEntity(String var1, int var2, int var3) {
  88.       char[] var4 = new char[]{(char)var3};
  89.       return this.defineEntity(var1, var2, var4);
  90.    }
  91.  
  92.    protected Entity defEntity(String var1, int var2, String var3) {
  93.       int var4 = var3.length();
  94.       char[] var5 = new char[var4];
  95.       var3.getChars(0, var4, var5, 0);
  96.       return this.defineEntity(var1, var2, var5);
  97.    }
  98.  
  99.    public void defineAttributes(String var1, AttributeList var2) {
  100.       Element var3 = this.getElement(var1);
  101.       var3.atts = var2;
  102.    }
  103.  
  104.    public Element defineElement(String var1, int var2, boolean var3, boolean var4, ContentModel var5, BitSet var6, BitSet var7, AttributeList var8) {
  105.       Element var9 = this.getElement(var1);
  106.       var9.type = var2;
  107.       var9.oStart = var3;
  108.       var9.oEnd = var4;
  109.       var9.content = var5;
  110.       var9.exclusions = var6;
  111.       var9.inclusions = var7;
  112.       var9.atts = var8;
  113.       return var9;
  114.    }
  115.  
  116.    public Entity defineEntity(String var1, int var2, char[] var3) {
  117.       Entity var4 = (Entity)this.entityHash.get(var1);
  118.       if (var4 == null) {
  119.          var4 = new Entity(var1, var2, var3);
  120.          this.entityHash.put(var1, var4);
  121.          if ((var2 & 65536) != 0 && var3.length == 1) {
  122.             switch (var2 & -65537) {
  123.                case 1:
  124.                case 11:
  125.                   this.entityHash.put(new Integer(var3[0]), var4);
  126.             }
  127.          }
  128.       }
  129.  
  130.       return var4;
  131.    }
  132.  
  133.    boolean elementExists(String var1) {
  134.       Element var2 = (Element)this.elementHash.get(var1);
  135.       return var2 != null;
  136.    }
  137.  
  138.    public static DTD getDTD(String var0) throws IOException {
  139.       var0 = var0.toLowerCase();
  140.       DTD var1 = (DTD)dtdHash.get(var0);
  141.       if (var1 == null) {
  142.          var1 = new DTD(var0);
  143.       }
  144.  
  145.       return var1;
  146.    }
  147.  
  148.    public Element getElement(int var1) {
  149.       return (Element)this.elements.elementAt(var1);
  150.    }
  151.  
  152.    public Element getElement(String var1) {
  153.       Element var2 = (Element)this.elementHash.get(var1);
  154.       if (var2 == null) {
  155.          var2 = new Element(var1, this.elements.size());
  156.          this.elements.addElement(var2);
  157.          this.elementHash.put(var1, var2);
  158.       }
  159.  
  160.       return var2;
  161.    }
  162.  
  163.    public Entity getEntity(int var1) {
  164.       return (Entity)this.entityHash.get(new Integer(var1));
  165.    }
  166.  
  167.    public Entity getEntity(String var1) {
  168.       return (Entity)this.entityHash.get(var1);
  169.    }
  170.  
  171.    public String getName() {
  172.       return this.name;
  173.    }
  174.  
  175.    public static void putDTDHash(String var0, DTD var1) {
  176.       dtdHash.put(var0, var1);
  177.    }
  178.  
  179.    public void read(DataInputStream var1) throws IOException {
  180.       var1.readInt();
  181.       int var10000 = FILE_VERSION;
  182.       String[] var2 = new String[var1.readShort()];
  183.  
  184.       for(int var3 = 0; var3 < var2.length; ++var3) {
  185.          var2[var3] = var1.readUTF();
  186.       }
  187.  
  188.       short var4 = var1.readShort();
  189.  
  190.       for(int var5 = 0; var5 < var4; ++var5) {
  191.          short var6 = var1.readShort();
  192.          byte var7 = var1.readByte();
  193.          String var8 = var1.readUTF();
  194.          this.defEntity(var2[var6], var7 | 65536, var8);
  195.       }
  196.  
  197.       var4 = var1.readShort();
  198.  
  199.       for(int var15 = 0; var15 < var4; ++var15) {
  200.          short var16 = var1.readShort();
  201.          byte var17 = var1.readByte();
  202.          byte var9 = var1.readByte();
  203.          ContentModel var10 = this.readContentModel(var1, var2);
  204.          String[] var11 = this.readNameArray(var1, var2);
  205.          String[] var12 = this.readNameArray(var1, var2);
  206.          AttributeList var13 = this.readAttributeList(var1, var2);
  207.          this.defElement(var2[var16], var17, (var9 & 1) != 0, (var9 & 2) != 0, var10, var11, var12, var13);
  208.       }
  209.  
  210.    }
  211.  
  212.    private AttributeList readAttributeList(DataInputStream var1, String[] var2) throws IOException {
  213.       AttributeList var3 = null;
  214.  
  215.       for(int var4 = var1.readByte(); var4 > 0; --var4) {
  216.          short var5 = var1.readShort();
  217.          byte var6 = var1.readByte();
  218.          byte var7 = var1.readByte();
  219.          short var8 = var1.readShort();
  220.          String var9 = var8 == -1 ? null : var2[var8];
  221.          Vector var10 = null;
  222.          short var11 = var1.readShort();
  223.          if (var11 > 0) {
  224.             var10 = new Vector(var11);
  225.  
  226.             for(int var12 = 0; var12 < var11; ++var12) {
  227.                var10.addElement(var2[var1.readShort()]);
  228.             }
  229.          }
  230.  
  231.          var3 = new AttributeList(var2[var5], var6, var7, var9, var10, var3);
  232.       }
  233.  
  234.       return var3;
  235.    }
  236.  
  237.    private ContentModel readContentModel(DataInputStream var1, String[] var2) throws IOException {
  238.       byte var3 = var1.readByte();
  239.       switch (var3) {
  240.          case 0:
  241.             return null;
  242.          case 1:
  243.             byte var7 = var1.readByte();
  244.             ContentModel var8 = this.readContentModel(var1, var2);
  245.             ContentModel var9 = this.readContentModel(var1, var2);
  246.             return this.defContentModel(var7, var8, var9);
  247.          case 2:
  248.             byte var4 = var1.readByte();
  249.             Element var5 = this.getElement(var2[var1.readShort()]);
  250.             ContentModel var6 = this.readContentModel(var1, var2);
  251.             return this.defContentModel(var4, var5, var6);
  252.          default:
  253.             throw new IOException("bad bdtd");
  254.       }
  255.    }
  256.  
  257.    private String[] readNameArray(DataInputStream var1, String[] var2) throws IOException {
  258.       short var3 = var1.readShort();
  259.       if (var3 == 0) {
  260.          return null;
  261.       } else {
  262.          String[] var4 = new String[var3];
  263.  
  264.          for(int var5 = 0; var5 < var3; ++var5) {
  265.             var4[var5] = var2[var1.readShort()];
  266.          }
  267.  
  268.          return var4;
  269.       }
  270.    }
  271.  
  272.    public String toString() {
  273.       return this.name;
  274.    }
  275. }
  276.