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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
/*****************************************************************************
$Id$
File: page.cpp
Date: 30Apr06
Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
Gmail: blackhedd
This program is free software; you can redistribute it and/or modify
it under the terms of either: 1) the GNU General Public License
as published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version; or 2) Ruby's License.
See the file COPYING for complete licensing information.
*****************************************************************************/
#include "project.h"
/******************
PageList::PageList
******************/
PageList::PageList()
{
}
/*******************
PageList::~PageList
*******************/
PageList::~PageList()
{
while (HasPages())
PopFront();
}
/***************
PageList::Front
***************/
void PageList::Front (const char **page, int *length)
{
assert (page && length);
if (HasPages()) {
Page p = Pages.front();
*page = p.Buffer;
*length = p.Size;
}
else {
*page = NULL;
*length = 0;
}
}
/******************
PageList::PopFront
******************/
void PageList::PopFront()
{
if (HasPages()) {
Page p = Pages.front();
Pages.pop_front();
if (p.Buffer)
free ((void*)p.Buffer);
}
}
/******************
PageList::HasPages
******************/
bool PageList::HasPages()
{
return (Pages.size() > 0) ? true : false;
}
/**************
PageList::Push
**************/
void PageList::Push (const char *buf, int size)
{
if (buf && (size > 0)) {
char *copy = (char*) malloc (size);
if (!copy)
throw runtime_error ("no memory in pagelist");
memcpy (copy, buf, size);
Pages.push_back (Page (copy, size));
}
}
|