<commit_before>/// IMPORTANT: This file is automatically generated.
#if SWIFT_PACKAGE
  import cclang
#endif

/// MARK: Customized Types

internal protocol FunctionLikeDecl: ClangCursorBacked {}

public struct FunctionDecl: ClangCursorBacked {
  let clang: CXCursor
  
  init(clang: CXCursor) {
    self.clang = clang
  }
  
  /// Retrieve the argument cursor of a function or method.
  /// The argument cursor can be determined for calls as well as for
  /// declarations of functions or methods.
  public func parameter(at index: Int) -> Cursor? {
    return convertCursor(clang_Cursor_getArgument(clang, UInt32(index)))
  }
  
  /// Retrieve the return type of the function.
  public var resultType: CType? {
    return convertType(clang_getCursorResultType(clang))
  }
}

protocol MethodDecl: ClangCursorBacked {}
extension MethodDecl {
  
  /// Determine the set of methods that are overridden by the given method.
  /// In both Objective-C and C++, a method (aka virtual member function, in
  /// C++) can override a virtual method in a base class. For Objective-C, a
  /// method is said to override any method in the class's base class, its
  /// protocols, or its categories' protocols, that has the same selector and
  /// is of the same kind (class or instance). If no such method exists, the
  /// search continues to the class's superclass, its protocols, and its
  /// categories, and so on. A method from an Objective-C implementation is
  /// considered to override the same methods as its corresponding method in
  /// the interface.
  ///
  /// For C++, a virtual member function overrides any virtual member function
  /// with the same signature that occurs in its base classes. With multiple
  /// inheritance, a virtual member function can override several virtual
  /// member functions coming from different base classes.
  ///
  /// In all cases, this will return the immediate overridden method,
  /// rather than all of the overridden methods. For example, if a method is
  /// originally declared in a class A, then overridden in B (which in
  /// inherits from A) and also in C (which inherited from B), then the only
  /// overridden method returned from this function when invoked on C's method<commit_msg>Adds numArguments and  isInlined for FunctionDecl (#15)<commit_after>/// IMPORTANT: This file is automatically generated.
#if SWIFT_PACKAGE
  import cclang
#endif

/// MARK: Customized Types

internal protocol FunctionLikeDecl: ClangCursorBacked {}

public struct FunctionDecl: ClangCursorBacked {
  let clang: CXCursor
  
  init(clang: CXCursor) {
    self.clang = clang
  }

  /// Retrieve the number of arguments of the function.
  public var argumentCount: Int {
    return Int(clang_Cursor_getNumArguments(clang))
  }
  
  /// Retrieve the argument cursor of a function or method.
  /// The argument cursor can be determined for calls as well as for
  /// declarations of functions or methods.
  public func parameter(at index: Int) -> Cursor? {
    return convertCursor(clang_Cursor_getArgument(clang, UInt32(index)))
  }
  
  /// Retrieve the return type of the function.
  public var resultType: CType? {
    return convertType(clang_getCursorResultType(clang))
  }

  /// Tells if the function declaration is inlined.
  public var isInlined: Bool {
    return clang_Cursor_isFunctionInlined(clang) != 0
  }
}

protocol MethodDecl: ClangCursorBacked {}
extension MethodDecl {
  
  /// Determine the set of methods that are overridden by the given method.
  /// In both Objective-C and C++, a method (aka virtual member function, in
  /// C++) can override a virtual method in a base class. For Objective-C, a
  /// method is said to override any method in the class's base class, its
  /// protocols, or its categories' protocols, that has the same selector and
  /// is of the same kind (class or instance). If no such method exists, the
  /// search continues to the class's superclass, its protocols, and its
  /// categories, and so on. A method from an Objective-C implementation is
  /// considered to override the same methods as its corresponding method in
  /// the interface.
  ///
  /// For C++, a virtual member function overrides any virtual member function
  /// with the same signature that occurs in its base classes. With multiple
  /// inheritance, a virtual member function can override several virtual
  /// member functions coming from different base classes.
  ///
  /// In all cases, this will return the immediate overridden method,
  /// rather than all of the overridden methods. For example, if a method is
  /// originally declared in a class A, then overridden in B (which in
  /// inherits from A) and also in C (which inherited from B), then the only
  /// overridden method returned from this function when invoked on C's method
{'fraction_non_alphanumeric': 0.07970863683662852, 'fraction_numerical': 0.0014568158168574402, 'mean_word_length': 3.3103139013452916, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6689204', 'n_tokens_mistral': 1297, 'n_tokens_neox': 1243, 'n_words': 615}