00001 00021 #pragma once 00022 #include "types.h" 00023 #include "hashtreenode.h" 00024 00027 #define CS_BASE 10 00028 #define CS_BUILDUP (CS_BASE + 2) 00029 #define CS_DEPTH 02 00030 00031 00033 #define CHashTreeCtrlNTA hashClass, CS_BASE, CS_BUILDUP, CS_DEPTH 00034 00036 class CHashTreeNode; 00037 00041 template<class hashClass> 00042 class CHashTreeCtrl : public CHashTreeNode<CHashTreeCtrlNTA> 00043 { 00044 public: 00046 static const CString CLASSNAME; 00048 CHashTreeCtrl(void) : CHashTreeNode<CHashTreeCtrlNTA>() {}; 00050 CHashTreeCtrl(uint64 nLength) : CHashTreeNode<CHashTreeCtrlNTA>(nLength) {}; 00052 CHashTreeCtrl(CFile &cFile, uint64 nPath=0, uint8 nLevel=0) : CHashTreeNode<CHashTreeCtrlNTA>(cFile) {} 00053 00055 //CHashTreeCtrl(CFile &cFile); 00057 ~CHashTreeCtrl(void); 00060 // static CHashTreeCtrl *NewTree(uint64 inFileSize, uint32* ineD2kHash); 00062 // static CHashTreeCtrl *LoadTree(uint32* ineD2kHash); 00064 // static HashStruc *GetTreeHash(char inStartLevel, char inEndLevel); 00065 00067 CHashTreeCtrl *GetSubTree(uint32 TargetNode, char RootLevel, char EndLevel); 00069 // uint32 HashFile(CFile* inFile, uint32 HashStart, uint32 HashEnd, char EndLevel); 00071 uint32 WriteTable(CFile* outFile); 00073 uint32 GetHashLevelStrip(uint32 HashStart, uint32 HashEnd, char HashLevel); 00074 00075 private: 00076 //CHashTreeCtrl(uint64 inFileSize, uint32 *eD2kHash); 00077 }; 00078 00079 template <class hashClass> 00080 const CString CHashTreeCtrl<hashClass>::CLASSNAME = CString("CHashTreeCtrl/") + StaticAlgorithmName(); 00081 00082 #include "HashTreeCtrl.cpp"
1.3.4