Skip to content

Commit

Permalink
updated
Browse files Browse the repository at this point in the history
  • Loading branch information
dakka committed Jun 11, 2024
1 parent c265e1c commit 18a6a32
Showing 1 changed file with 150 additions and 100 deletions.
250 changes: 150 additions & 100 deletions reference/source_location.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,52 +58,51 @@ There are seven different sets of tests for each compiler. `conjure_enum` and `c
use this information to inform the parsing algorithm that extracts the enum and type info.

---

# Compiler: Clang: Ubuntu Clang 16.0.6 (23ubuntu4)
## 1. scoped enum
```C++
static const char *conjure_enum<Type>::tpeek() [T = Type]
static const char *conjure_enum<Type>::epeek() [T = Type, e = Type::Value]
static const char *conjure_enum<Type>::epeek() [T = Type, e = (Type)100]
```c++
static const char *conjure_enum<Namespace_Enum_Type>::tpeek() [T = Namespace_Enum_Type]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = (Namespace_Enum_Type)100]
```

## 2. unscoped enum
```C++
static const char *conjure_enum<Type1>::tpeek() [T = Type1]
static const char *conjure_enum<Type1>::epeek() [T = Type1, e = Value]
static const char *conjure_enum<Type1>::epeek() [T = Type1, e = (Type1)100]
```c++
static const char *conjure_enum<Namespace_Enum_Type1>::tpeek() [T = Namespace_Enum_Type1]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = Value]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = (Namespace_Enum_Type1)100]
```

## 3. scoped enum in anonymous namespace
```C++
static const char *conjure_enum<(anonymous namespace)::Anon_Type>::tpeek() [T = (anonymous namespace)::Anon_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Type>::epeek() [T = (anonymous namespace)::Anon_Type, e = (anonymous namespace)::Anon_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Type>::epeek() [T = (anonymous namespace)::Anon_Type, e = ((anonymous namespace)::Anon_Type)100]
```c++
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = (anonymous namespace)::Anon_Enum_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = ((anonymous namespace)::Anon_Enum_Type)100]
```

## 4. unscoped enum in anonymous namespace
```C++
static const char *conjure_enum<(anonymous namespace)::Anon_Type1>::tpeek() [T = (anonymous namespace)::Anon_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Type1>::epeek() [T = (anonymous namespace)::Anon_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Type1>::epeek() [T = (anonymous namespace)::Anon_Type1, e = ((anonymous namespace)::Anon_Type1)100]
```c++
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = ((anonymous namespace)::Anon_Enum_Type1)100]
```

## 5. scoped enum in namespace
```C++
static const char *conjure_enum<Namespace::Type>::tpeek() [T = Namespace::Type]
static const char *conjure_enum<Namespace::Type>::epeek() [T = Namespace::Type, e = Namespace::Type::Value]
static const char *conjure_enum<Namespace::Type>::epeek() [T = Namespace::Type, e = (Namespace::Type)100]
```c++
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::tpeek() [T = Namespace::Namespace_Enum_Type]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = Namespace::Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = (Namespace::Namespace_Enum_Type)100]
```

## 6. unscoped enum in namespace
```C++
static const char *conjure_enum<Namespace::Type1>::tpeek() [T = Namespace::Type1]
static const char *conjure_enum<Namespace::Type1>::epeek() [T = Namespace::Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Type1>::epeek() [T = Namespace::Type1, e = (Namespace::Type1)100]
```

## 7. other type
```C++
```c++
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::tpeek() [T = Namespace::Namespace_Enum_Type1]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = (Namespace::Namespace_Enum_Type1)100]
```
## 7. types in named and anonymous namespaces
```c++
static const char *conjure_type<Foo>::tpeek() [T = Foo]
static const char *conjure_type<Namespace::Namespace_Foo>::tpeek() [T = Namespace::Namespace_Foo]
static const char *conjure_type<(anonymous namespace)::Anon_Foo>::tpeek() [T = (anonymous namespace)::Anon_Foo]
```
## 8. other types
```c++
static const char *conjure_type<int>::tpeek() [T = int]
static const char *conjure_type<std::basic_string_view<char>>::tpeek() [T = std::basic_string_view<char>]
static const char *conjure_type<std::vector<std::tuple<int, char, std::basic_string_view<char>>>>::tpeek() [T = std::vector<std::tuple<int, char, std::basic_string_view<char>>>]
Expand All @@ -112,54 +111,105 @@ static const char *conjure_type<std::vector<std::tuple<int, char, std::basic_str
---
# Compiler: GCC: 14.0.1 20240412 (experimental) [master r14-9935-g67e1433a94f]
## 1. scoped enum
```C++
static consteval const char* conjure_enum<T>::tpeek() [with T = Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Type::Value; T = Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Type)100; T = Type]
```c++
static consteval const char* conjure_enum<T>::tpeek() [with T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace_Enum_Type::Value; T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type)100; T = Namespace_Enum_Type]
```

## 2. unscoped enum
```C++
static consteval const char* conjure_enum<T>::tpeek() [with T = Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Value; T = Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Type1)100; T = Type1]
```c++
static consteval const char* conjure_enum<T>::tpeek() [with T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Value; T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type1)100; T = Namespace_Enum_Type1]
```

