26 static DWORD dwRandom = 1;
32 dwRandom = (
DWORD)(((
ULONGLONG)dwRandom * 48271UL) % 2147483647UL);
88 pUpdate[
i] = &Skiplist->
Head;
104 for (
i = 0;
i <= chNewLevel;
i++)
107 pUpdate[
i]->
Next[
i] = pNode;
115 pUpdate[
i]->
Distance[
i] = dwDistance[0] + 1 - dwDistance[
i];
120 ++pUpdate[
i]->Distance[
i];
159 pNode = pNode->
Next[
i];
162 pLastComparedNode = pNode->
Next[
i];
167 pNode = pNode->
Next[0];
183 while (i <= Skiplist->MaximumLevel)
263 dwDistance[
i] = dwDistance[
i + 1];
271 pNode = pNode->
Next[
i];
275 pLastComparedNode = pNode->
Next[
i];
280 pNode = pNode->
Next[0];
320 dwDistance[
i] = dwDistance[
i + 1];
322 while (pNode->
Next[
i])
328 pNode = pNode->
Next[
i];
374 pNode = pNode->
Next[
i];
378 pLastComparedNode = pNode->
Next[
i];
382 pNode = pNode->
Next[0];
391 *ElementIndex = dwIndex;
431 while (pNode->
Next[
i] && dwIndex + pNode->
Distance[
i] <= ElementIndex)
434 pNode = pNode->
Next[
i];
439 return pNode->
Next[0];
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static __inline CHAR _GetRandomLevel()
BOOL InsertTailElementSkiplist(PSKIPLIST Skiplist, PVOID Element)
PVOID LookupElementSkiplist(PSKIPLIST Skiplist, PVOID Element, PDWORD ElementIndex)
static BOOL _InsertElementSkiplistWithInformation(PSKIPLIST Skiplist, PVOID Element, PSKIPLIST_NODE *pUpdate, DWORD *dwDistance)
PSKIPLIST_NODE LookupNodeByIndexSkiplist(PSKIPLIST Skiplist, DWORD ElementIndex)
BOOL InsertElementSkiplist(PSKIPLIST Skiplist, PVOID Element)
PVOID DeleteElementSkiplist(PSKIPLIST Skiplist, PVOID Element)
void InitializeSkiplist(PSKIPLIST Skiplist, PSKIPLIST_ALLOCATE_ROUTINE AllocateRoutine, PSKIPLIST_COMPARE_ROUTINE CompareRoutine, PSKIPLIST_FREE_ROUTINE FreeRoutine)
PVOID(WINAPI * PSKIPLIST_ALLOCATE_ROUTINE)(DWORD)
int(WINAPI * PSKIPLIST_COMPARE_ROUTINE)(PVOID, PVOID)
void(WINAPI * PSKIPLIST_FREE_ROUTINE)(PVOID)
DWORD Distance[SKIPLIST_LEVELS]
struct _SKIPLIST_NODE * Next[SKIPLIST_LEVELS]
PSKIPLIST_COMPARE_ROUTINE CompareRoutine
PSKIPLIST_FREE_ROUTINE FreeRoutine
PSKIPLIST_ALLOCATE_ROUTINE AllocateRoutine
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE _In_ PRTL_GENERIC_FREE_ROUTINE FreeRoutine
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
_In_ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine