/* * Abuse - dark 2D side-scrolling platform game * Copyright (c) 1995 Crack dot Com * Copyright (c) 2005-2011 Sam Hocevar <sam@hocevar.net> * * This software was released into the Public Domain. As with most public * domain software, no warranty is made or implied by Crack dot Com, by * Jonathan Clark, or by Sam Hocevar. */ #ifndef __SPECACHE_HPP_ #define __SPECACHE_HPP_ #include "specs.h" #include <string.h> class spec_directory_cache { class filename_node { public : filename_node *left,*right,*next; char *fn; spec_directory *sd; char *filename() { return fn; } filename_node(char const *filename, spec_directory *dir) { fn = strdup(filename); sd = dir; next = left = right = 0; } long size; } *fn_root,*fn_list; void clear(filename_node *f); // private recursive member long size; public : spec_directory *get_spec_directory(char const *filename, bFILE *fp=NULL); spec_directory_cache() { fn_root=0; size=0; } void clear(); // frees up all allocated memory void load(bFILE *fp); void save(bFILE *fp); ~spec_directory_cache() { clear(); } } ; extern spec_directory_cache sd_cache; #endif