Skip to content

Cross-platform library that generalizes functionality that requires platform-specific code, such as displaying message boxes, interrogating hardware capabilities, locating special folders and advanced task/resource coordination.

License

Notifications You must be signed in to change notification settings

nuclex-shared-cpp/Nuclex.Platform.Native

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  • Status: Early development. Most of the planned features do not work, including message boxes, the task coordinator and half of the hardware info.

  • Platforms: Cross-platform, developed on Linux, will eventually receive testing on Windows.

Nuclex.Platform.Native

This library provides you with basic tools to make use of the resources provided by any platform. This includes identifying the system's hardware, displaying notifications to the user and running tasks while managing available resources between them.

Hardware

  • Determine number of CPUs, cores and threads, names and frequency
  • Get amount of installed memory, available and maximum per-process memory
  • Enumerate connected hard drives, their partitions and file systems
  • Find out what GPUs the system has, their Vulkan support and memory

Interaction

  • Display message boxes to the user, using native operating system dialogs
  • Ask the user to make choices, using extended dialogs provided by the OS
  • Let the user pick a file or a folder

Tasks

  • Distribute work over any number of CPU cores
  • Run resource-intensive tasks in a controlled fashion within resource limits
  • Cancel background tasks in a unified way

Everything:

  • Supports Windows, Linux and ARM Linux (Raspberry PI)
  • Compiles cleanly at maximum warning levels with MSVC, GCC and clang
  • If it's there, it's unit-tested

PlatformAppraiser

Planning...

vector<CpuInfo>
  + ModelName
  + CoreCount
  + EcoCoreCount
  + ThreadCount
  + vector<CoreInfo> Cores
    + FrequencyInMhz
    + IsEcoCore
    + ThreadCount
MemoryInfo
  + InstalledMegabytes
  + MaximumProgramMegabytes
vector<DriveInfo>
  + ManfacturerName
  + ModelName
  + CapacityInMegabytes
  + IsSolidState
  + vector<PartitionInfo> Partitions
    + MountPath
    + Label
    + CapacityInMegabytes
    + FileSystemName

About

Cross-platform library that generalizes functionality that requires platform-specific code, such as displaying message boxes, interrogating hardware capabilities, locating special folders and advanced task/resource coordination.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages