-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFileList.h
More file actions
103 lines (79 loc) · 1.54 KB
/
FileList.h
File metadata and controls
103 lines (79 loc) · 1.54 KB
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
#ifndef FILELIST_H
#define FILELIST_H
#include "BoxInfo.h"
#include "ProgramMonitor.h"
#include "Data.h"
#include "File.h"
#include "OrderedCollection.h"
class FileList : public OrderedCollection <File> {
public:
File *assertFind(Count count);
void push(Count, char *, int);
void invokeFile(Data *, Count);
void readLine(Data *, Count);
void read(Data *, Count);
void write(Data *, Count);
};
File *FileList::assertFind(Count count)
{
File *file = find(count);
if (NULL == file)
{
SETERR(FILE_OPER_ERR);
}
return file;
}
void FileList::push(Count count, char *path, int mode)
{
File *file = find(count);
if (file != NULL && file->isOpen())
{
rewind(file->getFp());
return;
}
file = new File();
file->open(path, mode, count);
if (NOK)
{
delete file;
return;
}
add(count, file);
}
void FileList::read(Data *data, Count count)
{
File *file = assertFind(count);
if (NOK)
{
return;
}
file->read(data);
}
void FileList::write(Data *data, Count count)
{
File *file = assertFind(count);
if (NOK)
{
return;
}
file->write(data);
}
void FileList::invokeFile(Data *data, Count count)
{
File *file = assertFind(count);
if (NOK)
{
return;
}
file->invokeFile(data->getAddress(), data->getSize());
}
void FileList::readLine(Data *data, Count count)
{
File *file = assertFind(count);
if (NOK)
{
return;
}
file->readLine(data);
}
#endif