0001    //
0002    //  ObjCDeclarationKind.swift
0003    //  SourceKitten
0004    //
0005    //  Created by JP Simard on 7/15/15.
0006    //  Copyright © 2015 SourceKitten. All rights reserved.
0007    //
0008    
0009    #if SWIFT_PACKAGE
0010    import Clang_C
0011    #endif
0012    
0013    /**
0014    Objective-C declaration kinds.
0015    More or less equivalent to `SwiftDeclarationKind`, but with made up values because there's no such
0016    thing as SourceKit for Objective-C.
0017    */
0018    public enum ObjCDeclarationKind
Clang+SourceKitten.swift:77
    func objCKind() -> ObjCDeclarationKind {
Clang+SourceKitten.swift:78
        return ObjCDeclarationKind.fromClang(kind)
ObjCDeclarationKind.swift:54
    public static func fromClang(kind: CXCursorKind) -> ObjCDeclarationKind {
SourceDeclaration.swift:33
    let type: ObjCDeclarationKind
: String { 0019 /// `category`. 0020 case Category
Clang+SourceKitten.swift:97
        } else if let usrNSString = usr() as NSString? where type == .Category {
ObjCDeclarationKind.swift:56
        case CXCursor_ObjCCategoryDecl.rawValue: return .Category
= "sourcekitten.source.lang.objc.decl.category" 0021 /// `class`. 0022 case Class
ObjCDeclarationKind.swift:57
        case CXCursor_ObjCInterfaceDecl.rawValue: return .Class
= "sourcekitten.source.lang.objc.decl.class" 0023 /// `constant`. 0024 case Constant
ObjCDeclarationKind.swift:65
        case CXCursor_VarDecl.rawValue: return .Constant
= "sourcekitten.source.lang.objc.decl.constant" 0025 /// `enum`. 0026 case Enum
Clang+SourceKitten.swift:90
        if let usrString = usr() where spelling.isEmpty && type == .Enum {
ObjCDeclarationKind.swift:58
        case CXCursor_EnumDecl.rawValue: return .Enum
= "sourcekitten.source.lang.objc.decl.enum" 0027 /// `enumcase`. 0028 case Enumcase
ObjCDeclarationKind.swift:59
        case CXCursor_EnumConstantDecl.rawValue: return .Enumcase
= "sourcekitten.source.lang.objc.decl.enumcase" 0029 /// `initializer`. 0030 case Initializer = "sourcekitten.source.lang.objc.decl.initializer" 0031 /// `method.class`. 0032 case MethodClass
Clang+SourceKitten.swift:111
        } else if type == .MethodClass {
ObjCDeclarationKind.swift:60
        case CXCursor_ObjCClassMethodDecl.rawValue: return .MethodClass
= "sourcekitten.source.lang.objc.decl.method.class" 0033 /// `method.instance`. 0034 case MethodInstance
Clang+SourceKitten.swift:109
        } else if type == .MethodInstance {
ObjCDeclarationKind.swift:61
        case CXCursor_ObjCInstanceMethodDecl.rawValue: return .MethodInstance
= "sourcekitten.source.lang.objc.decl.method.instance" 0035 /// `property`. 0036 case Property
ObjCDeclarationKind.swift:62
        case CXCursor_ObjCPropertyDecl.rawValue: return .Property
SourceDeclaration.swift:63
        assert(type == .Property)
SourceDeclaration.swift:109
            $0.type == .Property
= "sourcekitten.source.lang.objc.decl.property" 0037 /// `protocol`. 0038 case `Protocol`
ObjCDeclarationKind.swift:63
        case CXCursor_ObjCProtocolDecl.rawValue: return .Protocol
= "sourcekitten.source.lang.objc.decl.protocol" 0039 /// `typedef`. 0040 case Typedef
ObjCDeclarationKind.swift:64
        case CXCursor_TypedefDecl.rawValue: return .Typedef
= "sourcekitten.source.lang.objc.decl.typedef" 0041 /// `function`. 0042 case Function
ObjCDeclarationKind.swift:66
        case CXCursor_FunctionDecl.rawValue: return .Function
= "sourcekitten.source.lang.objc.decl.function" 0043 /// `mark`. 0044 case Mark
String+SourceKitten.swift:417
            return SourceDeclaration(type: .Mark, location: location, extent: (location, location), name: markString,
= "sourcekitten.source.lang.objc.mark" 0045 /// `struct` 0046 case Struct
ObjCDeclarationKind.swift:67
        case CXCursor_StructDecl.rawValue: return .Struct
= "sourcekitten.source.lang.objc.decl.struct" 0047 /// `field` 0048 case Field
ObjCDeclarationKind.swift:68
        case CXCursor_FieldDecl.rawValue: return .Field
= "sourcekitten.source.lang.objc.decl.field" 0049 /// `ivar` 0050 case Ivar
ObjCDeclarationKind.swift:69
        case CXCursor_ObjCIvarDecl.rawValue: return .Ivar
= "sourcekitten.source.lang.objc.decl.ivar" 0051 /// `ModuleImport` 0052 case ModuleImport
ObjCDeclarationKind.swift:70
        case CXCursor_ModuleImportDecl.rawValue: return .ModuleImport
= "sourcekitten.source.lang.objc.module.import" 0053 0054 public static func fromClang
Clang+SourceKitten.swift:78
        return ObjCDeclarationKind.fromClang(kind)
(kind: CXCursorKind) -> ObjCDeclarationKind { 0055 switch kind.rawValue { 0056 case CXCursor_ObjCCategoryDecl.rawValue: return .Category 0057 case CXCursor_ObjCInterfaceDecl.rawValue: return .Class 0058 case CXCursor_EnumDecl.rawValue: return .Enum 0059 case CXCursor_EnumConstantDecl.rawValue: return .Enumcase 0060 case CXCursor_ObjCClassMethodDecl.rawValue: return .MethodClass 0061 case CXCursor_ObjCInstanceMethodDecl.rawValue: return .MethodInstance 0062 case CXCursor_ObjCPropertyDecl.rawValue: return .Property 0063 case CXCursor_ObjCProtocolDecl.rawValue: return .Protocol 0064 case CXCursor_TypedefDecl.rawValue: return .Typedef 0065 case CXCursor_VarDecl.rawValue: return .Constant 0066 case CXCursor_FunctionDecl.rawValue: return .Function 0067 case CXCursor_StructDecl.rawValue: return .Struct 0068 case CXCursor_FieldDecl.rawValue: return .Field 0069 case CXCursor_ObjCIvarDecl.rawValue: return .Ivar 0070 case CXCursor_ModuleImportDecl.rawValue: return .ModuleImport 0071 default: fatalError("Unsupported CXCursorKind: \(clang_getCursorKindSpelling(kind))") 0072 } 0073 } 0074 } 0075