blob: 2f9c00dee73663fcac52a56a500b127b3981d5e7 [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;
Andreas Huber85eabdb2016-08-25 11:24:49 -070034 std::string getJavaWrapperType() const override;
Andreas Huber2831d512016-08-15 09:33:47 -070035 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
Andreas Huber85eabdb2016-08-25 11:24:49 -070054 void emitJavaFieldReaderWriter(
55 Formatter &out,
56 const std::string &blobName,
57 const std::string &fieldName,
58 const std::string &offset,
59 bool isReader) const override;
60
Zhuoyao Zhang5158db42016-08-10 10:25:20 -070061 status_t emitVtsTypeDeclarations(Formatter &out) const override;
62
Andreas Huber85eabdb2016-08-25 11:24:49 -070063 void getAlignmentAndSize(size_t *align, size_t *size) const override;
64
Andreas Huberc9410c72016-07-28 12:18:40 -070065private:
66 Kind mKind;
67
68 DISALLOW_COPY_AND_ASSIGN(ScalarType);
69};
70
71} // namespace android
72
73#endif // SCALAR_TYPE_H_