MCPcopy Create free account
hub / github.com/carbonengine/trinity / ParseString

Function ParseString

shadercompiler/ParserUtils.cpp:73–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71}
72
73std::string ParseString( const InlineString& string )
74{
75 if( string.start == nullptr )
76 {
77 return "";
78 }
79 std::string result;
80 result.reserve( string.end - string.start );
81 for( const char* c = string.start + 1; c + 1 < string.end; ++c )
82 {
83 if( *c == '\\' )
84 {
85 switch( c[1] )
86 {
87 case 'a':
88 result.append( 1, '\a' );
89 break;
90 case 'b':
91 result.append( 1, '\b' );
92 break;
93 case 'f':
94 result.append( 1, '\f' );
95 break;
96 case 'n':
97 result.append( 1, '\n' );
98 break;
99 case 'r':
100 result.append( 1, '\r' );
101 break;
102 case 't':
103 result.append( 1, '\t' );
104 break;
105 case 'v':
106 result.append( 1, '\v' );
107 break;
108 case '0':
109 case '1':
110 case '2':
111 case '3':
112 case '4':
113 case '5':
114 case '6':
115 case '7': {
116 long code = ParseNumber( c, string.end, 8 );
117 result.append( 1, static_cast<unsigned char>( code ) );
118 }
119 break;
120 case 'x':
121 case 'X':
122 if( isxdigit( c[2] ) )
123 {
124 long code = ParseNumber( c, string.end, 16 );
125 result.append( 1, static_cast<unsigned char>( code ) );
126 }
127 default:
128 result.append( 1, c[1] );
129 }
130 c++;

Calls 1

ParseNumberFunction · 0.85

Tested by

no test coverage detected