diff --git a/main.cpp b/main.cpp index 2f6df3d3..e8a12ffd 100644 --- a/main.cpp +++ b/main.cpp @@ -6,17 +6,32 @@ #include "piethernet.h" #include "piintrospection.h" +struct MS { + //MS() {i = 0; f = 0.;} + int i; + float f; + PIString s; +}; + +PIByteArray & operator<<(PIByteArray & ba, const MS & v) {ba << v.i << v.f << v.s; return ba;} +PIByteArray & operator>>(PIByteArray & ba, MS & v) {ba >> v.i >> v.f >> v.s; return ba;} +PICout operator <<(PICout c, const MS & v) {c << "(" << v.i << v.f << v.s << ")"; return c;} + +REGISTER_VARIANT(MS) +REGISTER_VARIANT_CAST(MS, int) {return v.i;} +REGISTER_VARIANT_CAST(MS, float) {return v.f;} +REGISTER_VARIANT_CAST(MS, PIString) {return v.s;} int main (int argc, char * argv[]) { //PIByteArray ba; - PIKbdListener kbd; + /*PIKbdListener kbd; kbd.enableExitCapture(); PIString str; str.reserve(1024*1024); PIINTROSPECTION_START //piCout << PIINTROSPECTION_CONTAINERS->count; - WAIT_FOR_EXIT - /*PIVector vl; + WAIT_FOR_EXIT*/ + PIVector vl; vl << PIVariant('2') << PIVariant(-5.5) << PIVariant(10) << PIVariant(complexd(2,3)) << PIVariant("text") << PIVariant(PIByteArray("bytearray", 9)) << PIVariant(PIDateTime::current()); piForeachC (PIVariant v, vl) piCout << v << v.value(); @@ -28,7 +43,14 @@ int main (int argc, char * argv[]) { for (PIMap::iterator i = __PIVariantInfoStorage__::get()->map->begin(); i != __PIVariantInfoStorage__::get()->map->end(); ++i) piCout << i.key() << i.value()->cast.size(); PIEthernet eth; - piCout << eth.properties();*/ + piCout << eth.properties(); + MS ms = (MS){-1, 3.3, "str"}; + PIVariant mv = PIVariant::fromValue(ms); + piCout << mv << mv.type(); + piCout << mv.toInt(); + piCout << mv.toFloat(); + piCout << mv.toString(); + piCout << ms << mv.value() << vl[0].value(); /*PIScreen screen; TileSimple window; window.back_format.color_back = PIScreenTypes::Red; diff --git a/src/core/pitime.cpp b/src/core/pitime.cpp index a0254797..ce3f86c2 100755 --- a/src/core/pitime.cpp +++ b/src/core/pitime.cpp @@ -418,26 +418,26 @@ PITimeMeasurer::PITimeMeasurer() { } -double PITimeMeasurer::elapsed_n() { +double PITimeMeasurer::elapsed_n() const { return (PISystemTime::current(true) - t_st).toNanoseconds() - PISystemTests::time_elapsed_ns; } -double PITimeMeasurer::elapsed_u() { +double PITimeMeasurer::elapsed_u() const { return (PISystemTime::current(true) - t_st).toMicroseconds() - PISystemTests::time_elapsed_ns / 1.E+3; } -double PITimeMeasurer::elapsed_m() { +double PITimeMeasurer::elapsed_m() const { return (PISystemTime::current(true) - t_st).toMilliseconds() - PISystemTests::time_elapsed_ns / 1.E+6; } -double PITimeMeasurer::elapsed_s() { +double PITimeMeasurer::elapsed_s() const { return (PISystemTime::current(true) - t_st).toSeconds() - PISystemTests::time_elapsed_ns / 1.E+9; } -PISystemTime PITimeMeasurer::elapsed() { +PISystemTime PITimeMeasurer::elapsed() const { return (PISystemTime::current(true) - t_st); } diff --git a/src/core/pitime.h b/src/core/pitime.h index 24f0ada7..ff0711a7 100755 --- a/src/core/pitime.h +++ b/src/core/pitime.h @@ -287,19 +287,19 @@ public: void reset() {t_st = PISystemTime::current(true);} //! \brief Returns nanoseconds elapsed from last \a reset() execution or from timer measurer creation. - double elapsed_n(); + double elapsed_n() const; //! \brief Returns microseconds elapsed from last \a reset() execution or from timer measurer creation. - double elapsed_u(); + double elapsed_u() const; //! \brief Returns milliseconds elapsed from last \a reset() execution or from timer measurer creation. - double elapsed_m(); + double elapsed_m() const; //! \brief Returns seconds elapsed from last \a reset() execution or from timer measurer creation. - double elapsed_s(); + double elapsed_s() const; //! \brief Returns PISystemTime elapsed from last \a reset() execution or from timer measurer creation. - PISystemTime elapsed(); + PISystemTime elapsed() const; double reset_time_n() const {return t_st.toNanoseconds();} double reset_time_u() const {return t_st.toMicroseconds();}