Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalw / src / general / VectorUtility.h
1 /**
2  * Author: Mark Larkin
3  * 
4  * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
5  */
6 #ifndef VECTORUTILITY_H
7 #define VECTORUTILITY_H
8 #include <vector>
9
10 namespace vectorutils
11 {
12
13 /**
14  * The function mergeVectors will add the contents of 
15  * the other two vectors to the end of the first vector.
16  */
17 template<class T>
18 void mergeVectors(std::vector<T>* vecToAddTo, std::vector<T>* vector1, std::vector<T>* vector2)
19 {
20     typename std::vector<T>::iterator beginInsert = vecToAddTo->end();
21     typename std::vector<T>::iterator beginVec1 = vector1->begin();
22     typename std::vector<T>::iterator endVec1 = vector1->end();
23     typename std::vector<T>::iterator beginVec2 = vector2->begin();
24     typename std::vector<T>::iterator endVec2 = vector2->end();
25     
26     // Add the first vector
27     vecToAddTo->insert(beginInsert, beginVec1, endVec1);
28     
29     beginInsert = vecToAddTo->end();
30     // Add the second vector
31     vecToAddTo->insert(beginInsert, beginVec2, endVec2);
32 }
33
34 /**
35  * The function mergeVectors will add the contents of the second vector 
36  * to the end of the first vector.
37  */
38 template<class T>
39 void mergeVectors(std::vector<T>* vecToAddTo, std::vector<T>* vector1)
40 {
41     typename std::vector<T>::iterator beginInsert = vecToAddTo->end();
42     typename std::vector<T>::iterator beginVec1 = vector1->begin();
43     typename std::vector<T>::iterator endVec1 = vector1->end();
44     
45     // Add the first vector
46     vecToAddTo->insert(beginInsert, beginVec1, endVec1);
47 }
48
49 }
50
51 #endif