- /*
- * Copyright 1999-2004 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /*
- * $Id: XBoolean.java,v 1.16 2004/02/17 04:34:38 minchau Exp $
- */
- package com.sun.org.apache.xpath.internal.objects;
-
- /**
- * This class represents an XPath boolean object, and is capable of
- * converting the boolean to other types, such as a string.
- * @xsl.usage advanced
- */
- public class XBoolean extends XObject
- {
-
- /**
- * A true boolean object so we don't have to keep creating them.
- * @xsl.usage internal
- */
- public static XBoolean S_TRUE = new XBooleanStatic(true);
-
- /**
- * A true boolean object so we don't have to keep creating them.
- * @xsl.usage internal
- */
- public static XBoolean S_FALSE = new XBooleanStatic(false);
-
- /** Value of the object.
- * @serial */
- boolean m_val;
-
- /**
- * Construct a XBoolean object.
- *
- * @param b Value of the boolean object
- */
- public XBoolean(boolean b)
- {
-
- super();
-
- m_val = b;
- }
-
- /**
- * Construct a XBoolean object.
- *
- * @param b Value of the boolean object
- */
- public XBoolean(Boolean b)
- {
-
- super();
-
- m_val = b.booleanValue();
- m_obj = b;
- }
-
-
- /**
- * Tell that this is a CLASS_BOOLEAN.
- *
- * @return type of CLASS_BOOLEAN
- */
- public int getType()
- {
- return CLASS_BOOLEAN;
- }
-
- /**
- * Given a request type, return the equivalent string.
- * For diagnostic purposes.
- *
- * @return type string "#BOOLEAN"
- */
- public String getTypeString()
- {
- return "#BOOLEAN";
- }
-
- /**
- * Cast result object to a number.
- *
- * @return numeric value of the object value
- */
- public double num()
- {
- return m_val ? 1.0 : 0.0;
- }
-
- /**
- * Cast result object to a boolean.
- *
- * @return The object value as a boolean
- */
- public boolean bool()
- {
- return m_val;
- }
-
- /**
- * Cast result object to a string.
- *
- * @return The object's value as a string
- */
- public String str()
- {
- return m_val ? "true" : "false";
- }
-
- /**
- * Return a java object that's closest to the representation
- * that should be handed to an extension.
- *
- * @return The object's value as a java object
- */
- public Object object()
- {
- if(null == m_obj)
- m_obj = new Boolean(m_val);
- return m_obj;
- }
-
- /**
- * Tell if two objects are functionally equal.
- *
- * @param obj2 Object to compare to this
- *
- * @return True if the two objects are equal
- *
- * @throws javax.xml.transform.TransformerException
- */
- public boolean equals(XObject obj2)
- {
-
- // In order to handle the 'all' semantics of
- // nodeset comparisons, we always call the
- // nodeset function.
- if (obj2.getType() == XObject.CLASS_NODESET)
- return obj2.equals(this);
-
- try
- {
- return m_val == obj2.bool();
- }
- catch(javax.xml.transform.TransformerException te)
- {
- throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(te);
- }
- }
-
- }