diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-10-22 08:46:12 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-22 08:46:12 -0400 |
| commit | 10e1bae34733f1cdb5abc001666b1aafa1c1f406 (patch) | |
| tree | ad9571c071b7b7c2384cdd42426851d257fc5f7b /source/slang/slang-diagnostics.cpp | |
| parent | c0943661e5441bfb996430c4f67fb4dddea9dfcf (diff) | |
Single pass C++ extraction (#1583)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Added CharUtil.
Added TypeSet to extractor.
First pass at being able to specify all headers for multiple output headers.
* Fix includes for new C++ extractor convension.
Update premake5 to use new extractor mechanisms.
* Small improvements around StringUtil.
* Split out NameConventionUtil.
* Use a 'convert' to convert between convention types.
* Fix output of build message for C++ extractor.
Improve NameConventionUtil interface.
* Improve comments.
* Fix warning on gcc.
* Fix clang warning.
* Fix some typos in NameConventionUtil.
* Small fix to premake5.lua
* Fix generated includes.
* Remove m_reflectType as no longer applicable with TypeSet.
* Fix .gitignore for slang-generated-* files.
Added getConvention to determine convention from slice.
Add versions of split and convert that infer the from convention
* Fix typo in spliting camel.
* LineWhitespace -> HorizontalWhitespace
* Improve CharUtil comments.
Diffstat (limited to 'source/slang/slang-diagnostics.cpp')
| -rw-r--r-- | source/slang/slang-diagnostics.cpp | 53 |
1 files changed, 6 insertions, 47 deletions
diff --git a/source/slang/slang-diagnostics.cpp b/source/slang/slang-diagnostics.cpp index d16e8e84e..c3b7e27a2 100644 --- a/source/slang/slang-diagnostics.cpp +++ b/source/slang/slang-diagnostics.cpp @@ -5,6 +5,8 @@ #include "../core/slang-memory-arena.h" #include "../core/slang-dictionary.h" +#include "../core/slang-string-util.h" +#include "../core/slang-name-convention-util.h" #include <assert.h> @@ -302,60 +304,17 @@ public: return singleton; } - typedef uint8_t CharFlags; - struct CharFlag - { - enum Enum : CharFlags - { - Upper = 0x1, - Lower = 0x2, - }; - }; - - static CharFlags _classifyChar(char c) - { - CharFlags flags = 0; - flags |= (c >= 'a' && c <= 'z') ? CharFlag::Lower : 0; - flags |= (c >= 'A' && c <= 'Z') ? CharFlag::Upper : 0; - return flags; - } protected: void _add(const char* name, Index index) { - m_map.Add(UnownedStringSlice(name), index); + UnownedStringSlice nameSlice(name); + m_map.Add(nameSlice, index); - // Add a dashed version + // Add a dashed version (KababCase) { m_work.Clear(); - CharFlags prevFlags = 0; - for (const char* cur = name; *cur; cur++) - { - char c = *cur; - const CharFlags flags = _classifyChar(c); - - if (flags & CharFlag::Upper) - { - if (prevFlags & CharFlag::Lower) - { - // If we go from lower to upper, insert a dash. aA -> a-a - m_work << '-'; - } - else if (prevFlags & CharFlag::Upper) - { - // Could be an acronym, if the next character is lower, we need to insert a - here - if (_classifyChar(cur[1]) & CharFlag::Lower) - { - m_work << '-'; - } - } - // Make it lower - c = c - 'A' + 'a'; - } - m_work << c; - - prevFlags = flags; - } + NameConventionUtil::convert(NameConvention::Camel, nameSlice, CharCase::Lower, NameConvention::Kabab, m_work); UnownedStringSlice dashSlice(m_arena.allocateString(m_work.getBuffer(), m_work.getLength()), m_work.getLength()); m_map.AddIfNotExists(dashSlice, index); |
