Examples of AtomicType


Examples of net.sf.saxon.type.AtomicType

        public boolean subsumes(ItemType other) {
            net.sf.saxon.type.ItemType otherType = other.getUnderlyingItemType();
            if (!(otherType.isAtomicType())) {
                return false;
            }
            AtomicType type = (AtomicType)otherType;
            return subsumesUnderlyingType(type);
        }
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

                case Type.UNSIGNED_LONG:
                case Type.UNSIGNED_INT:
                case Type.UNSIGNED_SHORT:
                case Type.UNSIGNED_BYTE:
                    NumericValue iv = IntegerValue.stringToInteger(value);
                    AtomicType subtype = (AtomicType) BuiltInSchemaFactory.getSchemaType(requiredType);
                    if (iv instanceof IntegerValue) {
                        ((IntegerValue)iv).setSubType(subtype);
                        return iv;
                    } else {
                        return DerivedAtomicValue.makeValue(iv, value.toString(), subtype, true);
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

            return false;
        }
        if (uri.equals(NamespaceConstant.SCHEMA) || uri.equals(NamespaceConstant.SCHEMA_DATATYPES)
                || uri.equals(NamespaceConstant.XDT)) {

            AtomicType type = (AtomicType)Type.getBuiltInItemType(uri, local);
            return type != null;
        }

        SchemaType st = config.getSchemaType(fingerprint);
        return (st != null && st instanceof AtomicType);
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

                || uri.equals(NamespaceConstant.XDT)) {
            // it's a constructor function: treat it as shorthand for a cast expression
            if (arguments.length != 1) {
                throw new StaticError("A constructor function must have exactly one argument");
            }
            AtomicType type = (AtomicType)Type.getBuiltInItemType(uri, localName);
            if (type==null) {
                return new ErrorExpression(
                            new DynamicError("Unknown constructor function: " + localName));
            }
            return new CastExpression(arguments[0], type, false);
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

        operand0 = TypeChecker.staticTypeCheck(operand0, optionalAtomic, false, role0, env);

        RoleLocator role1 = new RoleLocator(RoleLocator.BINARY_EXPR, Token.tokens[operator], 1);
        operand1 = TypeChecker.staticTypeCheck(operand1, optionalAtomic, false, role1, env);

        AtomicType t1 = operand0.getItemType().getAtomizedItemType();
        AtomicType t2 = operand1.getItemType().getAtomizedItemType();

        int p1 = t1.getPrimitiveType();
        if (p1 == Type.UNTYPED_ATOMIC) {
            p1 = Type.STRING;
        }
        int p2 = t2.getPrimitiveType();
        if (p2 == Type.UNTYPED_ATOMIC) {
            p2 = Type.STRING;
        }

        if (!Type.isComparable(p1, p2)) {
            boolean opt0 = Cardinality.allowsZero(operand0.getCardinality());
            boolean opt1 = Cardinality.allowsZero(operand1.getCardinality());
            if (opt0 || opt1) {
                // This is a comparison such as (xs:integer? eq xs:date?). This is almost
                // certainly an error, but we need to let it through because it will work if
                // one of the operands is an empty sequence.
                try {
                    String which = null;
                    if (opt0) which = "the first operand is";
                    if (opt1) which = "the second operand is";
                    if (opt0 && opt1) which = "one or both operands are";
                    env.issueWarning(
                            "Comparison of " + t1.toString(env.getNamePool()) + (opt0?"?":"") + " to " + t2.toString(env.getNamePool()) +
                            (opt1?"?":"") + " will fail unless " + which + " empty");
                } catch (Exception err) {}
            } else {
                StaticError err =
                    new StaticError("Cannot compare " + t1.toString(env.getNamePool()) +
                                              " to " + t2.toString(env.getNamePool()));
                err.setIsTypeError(true);
                throw err;
            }
        }
        if (!(operator == Token.FEQ || operator == Token.FNE)) {
            if (!Type.isOrdered(p1)) {
                StaticError err = new StaticError(
                        "Type " + t1.toString(env.getNamePool()) + " is not an ordered type");
                err.setIsTypeError(true);
                throw err;
            }
            if (!Type.isOrdered(p2)) {
                StaticError err = new StaticError(
                        "Type " + t2.toString(env.getNamePool()) + " is not an ordered type");
                err.setIsTypeError(true);
                throw err;
            }
        }
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

            return false;
        }
        String uri = functionName.getNamespaceURI();
        String local = functionName.getLocalName();
        if (uri.equals(NamespaceConstant.SCHEMA)) {
            AtomicType type = (AtomicType)Type.getBuiltInItemType(uri, local);
            return type != null && type.getFingerprint() != StandardNames.XS_NOTATION;
        }

        int fingerprint = config.getNamePool().getFingerprint(uri, local);
        if (fingerprint == -1) {
            return false;
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

        if (builtInNamespace) {
            // it's a constructor function: treat it as shorthand for a cast expression
            if (arguments.length != 1) {
                throw new XPathException("A constructor function must have exactly one argument");
            }
            AtomicType type = (AtomicType)Type.getBuiltInItemType(targetURI, localName);
            if (type==null || type.getFingerprint() == StandardNames.XS_ANY_ATOMIC_TYPE ||
                    type.getFingerprint() == StandardNames.XS_NOTATION) {
                XPathException err = new XPathException("Unknown constructor function: {" + uri + '}' + localName);
                err.setErrorCode("XPST0017");
                err.setIsStaticError(true);
                throw err;
            }
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

    public ItemType getItemType(XdmItem item) {
        Configuration config = processor.getUnderlyingConfiguration();
        if (item.isAtomicValue()) {
            AtomicValue value = (AtomicValue)item.getUnderlyingValue();

            AtomicType type = (AtomicType)value.getItemType(config.getTypeHierarchy());
            return new ItemType(type, processor);
        } else {
            NodeInfo node = (NodeInfo)item.getUnderlyingValue();
            int kind = node.getNodeKind();
            int fp = node.getFingerprint();
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

                    return new QNameValue("xs", NamespaceConstant.SCHEMA, "untypedAtomic");
                }
            }
            return new QNameValue(context.getNamePool(), code);
        } else {
            AtomicType label = ((AtomicValue)item).getTypeLabel();
            return new QNameValue(context.getNamePool(), label.getNameCode());
        }
    }
