示例#1
0
        void map_put_uint64_from_uint64(ulong key, ulong val)
        {
            Ion.assert(key != 0);
            if (val == 0)
            {
                return;
            }

            if (2 * len >= cap)
            {
                map_grow(2 * cap);
            }

            Ion.assert(2 * len < cap);
            Ion.assert(Ion.IS_POW2(cap));


            for (var i = key; ; i++)
            {
                i &= cap - 1;
                if (keys[i] == 0)
                {
                    len++;
                    keys[i] = key;
                    vals[i] = val;
                    return;
                }

                if (keys[i] == key)
                {
                    vals[i] = val;
                    return;
                }
            }
        }
示例#2
0
        ulong map_get_uint64_from_uint64(ulong key)
        {
            if (len == 0)
            {
                return(0);
            }

            Ion.assert(Ion.IS_POW2(cap));
            Ion.assert(len < cap);

            for (var i = key; ; i++)
            {
                i &= cap - 1;
                if (keys[i] == key)
                {
                    return(vals[i]);
                }
                if (keys[i] == 0)
                {
                    return(0);
                }
            }
        }