ArrayType.h revision 4c865b72b320a46f326a335cfd326b66b0e10f67
11aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber/* 21aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * Copyright (C) 2016 The Android Open Source Project 31aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * 41aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 51aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * you may not use this file except in compliance with the License. 61aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * You may obtain a copy of the License at 71aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * 81aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 91aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * 101aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * Unless required by applicable law or agreed to in writing, software 111aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 121aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * See the License for the specific language governing permissions and 141aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber * limitations under the License. 151aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber */ 161aec397b1fdea7db4120dbe55b6995bb2a9d9138Andreas Huber 17c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#ifndef ARRAY_TYPE_H_ 18c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 19c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#define ARRAY_TYPE_H_ 20c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 21c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#include "Type.h" 22c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 23c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#include <string> 24c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 25c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Hubernamespace android { 26c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 27c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberstruct ArrayType : public Type { 28c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber ArrayType(Type *elementType, const char *dimension); 29c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 30979e099f1163ff75beed5776cd01fb409b90a0cdSteven Moreland std::string getCppType(StorageMode mode, 31979e099f1163ff75beed5776cd01fb409b90a0cdSteven Moreland std::string *extra, 32979e099f1163ff75beed5776cd01fb409b90a0cdSteven Moreland bool specifyNamespaces) const override; 33979e099f1163ff75beed5776cd01fb409b90a0cdSteven Moreland 34979e099f1163ff75beed5776cd01fb409b90a0cdSteven Moreland void addNamedTypesToSet(std::set<const FQName> &set) const override; 35881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber 364c865b72b320a46f326a335cfd326b66b0e10f67Andreas Huber std::string getJavaType( 374c865b72b320a46f326a335cfd326b66b0e10f67Andreas Huber std::string *extra, bool forInitializer) const override; 382831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber 39881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber void emitReaderWriter( 40881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber Formatter &out, 41881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &name, 42881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &parcelObj, 43881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool parcelObjIsPointer, 44881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool isReader, 45881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber ErrorMode mode) const override; 46881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber 47881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber void emitReaderWriterEmbedded( 48881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber Formatter &out, 49f9d49f1468bd65595f6f0ae5f4d7300f4e95edf8Andreas Huber size_t depth, 50881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &name, 51881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool nameIsPointer, 52881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &parcelObj, 53881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool parcelObjIsPointer, 54881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool isReader, 55881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber ErrorMode mode, 56881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &parentName, 57881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &offsetText) const override; 58881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber 59881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool needsEmbeddedReadWrite() const override; 60881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber 612831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber void emitJavaReaderWriter( 622831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber Formatter &out, 632831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber const std::string &parcelObj, 642831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber const std::string &argName, 652831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber bool isReader) const override; 662831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber 6785eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber void emitJavaFieldInitializer( 6885eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber Formatter &out, const std::string &fieldName) const override; 6985eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber 7085eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber void emitJavaFieldReaderWriter( 7185eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber Formatter &out, 724c865b72b320a46f326a335cfd326b66b0e10f67Andreas Huber size_t depth, 7385eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber const std::string &blobName, 7485eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber const std::string &fieldName, 7585eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber const std::string &offset, 7685eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber bool isReader) const override; 7785eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber 785158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang status_t emitVtsTypeDeclarations(Formatter &out) const override; 795158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang 8070a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber bool isJavaCompatible() const override; 8170a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber 8285eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber void getAlignmentAndSize(size_t *align, size_t *size) const override; 8385eabdbe56720dcdcf130e5ca83129d47b143768Andreas Huber 84c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberprivate: 85c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber Type *mElementType; 86c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber std::string mDimension; 87c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 88c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber DISALLOW_COPY_AND_ASSIGN(ArrayType); 89c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber}; 90c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 91c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber} // namespace android 92c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 93c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#endif // ARRAY_TYPE_H_ 94c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 95