SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送
メインページ   名前空間一覧   クラス階層   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

dKingyoIsWarehouser.h

解説を見る。
00001 // dKingyo is Warehouser ??? Why Am I Warehouser!!! I am a Programmer!!! but,foolish ^^;
00002 
00003 #include "dKingyoDataWrapper.h"
00004 //#include "dKingyoGameManager.h"
00005 
00006 
00007 namespace dkutil{ // begin dkutil namespace
00008     namespace dkingyo{ //begin dkingyo namespace
00009 
00010 //これを使う予定。データを管理する構造体。STLPortのおかげ^^
00011 //いわいる連想配列郡??ほぼ使用するデータは決められているので
00012 class dKingyoIsWarehouser
00013 {
00014 protected:
00015     static ::dkutil::memory::dKingyoDataWrapperSTLPortHashMap<std::string,void *> m;//hash memory (なんでもかんでも入れます。)
00016     static ::dkutil::memory::dKingyoDataWrapperArrayWarehouse<void *> pa;//pointer array (void *型のものをなんでもかんでも入れます。)
00017     static ::dkutil::memory::dKingyoDataWrapperSTLPortHashMap<std::string,TasClassTask *> t_str_ref;//タスク入れます。もちろんstringで参照します。
00018     static ::dkutil::memory::dKingyoDataWrapperSTLPortHashMap<std::string,VOIDFUNC> t_func;//タスク用関数を入れるところです。
00019 public:
00020     dKingyoIsWarehouser(){}
00021     //**********************************************************
00022     //VOID *のSTRINGマップ
00023     inline void *GetDataHash(char *key){
00024         void *lp;
00025         int flag=0;
00026         try{
00027             lp=m.GetData(key);
00028         }catch(int get){
00029             flag=get;
00030         }
00031         if(flag==-1){
00032             DEBUGMB("dKingyoIsWarehouser::GetDataHash 例外が発生!データを見つけられません");
00033             return NULL;//もう最低〜〜
00034         }
00035         return lp; 
00036     }
00037     inline bool SetDataHash(char *key,void *data){
00038         return m.SetData(key,data);
00039     }
00040     inline bool DeleteDataHash(char *key=NULL,void *data=NULL){
00041         if(!(key==NULL || data==NULL)){
00042             if(key){
00043                 return m.DeleteDataByKey(key);
00044             }else if(data){
00045                 return m.DeleteDataByValue(data);
00046             }
00047         }
00048     }
00049     //**********************************************************
00050     //VOID *を格納するDWORDがキーのマップ。(検索が早い
00051     inline void *GetPointer(DWORD key){
00052         return pa.GetData(&key);
00053     }
00054     inline int SetPointer(void *pointer){
00055         DWORD getkey;
00056         if(false==pa.SetData(&getkey,pointer))
00057             return -1;
00058         return getkey;
00059     }
00060     inline bool DeletePointer(void *pointer=NULL,DWORD key=-1){
00061         if(key!=-1){
00062             return pa.DeleteDataByKey(&key);
00063         }else if(pointer!=NULL){
00064             return pa.DeleteDataByValue(pointer);
00065         }
00066         return false;
00067     }
00068 
00069     //**********************************************************
00070     //タスクのSTRINGマップ
00071     inline int SetTaskDataStrKey(char *str,TasClassTask *p){
00072         if(false==t_str_ref.SetData(str,p))
00073             return DKINGYO_DATA_WRAPPER_FAILED;
00074         return 0;
00075     }
00076 
00077     inline TasClassTask *GetTaskDataStrKey(char *str){
00078         try{
00079             return t_str_ref.GetData(str);
00080         }catch(int r){
00081             DEBUGMB("GetTaskDataStrKey 例外");
00082             if(r==DKINGYO_DATA_WRAPPER_FAILED)
00083                 return NULL;
00084         }
00085         return NULL;
00086     }
00087     inline bool DeleteTaskDataStrKey(char *str){
00088         if(false==t_str_ref.DeleteDataByKey(str)){
00089             return false;//へんなもん入れるな!falseだったじゃないか!
00090         }
00091         return true;
00092     }
00093     //**********************************************************
00094     //VOIDFUNCの型の関数のSTRINGマップ
00095     inline int SetFuncStrKey(char *str,VOIDFUNC p){
00096         if(false==t_func.SetData(str,p))
00097             return DKINGYO_DATA_WRAPPER_FAILED;
00098         return 0;
00099     }
00100 
00101     inline VOIDFUNC GetFuncStrKey(char *str){
00102         try{
00103             return t_func.GetData(str);
00104         }catch(int r){
00105             DEBUGMB("GetTaskDataStrKey 例外");
00106         }
00107         return NULL;
00108     }
00109     inline bool DeleteFuncStrKey(char *str){
00110         if(false==t_func.DeleteDataByKey(str)){
00111             return false;//へんなもん入れるな!falseだったじゃないか!
00112         }
00113         return true;
00114     }
00115     //デバック用
00116     inline void PrintDebug(char *str,...){
00117     #ifdef _DEBUG
00118         char s[1024];
00119         SET_VA_LIST(s,1024,str);
00120         ::dkutil::dAddLog("dKingyoIsWarehouserLog.log",s);
00121     #endif
00122     }
00123 };
00124 
00125 //しゃぁない。 馬鹿なこの関数は破棄するつもりだったけど、我慢。
00126 inline dKingyoIsWarehouser *GetWarehouser_dKingyo(){
00127     static dKingyoIsWarehouser WhyAmIWarehouser_I_am_Programmer;
00128     return &WhyAmIWarehouser_I_am_Programmer;
00129 }
00130 /*
00131 inline dKingyoIsWarehouser *GetWarehouser_dKingyo(){
00132     static singlton<dKingyoIsWarehouser> WhyAmIWarehouser_I_am_Programmer;
00133     static  ;
00134     return WhyAmIWarehouser_I_am_Programmer.get();
00135 }
00136 */
00137 inline dKingyoIsWarehouser &RecallWarehouser_dKingyo(){
00138     return *GetWarehouser_dKingyo();
00139 }
00140 
00141 #ifdef USE_DKINGYO_OBJECT_TEST//テスト系関数
00142     extern void WhyAmIWarehouser();
00143     extern void dKingyoIsWarehouserTest01();
00144 #endif 
00145 
00146 }//end of dkingyo namespace
00147 }//end of dkutil namespace

dKingyoUtilClass (dkutil)に対してMon Jun 9 01:32:40 2003に生成されました。 doxygen1.3