ArrayType.h revision 85eabdbe56720dcdcf130e5ca83129d47b143768
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 4585eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber void emitJavaFieldInitializer( 4685eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber Formatter &out, const std::string &fieldName) const override; 4785eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber 4885eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber void emitJavaFieldReaderWriter( 4985eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber Formatter &out, 5085eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber const std::string &blobName, 5185eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber const std::string &fieldName, 5285eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber const std::string &offset, 5385eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber bool isReader) const override; 5485eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber 555158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang status_t emitVtsTypeDeclarations(Formatter &out) const override; 565158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang 5770a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber bool isJavaCompatible() const override; 5870a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber 5985eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber void getAlignmentAndSize(size_t *align, size_t *size) const override; 6085eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber 61c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberprivate: 62c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber Type *mElementType; 63c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber std::string mDimension; 64c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 65c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber DISALLOW_COPY_AND_ASSIGN(ArrayType); 66c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber}; 67c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 68c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber} // namespace android 69c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 70c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#endif // ARRAY_TYPE_H_ 71c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 72