diff --git a/mlpp/lin_alg/mlpp_vector.cpp b/mlpp/lin_alg/mlpp_vector.cpp index 9e24ce3..7f4a462 100644 --- a/mlpp/lin_alg/mlpp_vector.cpp +++ b/mlpp/lin_alg/mlpp_vector.cpp @@ -17,6 +17,8 @@ void MLPPVector::_bind_methods() { ClassDB::bind_method(D_METHOD("size"), &MLPPVector::size); ClassDB::bind_method(D_METHOD("get_element", "index"), &MLPPVector::get_element_bind); + ClassDB::bind_method(D_METHOD("set_element", "index", "val"), &MLPPVector::set_element_bind); + ClassDB::bind_method(D_METHOD("fill", "val"), &MLPPVector::fill); ClassDB::bind_method(D_METHOD("insert", "pos", "val"), &MLPPVector::insert); ClassDB::bind_method(D_METHOD("find", "val", "from"), &MLPPVector::find, 0); diff --git a/mlpp/lin_alg/mlpp_vector.h b/mlpp/lin_alg/mlpp_vector.h index fc8e3bf..847194f 100644 --- a/mlpp/lin_alg/mlpp_vector.h +++ b/mlpp/lin_alg/mlpp_vector.h @@ -140,11 +140,11 @@ public: return data[p_index]; } - _FORCE_INLINE_ const double &get_element(int p_index) const { + _FORCE_INLINE_ const double get_element(int p_index) const { CRASH_BAD_UNSIGNED_INDEX(p_index, count); return data[p_index]; } - _FORCE_INLINE_ double &get_element(int p_index) { + _FORCE_INLINE_ double get_element(int p_index) { CRASH_BAD_UNSIGNED_INDEX(p_index, count); return data[p_index]; } @@ -154,6 +154,16 @@ public: return static_cast(data[p_index]); } + _FORCE_INLINE_ void set_element(int p_index, double p_val) { + CRASH_BAD_UNSIGNED_INDEX(p_index, count); + data[p_index] = p_val; + } + + _FORCE_INLINE_ void set_element_bind(int p_index, real_t p_val) { + CRASH_BAD_UNSIGNED_INDEX(p_index, count); + data[p_index] = p_val; + } + void fill(double p_val) { for (int i = 0; i < count; i++) { data[i] = p_val;