## 3. scoped enum in anonymous namespace
```C++
static consteval const char* conjure_enum<T>::tpeek() [with T = {anonymous}::Anon_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Anon_Type::Value; T = {anonymous}::Anon_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Type)100; T = {anonymous}::Anon_Type]
```c++
static consteval const char* conjure_enum<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Anon_Enum_Type::Value; T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type)100; T = {anonymous}::Anon_Enum_Type]
```
## 4. unscoped enum in anonymous namespace
```C++
static consteval const char* conjure_enum<T>::tpeek() [with T = {anonymous}::Anon_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Value; T = {anonymous}::Anon_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Type1)100; T = {anonymous}::Anon_Type1]
```c++
static consteval const char* conjure_enum<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Value; T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type1)100; T = {anonymous}::Anon_Enum_Type1]
```

## 5. scoped enum in namespace
```C++
static consteval const char* conjure_enum<T>::tpeek() [with T = Namespace::Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Type::Value; T = Namespace::Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Type)100; T = Namespace::Type]
```c++
static consteval const char* conjure_enum<T>::tpeek() [with T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Namespace_Enum_Type::Value; T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type)100; T = Namespace::Namespace_Enum_Type]
```

## 6. unscoped enum in namespace
```C++
static consteval const char* conjure_enum<T>::tpeek() [with T = Namespace::Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Value; T = Namespace::Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Type1)100; T = Namespace::Type1]
```

## 7. other type
```C++
```c++
static consteval const char* conjure_enum<T>::tpeek() [with T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Value; T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type1)100; T = Namespace::Namespace_Enum_Type1]
```
## 7. types in named and anonymous namespaces
```c++
static consteval const char* conjure_type<T>::tpeek() [with T = Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Foo]
```
## 8. other types
```c++
static consteval const char* conjure_type<T>::tpeek() [with T = int]
static consteval const char* conjure_type<T>::tpeek() [with T = std::basic_string_view<char>]
static consteval const char* conjure_type<T>::tpeek() [with T = std::vector<std::tuple<int, char, std::basic_string_view<char, std::char_traits<char> > > >]
```

---
# Compiler: MSVC: 1940
## 1. scoped enum
```c++
const char *__cdecl conjure_enum<enum Namespace_Enum_Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type>::epeek<Namespace_Enum_Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type>::epeek<(enum Namespace_Enum_Type)0x64>(void) noexcept
```
## 2. unscoped enum
```c++
const char *__cdecl conjure_enum<enum Namespace_Enum_Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type1>::epeek<Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type1>::epeek<(enum Namespace_Enum_Type1)0x64>(void) noexcept
```
## 3. scoped enum in anonymous namespace
```c++
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type>::epeek<`anonymous-namespace'::Anon_Enum_Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type>::epeek<(enum `anonymous-namespace'::Anon_Enum_Type)0x64>(void) noexcept
```
## 4. unscoped enum in anonymous namespace
```c++
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type1>::epeek<`anonymous-namespace'::Value>(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type1>::epeek<(enum `anonymous-namespace'::Anon_Enum_Type1)0x64>(void) noexcept
```
## 5. scoped enum in namespace
```c++
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type>::epeek<Namespace::Namespace_Enum_Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type>::epeek<(enum Namespace::Namespace_Enum_Type)0x64>(void) noexcept
```
## 6. unscoped enum in namespace
```c++
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type1>::epeek<Namespace::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type1>::epeek<(enum Namespace::Namespace_Enum_Type1)0x64>(void) noexcept
```
## 7. types in named and anonymous namespaces
```c++
const char *__cdecl conjure_type<struct Foo>::tpeek(void) noexcept
const char *__cdecl conjure_type<class Namespace::Namespace_Foo>::tpeek(void) noexcept
const char *__cdecl conjure_type<class `anonymous namespace'::Anon_Foo>::tpeek(void) noexcept
```
## 8. other types
```c++
const char *__cdecl conjure_type<int>::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::basic_string_view<char,struct std::char_traits<char> > >::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::vector<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > >,class std::allocator<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > > > > >::tpeek(void) noexcept
```

