blob: a083d54a4f1474b55f68ec3e6362e1afd0aa0bce [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
Andreas Huber737080b2016-08-02 15:38:04 -070028 const ScalarType *resolveToScalarType() const override;
29
Andreas Huber8d3ac0c2016-08-04 14:49:23 -070030 bool isValidEnumStorageType() const;
31
Andreas Huber881227d2016-08-02 14:20:21 -070032 std::string getCppType(StorageMode mode, std::string *extra) const override;
33
Andreas Huber2831d512016-08-15 09:33:47 -070034 std::string getJavaType() const override;
35 std::string getJavaSuffix() const override;
36
Andreas Huber881227d2016-08-02 14:20:21 -070037 void emitReaderWriter(
38 Formatter &out,
39 const std::string &name,
40 const std::string &parcelObj,
41 bool parcelObjIsPointer,
42 bool isReader,
43 ErrorMode mode) const override;
44
Andreas Huber737080b2016-08-02 15:38:04 -070045 void emitReaderWriterWithCast(
46 Formatter &out,
47 const std::string &name,
48 const std::string &parcelObj,
49 bool parcelObjIsPointer,
50 bool isReader,
51 ErrorMode mode,
52 bool needsCast) const;
53
Zhuoyao Zhang5158db42016-08-10 10:25:20 -070054 status_t emitVtsTypeDeclarations(Formatter &out) const override;
55
Andreas Huberc9410c72016-07-28 12:18:40 -070056private:
57 Kind mKind;
58
59 DISALLOW_COPY_AND_ASSIGN(ScalarType);
60};
61
62} // namespace android
63
64#endif // SCALAR_TYPE_H_