dxd - dynax driver framework 2.7.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx Namespace Reference

dynax driver framework user mode interface namespace More...

Namespaces

namespace  abstract
namespace  asio
 ASIO namespace.
namespace  color
namespace  coreaudio
 coreaudio - dynax coreaudio namespace
namespace  coremidi
 coremidi - dynax coremidi interface namespace
namespace  dll
namespace  erase
namespace  fourchar
namespace  gui
namespace  ioctl
 IOCTLs namespace.
namespace  map
namespace  midi
namespace  power
namespace  process
 process
namespace  proxy
 OS proxy interface class.
namespace  redirect
 redirect std IO
namespace  service
 service interface namespace
namespace  shared
namespace  stream
 generic stream interface
namespace  test
namespace  thread
 thread
namespace  trace
namespace  usb
 USB user mode interface namespace.
namespace  virtuel
namespace  wasapi
 WASAPI namespace.

Classes

struct  __scalar
struct  aggregate
struct  ansi
struct  circular
 kernel/user space shared circular buffer More...
class  clock
class  device
 abstract commom base device interface class More...
class  driver
 abstract base driver interface class This is the abstract base interface to a driver. More...
class  event
class  event< kernel >
 kernel triggerable user space event More...
class  event< user >
class  exception
class  file
class  guid
struct  iobridge
 ioctl bridge for 32/64bit user mode/kernel space big/little endian interface More...
struct  is_dx_iterator
struct  is_dx_iterator< type_t, std::void_t< typename type_t::dx_iterator_tag > >
struct  is_initializer_list
struct  is_initializer_list< std::initializer_list< type_t > >
struct  is_smart_pointer
struct  is_smart_pointer< std::shared_ptr< type_t > >
struct  is_smart_pointer< std::unique_ptr< type_t, deleter_t > >
struct  is_smart_pointer< std::weak_ptr< type_t > >
struct  is_string_container
struct  is_string_container< type_t, false >
class  iterator
 range-for support shared by every dxd type whose elements aren't already kept in an STL container of their own (dx::key_value_tree, cf::data, cf::dictionary, cf::array): a derived_t populates container_t however it needs to - a single existing conversion, or an explicit per-element loop - in its own constructor, then calls seed() once population is complete; operator++()/operator!=() forward to container_t's own iterator from then on. operator*() stays derived_t's own: what it should return (a plain element, const or not) differs per user, from cf::data's read-only bytes to dx::key_value_tree's mutable, further-navigable child node. More...
class  key_value_tree
 hierarchical key/value navigation over a flat persistent store More...
struct  key_value_tree_enabled
struct  key_value_tree_enabled< tree_t, value_t, std::void_t< decltype(tree_t::template enabled< value_t >())> >
class  launch
 RAII object launcher. More...
class  license
class  listen
 guarded listerners map used from the server side to manage listeners More...
class  listener
 balanced listener client into servers listeners map used from the client side to manage its subscription into the server listeners map More...
class  listeners
 internal helper to map single listener into listerners map More...
union  log
class  object
class  open
 RAII manage balanced object open/(close). More...
struct  os_event
 kernel/user space shared event representation More...
class  overlapped
class  parser
 cmd line parser More...
struct  pci
 physical PCI stream descriptor More...
class  pipe
 pipe - Windows named pipes A dx::pipe is a bidirection, multi-client, multi-threaded communication channel between a pipe client and a pipe server. Both pipe sides feature a dedicated read thread to receive data from the opposite side notifiying installable listener std::functions. On the service side, a pipe server is instantiated for each pipe client connection. Until a new client connects, the pipe::server::instance remains waiting in pipe::server::instance::connect within its dedicated pipe read thread. If a client disconnects the pipe::server::instance terminates its read thread and is joined and released by the next pipe::server::run() or pipe::server::stop(). The pipe::server::instance super class can be template-parameterized to allow mimicking user client behaviour. Windows arbitrarily serializes operations on synchronous pipe handles, limiting it's named pipe concurrent synchronous operation capabilities to exactly one synchronous pipe per process (i.e. exactly one per process), effectively forcing both the pipe::server and the pipe client to be implemented using asynchronous OVERLAPPED I/O — introducing a whole host of unnecessary pitfalls and awkward behaviors. However, the MSDN documentation here apparently describes a different piece of software. Though dx::pipes can be used for any communication between user space software its purpose is to allow Windows service communication. A service itself runs with elevated privileges, whereas the clients typically run in the normal user context. Therefore, the pipe servers have defined their default ACLs for non-privileged access. More...
