Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
283
CryptoSource/SQLExecute/Nave/NFFilePtr.h
Normal file
283
CryptoSource/SQLExecute/Nave/NFFilePtr.h
Normal file
@@ -0,0 +1,283 @@
|
||||
/**
|
||||
* @file NFFilePtrA.h
|
||||
* @brief FILE auto close class
|
||||
* @remarks
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-04-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
namespace Nave {
|
||||
|
||||
/**
|
||||
* @class NFFilePtrW
|
||||
* @brief FILE auto close class
|
||||
* @remarks NFFilePtrW file(L"c:\1.txt", L"rt"); \r\n
|
||||
* fgets(str, 128, file); \r\n
|
||||
* return;
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-04-05
|
||||
*/
|
||||
class NFFilePtrW
|
||||
{
|
||||
public:
|
||||
/// NFFilePtrW <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NFFilePtrW() : m_pFile(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param file <20><><EFBFBD>ϸ<EFBFBD>
|
||||
* @param mode <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
NFFilePtrW(LPCWSTR file, LPCWSTR mode)
|
||||
{
|
||||
m_pFile = _wfopen(file, mode);
|
||||
}
|
||||
|
||||
/// NFFilePtrW <20>Ҹ<EFBFBD><D2B8><EFBFBD>
|
||||
~NFFilePtrW()
|
||||
{
|
||||
if(m_pFile)
|
||||
fclose(m_pFile);
|
||||
|
||||
m_pFile = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief NFFilePtrW1 = FilePtrW2 <20><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @warning NFFilePtrW2<57><32> <20><><EFBFBD>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
||||
*/
|
||||
NFFilePtrW& operator=(NFFilePtrW& _Right) throw()
|
||||
{
|
||||
Reset(_Right.Release());
|
||||
return (*this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief NFFilePtrW = FILE* <20><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @warning NFFilePtrW<72><57><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> fclose<73><65> <20>˴ϴ<CBB4>. \r\n
|
||||
* FILE*<2A><>ü<EFBFBD><C3BC> fclose<73>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DFBB><EFBFBD> <20><><EFBFBD>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
|
||||
*/
|
||||
NFFilePtrW& operator=(FILE* _Right) throw()
|
||||
{
|
||||
Reset(_Right);
|
||||
return (*this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief FILE* <20><><EFBFBD><EFBFBD>ȯ <20><><EFBFBD>۷<EFBFBD><DBB7><EFBFBD><EFBFBD><EFBFBD> <20>Դϴ<D4B4>.
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
operator FILE*() const throw()
|
||||
{
|
||||
return m_pFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>մϴ<D5B4>. FILE<4C><45> close <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
FILE* Release()
|
||||
{
|
||||
FILE* fp = m_pFile;
|
||||
m_pFile = NULL;
|
||||
return fp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>缳<EFBFBD><E7BCB3><EFBFBD>մϴ<D5B4>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FILE<4C><45> close <20>˴ϴ<CBB4>.
|
||||
* @param fp <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void Reset(LPCWSTR file, LPCWSTR mode)
|
||||
{
|
||||
if(m_pFile)
|
||||
fclose(m_pFile);
|
||||
|
||||
m_pFile = _wfopen(file, mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>缳<EFBFBD><E7BCB3><EFBFBD>մϴ<D5B4>.
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FILE<4C><45> close <20>˴ϴ<CBB4>.
|
||||
* @param fp <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void Reset(FILE* fp)
|
||||
{
|
||||
if(m_pFile)
|
||||
fclose(m_pFile);
|
||||
|
||||
m_pFile = fp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˻<EFBFBD><CBBB>մϴ<D5B4>.
|
||||
*/
|
||||
int IsEOF()
|
||||
{
|
||||
return feof(m_pFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
long Length()
|
||||
{
|
||||
fpos_t cuspos;
|
||||
if(fgetpos( m_pFile, &cuspos ) != 0)
|
||||
return -1; // error
|
||||
|
||||
fseek( m_pFile, 0L, SEEK_END );
|
||||
long length = ftell( m_pFile );
|
||||
|
||||
fsetpos(m_pFile, &cuspos);
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
/// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FILE* m_pFile;
|
||||
};
|
||||
|
||||
/**
|
||||
* @class NFFilePtrA
|
||||
* @brief FILE auto close class
|
||||
* @remarks NFFilePtrA file("c:\1.txt", "rt"); \r\n
|
||||
* fgets(str, 128, file); \r\n
|
||||
* return;
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-04-05
|
||||
*/
|
||||
class NFFilePtrA
|
||||
{
|
||||
public:
|
||||
/// NFFilePtrA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NFFilePtrA() : m_pFile(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param file <20><><EFBFBD>ϸ<EFBFBD>
|
||||
* @param mode <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
NFFilePtrA(LPCSTR file, LPCSTR mode)
|
||||
{
|
||||
m_pFile = fopen(file, mode);
|
||||
}
|
||||
|
||||
/// NFFilePtrA <20>Ҹ<EFBFBD><D2B8><EFBFBD>
|
||||
~NFFilePtrA()
|
||||
{
|
||||
if(m_pFile)
|
||||
fclose(m_pFile);
|
||||
|
||||
m_pFile = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief NFFilePtr1 = FilePtrW2 <20><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @warning NFFilePtr2<72><32> <20><><EFBFBD>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
||||
*/
|
||||
NFFilePtrA& operator=(NFFilePtrA& _Right) throw()
|
||||
{
|
||||
Reset(_Right.Release());
|
||||
return (*this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief NFFilePtrA = FILE* <20><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @warning NFFilePtr<74><72><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> fclose<73><65> <20>˴ϴ<CBB4>. \r\n
|
||||
* FILE*<2A><>ü<EFBFBD><C3BC> fclose<73>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DFBB><EFBFBD> <20><><EFBFBD>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
|
||||
*/
|
||||
NFFilePtrA& operator=(FILE* _Right) throw()
|
||||
{
|
||||
Reset(_Right);
|
||||
return (*this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief FILE* <20><><EFBFBD><EFBFBD>ȯ <20><><EFBFBD>۷<EFBFBD><DBB7><EFBFBD><EFBFBD><EFBFBD> <20>Դϴ<D4B4>.
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
operator FILE*() const throw()
|
||||
{
|
||||
return m_pFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>մϴ<D5B4>. FILE<4C><45> close <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
FILE* Release()
|
||||
{
|
||||
FILE* fp = m_pFile;
|
||||
m_pFile = NULL;
|
||||
return fp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>缳<EFBFBD><E7BCB3><EFBFBD>մϴ<D5B4>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FILE<4C><45> close <20>˴ϴ<CBB4>.
|
||||
* @param fp <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void Reset(LPCSTR file, LPCSTR mode)
|
||||
{
|
||||
if(m_pFile)
|
||||
fclose(m_pFile);
|
||||
|
||||
m_pFile = fopen(file, mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>缳<EFBFBD><E7BCB3><EFBFBD>մϴ<D5B4>.
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FILE<4C><45> close <20>˴ϴ<CBB4>.
|
||||
* @param fp <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void Reset(FILE* fp)
|
||||
{
|
||||
if(m_pFile)
|
||||
fclose(m_pFile);
|
||||
|
||||
m_pFile = fp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˻<EFBFBD><CBBB>մϴ<D5B4>.
|
||||
*/
|
||||
int IsEOF()
|
||||
{
|
||||
return feof(m_pFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
long Length()
|
||||
{
|
||||
fpos_t cuspos;
|
||||
if(fgetpos( m_pFile, &cuspos ) != 0)
|
||||
return -1; // error
|
||||
|
||||
fseek( m_pFile, 0L, SEEK_END );
|
||||
long length = ftell( m_pFile );
|
||||
|
||||
fsetpos(m_pFile, &cuspos);
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
/// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FILE* m_pFile;
|
||||
};
|
||||
|
||||
}
|
||||
100
CryptoSource/SQLExecute/Nave/NFIni.cpp
Normal file
100
CryptoSource/SQLExecute/Nave/NFIni.cpp
Normal file
@@ -0,0 +1,100 @@
|
||||
#include "Nave.h"
|
||||
#include "NFIni.h"
|
||||
|
||||
namespace Nave {
|
||||
|
||||
NFIni::NFIni()
|
||||
{
|
||||
ZeroMemory(m_szFileName, sizeof(m_szFileName));
|
||||
}
|
||||
|
||||
NFIni::~NFIni()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL NFIni::Open(LPCWSTR fileName)
|
||||
{
|
||||
if (!fileName)
|
||||
return FALSE;
|
||||
|
||||
wcsncpy(m_szFileName, fileName, MAX_PATH);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NFIni::Close()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NFIni::GetValue(LPCWSTR keyName, LPCWSTR valueName, LPDWORD value)
|
||||
{
|
||||
if (!keyName || !valueName || !value)
|
||||
return FALSE;
|
||||
|
||||
*value = GetPrivateProfileIntW(keyName, valueName, 0, m_szFileName);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NFIni::GetValue(LPCWSTR keyName, LPCWSTR valueName, FLOAT *value)
|
||||
{
|
||||
if (!keyName || !valueName || !value)
|
||||
return FALSE;
|
||||
|
||||
WCHAR Value[16] = {0,};
|
||||
|
||||
GetPrivateProfileStringW(keyName, valueName, L"", Value, 16, m_szFileName);
|
||||
|
||||
*value = (FLOAT)_wtof(Value);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NFIni::GetValue(LPCWSTR keyName, LPCWSTR valueName, LPWSTR value, DWORD bufferLength)
|
||||
{
|
||||
if (!keyName || !valueName || !value || bufferLength == 0)
|
||||
return FALSE;
|
||||
|
||||
GetPrivateProfileStringW(keyName, valueName, L"", value, bufferLength, m_szFileName);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NFIni::SetValue(LPCWSTR keyName, LPCWSTR valueName, DWORD value)
|
||||
{
|
||||
if (!keyName || !valueName)
|
||||
return FALSE;
|
||||
|
||||
WCHAR Value[16] = {0,};
|
||||
_itow(value, Value, 10);
|
||||
|
||||
WritePrivateProfileStringW(keyName, valueName, Value, m_szFileName);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NFIni::SetValue(LPCWSTR keyName, LPCWSTR valueName, LPCWSTR value)
|
||||
{
|
||||
if (!keyName || !valueName || !value)
|
||||
return FALSE;
|
||||
|
||||
WritePrivateProfileStringW(keyName, valueName, value, m_szFileName);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NFIni::SetValue(LPCWSTR keyName, LPCWSTR valueName, FLOAT value)
|
||||
{
|
||||
if (!keyName || !valueName)
|
||||
return FALSE;
|
||||
|
||||
WCHAR Value[16] = {0,};
|
||||
swprintf(Value, L"%f", value);
|
||||
|
||||
WritePrivateProfileStringW(keyName, valueName, Value, m_szFileName);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
103
CryptoSource/SQLExecute/Nave/NFIni.h
Normal file
103
CryptoSource/SQLExecute/Nave/NFIni.h
Normal file
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* @file NFIni.h
|
||||
* @brief INI <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @remarks
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-04-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace Nave {
|
||||
|
||||
/**
|
||||
* @class NFIni
|
||||
* @brief INI<4E><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
* @remarks NFIni ini; \r\n
|
||||
* ini.Open(L"c:\\Init.ini"); \r\n
|
||||
* ini.SetValue(L"SERVER CONFIG", L"PORT", dwPort); \r\n
|
||||
* ini.Close(); \r\n
|
||||
*
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-04-04
|
||||
*/
|
||||
class NFIni
|
||||
{
|
||||
public:
|
||||
/// NFIni <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NFIni();
|
||||
/// NFIni <20>Ҹ<EFBFBD><D2B8><EFBFBD>
|
||||
~NFIni();
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
* @param fileName <09><><EFBFBD>ϸ<EFBFBD>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL Open(LPCWSTR fileName);
|
||||
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL Close();
|
||||
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
|
||||
* @param keyName Key <20≯<EFBFBD>
|
||||
* @param valueName Value <20≯<EFBFBD>
|
||||
* @param value <09><>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL SetValue(LPCWSTR keyName, LPCWSTR valueName, LPCWSTR value);
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
|
||||
* @param keyName Key <20≯<EFBFBD>
|
||||
* @param valueName Value <20≯<EFBFBD>
|
||||
* @param value <09><>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL SetValue(LPCWSTR keyName, LPCWSTR valueName, DWORD value);
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
|
||||
* @param keyName Key <20≯<EFBFBD>
|
||||
* @param valueName Value <20≯<EFBFBD>
|
||||
* @param value <09><>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL SetValue(LPCWSTR keyName, LPCWSTR valueName, FLOAT value);
|
||||
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɴϴ<C9B4>.
|
||||
* @param keyName Key <20≯<EFBFBD>
|
||||
* @param valueName Value <20≯<EFBFBD>
|
||||
* @param value <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param bufferLength <09>۹<EFBFBD><DBB9><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL GetValue(LPCWSTR keyName, LPCWSTR valueName, LPWSTR value, DWORD bufferLength);
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɴϴ<C9B4>.
|
||||
* @param keyName Key <20≯<EFBFBD>
|
||||
* @param valueName Value <20≯<EFBFBD>
|
||||
* @param value <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL GetValue(LPCWSTR keyName, LPCWSTR valueName, LPDWORD value);
|
||||
/**
|
||||
* @brief INI<4E><49><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɴϴ<C9B4>.
|
||||
* @param keyName Key <20≯<EFBFBD>
|
||||
* @param valueName Value <20≯<EFBFBD>
|
||||
* @param value <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL GetValue(LPCWSTR keyName, LPCWSTR valueName, FLOAT *value);
|
||||
|
||||
private:
|
||||
/// INI <20><><EFBFBD>ϸ<EFBFBD>
|
||||
WCHAR m_szFileName[MAX_PATH];
|
||||
};
|
||||
|
||||
}
|
||||
128
CryptoSource/SQLExecute/Nave/NFSingleton.h
Normal file
128
CryptoSource/SQLExecute/Nave/NFSingleton.h
Normal file
@@ -0,0 +1,128 @@
|
||||
/**
|
||||
* @file NFSingleton.h
|
||||
* @brief <09>̱<EFBFBD><CCB1><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
* @remarks
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-04-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
||||
/*
|
||||
#include "NFSingleton.h"
|
||||
|
||||
class Test : public Nave::NFSingleton<Test>
|
||||
{
|
||||
public:
|
||||
Test()
|
||||
{
|
||||
printf("Test::Test()\n");
|
||||
}
|
||||
~Test()
|
||||
{
|
||||
printf("Test::~Test()\n");
|
||||
}
|
||||
|
||||
int GetType()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
INT _tmain(INT argc, WCHAR* argv[])
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20>̱<EFBFBD><CCB1><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
|
||||
// <20>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20>ѹ<EFBFBD> New<65><77> <20>ϰ<EFBFBD>
|
||||
Test* pTest = new Test;
|
||||
|
||||
|
||||
// <20>ٸ<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20>ٸ<EFBFBD><D9B8>Լ<EFBFBD>.
|
||||
Test::GetInstance().GetType(); <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ȴ<EFBFBD>.
|
||||
|
||||
|
||||
delete pTest;
|
||||
}
|
||||
*/
|
||||
|
||||
#pragma warning (disable : 4311)
|
||||
#pragma warning (disable : 4312)
|
||||
|
||||
namespace Nave {
|
||||
|
||||
/**
|
||||
* @class NFSingleton
|
||||
* @brief Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>̱<EFBFBD><CCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
* @remarks
|
||||
*
|
||||
* @warning <20>ش<EFBFBD> <20>̱<EFBFBD><CCB1><EFBFBD> <20><>ü<EFBFBD><C3BC> ó<><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> new<65><77> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ְ<EFBFBD> \r\n
|
||||
* delete<74><65> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD><EFBFBD> <20>̱<EFBFBD><CCB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD>\r\n
|
||||
* delete<74><65> <20><><EFBFBD>ָ<EFBFBD> <20>ȴ<EFBFBD>.
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-04-05
|
||||
*/
|
||||
template <typename T> class NFSingleton
|
||||
{
|
||||
|
||||
public:
|
||||
/// NFSingleton <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NFSingleton (void)
|
||||
{
|
||||
assert( !s_pSingleton && "NFSingleton : You can't create more"
|
||||
" object, because this object is SINGLETON.");
|
||||
|
||||
#if defined( _MSC_VER ) && _MSC_VER < 1200
|
||||
int iOffset = (int)(T*)1 - (int)(NFSingleton <T>*)(T*)1;
|
||||
s_pSingleton = (T*)((int) this + iOffset);
|
||||
#else
|
||||
s_pSingleton = static_cast< T* >( this );
|
||||
#endif
|
||||
}
|
||||
|
||||
/// NFSingleton <20>Ҹ<EFBFBD><D2B8><EFBFBD>
|
||||
~NFSingleton (void)
|
||||
{
|
||||
assert( s_pSingleton && "NFSingleton : This object may be "
|
||||
"destroyed by someone's memory control or other causes.");
|
||||
|
||||
s_pSingleton = 0;
|
||||
}
|
||||
|
||||
/// <20>ش<EFBFBD> <20>̱<EFBFBD><CCB1><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD> Ȯ<><C8AE><EFBFBD>Ѵ<EFBFBD>.
|
||||
static bool IsAlive()
|
||||
{
|
||||
return s_pSingleton ? true : false;
|
||||
}
|
||||
|
||||
/// <20>̱<EFBFBD><CCB1><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
|
||||
static T& GetInstance(void)
|
||||
{
|
||||
assert (s_pSingleton && "NFSingleton : Something is wrong."
|
||||
" This object destroyed by something bad method or"
|
||||
"you didn't create yet!");
|
||||
|
||||
return *s_pSingleton;
|
||||
}
|
||||
|
||||
/// <20>̱<EFBFBD><CCB1><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>
|
||||
static T* GetInstancePtr(void)
|
||||
{
|
||||
assert (s_pSingleton && "NFSingleton : Something is wrong."
|
||||
" This object destroyed by something bad method.");
|
||||
|
||||
return s_pSingleton;
|
||||
}
|
||||
|
||||
private:
|
||||
/// <20>̱<EFBFBD><CCB1><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static T* s_pSingleton;
|
||||
};
|
||||
|
||||
/// <20>̱<EFBFBD><CCB1><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>Ѵ<EFBFBD>.
|
||||
template<typename T> T* NFSingleton<T>::s_pSingleton = 0;
|
||||
|
||||
}
|
||||
322
CryptoSource/SQLExecute/Nave/NFTokenizer.cpp
Normal file
322
CryptoSource/SQLExecute/Nave/NFTokenizer.cpp
Normal file
@@ -0,0 +1,322 @@
|
||||
#include "Nave.h"
|
||||
#include "NFTokenizer.h"
|
||||
|
||||
namespace Nave {
|
||||
|
||||
NFTokenizerA::NFTokenizerA(const std::string& _str, const std::string& _delim)
|
||||
{
|
||||
|
||||
if ((_str.length() == 0) || (_delim.length() == 0)) return;
|
||||
|
||||
token_str = _str;
|
||||
delim = _delim;
|
||||
|
||||
/*
|
||||
Remove sequential delimiter
|
||||
*/
|
||||
unsigned int curr_pos = 0;
|
||||
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::string::npos)
|
||||
{
|
||||
curr_pos += delim.length();
|
||||
|
||||
while(token_str.find(delim,curr_pos) == curr_pos)
|
||||
{
|
||||
token_str.erase(curr_pos,delim.length());
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
Trim leading delimiter
|
||||
*/
|
||||
if (token_str.find(delim,0) == 0)
|
||||
{
|
||||
token_str.erase(0,delim.length());
|
||||
}
|
||||
|
||||
/*
|
||||
Trim ending delimiter
|
||||
*/
|
||||
curr_pos = 0;
|
||||
if ((curr_pos = token_str.rfind(delim)) != std::string::npos)
|
||||
{
|
||||
if (curr_pos != (token_str.length() - delim.length())) return;
|
||||
token_str.erase(token_str.length() - delim.length(),delim.length());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int NFTokenizerA::CountTokens()
|
||||
{
|
||||
|
||||
unsigned int prev_pos = 0;
|
||||
int num_tokens = 0;
|
||||
|
||||
if (token_str.length() > 0)
|
||||
{
|
||||
num_tokens = 0;
|
||||
|
||||
unsigned int curr_pos = 0;
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::string::npos)
|
||||
{
|
||||
num_tokens++;
|
||||
prev_pos = curr_pos;
|
||||
curr_pos += delim.length();
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
return ++num_tokens;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool NFTokenizerA::HasMoreTokens()
|
||||
{
|
||||
return (token_str.length() > 0);
|
||||
}
|
||||
|
||||
std::string NFTokenizerA::NextToken()
|
||||
{
|
||||
|
||||
if (token_str.length() == 0)
|
||||
return "";
|
||||
|
||||
std::string tmp_str = "";
|
||||
unsigned int pos = token_str.find(delim,0);
|
||||
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos+delim.length(),token_str.length()-pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = "";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
int NFTokenizerA::NextIntToken()
|
||||
{
|
||||
return atoi(NextToken().c_str());
|
||||
}
|
||||
|
||||
double NFTokenizerA::NextFloatToken()
|
||||
{
|
||||
return atof(NextToken().c_str());
|
||||
}
|
||||
|
||||
std::string NFTokenizerA::NextToken(const std::string& delimiter)
|
||||
{
|
||||
if (token_str.length() == 0)
|
||||
return "";
|
||||
|
||||
std::string tmp_str = "";
|
||||
unsigned int pos = token_str.find(delimiter,0);
|
||||
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos + delimiter.length(),token_str.length() - pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = "";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
std::string& NFTokenizerA::RemainingString()
|
||||
{
|
||||
return token_str;
|
||||
}
|
||||
|
||||
std::string NFTokenizerA::FilterNextToken(const std::string& filterStr)
|
||||
{
|
||||
std::string tmp_str = NextToken();
|
||||
unsigned int currentPos = 0;
|
||||
|
||||
while((currentPos = tmp_str.find(filterStr,currentPos)) != std::string::npos)
|
||||
{
|
||||
tmp_str.erase(currentPos,filterStr.length());
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
|
||||
// unicode type
|
||||
NFTokenizerW::NFTokenizerW(const std::wstring& _str, const std::wstring& _delim)
|
||||
{
|
||||
|
||||
if ((_str.length() == 0) || (_delim.length() == 0)) return;
|
||||
|
||||
token_str = _str;
|
||||
delim = _delim;
|
||||
|
||||
/*
|
||||
Remove sequential delimiter
|
||||
*/
|
||||
unsigned int curr_pos = 0;
|
||||
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::wstring::npos)
|
||||
{
|
||||
curr_pos += delim.length();
|
||||
|
||||
while(token_str.find(delim,curr_pos) == curr_pos)
|
||||
{
|
||||
token_str.erase(curr_pos,delim.length());
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
Trim leading delimiter
|
||||
*/
|
||||
if (token_str.find(delim,0) == 0)
|
||||
{
|
||||
token_str.erase(0,delim.length());
|
||||
}
|
||||
|
||||
/*
|
||||
Trim ending delimiter
|
||||
*/
|
||||
curr_pos = 0;
|
||||
if ((curr_pos = token_str.rfind(delim)) != std::wstring::npos)
|
||||
{
|
||||
if (curr_pos != (token_str.length() - delim.length())) return;
|
||||
token_str.erase(token_str.length() - delim.length(),delim.length());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int NFTokenizerW::CountTokens()
|
||||
{
|
||||
unsigned int prev_pos = 0;
|
||||
int num_tokens = 0;
|
||||
|
||||
if (token_str.length() > 0)
|
||||
{
|
||||
num_tokens = 0;
|
||||
|
||||
unsigned int curr_pos = 0;
|
||||
while(true)
|
||||
{
|
||||
if ((curr_pos = token_str.find(delim,curr_pos)) != std::wstring::npos)
|
||||
{
|
||||
num_tokens++;
|
||||
prev_pos = curr_pos;
|
||||
curr_pos += delim.length();
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
return ++num_tokens;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool NFTokenizerW::HasMoreTokens()
|
||||
{
|
||||
return (token_str.length() > 0);
|
||||
}
|
||||
|
||||
std::wstring NFTokenizerW::NextToken()
|
||||
{
|
||||
|
||||
if (token_str.length() == 0)
|
||||
return L"";
|
||||
|
||||
std::wstring tmp_str = L"";
|
||||
unsigned int pos = token_str.find(delim,0);
|
||||
|
||||
if (pos != std::wstring::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos+delim.length(),token_str.length()-pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = L"";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
int NFTokenizerW::NextIntToken()
|
||||
{
|
||||
return _wtoi(NextToken().c_str());
|
||||
}
|
||||
|
||||
double NFTokenizerW::NextFloatToken()
|
||||
{
|
||||
return _wtof(NextToken().c_str());
|
||||
}
|
||||
|
||||
std::wstring NFTokenizerW::NextToken(const std::wstring& delimiter)
|
||||
{
|
||||
if (token_str.length() == 0)
|
||||
return L"";
|
||||
|
||||
std::wstring tmp_str = L"";
|
||||
unsigned int pos = token_str.find(delimiter,0);
|
||||
|
||||
if (pos != std::wstring::npos)
|
||||
{
|
||||
tmp_str = token_str.substr(0,pos);
|
||||
token_str = token_str.substr(pos + delimiter.length(),token_str.length() - pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_str = token_str.substr(0,token_str.length());
|
||||
token_str = L"";
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
std::wstring& NFTokenizerW::RemainingString()
|
||||
{
|
||||
return token_str;
|
||||
}
|
||||
|
||||
std::wstring NFTokenizerW::FilterNextToken(const std::wstring& filterStr)
|
||||
{
|
||||
std::wstring tmp_str = NextToken();
|
||||
unsigned int currentPos = 0;
|
||||
|
||||
while((currentPos = tmp_str.find(filterStr,currentPos)) != std::wstring::npos)
|
||||
{
|
||||
tmp_str.erase(currentPos,filterStr.length());
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
||||
|
||||
}
|
||||
120
CryptoSource/SQLExecute/Nave/NFTokenizer.h
Normal file
120
CryptoSource/SQLExecute/Nave/NFTokenizer.h
Normal file
@@ -0,0 +1,120 @@
|
||||
/**
|
||||
* @file NFTokenizer.h
|
||||
* @brief Tokenizer Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
* @remarks
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-04-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
namespace Nave {
|
||||
|
||||
/**
|
||||
* @class NFTokenizerA
|
||||
* @brief <09><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Tokenizer
|
||||
* @remarks
|
||||
* Nave::String tempStr = L"01|02|03|04|05|06|07|08|09|10|11|12"; \r\n
|
||||
* \r\n
|
||||
* Nave::NFTokenizer strtok = Nave::NFTokenizer(tempStr, L"|"); \r\n
|
||||
* \r\n
|
||||
* LOG_IMPORTANT((L"Number Of Tokens: %d"), strtok.CountTokens()); \r\n
|
||||
* LOG_IMPORTANT((L"String: %s"), strtok.RemainingString().c_str()); \r\n
|
||||
* \r\n
|
||||
* int cnt = strtok.CountTokens(); \r\n
|
||||
* Nave::String finalString = L""; \r\n
|
||||
* \r\n
|
||||
* for(int i = 0; i < cnt; i++) \r\n
|
||||
* { \r\n
|
||||
* Nave::String tempStr = L""; \r\n
|
||||
* \r\n
|
||||
* LOG_IMPORTANT((L"Token[%d] ----> [%s]"), i, strtok.NextToken().c_str());\r\n
|
||||
* LOG_IMPORTANT((L"Token Count : %d"), strtok.CountTokens()); \r\n
|
||||
* \r\n
|
||||
* finalString += tempStr; \r\n
|
||||
* } \r\n
|
||||
* \r\n
|
||||
* LOG_IMPORTANT((L"Final String : %s"), finalString.c_str());
|
||||
*
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-04-05
|
||||
*/
|
||||
class NFTokenizerA
|
||||
{
|
||||
public:
|
||||
NFTokenizerA(const std::string& _str, const std::string& _delim);
|
||||
~NFTokenizerA(){};
|
||||
|
||||
int CountTokens();
|
||||
bool HasMoreTokens();
|
||||
std::string NextToken();
|
||||
int NextIntToken();
|
||||
double NextFloatToken();
|
||||
std::string NextToken(const std::string& delim);
|
||||
std::string& RemainingString();
|
||||
std::string FilterNextToken(const std::string& filterStr);
|
||||
|
||||
private:
|
||||
std::string token_str;
|
||||
std::string delim;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @class NFTokenizerW
|
||||
* @brief <09><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> Tokenizer
|
||||
* @remarks
|
||||
* Nave::String tempStr = L"01|02|03|04|05|06|07|08|09|10|11|12"; \r\n
|
||||
* \r\n
|
||||
* Nave::NFTokenizer strtok = Nave::NFTokenizer(tempStr, L"|"); \r\n
|
||||
* \r\n
|
||||
* LOG_IMPORTANT((L"Number Of Tokens: %d"), strtok.CountTokens()); \r\n
|
||||
* LOG_IMPORTANT((L"String: %s"), strtok.RemainingString().c_str()); \r\n
|
||||
* \r\n
|
||||
* int cnt = strtok.CountTokens(); \r\n
|
||||
* Nave::String finalString = L""; \r\n
|
||||
* \r\n
|
||||
* for(int i = 0; i < cnt; i++) \r\n
|
||||
* { \r\n
|
||||
* Nave::String tempStr = L""; \r\n
|
||||
* \r\n
|
||||
* LOG_IMPORTANT((L"Token[%d] ----> [%s]"), i, strtok.NextToken().c_str());\r\n
|
||||
* LOG_IMPORTANT((L"Token Count : %d"), strtok.CountTokens()); \r\n
|
||||
* \r\n
|
||||
* finalString += tempStr; \r\n
|
||||
* } \r\n
|
||||
* \r\n
|
||||
* LOG_IMPORTANT((L"Final String : %s"), finalString.c_str());
|
||||
* @par
|
||||
* @author Edith
|
||||
* @date 2009-04-05
|
||||
*/
|
||||
class NFTokenizerW
|
||||
{
|
||||
public:
|
||||
NFTokenizerW(const std::wstring& _str, const std::wstring& _delim);
|
||||
~NFTokenizerW(){};
|
||||
|
||||
int CountTokens();
|
||||
bool HasMoreTokens();
|
||||
std::wstring NextToken();
|
||||
int NextIntToken();
|
||||
double NextFloatToken();
|
||||
std::wstring NextToken(const std::wstring& delim);
|
||||
std::wstring& RemainingString();
|
||||
std::wstring FilterNextToken(const std::wstring& filterStr);
|
||||
|
||||
private:
|
||||
std::wstring token_str;
|
||||
std::wstring delim;
|
||||
};
|
||||
|
||||
typedef NFTokenizerW NFTokenizer;
|
||||
|
||||
}
|
||||
93
CryptoSource/SQLExecute/Nave/NFTypes.h
Normal file
93
CryptoSource/SQLExecute/Nave/NFTypes.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* @file NFTypes.h
|
||||
* @brief Nave Basic Type <20><><EFBFBD><EFBFBD>
|
||||
* @remarks
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-04-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <d3dx9math.h>
|
||||
#include <atltypes.h>
|
||||
|
||||
#pragma warning (disable : 4996)
|
||||
|
||||
namespace Nave {
|
||||
|
||||
/*
|
||||
int * signed, signed int System dependent
|
||||
unsigned int * unsigned System dependent
|
||||
__int8 1 char, signed char -128 to 127
|
||||
__int16 2 short, short int, signed short int -32,768 to 32,767
|
||||
__int32 4 signed, signed int -2,147,483,648 to 2,147,483,647
|
||||
__int64 8 none -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
|
||||
bool 1 none false or true
|
||||
char 1 signed char -128 to 127
|
||||
unsigned char 1 none 0 to 255
|
||||
short 2 short int, signed short int -32,768 to 32,767
|
||||
unsigned short 2 unsigned short int 0 to 65,535
|
||||
long 4 long int, signed long int -2,147,483,648 to 2,147,483,647
|
||||
long long 8 none (but equivalent to __int64) -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
|
||||
unsigned long 4 unsigned long int 0 to 4,294,967,295
|
||||
enum * none Same as int
|
||||
float 4 none 3.4E +/- 38 (7 digits)
|
||||
double 8 none 1.7E +/- 308 (15 digits)
|
||||
long double same as double none same as double
|
||||
wchar_t 2 __wchar_t 0 to 65,535
|
||||
|
||||
|
||||
strlen _tcslen
|
||||
strcpy _tcscpy
|
||||
strncpy _tcsncpy
|
||||
strcat _tcscat
|
||||
strcmp _tcscmp
|
||||
strncmp _tcsncmp
|
||||
stricmp _tcsicmp
|
||||
strnicmp _tcsnicmp
|
||||
sscanf _stscanf
|
||||
|
||||
strtok _tcstok
|
||||
|
||||
_strdate _tstrdate
|
||||
_strtime _tstrtime
|
||||
|
||||
sprintf _stprintf
|
||||
printf _tprintf
|
||||
|
||||
atoi _tstoi
|
||||
atof _tstof
|
||||
|
||||
fopen _tfopen
|
||||
fprintf _ftprintf
|
||||
fgets _fgetts
|
||||
*/
|
||||
|
||||
|
||||
// AddFontResource : Ư<><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ttf<74><66>Ʈ<EFBFBD><C6AE> <20>ε<EFBFBD><CEB5>Ѵ<EFBFBD>, <20><><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD> ReleaseAddFone <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
// res = AddFontResource("C:\Fonts\Nordic__.ttf")
|
||||
// <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>Ʈ EnumFontFamilies
|
||||
// gdi+<2B><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> PrivateFontCollection::AddFontFile(...)
|
||||
|
||||
// basic value types
|
||||
typedef std::wstring StringW; /// std::wstring
|
||||
typedef std::string StringA; /// std::string
|
||||
|
||||
typedef StringW String; /// default string
|
||||
|
||||
typedef char int8; /// -128 to 127
|
||||
typedef short int16; /// -32,768 to 32,767
|
||||
typedef long int32; /// -2,147,483,648 to 2,147,483,647
|
||||
typedef __int64 int64; /// -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
|
||||
|
||||
typedef unsigned char uint8; /// 0 to 255
|
||||
typedef unsigned short int uint16; /// 0 to 65535
|
||||
typedef unsigned long uint32; /// 0 to 4,294,967,295
|
||||
typedef unsigned __int64 uint64; /// 0 to 18,446,744,073,709,551,615
|
||||
|
||||
typedef D3DXVECTOR2 float2; /// 2vector float
|
||||
typedef D3DXVECTOR3 float3; /// 3vector float
|
||||
typedef D3DXVECTOR4 float4; /// 4vector float
|
||||
}
|
||||
|
||||
396
CryptoSource/SQLExecute/Nave/Nave.cpp
Normal file
396
CryptoSource/SQLExecute/Nave/Nave.cpp
Normal file
@@ -0,0 +1,396 @@
|
||||
#include "Nave.h"
|
||||
|
||||
namespace Nave {
|
||||
|
||||
HWND hMainWnd = NULL;
|
||||
HINSTANCE hInstance = NULL;
|
||||
|
||||
void EnableLFH()
|
||||
{
|
||||
HANDLE hHeap[1025];
|
||||
UINT uEA = GetProcessHeaps(1024, hHeap);
|
||||
|
||||
for (UINT i=0; i<uEA; ++i)
|
||||
{
|
||||
ULONG HeapFragValue = 2;
|
||||
|
||||
HeapSetInformation(hHeap[i],
|
||||
HeapCompatibilityInformation,
|
||||
&HeapFragValue,
|
||||
sizeof(HeapFragValue) );
|
||||
}
|
||||
}
|
||||
|
||||
void SetLocale(CHAR* pLocale)
|
||||
{
|
||||
::setlocale(LC_ALL, pLocale);
|
||||
}
|
||||
|
||||
DWORD GetGUID()
|
||||
{
|
||||
static DWORD s_dwPerGUID = 0;
|
||||
|
||||
return ++s_dwPerGUID;
|
||||
}
|
||||
|
||||
SIZE GetStringSize( const WCHAR* string, HFONT font )
|
||||
{
|
||||
HWND hWnd = Nave::hMainWnd;
|
||||
HDC hDC = ::GetDC(hWnd);
|
||||
|
||||
SIZE size;
|
||||
HFONT hOldFont = (HFONT)SelectObject(hDC, font);
|
||||
|
||||
GetTextExtentPoint32W(hDC, string, (INT)wcslen(string), &size);
|
||||
|
||||
TEXTMETRICW tm;
|
||||
GetTextMetricsW(hDC, &tm);
|
||||
size.cx -= tm.tmOverhang;
|
||||
|
||||
SelectObject(hDC, hOldFont);
|
||||
::ReleaseDC(hWnd, hDC);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
POINT GetMousePos()
|
||||
{
|
||||
POINT Point;
|
||||
GetCursorPos(&Point);
|
||||
ScreenToClient(hMainWnd, &Point);
|
||||
return Point;
|
||||
}
|
||||
|
||||
POINT GetMousePos( HWND wnd )
|
||||
{
|
||||
POINT Point;
|
||||
GetCursorPos(&Point);
|
||||
ScreenToClient(wnd, &Point);
|
||||
return Point;
|
||||
}
|
||||
|
||||
HWND IsWindowFromPoint()
|
||||
{
|
||||
POINT Point;
|
||||
GetCursorPos(&Point);
|
||||
return WindowFromPoint(Point);
|
||||
}
|
||||
|
||||
INT GetProgramName( LPWSTR buf, INT len )
|
||||
{
|
||||
WCHAR szDrive[MAX_PATH], szDir[MAX_PATH], szFilename[MAX_PATH], szExt[MAX_PATH];
|
||||
|
||||
// Figure out what the report file will be named, and store it away
|
||||
GetModuleFileNameW(0, buf, len);
|
||||
|
||||
LPWSTR pszDot = buf;
|
||||
|
||||
// Look for the '.' before the "EXE" extension. Replace '.' to '\0'
|
||||
if((pszDot = wcsrchr( pszDot, L'.')))
|
||||
{
|
||||
*pszDot = 0;
|
||||
}
|
||||
|
||||
_wsplitpath(buf, szDrive, szDir, szFilename, szExt);
|
||||
wcsncpy(buf, szFilename, len);
|
||||
|
||||
return (INT)wcslen( buf );
|
||||
}
|
||||
|
||||
INT GetProgramDir( LPWSTR buf, INT len )
|
||||
{
|
||||
WCHAR* ProgDir;
|
||||
INT result;
|
||||
|
||||
result = GetModuleFileNameW( hInstance, buf, len - 1 );
|
||||
if( result == 0 )
|
||||
return 0;
|
||||
|
||||
WCHAR pgmPtr[1024];
|
||||
wcscpy( pgmPtr, buf );
|
||||
|
||||
ProgDir = buf;
|
||||
ProgDir += wcslen( pgmPtr ) - 1;
|
||||
while( *ProgDir != L'\\' && ProgDir != pgmPtr )
|
||||
ProgDir--;
|
||||
|
||||
*ProgDir = 0;
|
||||
return (INT)wcslen( buf );
|
||||
}
|
||||
|
||||
INT GetDir( LPCWSTR path, LPWSTR buf )
|
||||
{
|
||||
wcscpy(buf, path);
|
||||
|
||||
WCHAR* ProgDir;
|
||||
ProgDir = buf;
|
||||
ProgDir += wcslen(buf);
|
||||
while( *ProgDir != L'\\')
|
||||
{
|
||||
ProgDir[0] = 0;
|
||||
ProgDir--;
|
||||
}
|
||||
|
||||
ProgDir[0] = 0;
|
||||
return (INT)wcslen( buf );
|
||||
}
|
||||
|
||||
BOOL GetLine( const CHAR* sBuf, INT maxsBuf, CHAR* tBuf, INT maxtBuf, LONG& index )
|
||||
{
|
||||
ZeroMemory(tBuf, sizeof(tBuf));
|
||||
INT DestIndex = index;
|
||||
|
||||
CHAR* pLine = "\n";
|
||||
INT pLen = strlen(pLine);
|
||||
|
||||
for(INT i = 0; i < maxsBuf; i++)
|
||||
{
|
||||
if(index+i >= maxtBuf)
|
||||
break;
|
||||
|
||||
if(strncmp(&sBuf[index+i], pLine, pLen) == 0)
|
||||
{
|
||||
CopyMemory(tBuf, sBuf+index, i);
|
||||
index += (i+pLen);
|
||||
tBuf[i] = 0;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
INT len = maxsBuf-index;
|
||||
if(maxtBuf <= len)
|
||||
len = maxtBuf-index;
|
||||
|
||||
CopyMemory(tBuf, sBuf+index, len);
|
||||
tBuf[len] = 0;
|
||||
index += len;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
VOID GetString( const CHAR* sBuf, CHAR* tBuf, INT len, LONG& index )
|
||||
{
|
||||
CopyMemory(tBuf, sBuf+index, len);
|
||||
tBuf[len] = 0;
|
||||
index += len;
|
||||
}
|
||||
|
||||
BYTE GetByte( const CHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(BYTE);
|
||||
return *(BYTE*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
SHORT GetShort( const CHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(SHORT);
|
||||
return *(SHORT*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
INT GetInt( const CHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(INT);
|
||||
return *(INT*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
DWORD GetDWORD( const CHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(DWORD);
|
||||
return *(DWORD*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
FLOAT GetFloat( const CHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(FLOAT);
|
||||
return *(FLOAT*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
DOUBLE GetDouble( const CHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(DOUBLE);
|
||||
return *(DOUBLE*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
VOID SetString( CHAR* tBuf, const CHAR* sBuf, INT len, LONG& index )
|
||||
{
|
||||
CopyMemory(tBuf+index, sBuf, len);
|
||||
index += len;
|
||||
}
|
||||
|
||||
VOID SetByte( CHAR* tBuf, BYTE sByte, LONG& index )
|
||||
{
|
||||
*(tBuf+index) = (BYTE)sByte;
|
||||
index++;
|
||||
}
|
||||
|
||||
VOID SetShort( CHAR* tBuf, SHORT sShort, LONG& index )
|
||||
{
|
||||
SHORT temp = (SHORT)sShort;
|
||||
|
||||
CopyMemory( tBuf+index, &temp, sizeof(SHORT));
|
||||
index += sizeof(SHORT);
|
||||
}
|
||||
|
||||
VOID SetInt( CHAR* tBuf, INT sInt, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sInt, sizeof(INT));
|
||||
index += sizeof(INT);
|
||||
}
|
||||
|
||||
VOID SetDWORD( CHAR* tBuf, DWORD sDword, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sDword, sizeof(DWORD));
|
||||
index += sizeof(DWORD);
|
||||
}
|
||||
|
||||
VOID SetFloat( CHAR* tBuf, FLOAT sFloat, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sFloat, sizeof(FLOAT));
|
||||
index += sizeof(FLOAT);
|
||||
}
|
||||
|
||||
VOID SetDouble( CHAR* tBuf, DOUBLE sDouble, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sDouble, sizeof(DOUBLE));
|
||||
index += sizeof(DOUBLE);
|
||||
}
|
||||
|
||||
BOOL GetLine( const WCHAR* sBuf, INT maxsBuf, WCHAR* tBuf, INT maxtBuf, LONG& index )
|
||||
{
|
||||
ZeroMemory(tBuf, sizeof(tBuf));
|
||||
INT DestIndex = index;
|
||||
|
||||
WCHAR* pLine = L"\n";
|
||||
INT pLen = wcslen(pLine);
|
||||
|
||||
for(INT i = 0; i < maxsBuf; i++)
|
||||
{
|
||||
if(index+i >= maxtBuf)
|
||||
break;
|
||||
|
||||
if(wcsncmp(&sBuf[index+i], pLine, pLen) == 0)
|
||||
{
|
||||
CopyMemory(tBuf, sBuf+index, sizeof(WCHAR)*i);
|
||||
index += (i+pLen);
|
||||
tBuf[index-1] = 0;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
INT len = maxsBuf-index;
|
||||
CopyMemory(tBuf, sBuf+index, sizeof(WCHAR)*len);
|
||||
tBuf[len] = 0;
|
||||
index += len;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
VOID GetString( const WCHAR* sBuf, WCHAR* tBuf, INT len, LONG& index )
|
||||
{
|
||||
CopyMemory(tBuf, sBuf+index, sizeof(WCHAR)*len);
|
||||
tBuf[len] = 0;
|
||||
index += len;
|
||||
}
|
||||
|
||||
BYTE GetByte( const WCHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(BYTE);
|
||||
return *(BYTE*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
SHORT GetShort( const WCHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(SHORT);
|
||||
return *(SHORT*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
INT GetInt( const WCHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(INT);
|
||||
return *(INT*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
DWORD GetDWORD( const WCHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(DWORD);
|
||||
return *(DWORD*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
FLOAT GetFloat( const WCHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(FLOAT);
|
||||
return *(FLOAT*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
DOUBLE GetDouble( const WCHAR* sBuf, LONG& index )
|
||||
{
|
||||
INT t_index = index;
|
||||
index += sizeof(DOUBLE);
|
||||
return *(DOUBLE*)(sBuf+t_index);
|
||||
}
|
||||
|
||||
VOID SetString( WCHAR* tBuf, const WCHAR* sBuf, INT len, LONG& index )
|
||||
{
|
||||
CopyMemory(tBuf+index, sBuf, sizeof(WCHAR)*len);
|
||||
index += len;
|
||||
}
|
||||
|
||||
VOID SetByte( WCHAR* tBuf, BYTE sByte, LONG& index )
|
||||
{
|
||||
*(tBuf+index) = (BYTE)sByte;
|
||||
index++;
|
||||
}
|
||||
|
||||
VOID SetShort( WCHAR* tBuf, SHORT sShort, LONG& index )
|
||||
{
|
||||
SHORT temp = (SHORT)sShort;
|
||||
|
||||
CopyMemory( tBuf+index, &temp, sizeof(SHORT));
|
||||
index += sizeof(SHORT);
|
||||
}
|
||||
|
||||
VOID SetInt( WCHAR* tBuf, INT sInt, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sInt, sizeof(INT));
|
||||
index += sizeof(INT);
|
||||
}
|
||||
|
||||
VOID SetDWORD( WCHAR* tBuf, DWORD sDword, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sDword, sizeof(DWORD));
|
||||
index += sizeof(DWORD);
|
||||
}
|
||||
|
||||
VOID SetFloat( WCHAR* tBuf, FLOAT sFloat, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sFloat, sizeof(FLOAT));
|
||||
index += sizeof(FLOAT);
|
||||
}
|
||||
|
||||
VOID SetDouble( WCHAR* tBuf, DOUBLE sDouble, LONG& index )
|
||||
{
|
||||
CopyMemory( tBuf+index, &sDouble, sizeof(DOUBLE));
|
||||
index += sizeof(DOUBLE);
|
||||
}
|
||||
|
||||
VOID Read( const char* sBuf, void* tBuf, INT len, LONG& seek )
|
||||
{
|
||||
CopyMemory(tBuf, &sBuf[seek], len);
|
||||
seek += len;
|
||||
}
|
||||
|
||||
VOID Write( const void* sBuf, char* tBuf, INT len, LONG& seek )
|
||||
{
|
||||
CopyMemory(&tBuf[seek], sBuf, len);
|
||||
seek += len;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
436
CryptoSource/SQLExecute/Nave/Nave.h
Normal file
436
CryptoSource/SQLExecute/Nave/Nave.h
Normal file
@@ -0,0 +1,436 @@
|
||||
/**
|
||||
* @file Nave.h
|
||||
* @brief Nave Library Core Header
|
||||
* @remarks NaveGDK <20><><EFBFBD>̺귯<CCBA><EAB7AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Header
|
||||
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
|
||||
* @date 2009-04-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
|
||||
#pragma comment(lib,"winmm.lib")
|
||||
#pragma comment(lib,"imm32.lib")
|
||||
|
||||
#include <windows.h>
|
||||
#include <mmsystem.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <memory.h>
|
||||
#include <WCHAR.h>
|
||||
#include <stddef.h>
|
||||
#include <conio.h>
|
||||
|
||||
#include "NFTypes.h"
|
||||
#include "NFSingleton.h"
|
||||
|
||||
/// <20><><EFBFBD>ڿ<EFBFBD> <20>տ<EFBFBD> L<><4C> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> WCHAR Ÿ<><C5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF>
|
||||
#define WIDEN2(x) L ## x
|
||||
/// CHAR<41><52> <20><><EFBFBD><EFBFBD> WCHAR<41><52> <20><>ȯ<EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
#define WIDEN(x) WIDEN2(x)
|
||||
/// __FILE__ <20><> WCHAR<41><52> <20><><EFBFBD><EFBFBD>
|
||||
#define __WFILE__ WIDEN(__FILE__)
|
||||
/// __FUNCSIG__ <20><> WCHAR<41><52> <20><><EFBFBD><EFBFBD>
|
||||
#define __WFUNCSIG__ WIDEN(__FUNCSIG__)
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD> <20><>ü DELETE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#ifndef _DELETE
|
||||
#define _DELETE(p) { if(p) { delete (p); (p)=NULL; } }
|
||||
#endif
|
||||
/// <20>迭<EFBFBD><E8BFAD> <20><>ü DELETE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#ifndef _DELETE_ARRAY
|
||||
#define _DELETE_ARRAY(p) { if(p) { delete[] (p); (p)=NULL; } }
|
||||
#endif
|
||||
/// RELEASE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#ifndef _RELEASE
|
||||
#define _RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
|
||||
#endif
|
||||
|
||||
/// MAKEINTRESOURCE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MIS(a) MAKEINTRESOURCEW(a)
|
||||
/// InvalidateRect <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define Redraw(hWnd, bErase) InvalidateRect(hWnd, NULL, bErase)
|
||||
|
||||
/// DWORD <20><><EFBFBD><EFBFBD> Alpha <20><><EFBFBD>ϱ<EFBFBD>
|
||||
#define GetAColor(Color) ((BYTE)((Color)>>24)&0xff)
|
||||
/// DWORD <20><><EFBFBD><EFBFBD> Red <20><><EFBFBD>ϱ<EFBFBD>
|
||||
#define GetRColor(Color) ((BYTE)((Color)>>16)&0xff)
|
||||
/// DWORD <20><><EFBFBD><EFBFBD> Green <20><><EFBFBD>ϱ<EFBFBD>
|
||||
#define GetGColor(Color) ((BYTE)(((WORD)(Color)) >> 8)&0xff)
|
||||
/// DWORD <20><><EFBFBD><EFBFBD> Blue <20><><EFBFBD>ϱ<EFBFBD>
|
||||
#define GetBColor(Color) ((BYTE)(Color)&0xff)
|
||||
|
||||
namespace Nave {
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
extern HWND hMainWnd;
|
||||
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD>
|
||||
extern HINSTANCE hInstance;
|
||||
|
||||
/**
|
||||
* @brief LFH <20><EFBFBD><DEB8><EFBFBD>Ǯ<EFBFBD><C7AE> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>
|
||||
* @remarks
|
||||
* Low-Fragmentation Heap<61><70> <20><><EFBFBD><EFBFBD> \r\n
|
||||
* <09><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD> <20>ѹ<EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>. \r\n
|
||||
* <09><><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>(F5) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϹǷ<CFB9> CTRL+F5<46><35> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \r\n
|
||||
* Low-Fragmentation Heap<61><70> <20><><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>, TRUE<55><45> <20><><EFBFBD>ϵǴ°<C7B4><C2B0><EFBFBD> <20>˼<EFBFBD><CBBC>ִ<EFBFBD>. \r\n
|
||||
* \r\n
|
||||
* Low-Fragmentation Heap<61><70> <20><><EFBFBD><EFBFBD> \r\n
|
||||
* Ư<><C6AF><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1><D7B7>Ӵ<EFBFBD> <20>Ű澲<C5B0><E6BEB2> <20>ʾƵ<CABE>, <20><EFBFBD><DEB8><EFBFBD>Ǯ<EFBFBD><C7AE> <20><><EFBFBD><EFBFBD>, \r\n
|
||||
* <09><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϼ<EFBFBD><CFBC>ִ<EFBFBD>. \r\n
|
||||
* <09><EFBFBD><DEB8><EFBFBD> <20><><EFBFBD><EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC>ְ<EFBFBD>, <20><><EFBFBD><DEB8><F0B8AEBB><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȿ<><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. \r\n
|
||||
* Ư<><C6AF>, <20><>Ƽ<EFBFBD>ھ<EFBFBD> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD>. \r\n
|
||||
* \r\n
|
||||
* Low-Fragmentation Heap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> \r\n
|
||||
* <09><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾƵ<CABE>, <20><><EFBFBD>ڵ尡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Win2000Pro Sp4<70>̻<EFBFBD><CCBB><EFBFBD> \r\n
|
||||
* OS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϹǷ<CFB9>, Win98<39><38> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> <20>Ѵٸ<D1B4>, <20>ּ<EFBFBD>ȭ<EFBFBD><C8AD><EFBFBD>Ѿ<EFBFBD> <20>Ѵ<EFBFBD>. \r\n
|
||||
* \r\n
|
||||
* <09><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾƵ<CABE> <20>⺻<EFBFBD><E2BABB><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. \r\n
|
||||
* 16K<36><4B><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><DEB8> <20>Ҵ<EFBFBD><D2B4>ϸ<EFBFBD>, LFH<46><48> <20><DEB8> <20>Ҵ<EFBFBD>, \r\n
|
||||
* <09><><EFBFBD>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD><D2B4>ȴ<EFBFBD>. \r\n
|
||||
*/
|
||||
void EnableLFH();
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
* @param pLocale <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @remarks wprintf <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20>ֿܼ<DCBC> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE><EFBFBD>. \r\n
|
||||
* <09>ѱ<EFBFBD><D1B1><EFBFBD> : Korean \r\n
|
||||
* <09><><EFBFBD><EFBFBD> : English \r\n
|
||||
*/
|
||||
void SetLocale(CHAR* pLocale);
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Object<63><74> GUID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GUID<49><44> 0x00000001 ~ 0xFFFFFFFF <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
DWORD GetGUID();
|
||||
|
||||
/**
|
||||
* @brief String<6E><67> ũ<><C5A9>Pixel<65><6C> <20><><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param string <09><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE>
|
||||
* @param font <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> String<6E><67> ũ<><C5A9>
|
||||
*/
|
||||
SIZE GetStringSize( const WCHAR* string, HFONT font );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
* @return Main<69><6E><EFBFBD><EFBFBD><EFBFBD>쿡<EFBFBD><ECBFA1><EFBFBD><EFBFBD> <20><><EFBFBD>콺 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @warning Nave::hMainWnd <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE>־<EFBFBD><D6BE><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
*/
|
||||
POINT GetMousePos();
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŀ<><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
* @param wnd <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD>쿡<EFBFBD><ECBFA1><EFBFBD><EFBFBD> <20><><EFBFBD>콺 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
POINT GetMousePos( HWND wnd );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD><EFBFBD> <20><><EFBFBD>콺<EFBFBD><ECBDBA> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>쿡 <20>ö<EFBFBD><C3B6><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD>
|
||||
* @return <09><><EFBFBD>콺<EFBFBD><ECBDBA> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
*/
|
||||
HWND IsWindowFromPoint();
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD>Ѵ<EFBFBD>
|
||||
* @param buf <09><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param len <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @return <09><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>̼<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
INT GetProgramName( LPWSTR buf, INT len );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD><EFBFBD> <20><><EFBFBD>α<CEB1><D7B7><EFBFBD> <20><><EFBFBD>θ<EFBFBD> <20><><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param buf <09><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>丮<EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param len <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @return <09><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>̼<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>丮<EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
INT GetProgramDir( LPWSTR buf, INT len );
|
||||
|
||||
/**
|
||||
* @brief Path<74><68><EFBFBD><EFBFBD> <20><><EFBFBD>θ<EFBFBD> <20><><EFBFBD>Ѵ<EFBFBD>
|
||||
* @param path <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param buf <09><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>丮
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD>丮<EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
INT GetDir( LPCWSTR path, LPWSTR buf );
|
||||
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD> 1Line<6E><65> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD> <20>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD> \n<><6E><EFBFBD><EFBFBD> <20><><EFBFBD>еȴ<D0B5>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param maxsBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param maxtBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @param index <09>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL GetLine( const CHAR* sBuf, INT maxsBuf, CHAR* tBuf, INT maxtBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param len <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID GetString( const CHAR* sBuf, CHAR* tBuf, INT len, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 1<><31><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return BYTE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BYTE GetByte( const CHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 2<><32><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return SHORT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
SHORT GetShort( const CHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return INT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
INT GetInt( const CHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return DWORD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
DWORD GetDWORD( const CHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return FLOAT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
FLOAT GetFloat( const CHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 8<><38><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return DOUBLE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
DOUBLE GetDouble( const CHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sBuf <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param len <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetString( CHAR* tBuf, const CHAR* sBuf, INT len, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 1<><31><EFBFBD><EFBFBD>Ʈ BYTE<54><45> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sByte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetByte( CHAR* tBuf, BYTE sByte, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 2<><32><EFBFBD><EFBFBD>Ʈ SHORT<52><54> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sShort <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetShort( CHAR* tBuf, SHORT sShort, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ INT<4E><54> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sInt <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetInt( CHAR* tBuf, INT sInt, LONG& index);
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ DWORD<52><44> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sDword <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetDWORD( CHAR* tBuf, DWORD sDword, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ FLOAT<41><54> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sFloat <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetFloat( CHAR* tBuf, FLOAT sFloat, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 8<><38><EFBFBD><EFBFBD>Ʈ double<6C><65> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sDouble <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetDouble( CHAR* tBuf, DOUBLE sDouble, LONG& index );
|
||||
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD> 1Line<6E><65> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD> <20>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD> \n<><6E><EFBFBD><EFBFBD> <20><><EFBFBD>еȴ<D0B5>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param maxsBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param maxtBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @param index <09>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BOOL GetLine( const WCHAR* sBuf, INT maxsBuf, WCHAR* tBuf, INT maxtBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param len <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID GetString( const WCHAR* sBuf, WCHAR* tBuf, INT len, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 1<><31><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return BYTE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
BYTE GetByte( const WCHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 2<><32><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return SHORT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
SHORT GetShort( const WCHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return INT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
INT GetInt( const WCHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return DWORD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
DWORD GetDWORD( const WCHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return FLOAT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
FLOAT GetFloat( const WCHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 8<><38><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD>δ<EFBFBD>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
* @return DOUBLE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
DOUBLE GetDouble( const WCHAR* sBuf, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sBuf <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param len <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param index <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetString( WCHAR* tBuf, const WCHAR* sBuf, INT len, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 1<><31><EFBFBD><EFBFBD>Ʈ BYTE<54><45> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sByte <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetByte( WCHAR* tBuf, BYTE sByte, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 2<><32><EFBFBD><EFBFBD>Ʈ SHORT<52><54> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sShort <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetShort( WCHAR* tBuf, SHORT sShort, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ INT<4E><54> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sInt <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetInt( WCHAR* tBuf, INT sInt, LONG& index);
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ DWORD<52><44> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sDword <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetDWORD( WCHAR* tBuf, DWORD sDword, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 4<><34><EFBFBD><EFBFBD>Ʈ FLOAT<41><54> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sFloat <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetFloat( WCHAR* tBuf, FLOAT sFloat, LONG& index );
|
||||
|
||||
/**
|
||||
* @brief 8<><38><EFBFBD><EFBFBD>Ʈ double<6C><65> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param sDouble <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param index <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID SetDouble( WCHAR* tBuf, DOUBLE sDouble, LONG& index );
|
||||
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>̳ʸ<CCB3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Read <20><><EFBFBD>Դϴ<D4B4>.
|
||||
* @param sBuf <09>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param len <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param seek <09>ҽ<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID Read( const char* sBuf, void* tBuf, INT len, LONG& seek );
|
||||
|
||||
/**
|
||||
* @brief <09><><EFBFBD>̳ʸ<CCB3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Write <20>մϴ<D5B4>.
|
||||
* @param sBuf <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param tBuf <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
* @param len <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* @param seek <09><><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
||||
*/
|
||||
VOID Write( const void* sBuf, char* tBuf, INT len, LONG& seek );
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user