Tizen 2.0
От: enji  
Дата: 19.02.13 16:34
Оценка: :))) :))) :))
Стащил у eao197.

Будущее мобильной разработки, Tizen 2.0. По моему, шикарно... 6 new, 3 каста, 1 delete и даже E_SUCCESS
    void
    MyClass::HashMapSample(void)
    {
        HashMap map(SingleObjectDeleter);

        // Constructs a %HashMap instance with default capacity, load factor, hash code provider, and comparer
        map.Construct();

        map.Add(new String(L"Zero"), new Integer(0));       // map.GetCount() : 1, map : (Zero -> 0)
        map.Add(new String(L"One"), new Integer(1));        // map.GetCount() : 2, map : (Zero -> 0), (one -> 1)
        map.Add(new String(L"Two"), new Integer(2));        // map.GetCount() : 3, map : (Zero -> 0), (one -> 1), (Two -> 2)

        // Gets a value with the specified key
        Integer*    pValue = static_cast< Integer* > (map.GetValue(String(L"Zero")));       // pValue : 0

        // Removes the value with the specified key
        map.Remove(String(L"Zero"));                                            // map.GetCount() : 2, map : (one -> 1), (Two -> 2)

        // Uses an enumerator to access elements in the list
        IMapEnumerator* pMapEnum = map.GetMapEnumeratorN();
        String* pKey = null;
        while (pMapEnum->MoveNext() == E_SUCCESS)
        {
            pKey = static_cast< String* > (pMapEnum->GetKey());
            pValue = static_cast< Integer* > (pMapEnum->GetValue());
        }

        delete pMapEnum;

        // Deallocates all objects
        // Because the destructor calls RemoveAll() internally, you don't need to call RemoveAll() to destroy all elements at the end.
        map.RemoveAll();

    }


01.03.13 13:58: Перенесено модератором из 'C/C++'. Извините, но размер дискуссии говорит за себя. — Кодт
Re: Tizen 2.0
От: niXman Ниоткуда https://github.com/niXman
Дата: 19.02.13 16:46
Оценка:
Здравствуйте, enji, Вы писали:

E>Стащил у eao197.

это кто/что ?

E>Будущее мобильной разработки, Tizen 2.0. По моему, шикарно... 6 new, 3 каста, 1 delete и даже E_SUCCESS

вот не уверен, это сарказм, или как?
new и delete, действительно провоцируют вопросы...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: Tizen 2.0
От: pzhy  
Дата: 19.02.13 17:27
Оценка:
Здравствуйте, enji, Вы писали:

E>Стащил у eao197.


E>Будущее мобильной разработки, Tizen 2.0. По моему, шикарно... 6 new, 3 каста, 1 delete и даже E_SUCCESS

E>
E>    void
E>    MyClass::HashMapSample(void)
E>    {
E>        HashMap map(SingleObjectDeleter);

E>        // Constructs a %HashMap instance with default capacity, load factor, hash code provider, and comparer
E>        map.Construct();

E>        map.Add(new String(L"Zero"), new Integer(0));       // map.GetCount() : 1, map : (Zero -> 0)
E>        map.Add(new String(L"One"), new Integer(1));        // map.GetCount() : 2, map : (Zero -> 0), (one -> 1)
E>        map.Add(new String(L"Two"), new Integer(2));        // map.GetCount() : 3, map : (Zero -> 0), (one -> 1), (Two -> 2)

E>        // Gets a value with the specified key
E>        Integer*    pValue = static_cast< Integer* > (map.GetValue(String(L"Zero")));       // pValue : 0

E>        // Removes the value with the specified key
E>        map.Remove(String(L"Zero"));                                            // map.GetCount() : 2, map : (one -> 1), (Two -> 2)

E>        // Uses an enumerator to access elements in the list
E>        IMapEnumerator* pMapEnum = map.GetMapEnumeratorN();
E>        String* pKey = null;
E>        while (pMapEnum->MoveNext() == E_SUCCESS)
E>        {
E>            pKey = static_cast< String* > (pMapEnum->GetKey());
E>            pValue = static_cast< Integer* > (pMapEnum->GetValue());
E>        }

E>        delete pMapEnum;

E>        // Deallocates all objects
E>        // Because the destructor calls RemoveAll() internally, you don't need to call RemoveAll() to destroy all elements at the end.
E>        map.RemoveAll();

E>    }
E>


так ведь Sample.
Re[2]: Tizen 2.0
От: MTD https://github.com/mtrempoltsev
Дата: 19.02.13 17:31
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, enji, Вы писали:


E>>Стащил у eao197.

X>это кто/что ?

Это неглупый мужчина, который писал здесь порой интересные вещи, пока не ушел из-за разногласий с модераторами. Ведет блог.

X>вот не уверен, это сарказм, или как?


Сарказм-сарказм
Re[2]: Tizen 2.0
От: MTD https://github.com/mtrempoltsev
Дата: 19.02.13 17:31
Оценка:
Здравствуйте, pzhy, Вы писали:

