Files
pip/main.cpp
2022-04-20 16:50:36 +03:00

72 lines
1.7 KiB
C++

#include "pip.h"
class ConstChars {
public:
inline ConstChars() : len(0), str(nullptr) {}
inline ConstChars(const char * string) {
str = string;
len = strlen(string);
}
inline ConstChars(const char * data, size_t size) {
str = data;
len = size;
}
// inline ROString(const char string[]) {
// str = string;
// len = sizeof(string);
// }
inline const char & operator[](size_t pos) const {return str[pos];}
inline const char * data() const {return str;}
inline bool isEmpty() const {return len == 0;}
inline bool isNotEmpty() const {return len > 0;}
inline size_t length() const {return len;}
inline size_t size() const {return len;}
inline ssize_t size_s() const {return len;}
//! \~\brief
//! \~english Assign operator.
//! \~russian Оператор присваивания.
inline ConstChars & operator =(const ConstChars & s) {
if (this == &s) return *this;
len = s.len;
str = s.str;
return *this;
}
//! \~\brief
//! \~english Assign move operator.
//! \~russian Оператор перемещающего присваивания.
inline ConstChars & operator =(ConstChars && s) {
swap(s);
return *this;
}
inline void swap(ConstChars& v) {
piSwap<const char *>(str, v.str);
piSwap<size_t>(len, v.len);
}
private:
size_t len;
const char * str;
};
PICout operator <<(PICout s, const ConstChars & v) {
s.space();
s.quote();
s.write(v.data(), v.size());
s.quote();
return s;
}
int main(int argc, char * argv[]) {
PIVector<int> v{1, 2, 3, 4, 5, 6};
PIVector<PIVector<int>> xv = v.reshape(3,2);
piCout << xv;
piCout << xv.flatten<int>();
piCout << xv.reshape<int>(2,3);
return 0;
}