class  process
class  promoted
 promoted value More...
struct  promoting
 promoted::preference with default and optional alignment function More...
struct  promoting< preference_t, std::void_t< decltype(preference_t::listen)> >
class  reference
 RAII manage balanced object open/(close). More...
class  registry
 flat, non-hierarchical Windows registry access to one real key More...
class  resource
 Windows handle class bill wasn't sure wether an invalid handle is a nullptr or -1. Hence the invalid_t template parameter. (Usually its -1, but i.e. for file mappings its nullptr, etc.). More...
class  select
 select from aggregated drivers More...
class  serial
 serial interface More...
class  string
class  timebase
struct  tty
struct  void_struct
class  window

Concepts

concept  non_pointer

Typedefs

using int24 = __scalar<int32_t, 24>
typedef iobridge< void > os_event
 kernel/user space shared OS event
typedef void * os_handle
typedef ::mach_error_t os_result
typedef ::DWORD pid_t
using preference = key_value_tree<registry>
 hierarchical preference store over the Windows registry see dx::key_value_tree (dx_key_value_tree.h) for usage and dx::registry's design note above for how the hierarchy maps onto real registry keys.
using uint24 = __scalar<uint32_t, 24>

Enumerations

enum  : ::DWORD {
  ok = kIOReturnSuccess , unknown = kIOReturnInvalid , not_implemented = kIOReturnUnsupported , invalid = kIOReturnBadArgument ,
  device_error = kIOReturnDeviceError , no_resources = kIOReturnNoResources , invalid_data = kIOReturnNoSpace , not_initialized = kIOReturnNotReady ,
  no_device = kIOReturnNoDevice , version_mismatch = err_system(0x37)| err_sub(2)| 0x14 , invalid_priority = ERROR_INVALID_PRIORITY , timeout = kIOReturnTimeout ,
  internal_error = kIOReturnInternalError , exclusive = kIOReturnExclusiveAccess , aborted = kIOReturnAborted , not_permitted = kIOReturnNotPermitted ,
  overflow = kIOReturnOverrun , not_found = ERROR_FILE_NOT_FOUND , driver_not_installed = kIOReturnNotAttached , driver_not_connected = kIOReturnNotOpen ,
  driver_not_running = kIOReturnOffline
}
enum  : ::mach_error_t {
  ok = kIOReturnSuccess , not_initialized = kIOReturnNotReady , not_implemented = kIOReturnUnsupported , invalid = kIOReturnBadArgument ,
  no_device = kIOReturnNoDevice , device_error = kIOReturnDeviceError , no_resources = kIOReturnNoResources , invalid_data = kIOReturnNoSpace ,
  version_mismatch = err_system(0x37)| err_sub(2)| 0x14 , timeout = kIOReturnTimeout , unknown = kIOReturnInvalid , overflow = kIOReturnOverrun ,
  driver_not_installed = kIOReturnNotAttached , driver_not_connected = kIOReturnNotOpen , driver_not_running = kIOReturnOffline , internal_error = kIOReturnInternalError ,
  not_permitted = kIOReturnNotPermitted , exclusive = kIOReturnExclusiveAccess , aborted = kIOReturnAborted , busy = kIOReturnBusy
}
enum  scale : int64_t {
  nsec = 1ll , usec = 1000ll , msec = usec* 1000ll , sec = msec* 1000ll ,
  sec = msec* 1000ll , msec = usec* 1000ll , usec = 1000ll , nsec = 1ll
}
enum  scale : int64_t {
  nsec = 1ll , usec = 1000ll , msec = usec* 1000ll , sec = msec* 1000ll ,
  sec = msec* 1000ll , msec = usec* 1000ll , usec = 1000ll , nsec = 1ll
}
 Windows: timestamp to Windows time converter. More...
enum  scope { kernel , user , kernel , user }
 template parameter defining origin of kernel object or destination of mapping More...
enum  scope { kernel , user , kernel , user }
 template parameter defining origin of kernel object or destination of mapping More...

Functions

