blob: 947f968efeef9b759d8cc4890415f6cec1290599 [file] [log] [blame]
Andreas Huberc9410c72016-07-28 12:18:40 -07001#ifndef ARRAY_TYPE_H_
2
3#define ARRAY_TYPE_H_
4
5#include "Type.h"
6
7#include <string>
8
9namespace android {
10
11struct ArrayType : public Type {
12 ArrayType(Type *elementType, const char *dimension);
13
Andreas Huber881227d2016-08-02 14:20:21 -070014 std::string getCppType(StorageMode mode, std::string *extra) const override;
15
Andreas Huber2831d512016-08-15 09:33:47 -070016 std::string getJavaType() const override;
17
Andreas Huber881227d2016-08-02 14:20:21 -070018 void emitReaderWriter(
19 Formatter &out,
20 const std::string &name,
21 const std::string &parcelObj,
22 bool parcelObjIsPointer,
23 bool isReader,
24 ErrorMode mode) const override;
25
26 void emitReaderWriterEmbedded(
27 Formatter &out,
28 const std::string &name,
29 bool nameIsPointer,
30 const std::string &parcelObj,
31 bool parcelObjIsPointer,
32 bool isReader,
33 ErrorMode mode,
34 const std::string &parentName,
35 const std::string &offsetText) const override;
36
37 bool needsEmbeddedReadWrite() const override;
38
Andreas Huber2831d512016-08-15 09:33:47 -070039 void emitJavaReaderWriter(
40 Formatter &out,
41 const std::string &parcelObj,
42 const std::string &argName,
43 bool isReader) const override;
44
Andreas Huber85eabdb2016-08-25 11:24:49 -070045 void emitJavaFieldInitializer(
46 Formatter &out, const std::string &fieldName) const override;
47
48 void emitJavaFieldReaderWriter(
49 Formatter &out,
50 const std::string &blobName,
51 const std::string &fieldName,
52 const std::string &offset,
53 bool isReader) const override;
54
Zhuoyao Zhang5158db42016-08-10 10:25:20 -070055 status_t emitVtsTypeDeclarations(Formatter &out) const override;
56
Andreas Huber70a59e12016-08-16 12:57:01 -070057 bool isJavaCompatible() const override;
58
Andreas Huber85eabdb2016-08-25 11:24:49 -070059 void getAlignmentAndSize(size_t *align, size_t *size) const override;
60
Andreas Huberc9410c72016-07-28 12:18:40 -070061private:
62 Type *mElementType;
63 std::string mDimension;
64
65 DISALLOW_COPY_AND_ASSIGN(ArrayType);
66};
67
68} // namespace android
69
70#endif // ARRAY_TYPE_H_
71