Re[6]: Передача по ссылке в inline функцию
От: tasko  
Дата: 08.12.10 19:13
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, uzhas, Вы писали:


U>>набил я ваш код и вот что получил:

U>>исходный код:
U>>http://codepad.org/H4vIjlLP
U>>подфикшенный код:
U>>http://codepad.org/5nURjSpj
U>>можете обратить внимание на комментарий, ибо там забытая логика
U>>успехов
U>от делать нечего написал свою версию фильтрационной функции
U>http://codepad.org/BeOtcWS2
U>возможно, вам что-то пригодится
U>успехов)

спасибо за шаблон
после небольшой доработки функция приняла вид:


#define DT_EXCLUDE_FILLER       0
#define DT_INCLUDE_FILLER       1

    inline void vector_to_string(Common::ArrayOfUInt8 const& in, Common::String& out, Common::Bool includeFiller = DT_INCLUDE_FILLER)
    {
        out.clear();
        for (Common::ArrayOfUInt8::const_iterator i = in.begin(); i != in.end(); ++i)
        {
            if (*i < (15 + includeFiller))
            {
                out.push_back(((*i) < 10 ? (*i) + 48 : (*i) + 55));
            }
        }
    }

    inline void string_to_vector(Common::String const& in, Common::ArrayOfUInt8& out, Common::Bool includeFiller = DT_INCLUDE_FILLER)
    {
        out.clear();
        for(Common::String::const_iterator iter = in.begin(); iter != in.end(); ++iter)
        {
            //0-9
            if((*iter > 0x02F) && (*iter < 0x03A))
            {
                out.push_back(*iter - 0x030);
            }
            //A-E + fillerFlag
            else if((*iter > 0x040) && (*iter < (0x046 + includeFiller)))
            {
                out.push_back(*iter - 55);
            }
            //a-e  + fillerFlag
            else if((*iter > 0x060) && (*iter < (0x066 + includeFiller)))
            {
                out.push_back(*iter - 87);
            }
        }
    }


вопрос со странностью поведения & так и остался :/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.