Re: Формирование пакетов-запросов ко внешним устройствам
От: Roman Odaisky Украина  
Дата: 01.09.07 12:56
Оценка:
Здравствуйте, Alexander Pazdnikov, Вы писали:

[]

Во-первых, зачем этот макрос?
AP>
AP>#define LXC_SET_PACKET_BODY(buf, packet) \
AP>        { \
AP>                buf.erase(buf.begin() + 1, buf.end()); \
AP>                std::copy((packet), (packet + sizeof(packet)), back_inserter(buf)); \
AP>        }
AP>

inline-функция справилась бы значительно лучше.

Во-вторых, можно сделать примерно так:
template <class UnsignedInteger>
class ImplCharByCharCopier;

template <class UnsignedInteger, class OutputIterator>
OutputIterator copyCharByChar(UnsignedInteger value, OutputIterator dest)
{
    return ImplCharByCharCopier<UnsignedInteger>()(value, dest);
}

template <>
class ImplCharByCharCopier<boost::uint32_t>
{
public:
    template <class OutputIterator>
    OutputIterator operator()(boost::uint32_t value, OutputIterator dest) const
    {
        *dest++ = (value & 0xFF000000) >> 24;
        *dest++ = (value & 0x00FF0000) >> 16;
        *dest++ = (value & 0x0000FF00) >> 8;
        *dest++ = (value & 0x000000FF) >> 0;

        return dest;
    }
};

и еще сколько нужно реализаций.
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.