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

dkutil_DataStruct.h

解説を見る。
00001 
00002 
00003 
00004 
00005 #ifndef _dKingyo_DataStructure__
00006 #define _dKingyo_DataStructure__
00007 
00008 #include "dkutilConfig.h"
00009 #include "dKingyoMacro.h"
00010 //**********************************************************
00011 //共通の定義
00012 //**********************************************************
00013 
00015 #define DKINGYO_NOT_MOUNTED -100
00016 
00017 #define DKINGYO_NO_DEFINED_FUNCTION DKINGYO_NOT_MOUNTED
00018 
00019 //**********************************************************
00020 //識別するための定義
00021 //**********************************************************
00022 
00023 enum{//OSのバージョンを取得するための列挙
00024     enuWindows3_1=0,
00025     enuWindowsNT3_51,
00026     enuWindowsNT4_0,
00027     enuWindows95,
00028     enuWindows98,
00029     enuWindows2000,
00030     enuWindowsMe,
00031     enuWindowsXP
00032 };
00033 
00034 //dOpenDialog関数用のフラグ。DialogTypeFlagにぶち込む奴
00035 enum{
00036     enu_dDialogOpen = 1,
00037     enu_dDialogSave,
00038     enu_dDialogTextSave,
00039 };
00040 //**********************************************************
00041 //グローバルな?定数の設定
00042 //**********************************************************
00043 enum{
00045     enuExtendVaListLength = 256,
00046 };
00047 
00048 
00049 //**********************************************************
00050 //**********************************************************
00051 //dKingyoGameManager用の定義
00052 //**********************************************************
00053 //**********************************************************
00054 
00055 
00056 
00057 //****************************************
00058 //タスククラス用
00059 //***************************************
00060 
00061 //_______________________________________
00062 //定義類「
00063 //システムタスクのプライオリティなどなど
00064 #define HIGHEST_PRIORITY_OF_SYSTEM_TASK INT_MIN
00065 #define LOWEST_PRIORITY_OF_SYSTEM_TASK INT_MAX
00066 #define NO_NEXT_COUNTER -100//このカウンター値だと次のタスクに行かないように出来る。
00067 
00068 //TASK STATE
00069 enum{
00070     enuRUN=NULL,//処理する也
00071     enuSTOP,//今は処理しなくてよし
00072     enuTRASH,//もう廃棄済み
00073 };
00074 
00075 
00076 //TASK TYPE
00077 enum{
00078     enuSYSTEM_TASK=NULL,//システムタスク
00079     enuDEFAULT,//デフォルト(普通はこれを入れるべき)
00080     enuSENTINEL,//番兵のタスク。これによってタスク挿入時に高速化を図れる
00081     enuKILLINGWAIT,//死刑待ちタスク。
00082 };
00083 
00084 
00085 enum{
00086     TASKNAME_SIZE = 80, //デバック用のタスクの名前を入れる文字列のサイズ
00087     TASKWORK_SIZE = 256,//タスクワークのサイズ。
00088     KILLQUEUE_SIZE =200, //死刑待ちの部屋デフォルトの数。(これ以上になると自動的に多く確保します。
00089 };
00090 
00091 //型情報をデバックとリリースで変える。
00092 #ifdef _DEBUG
00093 
00094 #   define ONETASKOBJ ONETASKDEBUG//一つの処理の構造体
00095 
00096 #else//Release
00097 
00098 #   define ONETASKOBJ ONETASK//一つの処理の構造体
00099 
00100 #endif
00101 
00102 typedef void (*VOIDFUNC)(void); 
00103 typedef void (*VOIDARGFUNC)(void *);
00104 
00105 
00106 //関数キューのデータ構造
00107 typedef struct tugFunctionQueueData{
00108     VOIDFUNC func;
00109     int counter;
00110 }FUNCTION_QUEUE_DATA;
00111 
00112 typedef std::deque<FUNCTION_QUEUE_DATA>::iterator VOIDFUNCIT;
00113 
00114 
00115 //ひとつのタスクのデータ構造
00116 typedef struct tugTasClassTask{
00117     int         m_state;                // タスク状態(メッセージを入れる)
00118     int         m_type;             // タスクタイプ(親タスクとか子タスクとか
00119     int         m_prio;             // 実行プライオリティ
00120     struct tugTasClassTask *next,*prev;
00121     int counter;//ファンクションカウンター
00122     VOIDFUNC func;//実行関数
00123     VOIDFUNC kill;//しねしねぇ!(謎 デストラクタです。
00124     VOIDFUNCIT funcit;//ファンクションイテレータ
00125     union{//タスクワーク
00126         char work[TASKWORK_SIZE];
00127         char *pwork;
00128     };
00129     size_t worksize;//pworkのサイズ
00130     DWORD ID;//タスクプールから確保した時のID
00131 #ifdef _DEBUG
00132     char name[TASKNAME_SIZE];//デバック用の名前。
00133     virtual void run(){
00134         if(func!=NULL)func();
00135         else MessageBox(NULL,"Task error:func = NULL","ERROR",MB_OK);
00136     }
00137 #else
00138     virtual void run(){func();}
00139 #endif
00140 }TasClassTask;
00141 
00142 
00143 //このゲームマネージャーのセーブデータ
00144 typedef struct tugGameManagerSaveDataProto{
00145     char DxLibSetupSaveDataName[MAX_PATH];//DxLibSetupのセーブファイルを入れるパス(名前も一緒に入れること)
00146 
00147 }GAMEMANAGER_SAVEDATA_PROTO;
00148 
00149 
00150 
00151 typedef struct tugGameManagerSaveData{
00152     DWORD dwSize;//この構造体のサイズ
00153     union{
00154         char Reserved[51200];//50KBあるらしい
00155         GAMEMANAGER_SAVEDATA_PROTO data;
00156     };
00157 
00158 }GAMEMANAGER_SAVEDATA;
00159 
00160 inline GAMEMANAGER_SAVEDATA *GetGameManagerSettingData(){
00161     static GAMEMANAGER_SAVEDATA data;
00162     return &data;
00163 }
00164 //**********************************************************
00165 //ゲームマネージャーの抽象クラス
00166 
00167 template<class TTASK>
00168 class IdKingyoGameManager //: public gc_cleanup
00169 {
00170 protected:
00171     virtual int KillingTime() = 0;
00172 public:
00173     IdKingyoGameManager(){}
00174     virtual ~IdKingyoGameManager(){}
00175     virtual int TaskRun() = 0;
00176     virtual int OpeningRun() = 0;
00177     virtual int InsertTask( TTASK *) = 0;
00178     virtual int DeleteTask( TTASK *) = 0;
00179     virtual int DeleteTask(int ) = 0;
00180     virtual int DeletePriorityTask(int min,int max) = 0;
00181     virtual int DebugWindow(int,int) = 0;
00182     virtual int GetVersion() = 0;
00183     virtual bool isOK() = 0;
00184 };
00185 //**********************************************************
00186 
00187 typedef struct tugGameManagerDefaultData{
00188     VOIDFUNC TopTaskInit;
00189     VOIDFUNC TopTaskKill;
00190     VOIDFUNC TailTaskInit;
00191     VOIDFUNC TailTaskKill;
00192 }GAMEMANAGER_DEFAULTGLOBALDATA;
00193 
00195 enum{
00196     enuDefaultTasClassData=1,
00197 };
00198 
00199 //**********************************************************
00200 //描画関係のマネージャー 描画順をソートしたりとか^^;
00201 //**********************************************************
00202 
00203 
00204 //描画方法の列挙!!!!!
00205 enum{
00206     //注意!:これ以上enumを増やすときは後ろに増やすこと!
00207     //これを守らないとジャンプテーブルが狂う。
00208     //NULL=そのまんま描画
00209     enu2DNONE=1,//そのまんま
00210     enu2DROTATE,//回転(拡大縮小もできる)
00211     enu2DROTATE2,//回転の中心も変えれる回転(拡大縮小もできる)
00212     enu2DTURN,//左右反転
00213     enu2DEXTEND,//拡大縮小(DrawExtendGraph)
00214     enu2DMODI,//自由変形
00215     enu2DCHIPMAP,//マップチップ
00216     enu2DTEXT,//テキスト 
00217     enu2DLINE,//ライン(線 //DxLibの場合はこれ以降はif,switchで解決。ジャンプテーブルめんどくせぇ
00218     enu2DBOX,//箱(矩形
00219     enu2DCIRCLE,//円(正円
00220     enu2DOVAL,//楕円
00221     enu2DTRIANGLE,//三角
00222     enu2DPIXEL,//ドット
00223 };
00224 
00225 //上記のenumの数が下のDefineなのだ!
00226 #define DRAW2D_TYPE_NUM 15//(NULLも入れて8個
00227 
00228 
00229 enum{
00230     //NULL = そのまんま描画
00231     enu2DNOBLEND=1,//そのまんま東(謎
00232     enu2DBLENDADD,//加算
00233     enu2DBLENDSUB,//減算
00234     enu2DBLENDALPHA,//αブレンディング
00235 };
00236 
00237 #define DRAW2D_BLEND_NUM 5//NULLもいれて五個
00238 
00239 
00240 enum{
00241     //NULL = NORMAL(なにもしない)
00242     enu2DOPTION_NEAREST,//NEAREST NEIVER で描画?
00243     enu2DOPTION_BILINEAR,//BILINEAR で描画?
00244 };
00245 
00246 #define DRAW2D_OPTION_NUM 3//NULLもいれて3個
00247 
00248 
00249 
00250 //__________________________________________________________
00251 //DxLib 用 構造体
00252 
00253 typedef struct DrawGraphData_{
00254     int x1,y1;
00255     bool trans_flag;//通過するか?
00256     int handle;//グラフィックハンドル
00257 }DRAWGRAPHDATA;
00258 
00259 typedef struct DrawTurnGraphData_{
00260     int x1,y1;
00261     bool trans_flag;//通過するか?
00262     int handle;//グラフィックハンドル
00263 }DRAWTURNGRAPHDATA;
00264 
00265 typedef struct DrawRotaGraphData_{
00266     int x1,y1;
00267     float extend_rate,angle;//拡大縮小率。回転アングル。(DrawRotaGraphで使用。
00268     bool trans_flag;//通過するか?
00269     int handle;//グラフィックハンドル
00270     bool turn_flag;//LR反転するかどうか?
00271 }DRAWROTAGRAPHDATA;
00272 
00273 typedef struct DrawRotaGraph2Data_{
00274     int x1,y1;//グラフィックの座標。
00275     int cx,cy;//グラフィックの中心座標。
00276     float extend_rate,angle;//拡大縮小、回転
00277     bool trans_flag;//通過フラグ
00278     int handle;
00279     bool turn_flag;
00280     /*
00281         DrawRotaGraph2( 
00282         int x, int y, 
00283         int cx, int cy,
00284         double ExtRate, double Angle ,
00285         int GrHandle , int TransFlag , 
00286         int TurnFlag = FALSE  ) ;   // グラフィックの回転描画2
00287     */
00288 }DRAWROTAGRAPH2DATA;
00289 
00290 typedef struct DrawExtendGraphData_{
00291     int x1,x2,y1,y2;
00292     bool trans_flag;//通過するか?
00293     int handle;//グラフィックハンドル
00294 }DRAWEXTENDGRAPHDATA;
00295 
00296 typedef struct DrawModiGraphData_{
00297     int x1,x2,x3,x4;
00298     int y1,y2,y3,y4;//32バイトも使用するのって引けるなぁ。…
00299     bool trans_flag;//通過するか?
00300     int handle;//グラフィックハンドル
00301 }DRAWMODIGRAPHDATA;
00302 
00303 typedef struct DrawChipMapData_{//これは本当に死ぬよ。…タスク内に収まるか?
00304     int MapWidth, MapHeight ;//: マップデータ全体の幅と高さ
00305     int *MapData ;//: マップデータが格納されたアドレス
00306     int ChipTypeNum ;//: マップに使うチップの種類の数
00307     int *ChipGrHandle ;//: チップのグラフィック配列のアドレス
00308     int TransFlag ;//: 透過色処理の有無
00309     int MapDrawPointX, MapDrawPointY ;//: 描画するマップの起点となる左上座標
00310     int MapDrawWidth, MapDrawHeight;// : 起点座標から描画するマップの幅と高さ
00311     int ScreenX, ScreenY ;//: マップを描画する画面上の座標 
00312 }DRAWCHIPMAPDATA;//よく考えるとsizeof(int)*12だよ。48バイト…まぁいいかぁ。300バイト確保しているし
00313 
00314 typedef struct DrawTextData_{
00315     int x,y;
00316     char *szStrPointer;
00317     int Color;
00318 }DRAWSTRINGDATA;
00319 
00320 typedef struct DrawFigureData_{
00321     int x1,y1;//主にx1、y1に入れてください。
00322     union{
00323         int x2;//use for DrawLine,DrawBox,and DrawTriangle
00324         int rx;//use for DrawOval
00325         int r;//use for DrawCircle
00326     };
00327     union{
00328         int ry;//use for DrawOval
00329         int y2;//use for DrawLine ,DrawBox and DrawTriangle
00330     };
00331     int x3;//三角形描画の時に使うx3、y3
00332     int y3;//Use for DrawTriangle x3 , y3
00333     int Color;//color data
00334     int FillFlag;//If this flag is TRUE, 
00335                             //an inside will be smeared away with the value of Color.
00336 }DRAWFIGUREDATA;
00337 
00338 //_____________END DXLIB TYPE STRUCTURE OBJECT DEFINED___
00339 
00340 
00341 //__________________________________________________________
00342 //汎用構造体^^;(全然汎用じゃないなぁ
00343 
00344 typedef struct tugDKINGYO_DRAW_2D_DATA{
00345     int LibFlag;//描画ライブラリフラグ
00346     int DrawTypeFlag;//ドローフラグ(描画の仕方(回転とか左右反転とかStringとか))
00347     int BlendFlag;//ブレンドフラグ
00348     int BlendPercent;//ブレンド率
00349     int OptionFlag;//オプションとか
00350     int red,green,blue;//RGBのデータ。(描画輝度
00351     int Priority;//描画順番。いわいる3DのZ値みたいな奴
00352     union{//各ライブラリの描画用データの構造
00353         //DxLib
00354         DRAWGRAPHDATA DrawGraph;
00355         DRAWTURNGRAPHDATA DrawTurnGraph;
00356         DRAWROTAGRAPHDATA DrawRotaGraph;
00357         DRAWROTAGRAPH2DATA DrawRotaGraph2;
00358         DRAWEXTENDGRAPHDATA DrawExtendGraph;
00359         DRAWCHIPMAPDATA DrawChipMap;
00360         DRAWMODIGRAPHDATA DrawModiGraph;
00361         DRAWSTRINGDATA DrawString;
00362         DRAWFIGUREDATA DrawFigure;
00363     };
00364     //
00365     //int x1; int y1; int x2; int y2;//左上右上座標
00366     //int x3; int y3; int x4; int y4;//左下右下座標
00367     //double ExtRate;//拡大率
00368     //double Angle;//回転角度
00369     //int GrHandle;//グラフィックハンドル
00370     //int TransFlag; //通過フラグ
00371 }DKINGYO_DRAW_2D_DATA;
00372 
00373 typedef struct dKingyoDrawOption{
00374     int m_DrawBlend;//ブレンドモードの設定
00375     int m_BlendPercent;//ブレンドパーセント
00376     int m_DrawType;//ドロータイプ(回転とか拡大とか?
00377     //構造体のメンバはどんどん後ろに宣言していくこと。
00378 }DKINGYO_DRAW_OPTION;
00379 
00380 
00381 //2D描画ラッパー(なんかそっけないけど^^;
00382 template<class T>
00383 class IdKingyoDraw2D{
00384 public:
00385     virtual int Draw2D(T) = 0;
00386     virtual int Draw2DPQ(T) = 0;//PQ = Priority Queue
00387 
00388 };
00389 
00390 //同じく基本図形描画ラッパ
00391 template<class T>
00392 class IdKingyoDrawFigure{
00393 public:
00394     virtual int DrawFigure(T) = 0;
00395     virtual int DrawFigurePQ(T) = 0;
00396 };
00397 
00398 //さらにテキスト描画系らっぱ(ラッパーってAdapterともいうらしい?
00399 template<class T>
00400 class IdKingyoDrawText{
00401 public:
00402     virtual int DrawText(T) = 0;
00403     virtual int DrawTextPQ(T) = 0;
00404 };
00405 
00406 
00407 //ドローマネージャー
00408 template<class T>
00409 class IdKingyoDrawManager{
00410 public:
00411     virtual int Draw2D(T) = 0;
00412     virtual int Draw3D(T) = 0;
00413     virtual int DrawText(T) = 0;
00414     virtual int DrawFigure(T) = 0;
00415     virtual int SetDrawBlend(int,int) = 0;
00416     virtual int SetDrawOption(int) = 0;
00417     virtual int SetDrawBright(int,int,int) = 0;
00418     virtual int SetDrawType(int) = 0;
00419     virtual int sort() = 0;//描画キューをソートします。
00420     virtual int SortDraw() = 0;//ソートして描画します。
00421     virtual int UserGivesDefinitionDraw(T) = 0;//ユーザーが定義する描画関数
00422     virtual int Display() = 0;//いわいるFlipです。
00423 };
00424 
00426 typedef int (*DK_DRAW2D_GP)(DKINGYO_DRAW_2D_DATA *);
00428 typedef DKINGYO_DRAW_2D_DATA* DXLIB_GRAPH_DATA ;
00429 
00431 enum{
00433     enuMEDIA_NORMAL = 1,
00435     enuMEDIA_BACKGROUND,
00437     enuMEDIA_LOOP,
00438 };
00439 
00440 
00442 typedef struct tugDKINGYO_MEDIA_OPTION_DATA{
00443     int Volume;
00444     int Pan;
00445     int Frequency;
00446     int LoadHandle;
00447     short PlayType;
00448 }DKINGYO_MEDIA_OPTION_DATA;
00449 
00450 template<class T>
00451 class IdKingyoMediaManager{
00452 public:
00454     virtual int Play(T) = 0;
00456     virtual int Stop(int //handle
00457                                     ) = 0;
00458     virtual int Stop(T);
00460     virtual int AllStop() = 0;
00462     virtual int Pause(T) = 0;
00463     virtual int Pause(int //handle
00464                                     ) = 0;
00466     virtual int AllPause() = 0;
00468     virtual int RePlay(T) = 0;
00469     virtual int RePlay(int //handle
00470                                     ) = 0;
00472     virtual int AllRePlay() = 0;
00474     virtual int SetForcedMediaOption(T) = 0;
00476     virtual int CancellForcedMediaOption() = 0;
00478     virtual int SetPlayingMediaOption(T) = 0;
00479     virtual int SetPlayingMediaOption(int //handle
00480                                     ) = 0;
00482     virtual int CancellPlayingMediaOption() = 0;
00484     virtual int CheckPlaying(int //handle
00485                                     ) = 0;
00486     virtual int CheckPlaying(T) = 0;
00487 };
00488 
00489 //**********************************************************
00490 //User SetupTools
00491 //**********************************************************
00492 template<class T>
00493 class IdKingyoSetupTools{
00494 protected:
00495     typedef std::list<T> DATA_LIST;
00496 public:
00497     IdKingyoSetupTools(){}
00498     virtual ~IdKingyoSetupTools(){}
00499     virtual int FileNameSet(char *str) = 0;
00500     virtual int MyDefinedDataSet(T &InsertData)=0;
00501     virtual T *MyDefinedDataGet(T *data=NULL)=0;
00502     virtual HWND GetDialogWindowHandle()=0;
00503     virtual int OpenDialog() = 0;
00504     virtual int CloseDialog() = 0;
00505     virtual int Construct(HINSTANCE hInstance,HINSTANCE hPrevInstance,
00506         LPSTR lpCmdLine,int nCmdShow,int flag) = 0;
00507     virtual int UnenableWindowInDialog(int ID) = 0;
00508 };
00509 
00510 
00511 //**********************************************************
00512 //d金魚が使うソフトウェア自身のデータ^^;
00513 //**********************************************************
00514 /*
00515 enum{
00516     enuDKINGYO_USE_DXLIB,
00517     enuDKINGYO_USE_YANESDK3RD,
00518 };
00519 
00520 
00521 #define _DKINGYO_SOFTWARENAME_LEN MAX_PATH
00522 
00523 
00524 //d金魚が使う、ソフトウェア自身のデータ。
00525 typedef struct dKingyoSOFTWAREDATA{
00526     //dKingyoSOFTWAREDATA(HINSTANCE hInst,HINSTANCE hPrev,LPCTSTR CmdLine,int CmdShow
00527         
00528     //WinMainの引数郡
00529     HINSTANCE m_hInstance;
00530     HINSTANCE m_hPrevInstance;
00531     LPCTSTR m_lpCmdLine;
00532     int m_nCmdShow;
00533     //ソフトの名前
00534     char SoftwareName[_DKINGYO_SOFTWARENAME_LEN];
00535     int LibraryFlag;//DirectXライブラリのフラグ。
00536 }DKINGYO_SOFTWAREDATA;
00537 
00538 int dKingyoSoftwareDataInit(DKINGYO_SOFTWAREDATA &d){
00539     
00540     d.LibraryFlag = enuDKINGYO_USE_DXLIB;
00541     d.m_hInstance = 0;
00542     d.m_hPrevInstance = 0;
00543     d.m_lpCmdLine = 0;
00544     d.m_nCmdShow = 0;
00545     strncpy(d.SoftwareName,"dKingyoGameManager Used Game" ,_DKINGYO_SOFTWARENAME_LEN);
00546     return 0;
00547 }
00548 inline DKINGYO_SOFTWAREDATA *GetdKingyoSoftwareData(){
00549     static DKINGYO_SOFTWAREDATA data;
00550     static int once=dKingyoSoftwareDataInit(data);      
00551     return &data;
00552 }
00553 inline DKINGYO_SOFTWAREDATA &GetdKingyoSoftwareDataRef(){
00554     return *GetdKingyoSoftwareData();
00555 }
00556 
00557 class IdKingyoSoftwareDataManager{
00558 protected:
00559     DKINGYO_SOFTWAREDATA *m_pData;
00560     //DKINGYO_SOFTWAREDATA &m_data;
00561 public:
00562     IdKingyoSoftwareDataManager(){
00563         m_pData=GetdKingyoSoftwareData();
00564     }
00565     virtual ~IdKingyoSoftwareDataManager(){}
00566     virtual int Initialize(HINSTANCE hInstance,HINSTANCE hPrevInstance,
00567         LPCTSTR lpCmdLine,int nCmdShow){
00568         DKINGYO_SOFTWAREDATA m_data= *m_pData;
00569         m_data.m_hInstance=hInstance;
00570         m_data.m_hPrevInstance=hPrevInstance;
00571         m_data.m_lpCmdLine = lpCmdLine;
00572         m_data.m_nCmdShow = nCmdShow;
00573         return 0;
00574     }
00575     virtual HINSTANCE WinMainArg1()const{return m_pData->m_hInstance;}
00576     virtual HINSTANCE WinMainArg2()const{return m_pData->m_hPrevInstance;}
00577     virtual LPCTSTR WinMainArg3()const{return m_pData->m_lpCmdLine;}
00578     virtual int WinMainArg4()const{return m_pData->m_nCmdShow ;}
00579     virtual void SetSoftwareName(char *str){
00580         strncpy(m_pData->SoftwareName,str,_DKINGYO_SOFTWARENAME_LEN);
00581     }
00582     virtual char *GetSoftwareName()const{return m_pData->SoftwareName;}
00583     virtual void SetLibraryFlag(int f){m_pData->LibraryFlag=f;}
00584     virtual int GetLibraryFlag()const{return m_pData->LibraryFlag;}
00585 };
00586 */
00587 
00588 //**********************************************************
00589 //メモリ管理系
00590 //**********************************************************
00591 
00593 
00595 typedef struct tugFreeDomainArray{
00596     tugFreeDomainArray(DWORD getp,DWORD getnum) : 
00597         point(getp) , num(getnum){}
00598     DWORD point;//どこの配列の添え字からか
00599     DWORD num;//point後は何個か?
00600 }FREEDOMAINARRAY;
00601 
00602 
00604 template<class ReturnValue,class ArgType>
00605 class IdKingyoArray{
00606 public:
00607     IdKingyoArray(){};
00608     virtual ~IdKingyoArray(){}
00609     virtual int ReallocateMemory() = 0;
00610     virtual int Init(size_t,int,void *) = 0;
00611     virtual ReturnValue *GetArray(size_t,ArgType *) = 0;
00612     virtual int ReleaseArray(ArgType *) = 0;
00613     virtual int Compaction() = 0;
00614     virtual int AllFree() = 0;
00615     virtual bool isOK() = 0;
00616     virtual void PRINT_DEBUG(char *str,...) = 0;
00617     virtual void DEBUG_PRINT() = 0;
00618 };
00619 
00620 
00622 template<class ReturnType,class ArgType>
00623 class IdKingyoArrayOneByOne{
00624 protected:
00625 public:
00626     IdKingyoArrayOneByOne(){}
00627     virtual ~IdKingyoArrayOneByOne(){}
00628     virtual int End() = 0;
00629     virtual int Init(size_t memory_count,int flag=NULL,ReturnType *p=NULL) = 0;
00630     virtual int Reallocate() = 0;//配列を拡張する。
00631     virtual int Compaction() = 0;//コンパクションする。(いちおう空の値で実装して!?
00632     virtual ReturnType *GetArray(ArgType) = 0;//空いている要素を返す(使用フラグを立てる
00633     virtual int ReleaseArray(ArgType) = 0;//使用フラグを下ろす
00634     virtual void PrintDebug(char *str,...) = 0;//デバック用文字列を描画する
00635     virtual void DebugPrint() = 0;//デバックログを残す
00636     virtual bool isOK() = 0;//コンストラクタが成功したかどうか?
00637 };
00638 
00639 
00640 
00641 
00642 
00643 
00644 
00646 
00647 //d金魚が2003年5月ごろ使っていたもの
00648 class IdKingyoAllocateManager
00649 {
00650 public:
00651     virtual void *Malloc(size_t) = 0;
00652     virtual void Free(void *) = 0;
00653     //void *Calloc( size_t, size_t) = 0;
00654     virtual void *Realloc(void *,size_t) = 0;
00655 };
00656 
00657 //16:55 2003/05/25 頃から製作開始。ガベコレもどき
00658 template <class T=void *> 
00659 class IdKingyoAllocatorGC
00660 {
00661 public:
00662   typedef size_t    size_type;
00663   typedef ptrdiff_t difference_type;
00664   typedef T*        pointer;
00665   typedef const T*  const_pointer;
00666   typedef T&        reference;
00667   typedef const T&  const_reference;
00668   typedef T         value_type;
00669 
00670     virtual void *MallocGC(size_t,bool,char *) = 0;
00671     virtual int FreeGC(void *,bool) = 0;
00672     virtual void *ReallocGC(void *,size_t,bool,char *) = 0;
00673     virtual int Collection() = 0;//ガベコレもどきをする。
00674   
00675     virtual pointer       address(reference x) const = 0;
00676   virtual const_pointer address(const_reference x) const = 0;
00677   virtual pointer allocate(size_type n, const void* hint = 0) = 0;
00678   virtual void deallocate(pointer p, size_type n = 0) = 0;
00679   virtual size_type max_size() const = 0;
00680   virtual void construct(pointer p, const T& val) = 0;
00681   virtual void destroy(pointer p) = 0;
00682   virtual char* _Charalloc(size_type n) = 0;
00683 };
00684 
00686 typedef struct tugdKingyoAllocatorGC_DEBUG{
00687     tugdKingyoAllocatorGC_DEBUG(size_t get_size,void *get_address,char *getstr) :
00688         size(get_size),address(get_address),str(getstr){}
00689     size_t size;
00690     void *address;
00691     std::string str;
00692     //union{
00693         //int uniReserved[5];//sizeof(int) * 5
00694 }DKINGYOALLOCATOR_GC_DEBUG;
00695 
00696 
00698 #   ifdef USE_DKINGYO_DEBUG_VIEW
00699 typedef struct tugdKingyoFrameMemory{
00700     tugdKingyoFrameMemory(VOIDFUNC func,DWORD GetID,size_t memsize,
00701         DWORD begin_frame_point,char *getstr) :
00702             Destructor(func),ID(GetID),size(memsize),
00703             point(begin_frame_point),str(getstr){}
00704 
00705     VOIDFUNC Destructor;
00706     DWORD ID;
00707     size_t size;
00708     DWORD point;//byte charでのポイント
00709     std::string str;
00710 }DKINGYO_FRAME_MEMORY;
00711 
00712 #   else //デバッグビューを使わないならば
00713 typedef struct tugdKingyoFrameMemory{
00714     tugdKingyoFrameMemory(VOIDFUNC func,DWORD GetID,size_t memsize,
00715         DWORD begin_frame_point,char *getstr) :
00716             Destructor(func),ID(GetID),size(memsize),
00717             point(begin_frame_point){}
00718 
00719     VOIDFUNC Destructor;
00720     DWORD ID;
00721     size_t size;
00722     DWORD point;//byte charでのポイント
00723 }DKINGYO_FRAME_MEMORY;
00724 #   endif
00725 
00726 //**********************************************************
00727 //データのラッピング用
00728 //**********************************************************
00729 
00730 //このライブラリが例外として投げかけるもの
00731 #define DKINGYO_DATA_WRAPPER_FAILED -1 //失敗
00732 #define DKINGYO_DATA_WRAPPER_OVERWRITE -2 //上書き
00733 
00734 
00735 template<class V,class K>
00736 class IdKingyoDataWrapper{
00737 public:
00738     IdKingyoDataWrapper(){}
00739     virtual ~IdKingyoDataWrapper(){}
00740     virtual V GetData(K) = 0;
00741     virtual bool SetData(K,V) = 0;
00742     virtual bool DeleteDataByKey(K) = 0;
00743     virtual bool DeleteDataByValue(V) =0;
00744 };
00745 
00746 
00747 //**********************************************************
00748 //乱数生成用
00749 //**********************************************************
00750 
00751 template<typename T>
00752 class IdKingyoRandom{
00753 #ifdef _DEBUG
00754     public:
00755 #else
00756     protected:
00757 #endif
00758     unsigned long m_ulSeed;
00759     T m_Seed;
00760     T m_Max;
00761 public:
00762     IdKingyoRandom(){}
00763     virtual ~IdKingyoRandom(){}
00764     virtual T Rand() = 0;
00765     virtual T Random(T) = 0;
00766     virtual T RandomDomain(T min,T max) = 0;
00767     virtual T RandomDomainSafety(T min,T max) = 0;
00768     virtual T GetRandMax() = 0;
00769     virtual void SetSeed(T) = 0;
00770     virtual T MesBox(char *str,...) = 0;
00771 
00772 };
00773 
00774 //よく使うメンバ関数はすでに定義させておく
00775 template<typename T>
00776 class dKingyoRandom_BasicMember : public IdKingyoRandom<T>{
00777 public:
00778     dKingyoRandom_BasicMember(){}
00779     virtual ~dKingyoRandom_BasicMember(){}
00780     virtual T MesBox(char *str,...){
00781         char s[256];
00782         SET_VA_LIST(s,256,str);
00783         return (T) MessageBox(NULL,s,"DEBUG MESSAGE",MB_OK);
00784     }
00785     virtual T GetRandMax(){return m_Max;}
00786     virtual void SetSeed(T set){m_ulSeed=m_Seed = set;}
00787 };
00788 
00789 //**********************************************************
00790 //デバッグ用のデータ構造とか(実際あまり意味はない 拡張する時に使う
00791 //**********************************************************
00792 
00793 typedef int (*printfunc)(char *);
00794 typedef std::deque<std::string> debug_string_queue;
00795 
00796 
00797 //**********************************************************
00798 //ユーザーが定義するdkutilのグローバルオブジェクト?
00799 //ともかく各クラスが使う汎用的な部品たち
00800 //**********************************************************
00801 
00802 class IdKingyoGlobalProcess{
00803 public:
00804     IdKingyoGlobalProcess(){}
00805     virtual ~IdKingyoGlobalProcess(){}
00806     virtual int LockThread() = 0;//スレッドをロックする
00807     virtual int UnlockThread() = 0;//スレッドをアンロックする
00808 };
00809 
00810 #endif

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