From d689bdb6e2729fd36026d04376082b425317a731 Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 9 Jul 2012 07:05:51 +0000 Subject: [PATCH] tutorial: Core09 git-svn-id: svn://ultimatepp.org/upp/trunk@5159 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- tutorial/Core01/Core01.upp | 3 +++ tutorial/Core02/Core02.upp | 3 +++ tutorial/Core03/Core03.upp | 3 +++ tutorial/Core04/Core04.upp | 3 +++ tutorial/Core05/Core05.upp | 3 +++ tutorial/Core06/Core06.upp | 3 +++ tutorial/Core07/Core07.upp | 3 +++ tutorial/Core08/Core08.cpp | 24 ++++++++++++++++-------- tutorial/Core08/Core08.upp | 2 ++ tutorial/Core08/init | 4 ++++ tutorial/Core09/Core09.cpp | 23 +++++++++++++++++++++++ tutorial/Core09/Core09.upp | 11 +++++++++++ tutorial/Core09/init | 4 ++++ 13 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 tutorial/Core08/init create mode 100644 tutorial/Core09/Core09.cpp create mode 100644 tutorial/Core09/Core09.upp create mode 100644 tutorial/Core09/init diff --git a/tutorial/Core01/Core01.upp b/tutorial/Core01/Core01.upp index 672e0cddf..4ad527905 100644 --- a/tutorial/Core01/Core01.upp +++ b/tutorial/Core01/Core01.upp @@ -1,3 +1,5 @@ +description "String\377"; + uses Core; @@ -6,3 +8,4 @@ file mainconfig "" = ""; + diff --git a/tutorial/Core02/Core02.upp b/tutorial/Core02/Core02.upp index 672e0cddf..f60d8d970 100644 --- a/tutorial/Core02/Core02.upp +++ b/tutorial/Core02/Core02.upp @@ -1,3 +1,5 @@ +description "StringBuffer\377"; + uses Core; @@ -6,3 +8,4 @@ file mainconfig "" = ""; + diff --git a/tutorial/Core03/Core03.upp b/tutorial/Core03/Core03.upp index 672e0cddf..772589ae0 100644 --- a/tutorial/Core03/Core03.upp +++ b/tutorial/Core03/Core03.upp @@ -1,3 +1,5 @@ +description "WString\377"; + uses Core; @@ -6,3 +8,4 @@ file mainconfig "" = ""; + diff --git a/tutorial/Core04/Core04.upp b/tutorial/Core04/Core04.upp index 3166128fe..9f1b47faf 100644 --- a/tutorial/Core04/Core04.upp +++ b/tutorial/Core04/Core04.upp @@ -1,3 +1,5 @@ +description "Date and Time\377"; + uses Core; @@ -6,3 +8,4 @@ file mainconfig "" = ""; + diff --git a/tutorial/Core05/Core05.upp b/tutorial/Core05/Core05.upp index 84b92b314..764d3bcb0 100644 --- a/tutorial/Core05/Core05.upp +++ b/tutorial/Core05/Core05.upp @@ -1,3 +1,5 @@ +description "AsString, ToString and operator<<\377"; + uses Core; @@ -6,3 +8,4 @@ file mainconfig "" = ""; + diff --git a/tutorial/Core06/Core06.upp b/tutorial/Core06/Core06.upp index be8fc8036..e2ae3e372 100644 --- a/tutorial/Core06/Core06.upp +++ b/tutorial/Core06/Core06.upp @@ -1,3 +1,5 @@ +description "Value\377"; + uses Core; @@ -6,3 +8,4 @@ file mainconfig "" = ""; + diff --git a/tutorial/Core07/Core07.upp b/tutorial/Core07/Core07.upp index 3465296b1..448c71d05 100644 --- a/tutorial/Core07/Core07.upp +++ b/tutorial/Core07/Core07.upp @@ -1,3 +1,5 @@ +description "Null\377"; + uses Core; @@ -6,3 +8,4 @@ file mainconfig "" = ""; + diff --git a/tutorial/Core08/Core08.cpp b/tutorial/Core08/Core08.cpp index 117f5b470..cf78a1570 100644 --- a/tutorial/Core08/Core08.cpp +++ b/tutorial/Core08/Core08.cpp @@ -2,9 +2,14 @@ using namespace Upp; -struct Foo : AssignValueTypeNo { +struct RawFoo { + String x; +}; + +struct Foo : ValueType { int x; + Foo(const Nuller&) { x = Null; } Foo(int x) : x(x) {} Foo() {} @@ -14,27 +19,30 @@ struct Foo : AssignValueTypeNo { bool operator==(const Foo& b) const { return x == b.x; } bool IsNullInstance() const { return IsNull(x); } - operator Value() { return RichToValue(*this); } - Foo(const Value& v) { *this = ValueTo(v); } + operator Value() { return RichToValue(*this); } + Foo(const Value& v) { *this = v.Get(); } }; INITBLOCK { - RichValue::Register(); + Value::Register(); } CONSOLE_APP_MAIN { - Value v = RawToValue(Foo(12345)); - DUMP(v.Is()); - DUMP(ValueTo(v).x); + RawFoo h; + h.x = "hello"; + Value q = RawToValue(h); + DUMP(q.Is()); + DUMP(q.To().x); Value a = RichToValue(Foo(54321)); Value b = RichToValue(Foo(54321)); DUMP(a == b); DUMP(IsNull(a)); String s = StoreAsString(a); + Value v; LoadFromString(v, s); - DUMP(ValueTo(v)); + DUMP(v.Get()); Value c = Foo(321); Foo x = c; diff --git a/tutorial/Core08/Core08.upp b/tutorial/Core08/Core08.upp index 630c0dce5..e7e3ec48f 100644 --- a/tutorial/Core08/Core08.upp +++ b/tutorial/Core08/Core08.upp @@ -1,3 +1,5 @@ +description "Client types and Value, RawValue, RichValue\377"; + uses Core; diff --git a/tutorial/Core08/init b/tutorial/Core08/init new file mode 100644 index 000000000..1bd4ffa75 --- /dev/null +++ b/tutorial/Core08/init @@ -0,0 +1,4 @@ +#ifndef _Core08_icpp_init_stub +#define _Core08_icpp_init_stub +#include "Core/init" +#endif diff --git a/tutorial/Core09/Core09.cpp b/tutorial/Core09/Core09.cpp new file mode 100644 index 000000000..9ae96578a --- /dev/null +++ b/tutorial/Core09/Core09.cpp @@ -0,0 +1,23 @@ +#include + +using namespace Upp; + +struct Foo { + String a; + int b; + + unsigned GetHashValue() const { return CombineHash(a, b); } +}; + +CONSOLE_APP_MAIN +{ + Foo x; + x.a = "world"; + x.b = 22; + + DUMP(GetHashValue(x)); + + x.a << '!'; + + DUMP(GetHashValue(x)); +} diff --git a/tutorial/Core09/Core09.upp b/tutorial/Core09/Core09.upp new file mode 100644 index 000000000..13d8c0e99 --- /dev/null +++ b/tutorial/Core09/Core09.upp @@ -0,0 +1,11 @@ +description "CombineHash\377"; + +uses + Core; + +file + Core09.cpp; + +mainconfig + "" = "SSE2"; + diff --git a/tutorial/Core09/init b/tutorial/Core09/init new file mode 100644 index 000000000..f6acf8bdd --- /dev/null +++ b/tutorial/Core09/init @@ -0,0 +1,4 @@ +#ifndef _Core09_icpp_init_stub +#define _Core09_icpp_init_stub +#include "Core/init" +#endif