//Pascal &or the FreePascal use of nintendo 2ds, 3ds regime // // Copyright (c) 2013, 2015, 2017 Kenneth Dwayne Lee Bsc. // all rights reserved // {$ifdef 3dsintf} type rbtree_node = record parent_color : pcuint; // {uintptr};cdecl; child : array[0..1] of ^Prbtree_node; end; Prbtree_node = ^rbtree_node; rbtree_node_destructor = procedure (Node:Prbtree_node);cdecl; rbtree_node_comparator = function (lhs:Prbtree_node; rhs:Prbtree_node):cint;cdecl; rbtree = record root : Prbtree_node; comparator : rbtree_node_comparator; size : u32; end; Prbtree = ^rbtree; function rbtree_item(ptr,rbtype,member : longint) : Prbtree_node; procedure rbtree_init(tree:Prbtree; comparator:rbtree_node_comparator);cdecl;external; function rbtree_empty(tree:Prbtree):cint;cdecl;external; function rbtree_size(tree:Prbtree):u32;cdecl;external; function rbtree_insert(tree:Prbtree; node:Prbtree_node):rbtree_node ;cdecl;external; procedure rbtree_insert_multi(tree:Prbtree; node:Prbtree_node);cdecl;external; function rbtree_find(tree:Prbtree; node:Prbtree_node):Prbtree_node;cdecl;external; function rbtree_min(tree:Prbtree):Prbtree_node;cdecl;external; function rbtree_max(tree:Prbtree):Prbtree_node;cdecl;external; function rbtree_node_next(node:Prbtree_node):Prbtree_node;cdecl;external; function rbtree_node_prev(node:Prbtree_node):Prbtree_node;cdecl;external; function rbtree_remove(tree:Prbtree; node:Prbtree_node; destruct:rbtree_node_destructor):Prbtree_node;cdecl;external; procedure rbtree_clear(tree:Prbtree; destruct:rbtree_node_destructor);cdecl;external;{$endif 3dsintf} {$ifdef 3dsimpl} function rbtree_item(ptr,rbtype,member : longint) : Prbtree_node; begin // rbtree_item:=Prbtree_node((pchar(ptr))-(offsetof(rbtype,member))); end; {$endif 3dsimpl}