template<typename type_t, int resolution>
class __attribute__ ((__packed__)) __scalar
os_result _assert (os_result error, const char *expression, const char *frame, const char *file, unsigned int line)
template<typename ... arg_t>
os_result _assert (os_result error, const char *expression, const char *frame, const char *file, unsigned int line, arg_t... args)
template<typename... types>
 aggregate (types &&...) -> aggregate< types &&... >
 catch (...)
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
 catch (const std::exception &__std_exception)
std::string describe (os_result result) noexcept
int64_t duration (int64_t timestamp, scale scale)
 macOS: timestamp duration (clock ticks) to time converter
 dx_catchall_rethrow () inline int64_t timestamp(int64_t time
 Windows: time to timestamp (clock ticks) converter.
void halt ()
template<typename ... next_t>
os_result map_os_result (os_result result, os_result desired, next_t... next)
 map list of os_results to a desired value This helper allows to ignore a list of os_results and if matched return the desired result instead.
template<typename type_t>
type_t max (type_t v1, type_t v2)
std::ostream & operator<< (std::ostream &os, const exception &exception) noexcept
std::ostream & operator<< (std::ostream &os, const log &log)
dx_packed_end std::ostream & operator<< (std::ostream &os, const log::level &level)
std::ostream & operator<< (std::ostream &os, const log::scope &scope)
std::ostream & operator<< (std::ostream &os, const void_struct &)
bool os_error (os_result result) noexcept
inline ::CFStringRef os_string (const char *string) noexcept
uint32_t priority ()
void report_uncaught ()
 prints an uncaught exception's actual diagnostic to stderr before the runtime terminates the process. Call once at startup - std::terminate() (an uncaught throw reaching main(), or escaping any std::thread's entry function) otherwise calls abort() with no diagnostic output at all.
template<typename type_t, typename... types_t>
type_t & static_try (const types_t &... args)
template<typename type_t, typename... types_t>
type_t & static_try (types_t &... args)
int64_t time (int64_t timestamp, scale scale=nsec)
 macOS: timestamp (clock ticks) to time converter
int64_t timestamp ()
 macOS: high precision timestamp (clock ticks) Returns current value of a clock that increments monotonically in tick units (starting at an arbitrary point), this clock does not increment while the system is asleep.
int64_t timestamp (int64_t time, scale scale=nsec)
 macOS: time to timestamp (clock ticks) converter
int64_t timestamp_offset (int64_t time, scale scale=nsec)
 macOS: duration to timestamp (clock ticks) converter
const std::string & to_string (const std::string &string)
std::string version (const std::string &package)
 installation package version
std::string version (uint32_t v32)

Variables

std::recursive_mutex io_mutex
template<typename type_t>
constexpr bool is_dx_iterator_v = is_dx_iterator<type_t>::value
template<typename>
constexpr bool is_floating_point = false
template<>
constexpr bool is_floating_point< double > = true
template<>
constexpr bool is_floating_point< float > = true
template<>
constexpr bool is_floating_point< long double > = true
template<typename type_t>
constexpr bool is_initializer_list_v = is_initializer_list<type_t>::value
template<typename>
constexpr bool is_pointer = false
template<typename type_t>
constexpr bool is_pointer< type_t * > = true
template<typename type_t>
constexpr bool is_smart_pointer_v = is_smart_pointer<type_t>::value
template<typename type_t>
constexpr bool is_string_container_v = is_string_container<type_t>::value
scale scale

Detailed Description

dynax driver framework user mode interface namespace

intended use

dynax driver framework interface namespace

dx - dynax driver framework user mode interface namespace

dx - dynax driver framework interface namespace

Typedef Documentation

◆ int24

typedef __scalar< int32_t, 24 > dx::int24 = __scalar<int32_t, 24>

◆ os_event

typedef iobridge<void> dx::os_event

kernel/user space shared OS event

◆ os_handle

typedef::HANDLE dx::os_handle

◆ os_result

typedef::DWORD dx::os_result

◆ pid_t

typedef ::DWORD dx::pid_t

◆ preference

hierarchical preference store over the Windows registry see dx::key_value_tree (dx_key_value_tree.h) for usage and dx::registry's design note above for how the hierarchy maps onto real registry keys.

◆ uint24

