}
/*!
- *\brief Output a vector of strings to stderr.
+ *\brief Output a vector of strings.
*\arg strings A vector containing text.
+ *\arg fp A FILE pointer where to write to.
*\retval 0 The vector was empty.
*\retval 1 The vector contained text.
*/
-int dump_vector_err(vector<string> strings){
+int dump_vector_fp(vector<string> strings, FILE * fp){
int res=0;
for (vector<string>::iterator iter=strings.begin();iter<strings.end();iter++){
- char buffer[50000];
- snprintf(buffer,50000,"%s\n",(*iter).c_str());
- write (2,buffer,strlen(buffer));
+ fprintf(fp,"%s\n",(*iter).c_str());
res=1;
}
return res;
}
+
+/*!
+ *\brief add contents of one vector to another vector uniquely.
+ *\param target Reference to the target vector.
+ *\param source Reference to the vector whose contents are to be added
+ * to target.
+ */
+template<typename T>
+void merge_vector_unique(vector<T> &target, const vector<T> & source){
+ for (unsigned int isource=0; isource<source.size();isource++){
+ bool already_present=false;
+ for (int itarget=0;itarget<target.size();itarget++)
+ if (target[itarget]==source[isource]){
+ already_present=true;
+ break;
+ }
+ if (!already_present) target.insert(target.end().source[isource]);
+ }
+}