acadia/lib/glacier/string/string_view.h

37 lines
739 B
C++

#pragma once
#include <stdint.h>
namespace glcr {
class StringView {
public:
static const uint64_t npos = -1;
StringView();
StringView(const StringView& other) = default;
StringView(const char* str);
StringView(const char* str, uint64_t count);
const char* data() const;
uint64_t size() const;
bool empty() const;
char at(uint64_t pos) const;
char operator[](uint64_t pos) const;
uint64_t find(char c, uint64_t pos = 0) const;
StringView substr(uint64_t start, uint64_t count) const;
private:
const char* value_ = nullptr;
uint64_t size_ = 0;
};
bool operator==(const StringView& str1, const StringView& str2);
bool operator!=(const StringView& str1, const StringView& str2);
} // namespace glcr