//===--- WinSDK.modulemap -------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

module WinSDK [system] [extern_c] {
  module WinSock2 {
    header "WinSock2.h"
    header "WS2tcpip.h"
    export *
  }

  module core {
    // api-ms-win-core-errhandling-l1-1-0.dll
    module errhandling {
      header "errhandlingapi.h"
      export *
    }

    // api-ms-win-core-file-l1-1-0.dll
    module file {
      header "fileapi.h"
      export *
    }

    // api-ms-win-core-handle-l1-1-0.dll
    module handle {
      header "handleapi.h"
      export *
    }

    // api-ms-win-heapapi-l1-1-0.dll
    module heap {
      header "heapapi.h"
      export *
    }

    // api-ms-win-core-interlocked-l1-1-0.dll
    module interlocked {
      header "interlockedapi.h"
      export *
    }

    module iphlp {
      header "iphlpapi.h"
      export *
    }

    // api-ms-win-core-libloader-l1-1-0.dll
    module libloader {
      header "libloaderapi.h"
      export *
    }

    // api-ms-win-core-namedpipe-l1-1-2-0.dll
    module namedpipe {
      header "namedpipeapi.h"
      export *
    }

    // api-ms-win-core-Path-l1-0.dll
    module path {
      header "PathCch.h"
      export *
    }

    // api-ms-win-core-processthreads-l1-1-2.dll
    module processthreads {
      header "processthreadsapi.h"
      export *
    }

    // api-ms-win-core-synch-l1-2-0.dll
    module synch {
      header "synchapi.h"
      export *
    }

    // api-ms-win-core-sysinfo-l1-1-0.dll
    module sysinfo {
      header "sysinfoapi.h"
      export *
    }

    // api-ms-win-core-timezone-l1-1-0.dll
    module timezone {
      header "timezoneapi.h"
      export *
    }
  }

  module CommCtrl {
    header "CommCtrl.h"
    export *
  }

  // FIXME(compnerd) this is a hack for the HWND typedef for DbgHelp
  module __DirectX {
    header "directmanipulation.h"
    export *
  }

  module DbgHelp {
    header "DbgHelp.h"
    export *
  }

  module Shell {
    header "ShlObj.h"
    export *
  }

  module ShellAPI {
    header "Shlwapi.h"
    export *
  }

  module User {
    header "WinUser.h"
    export *
  }

  module WinCrypt {
    header "wincrypt.h"
    export *
  }
}

