- Replace header include guards with `#pragma once` and perform minor optimizations. - Replaced traditional include guards with `#pragma once` for simplicity and to reduce boilerplate in all headers. - Improved CLI line number handling with clamping and error messaging. - Enhanced `chdir` error handling for macOS GUI builds. - Removed redundant logic for GUI builds. - Adjusted font constructor and registry to handle `const` data pointers consistently.
23 lines
715 B
C++
23 lines
715 B
C++
// OptimizedSearch.h - Boyer–Moore (bad character) based substring search
|
||
#pragma once
|
||
#include <array>
|
||
#include <cstddef>
|
||
#include <string>
|
||
#include <vector>
|
||
|
||
class OptimizedSearch {
|
||
public:
|
||
OptimizedSearch() = default;
|
||
|
||
// Find first occurrence at or after start. Returns npos if not found.
|
||
std::size_t find_first(const std::string &text, const std::string &pattern, std::size_t start = 0);
|
||
|
||
// Find all non-overlapping matches at or after start. Returns starting indices.
|
||
std::vector<std::size_t> find_all(const std::string &text, const std::string &pattern, std::size_t start = 0);
|
||
|
||
private:
|
||
std::array<int, 256> bad_char_{};
|
||
std::string last_pat_;
|
||
|
||
void build_bad_char(const std::string &pattern);
|
||
}; |