00001 /**** 00002 Hierarchical Data Objects 00003 Copyright (C) 2005-2010 Werner Van Belle 00004 http://flow.yellowcouch.org/data/ 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 ****/ 00020 #ifndef __loaded__set_cpp__ 00021 #define __loaded__set_cpp__ 00022 using namespace std; 00023 #line 1 "set.c++" 00024 #include "set.h" 00025 #include "array-iterator.h" 00026 #include "symbol.h" 00027 #include "numbers.h" 00028 #include "data-io.h" 00029 00030 //--------------------------------------------------------------- 00031 // The set interpretation of a 1D array 00032 //--------------------------------------------------------------- 00033 void Set::ensure_size(int s) 00034 { 00035 if (s<=allocated_size()) return; 00036 int newsize = allocated_size(); 00037 if (newsize==0) newsize=8; 00038 while(s>newsize) newsize*=2; 00039 Content newcontent(newsize); 00040 newcontent.copyFrom(content,0); 00041 content = newcontent; 00042 }; 00043 00044 void Set::add(const Data& val) 00045 { 00046 ensure_size(next_element+1); 00047 content[next_element]=val; 00048 next_element++; 00049 } 00050 #endif // __loaded__set_cpp__