blob: 61220d6f3af196a76f371bbbb2b5e21caad59d93 [file] [log] [blame]
Andreas Huberc9410c72016-07-28 12:18:40 -07001#ifndef SCALAR_TYPE_H_
2
3#define SCALAR_TYPE_H_
4
5#include "Type.h"
6
7namespace android {
8
9struct ScalarType : public Type {
10 enum Kind {
11 KIND_CHAR,
12 KIND_BOOL,
13 KIND_OPAQUE,
14 KIND_INT8,
15 KIND_UINT8,
16 KIND_INT16,
17 KIND_UINT16,
18 KIND_INT32,
19 KIND_UINT32,
20 KIND_INT64,
21 KIND_UINT64,
22 KIND_FLOAT,
23 KIND_DOUBLE,
24 };
25
26 ScalarType(Kind kind);
27
28 void dump(Formatter &out) const override;
29
Andreas Huber737080b2016-08-02 15:38:04 -070030 const ScalarType *resolveToScalarType() const override;
31
Andreas Huber881227d2016-08-02 14:20:21 -070032 std::string getCppType(StorageMode mode, std::string *extra) const override;
33
34 void emitReaderWriter(
35 Formatter &out,
36 const std::string &name,
37 const std::string &parcelObj,
38 bool parcelObjIsPointer,
39 bool isReader,
40 ErrorMode mode) const override;
41
Andreas Huber737080b2016-08-02 15:38:04 -070042 void emitReaderWriterWithCast(
43 Formatter &out,
44 const std::string &name,
45 const std::string &parcelObj,
46 bool parcelObjIsPointer,
47 bool isReader,
48 ErrorMode mode,
49 bool needsCast) const;
50
Andreas Huberc9410c72016-07-28 12:18:40 -070051private:
52 Kind mKind;
53
54 DISALLOW_COPY_AND_ASSIGN(ScalarType);
55};
56
57} // namespace android
58
59#endif // SCALAR_TYPE_H_