• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2023 Google LLC.  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 
8 #include "upb_generator/minitable/names.h"
9 
10 #include <string>
11 
12 #include "absl/strings/str_replace.h"
13 #include "absl/strings/string_view.h"
14 #include "upb_generator/minitable/names_internal.h"
15 
16 namespace upb {
17 namespace generator {
18 
19 namespace {
20 
ToCIdent(absl::string_view str)21 std::string ToCIdent(absl::string_view str) {
22   return absl::StrReplaceAll(str, {{".", "_"}, {"/", "_"}, {"-", "_"}});
23 }
24 
MangleName(absl::string_view name)25 std::string MangleName(absl::string_view name) {
26   return absl::StrReplaceAll(name, {{"_", "_0"}, {".", "__"}});
27 }
28 
29 }  // namespace
30 
MiniTableHeaderFilename(absl::string_view proto_filename)31 std::string MiniTableHeaderFilename(absl::string_view proto_filename) {
32   return MiniTableHeaderFilename(proto_filename, false);
33 }
34 
MiniTableMessageVarName(absl::string_view full_name)35 std::string MiniTableMessageVarName(absl::string_view full_name) {
36   return MangleName(full_name) + "_msg_init";
37 }
38 
MiniTableMessagePtrVarName(absl::string_view full_name)39 std::string MiniTableMessagePtrVarName(absl::string_view full_name) {
40   return MiniTableMessageVarName(full_name) + "_ptr";
41 }
42 
MiniTableEnumVarName(absl::string_view full_name)43 std::string MiniTableEnumVarName(absl::string_view full_name) {
44   return MangleName(full_name) + "_enum_init";
45 }
46 
MiniTableExtensionVarName(absl::string_view full_name)47 std::string MiniTableExtensionVarName(absl::string_view full_name) {
48   return ToCIdent(full_name) + "_ext";
49 }
50 
MiniTableFileVarName(absl::string_view proto_filename)51 std::string MiniTableFileVarName(absl::string_view proto_filename) {
52   return ToCIdent(proto_filename) + "_upb_file_layout";
53 }
54 
55 }  // namespace generator
56 }  // namespace upb
57