typedef __scalar< uint32_t, 24 > dx::uint24 = __scalar<uint32_t, 24>

Enumeration Type Documentation

◆ anonymous enum

anonymous enum : ::DWORD
Enumerator
ok 
unknown 
not_implemented 
invalid 
device_error 
no_resources 
invalid_data 
not_initialized 
no_device 
version_mismatch 
invalid_priority 
timeout 
internal_error 
exclusive 
aborted 
not_permitted 
overflow 
not_found 
driver_not_installed 
driver_not_connected 
driver_not_running 

◆ anonymous enum

anonymous enum : ::mach_error_t
Enumerator
ok 
not_initialized 
not_implemented 
invalid 
no_device 
device_error 
no_resources 
invalid_data 
version_mismatch 
timeout 
unknown 
overflow 
driver_not_installed 
driver_not_connected 
driver_not_running 
internal_error 
not_permitted 
exclusive 
aborted 
busy 

◆ scale [1/2]

Enumerator
nsec 
usec 
msec 
sec 
sec 
msec 
usec 
nsec 

◆ scale [2/2]

Windows: timestamp to Windows time converter.

Enumerator
nsec 
usec 
msec 
sec 
sec 
msec 
usec 
nsec 

◆ scope [1/2]

enum dx::scope

template parameter defining origin of kernel object or destination of mapping

  • underlaying virtual memory origin for memory object creation
  • underlaying event origin for user/kernel mode notification
  • destination for usage of mapping object
Enumerator
kernel 

virtual memory originated in kernel, event originated in kernel or mapping to be created for use in kernel

user 

virtual memory originated in user space: use with care! (memory is only valid in correct application context), event originated in user space or mapping to be created for use in user space

kernel 

virtual memory originated in kernel, event originated in kernel or mapping to be created for use in kernel

user 

virtual memory originated in user space: use with care! (memory is only valid in correct application context), event originated in user space or mapping to be created for use in user space

◆ scope [2/2]

enum dx::scope

template parameter defining origin of kernel object or destination of mapping

  • underlaying virtual memory origin for memory object creation
  • underlaying event origin for user/kernel mode notification
  • destination for usage of mapping object
Enumerator
kernel 

virtual memory originated in kernel, event originated in kernel or mapping to be created for use in kernel

user 

virtual memory originated in user space: use with care! (memory is only valid in correct application context), event originated in user space or mapping to be created for use in user space

kernel 

virtual memory originated in kernel, event originated in kernel or mapping to be created for use in kernel

user 

virtual memory originated in user space: use with care! (memory is only valid in correct application context), event originated in user space or mapping to be created for use in user space

Function Documentation

◆ __attribute__()

template<typename type_t, int resolution>
class dx::__attribute__ ( (__packed__) )

◆ _assert() [1/2]

os_result dx::_assert ( os_result error,
const char * expression,
const char * frame,
const char * file,
unsigned int line )
inline
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _assert() [2/2]

template<typename ... arg_t>
os_result dx::_assert ( os_result error,
const char * expression,
const char * frame,
const char * file,
unsigned int line,
arg_t... args )
Here is the call graph for this function:

◆ aggregate()

template<typename... types>
dx::aggregate ( types && ...) -> aggregate< types &&... >

◆ catch() [1/3]

dx::catch ( ...)

◆ catch() [2/3]

DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::catch ( const dx::exception & __dx_exception)

◆ catch() [3/3]

dx::catch ( const std::exception & __std_exception)

◆ describe()

std::string dx::describe ( os_result result)
inlinenoexcept
Here is the call graph for this function:
Here is the caller graph for this function:

◆ duration()

int64_t dx::duration ( int64_t timestamp,
scale scale = nsec )
inline

macOS: timestamp duration (clock ticks) to time converter

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dx_catchall_rethrow()

dx::dx_catchall_rethrow ( )

Windows: time to timestamp (clock ticks) converter.

Here is the caller graph for this function:

◆ halt()

void dx::halt ( )
inline
Here is the caller graph for this function:

◆ map_os_result()

template<typename ... next_t>
os_result dx::map_os_result ( os_result result,
os_result desired,
next_t... next )

map list of os_results to a desired value This helper allows to ignore a list of os_results and if matched return the desired result instead.

Here is the caller graph for this function:

◆ max()

