mathieu@2405: #include "object-vector.h" mathieu@2405: mathieu@2405: namespace ns3 { mathieu@2405: mathieu@2965: ObjectVectorValue::ObjectVectorValue () mathieu@2405: {} mathieu@2405: mathieu@2965: ObjectVectorValue::Iterator mathieu@2965: ObjectVectorValue::Begin (void) const mathieu@2405: { mathieu@2405: return m_objects.begin (); mathieu@2405: } mathieu@2965: ObjectVectorValue::Iterator mathieu@2965: ObjectVectorValue::End (void) const mathieu@2405: { mathieu@2405: return m_objects.end (); mathieu@2405: } mathieu@2405: uint32_t mathieu@2965: ObjectVectorValue::GetN (void) const mathieu@2405: { mathieu@2405: return m_objects.size (); mathieu@2405: } mathieu@2405: Ptr mathieu@2965: ObjectVectorValue::Get (uint32_t i) const mathieu@2405: { mathieu@2405: return m_objects[i]; mathieu@2405: } mathieu@2405: mathieu@2965: Ptr mathieu@2405: ObjectVectorValue::Copy (void) const mathieu@2405: { mathieu@2965: return ns3::Create (*this); mathieu@2405: } mathieu@2405: std::string mathieu@2427: ObjectVectorValue::SerializeToString (Ptr checker) const mathieu@2405: { mathieu@3190: std::ostringstream oss; mathieu@3190: for (uint32_t i = 0; i < m_objects.size (); ++i) mathieu@3190: { mathieu@3190: oss << m_objects[i]; mathieu@3190: if (i != m_objects.size () - 1) mathieu@3190: { mathieu@3190: oss << " "; mathieu@3190: } mathieu@3190: } mathieu@3190: return oss.str (); mathieu@2405: } mathieu@2405: bool mathieu@2427: ObjectVectorValue::DeserializeFromString (std::string value, Ptr checker) mathieu@2405: { mathieu@2965: NS_FATAL_ERROR ("cannot deserialize a vector of object pointers."); mathieu@2405: return true; mathieu@2405: } mathieu@2405: mathieu@2405: bool mathieu@2965: ObjectVectorAccessor::Set (ObjectBase * object, const AttributeValue & value) const mathieu@2405: { mathieu@2405: // not allowed. mathieu@2405: return false; mathieu@2405: } mathieu@2405: bool mathieu@2965: ObjectVectorAccessor::Get (const ObjectBase * object, AttributeValue &value) const mathieu@2405: { mathieu@2965: ObjectVectorValue *v = dynamic_cast (&value); mathieu@2405: if (v == 0) mathieu@2405: { mathieu@2405: return false; mathieu@2405: } mathieu@2965: v->m_objects.clear (); mathieu@2405: uint32_t n; mathieu@2405: bool ok = DoGetN (object, &n); mathieu@2405: if (!ok) mathieu@2405: { mathieu@2405: return false; mathieu@2405: } mathieu@2405: for (uint32_t i = 0; i < n; i++) mathieu@2405: { mathieu@2405: Ptr o = DoGet (object, i); mathieu@2965: v->m_objects.push_back (o); mathieu@2405: } mathieu@2405: return true; mathieu@2405: } mathieu@2950: bool mathieu@2950: ObjectVectorAccessor::HasGetter (void) const mathieu@2950: { mathieu@2950: return true; mathieu@2950: } mathieu@2950: bool mathieu@2950: ObjectVectorAccessor::HasSetter (void) const mathieu@2950: { mathieu@2950: return false; mathieu@2950: } mathieu@2599: mathieu@2405: } // name