P>так ведь Sample.


Спасибо, больше не надо.
Re: Tizen 2.0
От: MTD https://github.com/mtrempoltsev
Дата: 19.02.13 17:36
Оценка: 1 (1) :))
Здравствуйте, enji, Вы писали:

Мысли разработчика.

E> void

E> MyClass::HashMapSample(void)

Как я скучаю по старому доброму С и пятидюймовым дискетам.

E> HashMap map(SingleObjectDeleter);

E> map.Add(new String(L"Zero"), new Integer(0)); // map.GetCount() : 1, map : (Zero -> 0)
E> map.Add(new String(L"One"), new Integer(1)); // map.GetCount() : 2, map : (Zero -> 0), (one -> 1)
E> map.Add(new String(L"Two"), new Integer(2)); // map.GetCount() : 3, map : (Zero -> 0), (one -> 1),

Черт! Кто мне подложил книжку по яве?

E> // Gets a value with the specified key

E> Integer* pValue = static_cast< Integer* > (map.GetValue(String(L"Zero"))); // pValue : 0

Избегайте кастов в стиле С! И пусть не говорят, что я не знаю плюсов.
Re: Tizen 2.0
От: Ops Россия  
Дата: 19.02.13 18:38
Оценка:
Здравствуйте, enji, Вы писали:

E>Будущее мобильной разработки, Tizen 2.0. По моему, шикарно... 6 new, 3 каста, 1 delete и даже E_SUCCESS


А Tizen тут причем? Код как код, на govnokod.ru намного круче можно найти, а такого везде полно.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: Tizen 2.0
От: enji  
Дата: 19.02.13 19:06
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, enji, Вы писали:


E>>Будущее мобильной разработки, Tizen 2.0. По моему, шикарно... 6 new, 3 каста, 1 delete и даже E_SUCCESS


Ops>А Tizen тут причем?


это код из его хелпа. И интерфейс контейнера намекает нам, что такого кода будет много...

Ops>Код как код, на govnokod.ru намного круче можно найти, а такого везде полно.


Ну это не говнокод.ру, а инновационный продукт интела и самсунга, как я понимаю...
Re: Tizen 2.0
От: minorlogic Украина  
Дата: 19.02.13 19:19
Оценка: 1 (1) +6
Только не говорите что это C++
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Tizen 2.0
От: Ops Россия  
Дата: 19.02.13 21:18
Оценка:
Здравствуйте, enji, Вы писали:

Ops>>А Tizen тут причем?

E>это код из его хелпа. И интерфейс контейнера намекает нам, что такого кода будет много...
Ops>>Код как код, на govnokod.ru намного круче можно найти, а такого везде полно.
E>Ну это не говнокод.ру, а инновационный продукт интела и самсунга, как я понимаю...

Как вариант, хелп спихнули на студентов?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Tizen 2.0
От: UA Украина  
Дата: 19.02.13 22:30
Оценка: :)
Здравствуйте, enji, Вы писали:

Пропустили вызов
map.Destruct();

Re: Tizen 2.0
От: landerhigh Пират  
Дата: 20.02.13 00:53
Оценка: +6 :)))
Здравствуйте, enji, Вы писали:

E>Стащил у eao197.


Шутки в сторону, но это же ахтунг и аллес капут в одном флаконе

The object is not fully constructed after this constructor is called. For full construction,
the Construct() method must be called right after calling this constructor.


тынц

Ой, а тут еще вкусное

Error handling in Tizen works differently compared to standard C++. Tizen uses error results instead of C++ exceptions, due to historical reasons.


Как говорят на детском форуме, закапывайте.
www.blinnov.com
Re: Вот еще, или я, кажется, читать разучился
От: landerhigh Пират  
Дата: 20.02.13 03:46
Оценка:
Здравствуйте, enji, Вы писали:


Q: Why does Tizen use two-phase construction?

A: Tizen does not use the C++ exception mechanism. This reduces its footprint and runtime overhead. As a result, any exception occurring in C++ object construction cannot be reported to the application.

Furthermore, when a failure occurs in allocating resources during an object's construction, the object is partially constructed and its destructor is not called, possibly causing a resource leak. To resolve these problems, Tizen uses the two-phase construction idiom for many classes where exceptions must be reported to Tizen native applications. For more information, see Two-phase Construction.
Q: What happens if I do not call a Construct() method?

A: Some methods throw an exception, and some return a probably meaningless value. In any case, Tizen does not guarantee the reliability or consistency of user applications. You must make sure that the Construct()method is invoked properly before an instance of a two-phase construction class is used.



ЭТО как?
www.blinnov.com
Re[2]: Вот еще, или я, кажется, читать разучился
От: jazzer Россия Skype: enerjazzer
Дата: 20.02.13 04:08
Оценка: +2
Здравствуйте, landerhigh, Вы писали:

