History

add hg and python

cinap_lenrek committed 15 years ago

Commit 4bb9e221 parent 987265c3706 files · +1228772 −-233Browse files

Showing the changes to sys/src/cmd/python/Modules/_sqlite/cache.h (1 of 3706 files). Show all

Unified · Split

sys/src/cmd/python/Modules/_sqlite/cache.h+73−0
@@ -0,0 +1,73 @@
1+/* cache.h - definitions for the LRU cache
2+ *
3+ * Copyright (C) 2004-2006 Gerhard H�ring <gh@ghaering.de>
4+ *
5+ * This file is part of pysqlite.
6+ *
7+ * This software is provided 'as-is', without any express or implied
8+ * warranty. In no event will the authors be held liable for any damages
9+ * arising from the use of this software.
10+ *
11+ * Permission is granted to anyone to use this software for any purpose,
12+ * including commercial applications, and to alter it and redistribute it
13+ * freely, subject to the following restrictions:
14+ *
15+ * 1. The origin of this software must not be misrepresented; you must not
16+ * claim that you wrote the original software. If you use this software
17+ * in a product, an acknowledgment in the product documentation would be
18+ * appreciated but is not required.
19+ * 2. Altered source versions must be plainly marked as such, and must not be
20+ * misrepresented as being the original software.
21+ * 3. This notice may not be removed or altered from any source distribution.
22+ */
23+
24+#ifndef PYSQLITE_CACHE_H
25+#define PYSQLITE_CACHE_H
26+#include "Python.h"
27+
28+/* The LRU cache is implemented as a combination of a doubly-linked with a
29+ * dictionary. The list items are of type 'Node' and the dictionary has the
30+ * nodes as values. */
31+
32+typedef struct _Node
33+{
34+ PyObject_HEAD
35+ PyObject* key;
36+ PyObject* data;
37+ long count;
38+ struct _Node* prev;
39+ struct _Node* next;
40+} Node;
41+
42+typedef struct
43+{
44+ PyObject_HEAD
45+ int size;
46+
47+ /* a dictionary mapping keys to Node entries */
48+ PyObject* mapping;
49+
50+ /* the factory callable */
51+ PyObject* factory;
52+
53+ Node* first;
54+ Node* last;
55+
56+ /* if set, decrement the factory function when the Cache is deallocated.
57+ * this is almost always desirable, but not in the pysqlite context */
58+ int decref_factory;
59+} Cache;
60+
61+extern PyTypeObject NodeType;
62+extern PyTypeObject CacheType;
63+
64+int node_init(Node* self, PyObject* args, PyObject* kwargs);
65+void node_dealloc(Node* self);
66+
67+int cache_init(Cache* self, PyObject* args, PyObject* kwargs);
68+void cache_dealloc(Cache* self);
69+PyObject* cache_get(Cache* self, PyObject* args);
70+
71+int cache_setup_types(void);
72+
73+#endif