List.h

Go to the documentation of this file.
00001 //Copyright (c) 2004-2005, Baris Sumengen
00002 //All rights reserved.
00003 //
00004 // CIMPL Matrix Performance Library
00005 //
00006 //Redistribution and use in source and binary
00007 //forms, with or without modification, are
00008 //permitted provided that the following
00009 //conditions are met:
00010 //
00011 //    * No commercial use is allowed. 
00012 //    This software can only be used
00013 //    for non-commercial purposes. This 
00014 //    distribution is mainly intended for
00015 //    academic research and teaching.
00016 //    * Redistributions of source code must
00017 //    retain the above copyright notice, this
00018 //    list of conditions and the following
00019 //    disclaimer.
00020 //    * Redistributions of binary form must
00021 //    mention the above copyright notice, this
00022 //    list of conditions and the following
00023 //    disclaimer in a clearly visible part 
00024 //    in associated product manual, 
00025 //    readme, and web site of the redistributed 
00026 //    software.
00027 //    * Redistributions in binary form must
00028 //    reproduce the above copyright notice,
00029 //    this list of conditions and the
00030 //    following disclaimer in the
00031 //    documentation and/or other materials
00032 //    provided with the distribution.
00033 //    * The name of Baris Sumengen may not be
00034 //    used to endorse or promote products
00035 //    derived from this software without
00036 //    specific prior written permission.
00037 //
00038 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
00039 //HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
00040 //EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
00041 //NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00042 //MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00043 //PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00044 //CONTRIBUTORS BE LIABLE FOR ANY
00045 //DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00046 //EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00047 //(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
00048 //OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00049 //DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00050 //HOWEVER CAUSED AND ON ANY THEORY OF
00051 //LIABILITY, WHETHER IN CONTRACT, STRICT
00052 //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00053 //OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00054 //OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00055 //POSSIBILITY OF SUCH DAMAGE.
00056 
00057 
00058 
00059 #pragma once
00060 #ifndef LIST_H
00061 #define LIST_H
00062 
00063 #include <cstdarg>
00064 
00065 #include <iostream>
00066 
00067 using std::cout;
00068 using std::cerr;
00069 using std::endl;
00070 using std::ostream;
00071 
00072 
00075 template< class T, int l >
00076 class List
00077 {
00078 protected:
00079     T data[l];
00080     int length;
00081 
00082 public:
00083 
00084     List(void)
00085     {
00086         length = l;
00087     }
00088 
00089     List(T e, ...)
00090     {
00091         length = l;
00092         data[0] = e;
00093         
00094         va_list argptr;
00095         va_start(argptr, e);
00096         for(int i=1; i<length; i++)
00097         {
00098             data[i] = va_arg(argptr, T);
00099         }
00100         va_end(argptr);
00101     }
00102 
00103 
00104     ~List(void)
00105     {
00106     }
00107     
00108 
00109     const T* DataPtr()
00110     {
00111         return data;
00112     }
00113     
00114     T* Data()
00115     {
00116         return data;
00117     }
00118     
00119     int Length()
00120     {
00121         return length;
00122     }
00123     
00124     T& operator[] (const int i)
00125     {
00126         return data[i];
00127     }
00128 
00129     friend ostream& operator<< (ostream& output, List<T,l>& m)
00130     {
00131         output << "(";
00132         for(int i=0; i<l-1; i++)
00133         {
00134             output << m.data[i] << ",";
00135         }
00136         output << m.data[l-1] << ")";
00137         return output;
00138     }
00139 
00140 };
00141 
00142 
00143 
00144 #endif
00145 
00146 
00147 
00148 
00149 
00150 
00151 
00152 
00153 
00154 
00155 
00156 
00157 
00158 
00159 
00160 
00161 
00162 
00163 
00164 
00165 
00166 
00167 
00168 
00169 

CIMPL 0.1 Code Reference. Copyright © 2004, Baris Sumengen. All rights reserved.