summaryrefslogtreecommitdiff
path: root/include/ulib/iostream
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-01-03 02:19:57 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-01-03 02:19:57 +0800
commit210025560c80b48af4875af199f183ad709e3bf0 (patch)
treeeb11aeb7b641187f207e3b572c5184cf3526b463 /include/ulib/iostream
parentbde87490d61135dcaa94d9b1489ff6c39876d169 (diff)
parent10614e04929a6d109a5e90524e446b637aaf0c13 (diff)
downloadlume-210025560c80b48af4875af199f183ad709e3bf0.tar.gz
lume-210025560c80b48af4875af199f183ad709e3bf0.tar.xz
Merge pull request #4 from Richard-Qin-001/dev/shell
Rebuilt the system's underlying structure; it is now stable enough to merge. The system now supports a read-only file system and has a simple shell implemented.
Diffstat (limited to 'include/ulib/iostream')
-rw-r--r--include/ulib/iostream110
1 files changed, 110 insertions, 0 deletions
diff --git a/include/ulib/iostream b/include/ulib/iostream
new file mode 100644
index 0000000..83ed74c
--- /dev/null
+++ b/include/ulib/iostream
@@ -0,0 +1,110 @@
+#ifndef _IOSTREAM
+#define _IOSTREAM
+
+#include "stdio.h"
+
+namespace std
+{
+ class ostream
+ {
+ private:
+ FILE* _stream;
+ public:
+ ostream(FILE* f) : _stream(f) {}
+
+ ostream& operator<<(const char* str)
+ {
+ fprintf(_stream, "%s", str);
+ return *this;
+ }
+
+ ostream& operator<<(int n)
+ {
+ fprintf(_stream, "%d", n);
+ return *this;
+ }
+
+ ostream &operator<<(long n)
+ {
+ fprintf(_stream, "%ld", n);
+ return *this;
+ }
+
+ ostream &operator<<(long long n)
+ {
+ fprintf(_stream, "%lld", n);
+ return *this;
+ }
+
+ ostream &operator<<(double f)
+ {
+ fprintf(_stream, "%f", f);
+ return *this;
+ }
+
+ ostream &operator<<(char c)
+ {
+ fputc(c, _stream);
+ return *this;
+ }
+
+ ostream &operator<<(void *p)
+ {
+ fprintf(_stream, "%p", p);
+ return *this;
+ }
+
+ ostream &operator<<(ostream &(*func)(ostream &))
+ {
+ return func(*this);
+ }
+
+ ostream &flush()
+ {
+ fflush(_stream);
+ return *this;
+ }
+ };
+
+ class istream{
+ private:
+ FILE* _stream;
+ public:
+ istream(FILE *f) : _stream(f) {}
+
+ istream& operator>>(int n)
+ {
+ fscanf(_stream, "%d", n);
+ return *this;
+ }
+
+ istream &operator>>(double &f)
+ {
+ fscanf(_stream, "%lf", &f);
+ return *this;
+ }
+
+ istream &operator>>(char *str)
+ {
+ fscanf(_stream, "%s", str);
+ return *this;
+ }
+
+ istream &operator>>(char &c)
+ {
+ char tmp[2];
+ fscanf(_stream, " %c", tmp);
+ c = tmp[0];
+ return *this;
+ }
+ };
+
+ inline ostream &endl(ostream &os)
+ {
+ os << '\n';
+ os.flush();
+ return os;
+ }
+}
+
+#endif \ No newline at end of file