diff --git a/CHANGES.html b/CHANGES.html
index 9ac3a4e5f..c4a5b21cc 100644
--- a/CHANGES.html
+++ b/CHANGES.html
@@ -54,6 +54,8 @@ us a note on ns-developers mailing list.
Changes from ns-3.20 to ns-3.21
New API:
+ - New "const double& SpectrumValue:: operator[] (size_t index) const".
+
Changes to existing API:
diff --git a/src/spectrum/bindings/modulegen__gcc_ILP32.py b/src/spectrum/bindings/modulegen__gcc_ILP32.py
index e9744420e..bde99f3b3 100644
--- a/src/spectrum/bindings/modulegen__gcc_ILP32.py
+++ b/src/spectrum/bindings/modulegen__gcc_ILP32.py
@@ -406,10 +406,6 @@ def register_types(module):
typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
- typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
- typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
- typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
- module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
@@ -419,6 +415,10 @@ def register_types(module):
typehandlers.add_type_alias(u'uint32_t', u'ns3::SpectrumModelUid_t')
typehandlers.add_type_alias(u'uint32_t*', u'ns3::SpectrumModelUid_t*')
typehandlers.add_type_alias(u'uint32_t&', u'ns3::SpectrumModelUid_t&')
+ typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+ typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+ typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
+ module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >', u'ns3::TxSpectrumModelInfoMap_t')
typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >*', u'ns3::TxSpectrumModelInfoMap_t*')
typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >&', u'ns3::TxSpectrumModelInfoMap_t&')
diff --git a/src/spectrum/bindings/modulegen__gcc_LP64.py b/src/spectrum/bindings/modulegen__gcc_LP64.py
index e9744420e..bde99f3b3 100644
--- a/src/spectrum/bindings/modulegen__gcc_LP64.py
+++ b/src/spectrum/bindings/modulegen__gcc_LP64.py
@@ -406,10 +406,6 @@ def register_types(module):
typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'ns3::VectorValue&')
module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
- typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
- typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
- typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
- module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
@@ -419,6 +415,10 @@ def register_types(module):
typehandlers.add_type_alias(u'uint32_t', u'ns3::SpectrumModelUid_t')
typehandlers.add_type_alias(u'uint32_t*', u'ns3::SpectrumModelUid_t*')
typehandlers.add_type_alias(u'uint32_t&', u'ns3::SpectrumModelUid_t&')
+ typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+ typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+ typehandlers.add_type_alias(u'ns3::Vector3D&', u'ns3::Vector&')
+ module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >', u'ns3::TxSpectrumModelInfoMap_t')
typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >*', u'ns3::TxSpectrumModelInfoMap_t*')
typehandlers.add_type_alias(u'std::map< unsigned int, ns3::TxSpectrumModelInfo, std::less< unsigned int >, std::allocator< std::pair< unsigned int const, ns3::TxSpectrumModelInfo > > >&', u'ns3::TxSpectrumModelInfoMap_t&')
diff --git a/src/spectrum/model/spectrum-value.cc b/src/spectrum/model/spectrum-value.cc
index 31c7c94a0..7303aee45 100644
--- a/src/spectrum/model/spectrum-value.cc
+++ b/src/spectrum/model/spectrum-value.cc
@@ -46,6 +46,12 @@ SpectrumValue:: operator[] (size_t index)
return m_values.at (index);
}
+const double&
+SpectrumValue:: operator[] (size_t index) const
+{
+ return m_values.at (index);
+}
+
SpectrumModelUid_t
SpectrumValue::GetSpectrumModelUid () const
diff --git a/src/spectrum/model/spectrum-value.h b/src/spectrum/model/spectrum-value.h
index c2beaf687..4b3a7d93a 100644
--- a/src/spectrum/model/spectrum-value.h
+++ b/src/spectrum/model/spectrum-value.h
@@ -89,6 +89,14 @@ public:
*/
double& operator[] (size_t index);
+ /**
+ * Access value at given frequency index
+ *
+ * @param index the given frequency index
+ *
+ * @return const reference to the value
+ */
+ const double& operator[] (size_t index) const;
/**