#include "../config/pathan_config.h" /* * Copyright (c) 2001, DecisionSoft Limited All rights reserved. * Please see LICENSE.TXT for more information. */ #include #include #include #include "../exceptions/MiscException.hpp" #include #include #include ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// DataItemTreatAs::DataItemTreatAs(DataItem* expr, SequenceType* exprType, XPath2MemoryManager* memMgr) : DataItemImpl(memMgr), _expr(expr), _exprType(exprType) { setType(DataItem::TREAT_AS); } Sequence DataItemTreatAs::collapseTreeInternal(DynamicContext* context, int flags) const { Sequence toBeCasted(_expr->collapseTree(context)); if(_exprType->matches(toBeCasted,context)) return toBeCasted; DSLthrow(MiscException,X("DataItemTreatAs::collapseTreeInternal"),X("The value does not match the required type [err:XP0006]")); // cannot reach this return Sequence(context->getMemoryManager()); } DataItem* DataItemTreatAs::staticResolution(StaticContext *context, StaticResolutionContext *src) { return resolveDataItem(_expr, context, src, true); } const DataItem *DataItemTreatAs::getExpression() const { return _expr; } const SequenceType *DataItemTreatAs::getSequenceType() const { return _exprType; } void DataItemTreatAs::setExpression(DataItem *item) { _expr = item; }