dochy_diff 0.1.0

Calculates the diff of two Dochy Data.
Documentation
// use crate::imp::read::reader::Reader;
// use nougami_core::structs::{MetaTable, MetaValue, VarType, Qv};
// use crate::imp::diff_error::DiffError;
//
// pub fn read_refs_bits(reader : &mut Reader, bits : u64, meta : &MetaTable, offset : usize, r : &mut Vec<(usize, Qv<String>)>) -> Result<(), DiffError> {
//     let mut flag: u64 = 1;
//     let mut index = 0;
//
//     for _ in 0..64 {
//         if let Some(p) = read_a_ref(reader, bits, flag, index, offset, meta)? {
//             r.push((index + offset, p))
//         }
//         flag <<= 1;
//         index += 1;
//         if bits < flag { break }
//     }
//     return Ok(())
// }
//
//
// fn read_a_ref(r : &mut Reader, bits : u64, flag : u64, index : usize, offset : usize, meta : &MetaTable) -> Result<Option<Qv<String>>, DiffError> {
//     if bits & flag != 0 {
//         let p = if let Some((_, MetaValue::Param(p))) = meta.get(index + offset) { p } else {
//             panic!("invalid meta read_a_ref")
//         };
//
//         match p.var_type() {
//             VarType::Normal => {
//                 Ok(Some(read_val(r)?))
//             },
//             VarType::Nullable =>{
//                 if r.read()?.as_bool()?{
//                     Ok(Some(read_val(r)?))
//                 } else{
//                     Ok(Some(Qv::Null))
//                 }
//             },
//             VarType::Undefiable =>{
//                 if r.read()?.as_bool()?{
//                     Ok(Some(read_val(r)?))
//                 } else{
//                     Ok(Some(Qv::Undefined))
//                 }
//             },
//             VarType::UndefNullable =>{
//                 if r.read()?.as_bool()?{
//                     Ok(Some(read_val(r)?))
//                 } else if r.read()?.as_bool()?{
//                     Ok(Some(Qv::Null))
//                 } else{
//                     Ok(Some(Qv::Undefined))
//                 }
//             }
//         }
//
//     } else {
//         Ok(None)
//     }
// }
//
// fn read_val(r : &mut Reader) -> Result<Qv<String>, DiffError>{
//     Ok(Qv::Val(r.read()?.as_string()?))
// }