PData.h

Go to the documentation of this file.
00001 // Copyright (C) 2005 Dave Griffiths
00002 //
00003 // This program is free software; you can redistribute it and/or modify
00004 // it under the terms of the GNU General Public License as published by
00005 // the Free Software Foundation; either version 2 of the License, or
00006 // (at your option) any later version.
00007 //
00008 // This program is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011 // GNU General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU General Public License
00014 // along with this program; if not, write to the Free Software
00015 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00016 
00017 #include <vector>
00018 #include <string>
00019 #include "dada.h"
00020 
00021 #ifndef N_PDATA
00022 #define N_PDATA
00023 
00024 using namespace std;
00025 
00026 namespace Fluxus
00027 {
00028 
00031 class PData
00032 {
00033 public:
00034     PData() {}
00035     virtual ~PData() {}
00036     virtual PData *Copy() const=0;
00037     virtual unsigned int Size() const=0;
00038     virtual void Resize(unsigned int size)=0;
00039 };
00040 
00043 template<class T>
00044 class TypedPData : public PData
00045 {
00046 public:
00047     TypedPData() {} 
00048     TypedPData(T first) { m_Data.push_back(first); }    
00049     TypedPData(unsigned int size) { Resize(size); } 
00050     virtual ~TypedPData() {}
00051     
00052     virtual PData *Copy() const
00053     {
00054         TypedPData<T> *newdata = new TypedPData<T>;
00055         newdata->m_Data=m_Data;
00056         return newdata;
00057     }
00058     
00059     virtual unsigned int Size() const
00060     {
00061         return m_Data.size();
00062     }
00063 
00064     virtual void Resize(unsigned int size)
00065     {
00066         m_Data.resize(size);
00067     }
00068     
00070     vector<T> m_Data;
00071 };
00072 
00073 }
00074 
00075 #endif
00076 

Generated on Mon Feb 11 06:54:25 2008 for The Fluxus Renderer (libfluxus) by  doxygen 1.5.1