dstrings in read_params
This commit is contained in:
		@@ -200,13 +200,13 @@ int dstring_cmp_str(dstring dstring, char* str){
 | 
			
		||||
  unsigned int j;
 | 
			
		||||
  for(j=0;j<dstring.length && str[j]!='\0';j++){
 | 
			
		||||
    if(dstring.string[j]!=str[j]){
 | 
			
		||||
      return(0);
 | 
			
		||||
      return(1);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if(j==dstring.length && str[j]=='\0'){
 | 
			
		||||
    return(1);
 | 
			
		||||
    return(0);
 | 
			
		||||
  }
 | 
			
		||||
  return(0);
 | 
			
		||||
  return(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// format strings
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								src/main.c
									
									
									
									
									
								
							@@ -65,7 +65,7 @@ int print_params(nstrophy_parameters parameters, char* initfile_str, char* drivi
 | 
			
		||||
// read command line arguments
 | 
			
		||||
int read_args(int argc, const char* argv[], dstring* params, unsigned int* command, unsigned int* nthreads, dstring* savefile_str, dstring* utfile_str, dstring* resumefile_str);
 | 
			
		||||
int set_default_params(nstrophy_parameters* parameters);
 | 
			
		||||
int read_params(char* param_str, nstrophy_parameters* parameters, dstring* initfile_str, dstring* drivingfile_str);
 | 
			
		||||
int read_params(dstring param_str, nstrophy_parameters* parameters, dstring* initfile_str, dstring* drivingfile_str);
 | 
			
		||||
int set_parameter(char* lhs, char* rhs, nstrophy_parameters* parameters, bool* setN1, bool* setN2, dstring* initfile_str, dstring* drivingfile_str);
 | 
			
		||||
// read args from file
 | 
			
		||||
int args_from_file(dstring* params, unsigned int* command, unsigned int* nthreads, dstring* savefile_str, dstring* utfile_str, char* file_str);
 | 
			
		||||
@@ -134,7 +134,7 @@ int main (
 | 
			
		||||
  // set default params
 | 
			
		||||
  set_default_params(¶meters);
 | 
			
		||||
  // read params
 | 
			
		||||
  ret=read_params(dstring_to_str_noinit(¶m_str), ¶meters, &initfile_str, &drivingfile_str);
 | 
			
		||||
  ret=read_params(param_str, ¶meters, &initfile_str, &drivingfile_str);
 | 
			
		||||
  if(ret<0){
 | 
			
		||||
    return(-1);
 | 
			
		||||
  }
 | 
			
		||||
@@ -146,7 +146,7 @@ int main (
 | 
			
		||||
      return(-1);
 | 
			
		||||
    }
 | 
			
		||||
    // read params
 | 
			
		||||
    ret=read_params(dstring_to_str_noinit(¶m_str), ¶meters, &initfile_str, &drivingfile_str);
 | 
			
		||||
    ret=read_params(param_str, ¶meters, &initfile_str, &drivingfile_str);
 | 
			
		||||
    if(ret<0){
 | 
			
		||||
      return(-1);
 | 
			
		||||
    }
 | 
			
		||||
@@ -157,7 +157,7 @@ int main (
 | 
			
		||||
      return(-1);
 | 
			
		||||
    }
 | 
			
		||||
    // reread params
 | 
			
		||||
    ret=read_params(dstring_to_str_noinit(¶m_str), ¶meters, &initfile_str, &drivingfile_str);
 | 
			
		||||
    ret=read_params(param_str, ¶meters, &initfile_str, &drivingfile_str);
 | 
			
		||||
    if(ret<0){
 | 
			
		||||
      return(-1);
 | 
			
		||||
    }
 | 
			
		||||
@@ -505,77 +505,61 @@ int set_default_params(
 | 
			
		||||
 | 
			
		||||
// read parameters string
 | 
			
		||||
int read_params(
 | 
			
		||||
  char* param_str,
 | 
			
		||||
  dstring param_str,
 | 
			
		||||
  nstrophy_parameters* parameters,
 | 
			
		||||
  dstring* initfile_str,
 | 
			
		||||
  dstring* drivingfile_str
 | 
			
		||||
){
 | 
			
		||||
  int ret;
 | 
			
		||||
  // pointer in params
 | 
			
		||||
  char* ptr;
 | 
			
		||||
  unsigned int i;
 | 
			
		||||
  // buffer and associated pointer
 | 
			
		||||
  char *buffer_lhs, *lhs_ptr;
 | 
			
		||||
  char *buffer_rhs, *rhs_ptr;
 | 
			
		||||
  dstring buffer_lhs;
 | 
			
		||||
  dstring buffer_rhs;
 | 
			
		||||
  // whether N was set explicitly
 | 
			
		||||
  bool setN1=false;
 | 
			
		||||
  bool setN2=false;
 | 
			
		||||
  // whether lhs (false is rhs)
 | 
			
		||||
  bool lhs=true;
 | 
			
		||||
  // which buffer to add to
 | 
			
		||||
  dstring* buffer=&buffer_lhs;
 | 
			
		||||
 | 
			
		||||
  // init
 | 
			
		||||
  buffer_lhs=calloc(sizeof(char),strlen(param_str));
 | 
			
		||||
  lhs_ptr=buffer_lhs;
 | 
			
		||||
  *lhs_ptr='\0';
 | 
			
		||||
  buffer_rhs=calloc(sizeof(char),strlen(param_str));
 | 
			
		||||
  rhs_ptr=buffer_rhs;
 | 
			
		||||
  *rhs_ptr='\0';
 | 
			
		||||
  dstring_init(&buffer_lhs, param_str.length);
 | 
			
		||||
  dstring_init(&buffer_rhs, param_str.length);
 | 
			
		||||
 | 
			
		||||
  for(ptr=param_str;*ptr!='\0';ptr++){
 | 
			
		||||
    switch(*ptr){
 | 
			
		||||
  for(i=0;i<param_str.length;i++){
 | 
			
		||||
    switch(param_str.string[i]){
 | 
			
		||||
    case '=':
 | 
			
		||||
      // reset buffer
 | 
			
		||||
      rhs_ptr=buffer_rhs;
 | 
			
		||||
      *rhs_ptr='\0';
 | 
			
		||||
      lhs=false;
 | 
			
		||||
      buffer_rhs.length=0;
 | 
			
		||||
      buffer=&buffer_rhs;
 | 
			
		||||
      break;
 | 
			
		||||
    case ';':
 | 
			
		||||
      //set parameter
 | 
			
		||||
      ret=set_parameter(buffer_lhs, buffer_rhs, parameters, &setN1, &setN2, initfile_str, drivingfile_str);
 | 
			
		||||
      ret=set_parameter(dstring_to_str_noinit(&buffer_lhs), dstring_to_str_noinit(&buffer_rhs), parameters, &setN1, &setN2, initfile_str, drivingfile_str);
 | 
			
		||||
      if(ret<0){
 | 
			
		||||
	return ret;
 | 
			
		||||
      }
 | 
			
		||||
      // reset buffer
 | 
			
		||||
      lhs_ptr=buffer_lhs;
 | 
			
		||||
      *lhs_ptr='\0';
 | 
			
		||||
      lhs=true;
 | 
			
		||||
      buffer_lhs.length=0;
 | 
			
		||||
      buffer=&buffer_lhs;
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      // add to buffer
 | 
			
		||||
      if (lhs){
 | 
			
		||||
	*lhs_ptr=*ptr;
 | 
			
		||||
	lhs_ptr++;
 | 
			
		||||
	*lhs_ptr='\0';
 | 
			
		||||
      }
 | 
			
		||||
      else{
 | 
			
		||||
	*rhs_ptr=*ptr;
 | 
			
		||||
	rhs_ptr++;
 | 
			
		||||
	*rhs_ptr='\0';
 | 
			
		||||
      }
 | 
			
		||||
      dstring_append(param_str.string[i],buffer);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // set last param
 | 
			
		||||
  if (*param_str!='\0'){
 | 
			
		||||
    ret=set_parameter(buffer_lhs, buffer_rhs, parameters, &setN1, &setN2, initfile_str, drivingfile_str);
 | 
			
		||||
  if (param_str.length!=0){
 | 
			
		||||
    ret=set_parameter(dstring_to_str_noinit(&buffer_lhs), dstring_to_str_noinit(&buffer_rhs), parameters, &setN1, &setN2, initfile_str, drivingfile_str);
 | 
			
		||||
    if(ret<0){
 | 
			
		||||
      return ret;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // free vects
 | 
			
		||||
  free(buffer_lhs);
 | 
			
		||||
  free(buffer_rhs);
 | 
			
		||||
  dstring_free(buffer_lhs);
 | 
			
		||||
  dstring_free(buffer_rhs);
 | 
			
		||||
 | 
			
		||||
  // if N not set explicitly, set it to the smallest power of 2 that is >3*K+1 (the fft is faster on vectors whose length is a power of 2)
 | 
			
		||||
  if (!setN1){
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user