template<typename type_t>
type_t dx::max ( type_t v1,
type_t v2 )
Here is the caller graph for this function:

◆ operator<<() [1/5]

std::ostream & dx::operator<< ( std::ostream & os,
const exception & exception )
inlinenoexcept
Here is the call graph for this function:

◆ operator<<() [2/5]

std::ostream & dx::operator<< ( std::ostream & os,
const log & log )
inline

◆ operator<<() [3/5]

dx_packed_end std::ostream & dx::operator<< ( std::ostream & os,
const log::level & level )
inline
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator<<() [4/5]

std::ostream & dx::operator<< ( std::ostream & os,
const log::scope & scope )
inline

◆ operator<<() [5/5]

std::ostream & dx::operator<< ( std::ostream & os,
const void_struct &  )
inline

◆ os_error()

bool dx::os_error ( os_result result)
inlinenoexcept

◆ os_string()

const char * dx::os_string ( const char * string)
noexcept

◆ priority()

uint32_t dx::priority ( )
inline
Here is the caller graph for this function:

◆ report_uncaught()

void dx::report_uncaught ( )
inline

prints an uncaught exception's actual diagnostic to stderr before the runtime terminates the process. Call once at startup - std::terminate() (an uncaught throw reaching main(), or escaping any std::thread's entry function) otherwise calls abort() with no diagnostic output at all.

Here is the caller graph for this function:

◆ static_try() [1/2]

template<typename type_t, typename... types_t>
type_t & dx::static_try ( const types_t &... args)

◆ static_try() [2/2]

template<typename type_t, typename... types_t>
type_t & dx::static_try ( types_t &... args)

◆ time()

int64_t dx::time ( int64_t timestamp,
scale scale = nsec )
inline

macOS: timestamp (clock ticks) to time converter

Windows: timestamp (clock ticks) to time converter.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ timestamp() [1/2]

int64_t dx::timestamp ( )
inline

macOS: high precision timestamp (clock ticks) Returns current value of a clock that increments monotonically in tick units (starting at an arbitrary point), this clock does not increment while the system is asleep.

Here is the caller graph for this function:

◆ timestamp() [2/2]

int64_t dx::timestamp ( int64_t time,
scale scale = nsec )
inline

macOS: time to timestamp (clock ticks) converter

Here is the call graph for this function:

◆ timestamp_offset()

int64_t dx::timestamp_offset ( int64_t time,
scale scale = nsec )
inline

macOS: duration to timestamp (clock ticks) converter

Here is the call graph for this function:
Here is the caller graph for this function:

◆ to_string()

const std::string & dx::to_string ( const std::string & string)
inline
Here is the caller graph for this function:

◆ version() [1/2]

std::string dx::version ( const std::string & package)
inline

installation package version

Todo
find approprate place

◆ version() [2/2]

std::string dx::version ( uint32_t v32)
inline

Variable Documentation

◆ io_mutex

std::recursive_mutex dx::io_mutex
extern

◆ is_dx_iterator_v

template<typename type_t>
bool dx::is_dx_iterator_v = is_dx_iterator<type_t>::value
inlineconstexpr

◆ is_floating_point

template<typename>
bool dx::is_floating_point = false
constexpr

◆ is_floating_point< double >

template<>
bool dx::is_floating_point< double > = true
inlineconstexpr

◆ is_floating_point< float >

template<>
bool dx::is_floating_point< float > = true
inlineconstexpr

◆ is_floating_point< long double >

template<>
bool dx::is_floating_point< long double > = true
inlineconstexpr

◆ is_initializer_list_v

template<typename type_t>
bool dx::is_initializer_list_v = is_initializer_list<type_t>::value
inlineconstexpr

◆ is_pointer

template<typename>
bool dx::is_pointer = false
constexpr

◆ is_pointer< type_t * >

template<typename type_t>
bool dx::is_pointer< type_t * > = true
constexpr

◆ is_smart_pointer_v

template<typename type_t>
bool dx::is_smart_pointer_v = is_smart_pointer<type_t>::value
inlineconstexpr

◆ is_string_container_v

template<typename type_t>
bool dx::is_string_container_v = is_string_container<type_t>::value
inlineconstexpr

◆ scale


(c) copyright 2009 dynamic acoustics e.U. generated on

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.