blob: 74f999c07763bde753c8ace983a37bf48a5328df [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 {
Andreas Huberc9410c72016-07-28 12:18:40 -070011 KIND_BOOL,
12 KIND_OPAQUE,
13 KIND_INT8,
14 KIND_UINT8,
15 KIND_INT16,
16 KIND_UINT16,
17 KIND_INT32,
18 KIND_UINT32,
19 KIND_INT64,
20 KIND_UINT64,
21 KIND_FLOAT,
22 KIND_DOUBLE,
23 };
24
25 ScalarType(Kind kind);
26
Andreas Huber737080b2016-08-02 15:38:04 -070027 const ScalarType *resolveToScalarType() const override;
28
Andreas Huber8d3ac0c2016-08-04 14:49:23 -070029 bool isValidEnumStorageType() const;
30
Andreas Huber881227d2016-08-02 14:20:21 -070031 std::string getCppType(StorageMode mode, std::string *extra) const override;
32
Andreas Huber2831d512016-08-15 09:33:47 -070033 std::string getJavaType() const override;
34 std::string getJavaSuffix() const override;
35
Andreas Huber881227d2016-08-02 14:20:21 -070036 void emitReaderWriter(
37 Formatter &out,
38 const std::string &name,
39 const std::string &parcelObj,
40 bool parcelObjIsPointer,
41 bool isReader,
42 ErrorMode mode) const override;
43
Andreas Huber737080b2016-08-02 15:38:04 -070044 void emitReaderWriterWithCast(
45 Formatter &out,
46 const std::string &name,
47 const std::string &parcelObj,
48 bool parcelObjIsPointer,
49 bool isReader,
50 ErrorMode mode,
51 bool needsCast) const;
52
Zhuoyao Zhang5158db42016-08-10 10:25:20 -070053 status_t emitVtsTypeDeclarations(Formatter &out) const override;
54
Andreas Huberc9410c72016-07-28 12:18:40 -070055private:
56 Kind mKind;
57
58 DISALLOW_COPY_AND_ASSIGN(ScalarType);
59};
60
61} // namespace android
62
63#endif // SCALAR_TYPE_H_