| 
    FE 0.6.0
    
   A header-only C++ library for writing frontends 
   | 
 
A Symbol just wraps a pointer to Sym::String, so pass Sym itself around as value. More...
#include <fe/sym.h>
Classes | |
| struct | Eq | 
| struct | Hash | 
| struct | String | 
Public Member Functions | |
| constexpr | Sym () noexcept=default | 
Getters  | |
| constexpr bool | empty () const noexcept | 
| constexpr size_t | size () const noexcept | 
Access  | |
| constexpr char | operator[] (size_t i) const noexcept | 
| constexpr char | front () const noexcept | 
| constexpr char | back () const noexcept | 
Iterators  | |
| constexpr auto | begin () const noexcept | 
| constexpr auto | end () const noexcept | 
| constexpr auto | cbegin () const noexcept | 
| constexpr auto | cend () const noexcept | 
| constexpr auto | rbegin () const noexcept | 
| constexpr auto | rend () const noexcept | 
| constexpr auto | crbegin () const noexcept | 
| constexpr auto | crend () const noexcept | 
Conversions  | |
| constexpr const char * | c_str () const noexcept | 
| constexpr std::string_view | view () const noexcept | 
| constexpr | operator std::string_view () const noexcept | 
| constexpr std::string_view | operator* () const noexcept | 
| constexpr std::string | str () const noexcept | 
| This involves a copy.   | |
| constexpr | operator std::string () const noexcept | 
explicit as this involves a copy.   | |
| constexpr | operator bool () const noexcept | 
| Is not empty?   | |
Static Public Attributes | |
| static constexpr size_t | Short_String_Bytes = sizeof(uintptr_t) | 
| static constexpr size_t | Short_String_Mask = Short_String_Bytes - 1 | 
Friends | |
| struct | ::std::hash< fe::Sym > | 
| class | SymPool | 
| std::ostream & | operator<< (std::ostream &o, Sym sym) | 
Comparison: Sym w/ Sym  | |
| constexpr auto | operator<=> (Sym s1, Sym s2) noexcept | 
| constexpr bool | operator== (Sym s1, Sym s2) noexcept | 
Comparison: Sym w/ char  | |
| constexpr std::strong_ordering | operator<=> (Sym s, char c) noexcept | 
| constexpr std::strong_ordering | operator<=> (char c, Sym s) noexcept | 
| constexpr bool | operator== (Sym s, char c) noexcept | 
| constexpr bool | operator== (char c, Sym s) noexcept | 
Comparison: Sym w/ convertible to std::string_view  | |
| template<typename T >  requires std::is_convertible_v<T, std::string_view>  | |
| constexpr auto | operator<=> (Sym lhs, const T &rhs) noexcept | 
| template<typename T >  requires std::is_convertible_v<T, std::string_view>  | |
| constexpr auto | operator<=> (const T &lhs, Sym rhs) noexcept | 
| template<typename T >  requires std::is_convertible_v<T, std::string_view>  | |
| constexpr bool | operator== (Sym lhs, const T &rhs) noexcept | 
| template<typename T >  requires std::is_convertible_v<T, std::string_view>  | |
| constexpr bool | operator== (const T &lhs, Sym rhs) noexcept | 
A Symbol just wraps a pointer to Sym::String, so pass Sym itself around as value.
Sym is compatible with:
std::string_view (via Sym::view)This means that retrieving a std::string_view or a null-terminated C-string is basically free. You can also obtain a std::string (via Sym::str), but this involves a copy. With the exception of the empty string, you should only create Symbols via SymPool::sym. This in turn will toss all Symbols into a big hash set. This makes Sym::operator== and Sym::operator!= an O(1) operation. The empty string is internally handled as nullptr. Thus, you can create a Symbol representing an empty string without having access to the SymPool. 
std::string/std::string_view, nullptr, and "\0" are all identified as Sym::Sym(). 
      
  | 
  constexprdefaultnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlinenodiscardconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlinenodiscardconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineexplicitconstexprnoexcept | 
      
  | 
  inlineexplicitconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlineconstexprnoexcept | 
      
  | 
  inlinenodiscardconstexprnoexcept | 
Definition at line 84 of file sym.h.
References empty(), Short_String_Mask, and size().
Referenced by back(), end(), operator[](), size(), and view().
      
  | 
  inlineconstexprnoexcept | 
This involves a copy.
Definition at line 171 of file sym.h.
References view().
Referenced by operator std::string().
      
  | 
  inlinenodiscardconstexprnoexcept | 
Definition at line 157 of file sym.h.
References empty(), Short_String_Mask, and size().
Referenced by c_str(), operator std::string_view(), operator*(), and str().
      
  | 
  friend | 
      
  | 
  friend | 
      
  | 
  friend | 
      
  | 
  friend | 
      
  | 
  friend | 
      
  | 
  staticconstexpr | 
Definition at line 38 of file sym.h.
Referenced by fe::SymPool::sym().
      
  | 
  staticconstexpr |