1 
2 /* Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved
3  * http://www.digitalmars.com
4  * Distributed under the Boost Software License, Version 1.0.
5  * http://www.boost.org/LICENSE_1_0.txt
6  * https://github.com/dlang/dmd/blob/master/src/dmd/root/file.h
7  */
8 
9 #pragma once
10 
11 #include "dsystem.h"
12 #include "array.h"
13 
14 typedef Array<struct File *> Files;
15 
16 struct FileName;
17 
18 struct File
19 {
20     int ref;                    // != 0 if this is a reference to someone else's buffer
21     unsigned char *buffer;      // data for our file
22     size_t len;                 // amount of data in buffer[]
23 
24     FileName *name;             // name of our file
25 
26     File(const char *);
27     static File *create(const char *);
28     File(const FileName *);
29     ~File();
30 
31     const char *toChars();
32 
33     /* Read file, return true if error
34      */
35 
36     bool read();
37 
38     /* Write file, return true if error
39      */
40 
41     bool write();
42 
43     /* Set buffer
44      */
45 
setbufferFile46     void setbuffer(void *buffer, size_t len)
47     {
48         this->buffer = (unsigned char *)buffer;
49         this->len = len;
50     }
51 
52     void remove();              // delete file
53 };
54