/* * Copyright (C) 1998 NCSA * All rights reserved. * * Programmer: Robb Matzke * Friday, March 27, 1998 */ #ifndef _H5HGprivate_H #define _H5HGprivate_H #include #include /* * Each collection has a magic number for some redundancy. */ #define H5HG_MAGIC "GCOL" #define H5HG_SIZEOF_MAGIC 4 /* * Global heap collection version. */ #define H5HG_VERSION 1 /* * Pad all global heap messages to a multiple of eight bytes so we can load * the entire collection into memory and operate on it there. Eight should * be sufficient for machines that have alignment constraints because our * largest data type is eight bytes. */ #define H5HG_ALIGNMENT 8 #define H5HG_ALIGN(X) (H5HG_ALIGNMENT*(((X)+H5HG_ALIGNMENT-1)/ \ H5HG_ALIGNMENT)) #define H5HG_ISALIGNED(X) ((X)==H5HG_ALIGN(X)) /* * All global heap collections are at least this big. This allows us to read * most collections with a single read() since we don't have to read a few * bytes of header to figure out the size. If the heap is larger than this * then a second read gets the rest after we've decoded the header. */ #define H5HG_MINSIZE 4096 /* * Maximum length of the CWFS list, the list of remembered collections that * have free space. */ #define H5HG_NCWFS 16 /* * The maximum number of links allowed to a global heap object. */ #define H5HG_MAXLINK 65535 /* * The size of the collection header, always a multiple of the alignment so * that the stuff that follows the header is aligned. */ #define H5HG_SIZEOF_HDR(f) \ H5HG_ALIGN(4 + /*magic number */ \ 1 + /*version number */ \ 3 + /*reserved */ \ H5F_SIZEOF_SIZE(f)) /*collection size */ /* * The overhead associated with each object in the heap, always a multiple of * the alignment so that the stuff that follows the header is aligned. */ #define H5HG_SIZEOF_OBJHDR(f) \ H5HG_ALIGN(2 + /*object id number */ \ 2 + /*reference count */ \ 4 + /*reserved */ \ H5F_SIZEOF_SIZE(f)) /*object data size */ /* * The initial guess for the number of messages in a collection. We assume * that all objects in that collection are zero length, giving the maximum * possible number of objects in the collection. The collection itself has * some overhead and each message has some overhead. The `+2' accounts for * rounding and for the free space object. */ #define H5HG_NOBJS(f,z) (int)((((z)-H5HG_SIZEOF_HDR(f))/ \ H5HG_SIZEOF_OBJHDR(f)+2)) /* * Makes a global heap object pointer undefined, or checks whether one is * defined. */ #define H5HG_undef(HGP) ((HGP)->idx=0) #define H5HG_defined(HGP) ((HGP)->idx!=0) typedef struct H5HG_t { haddr_t addr; /*address of collection */ intn idx; /*object ID within collection */ } H5HG_t; typedef struct H5HG_heap_t H5HG_heap_t; __DLL__ H5HG_heap_t *H5HG_create(H5F_t *f, size_t size); __DLL__ herr_t H5HG_insert(H5F_t *f, size_t size, void *obj, H5HG_t *hobj/*out*/); __DLL__ void *H5HG_peek(H5F_t *f, H5HG_t *hobj); __DLL__ void *H5HG_read(H5F_t *f, H5HG_t *hobj, void *object); __DLL__ intn H5HG_link(H5F_t *f, H5HG_t *hobj, intn adjust); __DLL__ herr_t H5HG_remove(H5F_t *f, H5HG_t *hobj); __DLL__ herr_t H5HG_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent, intn fwidth); #endif <`캣x\aSOu|Hڬفuȗ@ ;_]H` ޶jcf4S M3- x} hqŲ:=!K uZ|h2κsn;C/bTd#'uB;4ަ_:9~#~BP%Z{pH! ˬV->RmΆFRi٬1J)n1^B,勧obUs$=t-O*κ48u(X_#GվxHʯ$jڮ-󗝺 &+#/suT0wD9Ou5nx > cRP}SN,э-}xU2b4Ph'{>%0f8@G ;$') ɞ$. `*-tC$v>*t[9;(],X!(2eQrۑF똰% MMi[ 68Fp:/ sфx/ExErpZM}1@X0^~K3<;FdBƢzg(:c7'> oEw+b'*wįQ8uCNĸ#J =-yrO z@P8Y5dWAXVG$`-%hތWn֗[`"> ';Z4*)86k/XJKx93gwB"X[aPnR6<"߿oEAd0fhqѱ3@2>. Uʼn1'pq9$z{ <դZP9B Cp/<%aC5JTOO~Osn D-1d-hP˥qt~oɃhg|lW(-{T$&rWg +-'&)YS]4+tۅoa iFѸO"AQS?|do>0Gcu/@T \bRo. .<3+=`r&qk*"4DoX뮶dkVb(S+qx]w\n\{!+e$t>5 ^Aq` ԈS1;-ϢyzݧhpMF-3-u;;CzlpaJFVA(3([~QX@X{}'r'60@Ё4ڐjAV4[ c_E"[s ci\ Aՙaҋ E[Rn(}PPm|~@p\gPV0z;>T5CcR :cLFU>~~1](_dso<I$5D*Vh +W(5!jVޢhhb%aV1d8;=ͽDBX[ȓVؑp^,•]O4,]sK\V##aUOV(by}"m@+urm1oA@'V(dvN(VQ[PK ƺFST0 cpython-3.5.0b4/.hgtouchUTUR0  6^ මސeRV;ׇcͦNJ搜~ӧTTOUcDߣ #zL\KF1 s3Bjhs'KK\I'tuͲ Wl:N1$v3] u˜DM;$lK^kM:-5Ln] Z#%d3Y%´P^F+a3o5lsJ#2-k"sM9VU//dgx,= .R7ZT8Kl7>S2!xk(уX*1tr.\.ԭ>Z~Ēf1>,:oHpMl΍GZ,hRVVPK ƺF cpython-3.5.0b4/Doc/UTU