# Platform API The Platform API is designed to allow easy porting of the Open Screen Library between platforms. This folder contains classes and logic used by Open Screen to access system resources and other common OS-level facilities, such as the clock and task runner. Note: utilities are generally not homed here, instead preferring the top level util/ directory. New classes added here must NOT depend on any other folders in the openscreen repository, excepting third party libraries like Abseil or GTest. We include "default implementations" of many platform features. ## Directory structure - api/ contains the Platform API which is used by the Open Screen Library. Some of the public API may also include adapter code that acts as a small shim above the C functions to be implemented by the platform. The entire Open Screen repository can depend on files from api/, though classes defined in api/ can only depend on third_party or platform/base files. - base/ contains declarations/definitions of API constructs. Classes homed here shall only depend on platform/api or this folder. - impl/ contains the implementation of the standalone use case, namely a self-contained binary using the default implementation of the platform API. Note: people familiar with the old layout may notice that all files from the posix/, linux/, and mac/ directories have been moved here with an OS-specific suffix (e.g. _mac, _posix). - test/ contains API implementations used for testing purposes, like the FakeClock or FakeTaskRunner.