Mercurial > repos > dawe > srf2fastq
diff srf2fastq/io_lib-1.12.2/io_lib/expFileIO.h @ 0:d901c9f41a6a default tip
Migrated tool version 1.0.1 from old tool shed archive to new tool shed repository
author | dawe |
---|---|
date | Tue, 07 Jun 2011 17:48:05 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srf2fastq/io_lib-1.12.2/io_lib/expFileIO.h Tue Jun 07 17:48:05 2011 -0400 @@ -0,0 +1,345 @@ +/* + * Copyright (c) Medical Research Council 1994. All rights reserved. + * + * Permission to use, copy, modify and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided that + * this copyright and notice appears in all copies. + * + * This file was written by James Bonfield, Simon Dear, Rodger Staden, + * as part of the Staden Package at the MRC Laboratory of Molecular + * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. + * + * MRC disclaims all warranties with regard to this software. + */ + +/* + * File: expFileIO.h + * Version: + * + * Description: + * + * Created: + * Updated: + * + */ + +#ifndef _EXPFILEIO_H_ +#define _EXPFILEIO_H_ + +#include <stdio.h> + +#include "io_lib/mFILE.h" +#include "io_lib/array.h" +#include "io_lib/os.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Definitions + */ +#define MAXIMUM_EFLT_LENGTH 4 +#define MAXIMUM_EFLTS 60 +#define EFLT_FILE_LINE_LENGTH 128 +#define EXP_FILE_LINE_LENGTH 128 + +typedef Array Exp_entries; + +typedef struct { + Array entries[MAXIMUM_EFLTS]; /* array of array of entries */ + int Nentries[MAXIMUM_EFLTS]; + mFILE *fp; +} Exp_info; + +#define NULL_Exp_info ( (Exp_info *) NULL ) + + + +#define exp_Nentries(E,I) ((E)->Nentries[I]) /* get last entry for line I */ + +#define exp_get_entry(E,I) (arr(char *,(E)->entries[I],(E)->Nentries[I] - 1)) /* get last entry for line I */ + +/* + * Allocate an set a new experiment file entry + */ +extern char *exp_set_entry(Exp_info *e, int eflt, char *str); + + + +/************************************************************* + * Experiment file line types + *************************************************************/ + +extern char eflt_feature_ids[MAXIMUM_EFLTS][MAXIMUM_EFLT_LENGTH+1]; + +#define EFLT_CF 0 +#define EFLT_CN 1 +#define EFLT_CS 2 +#define EFLT_CV 3 +#define EFLT_DR 4 +#define EFLT_DT 5 +#define EFLT_EN 6 +#define EFLT_EX 7 +#define EFLT_FM 8 +#define EFLT_LN 9 +#define EFLT_LT 10 +#define EFLT_MC 11 +#define EFLT_MN 12 +#define EFLT_MT 13 +#define EFLT_OP 14 +#define EFLT_PN 15 +#define EFLT_QR 16 +#define EFLT_SC 17 +#define EFLT_SF 18 +#define EFLT_SI 19 +#define EFLT_SL 20 +#define EFLT_SP 21 +#define EFLT_SQ 22 +#define EFLT_SR 23 +#define EFLT_ST 24 +#define EFLT_SV 25 +#define EFLT_TN 26 +#define EFLT_QL 27 +#define EFLT_PS 28 +#define EFLT_CC 29 +#define EFLT_SS 30 +#define EFLT_TG 31 +#define EFLT_ID 32 +#define EFLT_AQ 33 +#define EFLT_PR 34 +#define EFLT_LI 35 +#define EFLT_LE 36 +#define EFLT_TC 37 +#define EFLT_AC 38 +#define EFLT_BC 39 +#define EFLT_ON 40 +#define EFLT_AV 41 +#define EFLT_PC 42 +#define EFLT_SE 43 +#define EFLT_CL 44 +#define EFLT_CR 45 +#define EFLT_AP 46 +#define EFLT_CH 47 +#define EFLT_PD 48 +#define EFLT_WT 49 +#define EFLT_NT 50 +#define EFLT_GD 51 +#define EFLT_WL 52 +#define EFLT_WR 53 +#define EFLT_FT 54 +#define EFLT_LG 55 + + +/*************************************************************************************/ + + +/* + * Creates a string of 'range format' from the start and end points. + * The string (of form start..end) is also returned. + */ +extern char *exp_create_range(char *str, int start, int end); + +/* + * Extracts the start and end points from a range string. + * Returns 0 for success and -1 for failure. + */ +extern int exp_extract_range(char *str, int *start, int *end); + +/* + * Output an experiment file line + */ +extern int exp_print_line(mFILE *fp, Exp_info *e, int eflt, int i); + +/* + * Output an experiment file multi-line + */ +extern int exp_print_mline(mFILE *fp, Exp_info *e, int eflt, int i); + +extern int exp_print_seq(mFILE *fp, Exp_info *e, int eflt, int i); +/* + * Output an experiment file multi line + */ + + + +extern int exp_get_feature_index(char *e); + +extern void exp_destroy_info(Exp_info *e); +/* + * Destroy experiment file information + */ + + + +extern Exp_info *exp_create_info(void); +/* + * Allocate space for new experiment file information + */ + + + + + + + +extern Exp_info *exp_fread_info(FILE *fp); +extern Exp_info *exp_mfread_info(mFILE *fp); +extern Exp_info *exp_read_info(char *file); +/* + * Read in an experiment file and return handle + */ + + +char *opos2str(int2 *opos, int len, char *buf); +int str2opos(int2 *opos, int len, char *buf); +char *conf2str(int1 *conf, int len, char *buf); +int str2conf(int1 *conf, int len, char *buf); + +extern int exp_get_int(Exp_info *e, int id, int *val); +/* + * Get the integer for entry id + * returns: + * 0 - success + * 1 - no entry + */ + + +extern int exp_get_rng(Exp_info *e, int id, int *from, int *to); +/* + * Get the integer pair for entry id + * returns: + * 0 - success + * 1 - no entry + */ + + +extern int exp_get_str(Exp_info *e, int id, char *s, f_implicit s_l); +/* + * Get the string for entry id + * returns: + * 0 - success + * 1 - no entry + */ + + +extern int exp_put_int(Exp_info *e, int id, int *val); +/* + * Append the integer for entry id to the experiment file + * returns: + * 0 - success + * 1 - no update + */ + + +extern int exp_put_rng(Exp_info *e, int id, int *from, int *to); +/* + * Append the integer pair for entry id to the experiment file + * returns: + * 0 - success + * 1 - no update + */ + + + +extern int exp_put_str(Exp_info *e, int id, char *s, f_implicit s_l); +/* + * Append the string for entry id to the experiment file + * returns: + * 0 - success + * 1 - no update + */ + + +extern void exp_close(Exp_info *e); +/* + * Closes an experiment file (if open), but does not free it. + */ + +/* + * FORTRAN INTERFACE + */ + + + +extern f_int expopn_(char *fn, f_implicit fn_l); +/* + * FORTRAN interface to exp_open_file() + */ + +extern f_proc_ret expkil_(f_int *le); +/* + * FORTRAN interface to exp_destroy_info + */ + +extern f_int expri_(f_int *le, f_int *id, f_int *val); +/* + * FORTRAN interface to exp_get_int + */ + + +extern f_int exprr_(f_int *le, f_int *id, f_int *from, f_int *to); +/* + * FORTRAN interface to exp_get_rng + */ + + +extern f_int exprsa_(f_int *le, f_int *id, char *s, f_int *max_len, f_implicit s_l); +/* + * FORTRAN interface to exp_get_str workalike + * NOTE: for use with FORTRAN CHARACTER arrays instead CHARACTER strings + */ + +extern f_int exprs_(f_int *le, f_int *id, char *s, f_implicit s_l); +/* + * FORTRAN interface to exp_get_str workalike + * NOTE: for use with FORTRAN CHARACTER strings instead CHARACTER arrays + */ + +extern f_int expwi_(f_int *le, f_int *id, f_int *val); +/* + * FORTRAN interface to exp_put_int + */ + + +extern f_int expwr_(f_int *le, f_int *id, f_int *from, f_int *to); +/* + * FORTRAN interface to exp_put_rng + */ + + + +extern f_int expwsa_(f_int *le, f_int *id, char *s, f_int *max_len, f_implicit s_l); +/* + * FORTRAN interface to exp_put_str workalike + * NOTE: for use with FORTRAN CHARACTER arrays instead CHARACTER strings + */ + + + +extern f_int expws_(f_int *le, f_int *id, char *s, f_implicit s_l); +/* + * FORTRAN interface to exp_put_str workalike + * NOTE: for use with FORTRAN CHARACTER strings instead CHARACTER arrays + */ + + +extern void exp_print_file(FILE *fp, Exp_info *e); +extern void exp_print_mfile(mFILE *fp, Exp_info *e); + +/* + * FORTRAN interface to exp_create_range() + */ +extern void expcr_(char *str, f_int *start, f_int *end, f_implicit str_l); + +/* + * FORTRAN interface to exp_extract_range() + */ +extern f_int exper_(char *str, f_int *start, f_int *end, f_implicit str_l); + +#ifdef __cplusplus +} +#endif + +#endif /* _EXPFILEIO_H_ */ +