summaryrefslogtreecommitdiff
path: root/include/JSystem/JSupport/JSUOutputStream.h
blob: 9d43692e348ae353e21d0f606b34ae6605bb9287 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef JSUOUTPUTSTREAM_H
#define JSUOUTPUTSTREAM_H

#include "JSystem/JSupport/JSUIosBase.h"

class JSUOutputStream : public JSUIosBase {
public:
    JSUOutputStream() {}
    virtual ~JSUOutputStream();

    virtual s32 skip(s32, s8);
	virtual s32 writeData(const void*, s32) = 0;

    s32 write(const void*, s32);
	void write(const char*);

#define JSU_OUTPUTSTREAM_OPERATOR(T) \
    JSUOutputStream& operator<<(T val) { \
        write(&val, sizeof(T)); \
        return *this; \
    }

    JSU_OUTPUTSTREAM_OPERATOR(signed char)
    JSU_OUTPUTSTREAM_OPERATOR(unsigned char)
    JSU_OUTPUTSTREAM_OPERATOR(signed short)
    JSU_OUTPUTSTREAM_OPERATOR(unsigned short)
    JSU_OUTPUTSTREAM_OPERATOR(int)
    JSU_OUTPUTSTREAM_OPERATOR(unsigned int)
    JSU_OUTPUTSTREAM_OPERATOR(signed long)
    JSU_OUTPUTSTREAM_OPERATOR(unsigned long)
    JSU_OUTPUTSTREAM_OPERATOR(signed long long)
    JSU_OUTPUTSTREAM_OPERATOR(unsigned long long)

#undef JSU_OUTPUTSTREAM_OPERATOR

    JSUOutputStream& operator<<(const char* param_0) {
        write(param_0);
        return *this;
    }
};  // Size = 0x8

#endif /* JSUOUTPUTSTREAM_H */