95 lines
2.4 KiB
C++
95 lines
2.4 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[]) {
|
|
// const char * dd = "12345";
|
|
// char text[]{ "hello" };
|
|
// ConstChars s("test");
|
|
// piCout << s;
|
|
// ConstChars s2;
|
|
// piCout << s2;
|
|
// s2 = s;
|
|
// piCout << s2;
|
|
// s2 = text;
|
|
// s = s2;
|
|
// piCout << s << s2;
|
|
//// s2 = s;
|
|
// text[1] = '0';
|
|
// piCout << text;
|
|
// piCout << s << s2 << ConstChars(text, 3);
|
|
//// piCout << s << s2;
|
|
//// PIString ss(s.data(), s.length());
|
|
//// piCout << ss;
|
|
// PICout(PICoutManipulators::DefaultControls | PICoutManipulators::AddQuotes) << PIString(dd);
|
|
|
|
// piCout << PIString::fromUTF8("test");
|
|
// piCout << PIString::fromUTF8("бюд\n");
|
|
// piCout.writePIString(PIString::fromUTF8("test\n"));
|
|
// piCout.writePIString(PIString::fromUTF8("бюд\n"));
|
|
// piCout << "бюд\n";
|
|
PIVector<int> v{1, 2, 3, 4, 5};
|
|
int s = v.reduce<int>([](int e, int acc){return acc + e;});
|
|
piCout << s; // 15
|
|
return 0;
|
|
}
|