---
# Compiler: MSVC: 1939
## 1. scoped enum
Expand Down Expand Up @@ -316,49 +366,49 @@ static consteval const char* conjure_type<T>::tpeek() [with T = std::vector<std:
---
# Compiler: Clang: Ubuntu Clang 18.1.3 (1)
## 1. scoped enum
```C++
static const char *conjure_enum<Type>::tpeek() [T = Type]
static const char *conjure_enum<Type>::epeek() [T = Type, e = Type::Value]
static const char *conjure_enum<Type>::epeek() [T = Type, e = (Type)100]
```c++
static const char *conjure_enum<Namespace_Enum_Type>::tpeek() [T = Namespace_Enum_Type]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = (Namespace_Enum_Type)100]
```

## 2. unscoped enum
```C++
static const char *conjure_enum<Type1>::tpeek() [T = Type1]
static const char *conjure_enum<Type1>::epeek() [T = Type1, e = Value]
static const char *conjure_enum<Type1>::epeek() [T = Type1, e = (Type1)100]
```c++
static const char *conjure_enum<Namespace_Enum_Type1>::tpeek() [T = Namespace_Enum_Type1]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = Value]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = (Namespace_Enum_Type1)100]
```

## 3. scoped enum in anonymous namespace
```C++
static const char *conjure_enum<(anonymous namespace)::Anon_Type>::tpeek() [T = (anonymous namespace)::Anon_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Type>::epeek() [T = (anonymous namespace)::Anon_Type, e = (anonymous namespace)::Anon_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Type>::epeek() [T = (anonymous namespace)::Anon_Type, e = ((anonymous namespace)::Anon_Type)100]
```c++
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = (anonymous namespace)::Anon_Enum_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = ((anonymous namespace)::Anon_Enum_Type)100]
```

## 4. unscoped enum in anonymous namespace
```C++
static const char *conjure_enum<(anonymous namespace)::Anon_Type1>::tpeek() [T = (anonymous namespace)::Anon_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Type1>::epeek() [T = (anonymous namespace)::Anon_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Type1>::epeek() [T = (anonymous namespace)::Anon_Type1, e = ((anonymous namespace)::Anon_Type1)100]
```c++
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = ((anonymous namespace)::Anon_Enum_Type1)100]
```

## 5. scoped enum in namespace
```C++
static const char *conjure_enum<Namespace::Type>::tpeek() [T = Namespace::Type]
static const char *conjure_enum<Namespace::Type>::epeek() [T = Namespace::Type, e = Namespace::Type::Value]
static const char *conjure_enum<Namespace::Type>::epeek() [T = Namespace::Type, e = (Namespace::Type)100]
```c++
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::tpeek() [T = Namespace::Namespace_Enum_Type]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = Namespace::Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = (Namespace::Namespace_Enum_Type)100]
```

## 6. unscoped enum in namespace
```C++
static const char *conjure_enum<Namespace::Type1>::tpeek() [T = Namespace::Type1]
static const char *conjure_enum<Namespace::Type1>::epeek() [T = Namespace::Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Type1>::epeek() [T = Namespace::Type1, e = (Namespace::Type1)100]
```

## 7. other type
```C++
```c++
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::tpeek() [T = Namespace::Namespace_Enum_Type1]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = (Namespace::Namespace_Enum_Type1)100]
```
## 7. types in named and anonymous namespaces
```c++
static const char *conjure_type<Foo>::tpeek() [T = Foo]
static const char *conjure_type<Namespace::Namespace_Foo>::tpeek() [T = Namespace::Namespace_Foo]
static const char *conjure_type<(anonymous namespace)::Anon_Foo>::tpeek() [T = (anonymous namespace)::Anon_Foo]
```
## 8. other types
```c++
static const char *conjure_type<int>::tpeek() [T = int]
static const char *conjure_type<std::basic_string_view<char>>::tpeek() [T = std::basic_string_view<char>]
static const char *conjure_type<std::vector<std::tuple<int, char, std::basic_string_view<char>>>>::tpeek() [T = std::vector<std::tuple<int, char, std::basic_string_view<char>>>]
Expand Down

0 comments on commit 18a6a32

Please sign in to comment.