1 /* 2 This product contains certain software code or other information 3 ("AT&T Software") proprietary to AT&T Corp. ("AT&T"). The AT&T 4 Software is provided to you "AS IS". YOU ASSUME TOTAL RESPONSIBILITY 5 AND RISK FOR USE OF THE AT&T SOFTWARE. AT&T DOES NOT MAKE, AND 6 EXPRESSLY DISCLAIMS, ANY EXPRESS OR IMPLIED WARRANTIES OF ANY KIND 7 WHATSOEVER, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 8 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, WARRANTIES OF 9 TITLE OR NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS, ANY 10 WARRANTIES ARISING BY USAGE OF TRADE, COURSE OF DEALING OR COURSE OF 11 PERFORMANCE, OR ANY WARRANTY THAT THE AT&T SOFTWARE IS "ERROR FREE" OR 12 WILL MEET YOUR REQUIREMENTS. 13 14 Unless you accept a license to use the AT&T Software, you shall not 15 reverse compile, disassemble or otherwise reverse engineer this 16 product to ascertain the source code for any AT&T Software. 17 18 (c) AT&T Corp. All rights reserved. AT&T is a registered trademark of AT&T Corp. 19 20 *********************************************************************** 21 22 History: 23 24 24/11/99 - initial release by Hartmut Liefke, liefke@seas.upenn.edu 25 Dan Suciu, suciu@research.att.com 26 */ 27 28 //************************************************************************** 29 //************************************************************************** 30 31 #pragma once 32 33 #define MAX_BLOCKSIZE (2L*1024L*1024L) 34 #define MIN_DATABLOCKSIZE 512 35 36 struct UnpackDataBlock { 37 unsigned long len; 38 UnpackDataBlock *next; 39 // The data starts right after the last attribute ! 40 GetPtrUnpackDataBlock41 char *GetPtr() { return (char *)(this+1); } GetLenUnpackDataBlock42 unsigned long GetLen() { return len; } 43 }; 44 45 struct UnpackMemBlock 46 { 47 unsigned long len; 48 unsigned long used; 49 UnpackMemBlock *next; 50 }; 51 52 class UnpackMemMan 53 { 54 UnpackMemBlock *firstblock,*lastblock; 55 unsigned long curmaxblocksize; 56 unsigned long neededmemoryspace; 57 58 UnpackMemBlock *AllocateMemBlock(UnpackMemBlock **memblockref); 59 60 public: 61 char Init(unsigned long myneededmemoryspace,unsigned long datablockcount); 62 UnpackDataBlock *AllocateDataBlocks(unsigned long len); 63 }; 64