Staging
v0.5.1
https://github.com/python/cpython
Revision 944aa01a81b17f844b77936d3ed6dd4e2d728841 authored by Victor Stinner on 23 August 2019, 16:17:52 UTC, committed by GitHub on 23 August 2019, 16:17:52 UTC
_PyTime_t type is defined as int64_t, and so min/max are INT64_MIN/INT64_MAX,
not PY_LLONG_MIN/PY_LLONG_MAX.

(cherry picked from commit 8e76c456226438f2e4931ce7baf05ac8faae34a1)
1 parent ca9ae94
Raw File
Tip revision: 944aa01a81b17f844b77936d3ed6dd4e2d728841 authored by Victor Stinner on 23 August 2019, 16:17:52 UTC
Fix _PyTime_MIN/MAX values (GH-15384) (GH-15426)
Tip revision: 944aa01
rotatingtree.h
/* "Rotating trees" (Armin Rigo)
 *
 * Google "splay trees" for the general idea.
 *
 * It's a dict-like data structure that works best when accesses are not
 * random, but follow a strong pattern.  The one implemented here is for
 * access patterns where the same small set of keys is looked up over
 * and over again, and this set of keys evolves slowly over time.
 */

#include <stdlib.h>

#define EMPTY_ROTATING_TREE       ((rotating_node_t *)NULL)

typedef struct rotating_node_s rotating_node_t;
typedef int (*rotating_tree_enum_fn) (rotating_node_t *node, void *arg);

struct rotating_node_s {
    void *key;
    rotating_node_t *left;
    rotating_node_t *right;
};

void RotatingTree_Add(rotating_node_t **root, rotating_node_t *node);
rotating_node_t* RotatingTree_Get(rotating_node_t **root, void *key);
int RotatingTree_Enum(rotating_node_t *root, rotating_tree_enum_fn enumfn,
                      void *arg);
back to top