Dec.FpFrom a stream, it is possible to infer information needed then to apply a second analyse to extract all objects of a the given PACK file. From Git, this pass appears when the client clone/fetch and the program counts how many objects the PACK file has.
$ git clone ...
remote: Enumerating objects: 105, done.
remote: Counting objects: 100% (105/105), done.
remote: Compressing objects: 100% (81/81), done.
remote: Total 305 (delta 41), reused 75 (delta 23), pack-reused 200
Receiving objects: 100% (305/305), 104.46 KiB | 0 bytes/s, done. # first passmodule Uid : sig ... endtype optint = Optint.ttype entry = {offset : int64;Absolute offset into the given PACK file.
*)kind : kind;Kind of the object.
*)size : weight;Length of the inflated object.
*)consumed : int;Length of the deflated object (as it is into the PACK file).
*)crc : optint;Check-sum of the entry (header plus the deflated object).
*)}Type of a PACK entry.
val check_header :
's Carton__.Sigs.scheduler ->
('fd, 's) read ->
'fd ->
(int * string * int, 's) Carton__.Sigs.ioThe type for input sources. With a `Manual source the client must provide input with src.
val decoder : o:Bigstringaf.t -> allocate:(int -> De.window) -> src -> decoderval number : decoder -> intval version : decoder -> intval count : decoder -> intval src_rem : decoder -> intval src : decoder -> Bigstringaf.t -> int -> int -> decoder