123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- // Copyright (c) 2012 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef INLINE_CTOR_H_
- #define INLINE_CTOR_H_
- #include <string>
- #include <vector>
- class InlineCtorsArentOKInHeader {
- public:
- InlineCtorsArentOKInHeader() {}
- ~InlineCtorsArentOKInHeader() {}
- private:
- std::vector<int> one_;
- std::vector<std::string> two_;
- };
- #define INLINE_CTORS_IN_A_MACRO(CLASS_NAME) \
- class CLASS_NAME { \
- public: \
- CLASS_NAME() {} \
- ~CLASS_NAME() {} \
- \
- private: \
- std::vector<int> one_; \
- std::vector<std::string> two_; \
- }
- INLINE_CTORS_IN_A_MACRO(InlineCtorsBehindAMacroArentOKInHeader);
- MACRO_FROM_CPP;
- class DeletedMembersInHeaderAreOKThough {
- public:
- DeletedMembersInHeaderAreOKThough() = delete;
- ~DeletedMembersInHeaderAreOKThough() = delete;
- DeletedMembersInHeaderAreOKThough(const DeletedMembersInHeaderAreOKThough&) =
- delete;
- private:
- std::vector<int> one_;
- std::vector<std::string> two_;
- };
- class ExplicitlyInlinedIsAlsoOK {
- ExplicitlyInlinedIsAlsoOK();
- ~ExplicitlyInlinedIsAlsoOK();
- ExplicitlyInlinedIsAlsoOK(const ExplicitlyInlinedIsAlsoOK&);
- private:
- std::vector<int> one_;
- std::vector<std::string> two_;
- };
- inline ExplicitlyInlinedIsAlsoOK::ExplicitlyInlinedIsAlsoOK() {
- }
- inline ExplicitlyInlinedIsAlsoOK::~ExplicitlyInlinedIsAlsoOK() {
- }
- inline ExplicitlyInlinedIsAlsoOK::ExplicitlyInlinedIsAlsoOK(
- const ExplicitlyInlinedIsAlsoOK&) {
- }
- struct TrivialStruct {
- int something_;
- };
- struct NonTrivialStruct {
- NonTrivialStruct();
- ~NonTrivialStruct();
- int something_;
- };
- // Plugin doesn't warn about inlining trivial member dtor calls.
- struct FourTrivialMembers {
- ~FourTrivialMembers();
- TrivialStruct a;
- TrivialStruct b;
- TrivialStruct c;
- TrivialStruct d;
- };
- // Plugin doesn't warn about inlining three ctor/dtor calls.
- struct ThreeNonTrivialMembers {
- NonTrivialStruct a;
- NonTrivialStruct b;
- NonTrivialStruct c;
- };
- // Plugin does warn about inlining four ctor/dtor calls.
- struct FourNonTrivialMembers {
- NonTrivialStruct a;
- NonTrivialStruct b;
- NonTrivialStruct c;
- NonTrivialStruct d;
- };
- #endif // INLINE_CTOR_H_
|