00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SGE_VECTOR_HPP_INCLUDED
00022 #define SGE_VECTOR_HPP_INCLUDED
00023
00024 #include <vector>
00025
00026 namespace sge
00027 {
00028
00029 template<typename T, typename A>
00030 inline typename std::vector<T,A>::pointer
00031 data(
00032 std::vector<T,A> &v)
00033 {
00034 return v.empty() ? 0 : &v[0];
00035 }
00036
00037 template<typename T, typename A>
00038 inline typename std::vector<T,A>::const_pointer
00039 data(
00040 std::vector<T,A> const &v)
00041 {
00042 return v.empty() ? 0 : &v[0];
00043 }
00044
00045 template<typename T, typename A>
00046 inline typename std::vector<T,A>::pointer
00047 data_end(
00048 std::vector<T,A> &v)
00049 {
00050 return data(v) ? data(v) : data(v) + v.size();
00051 }
00052
00053 template<typename T, typename A>
00054 inline typename std::vector<T,A>::const_pointer
00055 data_end(
00056 std::vector<T,A> const &v)
00057 {
00058 return data(v) ? data(v) : data(v) + v.size();
00059 }
00060
00061 }
00062
00063 #endif