TypeDef.h revision 24e605b5194d969a1558d94896d69cc554881e46
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 TYPE_DEF_H_ 18c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 19c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#define TYPE_DEF_H_ 20c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 21d537ab02e1707597d70665fd8c75ca1ec9f57326Steven Moreland#include "NamedType.h" 22c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 23c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Hubernamespace android { 24c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 25d537ab02e1707597d70665fd8c75ca1ec9f57326Steven Morelandstruct TypeDef : public NamedType { 26505316c499a4dbb95f6567e8531fb6f1e74c3dedTimur Iskhakov TypeDef(const char* localName, const Location& location, Scope* parent, 27505316c499a4dbb95f6567e8531fb6f1e74c3dedTimur Iskhakov const Reference<Type>& type); 28c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 29737080baf85882c45bb322ee2191ae5fd9e1283aAndreas Huber const ScalarType *resolveToScalarType() const override; 30737080baf85882c45bb322ee2191ae5fd9e1283aAndreas Huber 310ecc7b8aca24a5618512610bb6371bdb91b5fdc2Steven Moreland std::string typeName() const override; 320ecc7b8aca24a5618512610bb6371bdb91b5fdc2Steven Moreland 3324e605b5194d969a1558d94896d69cc554881e46Timur Iskhakov Type* referencedType(); 3424e605b5194d969a1558d94896d69cc554881e46Timur Iskhakov const Type* referencedType() const; 35c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 365a545440766886a1bbd09ed7221bb337705e5d14Andreas Huber bool isInterface() const override; 378d3ac0c6112e02e3a705fd4f9d82e523f10b4287Andreas Huber bool isEnum() const override; 388d3ac0c6112e02e3a705fd4f9d82e523f10b4287Andreas Huber bool isTypeDef() const override; 39bb797e4ba03e95cd0b20aa77b83717dcf8cc6287Andreas Huber bool needsEmbeddedReadWrite() const override; 40bb797e4ba03e95cd0b20aa77b83717dcf8cc6287Andreas Huber bool resultNeedsDeref() const override; 41bb797e4ba03e95cd0b20aa77b83717dcf8cc6287Andreas Huber 422a55e05a26aa8e84433eb6c3e06175ccf45d4e92Steven Moreland status_t emitTypeDeclarations(Formatter &out) const override; 432a55e05a26aa8e84433eb6c3e06175ccf45d4e92Steven Moreland 44505316c499a4dbb95f6567e8531fb6f1e74c3dedTimur Iskhakov private: 45505316c499a4dbb95f6567e8531fb6f1e74c3dedTimur Iskhakov Reference<Type> mReferencedType; 46c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 47c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber DISALLOW_COPY_AND_ASSIGN(TypeDef); 48c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber}; 49c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 50c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber} // namespace android 51c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 52c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#endif // TYPE_DEF_H_ 53c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 54