示例#1
0
				uint64_t decodeBinList(uint64_t const id, libmaus2::autoarray::AutoArray< std::pair<uint64_t,uint64_t> > & A) const
				{
					typedef std::vector< std::pair<uint64_t,uint64_t> >::const_iterator it;
					std::pair<it,it> const P = std::equal_range(T.begin(),T.end(),std::pair<uint64_t,uint64_t>(id,0),PairFirstComparator());

					if ( P.second == P.first )
						return 0;

					assert ( P.second-P.first == 1 );

					libmaus2::aio::InputStreamInstance ISI(indexfn);

					ISI.clear();
					ISI.seekg(P.first->second,std::ios::beg);

					uint64_t const rid = libmaus2::util::NumberSerialisation::deserialiseNumber(ISI);
					assert ( rid == id );
					uint64_t const n = libmaus2::util::NumberSerialisation::deserialiseNumber(ISI);

					uint64_t o = 0;
					for ( uint64_t i = 0; i < n; ++i )
					{
						uint64_t const a = libmaus2::util::NumberSerialisation::deserialiseNumber(ISI);
						uint64_t const b = libmaus2::util::NumberSerialisation::deserialiseNumber(ISI);
						A.push(o,
							std::pair<uint64_t,uint64_t>(a,b)
						);
					}

					return n;
				}