*** empty log message ***
[h316.git] / pc-tools / ldc2 / src / tool.cpp
index acebb5efc57573635a0d91f1a96885f36cfc16e8..cc04868ac8e7b663ac9f6308e0c7f54a143c5ae5 100644 (file)
@@ -25,18 +25,36 @@ int dump_vector(vector<string> strings){
 }
 
 /*!
- *\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]);
+  }
+}