示例#1
0
        internal static List <T> ReadShortIDList <T>(IntPtr pointer, Func <ushort, T> createFunc, bool free = true)
        {
            if (pointer == IntPtr.Zero)
            {
                return(null);
            }
            const int sizeOfItem = 2;
            List <T>  result     = new List <T>();

            for (int offset = 0; ; offset += sizeOfItem)
            {
                ushort id = (ushort)Marshal.ReadInt16(pointer, offset);
                if (id == 0)
                {
                    break;
                }
                result.Add(createFunc(id));
            }
            if (free)
            {
                Functions.freeMemory(pointer);
            }
            return(result);
        }