11#pragma once
22
3- #include < string> // for string, basic_string
3+ #include < string> // for string, basic_string
44
5- #include " cpp11/R.hpp" // for R_xlen_t, SEXP, SEXPREC, LONG_VECTOR_SUPPORT
6- #include " cpp11/list.hpp" // for list
5+ #include " cpp11/R.hpp" // for R_xlen_t, SEXP, SEXPREC, LONG_VECTOR_SUPPORT
6+ #include " cpp11/list.hpp" // for list
77
88namespace cpp11 {
99
10- template <typename T>
11- class list_of : public list {
12- public:
13- list_of (const list& data) : list(data) {}
10+ template <typename T> class list_of : public list {
11+ public:
12+ list_of (const list &data) : list(data) {}
1413
1514#ifdef LONG_VECTOR_SUPPORT
16- T operator [](const int pos) const { return operator [](static_cast <R_xlen_t>(pos)); }
15+ T operator [](const int pos) const {
16+ return operator [](static_cast <R_xlen_t>(pos));
17+ }
1718#endif
1819
1920 T operator [](const R_xlen_t pos) const { return list::operator [](pos); }
2021
21- T operator [](const char * pos) const { return list::operator [](pos); }
22+ T operator [](const char * pos) const { return list::operator [](pos); }
2223
23- T operator [](const std::string& pos) const { return list::operator [](pos.c_str ()); }
24+ T operator [](const std::string &pos) const {
25+ return list::operator [](pos.c_str ());
26+ }
2427};
2528
2629namespace writable {
27- template <typename T>
28- class list_of : public writable ::list {
29- public:
30- list_of (const list& data) : writable::list(data) {}
30+ template <typename T> class list_of : public writable ::list {
31+ public:
32+ list_of (const list &data) : writable::list(data) {}
3133 list_of (R_xlen_t n) : writable::list(n) {}
3234
3335 class proxy {
34- private:
36+ private:
3537 writable::list::proxy data_;
3638
37- public:
38- proxy (const writable::list::proxy& data) : data_(data) {}
39+ public:
40+ proxy (const writable::list::proxy & data) : data_(data) {}
3941
4042 operator T () const { return static_cast <SEXP>(*this ); }
4143 operator SEXP () const { return static_cast <SEXP>(data_); }
4244#ifdef LONG_VECTOR_SUPPORT
4345 typename T::proxy operator [](int pos) { return static_cast <T>(data_)[pos]; }
4446#endif
45- typename T::proxy operator [](R_xlen_t pos) { return static_cast <T>(data_)[pos]; }
46- proxy operator [](const char * pos) { static_cast <T>(data_)[pos]; }
47- proxy operator [](const std::string& pos) { return static_cast <T>(data_)[pos]; }
48- proxy& operator =(const T& rhs) {
47+ typename T::proxy operator [](R_xlen_t pos) {
48+ return static_cast <T>(data_)[pos];
49+ }
50+ proxy operator [](const char *pos) { static_cast <T>(data_)[pos]; }
51+ proxy operator [](const std::string &pos) {
52+ return static_cast <T>(data_)[pos];
53+ }
54+ proxy &operator =(const T &rhs) {
4955 data_ = rhs;
5056
5157 return *this ;
@@ -60,14 +66,14 @@ class list_of : public writable::list {
6066
6167 proxy operator [](R_xlen_t pos) { return writable::list::operator [](pos); }
6268
63- proxy operator [](const char * pos) {
69+ proxy operator [](const char * pos) {
6470 return { writable::list::operator [](pos) };
6571 }
6672
67- proxy operator [](const std::string& pos) {
73+ proxy operator [](const std::string & pos) {
6874 return writable::list::operator [](pos.c_str ());
6975 }
7076};
71- } // namespace writable
77+ } // namespace writable
7278
73- } // namespace cpp11
79+ } // namespace cpp11
0 commit comments