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 + ";"; }
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; }
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; }
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; }
pbbool be_structure::IsOptimizable () { return m_canOptimize && IsFixedLength (); }