unsafe fn split_values(&self,
                    range: &Range<i64>,
                    inputs: &InputMap,
                    buffers: &mut ArgumentMap,
                    splitters: &SplitterMap) -> bool {

        for (id, splitter) in splitters.iter() {
            let (_, split_type_param) = inputs.get(id).unwrap();
            let runtime = split_type_param.ty.runtime_info();
            let buffer = buffers.get_mut(id).unwrap();

            let finished = if let Some(splitter) = splitter {
                let next_fn = mem::transmute::<usize, SplitterNextFn>(runtime.next);
                // Fill buffer with the split piece.
                trace!("Calling next(start={}, end={}) on argument {:?}", range.start, range.end, id);
                (next_fn)(
                    splitter.0,
                    range.start,
                    range.end,
                    buffer.as_mut_ptr() as *mut c_void
                )
            } else {
                // Broadcast the value.
                let argval = self.arguments.get(id).unwrap();
                buffer.copy_from_slice(argval);
                SplitterStatus::SplitterContinue
            };

            if finished == SplitterStatus::SplitterFinished {
                return false;
            }
        }

        true
    }
/// Writes the next split values into buffers.
///
/// Returns whether the driving loop should continue processing data depending on whether
/// splitters have more data to produce.
Writes the next split values into buffers.
Returns whether the driving loop should continue processing data depending on whether
splitters have more data to produce.
Writes the next split values into buffers . Returns whether the driving loop should continue processing data depending on whether splitters have more data to produce .
unsafe fn split_values(&self,
                    range: &Range<i64>,
                    inputs: &InputMap,
                    buffers: &mut ArgumentMap,
                    splitters: &SplitterMap) -> bool {
        for (id, splitter) in splitters.iter() {
            let (_, split_type_param) = inputs.get(id).unwrap();
            let runtime = split_type_param.ty.runtime_info();
            let buffer = buffers.get_mut(id).unwrap();
            let finished = if let Some(splitter) = splitter {
                let next_fn = mem::transmute::<usize, SplitterNextFn>(runtime.next);
                // Fill buffer with the split piece.
                trace!("Calling next(start={}, end={}) on argument {:?}", range.start, range.end, id);
                (next_fn)(
                    splitter.0,
                    range.start,
                    range.end,
                    buffer.as_mut_ptr() as *mut c_void
                )
            } else {
                // Broadcast the value.
                let argval = self.arguments.get(id).unwrap();
                buffer.copy_from_slice(argval);
                SplitterStatus::SplitterContinue
            };
            if finished == SplitterStatus::SplitterFinished {
                return false;
            }
        }
        true
    }
unsafe fn split_values ( & self , range : & Range < i64 > , inputs : & InputMap , buffers : & mut ArgumentMap , splitters : & SplitterMap ) -> bool { for ( id , splitter ) in splitters . iter ( ) { let ( _ , split_type_param ) = inputs . get ( id ) . unwrap ( ) ; let runtime = split_type_param . ty . runtime_info ( ) ; let buffer = buffers . get_mut ( id ) . unwrap ( ) ; let finished = if let Some ( splitter ) = splitter { let next_fn = mem :: transmute :: < usize , SplitterNextFn > ( runtime . next ) ; // Fill buffer with the split piece. trace ! ( " " range start range end id ) ; ( next_fn ) ( splitter . 0 , range . start , range . end , buffer . as_mut_ptr ( ) as * mut c_void ) } else { // Broadcast the value. let argval = self . arguments . get ( id ) . unwrap ( ) ; buffer . copy_from_slice ( argval ) ; SplitterStatus :: SplitterContinue } ; if finished == SplitterStatus :: SplitterFinished { return false ; } } true }
Writes the next split values into buffers.
Writes the next split values into buffers .
&self
range
&Range<i64>
inputs
&InputMap
buffers
&mut ArgumentMap
splitters
&SplitterMap