cuikmerge.c
Go to the documentation of this file.
1 
2 #include "cuiksystem.h"
3 #include "parameters.h"
4 
5 #include "defines.h"
6 #include "error.h"
7 #include "filename.h"
8 
9 #include <string.h>
10 #include <stdlib.h>
11 #include <time.h>
12 #include <unistd.h>
13 
14 
65 int main(int argc, char **arg)
66 {
67  TCuikSystem cuiksystem; /* The set of equations */
68  Tparameters parameters; /* Parameters used in the Cuik process */
69 
70  Tfilename fcuikIn;
71  Tfilename fcuikAdded;
72  Tfilename fcuikOut;
73  Tfilename fparam;
74 
75  unsigned int i;
76  FILE *fs;
77 
78  if (argc>2)
79  {
80  /*Init parameters*/
81  CreateFileName(NULL,arg[2],NULL,PARAM_EXT,&fparam);
82  #if (_DEBUG>0)
83  printf("Reading parameter file : %s\n",GetFileFullName(&fparam));
84  #endif
85  InitParametersFromFile(GetFileFullName(&fparam),&parameters);
86 
87  /*keep equations in the original form*/
88  ChangeParameter(CT_DUMMIFY,0,&parameters);
89 
90  /*Read the problem from file*/
91  CreateFileName(NULL,arg[2],NULL,CUIK_EXT,&fcuikIn);
92  #if (_DEBUG>0)
93  printf("Reading cuik file : %s\n",GetFileFullName(&fcuikIn));
94  #endif
95  InitCuikSystemFromFile(&parameters,GetFileFullName(&fcuikIn),&cuiksystem);
96 
97  for(i=3;i<argc;i++)
98  {
99  /*Read the problem from file*/
100  CreateFileName(NULL,arg[i],NULL,CUIK_EXT,&fcuikAdded);
101  #if (_DEBUG>0)
102  printf("Reading cuik file : %s\n",GetFileFullName(&fcuikAdded));
103  #endif
104  AddCuikSystemFromFile(&parameters,GetFileFullName(&fcuikAdded),&cuiksystem);
105 
106  DeleteFileName(&fcuikAdded);
107  }
108 
109  /*Save the final cuiksystem */
110  CreateFileName(NULL,arg[2],arg[1],CUIK_EXT,&fcuikOut);
111  fs=fopen(GetFileFullName(&fcuikOut),"w");
112  if (!fs)
113  Error("Could not open the output file for the merged cuiksystem.");
114  #if (_DEBUG>0)
115  printf("Generating merged cuik file : %s\n",GetFileFullName(&fcuikOut));
116  #endif
117  PrintCuikSystem(&parameters,fs,&cuiksystem);
118  fclose(fs);
119 
120  /* link the parameter files (after the merge joints/links are no longer valid,
121  use cuikmerge boxes to address this issue) */
122  LinkFileNmeWithExtension(&fcuikIn,PARAM_EXT ,&fcuikOut);
123 
124  /*Remove the allocated objects*/
125  DeleteParameters(&parameters);
126  DeleteCuikSystem(&cuiksystem);
127 
128  DeleteFileName(&fparam);
129  DeleteFileName(&fcuikIn);
130  DeleteFileName(&fcuikOut);
131  }
132  else
133  {
134  fprintf(stderr," Wrong number of parameters.\n");
135  fprintf(stderr," Use:\n");
136  fprintf(stderr," cuikmerge <suffx> <problem filenames>.cuik \n");
137  fprintf(stderr," where <problem filenames> contains the kinematic equations to merge\n");
138  fprintf(stderr," (the '.cuik' extension is not required)\n");
139  }
140  return(EXIT_SUCCESS);
141 }
142 
Data structure to hold the information about the name of a file.
Definition: filename.h:248
void DeleteCuikSystem(TCuikSystem *cs)
Destructor.
Definition: cuiksystem.c:5113
Definition of the Tfilename type and the associated functions.
void Error(const char *s)
General error function.
Definition: error.c:80
#define PARAM_EXT
File extension for parameter files.
Definition: filename.h:131
#define CUIK_EXT
File extension for equation files.
Definition: filename.h:70
Error and warning functions.
void DeleteFileName(Tfilename *fn)
Destructor.
Definition: filename.c:205
void AddCuikSystemFromFile(Tparameters *p, char *filename, TCuikSystem *cs)
Adds information from a file.
Definitions of constants and macros used in several parts of the cuik library.
void InitCuikSystemFromFile(Tparameters *p, char *filename, TCuikSystem *cs)
Constructor from a file.
A table of parameters.
Definition of the TCuikSystem type and the associated functions.
void CreateFileName(char *path, char *name, char *suffix, char *ext, Tfilename *fn)
Constructor.
Definition: filename.c:22
int main(int argc, char **arg)
Main body of the cuikmerge application.
Definition: cuikmerge.c:65
void InitParametersFromFile(char *file, Tparameters *p)
Constructor from a file.
Definition: parameters.c:51
char * GetFileFullName(Tfilename *fn)
Gets the file full name (paht+name+extension).
Definition: filename.c:151
#define CT_DUMMIFY
Dummification level.
Definition: parameters.h:339
A cuiksystem, i.e., a set of variables and equations defining a position analysis problem...
Definition: cuiksystem.h:181
void DeleteParameters(Tparameters *p)
Destructor.
Definition: parameters.c:295
void PrintCuikSystem(Tparameters *p, FILE *f, TCuikSystem *cs)
Prints a cuiksystem.
Definition: cuiksystem.c:5022
void LinkFileNmeWithExtension(Tfilename *fn1, char *ext, Tfilename *fn2)
Creates a link to a given filename.
Definition: filename.c:177
Definition of the Tparameters type and the associated functions.
void ChangeParameter(unsigned int n, double v, Tparameters *p)
Sets the value for a particular parameter.
Definition: parameters.c:164