00001 #include "object-vector.h" 00002 00003 namespace ns3 { 00004 00005 ObjectVectorValue::ObjectVectorValue () 00006 {} 00007 00008 ObjectVectorValue::Iterator 00009 ObjectVectorValue::Begin (void) const 00010 { 00011 return m_objects.begin (); 00012 } 00013 ObjectVectorValue::Iterator 00014 ObjectVectorValue::End (void) const 00015 { 00016 return m_objects.end (); 00017 } 00018 uint32_t 00019 ObjectVectorValue::GetN (void) const 00020 { 00021 return m_objects.size (); 00022 } 00023 Ptr<Object> 00024 ObjectVectorValue::Get (uint32_t i) const 00025 { 00026 return m_objects[i]; 00027 } 00028 00029 Ptr<AttributeValue> 00030 ObjectVectorValue::Copy (void) const 00031 { 00032 return ns3::Create<ObjectVectorValue> (*this); 00033 } 00034 std::string 00035 ObjectVectorValue::SerializeToString (Ptr<const AttributeChecker> checker) const 00036 { 00037 std::ostringstream oss; 00038 for (uint32_t i = 0; i < m_objects.size (); ++i) 00039 { 00040 oss << m_objects[i]; 00041 if (i != m_objects.size () - 1) 00042 { 00043 oss << " "; 00044 } 00045 } 00046 return oss.str (); 00047 } 00048 bool 00049 ObjectVectorValue::DeserializeFromString (std::string value, Ptr<const AttributeChecker> checker) 00050 { 00051 NS_FATAL_ERROR ("cannot deserialize a vector of object pointers."); 00052 return true; 00053 } 00054 00055 bool 00056 ObjectVectorAccessor::Set (ObjectBase * object, const AttributeValue & value) const 00057 { 00058 // not allowed. 00059 return false; 00060 } 00061 bool 00062 ObjectVectorAccessor::Get (const ObjectBase * object, AttributeValue &value) const 00063 { 00064 ObjectVectorValue *v = dynamic_cast<ObjectVectorValue *> (&value); 00065 if (v == 0) 00066 { 00067 return false; 00068 } 00069 v->m_objects.clear (); 00070 uint32_t n; 00071 bool ok = DoGetN (object, &n); 00072 if (!ok) 00073 { 00074 return false; 00075 } 00076 for (uint32_t i = 0; i < n; i++) 00077 { 00078 Ptr<Object> o = DoGet (object, i); 00079 v->m_objects.push_back (o); 00080 } 00081 return true; 00082 } 00083 bool 00084 ObjectVectorAccessor::HasGetter (void) const 00085 { 00086 return true; 00087 } 00088 bool 00089 ObjectVectorAccessor::HasSetter (void) const 00090 { 00091 return false; 00092 } 00093 00094 } // name