private string GetAnonymousName(NamedDecl namedDecl, string kind) { namedDecl.Location.GetFileLocation(out var file, out var line, out var column, out _); var fileName = Path.GetFileNameWithoutExtension(file.Name.ToString()); return($"__Anonymous{kind}_{fileName}_L{line}_C{column}"); }
private string GetCursorName(NamedDecl namedDecl) { var name = namedDecl.Name; if (string.IsNullOrWhiteSpace(name)) { if (namedDecl is TypeDecl typeDecl) { if ((typeDecl is TagDecl tagDecl) && tagDecl.Handle.IsAnonymous) { name = GetAnonymousName(tagDecl, tagDecl.TypeForDecl.KindSpelling); if (!_config.RemappedNames.ContainsKey(name)) { AddDiagnostic(DiagnosticLevel.Info, $"Anonymous declaration found in '{nameof(GetCursorName)}'. Falling back to '{name}'.", namedDecl); } } else { name = GetTypeName(namedDecl, typeDecl.TypeForDecl, out var nativeTypeName); Debug.Assert(string.IsNullOrWhiteSpace(nativeTypeName)); } } else if (namedDecl is ParmVarDecl) { name = "param"; } else { AddDiagnostic(DiagnosticLevel.Error, $"Unsupported anonymous named declaration: '{namedDecl.Kind}'.", namedDecl); } }
private string GetAccessSpecifierName(NamedDecl namedDecl) { string name; switch (namedDecl.Access) { case CX_CXXAccessSpecifier.CX_CXXInvalidAccessSpecifier: { // Top level declarations will have an invalid access specifier name = "public"; break; } case CX_CXXAccessSpecifier.CX_CXXPublic: { name = "public"; break; } case CX_CXXAccessSpecifier.CX_CXXProtected: { name = "protected"; break; } case CX_CXXAccessSpecifier.CX_CXXPrivate: { name = "private"; break; } default: { name = "internal"; AddDiagnostic(DiagnosticLevel.Warning, $"Unknown access specifier: '{namedDecl.Access}'. Falling back to '{name}'.", namedDecl); break; } } return(name); }