1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
//
// Description:
// SWFUtilities Implementation
//
// Authors:
// Jonathan Shore <jshore@e-shuppan.com>
// Based on php wrapper developed by <dave@opaque.net>
//
// Copyright:
// Copyright 2001 E-Publishing Group Inc. Permission is granted to use or
// modify this code provided that the original copyright notice is included.
//
// This software is distributed with no warrantee of liability, merchantability,
// or fitness for a specific purpose.
//
#include <stdlib.h>
//
// StringStream Class
// implement a MING output stream suitable for java
//
// Notes
// -
//
class StringStream {
public:
StringStream ()
: buffer (NULL), len (0), blen (0)
{
}
~StringStream ()
{
if (buffer) free (buffer);
}
void add (byte b)
{
if (blen > len)
buffer [len++] = b;
else if (blen == 0) {
buffer = (byte*)malloc (8192);
blen = 8192;
buffer [len++] = b;
} else {
buffer = (byte*)realloc ((void*)buffer, 2*blen);
blen = 2*blen;
buffer [len++] = b;
}
}
int length ()
{
return len;
}
byte* getBytes ()
{
return buffer;
}
static void hook (byte b, void* data)
{
((StringStream*)data)->add (b);
}
private:
int len;
int blen;
byte* buffer;
};
|