[][src]Struct ghakuf::reader::Reader

pub struct Reader<'a, R = File> { /* fields omitted */ }

ghakuf's SMF parser.

Examples

use ghakuf::messages::*;
use ghakuf::reader::*;
use std::path;

let path = path::Path::new("tests/test.mid");
let mut handler = HogeHandler {};
let mut reader = Reader::new(&mut handler, &path).unwrap();
let _ = reader.read();

struct HogeHandler {}
impl Handler for HogeHandler {
    fn header(&mut self, format: u16, track: u16, time_base: u16) {
        let _ = (format, track, time_base);
    }
    fn meta_event(&mut self, delta_time: u32, event: &MetaEvent, data: &Vec<u8>) {
        let _ = (delta_time, event, data);
    }
    fn midi_event(&mut self, delta_time: u32, event: &MidiEvent) {
        let _ = (delta_time, event);
    }
    fn sys_ex_event(&mut self, delta_time: u32, event: &SysExEvent, data: &Vec<u8>) {
        let _ = (delta_time, event, data);
    }
    fn track_change(&mut self) {}
}

Implementations

impl<'a> Reader<'a, File>[src]

pub fn new(
    handler: &'a mut dyn Handler,
    path: &'a Path
) -> Result<Reader<'a, File>, ReadError<'a>>
[src]

Builds Reader with handler(observer) and SMF file path.

Examples

use ghakuf::reader::*;
use std::path;

let path = path::Path::new("tests/test.mid");
let mut handler = FugaHandler {};
let mut reader = Reader::new(&mut handler, &path);

struct FugaHandler {}
impl Handler for FugaHandler {}

impl<'a, R> Reader<'a, R> where
    R: Read + Seek
[src]

pub fn from_reader(
    handler: &'a mut dyn Handler,
    reader: R
) -> Result<Reader<'a, R>, ReadError<'a>>
[src]

Builds Reader with handler(observer) and a Read object.

Examples

use ghakuf::reader::*;
use std::path;
use std::io::Cursor;

let midi_file = include_bytes!("../tests/test.mid");
let midi_file = Cursor::new(&midi_file[..]);
 
let mut handler = FugaHandler {};
let mut reader = Reader::from_reader(&mut handler, midi_file);

struct FugaHandler {}
impl Handler for FugaHandler {}

pub fn push_handler(&mut self, handler: &'a mut dyn Handler)[src]

Pushes Handler to Reader.

Examples

use ghakuf::reader::*;
use std::path;

let path = path::Path::new("tests/test.mid");
let mut fuga_handler = FugaHandler {};
let mut nyan_handler = NyanHandler {};
let mut reader = Reader::new(&mut fuga_handler, &path).unwrap();
reader.push_handler(&mut nyan_handler);

struct FugaHandler {}
impl Handler for FugaHandler {}

struct NyanHandler {}
impl Handler for NyanHandler {}

pub fn read(&mut self) -> Result<(), ReadError<'_>>[src]

Parses SMF messages and fires(broadcasts) handlers.

Examples

use ghakuf::messages::*;
use ghakuf::reader::*;
use std::path;

let path = path::Path::new("tests/test.mid");
let mut handler = HogeHandler{};
let mut reader = Reader::new(&mut handler, &path).unwrap();
let _ = reader.read();

struct HogeHandler {}
impl Handler for HogeHandler {
    fn header(&mut self, format: u16, track: u16, time_base: u16) {
        let _ = (format, track, time_base);
    }
    fn meta_event(&mut self, delta_time: u32, event: &MetaEvent, data: &Vec<u8>) {
        let _ = (delta_time, event, data);
    }
    fn midi_event(&mut self, delta_time: u32, event: &MidiEvent) {
        let _ = (delta_time, event);
    }
    fn sys_ex_event(&mut self, delta_time: u32, event: &SysExEvent, data: &Vec<u8>) {
        let _ = (delta_time, event, data);
    }
    fn track_change(&mut self) {}
}

Auto Trait Implementations

impl<'a, R = File> !RefUnwindSafe for Reader<'a, R>

impl<'a, R = File> !Send for Reader<'a, R>

impl<'a, R = File> !Sync for Reader<'a, R>

impl<'a, R> Unpin for Reader<'a, R> where
    R: Unpin

impl<'a, R = File> !UnwindSafe for Reader<'a, R>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.