15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- RegionFactory.h ----------------------------------------------------===//
25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//                     The MCLinker Project
45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source
65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details.
75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===//
95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifndef MCLD_REGION_FACTORY_H
105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MCLD_REGION_FACTORY_H
115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h>
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/GCFactory.h>
15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/MemoryRegion.h>
16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/MemoryArea.h>
17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/FileSystem.h>
185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace mcld
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass MemoryArea;
235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class RegionFactory
255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  \brief RegionFactory produces and destroys MemoryRegions
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass RegionFactory : public GCFactory<MemoryRegion, 0>
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic:
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  typedef GCFactory<MemoryRegion, 0> Alloc;
325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic:
345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  RegionFactory(size_t pNum);
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  ~RegionFactory();
365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // ----- production ----- //
38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  MemoryRegion* produce(Space& pSpace, void* pVMAStart, size_t pSize);
395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  void destruct(MemoryRegion* pRegion);
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
47