Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
Utility.h
[詳解]
1// ----------------------------------------------------------------------------
6
7#pragma once
8
9#include "TString.h"
10
11namespace alt
12{
16 {
17 public:
20 static const GUID APIENTRY CreateGUID ();
21
24 static const TString APIENTRY MakeGUID ();
25
29 static SYSTEMTIME APIENTRY GetSystemTime ();
30
34 static SYSTEMTIME APIENTRY GetLocalTime ();
35
39 static TString APIENTRY GetFormatTime (const SYSTEMTIME& systemTime);
40
43 static ULARGE_INTEGER APIENTRY GetLocalTimeQuad ();
44
50 static SYSTEMTIME APIENTRY GetTimeByFileTime (const FILETIME& fileTime);
51
54#pragma warning (push)
55#pragma warning (disable:28159)
56 static DWORD APIENTRY GetPastTick () { return ::GetTickCount (); };
57#pragma warning (pop)
58
61 static ULONGLONG APIENTRY GetPastTick64 () { return ::GetTickCount64 (); };
62
74 static VOID APIENTRY GetSystemInfo (SYSTEM_INFO& systemInfo);
75
83 static BOOL APIENTRY Base64Encode (
84 LPBYTE lpbyString, DWORD dwLength, TString& response);
85
93 static BOOL APIENTRY Base64Decode (
94 TString& source, LPBYTE lpbyBuffer, DWORD& dwBuffer);
95
99 static skeleton::Array<TString> APIENTRY GetEnvironments ();
100
104 static TString APIENTRY GetEnv (LPCTSTR lpctszKeyword);
105
114 static BOOL APIENTRY ReadIniFile (
115 LPCTSTR lpctszIniFile, LPCTSTR lpctszSection, LPCTSTR lpctszKeyword,
116 TString& response);
117
124 static DWORD APIENTRY ReadIniFile (
125 LPCTSTR lpctszIniFile, LPCTSTR lpctszSection, LPCTSTR lpctszKeyword,
126 DWORD dwDefault);
127
136 static BOOL APIENTRY WriteIniFile (
137 LPCTSTR lpctszIniFile, LPCTSTR lpctszSection, LPCTSTR lpctszKeyword,
138 TString& strValue);
139
148 static BOOL APIENTRY WriteIniFile (
149 LPCTSTR lpctszIniFile, LPCTSTR lpctszSection, LPCTSTR lpctszKeyword,
150 INT iValue);
151
160 static BOOL APIENTRY CreateMD5 (LPBYTE lpbyData, DWORD dwSize, LPBYTE lpbyMD5);
161
169 static BOOL APIENTRY CreateMD5 (LPCTSTR lpctszFileName, LPBYTE lpbyMD5);
170
178 template<typename T>
179 static VOID APIENTRY QuickSort (T array[], int rangeLeft, int rangeRight)
180 {
181 // 変数定義
182 int leftValue;
183 int rightValue;
184 T pivot;
185 T temp;
186
187 leftValue = rangeLeft; rightValue = rangeRight;
188
189 // 基準は真ん中に設定(値の平均値(中央値)もある)
190 pivot = array[(rangeLeft + rangeRight) / 2];
191
192 while (1)
193 {
194 // 基準より小さい値を左から見つけていく
195 // これをクラスで比較するために、operator < ()の実装が必要
196 while (array[leftValue] < pivot) leftValue++;
197
198 // 基準より大きい値を右から見つけていく
199 // これをクラスで比較するために、operator < ()の実装が必要
200 while (pivot < array[rightValue]) rightValue--;
201
202 // 見つかった値の順序が逆になったら終了
203 if (leftValue >= rightValue) break;
204
205 // 安全にオブジェクトを作るために、operator = ()の実装が必要
206 temp = array[leftValue];
207 array[leftValue] = array[rightValue];
208 array[rightValue] = temp;
209
210 leftValue++;
211 rightValue--;
212 }
213
214 //左のデータ群を対象としてクイックソートを再帰
215 if (rangeLeft < leftValue - 1)
216 QuickSort (array, rangeLeft, leftValue - 1);
217
218 //右のデータ群を対象としてクイックソートを再帰
219 if (rightValue + 1 < rangeRight)
220 QuickSort (array, rightValue + 1, rangeRight);
221 }
222
223 private:
224 Utility () = delete;
225 ~Utility () = delete;
226 };
227}
#define DLL_DECLSPEC
Definition: framework.h:17
文字列に関するWindowsAPIを集約したクラス
文字列に関するWindowsAPIを集約したクラス
Definition: TString.h:17
汎用的に使えるユーティリティクラス
Definition: Utility.h:16
Utility()=delete
static VOID APIENTRY QuickSort(T array[], int rangeLeft, int rangeRight)
配列の内容をクイックソート
Definition: Utility.h:179
static ULONGLONG APIENTRY GetPastTick64()
Windowsが起動してからの時間を返します。
Definition: Utility.h:61
~Utility()=delete
static DWORD APIENTRY GetPastTick()
Windowsが起動してからの時間を返します。
Definition: Utility.h:56
サイズ可変の配列を具現したクラス
Definition: Array.hpp:20
Definition: DBLibrary.h:12