Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef _RAR_ARRAY_ |
2 | | #define _RAR_ARRAY_ |
3 | | |
4 | | extern ErrorHandler ErrHandler; |
5 | | |
6 | | template <class T> class Array |
7 | | { |
8 | | private: |
9 | | T *Buffer; |
10 | | size_t BufSize; |
11 | | size_t AllocSize; |
12 | | size_t MaxSize; |
13 | | bool Secure; // Clean memory if true. |
14 | | public: |
15 | | Array(); |
16 | | Array(size_t Size); |
17 | | Array(const Array &Src); // Copy constructor. |
18 | | ~Array(); |
19 | | inline void CleanData(); |
20 | | inline T& operator [](size_t Item) const; |
21 | | inline T* operator + (size_t Pos); |
22 | | inline size_t Size(); // Returns the size in items, not in bytes. |
23 | | void Add(size_t Items); |
24 | | void Alloc(size_t Items); |
25 | | void Reset(); |
26 | | void SoftReset(); |
27 | | void operator = (Array<T> &Src); |
28 | | void Push(T Item); |
29 | | void Append(T *Item,size_t Count); |
30 | 705 | T* Addr(size_t Item) {return Buffer+Item;} Array<wchar_t>::Addr(unsigned long) Line | Count | Source | 30 | 702 | T* Addr(size_t Item) {return Buffer+Item;} |
Array<unsigned char>::Addr(unsigned long) Line | Count | Source | 30 | 3 | T* Addr(size_t Item) {return Buffer+Item;} |
|
31 | | void SetMaxSize(size_t Size) {MaxSize=Size;} |
32 | | T* Begin() {return Buffer;} |
33 | | T* End() {return Buffer==NULL ? NULL:Buffer+BufSize;} |
34 | | void SetSecure() {Secure=true;} |
35 | | }; |
36 | | |
37 | | |
38 | | template <class T> void Array<T>::CleanData() |
39 | 410k | { |
40 | 410k | Buffer=NULL; |
41 | 410k | BufSize=0; |
42 | 410k | AllocSize=0; |
43 | 410k | MaxSize=0; |
44 | 410k | Secure=false; |
45 | 410k | } Line | Count | Source | 39 | 4.09k | { | 40 | 4.09k | Buffer=NULL; | 41 | 4.09k | BufSize=0; | 42 | 4.09k | AllocSize=0; | 43 | 4.09k | MaxSize=0; | 44 | 4.09k | Secure=false; | 45 | 4.09k | } |
Array<unsigned char>::CleanData() Line | Count | Source | 39 | 361k | { | 40 | 361k | Buffer=NULL; | 41 | 361k | BufSize=0; | 42 | 361k | AllocSize=0; | 43 | 361k | MaxSize=0; | 44 | 361k | Secure=false; | 45 | 361k | } |
Line | Count | Source | 39 | 3.72k | { | 40 | 3.72k | Buffer=NULL; | 41 | 3.72k | BufSize=0; | 42 | 3.72k | AllocSize=0; | 43 | 3.72k | MaxSize=0; | 44 | 3.72k | Secure=false; | 45 | 3.72k | } |
Array<UnpackFilter>::CleanData() Line | Count | Source | 39 | 4.29k | { | 40 | 4.29k | Buffer=NULL; | 41 | 4.29k | BufSize=0; | 42 | 4.29k | AllocSize=0; | 43 | 4.29k | MaxSize=0; | 44 | 4.29k | Secure=false; | 45 | 4.29k | } |
Array<UnpackFilter30*>::CleanData() Line | Count | Source | 39 | 8.58k | { | 40 | 8.58k | Buffer=NULL; | 41 | 8.58k | BufSize=0; | 42 | 8.58k | AllocSize=0; | 43 | 8.58k | MaxSize=0; | 44 | 8.58k | Secure=false; | 45 | 8.58k | } |
Line | Count | Source | 39 | 4.29k | { | 40 | 4.29k | Buffer=NULL; | 41 | 4.29k | BufSize=0; | 42 | 4.29k | AllocSize=0; | 43 | 4.29k | MaxSize=0; | 44 | 4.29k | Secure=false; | 45 | 4.29k | } |
Array<wchar_t>::CleanData() Line | Count | Source | 39 | 24.5k | { | 40 | 24.5k | Buffer=NULL; | 41 | 24.5k | BufSize=0; | 42 | 24.5k | AllocSize=0; | 43 | 24.5k | MaxSize=0; | 44 | 24.5k | Secure=false; | 45 | 24.5k | } |
|
46 | | |
47 | | |
48 | | template <class T> Array<T>::Array() |
49 | 235k | { |
50 | 235k | CleanData(); |
51 | 235k | } Line | Count | Source | 49 | 4.09k | { | 50 | 4.09k | CleanData(); | 51 | 4.09k | } |
Array<unsigned char>::Array() Line | Count | Source | 49 | 190k | { | 50 | 190k | CleanData(); | 51 | 190k | } |
Array<UnpackFilter>::Array() Line | Count | Source | 49 | 4.29k | { | 50 | 4.29k | CleanData(); | 51 | 4.29k | } |
Array<UnpackFilter30*>::Array() Line | Count | Source | 49 | 8.58k | { | 50 | 8.58k | CleanData(); | 51 | 8.58k | } |
Line | Count | Source | 49 | 4.29k | { | 50 | 4.29k | CleanData(); | 51 | 4.29k | } |
Line | Count | Source | 49 | 24.5k | { | 50 | 24.5k | CleanData(); | 51 | 24.5k | } |
|
52 | | |
53 | | |
54 | | template <class T> Array<T>::Array(size_t Size) |
55 | 175k | { |
56 | 175k | CleanData(); |
57 | 175k | Add(Size); |
58 | 175k | } Array<unsigned char>::Array(unsigned long) Line | Count | Source | 55 | 171k | { | 56 | 171k | CleanData(); | 57 | 171k | Add(Size); | 58 | 171k | } |
Array<char>::Array(unsigned long) Line | Count | Source | 55 | 3.72k | { | 56 | 3.72k | CleanData(); | 57 | 3.72k | Add(Size); | 58 | 3.72k | } |
Unexecuted instantiation: Array<wchar_t>::Array(unsigned long) |
59 | | |
60 | | |
61 | | // Copy constructor in case we need to pass an object as value. |
62 | | template <class T> Array<T>::Array(const Array &Src) |
63 | | { |
64 | | CleanData(); |
65 | | Alloc(Src.BufSize); |
66 | | if (Src.BufSize!=0) |
67 | | memcpy((void *)Buffer,(void *)Src.Buffer,Src.BufSize*sizeof(T)); |
68 | | } |
69 | | |
70 | | |
71 | | template <class T> Array<T>::~Array() |
72 | 410k | { |
73 | 410k | if (Buffer!=NULL) |
74 | 355k | { |
75 | 355k | if (Secure) |
76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); |
77 | 355k | free(Buffer); |
78 | 355k | } |
79 | 410k | } Line | Count | Source | 72 | 24.5k | { | 73 | 24.5k | if (Buffer!=NULL) | 74 | 8.44k | { | 75 | 8.44k | if (Secure) | 76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 77 | 8.44k | free(Buffer); | 78 | 8.44k | } | 79 | 24.5k | } |
Line | Count | Source | 72 | 4.09k | { | 73 | 4.09k | if (Buffer!=NULL) | 74 | 0 | { | 75 | 0 | if (Secure) | 76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 77 | 0 | free(Buffer); | 78 | 0 | } | 79 | 4.09k | } |
Array<unsigned char>::~Array() Line | Count | Source | 72 | 361k | { | 73 | 361k | if (Buffer!=NULL) | 74 | 341k | { | 75 | 341k | if (Secure) | 76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 77 | 341k | free(Buffer); | 78 | 341k | } | 79 | 361k | } |
Line | Count | Source | 72 | 3.72k | { | 73 | 3.72k | if (Buffer!=NULL) | 74 | 3.72k | { | 75 | 3.72k | if (Secure) | 76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 77 | 3.72k | free(Buffer); | 78 | 3.72k | } | 79 | 3.72k | } |
Array<UnpackFilter>::~Array() Line | Count | Source | 72 | 4.29k | { | 73 | 4.29k | if (Buffer!=NULL) | 74 | 640 | { | 75 | 640 | if (Secure) | 76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 77 | 640 | free(Buffer); | 78 | 640 | } | 79 | 4.29k | } |
Array<UnpackFilter30*>::~Array() Line | Count | Source | 72 | 8.58k | { | 73 | 8.58k | if (Buffer!=NULL) | 74 | 842 | { | 75 | 842 | if (Secure) | 76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 77 | 842 | free(Buffer); | 78 | 842 | } | 79 | 8.58k | } |
Line | Count | Source | 72 | 4.29k | { | 73 | 4.29k | if (Buffer!=NULL) | 74 | 421 | { | 75 | 421 | if (Secure) | 76 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 77 | 421 | free(Buffer); | 78 | 421 | } | 79 | 4.29k | } |
|
80 | | |
81 | | |
82 | | template <class T> inline T& Array<T>::operator [](size_t Item) const |
83 | 795M | { |
84 | 795M | return Buffer[Item]; |
85 | 795M | } Array<unsigned char>::operator[](unsigned long) const Line | Count | Source | 83 | 11.6M | { | 84 | 11.6M | return Buffer[Item]; | 85 | 11.6M | } |
Array<char>::operator[](unsigned long) const Line | Count | Source | 83 | 6.99M | { | 84 | 6.99M | return Buffer[Item]; | 85 | 6.99M | } |
Array<UnpackFilter30*>::operator[](unsigned long) const Line | Count | Source | 83 | 773M | { | 84 | 773M | return Buffer[Item]; | 85 | 773M | } |
Array<int>::operator[](unsigned long) const Line | Count | Source | 83 | 119k | { | 84 | 119k | return Buffer[Item]; | 85 | 119k | } |
Array<UnpackFilter>::operator[](unsigned long) const Line | Count | Source | 83 | 3.54M | { | 84 | 3.54M | return Buffer[Item]; | 85 | 3.54M | } |
Array<wchar_t>::operator[](unsigned long) const Line | Count | Source | 83 | 160k | { | 84 | 160k | return Buffer[Item]; | 85 | 160k | } |
Unexecuted instantiation: Array<unsigned int>::operator[](unsigned long) const |
86 | | |
87 | | |
88 | | template <class T> inline T* Array<T>::operator +(size_t Pos) |
89 | 0 | { |
90 | 0 | return Buffer+Pos; |
91 | 0 | } |
92 | | |
93 | | |
94 | | template <class T> inline size_t Array<T>::Size() |
95 | 262M | { |
96 | 262M | return BufSize; |
97 | 262M | } Line | Count | Source | 95 | 312k | { | 96 | 312k | return BufSize; | 97 | 312k | } |
Array<unsigned char>::Size() Line | Count | Source | 95 | 52.0k | { | 96 | 52.0k | return BufSize; | 97 | 52.0k | } |
Line | Count | Source | 95 | 3.72k | { | 96 | 3.72k | return BufSize; | 97 | 3.72k | } |
Array<UnpackFilter30*>::Size() Line | Count | Source | 95 | 258M | { | 96 | 258M | return BufSize; | 97 | 258M | } |
Line | Count | Source | 95 | 220k | { | 96 | 220k | return BufSize; | 97 | 220k | } |
Array<UnpackFilter>::Size() Line | Count | Source | 95 | 2.89M | { | 96 | 2.89M | return BufSize; | 97 | 2.89M | } |
Unexecuted instantiation: Array<unsigned int>::Size() |
98 | | |
99 | | |
100 | | template <class T> void Array<T>::Add(size_t Items) |
101 | 958k | { |
102 | 958k | BufSize+=Items; |
103 | 958k | if (BufSize>AllocSize) |
104 | 377k | { |
105 | 377k | if (MaxSize!=0 && BufSize>MaxSize) |
106 | 0 | { |
107 | 0 | ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize); |
108 | 0 | ErrHandler.MemoryError(); |
109 | 0 | } |
110 | | |
111 | 377k | size_t Suggested=AllocSize+AllocSize/4+32; |
112 | 377k | size_t NewSize=Max(BufSize,Suggested); |
113 | | |
114 | 377k | T *NewBuffer; |
115 | 377k | if (Secure) |
116 | 0 | { |
117 | 0 | NewBuffer=(T *)malloc(NewSize*sizeof(T)); |
118 | 0 | if (NewBuffer==NULL) |
119 | 0 | ErrHandler.MemoryError(); |
120 | 0 | if (Buffer!=NULL) |
121 | 0 | { |
122 | 0 | memcpy(NewBuffer,Buffer,AllocSize*sizeof(T)); |
123 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); |
124 | 0 | free(Buffer); |
125 | 0 | } |
126 | 0 | } |
127 | 377k | else |
128 | 377k | { |
129 | 377k | NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T)); |
130 | 377k | if (NewBuffer==NULL) |
131 | 0 | ErrHandler.MemoryError(); |
132 | 377k | } |
133 | 377k | Buffer=NewBuffer; |
134 | 377k | AllocSize=NewSize; |
135 | 377k | } |
136 | 958k | } Array<unsigned char>::Add(unsigned long) Line | Count | Source | 101 | 364k | { | 102 | 364k | BufSize+=Items; | 103 | 364k | if (BufSize>AllocSize) | 104 | 360k | { | 105 | 360k | if (MaxSize!=0 && BufSize>MaxSize) | 106 | 0 | { | 107 | 0 | ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize); | 108 | 0 | ErrHandler.MemoryError(); | 109 | 0 | } | 110 | | | 111 | 360k | size_t Suggested=AllocSize+AllocSize/4+32; | 112 | 360k | size_t NewSize=Max(BufSize,Suggested); | 113 | | | 114 | 360k | T *NewBuffer; | 115 | 360k | if (Secure) | 116 | 0 | { | 117 | 0 | NewBuffer=(T *)malloc(NewSize*sizeof(T)); | 118 | 0 | if (NewBuffer==NULL) | 119 | 0 | ErrHandler.MemoryError(); | 120 | 0 | if (Buffer!=NULL) | 121 | 0 | { | 122 | 0 | memcpy(NewBuffer,Buffer,AllocSize*sizeof(T)); | 123 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 124 | 0 | free(Buffer); | 125 | 0 | } | 126 | 0 | } | 127 | 360k | else | 128 | 360k | { | 129 | 360k | NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T)); | 130 | 360k | if (NewBuffer==NULL) | 131 | 0 | ErrHandler.MemoryError(); | 132 | 360k | } | 133 | 360k | Buffer=NewBuffer; | 134 | 360k | AllocSize=NewSize; | 135 | 360k | } | 136 | 364k | } |
Array<char>::Add(unsigned long) Line | Count | Source | 101 | 3.72k | { | 102 | 3.72k | BufSize+=Items; | 103 | 3.72k | if (BufSize>AllocSize) | 104 | 3.72k | { | 105 | 3.72k | if (MaxSize!=0 && BufSize>MaxSize) | 106 | 0 | { | 107 | 0 | ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize); | 108 | 0 | ErrHandler.MemoryError(); | 109 | 0 | } | 110 | | | 111 | 3.72k | size_t Suggested=AllocSize+AllocSize/4+32; | 112 | 3.72k | size_t NewSize=Max(BufSize,Suggested); | 113 | | | 114 | 3.72k | T *NewBuffer; | 115 | 3.72k | if (Secure) | 116 | 0 | { | 117 | 0 | NewBuffer=(T *)malloc(NewSize*sizeof(T)); | 118 | 0 | if (NewBuffer==NULL) | 119 | 0 | ErrHandler.MemoryError(); | 120 | 0 | if (Buffer!=NULL) | 121 | 0 | { | 122 | 0 | memcpy(NewBuffer,Buffer,AllocSize*sizeof(T)); | 123 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 124 | 0 | free(Buffer); | 125 | 0 | } | 126 | 0 | } | 127 | 3.72k | else | 128 | 3.72k | { | 129 | 3.72k | NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T)); | 130 | 3.72k | if (NewBuffer==NULL) | 131 | 0 | ErrHandler.MemoryError(); | 132 | 3.72k | } | 133 | 3.72k | Buffer=NewBuffer; | 134 | 3.72k | AllocSize=NewSize; | 135 | 3.72k | } | 136 | 3.72k | } |
Array<UnpackFilter30*>::Add(unsigned long) Line | Count | Source | 101 | 119k | { | 102 | 119k | BufSize+=Items; | 103 | 119k | if (BufSize>AllocSize) | 104 | 1.51k | { | 105 | 1.51k | if (MaxSize!=0 && BufSize>MaxSize) | 106 | 0 | { | 107 | 0 | ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize); | 108 | 0 | ErrHandler.MemoryError(); | 109 | 0 | } | 110 | | | 111 | 1.51k | size_t Suggested=AllocSize+AllocSize/4+32; | 112 | 1.51k | size_t NewSize=Max(BufSize,Suggested); | 113 | | | 114 | 1.51k | T *NewBuffer; | 115 | 1.51k | if (Secure) | 116 | 0 | { | 117 | 0 | NewBuffer=(T *)malloc(NewSize*sizeof(T)); | 118 | 0 | if (NewBuffer==NULL) | 119 | 0 | ErrHandler.MemoryError(); | 120 | 0 | if (Buffer!=NULL) | 121 | 0 | { | 122 | 0 | memcpy(NewBuffer,Buffer,AllocSize*sizeof(T)); | 123 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 124 | 0 | free(Buffer); | 125 | 0 | } | 126 | 0 | } | 127 | 1.51k | else | 128 | 1.51k | { | 129 | 1.51k | NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T)); | 130 | 1.51k | if (NewBuffer==NULL) | 131 | 0 | ErrHandler.MemoryError(); | 132 | 1.51k | } | 133 | 1.51k | Buffer=NewBuffer; | 134 | 1.51k | AllocSize=NewSize; | 135 | 1.51k | } | 136 | 119k | } |
Array<int>::Add(unsigned long) Line | Count | Source | 101 | 2.49k | { | 102 | 2.49k | BufSize+=Items; | 103 | 2.49k | if (BufSize>AllocSize) | 104 | 421 | { | 105 | 421 | if (MaxSize!=0 && BufSize>MaxSize) | 106 | 0 | { | 107 | 0 | ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize); | 108 | 0 | ErrHandler.MemoryError(); | 109 | 0 | } | 110 | | | 111 | 421 | size_t Suggested=AllocSize+AllocSize/4+32; | 112 | 421 | size_t NewSize=Max(BufSize,Suggested); | 113 | | | 114 | 421 | T *NewBuffer; | 115 | 421 | if (Secure) | 116 | 0 | { | 117 | 0 | NewBuffer=(T *)malloc(NewSize*sizeof(T)); | 118 | 0 | if (NewBuffer==NULL) | 119 | 0 | ErrHandler.MemoryError(); | 120 | 0 | if (Buffer!=NULL) | 121 | 0 | { | 122 | 0 | memcpy(NewBuffer,Buffer,AllocSize*sizeof(T)); | 123 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 124 | 0 | free(Buffer); | 125 | 0 | } | 126 | 0 | } | 127 | 421 | else | 128 | 421 | { | 129 | 421 | NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T)); | 130 | 421 | if (NewBuffer==NULL) | 131 | 0 | ErrHandler.MemoryError(); | 132 | 421 | } | 133 | 421 | Buffer=NewBuffer; | 134 | 421 | AllocSize=NewSize; | 135 | 421 | } | 136 | 2.49k | } |
Array<UnpackFilter>::Add(unsigned long) Line | Count | Source | 101 | 459k | { | 102 | 459k | BufSize+=Items; | 103 | 459k | if (BufSize>AllocSize) | 104 | 2.45k | { | 105 | 2.45k | if (MaxSize!=0 && BufSize>MaxSize) | 106 | 0 | { | 107 | 0 | ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize); | 108 | 0 | ErrHandler.MemoryError(); | 109 | 0 | } | 110 | | | 111 | 2.45k | size_t Suggested=AllocSize+AllocSize/4+32; | 112 | 2.45k | size_t NewSize=Max(BufSize,Suggested); | 113 | | | 114 | 2.45k | T *NewBuffer; | 115 | 2.45k | if (Secure) | 116 | 0 | { | 117 | 0 | NewBuffer=(T *)malloc(NewSize*sizeof(T)); | 118 | 0 | if (NewBuffer==NULL) | 119 | 0 | ErrHandler.MemoryError(); | 120 | 0 | if (Buffer!=NULL) | 121 | 0 | { | 122 | 0 | memcpy(NewBuffer,Buffer,AllocSize*sizeof(T)); | 123 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 124 | 0 | free(Buffer); | 125 | 0 | } | 126 | 0 | } | 127 | 2.45k | else | 128 | 2.45k | { | 129 | 2.45k | NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T)); | 130 | 2.45k | if (NewBuffer==NULL) | 131 | 0 | ErrHandler.MemoryError(); | 132 | 2.45k | } | 133 | 2.45k | Buffer=NewBuffer; | 134 | 2.45k | AllocSize=NewSize; | 135 | 2.45k | } | 136 | 459k | } |
Array<wchar_t>::Add(unsigned long) Line | Count | Source | 101 | 8.44k | { | 102 | 8.44k | BufSize+=Items; | 103 | 8.44k | if (BufSize>AllocSize) | 104 | 8.44k | { | 105 | 8.44k | if (MaxSize!=0 && BufSize>MaxSize) | 106 | 0 | { | 107 | 0 | ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize); | 108 | 0 | ErrHandler.MemoryError(); | 109 | 0 | } | 110 | | | 111 | 8.44k | size_t Suggested=AllocSize+AllocSize/4+32; | 112 | 8.44k | size_t NewSize=Max(BufSize,Suggested); | 113 | | | 114 | 8.44k | T *NewBuffer; | 115 | 8.44k | if (Secure) | 116 | 0 | { | 117 | 0 | NewBuffer=(T *)malloc(NewSize*sizeof(T)); | 118 | 0 | if (NewBuffer==NULL) | 119 | 0 | ErrHandler.MemoryError(); | 120 | 0 | if (Buffer!=NULL) | 121 | 0 | { | 122 | 0 | memcpy(NewBuffer,Buffer,AllocSize*sizeof(T)); | 123 | 0 | cleandata(Buffer,AllocSize*sizeof(T)); | 124 | 0 | free(Buffer); | 125 | 0 | } | 126 | 0 | } | 127 | 8.44k | else | 128 | 8.44k | { | 129 | 8.44k | NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T)); | 130 | 8.44k | if (NewBuffer==NULL) | 131 | 0 | ErrHandler.MemoryError(); | 132 | 8.44k | } | 133 | 8.44k | Buffer=NewBuffer; | 134 | 8.44k | AllocSize=NewSize; | 135 | 8.44k | } | 136 | 8.44k | } |
Unexecuted instantiation: Array<unsigned int>::Add(unsigned long) |
137 | | |
138 | | |
139 | | template <class T> void Array<T>::Alloc(size_t Items) |
140 | 167k | { |
141 | 167k | if (Items>AllocSize) |
142 | 2.20k | Add(Items-BufSize); |
143 | 165k | else |
144 | 165k | BufSize=Items; |
145 | 167k | } Array<unsigned char>::Alloc(unsigned long) Line | Count | Source | 140 | 166k | { | 141 | 166k | if (Items>AllocSize) | 142 | 1.95k | Add(Items-BufSize); | 143 | 164k | else | 144 | 164k | BufSize=Items; | 145 | 166k | } |
Array<UnpackFilter>::Alloc(unsigned long) Line | Count | Source | 140 | 664 | { | 141 | 664 | if (Items>AllocSize) | 142 | 0 | Add(Items-BufSize); | 143 | 664 | else | 144 | 664 | BufSize=Items; | 145 | 664 | } |
Array<wchar_t>::Alloc(unsigned long) Line | Count | Source | 140 | 504 | { | 141 | 504 | if (Items>AllocSize) | 142 | 252 | Add(Items-BufSize); | 143 | 252 | else | 144 | 252 | BufSize=Items; | 145 | 504 | } |
|
146 | | |
147 | | |
148 | | template <class T> void Array<T>::Reset() |
149 | 45.0k | { |
150 | 45.0k | if (Buffer!=NULL) |
151 | 0 | { |
152 | 0 | free(Buffer); |
153 | 0 | Buffer=NULL; |
154 | 0 | } |
155 | 45.0k | BufSize=0; |
156 | 45.0k | AllocSize=0; |
157 | 45.0k | } Line | Count | Source | 149 | 4.09k | { | 150 | 4.09k | if (Buffer!=NULL) | 151 | 0 | { | 152 | 0 | free(Buffer); | 153 | 0 | Buffer=NULL; | 154 | 0 | } | 155 | 4.09k | BufSize=0; | 156 | 4.09k | AllocSize=0; | 157 | 4.09k | } |
Line | Count | Source | 149 | 40.9k | { | 150 | 40.9k | if (Buffer!=NULL) | 151 | 0 | { | 152 | 0 | free(Buffer); | 153 | 0 | Buffer=NULL; | 154 | 0 | } | 155 | 40.9k | BufSize=0; | 156 | 40.9k | AllocSize=0; | 157 | 40.9k | } |
Unexecuted instantiation: Array<unsigned char>::Reset() |
158 | | |
159 | | |
160 | | // Reset buffer size, but preserve already allocated memory if any, |
161 | | // so we can reuse it without wasting time to allocation. |
162 | | template <class T> void Array<T>::SoftReset() |
163 | 218k | { |
164 | 218k | BufSize=0; |
165 | 218k | } Line | Count | Source | 163 | 13.8k | { | 164 | 13.8k | BufSize=0; | 165 | 13.8k | } |
Array<UnpackFilter30*>::SoftReset() Line | Count | Source | 163 | 27.7k | { | 164 | 27.7k | BufSize=0; | 165 | 27.7k | } |
Array<UnpackFilter>::SoftReset() Line | Count | Source | 163 | 7.57k | { | 164 | 7.57k | BufSize=0; | 165 | 7.57k | } |
Array<unsigned char>::SoftReset() Line | Count | Source | 163 | 169k | { | 164 | 169k | BufSize=0; | 165 | 169k | } |
|
166 | | |
167 | | |
168 | | template <class T> void Array<T>::operator =(Array<T> &Src) |
169 | 0 | { |
170 | 0 | Reset(); |
171 | 0 | Alloc(Src.BufSize); |
172 | 0 | if (Src.BufSize!=0) |
173 | 0 | memcpy((void *)Buffer,(void *)Src.Buffer,Src.BufSize*sizeof(T)); |
174 | 0 | } |
175 | | |
176 | | |
177 | | template <class T> void Array<T>::Push(T Item) |
178 | 462k | { |
179 | 462k | Add(1); |
180 | 462k | (*this)[Size()-1]=Item; |
181 | 462k | } Line | Count | Source | 178 | 2.49k | { | 179 | 2.49k | Add(1); | 180 | 2.49k | (*this)[Size()-1]=Item; | 181 | 2.49k | } |
Array<UnpackFilter>::Push(UnpackFilter) Line | Count | Source | 178 | 459k | { | 179 | 459k | Add(1); | 180 | 459k | (*this)[Size()-1]=Item; | 181 | 459k | } |
Array<unsigned char>::Push(unsigned char) Line | Count | Source | 178 | 54 | { | 179 | 54 | Add(1); | 180 | 54 | (*this)[Size()-1]=Item; | 181 | 54 | } |
Unexecuted instantiation: Array<unsigned int>::Push(unsigned int) |
182 | | |
183 | | |
184 | | template <class T> void Array<T>::Append(T *Items,size_t Count) |
185 | | { |
186 | | size_t CurSize=Size(); |
187 | | Add(Count); |
188 | | memcpy(Buffer+CurSize,Items,Count*sizeof(T)); |
189 | | } |
190 | | |
191 | | #endif |