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> class list_of : public list {
11- public:
12- list_of (const list &data) : list(data) {}
10+ template <typename T>
11+ class list_of : public list {
12+ public:
13+ list_of (const list& data) : list(data) {}
1314
1415#ifdef LONG_VECTOR_SUPPORT
15- T operator [](const int pos) const {
16- return operator [](static_cast <R_xlen_t>(pos));
17- }
16+ T operator [](const int pos) const { return operator [](static_cast <R_xlen_t>(pos)); }
1817#endif
1918
2019 T operator [](const R_xlen_t pos) const { return list::operator [](pos); }
2120
22- T operator [](const char * pos) const { return list::operator [](pos); }
21+ T operator [](const char * pos) const { return list::operator [](pos); }
2322
24- T operator [](const std::string &pos) const {
25- return list::operator [](pos.c_str ());
26- }
23+ T operator [](const std::string& pos) const { return list::operator [](pos.c_str ()); }
2724};
2825
2926namespace writable {
30- template <typename T> class list_of : public writable ::list {
31- public:
32- list_of (const list &data) : writable::list(data) {}
27+ template <typename T>
28+ class list_of : public writable ::list {
29+ public:
30+ list_of (const list& data) : writable::list(data) {}
3331 list_of (R_xlen_t n) : writable::list(n) {}
3432
3533 class proxy {
36- private:
34+ private:
3735 writable::list::proxy data_;
3836
39- public:
40- proxy (const writable::list::proxy & data) : data_(data) {}
37+ public:
38+ proxy (const writable::list::proxy& data) : data_(data) {}
4139
4240 operator T () const { return static_cast <SEXP>(*this ); }
4341 operator SEXP () const { return static_cast <SEXP>(data_); }
4442#ifdef LONG_VECTOR_SUPPORT
4543 typename T::proxy operator [](int pos) { return static_cast <T>(data_)[pos]; }
4644#endif
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) {
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) {
5549 data_ = rhs;
5650
5751 return *this ;
@@ -66,14 +60,14 @@ template <typename T> class list_of : public writable::list {
6660
6761 proxy operator [](R_xlen_t pos) { return writable::list::operator [](pos); }
6862
69- proxy operator [](const char * pos) {
63+ proxy operator [](const char * pos) {
7064 return { writable::list::operator [](pos) };
7165 }
7266
73- proxy operator [](const std::string & pos) {
67+ proxy operator [](const std::string& pos) {
7468 return writable::list::operator [](pos.c_str ());
7569 }
7670};
77- } // namespace writable
71+ } // namespace writable
7872
79- } // namespace cpp11
73+ } // namespace cpp11
0 commit comments