PICout optimization
This commit is contained in:
91
main.cpp
91
main.cpp
@@ -1,9 +1,92 @@
|
||||
#include "pip.h"
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
class ROString {
|
||||
public:
|
||||
inline ROString() : len(0), str(nullptr) {}
|
||||
inline ROString(const char * string) {
|
||||
str = string;
|
||||
len = strlen(string);
|
||||
}
|
||||
inline ROString(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 ROString & operator =(const ROString & s) {
|
||||
if (this == &s) return *this;
|
||||
len = s.len;
|
||||
str = s.str;
|
||||
return *this;
|
||||
}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Assign move operator.
|
||||
//! \~russian Оператор перемещающего присваивания.
|
||||
inline ROString & operator =(ROString && s) {
|
||||
swap(s);
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline void swap(ROString& 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 ROString & v) {
|
||||
s.space();
|
||||
s.quote();
|
||||
s.write(v.data(), v.size());
|
||||
s.quote();
|
||||
return s;
|
||||
}
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
PIVector<int> v{5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
|
||||
v.sort([](const int & a, const int & b){return a > b;});
|
||||
piCout << v; // 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
|
||||
const char * dd = "12345";
|
||||
char text[]{ "hello" };
|
||||
ROString s("test");
|
||||
piCout << s;
|
||||
ROString s2;
|
||||
piCout << s2;
|
||||
s2 = s;
|
||||
piCout << s2;
|
||||
s2 = text;
|
||||
s = s2;
|
||||
piCout << s << s2;
|
||||
// s2 = s;
|
||||
text[1] = '0';
|
||||
piCout << text;
|
||||
piCout << s << s2 << ROString(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";
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user