-
Notifications
You must be signed in to change notification settings - Fork 0
/
cfile.cpp
124 lines (116 loc) · 2.21 KB
/
cfile.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "cfile.h"
bool CFile::Open(char *pFilename, int bFlag)
{
char mode[10];
mode[0] = '\0';
if(bFlag & FMODE_READ) {
strcat(mode, "r");
}
if(bFlag & FMODE_WRITE) {
strcat(mode, "w");
}
if(bFlag & FMODE_TEXT) {
strcat(mode, "t");
}
if(bFlag & FMODE_BIN) {
strcat(mode, "b");
}
m_pFile = fopen(pFilename, mode);
m_nOpenMode = bFlag;
return isValid();
}
bool CFile::Seek( unsigned long nOffset )
{
int result;
result = -1;
if(isValid()) {
result = fseek(m_pFile, nOffset, SEEK_SET);
}
return (result==0)?true:false;
}
long CFile::Tell( void )
{
if(isValid()) {
return ftell(m_pFile);
}
return -1;
}
unsigned char CFile::ReadByte( void )
{
unsigned char result;
result = 0;
if(isValid()) {
if(!eof()) {
result = getc(m_pFile);
}
}
return result;
}
unsigned short CFile::ReadWord( void )
{
unsigned short result;
result = 0;
if(isValid()) {
for(int i=0; i<sizeof(unsigned short); i++) {
if(!eof(),1) {
if(m_bEndian==true) {
result |= (getc(m_pFile) & 0x00ff)<<((sizeof(unsigned short)-1-i)*8); // Little
} else {
result |= (getc(m_pFile) & 0x00ff)<<(i*8); // Big
}
}
}
}
return result;
}
unsigned long CFile::ReadDword( void )
{
unsigned long result;
result = 0L;
if(isValid()) {
for(int i=0; i<sizeof(unsigned long); i++) {
if(!eof()) {
if(m_bEndian==true) {
result |= (getc(m_pFile) & 0x00ff)<<((sizeof(unsigned long)-1-i)*8); // Little
} else {
result |= (getc(m_pFile) & 0x00ff)<<(i*8); // Big
}
}
}
}
return result;
}
void CFile::WriteByte( unsigned char nData )
{
if(isValid()) {
putc(nData, m_pFile);
}
}
void CFile::WriteWord( unsigned short nData )
{
if(isValid()) {
for(int i=0; i<sizeof(unsigned short); i++) {
if(!eof()) {
if(m_bEndian==false) {
putc((nData>>(i*8)) & 0x00ff, m_pFile);
} else {
putc((nData>>((sizeof(unsigned short)-1-i)*8)) & 0x00ff, m_pFile);
}
}
}
}
}
void CFile::WriteDword( unsigned long nData )
{
if(isValid()) {
for(int i=0; i<sizeof(unsigned long); i++) {
if(!eof()) {
if(m_bEndian==false) {
putc((nData>>(i*8)) & 0x00ff, m_pFile);
} else {
putc((nData>>((sizeof(unsigned long)-1-i)*8)) & 0x00ff, m_pFile);
}
}
}
}
}