コード例 #1
0
TypeContainer*
TypeContainer::getAttributeContainer(std::string elemName,
                                     bool create)
{
  TypeContainer *container = 0;
  if ((container = attributeContainers_[elemName]) != 0)
    return container;
  if (!create)
    return container;

  /*
    Create and return a Type Container
  */
  const XSDType *pType = sParser_->getType(typeId_);
  if (pType != 0 && !pType->isSimple())
    {
      ComplexType *cType = (ComplexType *) pType;
      for (int i = 0; i < cType->getNumAttributes(); i++)
        {
          if (cType->getAttributeName(i) == elemName)
            {
              container =
                new TypeContainer(cType->getAttributeType(i), sParser_);
              tcTable.push_back(container);
              break;
            }
        }
    }
  attributeContainers_[elemName] = container;
  return container;
}
コード例 #2
0
ファイル: parser.cpp プロジェクト: cornelius/kode
void Parser::parseCompositor( ParserContext *context,
  const QDomElement &element, ComplexType &ct )
{
  QName name = element.tagName();
  bool isChoice = name.localName() == "choice";
  bool isSequence = name.localName() == "sequence";

  Compositor compositor;
  if ( isChoice ) compositor.setType( Compositor::Choice );
  else if ( isSequence ) compositor.setType( Compositor::Sequence );

  if ( isChoice || isSequence ) {
    Element::List newElements;

    QDomElement childElement = element.firstChildElement();

    while ( !childElement.isNull() ) {
      QName csName = childElement.tagName();
      if ( csName.localName() == "element" ) {
        Element newElement;
        if ( isChoice ) {
          newElement = parseElement( context, childElement,
            ct.nameSpace(), element );
        } else {
          if ( isSequence ) {
            // occurence attributes can be either in the
            // parent (sequence) to on the current element
            if ( childElement.hasAttribute("minOccurs") ||
                 childElement.hasAttribute("maxOccurs")) {
              newElement = parseElement( context, childElement,
                ct.nameSpace(), childElement );
            } else {
              newElement = parseElement( context, childElement,
                ct.nameSpace(), element );
            }
          } else {
            newElement = parseElement( context, childElement,
              ct.nameSpace(), childElement );
          }
        }
        newElements.append( newElement );
        compositor.addChild( csName );
      } else if ( csName.localName() == "any" ) {
        addAny( context, childElement, ct );
      } else if ( isChoice ) {
        parseCompositor( context, childElement, ct );
      } else if ( isSequence ) {
        parseCompositor( context, childElement, ct );
      }

      childElement = childElement.nextSiblingElement();
    }

    foreach( Element e, newElements ) {
      e.setCompositor( compositor );
      ct.addElement( e );
    }
コード例 #3
0
void MapEncoder::addKeyDate( UInt16 year, UInt8 month, UInt8 day, MapEntry::MapAction action,
	const ComplexType& value, const EmaBuffer& permissionData )
{
	RsslDate date;
	date.year = year;
	date.month = month;
	date.day = day;

	if ( RSSL_FALSE == rsslDateIsValid( &date ) )
	{
		EmaString temp( "Attempt to specify invalid date. Passed in value is='" );
		temp.append( (UInt32)month ).append( " / " ).
			append( (UInt32)day ).append( " / " ).
			append( (UInt32)year ).append( "'." );
		throwOorException( temp );
		return;
	}

	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_DATE, rsslDataType, value.getDataType(), "addKeyDate()");
	
	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &date, action, permissionData, "addKeyDate()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &date, action, value, permissionData, "addKeyDate()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &date, action, value, permissionData, "addKeyDate()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &date, action, permissionData, "addKeyDate()" );
	}
}
コード例 #4
0
ファイル: typestable.cpp プロジェクト: serghei/kde3-kdepim
void TypesTable::resolveForwardElementRefs(const QString &name, Element &element)
{
    for(int i = 0; i < (int)mTypes.count(); i++)
        if(mTypes[i] != 0)
        {
            if(!mTypes[i]->isSimple())
            {
                ComplexType *ct = (ComplexType *)mTypes[i];
                ct->matchElementRef(name, element);
            }
        }
}
コード例 #5
0
ファイル: typestable.cpp プロジェクト: serghei/kde3-kdepim
void TypesTable::resolveForwardAttributeRefs(const QString &name, Attribute &attribute)
{
    for(int i = 0; i < (int)mTypes.count(); i++)
        if(mTypes[i] != 0)
        {
            if(!mTypes[i]->isSimple())
            {
                ComplexType *ct = (ComplexType *)mTypes[i];
                ct->matchAttributeRef(name, attribute);
            }
        }
}
コード例 #6
0
ファイル: ComplexVector.cpp プロジェクト: DanNixon/mantid
/// set an element
/// @param i :: The element index
/// @param value :: The new value
void ComplexVector::set(size_t i, const ComplexType &value) {
  if (i < m_vector->size) {
    gsl_vector_complex_set(m_vector, i,
                           gsl_complex{{value.real(), value.imag()}});

  } else {
    std::stringstream errmsg;
    errmsg << "ComplexVector index = " << i
           << " is out of range = " << m_vector->size
           << " in ComplexVector.set()";
    throw std::out_of_range(errmsg.str());
  }
}
コード例 #7
0
void MapEncoder::addKeyRealFromDouble( double key, MapEntry::MapAction action,
	const ComplexType& value, OmmReal::MagnitudeType magnitudeType, const EmaBuffer& permissionData )
{
	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_REAL, rsslDataType, value.getDataType(), "addKeyRealFromDouble()");

	RsslReal real;
	if ( RSSL_RET_SUCCESS != rsslDoubleToReal( &real, &key, magnitudeType ) )
	{
		EmaString temp( "Attempt to addKeyRealFromDouble() with invalid magnitudeType='" );
		temp.append( getMTypeAsString( magnitudeType) ).append( "'. " );
		throwIueException( temp );
		return;
	}

	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &real, action, permissionData, "addKeyRealFromDouble()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &real, action, value, permissionData, "addKeyRealFromDouble()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &real, action, value, permissionData, "addKeyRealFromDouble()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &real, action, permissionData, "addKeyRealFromDouble()" );
	}
}
コード例 #8
0
ファイル: state.cpp プロジェクト: Romanow/petri-nets
void NetPlace::addVariableValue(const QString &name, Type * type)
{
	if (type->type() == complex)
	{
		ComplexType * complexType = reinterpret_cast<ComplexType *>(type);
		foreach (QString variable, complexType->variables().keys())
			addVariableValue(name + "." + variable, complexType->variables()[variable]);
	}
	else
	{
		SimpleType * simpleType = reinterpret_cast<SimpleType *>(type);
		m_values.insert(name, simpleType->values());
		m_types.insert(name, simpleType->values().count() > 1 ? array : variable);
	}
}
コード例 #9
0
void MapEncoder::addKeyState( OmmState::StreamState streamState, OmmState::DataState dataState, UInt8 statusCode, const EmaString& statusText,
	MapEntry::MapAction action, const ComplexType& value, const EmaBuffer& permissionData )
{
	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_STATE, rsslDataType, value.getDataType(), "addKeyState()");

	RsslState state;
	state.streamState = streamState;
	state.dataState = dataState;
	state.code = statusCode;
	state.text.data = (char*)statusText.c_str();
	state.text.length = statusText.length();

	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &state, action, permissionData, "addKeyState()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &state, action, value, permissionData, "addKeyState()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &state, action, value, permissionData, "addKeyState()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &state, action, permissionData, "addKeyState()" );
	}
}
コード例 #10
0
void MapEncoder::addEncodedEntry( void* keyValue, MapEntry::MapAction action, 
	const ComplexType& value, const EmaBuffer& permission, const char* methodName )
{
	rsslClearMapEntry(&_rsslMapEntry);

	_rsslMapEntry.encData = value.getEncoder().getRsslBuffer();

	_rsslMapEntry.action = action;

	encodePermissionData( permission );

	RsslRet retCode = rsslEncodeMapEntry( &_pEncodeIter->_rsslEncIter, &_rsslMapEntry, keyValue );
	while ( retCode == RSSL_RET_BUFFER_TOO_SMALL )
	{
		_pEncodeIter->reallocate();

		retCode = rsslEncodeMapEntry( &_pEncodeIter->_rsslEncIter, &_rsslMapEntry, keyValue );
	}

	if ( retCode < RSSL_RET_SUCCESS )
	{
		EmaString temp( "Failed to " );
		temp.append( methodName ).append( " while encoding Map. Reason='" );
		temp.append( rsslRetCodeToString( retCode ) ).append( "'. " );
		throwIueException( temp );
	}
}
コード例 #11
0
void MapEncoder::addKeyReal( Int64 mantissa, OmmReal::MagnitudeType magnitudeType, MapEntry::MapAction action,
	const ComplexType& value, const EmaBuffer& permissionData )
{
	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_REAL, rsslDataType, value.getDataType(), "addKeyReal()");
	
	RsslReal real;
	real.hint = magnitudeType;
	real.value = mantissa;
	real.isBlank = false;

	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &real, action, permissionData, "addKeyReal()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &real, action, value, permissionData, "addKeyReal()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &real, action, value, permissionData, "addKeyReal()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &real, action, permissionData, "addKeyReal()" );
	}
}
コード例 #12
0
ファイル: parser.cpp プロジェクト: cjh1/KDSoap
void Parser::parseCompositor( ParserContext *context,
  const QDomElement &element, ComplexType &ct )
{
  const QName name( element.tagName() );
  bool isChoice = name.localName() == QLatin1String("choice");
  bool isSequence = name.localName() == QLatin1String("sequence");

  Compositor compositor;
  if ( isChoice ) compositor.setType( Compositor::Choice );
  else if ( isSequence ) compositor.setType( Compositor::Sequence );
  compositor.setMaxOccurs( readMaxOccurs( element ) );

  if ( isChoice || isSequence ) {
    Element::List newElements;
    QDomElement childElement = element.firstChildElement();

    while ( !childElement.isNull() ) {
      NSManager namespaceManager( context, childElement );
      const QName csName( childElement.tagName() );
      if ( csName.localName() == QLatin1String("element") ) {
        Element newElement;
        if ( isChoice ) {
          newElement = parseElement( context, childElement,
            ct.nameSpace(), element );
        } else {
          newElement = parseElement( context, childElement,
            ct.nameSpace(), childElement );
        }
        newElements.append( newElement );
        compositor.addChild( csName );
      } else if ( csName.localName() == QLatin1String("any") ) {
        addAny( context, childElement, ct );
      } else if ( isChoice ) {
        parseCompositor( context, childElement, ct );
      } else if ( isSequence ) {
        parseCompositor( context, childElement, ct );
      }

      childElement = childElement.nextSiblingElement();
    }

    foreach( Element e, newElements ) {
      e.setCompositor( compositor );
      ct.addElement( e );
    }
コード例 #13
0
void MapEncoder::addKeyRmtes( const EmaBuffer& key, MapEntry::MapAction action,
	const ComplexType& value, const EmaBuffer& permissionData )
{
	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_RMTES_STRING, rsslDataType, value.getDataType(), "addKeyRmtes()");

	RsslBuffer buffer;
	buffer.data = (char*)key.c_buf();
	buffer.length = key.length();

	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &buffer, action, permissionData, "addKeyRmtes()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &buffer, action, value, permissionData, "addKeyRmtes()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &buffer, action, value, permissionData, "addKeyRmtes()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &buffer, action, permissionData, "addKeyRmtes()" );
	}
}
コード例 #14
0
ファイル: parser.cpp プロジェクト: snichols/kode
void Parser::all( ParserContext *context, const QDomElement &element, ComplexType &ct )
{
  QDomElement childElement = element.firstChildElement();

  while ( !childElement.isNull() ) {
    QName name = childElement.tagName();
    if ( name.localName() == "element" ) {
      ct.addElement( parseElement( context, childElement, ct.nameSpace(),
        childElement ) );
    } else if ( name.localName() == "annotation" ) {
      Annotation::List annotations = parseAnnotation( context, childElement );
      ct.setDocumentation( annotations.documentation() );
      ct.setAnnotations( annotations );
    }

    childElement = childElement.nextSiblingElement();
  }
}
コード例 #15
0
void MapEncoder::addKeyQos( UInt32 timeliness, UInt32 rate, MapEntry::MapAction action,
	const ComplexType& value, const EmaBuffer& permissionData )
{
	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_QOS, rsslDataType, value.getDataType(), "addKeyQos()");

	RsslQos qos;
	OmmQosDecoder::convertToRssl( &qos, timeliness, rate );

	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &qos, action, permissionData, "addKeyQos()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &qos, action, value, permissionData, "addKeyQos()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &qos, action, value, permissionData, "addKeyQos()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &qos, action, permissionData, "addKeyQos()" );
	}
}
コード例 #16
0
void MapEncoder::summaryData( const ComplexType& data )
{
	if ( !_containerInitialized )
	{
		const Encoder& enc = data.getEncoder();

		if ( data.hasEncoder() && enc.ownsIterator() )
		{
			if ( enc.isComplete() )
			{
				rsslMapApplyHasSummaryData( &_rsslMap );
				_rsslMap.encSummaryData = enc.getRsslBuffer();
			}
			else
			{
				EmaString temp( "Attempt to set summaryData() with a ComplexType while complete() was not called on this ComplexType." );
				throwIueException( temp );
				return;
			}
		}
		else if ( data.hasDecoder() )
		{
			rsslMapApplyHasSummaryData( &_rsslMap );
			_rsslMap.encSummaryData = const_cast<ComplexType&>(data).getDecoder().getRsslBuffer();
		}
		else
		{
			EmaString temp( "Attempt to pass an empty ComplexType to summaryData() while it is not supported." );
			throwIueException( temp );
			return;
		}

		_emaLoadType = data.getDataType();
		_rsslMap.containerType = enc.convertDataType( _emaLoadType );
	}
	else
	{
		EmaString temp( "Invalid attempt to call summaryData() when container is not empty." );
		throwIueException( temp );
	}
}
コード例 #17
0
ファイル: lexicon.cpp プロジェクト: wetneb/stocpreg
bool LexiconEntry<T>::fromFile(const string &filename)
{ // this does not use boost serialization
    ifstream fs(filename.c_str());
    if(!fs.good())
        return false;
    
    while(fs.good())
    {
        string line;
        getline(fs, line);
        if(line.size())
        {
            ComplexType ct;
            if(!ct.fromString(line))
            {
                cerr << "Error while parsing the complex type \""<<line<<"\""<<endl;
                return false;
            }
            (*this)[ct] = 1.0;
        }
    }
    normalize();    
}
コード例 #18
0
ファイル: AckMsgEncoder.cpp プロジェクト: lsdxp/Elektron-SDK
void AckMsgEncoder::attrib( const ComplexType& attrib )
{
	acquireEncIterator();

	_rsslAckMsg.msgBase.msgKey.attribContainerType = convertDataType( attrib.getDataType() );

#ifdef __EMA_COPY_ON_SET__
	if ( attrib.hasEncoder() && attrib.getEncoder().ownsIterator() )
	{
		const RsslBuffer& rsslBuf = attrib.getEncoder().getRsslBuffer();
		_attrib.setFrom( rsslBuf.data, rsslBuf.length );
	}
	else if ( attrib.hasDecoder() )
	{
		const RsslBuffer& rsslBuf = const_cast<ComplexType&>( attrib ).getDecoder().getRsslBuffer();
		_attrib.setFrom( rsslBuf.data, rsslBuf.length );
	}
	else
	{
		EmaString temp( "Attempt to pass in an empty ComplexType while it is not supported." );
		throwIueException( temp );
		return;
	}

	_rsslAckMsg.msgBase.msgKey.encAttrib.data = ( char* )_attrib.c_buf();
	_rsslAckMsg.msgBase.msgKey.encAttrib.length = _attrib.length();
#else
	if ( attrib.hasEncoder() && attrib.getEncoder().ownsIterator() )
		_rsslAckMsg.msgBase.msgKey.encAttrib = attrib.getEncoder().getRsslBuffer();
	else if ( attrib.hasDecoder() )
		_rsslAckMsg.msgBase.msgKey.encAttrib = const_cast<ComplexType&>( attrib ).getDecoder().getRsslBuffer();
	else
	{
		EmaString temp( "Attempt to pass in an empty ComplexType while it is not supported." );
		throwIueException( temp );
		return;
	}
#endif

	_rsslAckMsg.msgBase.msgKey.flags |= RSSL_MKF_HAS_ATTRIB;
	_rsslAckMsg.flags |= RSSL_AKMF_HAS_MSG_KEY;
}
コード例 #19
0
void SeriesEncoder::add( const ComplexType& complexType )
{
	if ( _containerComplete )
	{
		EmaString temp( "Attempt to add an entry after complete() was called." );
		throwIueException( temp );
		return;
	}

	const Encoder& enc = complexType.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( complexType.getDataType() );

	if ( !hasEncIterator() )
	{
		acquireEncIterator();

		initEncode( rsslDataType, complexType.getDataType() );
	}
	else if ( _rsslSeries.containerType != rsslDataType )
	{
		EmaString temp( "Attempt to add an entry with a different DataType. Passed in ComplexType has DataType of " );
		temp += DataType( complexType.getDataType() ).toString();
		temp += EmaString( " while the expected DataType is " );
		temp += DataType( _emaDataType );
		throwIueException( temp );
		return;
	}

	if ( complexType.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( "add()", enc.getRsslBuffer() );
		else
		{
			EmaString temp( "Attempt to add() a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( complexType.hasDecoder() )
	{
		addEncodedEntry( "add()", const_cast<ComplexType&>( complexType ).getDecoder().getRsslBuffer() );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( "add()" );
	}
}
コード例 #20
0
void ReqMsgEncoder::payload( const ComplexType& load )
{
	acquireEncIterator();

	_rsslRequestMsg.msgBase.containerType = convertDataType( load.getDataType() );

#ifdef __EMA_COPY_ON_SET__
	if ( load.hasEncoder() && load.getEncoder().ownsIterator() )
	{
		const RsslBuffer& rsslBuf = load.getEncoder().getRsslBuffer();
		_payload.setFrom( rsslBuf.data, rsslBuf.length );
	}
	else if ( load.hasDecoder() )
	{
		const RsslBuffer& rsslBuf = const_cast<ComplexType&>( load ).getDecoder().getRsslBuffer();
		_payload.setFrom( rsslBuf.data, rsslBuf.length );
	}
	else
	{
		EmaString temp( "Attempt to pass in an empty ComplexType while it is not supported." );
		throwIueException( temp );
		return;
	}

	_rsslRequestMsg.msgBase.encDataBody.data = (char*)_payload.c_buf();
	_rsslRequestMsg.msgBase.encDataBody.length = _payload.length();
#else
	if ( load.hasEncoder() && load.getEncoder().ownsIterator() )
		_rsslRequestMsg.msgBase.encDataBody = load.getEncoder().getRsslBuffer();
	else if ( load.hasDecoder() )
		_rsslRequestMsg.msgBase.encDataBody = const_cast<ComplexType&>( load ).getDecoder().getRsslBuffer();
	else
	{
		EmaString temp( "Attempt to pass in an empty ComplexType while it is not supported." );
		throwIueException( temp );
		return;
	}
#endif

	if ( _rsslRequestMsg.msgBase.containerType == RSSL_DT_ELEMENT_LIST )
		checkBatchView( &_rsslRequestMsg.msgBase.encDataBody );
}
コード例 #21
0
bool FeynHiggsWrapper::CalcHiggsSpectrum()
{
    int err;
    ComplexType SAeff;
    ComplexType UHiggs[3][3];
    ComplexType ZHiggs[3][3];

    /* Compute the Higgs masses and mixings */
    FHHiggsCorr(&err, mySUSY.mh, &SAeff, UHiggs, ZHiggs);
    if (err != 0) {
#ifdef FHDEBUG
        std::cout << "FeynHiggsWrapper::CalcHiggsSpectrum(): Error has been detected in HiggsCorr.F:"
                  << err << std::endl;
#endif
        return (false);
    }

    // the sine of the effective Higgs mixing angle, alpha_eff,
    mySUSY.saeff = gslpp::complex(SAeff.real(), SAeff.imag());

    /* Debug */
    //std::cout << "mh[0] = mh = " << mySUSY.mh[0] << std::endl;
    //std::cout << "mh[1] = mH = " << mySUSY.mh[1] << std::endl;
    //std::cout << "mh[2] = mA = " << mySUSY.mh[2] << std::endl;
    //std::cout << "mh[3] = mH+ = " << mySUSY.mh[3] << std::endl;

    /* Check */
    for (int i = 0; i < 4; i++)
        if(std::isnan(mySUSY.mh[i])) {
            std::cout << "FeynHiggsWrapper::CalcHiggsSpectrum(): mh[" << i << "] is undefined"
                      << std::endl;
            return (false);
        }

    return (true);
}
コード例 #22
0
void AckMsgEncoder::payload( const ComplexType& load )
{
    acquireEncIterator();

    _rsslAckMsg.msgBase.containerType = convertDataType( load.getDataType() );

#ifdef __EMA_COPY_ON_SET__
    RsslBuffer& rsslBuf = static_cast<const Data&>(load).getEncoder().getRsslBuffer();
    _payload.setFrom( rsslBuf.data, rsslBuf.length );

    _rsslAckMsg.msgBase.encDataBody.data = (char*)_payload.c_buf();
    _rsslAckMsg.msgBase.encDataBody.length = _payload.length();
#else
    _rsslAckMsg.msgBase.encDataBody = static_cast<const Data&>(load).getEncoder().getRsslBuffer();
#endif
}
コード例 #23
0
void AckMsgEncoder::attrib( const ComplexType& attrib )
{
    acquireEncIterator();

    _rsslAckMsg.msgBase.msgKey.attribContainerType = convertDataType( attrib.getDataType() );

#ifdef __EMA_COPY_ON_SET__
    RsslBuffer& rsslBuf = static_cast<const Data&>(attrib).getEncoder().getRsslBuffer();
    _attrib.setFrom( rsslBuf.data, rsslBuf.length );

    _rsslAckMsg.msgBase.msgKey.encAttrib.data = (char*)_attrib.c_buf();
    _rsslAckMsg.msgBase.msgKey.encAttrib.length = _attrib.length();
#else
    _rsslAckMsg.msgBase.msgKey.encAttrib = static_cast<const Data&>(attrib).getEncoder().getRsslBuffer();
#endif

    _rsslAckMsg.msgBase.msgKey.flags |= RSSL_MKF_HAS_ATTRIB;
    _rsslAckMsg.flags |= RSSL_AKMF_HAS_MSG_KEY;
}
コード例 #24
0
void MapEncoder::addKeyTime( UInt8 hour, UInt8 minute, UInt8 second, UInt16 millisecond, UInt16 microsecond, UInt16 nanosecond, 
	MapEntry::MapAction action, const ComplexType& value, const EmaBuffer& permissionData )
{
	RsslTime time;
	time.hour = hour;
	time.minute = minute;
	time.second = second;
	time.millisecond = millisecond;
	time.microsecond = microsecond;
	time.nanosecond = nanosecond;

	if ( RSSL_FALSE == rsslTimeIsValid( &time ) )
	{
		EmaString temp( "Attempt to specify invalid time. Passed in value is='" );
		temp.append( (UInt32)hour ).append( ":" ).
			append( (UInt32)minute ).append( ":" ).
			append( (UInt32)second ).append( "." ).
			append( (UInt32)millisecond ).append( "." ).
			append( (UInt32)microsecond ).append( "." ).
			append( (UInt32)nanosecond ).append( "'." );
		throwOorException( temp );
		return;
	}

	const Encoder& enc = value.getEncoder();

	UInt8 rsslDataType = enc.convertDataType( value.getDataType() );

	validateEntryKeyAndPayLoad(RSSL_DT_TIME, rsslDataType, value.getDataType(), "addKeyTime()");

	if ( action == MapEntry::DeleteEnum )
	{
		addEntryWithNoPayload( &time, action, permissionData, "addKeyTime()" );
	}
	else if ( value.hasEncoder() && enc.ownsIterator() )
	{
		if ( enc.isComplete() )
			addEncodedEntry( &time, action, value, permissionData, "addKeyTime()" );
		else
		{
			EmaString temp( "Attempt to add a ComplexType while complete() was not called on this ComplexType." );
			throwIueException( temp );
			return;
		}
	}
	else if ( value.hasDecoder() )
	{
		addDecodedEntry( &time, action, value, permissionData, "addKeyTime()" );
	}
	else
	{
		if ( rsslDataType == RSSL_DT_MSG )
		{
			EmaString temp( "Attempt to pass in an empty message while it is not supported." );
			throwIueException( temp );
			return;
		}

		passEncIterator( const_cast<Encoder&>( enc ) );
		startEncodingEntry( &time, action, permissionData, "addKeyTime()" );
	}
}
コード例 #25
0
ファイル: test.cpp プロジェクト: hjk41/tinyrpc
 virtual void MarshallRequest(StreamBuffer & buf) {
     req.Serialize(buf);
 }
コード例 #26
0
ファイル: test.cpp プロジェクト: hjk41/tinyrpc
 virtual void UnmarshallRequest(StreamBuffer & buf) {
     req.Deserialize(buf);
 }