]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/api/FileBase.h
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / api / FileBase.h
1 /* mbed Microcontroller Library
2  * Copyright (c) 2006-2013 ARM Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #ifndef MBED_FILEBASE_H
17 #define MBED_FILEBASE_H
18
19 typedef int FILEHANDLE;
20
21 #include <stdio.h>
22
23 #if defined(__ARMCC_VERSION) || defined(__ICCARM__)
24 #    define O_RDONLY 0
25 #    define O_WRONLY 1
26 #    define O_RDWR   2
27 #    define O_CREAT  0x0200
28 #    define O_TRUNC  0x0400
29 #    define O_APPEND 0x0008
30
31 #    define NAME_MAX 255
32
33 typedef int mode_t;
34 typedef int ssize_t;
35 typedef long off_t;
36
37 #else
38 #    include <sys/fcntl.h>
39 #    include <sys/types.h>
40 #    include <sys/syslimits.h>
41 #endif
42
43 #include "platform.h"
44
45 namespace mbed {
46
47 typedef enum {
48     FilePathType,
49     FileSystemPathType
50 } PathType;
51
52 class FileBase {
53 public:
54     FileBase(const char *name, PathType t);
55
56     virtual ~FileBase();
57
58     const char* getName(void);
59     PathType    getPathType(void);
60
61     static FileBase *lookup(const char *name, unsigned int len);
62
63     static FileBase *get(int n);
64
65 protected:
66     static FileBase *_head;
67
68     FileBase   *_next;
69     const char *_name;
70     PathType    _path_type;
71
72     /* disallow copy constructor and assignment operators */
73 private:
74     FileBase(const FileBase&);
75     FileBase & operator = (const FileBase&);
76 };
77
78 } // namespace mbed
79
80 #endif