- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
/***********************************************************************************
*
* AddItem
*
* Adds SearchTemplate search to the internal search engines list
* and to the UserSearches
*
***********************************************************************************/
OP_STATUS SearchEngineManager::AddItem(SearchTemplate* search)
{
// trying to modify searches before LoadSearchesL() ?
OP_ASSERT(HasLoadedConfig());
if (!search->GetUniqueGUID().HasContent())
{
OpString guid;
if (OpStatus::IsSuccess(StringUtils::GenerateClientID(guid)))
{
search->SetUniqueGUID(guid.CStr());
OP_ASSERT(search->GetUniqueGUID().HasContent());
}
}
// Should never add item that's already in the list
SearchTemplate* temp = g_searchEngineManager->GetByUniqueGUID(search->GetUniqueGUID());
OP_ASSERT(!temp);
OP_STATUS status = m_search_engines_list.Add(search);
if (OpStatus::IsSuccess(status))
{
m_usersearches->AddUserSearch(search);
#ifdef SUPPORT_SYNC_SEARCHES
BroadcastSearchEngineAdded(search);
#endif
}
return status;
}
Вот ещё пример:
Перед ассертом выполняется полезная операция, но проверка статуса выполняется только в дебаге.
MSVC выдаёт ворнинги всего пяти типов:
1. local variable is initialized but not referenced, когда после инициализации переменной идёт OP_ASSERT.
2. default constructor could not be generated; user defined constructor required, когда конструктор объявляется только в некоторых сборках, а в остальных класс болтается вхолостую.
3. 'type cast' : from function pointer <...> to data pointer 'void *'
4. potentially uninitialized local variable — увы, есть и такой грех.
5. unreachable code, когда выше по коду были return'ы (хотя на самом деле при некоторых условиях код достижим).
Надо попробовать собрать gcc, шлангом и другими компиляторами для сравнения.
Хотел скомпилировать в Mingw или в Cygwin, но в проекте почти нет мейкфайлов, потому что используется собственная система сборки flower, написанная напитоне. Никогда бы не подумал, что Опера пошлёт меня напитон... Питонячий код использует вызов метода poll, который в прыщеговне виндовом порте Питона отсутствует. Значит, чтобы скомпилировать из-под Windows, придётся переписывать вот это:
И вот это:
1. В винсокете, начиная с Висты, появилась функция WSAPoll, которая является аналогом никсового poll. Но для её использования придётся патчить и перекомпилировать прыщеговно:
https://bugs.python.org/issue16507
2. Заменить в скриптах select.poll() на select.select() (и соответственно пропатчить другие вызовы).
Вот жопа.
Теперь ругается на отсутствие сигналов...
http://python.su/forum/topic/12946/
http://stackoverflow.com/questions/6260149/os-symlink-support-in-windows
комплишн порты надо использовать для нормальной асинхронщины на шиндошс
тот же буст.асио
pydarasio, ага
как тот же буст.асио
скрывает под капот всю эту платформозависимость
гугл подсказывает, что и для питонодоширакоблядей есть потуги, всякие PyParallel, ну или вот http://bugs.python.org/issue16175
Яндекс ничего не нашёл по этому запросу, а Гугл предложил поискать пидарасов.
Вау
Для файлов нужно оверлапд и вейтформультиплобжекц или GetOverlappedResult
Кстати , еполл в линуксе тоже не совсем честно полит файлы
Но апи, конечно, приятнее
А есть функция GetNonUniqueGloballyUniqueIDentifier?
Возможно, это был первый в истории человечества спойлер
Аниме тут не при чём. Это скандинавская мифилогия, проверь.
Её даже в школе проходят в шестом классе (во всяком случае, у нас была).
Opera
Видимо, он всё-таки зацепил одним глазом весьма популярную анимеху, где из этой самой мифологии кучу отсылочек надёргали...
fxd