Panda3D
|
00001 // Filename: geomCacheEntry.h 00002 // Created by: drose (21Mar05) 00003 // 00004 //////////////////////////////////////////////////////////////////// 00005 // 00006 // PANDA 3D SOFTWARE 00007 // Copyright (c) Carnegie Mellon University. All rights reserved. 00008 // 00009 // All use of this software is subject to the terms of the revised BSD 00010 // license. You should have received a copy of this license along 00011 // with this source code in a file named "LICENSE." 00012 // 00013 //////////////////////////////////////////////////////////////////// 00014 00015 #ifndef GEOMCACHEENTRY_H 00016 #define GEOMCACHEENTRY_H 00017 00018 #include "pandabase.h" 00019 #include "geomCacheManager.h" 00020 #include "referenceCount.h" 00021 #include "config_gobj.h" 00022 #include "pointerTo.h" 00023 #include "mutexHolder.h" 00024 00025 class Geom; 00026 class GeomPrimitive; 00027 00028 //////////////////////////////////////////////////////////////////// 00029 // Class : GeomCacheEntry 00030 // Description : This object contains a single cache entry in the 00031 // GeomCacheManager. This is actually the base class of 00032 // any number of individual cache types. 00033 //////////////////////////////////////////////////////////////////// 00034 class EXPCL_PANDA_GOBJ GeomCacheEntry : public ReferenceCount { 00035 public: 00036 INLINE GeomCacheEntry(); 00037 virtual ~GeomCacheEntry(); 00038 00039 PT(GeomCacheEntry) record(Thread *current_thread); 00040 void refresh(Thread *current_thread); 00041 PT(GeomCacheEntry) erase(); 00042 00043 virtual void evict_callback(); 00044 virtual void output(ostream &out) const; 00045 00046 private: 00047 int _last_frame_used; 00048 00049 INLINE void remove_from_list(); 00050 INLINE void insert_before(GeomCacheEntry *node); 00051 00052 private: 00053 GeomCacheEntry *_prev, *_next; 00054 00055 friend class GeomCacheManager; 00056 }; 00057 00058 INLINE ostream &operator << (ostream &out, const GeomCacheEntry &entry); 00059 00060 #include "geomCacheEntry.I" 00061 00062 #endif