Merge pull request #128 from logxen/edge
[clinton/Smoothieware.git] / gcc4mbed / external / mbed / Stream.h
CommitLineData
4cff3ded
AW
1/* mbed Microcontroller Library - Stream
2 * Copyright (c) 2007-2009 ARM Limited. All rights reserved.
4cff3ded
AW
3 */
4
5#ifndef MBED_STREAM_H
6#define MBED_STREAM_H
7
8#include "FileLike.h"
9#include "platform.h"
10#include <cstdio>
11
12namespace mbed {
13
14class Stream : public FileLike {
15
16public:
17
18 Stream(const char *name = NULL);
19 virtual ~Stream();
20
21 int putc(int c) {
22 fflush(_file);
23 return std::fputc(c, _file);
24 }
25 int puts(const char *s) {
26 fflush(_file);
27 return std::fputs(s, _file);
28 }
29 int getc() {
30 fflush(_file);
31 return std::fgetc(_file);
32 }
33 char *gets(char *s, int size) {
34 fflush(_file);
35 return std::fgets(s,size,_file);;
36 }
37 int printf(const char* format, ...);
38 int scanf(const char* format, ...);
39
40 operator std::FILE*() { return _file; }
41
838b33b4 42 std::FILE *_file;
4cff3ded
AW
43#ifdef MBED_RPC
44 virtual const struct rpc_method *get_rpc_methods();
45#endif
46
47protected:
48
49 virtual int close();
50 virtual ssize_t write(const void* buffer, size_t length);
51 virtual ssize_t read(void* buffer, size_t length);
52 virtual off_t lseek(off_t offset, int whence);
53 virtual int isatty();
54 virtual int fsync();
55 virtual off_t flen();
56
57 virtual int _putc(int c) = 0;
58 virtual int _getc() = 0;
59
4cff3ded
AW
60
61};
62
63} // namespace mbed
64
65#endif
66