예제 #1
0
MAPM XQNumericLiteral::getValue() const
{
  // Use the C API to copy our fake MAPM
  MAPM copy;
  m_apm_copy(const_cast<M_APM>(copy.c_struct()), const_cast<M_APM>(&value_));
  return copy;
}
예제 #2
0
XQNumericLiteral::XQNumericLiteral(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &value,
                                   AnyAtomicType::AtomicObjectType primitiveType, XPath2MemoryManager* memMgr)
  : ASTNodeImpl(NUMERIC_LITERAL, memMgr),
    typeURI_(typeURI),
    typeName_(typeName),
    primitiveType_(primitiveType)
{
  _src.getStaticType() = StaticType::create(primitiveType_);

  memset(&value_, 0, sizeof(value_));

  const M_APM cval = value.c_struct();

  value_.m_apm_datalength = cval->m_apm_datalength;
  value_.m_apm_exponent = cval->m_apm_exponent;
  value_.m_apm_sign = cval->m_apm_sign;

  int len = (cval->m_apm_datalength + 1) >> 1;
  value_.m_apm_data = (UCHAR*)memMgr->allocate(len);

  memcpy(value_.m_apm_data, cval->m_apm_data, len);
}