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:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View 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;
};
}

View 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;
}
}

View 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];
};
}

View 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;
}

View 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;
}
}

View 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;
}

View 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
}

View 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;
}
}

View 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 );
}