Interface.h revision 70a59e1dc3dcf32f791d2dd7966111d4adf32eca
1c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#ifndef INTERFACE_H_ 2c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 3c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#define INTERFACE_H_ 4c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 55158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang#include "Method.h" 6c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#include "Scope.h" 7c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 8ba7e6e9d5d30a9d9a39daeb42d2ca2cd06234640Zhuoyao Zhang#include <utils/KeyedVector.h> 9881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber#include <vector> 10c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 11c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Hubernamespace android { 12c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 13ba7e6e9d5d30a9d9a39daeb42d2ca2cd06234640Zhuoyao Zhangstruct Annotation; 14c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberstruct Method; 15c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 16c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberstruct Interface : public Scope { 17ba7e6e9d5d30a9d9a39daeb42d2ca2cd06234640Zhuoyao Zhang Interface( 18ba7e6e9d5d30a9d9a39daeb42d2ca2cd06234640Zhuoyao Zhang Interface *super, 195158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang AnnotationVector *annotations); 20c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 21c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber void addMethod(Method *method); 22c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 23a2723d26427f7db19777dfed330047253e7a4e1bAndreas Huber bool isInterface() const override; 24c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 256cb08cf9f021a01d9d2b1eaec6729aac6ae70708Andreas Huber const Interface *superType() const; 26c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 27881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::vector<Method *> &methods() const; 28881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber 295158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang const AnnotationVector &annotations() const; 30ba7e6e9d5d30a9d9a39daeb42d2ca2cd06234640Zhuoyao Zhang 31881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber std::string getCppType(StorageMode mode, std::string *extra) const override; 32881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber 332831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber std::string getJavaType() const override; 342831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber 35881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber void emitReaderWriter( 36881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber Formatter &out, 37881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &name, 38881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber const std::string &parcelObj, 39881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool parcelObjIsPointer, 40881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber bool isReader, 41881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber ErrorMode mode) const override; 42881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber 432831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber void emitJavaReaderWriter( 442831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber Formatter &out, 452831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber const std::string &parcelObj, 462831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber const std::string &argName, 472831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber bool isReader) const override; 482831d5145675ead9f2fb767bf5fe4ae56b88349fAndreas Huber 495158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang status_t emitVtsArgumentType(Formatter &out) const override; 505158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang 5170a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber bool isJavaCompatible() const override; 5270a59e1dc3dcf32f791d2dd7966111d4adf32ecaAndreas Huber 53c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huberprivate: 546cb08cf9f021a01d9d2b1eaec6729aac6ae70708Andreas Huber Interface *mSuperType; 55881227d860c59471eee31d39946e96ce2daa35d6Andreas Huber std::vector<Method *> mMethods; 565158db484e5ab302368f191d75d5b1334c270e52Zhuoyao Zhang AnnotationVector *mAnnotationsByName; 57c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 58c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber DISALLOW_COPY_AND_ASSIGN(Interface); 59c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber}; 60c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 61c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber} // namespace android 62c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 63c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber#endif // INTERFACE_H_ 64c9410c7e62a33fd7599b2f3e025093a2d171577eAndreas Huber 65