Initial
This commit is contained in:
154
uudecode/MAIN.CPP
Normal file
154
uudecode/MAIN.CPP
Normal file
@@ -0,0 +1,154 @@
|
||||
#include <common/windows.hpp>
|
||||
#include <common/string.hpp>
|
||||
#include <common/openfile.hpp>
|
||||
#include <stdio.h>
|
||||
|
||||
class FileInfo;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
int FileOpen(char *pPathFileName,FileInfo *pFileInfo,int access,int share,int open,int attributes);
|
||||
int FileClose(FileInfo *pFileInfo);
|
||||
int FileRead(FileInfo *pFileInfo,BYTE *ptrByte);
|
||||
int FileReadLine(FileInfo *pFileInfo,BYTE *ptrByte);
|
||||
int FileWriteLine(FileInfo *pFileInfo,BYTE *ptrByte);
|
||||
int FileFlush(FileInfo *pFileInfo);
|
||||
}
|
||||
|
||||
class FileInfo
|
||||
{
|
||||
public:
|
||||
FileInfo(void);
|
||||
~FileInfo(); // cannot be virtual
|
||||
enum{MaxLength=0x800};
|
||||
BYTE mBuffer[MaxLength];
|
||||
HANDLE mhFileHandle;
|
||||
DWORD mBufferIndex;
|
||||
DWORD mlpBufferPointer;
|
||||
};
|
||||
|
||||
inline
|
||||
FileInfo::FileInfo(void)
|
||||
: mhFileHandle(INVALID_HANDLE_VALUE), mBufferIndex(0), mlpBufferPointer(0)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
FileInfo::~FileInfo()
|
||||
{
|
||||
}
|
||||
|
||||
class FileIO
|
||||
{
|
||||
public:
|
||||
enum Open{CreateNew=CREATE_NEW,CreateAlways=CREATE_ALWAYS,OpenExisting=OPEN_EXISTING,
|
||||
OpenAlways=OPEN_ALWAYS,TruncateExisting=TRUNCATE_EXISTING};
|
||||
enum Share{FileShareRead=FILE_SHARE_READ,FileShareWrite=FILE_SHARE_WRITE,FileShareDelete=FILE_SHARE_DELETE};
|
||||
enum Access{GenericRead=GENERIC_READ,GenericWrite=GENERIC_WRITE,
|
||||
GenericExecute=GENERIC_EXECUTE,GenericAll=GENERIC_ALL};
|
||||
enum Attributes{ReadOnly=FILE_ATTRIBUTE_READONLY,Hidden=FILE_ATTRIBUTE_HIDDEN,
|
||||
System=FILE_ATTRIBUTE_SYSTEM,Directory=FILE_ATTRIBUTE_DIRECTORY,
|
||||
Archive=FILE_ATTRIBUTE_ARCHIVE,Normal=FILE_ATTRIBUTE_NORMAL,
|
||||
Temporary=FILE_ATTRIBUTE_TEMPORARY,Compressed=FILE_ATTRIBUTE_COMPRESSED,
|
||||
Offline=FILE_ATTRIBUTE_OFFLINE};
|
||||
int openFile(char *pPathFileName,Access access,Share share,Open open,Attributes attributes);
|
||||
int closeFile(void);
|
||||
int readFile(BYTE *ptrByte);
|
||||
int readLine(BYTE *strLine);
|
||||
int writeFile(BYTE *strByte);
|
||||
int flushFile(void);
|
||||
BOOL isOkay(void)const;
|
||||
private:
|
||||
FileInfo mFileInfo;
|
||||
};
|
||||
|
||||
inline
|
||||
int FileIO::openFile(char *pPathFileName,Access access,Share share,Open open,Attributes attributes)
|
||||
{
|
||||
closeFile();
|
||||
return !(INVALID_HANDLE_VALUE==(HANDLE)::FileOpen(pPathFileName,&mFileInfo,access,share,open,attributes));
|
||||
}
|
||||
|
||||
inline
|
||||
int FileIO::closeFile(void)
|
||||
{
|
||||
flushFile();
|
||||
return ::FileClose(&mFileInfo);
|
||||
}
|
||||
|
||||
inline
|
||||
int FileIO::readFile(BYTE *ptrByte)
|
||||
{
|
||||
return ::FileRead(&mFileInfo,ptrByte);
|
||||
}
|
||||
|
||||
inline
|
||||
int FileIO::readLine(BYTE *strLine)
|
||||
{
|
||||
return ::FileReadLine(&mFileInfo,strLine);
|
||||
}
|
||||
|
||||
inline
|
||||
int FileIO::writeFile(BYTE *strByte)
|
||||
{
|
||||
return ::FileWriteLine(&mFileInfo,strByte);
|
||||
}
|
||||
|
||||
inline
|
||||
int FileIO::flushFile(void)
|
||||
{
|
||||
return ::FileFlush(&mFileInfo);
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL FileIO::isOkay(void)const
|
||||
{
|
||||
return INVALID_HANDLE_VALUE==mFileInfo.mhFileHandle;
|
||||
}
|
||||
|
||||
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR lpszCmdLine,int /*nCmdShow*/)
|
||||
{
|
||||
FileIO openFile;
|
||||
BYTE ptrByte;
|
||||
DWORD byteCount;
|
||||
DWORD elapsedTime;
|
||||
String strMessage;
|
||||
char lineString;
|
||||
|
||||
// if(!openFile.openFile(String(lpszCmdLine),
|
||||
// FileIO::Access(int(FileIO::GenericRead)|int(FileIO::GenericWrite)),
|
||||
// FileIO::FileShareRead,
|
||||
// FileIO::OpenExisting,
|
||||
// FileIO::Normal))return FALSE;
|
||||
|
||||
//#if 0
|
||||
if(!openFile.openFile("c:\\smk.lst",
|
||||
FileIO::Access(int(FileIO::GenericRead)|int(FileIO::GenericWrite)),
|
||||
FileIO::FileShareWrite,
|
||||
FileIO::CreateAlways,
|
||||
FileIO::Normal))return FALSE;
|
||||
elapsedTime=::GetTickCount();
|
||||
for(int lineIndex=0;lineIndex<500000;lineIndex++)openFile.writeFile((BYTE*)"hello there");
|
||||
elapsedTime=::GetTickCount()-elapsedTime;
|
||||
elapsedTime/=1000L;
|
||||
::sprintf(strMessage,"%ld bytes read int %ld seconds\n",byteCount,elapsedTime);
|
||||
::MessageBox(::GetFocus(),strMessage,(LPSTR)"FileIO",MB_OK);
|
||||
openFile.closeFile();
|
||||
//#endif
|
||||
|
||||
#if 0
|
||||
FileHandle logFile;
|
||||
logFile.open("c:\\smk.lst",FileHandle::ReadWrite,FileHandle::ShareReadWrite,FileHandle::Overwrite);
|
||||
if(!logFile.isOkay())return FALSE;
|
||||
elapsedTime=::GetTickCount();
|
||||
for(int lineIndex=0;lineIndex<500000;lineIndex++)logFile.writeLine("hello there");
|
||||
logFile.flush();
|
||||
logFile.close();
|
||||
elapsedTime=::GetTickCount()-elapsedTime;
|
||||
elapsedTime/=1000L;
|
||||
::sprintf(strMessage,"%ld bytes read int %ld seconds\n",byteCount,elapsedTime);
|
||||
::MessageBox(::GetFocus(),strMessage,(LPSTR)"FileIO",MB_OK);
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user