Line  | Count  | Source  | 
1  | // Protocol Buffers - Google's data interchange format  | |
2  | // Copyright 2023 Google Inc. All rights reserved.  | |
3  | //  | |
4  | // Use of this source code is governed by a BSD-style  | |
5  | // license that can be found in the LICENSE file or at  | |
6  | // https://developers.google.com/open-source/licenses/bsd  | |
7  | #ifndef GOOGLE_PROTOBUF_INTERNAL_VISIBILITY_H__  | |
8  | #define GOOGLE_PROTOBUF_INTERNAL_VISIBILITY_H__  | |
9  | ||
10  | namespace google { | |
11  | namespace protobuf { | |
12  | ||
13  | class Arena;  | |
14  | class Message;  | |
15  | class MessageLite;  | |
16  | ||
17  | namespace internal { | |
18  | ||
19  | class InternalVisibilityForTesting;  | |
20  | class InternalMetadata;  | |
21  | ||
22  | // Empty class to use as a mandatory 'internal token' for functions that have to  | |
23  | // be public, such as arena constructors, but that are for internal use only.  | |
24  | class InternalVisibility { | |
25  | private:  | |
26  | // Note: we don't use `InternalVisibility() = default` here, but default the  | |
27  | // ctor outside of the class to force a private ctor instance.  | |
28  | explicit constexpr InternalVisibility();  | |
29  | ||
30  | friend class ::google::protobuf::Arena;  | |
31  | friend class ::google::protobuf::Message;  | |
32  | friend class ::google::protobuf::MessageLite;  | |
33  | friend class ::google::protobuf::internal::InternalMetadata;  | |
34  | ||
35  | friend class InternalVisibilityForTesting;  | |
36  | };  | |
37  | ||
38  | 157k  | inline constexpr InternalVisibility::InternalVisibility() = default;  | 
39  | ||
40  | } // namespace internal  | |
41  | } // namespace protobuf  | |
42  | } // namespace google  | |
43  | ||
44  | #endif // GOOGLE_PROTOBUF_INTERNAL_VISIBILITY_H__  |