Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Stream.h
00001 /* mbed Microcontroller Library 00002 * Copyright (c) 2006-2013 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #ifndef MBED_STREAM_H 00017 #define MBED_STREAM_H 00018 00019 #include "platform/platform.h" 00020 #include "platform/FileLike.h" 00021 #include "platform/FileHandle.h" 00022 #include "platform/NonCopyable.h" 00023 #include <cstdio> 00024 #include <cstdarg> 00025 00026 namespace mbed { 00027 /** \addtogroup platform */ 00028 /** @{*/ 00029 00030 extern void mbed_set_unbuffered_stream(std::FILE *_file); 00031 extern int mbed_getc(std::FILE *_file); 00032 extern char* mbed_gets(char *s, int size, std::FILE *_file); 00033 /** @}*/ 00034 00035 /** File stream 00036 * 00037 * @note Synchronization level: Set by subclass 00038 * @ingroup platform 00039 */ 00040 class Stream : public FileLike, private NonCopyable<Stream> { 00041 00042 public: 00043 Stream(const char *name=NULL); 00044 virtual ~Stream(); 00045 00046 int putc(int c); 00047 int puts(const char *s); 00048 int getc(); 00049 char *gets(char *s, int size); 00050 int printf(const char* format, ...); 00051 int scanf(const char* format, ...); 00052 int vprintf(const char* format, std::va_list args); 00053 int vscanf(const char* format, std::va_list args); 00054 00055 operator std::FILE*() {return _file;} 00056 00057 protected: 00058 virtual int close(); 00059 virtual ssize_t write(const void* buffer, size_t length); 00060 virtual ssize_t read(void* buffer, size_t length); 00061 virtual off_t seek(off_t offset, int whence); 00062 virtual off_t tell(); 00063 virtual void rewind(); 00064 virtual int isatty(); 00065 virtual int sync(); 00066 virtual off_t size(); 00067 00068 virtual int _putc(int c) = 0; 00069 virtual int _getc() = 0; 00070 00071 std::FILE *_file; 00072 00073 /** Acquire exclusive access to this object. 00074 */ 00075 virtual void lock() { 00076 // Stub 00077 } 00078 00079 /** Release exclusive access to this object. 00080 */ 00081 virtual void unlock() { 00082 // Stub 00083 } 00084 }; 00085 00086 } // namespace mbed 00087 00088 #endif 00089
Generated on Tue Jul 12 2022 20:03:24 by
