TypeDef.h revision 505316c499a4dbb95f6567e8531fb6f1e74c3ded
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 33505316c499a4dbb95f6567e8531fb6f1e74c3dedTimur Iskhakov Type* referencedType() const; 34c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 355a545440766886a1bbd09ed7221bb337705e5d14Andreas Huber bool isInterface() const override; 368d3ac0c6112e02e3a705fd4f9d82e523f10b4287Andreas Huber bool isEnum() const override; 378d3ac0c6112e02e3a705fd4f9d82e523f10b4287Andreas Huber bool isTypeDef() const override; 38bb797e4ba03e95cd0b20aa77b83717dcf8cc6287Andreas Huber bool needsEmbeddedReadWrite() const override; 39bb797e4ba03e95cd0b20aa77b83717dcf8cc6287Andreas Huber bool resultNeedsDeref() const override; 40bb797e4ba03e95cd0b20aa77b83717dcf8cc6287Andreas Huber 412a55e05a26aa8e84433eb6c3e06175ccf45d4e92Steven Moreland status_t emitTypeDeclarations(Formatter &out) const override; 422a55e05a26aa8e84433eb6c3e06175ccf45d4e92Steven Moreland 43505316c499a4dbb95f6567e8531fb6f1e74c3dedTimur Iskhakov private: 44505316c499a4dbb95f6567e8531fb6f1e74c3dedTimur Iskhakov Reference<Type> mReferencedType; 45c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 46c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber DISALLOW_COPY_AND_ASSIGN(TypeDef); 47c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber}; 48c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 49c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber} // namespace android 50c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 51c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#endif // TYPE_DEF_H_ 52c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 53