diff options
Diffstat (limited to 'Doc/tools/refcounts.py')
-rw-r--r-- | Doc/tools/refcounts.py | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/Doc/tools/refcounts.py b/Doc/tools/refcounts.py deleted file mode 100644 index 9efb073..0000000 --- a/Doc/tools/refcounts.py +++ /dev/null @@ -1,97 +0,0 @@ -"""Support functions for loading the reference count data file.""" -__version__ = '$Revision$' - -import os -import sys - - -# Determine the expected location of the reference count file: -try: - p = os.path.dirname(__file__) -except NameError: - p = os.path.dirname(sys.argv[0]) -p = os.path.normpath(os.path.join(os.getcwd(), p, os.pardir, - "api", "refcounts.dat")) -DEFAULT_PATH = p -del p - - -def load(path=DEFAULT_PATH): - return loadfile(open(path)) - - -def loadfile(fp): - d = {} - while 1: - line = fp.readline() - if not line: - break - line = line.strip() - if line[:1] in ("", "#"): - # blank lines and comments - continue - parts = line.split(":", 4) - if len(parts) != 5: - raise ValueError("Not enough fields in %r" % line) - function, type, arg, refcount, comment = parts - if refcount == "null": - refcount = None - elif refcount: - refcount = int(refcount) - else: - refcount = None - # - # Get the entry, creating it if needed: - # - try: - entry = d[function] - except KeyError: - entry = d[function] = Entry(function) - # - # Update the entry with the new parameter or the result information. - # - if arg: - entry.args.append((arg, type, refcount)) - else: - entry.result_type = type - entry.result_refs = refcount - return d - - -class Entry: - def __init__(self, name): - self.name = name - self.args = [] - self.result_type = '' - self.result_refs = None - - -def dump(d): - """Dump the data in the 'canonical' format, with functions in - sorted order.""" - items = sorted(d.items()) - first = 1 - for k, entry in items: - if first: - first = 0 - else: - print() - s = entry.name + ":%s:%s:%s:" - if entry.result_refs is None: - r = "" - else: - r = entry.result_refs - print(s % (entry.result_type, "", r)) - for t, n, r in entry.args: - if r is None: - r = "" - print(s % (t, n, r)) - - -def main(): - d = load() - dump(d) - - -if __name__ == "__main__": - main() |