пятница, 28 марта 2008 г.

Переносимый код

Прислали сегодня ссылку на перевод статьи на тему переносимости кода. Там высказываются интересные мысли, но, как показывает опыт, если в ближайших планах компании не значится переход на какую-либо новую платформу, то усилия на поддержку совместимости не окупаются.

среда, 26 марта 2008 г.

fun code

Today I've found funny code somewhere in the big project. It looks like the following:
class T
{
public:
// ... some declarations
bool operator ==( T& t )
{
bool b = false;
if ( t == *this ) b = true;

return b;
}
}

Семинар Эдварда Йордона в Москве

Вчера пришло письмо из OZON'a про семинар Эдварда Йордона, который будет проходить в Москве и Питере (дают, кстати, скидку 10% + 5% за предоплату).

Возможно стоит съездить, но есть опасения, что будет просто пересказ книги...

пятница, 21 марта 2008 г.

avi copy with cut function

I've updated avi cut&copy function. Now it can be used standalone completly. Function main implemented just for test to compile working exe file and do not use all functionality range of CopyAvi function.

среда, 19 марта 2008 г.

X или x в структуре/классе ?

Думали тут с коллегой как автоматически определять какие x,y в структуре (ну т.е. большие или маленькие). Это нужно для написания, например, шаблонной функции определения площади многоугольника - чтобы туда можно было передать точки типа POINT с x,y (в GDI) или Point с X,Y (как в GDI+). На каком-то этапе возник код такого вида:
template<int> struct TT {typedef int type;};
template<class P> bool Check_x(P p, typename TT<sizeof(&P::x)>::type b = 0) { return true; }
template<class P> bool Check_x(P p, typename TT<sizeof(&P::X)>::type b = 0) { return false; }

struct P1 {int x; };
struct P2 {int X; };

int main()
{
P1 p1 = {1};
P2 p2 = {1};

Check_x(p1); // must return true
Check_x(p2); // must return false

return 0;
}
И он не компилируется в Visual Studio (проверено на 2005SP1). Не принимается sizeof в шаблоне, хотя стандарт это позволяет. Баг был послан в Microsoft. Подробнее про баг тут. Кстати сказать, проверка в GNU C++ показала хороший результат - это работает. Зато не сработает код такого вида:
template<class P> bool Check_x(P p, typename TT<&P::x==&P::x>::type b = 0) { return true; }
это, видимо, тоже баг, но уже в g++. Вторая конструкция была как раз использована для обхода проблемы в компиляторе от микрософт (там, правда, возникли другие проблемы).
Кстати в MSVC++ компилируется и такой код:
template<class P> bool Check_x(P p, typename TT<!(&P::x)>::type b = 0) { return true; }
Кто нибудь знает что он означает? По идее должна выдаваться ошибка на этапе компиляции...

пятница, 14 марта 2008 г.

Syntax highlight in blog

Eventually I have found a script for C++ syntax highlighting in the Blogger. Thanks to developers. Everyone could find it at here. It's very easy to use. Now all my code snippets are looks pretty good.

The key feature of the above highlihter is that the script permanently hosted at http://softwaremaniacs.org/, so that make it possible is to use the script on blogger.com.

четверг, 13 марта 2008 г.

Cut, copy and union video files without recompression


Here is the function (fast and furious) that can be used to copy, cut and union video files without recompression. It uses the Video for Windows (VFW) technology. You can pass a pointer to a callback function lpfnProgress to get an information about the copying progress. Additionally there is the main function in the code to show how to use it.