Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00095
00096
00097
00098 #ifndef __CCP4_Parser__
00099 #define __CCP4_Parser__
00100
00101
00102
00103 #include <stdio.h>
00104 #include"ccp4_utils.h"
00105 #include"ccp4_spg.h"
00106
00107
00108 #ifdef __cplusplus
00109 namespace CCP4 {
00110 extern "C" {
00111 typedef CSym::ccp4_symop ccp4_symop;
00112 #endif
00113
00114
00115
00116
00117 #define CCP4_PARSER_MAXLINELENGTH 200
00118 #define CCP4_PARSER_MAXFILENAMELENGTH 200
00121
00122
00123
00129 typedef struct {
00130 char *fullstring;
00131 char word[5];
00132 double value;
00133 int isstring;
00134 int strlength;
00135 int isnumber;
00136 int intdigits;
00138 int frcdigits;
00140 int isquoted;
00141 int isnull;
00142 int ibeg;
00143 int iend;
00144 } CCP4PARSERTOKEN;
00151 typedef struct {
00152
00153 char keyword[5];
00154 int ntokens;
00155 CCP4PARSERTOKEN *token;
00156
00157 FILE *fp;
00158 int maxtokens;
00159 char *delim;
00160 char *nulldelim;
00161 char *comment;
00162 double max_exponent;
00163 double min_exponent;
00164 } CCP4PARSERARRAY;
00167
00168
00169
00170
00171
00178 CCP4PARSERARRAY* ccp4_parse_start(const int maxtokens);
00179
00185 int ccp4_parse_end(CCP4PARSERARRAY *parsePtr);
00186
00187 int ccp4_parse_init_token(const CCP4PARSERARRAY *parsePtr, const int itok);
00188
00189 int ccp4_parse_delimiters(CCP4PARSERARRAY *parsePtr, const char *delim,
00190 const char *nulldelim);
00191 int ccp4_parse_comments(CCP4PARSERARRAY *parsePtr, const char *comment_chars);
00192
00193 int ccp4_parse_maxmin(CCP4PARSERARRAY *parsePtr, const double max_exponent,
00194 const double min_exponent);
00195 int ccp4_parse_reset(CCP4PARSERARRAY *parsePtr);
00196
00197 int ccp4_parse(const char *line, CCP4PARSERARRAY *parser);
00198
00215 int ccp4_parser(char *line, const int n, CCP4PARSERARRAY *parser,
00216 const int print);
00217
00218
00219
00226 int ccp4_keymatch(const char *keyin1, const char *keyin2);
00227
00228
00229
00235 char *strtoupper (char *str1, const char *str2);
00236
00237 char *strtolower (char *str1, const char *str2);
00238
00239 int strmatch (const char *str1, const char *str2);
00240
00241 int charmatch(const char character, const char *charlist);
00242
00243 int doublefromstr(const char *str, const double max_exp, const double min_exp,
00244 double *valuePtr, double *intvaluePtr, int *intdigitsPtr,
00245 double *frcvaluePtr, int *frcdigitsPtr,
00246 double *expvaluePtr, int *expdigitsPtr);
00247
00254 ccp4_symop symop_to_rotandtrn(const char *symchs_begin, const char *symchs_end);
00255
00265 const char * symop_to_mat4(const char *symchs_begin, const char *symchs_end, float *rot);
00266
00267
00268
00269
00270
00271 ccp4_symop mat4_to_rotandtrn(const float rsm[4][4]);
00272
00273
00274 char *rotandtrn_to_symop(char *symchs_begin, char *symchs_end, const ccp4_symop symop);
00275
00276 void rotandtrn_to_mat4(float rsm[4][4], const ccp4_symop symop);
00277
00287 char *mat4_to_symop(char *symchs_begin, char *symchs_end, const float rsm[4][4]);
00288
00298 char *mat4_to_recip_symop(char *symchs_begin, char *symchs_end, const float rsm[4][4]);
00299
00300 #ifdef __cplusplus
00301 }
00302 }
00303 #endif
00304
00305 #endif
00306
00307
00308
00309
00310
00311