View Full Code Here

Examples of net.sf.saxon.type.AtomicType

        operand0 = TypeChecker.staticTypeCheck(operand0, atomicType, false, role0, visitor);
        final ItemType itemType0 = operand0.getItemType(th);
        if (itemType0 instanceof EmptySequenceTest) {
            return new Literal(EmptySequence.getInstance());
        }
        AtomicType type0 = (AtomicType) itemType0.getPrimitiveItemType();
        if (type0.getFingerprint() == StandardNames.XS_UNTYPED_ATOMIC) {
            operand0 = new UntypedAtomicConverter(operand0, BuiltInAtomicType.DOUBLE, true);
            type0 = BuiltInAtomicType.DOUBLE;
        } else if (!(operand0 instanceof UntypedAtomicConverter) &&
                th.relationship(type0, BuiltInAtomicType.UNTYPED_ATOMIC) != TypeHierarchy.DISJOINT) {
            operand0 = new UntypedAtomicConverter(operand0, BuiltInAtomicType.DOUBLE, false);
            type0 = (AtomicType)operand0.getItemType(th);
        }

        // System.err.println("First operand"); operand0.display(10);

        RoleLocator role1 = new RoleLocator(RoleLocator.BINARY_EXPR, Token.tokens[operator], 1, null);
        role1.setSourceLocator(this);
        operand1 = TypeChecker.staticTypeCheck(operand1, atomicType, false, role1, visitor);
        final ItemType itemType1 = operand1.getItemType(th);
        if (itemType1 instanceof EmptySequenceTest) {
            return new Literal(EmptySequence.getInstance());
        }
        AtomicType type1 = (AtomicType)itemType1.getPrimitiveItemType();
        if (type1.getFingerprint() == StandardNames.XS_UNTYPED_ATOMIC) {
            operand1 = new UntypedAtomicConverter(operand1, BuiltInAtomicType.DOUBLE, true);
            type1 = BuiltInAtomicType.DOUBLE;
        } else if (!(operand1 instanceof UntypedAtomicConverter) &&
                th.relationship(type1, BuiltInAtomicType.UNTYPED_ATOMIC) != TypeHierarchy.DISJOINT) {
            operand1 = new UntypedAtomicConverter(operand1, BuiltInAtomicType.DOUBLE, false);
            type1 = (AtomicType)operand1.getItemType(th);
        }

        if (operand0 != oldOp0) {
            adoptChildExpression(operand0);
        }

        if (operand1 != oldOp1) {
            adoptChildExpression(operand1);
        }

        if (Literal.isEmptySequence(operand0) ||
                Literal.isEmptySequence(operand1)) {
            return new Literal(EmptySequence.getInstance());
        }

        if (type0.isExternalType() || type1.isExternalType()) {
            XPathException de = new XPathException("Arithmetic operators are not defined for external objects");
            de.setLocator(this);
            de.setErrorCode("XPTY0004");
            throw de;
        }

        if (operator == Token.NEGATE) {
            if (operand1 instanceof Literal && ((Literal)operand1).getValue() instanceof NumericValue) {
                NumericValue nv = (NumericValue)((Literal)operand1).getValue();
                return new Literal(nv.negate());
            } else {
                NegateExpression ne = new NegateExpression(operand1);
                ne.setBackwardsCompatible(false);
                return visitor.typeCheck(ne, contextItemType);
            }
        }

        // Get a calculator to implement the arithmetic operation. If the types are not yet specifically known,
        // we allow this to return an "ANY" calculator which defers the decision. However, we only allow this if
        // at least one of the operand types is AnyAtomicType or (otherwise unspecified) numeric.

        boolean mustResolve = !(type0.equals(BuiltInAtomicType.ANY_ATOMIC) || type1.equals(BuiltInAtomicType.ANY_ATOMIC)
                || type0.equals(BuiltInAtomicType.NUMERIC) || type1.equals(BuiltInAtomicType.NUMERIC));

        calculator = Calculator.getCalculator(
                type0.getFingerprint(), type1.getFingerprint(), mapOpCode(operator), mustResolve);

        if (calculator == null) {
            XPathException de = new XPathException("Arithmetic operator is not defined for arguments of types (" +
                    type0.getDescription() + ", " + type1.getDescription() + ")");
            de.setLocator(this);
            de.setErrorCode("XPTY0004");
            throw de;
        }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.