// // // Copyright 2015 gRPC authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // #ifndef GRPCPP_SUPPORT_STRING_REF_H #define GRPCPP_SUPPORT_STRING_REF_H #include <string.h> #include <algorithm> #include <iosfwd> #include <iostream> #include <iterator> #include <grpcpp/support/config.h> namespace grpc { /// This class is a non owning reference to a string. /// /// It should be a strict subset of the upcoming std::string_ref. /// /// \see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3442.html /// /// The constexpr is dropped or replaced with const for legacy compiler /// compatibility. class string_ref { … }; /// Comparison operators inline bool operator==(string_ref x, string_ref y) { … } inline bool operator!=(string_ref x, string_ref y) { … } inline bool operator<(string_ref x, string_ref y) { … } inline bool operator<=(string_ref x, string_ref y) { … } inline bool operator>(string_ref x, string_ref y) { … } inline bool operator>=(string_ref x, string_ref y) { … } inline std::ostream& operator<<(std::ostream& out, const string_ref& string) { … } } // namespace grpc #endif // GRPCPP_SUPPORT_STRING_REF_H