KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > org > apache > xerces > internal > impl > dtd > models > CMAny


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
6  * reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Xerces" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 1999, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package com.sun.org.apache.xerces.internal.impl.dtd.models;
59
60
61 /**
62  * Content model any node.
63  *
64  * @version $Id: CMAny.java,v 1.3 2003/05/08 20:11:55 elena Exp $
65  */

66 public class CMAny
67     extends CMNode {
68
69     //
70
// Data
71
//
72

73     /**
74      * The any content model type. This value is one of the following:
75      * XMLContentSpec.CONTENTSPECNODE_ANY,
76      * XMLContentSpec.CONTENTSPECNODE_ANY_OTHER,
77      * XMLContentSpec.CONTENTSPECNODE_ANY_LOCAL.
78      */

79     private int fType;
80
81     /**
82      * URI of the any content model. This value is set if the type is
83      * of the following:
84      * XMLContentSpec.CONTENTSPECNODE_ANY,
85      * XMLContentSpec.CONTENTSPECNODE_ANY_OTHER.
86      */

87     private String JavaDoc fURI;
88
89     /**
90      * Part of the algorithm to convert a regex directly to a DFA
91      * numbers each leaf sequentially. If its -1, that means its an
92      * epsilon node. Zero and greater are non-epsilon positions.
93      */

94     private int fPosition = -1;
95
96     //
97
// Constructors
98
//
99

100     /** Constructs a content model any. */
101     public CMAny(int type, String JavaDoc uri, int position) {
102         super(type);
103
104         // Store the information
105
fType = type;
106         fURI = uri;
107         fPosition = position;
108     }
109
110     //
111
// Package methods
112
//
113

114     final int getType() {
115         return fType;
116     }
117
118     final String JavaDoc getURI() {
119         return fURI;
120     }
121
122     final int getPosition()
123     {
124         return fPosition;
125     }
126
127     final void setPosition(int newPosition)
128     {
129         fPosition = newPosition;
130     }
131
132     //
133
// CMNode methods
134
//
135

136     // package
137

138     public boolean isNullable()
139     {
140         // Leaf nodes are never nullable unless its an epsilon node
141
return (fPosition == -1);
142     }
143
144     public String JavaDoc toString()
145     {
146         StringBuffer JavaDoc strRet = new StringBuffer JavaDoc();
147         strRet.append("(");
148         strRet.append("##any:uri=");
149         strRet.append(fURI);
150         strRet.append(')');
151         if (fPosition >= 0)
152         {
153             strRet.append
154             (
155                 " (Pos:"
156                 + new Integer JavaDoc(fPosition).toString()
157                 + ")"
158             );
159         }
160         return strRet.toString();
161     }
162
163     // protected
164

165     protected void calcFirstPos(CMStateSet toSet)
166     {
167         // If we are an epsilon node, then the first pos is an empty set
168
if (fPosition == -1)
169             toSet.zeroBits();
170
171         // Otherwise, its just the one bit of our position
172
else
173             toSet.setBit(fPosition);
174     }
175
176     protected void calcLastPos(CMStateSet toSet)
177     {
178         // If we are an epsilon node, then the last pos is an empty set
179
if (fPosition == -1)
180             toSet.zeroBits();
181
182         // Otherwise, its just the one bit of our position
183
else
184             toSet.setBit(fPosition);
185     }
186
187 } // class CMAny
188

189
Popular Tags