int rl_alphabetic (int c) { if (ALPHABETIC (c)) return (1); return (_rl_allow_pathname_alphabetic_chars && strchr (pathname_alphabetic_chars, c) != NULL); }
int match( const char *rna, const rna_t *mol, int t, int j ) /* Determine whether (t,j) is a valid base pair. */ { char a = rna[t], b = rna[j]; const cell_t *right = &mol->opt[t+1][j-1]; /* no sharp-turn condition */ int r = right->score == 0 || (right->a - t == 1 && j - right->b == 1) || (right->a - t > LOOP && j - right->b > LOOP); /* pair condition */ if (NUCLEOTIDE(a) && NUCLEOTIDE(b)) return r && ( (a == 'A' && b == 'U') || (a == 'U' && b == 'A') || (a == 'G' && b == 'C') || (a == 'C' && b == 'G')); /* If not nucleotide, but alphabetic, match. Otherwise, don't match. */ else return r && ALPHABETIC(a) && ALPHABETIC(b); }
int parse_options( param_t &options, int argc, const char **argv ) /* Parse command line options and return a status, informing the up stream * if the parameters weren't inputted correctly. */ { options.shrink_factor = options.low = options.high = options.erode = options.dilate = -1; options.prefix[0] = '\0'; for (int i = 1; i < argc; i++) { /* binary threshold */ if (strcmp(argv[i], "-t") == 0 && (argc - i) > 2) { if (!NUMERIC(argv[i+1][0]) || !NUMERIC(argv[i+2][0])) return 0; options.low = atoi(argv[++i]); options.high = atoi(argv[++i]); if (options.low < 0 || options.low > options.high || options.high > 255) return 0; } /* binary morpholoy */ else if (strcmp(argv[i], "-m") == 0 && (argc - i) > 2) { if (!NUMERIC(argv[i+1][0]) || !NUMERIC(argv[i+2][0])) return 0; options.erode = atoi(argv[++i]); options.dilate = atoi(argv[++i]); if (options.erode < 0 || options.dilate < 0) return 0; if (options.low == -1) { options.low = 40; options.high = 60; } } /* output file prefix */ else if (strcmp(argv[i], "-f") == 0 && (argc - i) > 1) { i++; for (int j = 0; j < strlen(argv[i]); j++) { if (!ALPHABETIC(argv[i][j])) return 0; } strcpy(options.prefix, argv[i]); } /* shrink factor */ else if (strcmp(argv[i], "-s") == 0 && (argc - i) > 1) { options.shrink_factor = atoi(argv[++i]); if (options.shrink_factor < 1) return 0; } else return 0; } if (options.shrink_factor < 0) options.shrink_factor = 1; if (options.prefix[0] == '\0') strcpy(options.prefix, "test"); return 1; } // parse_options()