| /* |
| * Copyright (C) 2024 The Android Open Source Project |
| * |
| * 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. |
| */ |
| |
| #pragma once |
| |
| #include <regex.h> |
| |
| #include <memory> |
| #include <string> |
| |
| namespace android { |
| namespace os { |
| namespace statsd { |
| |
| class Regex { |
| public: |
| Regex(regex_t impl); // Do not use. It is public for std::make_unique. Use Regex::create. |
| ~Regex(); |
| Regex& operator=(const Regex&) = delete; |
| Regex(const Regex&) = delete; |
| |
| // Returns nullptr if pattern is not valid POSIX regex. |
| static std::unique_ptr<Regex> create(const std::string& pattern); |
| |
| // Looks for a regex match in str and replaces the matched portion with replacement in-place. |
| // Returns true if there was a match, false otherwise. |
| bool replace(std::string& str, const std::string& replacement); |
| |
| private: |
| regex_t mImpl; |
| }; |
| |
| } // namespace statsd |
| } // namespace os |
| } // namespace android |