Ignore:
Timestamp:
Mar 18, 2008, 12:05:08 AM (12 years ago)
Author:
Sam Hocevar
Message:
  • Cleaned up cache.cpp.
  • Renamed stupid "cash" variable into "cache".
  • Rename cache_list and crc_manager into CacheList? and CrcManager?.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/cache.hpp

    r66 r123  
    2121
    2222class level;
    23 /* Cache item types :
    2423
    25       foretile,backtile,character,
    26       sound,
    27       image,trans_image
     24class CrcedFile
     25{
     26    friend class CrcManager;
    2827
    29 */
     28protected:
     29    CrcedFile(char const *name);
     30    ~CrcedFile();
    3031
    31 
    32 
    33 struct cache_item
    34 {
    35   void *data;
    36   int32_t last_access;   
    37   uint8_t type;
    38   int16_t file_number;
    39   int32_t offset;
     32    int crc_calculated;
     33    uint32_t crc;
     34    char *filename;
    4035} ;
    4136
     37// stores crc for each file open to avoid redundant calculations
     38class CrcManager
     39{
     40private:
     41    int total_files;
     42    CrcedFile **files;
    4243
     44public:
     45    CrcManager();
    4346
    44 class crced_file
     47    int get_filenumber(char const *filename);
     48    uint32_t get_crc(int32_t filenumber, int &failed);
     49    void set_crc(int32_t filenumber, uint32_t crc);
     50    char *get_filename(int32_t filenumber);
     51    void clean_up();
     52    int total_filenames() { return total_files; }
     53    int write_crc_file(char const *filename);
     54    int load_crc_file(char const *filename);
     55};
     56
     57/* Cache item types:
     58 *  - foretile
     59 *  - backtile
     60 *  - character
     61 *  - sound
     62 *  - image
     63 *  - trans_image
     64 */
     65
     66struct CacheItem
    4567{
    46   public :
    47   int crc_calculated;
    48   uint32_t crc;
    49   char *filename;
    50   crced_file(char const *name);
    51   ~crced_file();
    52 } ;
     68    friend class CacheList;
    5369
    54 class crc_manager  // stores crc for each file open so redundant calculations are not done
     70protected:
     71    void *data;
     72    int32_t last_access;   
     73    uint8_t type;
     74    int16_t file_number;
     75    int32_t offset;
     76};
     77
     78class CacheList
    5579{
    56   int total_files;
    57   crced_file **files;
    58   public :
    59   crc_manager();
    60   int get_filenumber(char const *filename);
    61   uint32_t get_crc(int32_t filenumber, int &failed);
    62   void set_crc(int32_t filenumber, uint32_t crc);
    63   char *get_filename(int32_t filenumber);
    64   void clean_up();
    65   int total_filenames() { return total_files; }
    66   int write_crc_file(char const *filename);
    67   int load_crc_file(char const *filename);
    68 } ;
     80private:
     81    CacheItem *list;
     82    int32_t total, last_registered, last_access, poll_start_access;
     83    int16_t last_file; // for speed leave the last file accessed open
    6984
     85    bFILE *fp,*cache_file,*cache_read_file;
     86    spec_directory *last_dir;
     87    int32_t last_offset; // store the last offset so we don't have to seek if
     88                         // we don't need to
    7089
     90    int16_t lcache_number;
     91    int32_t alloc_id();
     92    void locate(CacheItem *i, int local_only = 0); // set up file and offset for this item
     93    void normalize();
     94    void unmalloc(CacheItem *i);
     95    int used, // flag set when disk is accessed
     96        ful;  // set when stuff has to be thrown out
     97    int *prof_data; // holds counts for each id
     98    void preload_cache_object(int type);
     99    void preload_cache(level *lev);
    71100
    72 class cache_list
    73 {
    74   cache_item *list;
    75   int32_t total,last_registered,last_access,poll_start_access;
    76   int16_t last_file;           // for speed leave the last file accessed open
     101public:
     102    CacheList();
     103    ~CacheList();
    77104
    78   bFILE *fp,*cache_file,*cache_read_file;
    79   spec_directory *last_dir;
    80   int32_t last_offset;          // store the last offset so we don't have to seek if
    81                              // we don't need to
    82  
     105    void create_lcache();
     106    void free_oldest();
     107    int in_use() { if (used) { used = 0; return 1; } else return 0; }
     108    int full() { if (ful) { ful = 0; return 1; } else return 0; }
     109    int32_t reg_object(char const *filename, void *object, int type,
     110                       int rm_dups); // lisp object
     111    int32_t reg(char const *filename, char const *name, int type = -1,
     112                int rm_dups = 0); // returns id to item
     113    int32_t reg_lisp_block(Cell *block);
     114    int loaded(int id);
     115    void unreg(int id);
     116    void note_need(int id);
    83117
    84   int16_t lcache_number;
    85   int32_t alloc_id();
    86   void locate(cache_item *i, int local_only=0);    // set up file and offset for this item
    87   void normalize();
    88   void unmalloc(cache_item *i);
    89   int used,                                 // flag set when disk is accessed
    90       ful;                                  // set when stuff has to be thrown out
    91   int *prof_data;                           // holds counts for each id
    92   void preload_cache_object(int type);
    93   void preload_cache(level *lev);
    94 public :
    95   void create_lcache();
    96   cache_list();
    97   void free_oldest();
    98   int in_use() { if (used) { used=0; return 1; } else return 0; }
    99   int full() { if (ful) { ful=0; return 1; } else return 0; }
    100   int32_t reg_object(char const *filename, void *object, int type, int rm_dups);      // lisp object
    101   int32_t reg(char const *filename, char const *name, int type=-1, int rm_dups=0);          // returns id to item
    102   int32_t reg_lisp_block(Cell *block);
    103   int loaded(int id);
    104   void unreg(int id);
    105   void note_need(int id);
     118    backtile *backt(int id);
     119    foretile *foret(int id);
     120    figure *fig(int id);
     121    image *img(int id);
     122    part_frame *part(int id);
     123    sound_effect *sfx(int id);
     124    Cell *lblock(int id);
     125    char_tint *ctint(int id);
    106126
    107   backtile       *backt(int id);
    108   foretile       *foret(int id);
    109   figure          *fig(int id);
    110   image           *img(int id);
    111   part_frame     *part(int id);
    112   sound_effect    *sfx(int id);
    113   Cell         *lblock(int id);
    114   char_tint     *ctint(int id);
     127    void prof_init();
     128    void prof_write(bFILE *fp);
     129    void prof_uninit();
     130    int  prof_size(); // sizeof of spec entry that will be saved
     131    void prof_poll_start();
     132    void prof_poll_end();
     133    int  prof_is_on() { return prof_data != NULL; }   // so level knows weither to save prof info or not
     134    int compare(int a, int b); // compares usage count (used by qsort)
     135    int offset_compare(int a, int b);
    115136
    116   void prof_init();
    117   void prof_write(bFILE *fp);
    118   void prof_uninit();
    119   int  prof_size();                   // sizeof of spec entry that will be saved
    120   void prof_poll_start();
    121   void prof_poll_end();
    122   int  prof_is_on() { return prof_data!=NULL; }   // so level knows weither to save prof info or not
    123   int compare(int a, int b);          // compares the ussage counts of 2 entries (used by qsort)
    124   int offset_compare(int a, int b);
     137    void load_cache_prof_info(char *filename, level *lev);
     138    // sarray is a index table sorted by offset/filenum
     139    int search(int *sarray, uint16_t filenum, int32_t offset);
    125140
    126   void load_cache_prof_info(char *filename, level *lev);
    127   int search(int *sarray, uint16_t filenum, int32_t offset);  // sarray is a index table sorted by offset/filenum
     141    void show_accessed();
     142    void empty();
     143};
    128144
    129   void show_accessed();
    130   void empty();
    131   ~cache_list();
    132 } ;
    133 
    134 extern cache_list cash;
    135 extern crc_manager crc_man;
    136 
     145extern CacheList cache;
     146extern CrcManager crc_manager;
    137147
    138148#endif
    139149
    140 
    141 
    142 
    143 
    144 
Note: See TracChangeset for help on using the changeset viewer.