<mikekaganski>
о, я пропустил. Сделай патч из 1 буквы
<mikekaganski>
хотя он уже исправил
JohnDoe_71Rus has joined #libreoffice-ru
<mikekaganski>
tagezi: sberg игнорирует эти соглашения; сам не использует префиксы, и не меняет, когда переделывает чужой код (например, при смене типа).
<mikekaganski>
Но моё мнение, что код с правильными префиксами, во-первых, более читаем, а во-вторых, сам себя во многом документирует, и проще видеть ошибки.
<tagezi>
я тоже использую префексы, я понимаю зачем они нужны
<tagezi>
вопрос в том, зачем знать что это ссылка?
UNIm95 has joined #libreoffice-ru
<mikekaganski>
чтобы понимать, что ты работаешь не с локальными для функции данными, а с переданным внешним объектом
<tagezi>
mikekaganski: а если это не объект, а bool
<tagezi>
?
<tagezi>
тоже r использовать?
<mikekaganski>
а разве ты его по ссылке передаёшь?
<tagezi>
есть в коде такие моменты
<tagezi>
даже в этом файле, который правлю сейчас видел
<tagezi>
linux_clang_dbgutil_64 Провалилось второй раз подряд
<tagezi>
mikekaganski: /home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_clang_dbgutil_64/sc/source/ui/view/output2.cxx:2791:26: error: VclReferenceBase subclass 'OutputDevice *' declared as a pointer member, should be wrapped in VclPtr [loplugin:vclwidgets]
<tagezi>
mikekaganski: так, и как его обернуть? :)
bormant has joined #libreoffice-ru
<tagezi>
так, понял
<tagezi>
нет, не понял
<tagezi>
mikekaganski: короче, нужно чтобы ты объяснил... я не вижу в коде VclPtr<OutputDevice> как указателя, но ты вчера говорил что тут должен быть указатель
<tagezi>
и я не совсем понимаю эту часть
<mikekaganski>
погоди 5 сек
<tagezi>
я вообще никуда не спешу :)
<mikekaganski>
дело в том, что в исходном объекте mpDev как раз VclPtr<OutputDevice>
<mikekaganski>
ну, а я, чтобы упростить работу с указателем, решил в класс передавать и хранить просто указатель (для устранения накладных).
<mikekaganski>
А анализатор (один из плагинов кланга) у нас контролирует. Я спрошу Ноэля, но вероятно, придётся подчиняться :)
<mikekaganski>
даже нет, не буду спрашивать
<tagezi>
просто подчинюсь :)
<tagezi>
что за накладные?
<tagezi>
и кстати, чт такое р в префексе?
<mikekaganski>
Давай так: в конструктор передаём const VclPtr<OutputDevice>& pDev, и в классе VclPtr<OutputDevice> mpDev
<mikekaganski>
В конструкторе убираем совсем инициализацию нулевым указателем (это произойдёт само для VclPtr), а присвоение в случае bCrop сделаем с помощью mpDev.reset(pDev)
<mikekaganski>
Накладные связаны с тем, что VclPtr увеличивает счётчик использований объекта. Это немного, но я хотел и этого избежать
<tagezi>
можно наверное взять для кейса параметры и по их срабатыванию, вызывать функцию с другим кейсом
<mikekaganski>
ну, технически можно было бы ввести переменную-ошибку, и её выставлять, а собственно вызов SetError унести вниз ... но это визуально ничего не изменит
<mikekaganski>
с т.з. производительности тоже
<mikekaganski>
разве что сгенерированный двоичный код может быть покомпактнее
<mikekaganski>
в данном случае, на мой взгляд, не нужно
<tagezi>
ну, ладно...
<tagezi>
просто эти 40 строк повторены 4 раза
<mikekaganski>
а ты с тем файлом закончил? или от него уже тошнит? :)
<tagezi>
не, там ещё нужно ковырять
<tagezi>
одно место точно.. я просто разбираю ложные срабатывания и смотрю, что можно сделать ещё
<tagezi>
очень много повторов в бридже и vcl
<tagezi>
но туда страшно лезть
<mikekaganski>
ты не бойся туда лезть.
<mikekaganski>
Отправим и пригласим спецов, пусть критикуют. Заодно узнаем что-то новое
<tagezi>
ещё в формулах калька полно повторов
<tagezi>
почему народ не строит примитивы?
<tagezi>
это же логично... куча функций должна отрабатывать одни и теже штуки, может в разном порядке но всеравно
<mikekaganski>
это вопрос не к "народу", а к конкретным людям. Кто-то строит. И ещё вопрос, какого времени те повторы...
<tagezi>
созданее примитивов, может ускорить разработку новых вариантов
<tagezi>
ну, оп_ были все сделаны уже в ЛО, настоколько я помню
<mikekaganski>
инициализация nullptr и так делается в конструкторе VclPtr
<mikekaganski>
без разницы - либо делай ресет перед вложенным условием, либо до инициализации используй аргумент функции, а не член класса... одинаково
<tagezi>
если bClip тру, то mpDev.reset(pDev); делается
<mikekaganski>
tagezi: всё верно. Просто использовать mpDev можно только после этого; до этого - можно использовать только pDev
<tagezi>
mikekaganski: а что делает ресет?
<tagezi>
он перезагружает объект новым?
<mikekaganski>
да
<tagezi>
это как равно, но умнее?
<mikekaganski>
да :)
<mikekaganski>
если там уже был указатель, он перед назначением нового освобождается
<tagezi>
круто..
* tagezi
не подумал что там может быть указатель
<mikekaganski>
причём там счётчик использований, т.е. пока последний из владельцев его не освободит, объект будет жить
<tagezi>
о, тест прошёл
<JohnDoe_71Rus>
умная железяка, блин
<mikekaganski>
а вы говорите - бездумно кодим. Ничего подобного! Мы кодим, а железяка думает!
<tagezi>
так вы то всеравно бездумно кодите :)
<tagezi>
особенно вы, который я
<mikekaganski>
это называется разделение труда :)
<tagezi>
что-то у меня не сраслось с инициализацией переменной никак это
<tagezi>
странно
<tagezi>
7 сет пошёл
<mikekaganski>
не сраслось что?
<tagezi>
да вот как-то да.. я же убрал инициализацию, ты мне об этом сказал, но я забыл проверить последовательность использования переменной
<mikekaganski>
погоди
<mikekaganski>
ты проверил свой последний патчсет?
<mikekaganski>
там ты взад заменяешь правки Eike
<tagezi>
какие?
<tagezi>
о_О
<mikekaganski>
хотя, наверное, нет
<mikekaganski>
это игры ребейсов. Ты же пока не ребейсил свою репу после того, как Eike евой прошлый патч подшаманил?
<tagezi>
так, ты меня не путай.. тот патч был ещё вчера с утра, он уже с правками эрАк в опенглоке даже есть
<mikekaganski>
Но это просто потому, что твой шестой авриант был ребейс, а седьмой опять основан на твоей локальной репе, а не потому, что ты в патч всунул старый код
<mikekaganski>
как откуда? из геррита, вестимо
JohnDoe_71Rus has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org]
<mikekaganski>
открываешь там любой свой файл, а потом вверху выбираешь, между какой и какой версиями ты смотришь дифф
<tagezi>
и как ты это получил?
<mikekaganski>
см. Patch set Base 1 2 3 4 5 6 7 вверху каждой панели
<tagezi>
так, нужно сразу ребейс делать?
<mikekaganski>
нет
<mikekaganski>
кстати, наверное, всё же придётся. Во всех трёх случаях, когда ты заливал предыдущие патчи, ошибка была не связана с твоим изменением; только после ребейса вылезала ошибка с твоим кодом.
<tagezi>
ну, оно начало собираться
<tagezi>
а правки эрАка не отменятся?
<tagezi>
если без ребейса?
<tagezi>
так, ладно, пойду погуляю, а то голова пухнет, вернусь будет видно
<tagezi>
linux_gcc_release_64 уже собрался
kompi has joined #libreoffice-ru
<kompi>
mikekaganski: а зачем идет сборка разными компиляторами? для проверки качества кода?
JohnDoe_71Rus has joined #libreoffice-ru
<mikekaganski>
kompi: да, для максимального охвата разными компиляторами, проверками, режимами. И есть ведь специфичный для разных платформ код
<tagezi>
там этих платформ просто дофига
<tagezi>
шлянь в бридж :)
<tagezi>
глянь*
<JohnDoe_71Rus>
раньше был блек джек с куртизанками, теперь бридж
<tagezi>
вообще bridge - это мост
<tagezi>
щтука которая связывает два берега, в данном случае программу и платформу
<mikekaganski>
tagezi: куда конкретно глядеть?
<tagezi>
bridges/source/cpp_uno/
<tagezi>
это только по линуху.. есть ещё где-то по винде
<mikekaganski>
А... я подумал, это ты про очередные копипасты
<tagezi>
там копипстов охренеть как много
<tagezi>
273 совпадения
<tagezi>
и я тебе говорил, что мне страшновато как-то это трогать
<tagezi>
а кто занимается ими?
<kompi>
ты!
<mikekaganski>
то есть после твоих правок, там останется 30 строк кода? ;)