8 #ifndef OPENDDS_SAFETY_PROFILE    27   switch (base_type->get_kind()) {
    31       DDS::TypeDescriptor_var td;
    53   const TypeKind tk = base_type->get_kind();
    58   DDS::DynamicTypeMembersById_var members;
    59   rc = base_type->get_all_members(members);
    71       it != members_impl->
end(); ++it) {
    72     DDS::MemberDescriptor_var md;
    73     rc = it->second->get_descriptor(md);
    78     DDS::DynamicType_ptr member_type = md->type();
    87     ext = std::max(member_ext, ext);
   108   DDS::DynamicType_ptr type, DDS::DynamicTypeMember_var& member)
   120   MemberIdVec::iterator it = 
ids.begin();
   121   DDS::DynamicType_var current_type = DDS::DynamicType::_duplicate(type);
   122   DDS::DynamicTypeMember_var current_member;
   129     if (++it == 
ids.end()) {
   133     DDS::MemberDescriptor_var md;
   134     rc = current_member->get_descriptor(md);
   143   member = current_member;
   149   DDS::DynamicData_ptr data, DDS::DynamicData_var& container, 
DDS::MemberId& member_id)
   156   MemberIdVec::iterator it = 
ids.begin();
   157   DDS::DynamicData_var current_data = DDS::DynamicData::_duplicate(data);
   160     if (++it == 
ids.end()) {
   161       member_id = current_id;
   165     DDS::ReturnCode_t rc = current_data->get_complex_value(current_data, current_id);
   170   container = current_data._retn();
   180     const MemberPath& base_path, 
bool implied_all_check = 
false)
   182     bool implied_all = 
false;
   183     if (!implied_all_check && base_path.
level() > 0) {
   186       MemberPathVec explicit_key;
   187       const DDS::ReturnCode_t rc = get_keys_i_struct(members, explicit_key, base_path, 
true);
   191       implied_all = explicit_key.empty();
   195         it != members->
end(); ++it) {
   196       DDS::MemberDescriptor_var md;
   201       if (implied_all || md->is_key()) {
   203         if (implied_all_check) {
   208         rc = get_keys_i(md->type(), paths, 
MemberPath(base_path, 
id));
   225     const TypeKind kind = base_type->get_kind();
   229         DDS::DynamicTypeMembersById_var members;
   241         return get_keys_i_struct(members_impl, paths, base_path);
   245         DDS::DynamicTypeMember_var disc;
   248         if (base_path.
level() == 0) {
   253           DDS::MemberDescriptor_var md;
   254           rc = disc->get_descriptor(md);
   259             paths.push_back(this_path);
   265           paths.push_back(this_path);
   270       if (base_path.
level() == 0) {
   273             "get_keys was passed an invalid topic type: %C\n",
   278       paths.push_back(base_path);
   296     count = paths.size();
   305 #endif // OPENDDS_SAFETY_PROFILE 
const ReturnCode_t RETCODE_OK
 
DDS::DynamicType_var get_base_type(DDS::DynamicType_ptr type)
 
const_iterator begin() const
 
DDS::ReturnCode_t key_count(DDS::DynamicType_ptr type, size_t &count)
 
OpenDDS_Dcps_Export LogLevel log_level
 
DDS::ReturnCode_t max_extensibility(DDS::DynamicType_ptr type, DCPS::Extensibility &ext)
 
DCPS::Extensibility dds_to_opendds_ext(DDS::ExtensibilityKind ext)
 
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData. 
 
DDS::ReturnCode_t get_member_from_type(DDS::DynamicType_ptr type, DDS::DynamicTypeMember_var &member)
 
The Internal API and Implementation of OpenDDS. 
 
const char * typekind_to_string(TypeKind tk)
 
DDS::ReturnCode_t get_keys(DDS::DynamicType_ptr type, MemberPathVec &paths)
 
const_iterator end() const
 
DDS::ReturnCode_t get_member_from_data(DDS::DynamicData_ptr data, DDS::DynamicData_var &container, DDS::MemberId &member_id)
 
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
 
MapType::const_iterator const_iterator
 
const TypeKind TK_STRUCTURE
 
const ReturnCode_t RETCODE_ILLEGAL_OPERATION
 
#define OPENDDS_ASSERT(C)
 
DDS::ReturnCode_t extensibility(DDS::DynamicType_ptr type, DCPS::Extensibility &ext)
 
const ReturnCode_t RETCODE_BAD_PARAMETER