- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
/* Copyright 2009 10gen Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* all the numbers that fit in a 4 byte string */
const char bson_numstrs[1000][4] = {
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
/* 105 строк поскипано */
"980", "981", "982", "983", "984", "985", "986", "987", "988", "989",
"990", "991", "992", "993", "994", "995", "996", "997", "998", "999",
};
Взято отсюда - http://github.com/mongodb/mongo-c-driver/blob/master/src/numbers.c . А это коммит - http://github.com/mongodb/mongo-c-driver/commit/0198225180a51e0b0b8a84f25b34b3047d3b9c80
raorn 02.06.2010 10:17 # +6
guest 02.06.2010 11:28 # +3
Stalker 02.06.2010 11:33 # 0
Oleg_quadro_ 02.06.2010 13:00 # +1
Stalker 02.06.2010 20:17 # +3
Oleg_quadro 04.06.2010 00:52 # 0
HyperGeek 02.06.2010 11:48 # +2
sprintf sucks. use lookup table for all nums < 1000
cfdev 02.06.2010 11:53 # +2
> sprintf sucks
так и есть, он медленный. вот мой велосипед:
pushkoff 02.06.2010 18:48 # −2
эту строку на главную
wchar_t* ptr = buf + 15;
в данном контексте она займет достойное место среди самого отменного говнокода...
guest 02.06.2010 19:16 # +3
в данном контексте она займет достойное место среди самого отменного говнокода...
обоснуй.
pushkoff 02.06.2010 19:44 # −2
guest 02.06.2010 20:05 # +4
капча 6666 подтверждает
pushkoff 02.06.2010 20:18 # −2
некрасиво отмазки под гостем лепить...
guest 02.06.2010 22:28 # 0
не понял
pushkoff 02.06.2010 23:31 # −2
guest 02.06.2010 23:59 # +1
я опять тебя не понял. что за хуйню ты порешь?
guest 03.06.2010 00:00 # 0
pushkoff 03.06.2010 03:56 # 0
guest 03.06.2010 11:59 # +5
ассерты в не публичных функциях - для лосей типа с++ников или пхпистов.
написано - только 16 байтов, значит столько. если какое другое число - то ты говнокодер, трепло и хуйло, а не программист, выеби себя в жопу и сдохни.
pushkoff 03.06.2010 12:25 # −3
документацию никто никогда не читает, если у кого-то возникает задача то он спросит о коллег и те расскажут что видели такую функцию, человек ее использует (интелисенс еще и подскажет что подсовывать) у него получается, он радуется, рапортует о завершении своего таска и тут начинаются никому непонятные глюки...
guest 03.06.2010 13:00 # +5
ну всё понятно, ты бы так сразу и сказал, что ты тупая обезьянка из быдлоконторы.
_cfint_ToWBuffer - это, повторяю для макак 10-ый раз, внутренняя функция модуля, она юзается только изнутри модуля и к ней имеют доступ разработчики модуля, она юзается в единичеых местах, а к разработке самого ядра всей моей заманухи долбоёбов, не читающих документации и пишущих код тыкая пальцем в небо я на йоту не подпущу.
pushkoff 03.06.2010 15:13 # −3
guest 03.06.2010 18:46 # +4
это страхи быдлообезьянки среднего звена - лёгкая заменяемость одной на другую. у меня такого страха нет. А знаешь почему? )
pushkoff 03.06.2010 20:09 # 0
тебя же не уволят, из-за того что в этом говне можешь ковыряться только ты...
guest 03.06.2010 13:05 # +5
> человек ее использует (интелисенс еще и подскажет что подсовывать)
уахаха, это вы в своей конторке ТАК пишете код? да ты ещё забавнее, чем я думал.
pushkoff 03.06.2010 15:15 # 0
pushkoff 03.06.2010 12:53 # 0
guest 03.06.2010 13:08 # +5
все эти ассерты они по незнанию, неуверенности, отсутствию внимания и ума. т.е. как раз для с++ников и шарпистов всяких, которые уже садятся писать код, не имея никакого представления, с какой библиотекой работают. и это их не спасает, и всё роавно у них постоянно всё падает.
pushkoff 03.06.2010 15:19 # −2
код должен сам искать в себе ошибки, и именно такой код экономически эффективен...
guest 03.06.2010 18:38 # +5
пиздец, я тебе уже 20-ый повторю, наверное... в дельфи есть такое понятие, как nested-функции. твоя тупая головушка, надеюсь згнает, что это? так вот, __cfint_ToWBuffer - это nested-функция функции cfint_ToString. С какого хуя я должен тыщу раз перепроверять данные внутри одной (над)функции? я же не какой-нибудь ебанутый на всю голову с++ник.
guest 03.06.2010 18:58 # +3
ты неправ очень сильно. говнокод пишется говнокодерами. ассерты - шаг не к отсутствию говнокода, а шаг к сдерживанию говнокодеров (fool-proof code).
вместо того, чтобы сдерживать говнокодеров, лучше бы их просто не допускать за милю.
что касается ошибок по невниманию - то они случаются у жалких людишек всегда, в независимости от сдерживающих мер, которые, например, сами могут быть говнокодом, например, давеча в одной игрушке в одной локации происходил креш... с ассертом. Уже в продакшене. Стало быть, сдерживающие меры тоже нужно защищать? А сдерживающие меры сдерживающих мер? И так до бесконечности? А не проще ли тупо всё семь раз перепроверить? А? Глупые обезьяны.
pushkoff 03.06.2010 19:56 # 0
прежде чем запретить говнокодерам писать говнокод, спроси себя, а не гавно, ли твой код... и всегда найдется тот кто скажет и докажет что говно...
guest 03.06.2010 19:25 # 0
я против проверок на каждом шагу, против паранойи.
конвенция уменя такая, что _публичные_ функции обязательно проверяют аргументы функций на валидность, кидается исключение обязательное.
но _вспомогательные_, _приватные_ функции могут без этого обходиться, ибо контекст использования кристально ясен (иначе какого хуя ты трогаешь код функции?). зачастую. иногда конечно бывает что и у аргументы приватных функций надо валидировать.
pushkoff 03.06.2010 20:03 # 0
nil 03.06.2010 23:59 # 0
You shouldn't make mistakes anyway, it is a waste of time. We
don't want to hear anything about debuggers, we're not interested.
See figure 1.
pushkoff 04.06.2010 03:08 # −2
pushkoff 03.06.2010 15:29 # −2
guest 03.06.2010 18:40 # +5
в том-то и дело, что здесь нет ни говна, ни проблемы, а аргументы ты как настоящий пришибленный фанатик "неговна" игнорируешь. и как с++ников после этого уважать?
pushkoff 03.06.2010 19:59 # 0
вот цитата из поста ниже:
> на гото, которое я случайно оставил в коде
человеку свойственно ошибаться, но некоторые люди перестраховываются... ассерт - один из методов подстраховки...
guest 05.06.2010 03:48 # 0
pushkoff 05.06.2010 14:47 # −3
guest 06.06.2010 20:35 # +1
хехе, или ты олень, или я гений, но я ошибки вылавливаю за пару минут. в основном стоит закрыть глаза и прокрутить в голове код (который я знаю досконально наизусть). отладчиком вообще редко пользуюсь, ошибки легко находятся просто если проанализировать поведение в уме. и, как я уже говорил двадцать раз, та функция является семантически nested, а потому валидировать буфер внутри одной и той же сущности является признаком ебаната.
pushkoff 06.06.2010 21:05 # −2
ситуации которые я описал вполне реальны...
guest 06.06.2010 21:17 # +3
ну да, хелловорлды тока и пишу.
> очень много времени
не, я просто не умею страдать хуйнёй - кодю постоянно. аутист как бы...
> и очень высокое ЧСВ...
да не, я обычный кусок бесформенного говна.
guest 06.06.2010 21:21 # +3
у тебя вот текущий проект сколько ЦЛОК?
pushkoff 06.06.2010 21:28 # −3
guest 06.06.2010 21:29 # +2
pushkoff 06.06.2010 21:31 # −1
guest 06.06.2010 23:37 # +2
guest 06.06.2010 23:39 # +1
pushkoff 07.06.2010 01:39 # −1
guest 06.06.2010 23:40 # +1
Говногость 06.06.2010 23:43 # +2
http://govnokod.ru/1766
У меня в проекте строк больше, чем у тебя в 10 раз!
pushkoff 07.06.2010 01:39 # 0
guest 06.06.2010 23:46 # +2
pushkoff 07.06.2010 01:37 # −1
guest 02.06.2010 23:29 # +3
у меня ещё есть обратная функция, работает быстрее atoi.
cfdev 03.06.2010 02:10 # +3
1) эта функция - реплика классического примера из Kernighan и Ritchie's The C Programming Language, только там два старых мудня хуячат вперёд по массиву, а потом по всему массиву делают reverse, а у меня сразу хуячится в обратном порядке.
2) на гото, которое я случайно оставил в коде, ты обратил внимание (на это способен последний пхпшник), а на то, что функция неправильно работает с -2147483648, ты не заметил.
Это даёт мне основания считать, что ты говнокодер, трепло и хуйло.
pushkoff 03.06.2010 04:07 # −3
надо спокойнее относиться к своему говнецу... насрал - буть добр признаться, а не обвиняй весь мир что у них еще хуже...
guest 03.06.2010 11:44 # +4
лось,
1) ты можешь уже понять, что __cfint_ToWBuffer используется ещё в паре других мест, где копирования нет
2) ты можешь уже понять, что я работаю с wchar_t'ами, ты мне предлагаешь копировать wchar_t-буфер в char-буфер, применять sprintf/непортабельный itoa (которые хуй знает сколько ещё раз чего копируют), а затем снова копировать char-буфер в wchar_t-буфер?
Да ты просто олигофрен.
pushkoff 03.06.2010 12:17 # −4
guest 03.06.2010 12:53 # +4
TOP8 (под виндой с gnu stdlib)
8,1 сек -- __cfint_ToWBuffer/-O3
16,4 сек -- _wtoi (у которого мегатраблы с портабельностью)
16,7 сек -- нечестный itoa (у которого траблы с портабельностью), только char
17,7 сек -- __cfint_ToWBuffer/-O1
22,2 сек -- честный itoa (у которого траблы с портабельностью), с конв. char > wchar_t
52,4 сек -- wsprintf (у которого траблы с портабельностью)
64,5 сек -- нечестный sprintf, только ебаный char.
69,5 сек -- sprintf с конвертированием charbuf'а в нужный wcharbuf
guest 03.06.2010 12:55 # 0
pushkoff 03.06.2010 12:55 # 0
guest 03.06.2010 13:16 # +3
как разница, блядь? и там, и там возвращается указатель на нлуь-терминированную широку строку. остальное - не ебёт.
бля долго объяснять, короче с тем как у меня реализованы строки, такой подход имеет меньший оверхед, чем с встроенными функциями (половина из которых непортабельна)
со встроенными функциями я буду иметь оверхед в двойной strcpy, а со своей функцией я имею только один strcpy.
ты блядь набрасываешься не зная чо и куда у меня в проекте. я блядь не для понта привёл код, а для того что привести число к строке без спринтфов - тривиальная задача.
на сим иди на хуй.
guest 03.06.2010 13:27 # +4
теперь 9,3 сек.
что ещё придумаешь? что я ещё должен добавить?
pushkoff 03.06.2010 15:21 # −3
(но код лучше поправить, чтоб потомки тебя говном не поливали на весь интернет)
guest 03.06.2010 18:40 # +4
хаха, слив защитан )
> (но код лучше поправить, чтоб потомки тебя говном не поливали на весь интернет)
говна здесь нет. точка. я уже устал тебе просто объяснять, что к чему.
pushkoff 03.06.2010 20:04 # −2
guest 03.06.2010 11:52 # 0
pushkoff 03.06.2010 12:14 # +2
guest 03.06.2010 11:56 # 0
велосипед? соглашусь.
говно? нет.
pushkoff 03.06.2010 12:32 # −5
1) богомерзкий гото
2) запись в буфер без проверки (самый главный пункт)
3) практически при любых раскладах после этой функции должно идти что-то подобное strcpy (хочу пример где я не прав)... а это копирование которое можно было спрятать либо внутрь функции, либо построить алгоритм так чтоб буфер заполнялся от начала (чтоб можно было дописывать данные в конец строки, передавая в функцию именно ее конец а не буфер + strcpy)...
в С++ это можно было бы сделать отличным шаблоном и кроме профита получить большую универсальность...
guest 03.06.2010 12:57 # +5
2) я устал повторять, что это nested-функция, она не открытая, буфер _должен быть_ 16 чаров по определению; ассерты - для олигофренов
3) с++ не могу юзать.
pushkoff 03.06.2010 15:24 # −2
надеюсь что ты понял что писать нормальный и легко поддерживаемый код проще чем придумывать отмазки...
guest 03.06.2010 18:42 # 0
нет, не понял. я не тусуюсь с тебе подобными (парнями, которые начинают писать код (или пытаться "критиковать" его), не разобравшись сперва что к чему) :)
guest 03.06.2010 18:43 # +3
поэтому никакие отмазки придумывать не надо :)
pushkoff 03.06.2010 20:05 # −1
pushkoff 02.06.2010 18:50 # 0
UncleAli 02.06.2010 18:57 # 0
P.S. А чем Вам do { ... } while ( n ); не угодил? Почему метка?
guest 02.06.2010 19:17 # 0
pushkoff 02.06.2010 19:48 # 0
guest 02.06.2010 20:05 # +2
на читаемость ну никак не влияет.
pushkoff 02.06.2010 20:15 # −2
guest 02.06.2010 22:24 # +3
Еще в 1971 г Дейкстра открыл, что метки юзают два вида людей: программисты на асме и дегенераты.
pushkoff 02.06.2010 23:33 # +3
guest 02.06.2010 20:33 # +3
UncleAli 02.06.2010 21:03 # −1
guest 02.06.2010 22:29 # +4
потом тестировал, баловался, и оказалось, что по метке быстрее, чем циклом. ты мне скажи: кому от этого плохо, блядь? одно дело когда цикл такой закардкоженный с хуевой тучей переменных, что блядь пиздануться. другое дело - когда в одном месте и всё абсолютно читаемо.
вы блядь узколобые фанатики заебали уже. иди на хуй.
UncleAli 02.06.2010 22:47 # 0
P.S. Как хорошо, что я никогда не умел пользоваться метками.
guest 02.06.2010 23:37 # +1
пиздец, ебанутый тупой фанатик-студентота. слышал звон, что "метки плохо", теперь с умным видом и большим ЧСВ несёшь сию благовесть окружающему люду типа?
pushkoff 02.06.2010 23:46 # −1
guest 02.06.2010 23:53 # +1
говорю же - фанатик, вам похуй на аргументы.
pushkoff 02.06.2010 23:57 # −1
guest 03.06.2010 00:27 # +4
неправильный вывод. с твоей недоаргументации - гото здесь _не имеет преимуществ_, а не _бессмысленен_. так же как не имеет особых преимуществ тут и while. поэтому особой разницы что юзать - тут нет, а ты прикапываешься как просроченная хуилка. да и в этом конкретном примере узреть "спагетти", за которые ругают готосы, может только олигофрен, которому поднять взор на две строки вверх составляет мучительное логическое приключение.
это прямо пиздец, спорить из-за такой мелочи. что ещё предложишь, может поспорим, чо круче: сишарп или с++? вот пиздец достойное студентоты занятье. только без меня, ок?
pushkoff 03.06.2010 04:01 # −3
Мистер Хэнки 03.06.2010 04:09 # 0
guest 03.06.2010 11:46 # +1
guest 03.06.2010 11:46 # +1
pushkoff 02.06.2010 23:29 # +1
почему не atoi или _atoi?
код говно чуть более чем полностью и это факт!
pushkoff 02.06.2010 23:35 # 0
guest 02.06.2010 23:58 # 0
дело было давно, но спринтф был медленнее на порядок
> а во сколько раз удобнее?
в смысле удобнее? __cfint_ToWBuffer не публичная функция, сколько раз повторять. "удобной" тут является cfint_ToString, которая органично входит в фреймворк.
> почему не atoi или _atoi?
вроде тоже тормознее + не везде есть.
guest 03.06.2010 00:04 # +3
тьфу ты, вспомнил. мой фреймворк работает с utf16, а atoi работает с UTF8. всралось мне блядь маршалинг делать каждый раз?
guest 02.06.2010 23:29 # −2
guest 03.06.2010 03:55 # +1
>>потом тестировал, баловался, и оказалось, что по метке быстрее, чем циклом.
фига се))) а я свой 4.77 Mhz давно уже выкинул. Не думал, что под него реально еще пишут.
guest 03.06.2010 11:54 # +4
а спринтф тормозит - и всё тут.
я конечно знаю что пхпшники типа тебя ничего сложнее хелловорлда не писали, но для числословомолотилки это всё важно.
xaionaro 05.06.2010 04:05 # +2
1.) читабельностью для человека
2.) читабельностью для компьютера, aka оптимальностью
3.) качеством кода
4.) скоростью написания кода
Я лично для функций такого назначения расставляю приоритеты: 3, 2, 4, 1... Можно согласиться, что использование goto в данной функции - это моветон, но не более. И я тоже согласен, что sprintf тормозной до жутиков. И так же я согласен с мыслью, что если делать вилосипед, то как можно оптимальнее (иначе зачем он нужен?). Придираетесь к фигне какой-то, честное слово.
С другой стороны, мне кажется странным, что goto ускоряет данный процесс. Единственное что я могу придумать, что компилятор как-то криво работает с выравниванием. Возможно надо было провести тест на нескольких системах. Однако если тест показывает, что по какой-то причине goto быстрее, то IMHO, на этом диалог на тему goto должен быть закончен.
guest 05.06.2010 10:01 # +1
xaionaro 05.06.2010 14:59 # 0
Я то выступаю против позиции, обзывать что-либо говнокодом, а что ещё хуже очень некрасиво обзывать других людей из чисто "религиозных" соображений. Всё надо аргументировать, а аргументы по возможности подтверждать фактами.
pushkoff 05.06.2010 14:49 # −1
5 ) удобство использования.
guest 05.06.2010 14:53 # +4
Разбигайся тролль,
Наломает дрофф,
Все почувствуют болль.
guest 05.06.2010 14:54 # +3
This is obvious 05.06.2010 14:54 # +3
guest 05.06.2010 16:34 # −1
как там с++ твой поживает?
дрочишь потихоньку?
guest 05.06.2010 16:37 # 0
вы ещё не думали поспорить на тему с++ VS Delphi с TarasB?
TarasB тоже временами на www.GameDev.ru появляется, но он кароль Delphi
Наверное это вайна?
pushkoff 05.06.2010 19:44 # 0
ну и по поводу делфи на ГД.ру не спорят уже несколько лет...
pushkoff 05.06.2010 19:49 # 0
TarasB 06.06.2010 12:49 # 0
Если гото тут быстрее, чем нормальный цикл, то попробуй другой компилятор, это ненормально.
guest 06.06.2010 18:50 # 0
TarasB 06.06.2010 21:50 # −2
guest 06.06.2010 23:39 # +1
TarasB 07.06.2010 00:38 # −2
UncleAli 05.06.2010 15:55 # +2
1) Использование магического числа 15;
2) wchar_t *ptr вместо cfchar *ptr;
3) Использование безусловного перехода;
4) Проблемы с INT_MIN.
И я не вижу проблемы в том, чтобы пофиксить эти моменты:
1) и 2) - проблем ноль.
3) - гест утверждает, что goto быстрее (хотя бенчи все-таки не привел). Раз код никто, кроме автора, не использует, то и фикс на усмотрение автора.
4) - как уже говорили, загодя подготовленный буфер.
guest 06.06.2010 20:44 # +1
ну давайте заведём константу BUFFER_SIZE_FOR_INT_TO_STRING_CONVERSION , и вместо 15 будем юзать BUFFER_SIZE_FOR_INT_TO_STRING_CONVERSION - 1. Всем сразу полегчает.
> wchar_t *ptr вместо cfchar *ptr;
cfchar это тайпдеф к wchar_t
> Использование безусловного перехода;
Где?
> Проблемы с INT_MIN.
Ага, я уже упомянул :*
UncleAli 06.06.2010 21:22 # 0
Ты правильно уловил идею.
> cfchar это тайпдеф к wchar_t
Правда? А я и не догадывался. Зачем же этот typedef делали, если все равно wchar_t используют, а?
> Где [безусловный переход]?
Это я так goto обзываю, ага.
> Ага, я уже упомянул :*
Молодец. Возьми пирожок на полке.
Все твои аргументы ничтожны. Будь мужчиной, признай это. =D
guest 06.06.2010 21:27 # 0
Ну без тебя бы я не понял какбэ.
> Правда? А я и не догадывался. Зачем же этот typedef делали, если все равно wchar_t используют, а?
Случайно затесался. Все умерли, занавес.
> Это я так goto обзываю, ага.
Если гото идёт после ифа, то это как-то странно его называть безусловным.
> Все твои аргументы ничтожны
Какие аргументы?
> Будь мужчиной
сказал 11-классник UncleALI?
pushkoff 06.06.2010 21:30 # +3
9-класснику cfdev ))
guest 06.06.2010 23:28 # 0
guest 06.06.2010 23:30 # +2
guest 06.06.2010 23:31 # +2
твой код за версту виден
guest 06.06.2010 23:32 # 0
guest 06.06.2010 23:33 # 0
ой, нестандартным
guest 06.06.2010 23:35 # 0
guest 06.06.2010 23:36 # +1
ну почему, почему я лучше всех?..
pushkoff 07.06.2010 01:30 # −2
guest 06.06.2010 23:34 # −1
UncleAli 06.06.2010 22:20 # 0
Не я один считаю, что это "оператор безусловного перехода" (http://ru.wikipedia.org/wiki/GOTO, первое предложение). Но это нюанс, замечание принимается.
>> Будь мужчиной
> сказал 11-классник UncleALI?
Странный наезд. Ты считаешь, что школьник не может быть мужчиной?
guest 06.06.2010 23:29 # 0
ну это буквализм.
> Странный наезд. Ты считаешь, что школьник не может быть мужчиной?
ну так люди мужиками становятся годам минимум к 25.
guest 06.06.2010 23:36 # 0
Ну ты петушок... Я уже им стал в 15.
guest 06.06.2010 23:42 # +4
в моём понимании мужик это взрослый человек, могущий трезво мыслить. хуй совать направо-налево всякая макака может. так вот, формируется мораль пацанчик к 25 минимум окончательно. вот тольког тогда он мужик. а до того - сявка малолетняя.
guest 07.06.2010 00:00 # 0
UncleAli 06.06.2010 23:59 # +4
Ну это в каком-то смысле верно. Только некоторые и в 25 остаются пацанами. Когда я говорил "мужчина", я имел в виду "парень, способный трезво оценивать ситуацию, признавать свои ошибки и отвечать за свои слова". Как-то так.
К тому же, я применил это понятие во фразе, которую можно считать идиомой, по типу "Будь честен с самим собою - [...]". Так что ничего личного.
guest 07.06.2010 00:00 # +1
Даже женьщины?
guest 07.06.2010 00:23 # 0
> Ты правильно уловил идею.
эта константа (BUFFER_SIZE_FOR_INT_TO_STRING_CONVERSIO N) используется причём буквально в одном месте. ты просто сказочный архитектор.
pushkoff 07.06.2010 01:33 # 0
guest 07.06.2010 07:25 # 0
pushkoff 07.06.2010 08:28 # 0
я конечно понимаю, что проболжать стебаться над куском твоего говна очень весело, и еще веселее видеть твою реакцию на эти издевательста...
поэтому я скажу еще раз, когда твой однокласник решит сэкономить 8 байт и на 0,005% ускорить выполнение программы, потом вы будете полгода вместе искать ошибки которые будут лезть изо всех дыр (а уверен что такого говна у вас в коде навалом, асертами то вы не пользуетесь, так как умеете проверять все 7 раз), остальные твои однокласники будут смотреть на вас и думать что С говно, потому что рождает никому неведомые проблемы с памятью, а еще хип у него медленный, потому что им заткнута каждая дырка в коде...
guest 07.06.2010 08:34 # +1
guest 07.06.2010 09:00 # 0
т.е. ты предлагаешь изменить сигнатуру функции на:
cfchar* __cfint_ToWBuffer(cfint n, cfchar* buf, cfuint char_count, cfuint* out_count)
Так? Учитывая, что размер должен быть по определению 16, третий аргумент всегда должен быть 16, а в теле функции (которая на деле является частью другой) будем ассертить - точно ли 16????. В чём профит? Или лучше будет не количество чаров, а количество байт? Тогда можно будет с чистой совестью писать sizeof(buff) и считать себя кулхацкером. Тогда мы введём кучу ненужного говна, типа проверки кратен ли bufsize значению sizeof(wchar_t) (ибо варьируется на разных платформах, если ты не знал), деления на него же (чтобы высчитать количество вайдчаров) и т. д. и т. п. Нахуй вводить эти ненужные, лишние сущности, лишь бы вот чтобы две соседствующие, взаимозависимые функции не делили один семантически общий buf[16]? (16 = 12 чаров на число + 4 на быдловыравнивание). Все эти функции маленькие, соседствуют друг с другом, видимы в пределах одного листа, являются подчастями друг друга (выделено в отдельную функцию, чтобы не дублировать код в паре мест). И ты меня всё равно не убедил, нахуй тут нужно ассертить. Мне это напоминает bool b; if(b == true) {
> а уверен что такого говна у вас в коде навалом
valgrind + тесты не выявляют ничего. Всё воркает. А у тебя поди падает через раз с ассертами твоими. И в отладчике часами ищешь, ха-ха. Глупая макака ты, а не программист.
> и еще веселее видеть твою реакцию на эти издевательста...
ха-ха...
pushkoff 08.06.2010 16:22 # 0
количество элементов нужно передавать как sizeof(buf)/sizeof(buf[0]) - выражение вычисляется в компайл тайме... твоим однокласникам при попытке подсунуть левые данные придется приводить типы, что само собой намекнет на говнокод...
вот о чем я говорю, как можно было допустить ошибку здесь?
> bool b; if(b == true) {
и ты называешь себя гениальным и умеющим все проверять?
ты уверен что валгринд находит порчу памяти? может он находит только утечки?
ассерты для того и нужны чтоб работать при ошибках... если есть ошибки ассерты будут срабатывать, программист это видит и правит их...
guest 07.06.2010 09:03 # +1
pushkoff 08.06.2010 16:25 # −1
guest 07.06.2010 09:05 # 0
pushkoff 08.06.2010 16:27 # +1
xXx_totalwar 08.06.2010 17:01 # −1
pushkoff 08.06.2010 17:06 # −1
xXx_totalwar 08.06.2010 17:08 # −1
Говногость 08.06.2010 17:12 # 0
pushkoff 08.06.2010 17:29 # 0
xXx_totalwar 08.06.2010 17:32 # 0
guest 02.06.2010 10:20 # +3
Stalker 02.06.2010 11:06 # 0
// do not localize!
после каждой строки с цыфорками
guest 02.06.2010 11:34 # 0
guest 02.06.2010 11:36 # +1
guest 02.06.2010 11:39 # +1
nil 02.06.2010 13:04 # +2
guest 02.06.2010 17:40 # +1
guest 02.06.2010 17:59 # −2
This is obvious 02.06.2010 18:02 # +1
guest 02.06.2010 18:23 # −3
guest 02.06.2010 18:23 # −6
guest 02.06.2010 20:13 # −7
guest 02.06.2010 21:34 # −5
guest 02.06.2010 23:38 # −1
если бы да кабы, блядь.
Dummy00001 03.06.2010 00:11 # +2
ЗЫ и я не сомневаюсь что код никто руками не писал - мы *НИХоводы для это мелкие однострочные скрипты держим. даже на том же шелле это в одну строку делается.
guest 03.06.2010 03:57 # +2
такое впечателение, что все остальные тут пишут под OpenVMS
nil 03.06.2010 08:29 # +1
nil 03.06.2010 08:36 # +2
Вот, например, у нас юзается много подобных структур:
1, ptr1,
3, ptr3,
10, ptr10,
...
Из соответствующей структуры пар на старте делаем массив указателей, чтобы обращаться по индексу.
pushkoff 03.06.2010 12:51 # +1
TarasB 03.06.2010 20:33 # +2
pushkoff 03.06.2010 23:43 # +2
guest 06.06.2010 23:31 # +2
guest 07.06.2010 00:01 # +3
This is obvious 07.06.2010 00:11 # +2