pub struct CapeLibraryDetails {
pub(crate) interface: *mut ICapeLibraryDetails,
}Expand description
CapeLibraryDetails provides details about a registered COBIA type library
§Examples
use cobia;
use cobia::prelude::*;
use cobia::cape_open_1_2;
cobia::cape_open_initialize().unwrap();
let library_enumerator = cobia::CapeTypeLibraries::new().unwrap();
let library_details = library_enumerator.get_library_by_library_id(&cape_open_1_2::LIBRARY_ID).unwrap();
assert_eq!(library_details.get_name().unwrap(),"CAPEOPEN_1_2");
cobia::cape_open_cleanup();Fields§
§interface: *mut ICapeLibraryDetailsImplementations§
Source§impl CapeLibraryDetails
impl CapeLibraryDetails
Sourcepub(crate) fn from_interface_pointer(
interface: *mut ICapeLibraryDetails,
) -> Self
pub(crate) fn from_interface_pointer( interface: *mut ICapeLibraryDetails, ) -> Self
Create a new CapeLibraryDetails from an interface pointer
This member is not typically called. Instead, the CapeLibraryDetails is created by the API functions that return it.
§Safety
The interface pointer must be valid and must point to an object that implements the ICapeLibraryDetails interface.
§Panics
This function panics if the interface pointer is null.
Sourcepub(crate) fn attach(interface: *mut ICapeLibraryDetails) -> Self
pub(crate) fn attach(interface: *mut ICapeLibraryDetails) -> Self
Create a new CapeLibraryDetails from an interface pointer without adding a reference
This member is not typically called. Instead, the CapeLibraryDetails is created by the API functions that return it.
§Safety
The interface pointer must be valid and must point to an object that implements the ICapeLibraryDetails interface.
§Panics
This function panics if the interface pointer is null.
Sourcepub fn get_name(&self) -> Result<String, COBIAError>
pub fn get_name(&self) -> Result<String, COBIAError>
Get the name of the library
The name of the library as it is appears in the registry.
§Errors
Returns an error if the name cannot be retrieved.
§Examples
use cobia;
use cobia::prelude::*;
use cobia::cape_open_1_2;
cobia::cape_open_initialize().unwrap();
let library_enumerator = cobia::CapeTypeLibraries::new().unwrap();
let library_details = library_enumerator.get_library_by_library_id(&cape_open_1_2::LIBRARY_ID).unwrap();
assert_eq!(library_details.get_name().unwrap(),"CAPEOPEN_1_2");
cobia::cape_open_cleanup();Sourcepub fn get_uuid(&self) -> Result<CapeUUID, COBIAError>
pub fn get_uuid(&self) -> Result<CapeUUID, COBIAError>
Get the id of the library
Get the id of the library as CapeUUID.
§Errors
Returns an error if the id cannot be retrieved.
§Examples
use cobia;
use cobia::prelude::*;
use cobia::cape_open_1_2;
cobia::cape_open_initialize().unwrap();
let library_enumerator = cobia::CapeTypeLibraries::new().unwrap();
let library_details = library_enumerator.get_library_by_library_id(&cape_open_1_2::LIBRARY_ID).unwrap();
assert_eq!(&library_details.get_uuid().unwrap(),&cape_open_1_2::LIBRARY_ID);
cobia::cape_open_cleanup();Sourcepub fn get_library_version(&self) -> Result<String, COBIAError>
pub fn get_library_version(&self) -> Result<String, COBIAError>
Get the version of the library
Get the version of the library as string.
§Errors
Returns an error if the version cannot be retrieved.
§Examples
use cobia;
use cobia::prelude::*;
use cobia::cape_open_1_2;
cobia::cape_open_initialize().unwrap();
let library_enumerator = cobia::CapeTypeLibraries::new().unwrap();
let library_details = library_enumerator.get_library_by_library_id(&cape_open_1_2::LIBRARY_ID).unwrap();
assert!(library_details.get_library_version().unwrap().starts_with("1.2")); //there are 3 numbers to a CAPE-OPEN type library version; we get the newest installed 1.2
cobia::cape_open_cleanup();Sourcepub fn get_library_path(&self) -> Result<PathBuf, COBIAError>
pub fn get_library_path(&self) -> Result<PathBuf, COBIAError>
Get the file name of the CIDL file
Get the full path to the CAPE-OPEN Interface Definition Language (CIDL) file that contains the type definitions of all types in the library.
§Errors
Returns an error if the version cannot be retrieved.
§Examples
use cobia;
use cobia::prelude::*;
use cobia::cape_open_1_2;
use std::path::Path;
cobia::cape_open_initialize().unwrap();
let library_enumerator = cobia::CapeTypeLibraries::new().unwrap();
let library_details = library_enumerator.get_library_by_library_id(&cape_open_1_2::LIBRARY_ID).unwrap();
assert!(library_details.get_library_path().unwrap().exists());
cobia::cape_open_cleanup();Sourcepub fn get_proxy_interface_provider_location(
&self,
service: CapePMCServiceType,
) -> Option<PathBuf>
pub fn get_proxy_interface_provider_location( &self, service: CapePMCServiceType, ) -> Option<PathBuf>
Get proxy provider file name
Get the full path of the dynamic libary that contains the proxy interface provider for a given service, if a proxy provider for that service is indeed registered for the requested type library.
§Arguments
service- The service for which the proxy provider is requested.
§Examples
use cobia;
use cobia::prelude::*;
use cobia::cape_open_1_2;
use std::path::Path;
cobia::cape_open_initialize().unwrap();
let library_enumerator = cobia::CapeTypeLibraries::new().unwrap();
let library_details = library_enumerator.get_library_by_library_id(&cape_open_1_2::LIBRARY_ID).unwrap();
match library_details.get_proxy_interface_provider_location(cobia::CapePMCServiceType::Inproc64) {
Some(path) => {
assert!(path.exists());
},
None => {
// no proxy provider for this service
}
}
cobia::cape_open_cleanup();