Lab 1 Program C

Dependents:   Lab1C

Fork of mbed by -deleted-

Stream.h

Committer:
simon.ford@mbed.co.uk
Date:
2008-11-27
Revision:
4:5d1359a283bc
Parent:
1:6b7f447ca868
Child:
8:00a04e5cd407

File content as of revision 4:5d1359a283bc:

/* mbed Microcontroller Library - Stream
 * Copyright (c) 2007-2008, sford
 */

#ifndef MBED_STREAM_H
#define MBED_STREAM_H

#include "FileLike.h"
#include <cstdio>

namespace mbed {

class Stream : protected FileLike {

public:
    
    Stream(const char *name = NULL);
    virtual ~Stream();

    int putc(int c) {
        fflush(_file);
        return std::fputc(c, _file); 
    }
    int puts(const char *s) {
        fflush(_file);
        return std::fputs(s, _file); 
    }
    int getc() {
        fflush(_file);
        return std::fgetc(_file);
    }
    char *gets(char *s, int size) {
        fflush(_file);
        return std::fgets(s,size,_file);;
    }
    int printf(const char* format, ...);
    int scanf(const char* format, ...);
    
    operator std::FILE*() { return _file; }
    
protected:

    virtual int close();
    virtual ssize_t write(const void* buffer, size_t length);
    virtual ssize_t read(void* buffer, size_t length);
    virtual off_t lseek(off_t offset, int whence);
    virtual int isatty();
    virtual int fsync();

    virtual int _putc(int c) = 0;
    virtual int _getc() = 0;
    
    std::FILE *_file;
    
};

} // namespace mbed

#endif