Vector.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00029 #ifndef KEYVALUE_KEY_GENERIC_VECTOR_H_
00030 #define KEYVALUE_KEY_GENERIC_VECTOR_H_
00031
00032 #include "keyvalue/extern/String.h"
00033 #include "keyvalue/key/converter/StdVector.h"
00034 #include "keyvalue/key/Traits.h"
00035
00036 namespace keyvalue {
00037 namespace key {
00038
00052 template<typename ElementType>
00053 class Vector : public Traits<ElementType, StdVector> {
00054
00055 public:
00056
00066 explicit
00067 Vector(const string& name, size_t size = 0);
00068
00069 private :
00070
00078 void
00079 checkSize(size_t size) const;
00080
00081 size_t size_;
00082
00083 };
00084
00085
00086
00087
00088
00089 template<typename ElementType>
00090 Vector<ElementType>::Vector(const string& name, const size_t size) :
00091 Vector::Traits_(name), size_(size) {
00092 }
00093
00094
00095
00096
00097
00098 template<typename ElementType>
00099 void
00100 Vector<ElementType>::checkSize(const size_t size) const {
00101 if (size_ != 0 && size_ != size)
00102 throw RuntimeError() & "Invalid number of values assigned to key '" &
00103 Key::getName() & "'! Expecting " & size_ & " got " & size & "!";
00104 }
00105
00106 }
00107 }
00108
00109 #endif // KEYVALUE_KEY_GENERIC_VECTOR_H_