summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-diagnostics.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-10-22 08:46:12 -0400
committerGitHub <noreply@github.com>2020-10-22 08:46:12 -0400
commit10e1bae34733f1cdb5abc001666b1aafa1c1f406 (patch)
treead9571c071b7b7c2384cdd42426851d257fc5f7b /source/slang/slang-diagnostics.cpp
parentc0943661e5441bfb996430c4f67fb4dddea9dfcf (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.cpp53
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);