Я так понял, у них под исключениями понимаются не исключения С++, а коды возврата E_*.
Либо у них могут вылетать исключения в случае попытки использования объекта до вызова Construct().
В общем, они пошли по пути Симбиана, в котором не было исключений, типа слишком тяжелый механизм для мобильных устройств (при этом они собираются запускать Java, где исключения летают только в путь ).
Т.е. получается что-то между Си и С++.
Имхо, правильнее относиться как к Си с небольшим сиплюсовидным сахаром.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Вот еще, или я, кажется, читать разучился
От: landerhigh Пират  
Дата: 20.02.13 05:27
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, landerhigh, Вы писали:


J>Я так понял, у них под исключениями понимаются не исключения С++, а коды возврата E_*.


Я вот документацию привык понимать буквально.

J>Либо у них могут вылетать исключения в случае попытки использования объекта до вызова Construct().


Да двухфазная инициализация — это жесть. Получается, что тебе дали объект, но сказать, можно ли его использовать, забыли. Особенно забавно на этом фоне выглядят конструкторы копирования

J>В общем, они пошли по пути Симбиана, в котором не было исключений, типа слишком тяжелый механизм для мобильных устройств (при этом они собираются запускать Java, где исключения летают только в путь ).


Вроде бы, собственно механизм исключений в Java достаточно легковесный. Однако сама идея экономить на спичках (икключениях), чтобы потом запускать Java попахивает каким-то идиотизмом.
www.blinnov.com
Re[4]: Вот еще, или я, кажется, читать разучился
От: jazzer Россия Skype: enerjazzer
Дата: 20.02.13 06:22
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, landerhigh, Вы писали:


J>>Я так понял, у них под исключениями понимаются не исключения С++, а коды возврата E_*.


L>Я вот документацию привык понимать буквально.


Я вот эту страничку имел в виду: https://developer.tizen.org/help/topic/org.tizen.native.appprogramming/html/basics_tizen_programming/exception_check.htm

Out-of-memory Exception

Almost all APIs, except simple getter methods, can potentially throw an E_OUT_OF_MEMORY exception, although the APIs do not specify the out-of-memory (OOM) exception.
...

if (GetLastResult() == E_OUT_OF_MEMORY)


J>>Либо у них могут вылетать исключения в случае попытки использования объекта до вызова Construct().


L>Да двухфазная инициализация — это жесть. Получается, что тебе дали объект, но сказать, можно ли его использовать, забыли. Особенно забавно на этом фоне выглядят конструкторы копирования

Ну, может, у них есть какой-нть is_initialized()

J>>В общем, они пошли по пути Симбиана, в котором не было исключений, типа слишком тяжелый механизм для мобильных устройств (при этом они собираются запускать Java, где исключения летают только в путь ).

L>Вроде бы, собственно механизм исключений в Java достаточно легковесный. Однако сама идея экономить на спичках (икключениях), чтобы потом запускать Java попахивает каким-то идиотизмом.
+1
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: Tizen 2.0
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 20.02.13 09:00
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, enji, Вы писали:


Ops>>>А Tizen тут причем?

E>>это код из его хелпа. И интерфейс контейнера намекает нам, что такого кода будет много...
Ops>>>Код как код, на govnokod.ru намного круче можно найти, а такого везде полно.
E>>Ну это не говнокод.ру, а инновационный продукт интела и самсунга, как я понимаю...

Ops>Как вариант, хелп спихнули на студентов?

Хелп спихнули на нативов — корейцев. Как, впрочем, и многое другое.
Sic luceat lux!
Re[4]: Tizen 2.0
От: MTD https://github.com/mtrempoltsev
Дата: 20.02.13 09:04
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Как вариант, хелп спихнули на студентов?


Судя по коду не только хелп. Пример:

IMapEnumerator* pMapEnum = map.GetMapEnumeratorN();
delete pMapEnum;


Это же прекрасно, когда метод мапы возвращает объект который надо не забыть удалить!
Re: Tizen 2.0
От: niXman Ниоткуда https://github.com/niXman
Дата: 20.02.13 09:10
Оценка:
Здравствуйте, enji, Вы писали:

E> HashMap map(SingleObjectDeleter);


E> // Constructs a %HashMap instance with default capacity, load factor, hash code provider, and comparer

E> map.Construct();

E> map.Add(new String(L"Zero"), new Integer(0)); // map.GetCount() : 1, map : (Zero -> 0)

E> map.Add(new String(L"One"), new Integer(1)); // map.GetCount() : 2, map : (Zero -> 0), (one -> 1)
E> map.Add(new String(L"Two"), new Integer(2)); // map.GetCount() : 3, map : (Zero -> 0), (one -> 1), (Two -> 2)
так это что же получается, у них и шаблонов нет и смарт указателей тожа? оО
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: Вот еще, или я, кажется, читать разучился
От: Mr.Delphist  
Дата: 20.02.13 09:22
Оценка:
Здравствуйте, jazzer, Вы писали:

J>В общем, они пошли по пути Симбиана, в котором не было исключений, типа слишком тяжелый механизм для мобильных устройств

Выходит, не мне одному это показалось знакомым
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.