Ejemplo n.º 1
0
DDS_StdString
be_Type::InRequestArgumentDeclaration(be_Type& btype, const DDS_StdString& arg, VarType vt)
{
   DDS_StdString ret = btype.TypeName();

   if (!IsFixedLength() && (vt == VT_Return || vt == VT_OutParam))
   {
      ret += "_var";
   }

   return ret + " " + arg + ";";
}
Ejemplo n.º 2
0
DDS_StdString
be_sequence::SyncStreamOut(const DDS_StdString& arg, const DDS_StdString& out, VarType vt) const
{
   DDS_StdString ret = out;

   if (!IsFixedLength() && (vt == VT_Return || vt == VT_OutParam))
   {
      ret += " << (" + ScopedName() + " *)" + arg + ";";
   }
   else
   {
      ret += " << " + arg + ";";
   }

   return ret;
}
Ejemplo n.º 3
0
be_DispatchableType::en_HowStoredInDispatcher be_structure::HowStoredInDispatcher
   (const be_ArgumentDirection& direction) const
{
   if (! IsFixedLength ())
   {
      // variable-length structure

      switch (direction)
      {
         case VT_InParam:
         case VT_InOutParam:
            return STORED_AS_STACK_VARIABLE;

         case VT_OutParam:
         case VT_Return:
            return STORED_IN_VAR;

         default: assert (0);
      }
   }
   return STORED_AS_STACK_VARIABLE;
}
Ejemplo n.º 4
0
AST_Field *
be_exception::add_field(AST_Field *af)
{
   if (AST_Structure::add_field(af))
   {
      be_field * field = be_field::_narrow (af);

      if (field)
      {
         field->initialize();

         if (IsFixedLength() && !field->IsFixedLength())
         {
            is_fixed_length (false);
            InitializeTypeMap(this);
         }

         //
         // note the alignment of the first field
         //
         if (!m_fields.size())
         {
            m_elemAlignment = field->get_elem_alignment();
         }

         //
         // don't forget to add the padding!!!
         //
         DDS::ULong fieldPad = (field->get_elem_size()) ?
                                 m_elemSize % field->get_elem_size() :
                                 4;

         //
         // now update the element size
         //
         m_elemSize += fieldPad + field->get_elem_size();

         //
         // determine if marshaling should be done in the core
         //
         if (field->is_core_marshaled())
         {
            m_marshalInCore = TRUE;
         }

         //
         // add field to our list for marshaling
         //
         m_fields.push_back(field);
      }

      //
      // add to typecode
      //
      m_typecode->members.push_back(field->get_be_type()->m_typecode);

      m_typecode->member_names.push_back(field->get_local_name());

      return af;
   }

   return 0;
}
Ejemplo n.º 5
0
pbbool be_structure::IsOptimizable ()
{
   return m_canOptimize && IsFixedLength ();
}