ArrayType.h revision 70a59e1dc3dcf32f791d2dd7966111d4adf32eca
1c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#ifndef ARRAY_TYPE_H_
2c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
3c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#define ARRAY_TYPE_H_
4c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
5c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#include "Type.h"
6c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
7c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#include <string>
8c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
9c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Hubernamespace android {
10c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
11c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberstruct ArrayType : public Type {
12c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    ArrayType(Type *elementType, const char *dimension);
13c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
14881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber    std::string getCppType(StorageMode mode, std::string *extra) const override;
15881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber
162831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber    std::string getJavaType() const override;
172831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber
18881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber    void emitReaderWriter(
19881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            Formatter &out,
20881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            const std::string &name,
21881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            const std::string &parcelObj,
22881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            bool parcelObjIsPointer,
23881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            bool isReader,
24881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            ErrorMode mode) const override;
25881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber
26881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber    void emitReaderWriterEmbedded(
27881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            Formatter &out,
28881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            const std::string &name,
29881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            bool nameIsPointer,
30881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            const std::string &parcelObj,
31881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            bool parcelObjIsPointer,
32881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            bool isReader,
33881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            ErrorMode mode,
34881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            const std::string &parentName,
35881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber            const std::string &offsetText) const override;
36881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber
37881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber    bool needsEmbeddedReadWrite() const override;
38881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber
392831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber    void emitJavaReaderWriter(
402831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber            Formatter &out,
412831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber            const std::string &parcelObj,
422831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber            const std::string &argName,
432831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber            bool isReader) const override;
442831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber
455158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang    status_t emitVtsTypeDeclarations(Formatter &out) const override;
465158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang
4770a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber    bool isJavaCompatible() const override;
4870a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber
49c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberprivate:
50c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    Type *mElementType;
51c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    std::string mDimension;
52c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
53c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    DISALLOW_COPY_AND_ASSIGN(ArrayType);
54c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber};
55c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
56c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber}  // namespace android
57c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
58c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#endif  // ARRAY_TYPE_H_
59c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
60