Re: hashlittle(), hashbig(), hashword() and endianness

Поиск
Список
Период
Сортировка
Искать
От
Heikki Linnakangas
Тема
Re: hashlittle(), hashbig(), hashword() and endianness
Дата
Msg-id
473C2C40.4070509@enterprisedb.com
Ответ на
Список
Дерево обсуждения
hashlittle(), hashbig(), hashword() and endianness Alex Vinokur <alexvn@users.sourceforge.net>
Alex Vinokur wrote:
> On Nov 15, 10:40 am, Alex Vinokur 
> wrote:
> [snip]
>> I have some question concerning Bob Jenkins' functions
>> hashword(uint32_t*, size_t), hashlittle(uint8_t*, size_t) and
>> hashbig(uint8_t*, size_t) in lookup3.c.
>>
>> Let k1 by a key: uint8_t* k1; strlen(k1)%sizeof(uint32_t) == 0.
>>
>> 1. hashlittle(k1) produces the same value on Little-Endian and Big-
>> Endian machines.
>>    Let hashlittle(k1) be == L1.
>>
>> 2. hashbig(k1) produces the same value on Little-Endian and Big-Endian
>> machines.
>>    Let hashbig(k1) be == B1.
>>
>>   L1 != B1
>>
>> 3. hashword((uint32_t*)k1) produces
>>     * L1 on LittleEndian machine and
>>     * B1 on BigEndian machine.
>>
> ===================================
>> ---------------------
>> The question is: is it possible to change hashword() to get
>>     * L1 on Little-Endian machine and
>>     * B1 on Big-Endian machine
>>    ?
> 
> Sorry, it should be as follows:
> 
> Is it possible to create two new hash functions on basis of
> hashword():
>    i)  hashword_little () that produces L1 on Little-Endian and Big-
> Endian machines;
>    ii) hashword_big ()    that produces B1 on Little-Endian and Big-
> Endian machines
>    ?

Why?

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com
В списке pgsql-patches по дате отправления
От: Alex Vinokur
Дата:
От: Tom Lane
Дата:
FAQ