1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//! Provides the generic functionality for a backend-specific implementation of a
//! [library][libraries].
//! [libraries]: ../libraries/index.html
//!
//! A binary defines one or usually many operations, sharing related functionalities, which are
//! provided by a specific [library][libraries] such as [Blas][blas].
//!
//! A binary needs to be 'build', which is handled at the specific framework implementation of a
//! binary representation, and returns initialized operations based on a [library][libraries].
//!
//! You are ususally not interacting with a binary itself, but rather use it to construct the
//! backend-agnostic operations, which can then be run and parallelized via an
//! unified interface - `backend.__name_of_the_operation__`.
//!
//! ## Development
//!
//! The here provided funcionality is used to construct specific Collenchyma binaries, which are
//! used to construct the basic computation behavior that come shipped with Collenchyma, but should
//! allows you to define and run your own backend-agnostic programs as well.
//!
//! [blas]: ../libraries/blas/index.html

/// Defines the functionality for turning a library into backend-specific, executable operations.
pub trait IBinary {
    // Returns the unique identifier of the Binary.
    //fn id(&self) -> isize;
    // Creates a HashMap of available, ready-to-use operations, based on the provided library and
    // tailored for a framework.
    //fn create_operations();
}