ArrayType.h revision 881227d860c59471eee31d39946e96ce2daa35d6
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
14c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    void dump(Formatter &out) const override;
15c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
16881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber    std::string getCppType(StorageMode mode, std::string *extra) const override;
17881227d860c59471eee31d39946e96ce2daa35d6Andreas 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
39c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberprivate:
40c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    Type *mElementType;
41c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    std::string mDimension;
42c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
43c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber    DISALLOW_COPY_AND_ASSIGN(ArrayType);
44c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber};
45c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
46c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber}  // namespace android
47c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
48c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#endif  // ARRAY_TYPE_H_
49c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber
50