00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CHOP_OutputClipManager__
00020 #define __CHOP_OutputClipManager__
00021
00022 #include "CHOP_API.h"
00023 #include <UT/UT_SymbolTable.h>
00024 #include <UT/UT_PtrArray.h>
00025 #include <UT/UT_String.h>
00026
00027 class CHOP_API CHOP_CacheEntry
00028 {
00029 public:
00030 CHOP_CacheEntry()
00031 {
00032 myRefCount = 1;
00033 myCacheIndex = -1;
00034 myRealtimeIndex = -1;
00035 myLocalIndex = -1;
00036 myInitialOutput = 0;
00037 myUseCount = 0;
00038 }
00039
00040 int myRefCount;
00041 int myUseCount;
00042
00043 int myCacheIndex;
00044 int myRealtimeIndex;
00045 int myLocalIndex;
00046
00047 int myInitialOutput;
00048 UT_String myName;
00049 };
00050
00051 class CHOP_API CHOP_OutputClipManager
00052 {
00053 public:
00054 CHOP_OutputClipManager();
00055 ~CHOP_OutputClipManager();
00056
00057 void addReference(const char *name,
00058 int realtime = 0);
00059 int isReferenced(const char *name);
00060
00061
00062 int getCacheIndex(const char *name) const;
00063 int getRealtimeIndex(const char *name) const;
00064 int getLocalIndex(const char *name) const;
00065
00066
00067 int getOutput(const char *name) const;
00068 void setOutput(const char *name) const;
00069
00070 int useInput(const char *name) const;
00071 int canClearClip(const char *name) const;
00072
00073 void needLocal(const char *name);
00074
00075 unsigned int getCacheCount() const { return myCacheCount; }
00076 unsigned int getRealtimeCount() const
00077 { return myRealtimeCount; }
00078 unsigned int getLocalCount() const { return myLocalCount; }
00079 UT_PtrArray<CHOP_CacheEntry *> &getCacheList() { return myCacheList; }
00080
00081 unsigned int getMaxInputs() const { return myMaxInputs; }
00082 void updateMaxInputs(unsigned int n)
00083 {
00084 if (n > myMaxInputs)
00085 myMaxInputs = n;
00086 }
00087 void addParam(const char *name);
00088 int getNumParams() const
00089 { return myCacheParamList.entries(); }
00090 CHOP_CacheEntry *getParam(int idx) const
00091 { return myCacheParamList(idx); }
00092
00093 private:
00094 UT_SymbolTable myRefTable;
00095 unsigned int myCacheCount;
00096 unsigned int myRealtimeCount;
00097 unsigned int myLocalCount;
00098 UT_PtrArray<CHOP_CacheEntry *> myCacheList;
00099 UT_PtrArray<CHOP_CacheEntry *> myCacheParamList;
00100 unsigned int myMaxInputs;
00101 };
00102
00103 #endif
00104