// Copyright 2018 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +build purego appengine package fileinit import pref "github.com/golang/protobuf/v2/reflect/protoreflect" func getNameBuilder() *nameBuilder { return nil } func putNameBuilder(*nameBuilder) {} type nameBuilder struct{} // AppendFullName is equivalent to protoreflect.FullName.Append. func (*nameBuilder) AppendFullName(prefix pref.FullName, name []byte) fullName { return fullName{ shortLen: len(name), fullName: prefix.Append(pref.Name(name)), } } // MakeString is equivalent to string(b), but optimized for large batches // with a shared lifetime. func (*nameBuilder) MakeString(b []byte) string { return string(b) } // MakeJSONName creates a JSON name from the protobuf short name. func (*nameBuilder) MakeJSONName(s pref.Name) string { var b []byte var wasUnderscore bool for i := 0; i < len(s); i++ { // proto identifiers are always ASCII c := s[i] if c != '_' { isLower := 'a' <= c && c <= 'z' if wasUnderscore && isLower { c -= 'a' - 'A' } b = append(b, c) } wasUnderscore = c == '_' } return string(b) }