@@ -751,7 +751,7 @@ private void VisitCXXOperatorCallExpr(CXXOperatorCallExpr cxxOperatorCallExpr)
751
751
{
752
752
Visit ( args [ 0 ] ) ;
753
753
outputBuilder . Write ( ' ' ) ;
754
- outputBuilder . Write ( functionDeclName [ 8 ..] ) ;
754
+ outputBuilder . Write ( functionDeclName . AsSpan ( ) [ 8 ..] ) ;
755
755
outputBuilder . Write ( ' ' ) ;
756
756
Visit ( args [ 1 ] ) ;
757
757
StopCSharpCode ( ) ;
@@ -760,7 +760,7 @@ private void VisitCXXOperatorCallExpr(CXXOperatorCallExpr cxxOperatorCallExpr)
760
760
761
761
case "operator~" :
762
762
{
763
- outputBuilder . Write ( functionDeclName [ 8 ..] ) ;
763
+ outputBuilder . Write ( functionDeclName . AsSpan ( ) [ 8 ..] ) ;
764
764
Visit ( args [ 0 ] ) ;
765
765
StopCSharpCode ( ) ;
766
766
return ;
@@ -1108,7 +1108,7 @@ private void VisitFloatingLiteral(FloatingLiteral floatingLiteral)
1108
1108
var outputBuilder = StartCSharpCode ( ) ;
1109
1109
if ( floatingLiteral . ValueString . EndsWith ( ".f" , StringComparison . Ordinal ) )
1110
1110
{
1111
- outputBuilder . Write ( floatingLiteral . ValueString [ 0 ..^ 1 ] ) ;
1111
+ outputBuilder . Write ( floatingLiteral . ValueString . AsSpan ( ) [ ..^ 1 ] ) ;
1112
1112
outputBuilder . Write ( "0f" ) ;
1113
1113
}
1114
1114
else
@@ -1901,67 +1901,76 @@ void HandleUnmanagedConstant(CSharpOutputBuilder outputBuilder, InitListExpr ini
1901
1901
1902
1902
private void VisitIntegerLiteral ( IntegerLiteral integerLiteral )
1903
1903
{
1904
- var valueString = integerLiteral . ValueString ;
1904
+ var valueString = integerLiteral . ValueString . AsSpan ( ) ;
1905
+ var valueSuffix = "" ;
1905
1906
1906
1907
if ( valueString . EndsWith ( "ui8" , StringComparison . OrdinalIgnoreCase ) )
1907
1908
{
1908
- valueString = valueString [ 0 ..^ 3 ] ;
1909
+ valueString = valueString [ ..^ 3 ] ;
1909
1910
}
1910
1911
else if ( valueString . EndsWith ( "i8" , StringComparison . OrdinalIgnoreCase ) )
1911
1912
{
1912
- valueString = valueString [ 0 ..^ 2 ] ;
1913
+ valueString = valueString [ ..^ 2 ] ;
1913
1914
}
1914
1915
else if ( valueString . EndsWith ( "ui16" , StringComparison . OrdinalIgnoreCase ) )
1915
1916
{
1916
- valueString = valueString [ 0 ..^ 4 ] ;
1917
+ valueString = valueString [ ..^ 4 ] ;
1917
1918
}
1918
1919
else if ( valueString . EndsWith ( "i16" , StringComparison . OrdinalIgnoreCase ) )
1919
1920
{
1920
- valueString = valueString [ 0 ..^ 3 ] ;
1921
+ valueString = valueString [ ..^ 3 ] ;
1921
1922
}
1922
1923
else if ( valueString . EndsWith ( "ui32" , StringComparison . OrdinalIgnoreCase ) )
1923
1924
{
1924
- valueString = valueString [ 0 ..^ 4 ] + "U" ;
1925
+ valueString = valueString [ ..^ 4 ] ;
1926
+ valueSuffix = "U" ;
1925
1927
}
1926
1928
else if ( valueString . EndsWith ( "i32" , StringComparison . OrdinalIgnoreCase ) )
1927
1929
{
1928
- valueString = valueString [ 0 ..^ 3 ] ;
1930
+ valueString = valueString [ ..^ 3 ] ;
1929
1931
}
1930
1932
else if ( valueString . EndsWith ( "ui64" , StringComparison . OrdinalIgnoreCase ) )
1931
1933
{
1932
- valueString = valueString [ 0 ..^ 4 ] + "UL" ;
1934
+ valueString = valueString [ ..^ 4 ] ;
1935
+ valueSuffix = "UL" ;
1933
1936
}
1934
1937
else if ( valueString . EndsWith ( "i64" , StringComparison . OrdinalIgnoreCase ) )
1935
1938
{
1936
- valueString = valueString [ 0 ..^ 3 ] + "L" ;
1939
+ valueString = valueString [ ..^ 3 ] ;
1940
+ valueSuffix = "L" ;
1937
1941
}
1938
1942
else if (
1939
1943
valueString . EndsWith ( "ull" , StringComparison . OrdinalIgnoreCase ) ||
1940
1944
valueString . EndsWith ( "llu" , StringComparison . OrdinalIgnoreCase ) )
1941
1945
{
1942
- valueString = valueString [ 0 ..^ 3 ] + "UL" ;
1946
+ valueString = valueString [ ..^ 3 ] ;
1947
+ valueSuffix = "UL" ;
1943
1948
}
1944
1949
else if ( valueString . EndsWith ( "ll" , StringComparison . OrdinalIgnoreCase ) )
1945
1950
{
1946
- valueString = valueString [ 0 ..^ 2 ] + "L" ;
1951
+ valueString = valueString [ ..^ 2 ] ;
1952
+ valueSuffix = "L" ;
1947
1953
}
1948
1954
else if (
1949
1955
valueString . EndsWith ( "ul" , StringComparison . OrdinalIgnoreCase ) ||
1950
1956
valueString . EndsWith ( "lu" , StringComparison . OrdinalIgnoreCase ) )
1951
1957
{
1952
- valueString = valueString [ 0 ..^ 2 ] + "U" ;
1958
+ valueString = valueString [ ..^ 2 ] ;
1959
+ valueSuffix = "U" ;
1953
1960
}
1954
1961
else if ( valueString . EndsWith ( 'u' ) || valueString . EndsWith ( 'U' ) )
1955
1962
{
1956
- valueString = valueString [ 0 ..^ 1 ] + "U" ;
1963
+ valueString = valueString [ ..^ 1 ] ;
1964
+ valueSuffix = "U" ;
1957
1965
}
1958
1966
else if ( valueString . EndsWith ( 'l' ) || valueString . EndsWith ( 'L' ) )
1959
1967
{
1960
- valueString = valueString [ 0 ..^ 1 ] ;
1968
+ valueString = valueString [ ..^ 1 ] ;
1961
1969
}
1962
1970
1963
1971
var outputBuilder = StartCSharpCode ( ) ;
1964
1972
outputBuilder . Write ( valueString ) ;
1973
+ outputBuilder . Write ( valueSuffix ) ;
1965
1974
StopCSharpCode ( ) ;
1966
1975
}
1967
1976
@@ -2944,12 +2953,12 @@ private void VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr unaryExprOrT
2944
2953
{
2945
2954
if ( ( parentType . Handle . SizeOf == 8 ) && IsPrevContextDecl < VarDecl > ( out var varDecl , out _ ) )
2946
2955
{
2947
- var cursorName = GetCursorName ( varDecl ) ;
2956
+ var cursorName = GetCursorName ( varDecl ) . AsSpan ( ) ;
2948
2957
2949
2958
if ( cursorName . StartsWith ( "ClangSharpMacro_" , StringComparison . Ordinal ) )
2950
2959
{
2951
2960
cursorName = cursorName [ "ClangSharpMacro_" . Length ..] ;
2952
- parentTypeIsVariableSized |= _config . WithTypes . TryGetValue ( cursorName , out var remappedTypeName ) && ( remappedTypeName . Equals ( "int" , StringComparison . Ordinal ) || remappedTypeName . Equals ( "uint" , StringComparison . Ordinal ) ) ;
2961
+ parentTypeIsVariableSized |= _config . _withTypes . GetAlternateLookup < ReadOnlySpan < char > > ( ) . TryGetValue ( cursorName , out var remappedTypeName ) && ( remappedTypeName . Equals ( "int" , StringComparison . Ordinal ) || remappedTypeName . Equals ( "uint" , StringComparison . Ordinal ) ) ;
2953
2962
}
2954
2963
}
2955
2964
0 commit comments