/* snp125CodingCoordless.h was originally generated by the autoSql program, which also 
 * generated snp125CodingCoordless.c and snp125CodingCoordless.sql.  This header links the database and
 * the RAM representation of objects. */

/* Copyright (C) 2012 The Regents of the University of California 
 * See README in this or parent directory for licensing information. */

#ifndef SNP125CODINGCOORDLESS_H
#define SNP125CODINGCOORDLESS_H

#define SNP125CODINGCOORDLESS_NUM_COLS 8

enum snp125CodingCoordlessFrame
    {
    snp125CodingCoordless1 = 0,
    snp125CodingCoordless2 = 1,
    snp125CodingCoordless3 = 2,
    snp125CodingCoordlessNA = 3,
    };
struct snp125CodingCoordless
/* Annotations of the effects of SNPs on translated protein sequence. */
    {
    struct snp125CodingCoordless *next;  /* Next in singly linked list. */
    char *name;	/* Reference SNP identifier */
    char *transcript;	/* Accession of the transcript modified by SNP */
    enum snp125CodingCoordlessFrame frame;	/* Frame of transcript's codon modified by SNP */
    int alleleCount;	/* Number of annotated alleles for SNP */
    unsigned short *funcCodes;	/* dbSNP function codes (e.g. 42=missense) */
    char **alleles;	/* Observed nucleotide alleles corresponding to funcCodes */
    char **codons;	/* Codons corresponding to funcCodes */
    char **peptides;	/* Amino acid sequence corresponding to funcCodes */
    };

struct snp125CodingCoordless *snp125CodingCoordlessLoad(char **row);
/* Load a snp125CodingCoordless from row fetched with select * from snp125CodingCoordless
 * from database.  Dispose of this with snp125CodingCoordlessFree(). */

struct snp125CodingCoordless *snp125CodingCoordlessLoadAll(char *fileName);
/* Load all snp125CodingCoordless from whitespace-separated file.
 * Dispose of this with snp125CodingCoordlessFreeList(). */

struct snp125CodingCoordless *snp125CodingCoordlessLoadAllByChar(char *fileName, char chopper);
/* Load all snp125CodingCoordless from chopper separated file.
 * Dispose of this with snp125CodingCoordlessFreeList(). */

#define snp125CodingCoordlessLoadAllByTab(a) snp125CodingCoordlessLoadAllByChar(a, '\t');
/* Load all snp125CodingCoordless from tab separated file.
 * Dispose of this with snp125CodingCoordlessFreeList(). */

struct snp125CodingCoordless *snp125CodingCoordlessCommaIn(char **pS, struct snp125CodingCoordless *ret);
/* Create a snp125CodingCoordless out of a comma separated string. 
 * This will fill in ret if non-null, otherwise will
 * return a new snp125CodingCoordless */

void snp125CodingCoordlessFree(struct snp125CodingCoordless **pEl);
/* Free a single dynamically allocated snp125CodingCoordless such as created
 * with snp125CodingCoordlessLoad(). */

void snp125CodingCoordlessFreeList(struct snp125CodingCoordless **pList);
/* Free a list of dynamically allocated snp125CodingCoordless's */

void snp125CodingCoordlessOutput(struct snp125CodingCoordless *el, FILE *f, char sep, char lastSep);
/* Print out snp125CodingCoordless.  Separate fields with sep. Follow last field with lastSep. */

#define snp125CodingCoordlessTabOut(el,f) snp125CodingCoordlessOutput(el,f,'\t','\n');
/* Print out snp125CodingCoordless as a line in a tab-separated file. */

#define snp125CodingCoordlessCommaOut(el,f) snp125CodingCoordlessOutput(el,f,',',',');
/* Print out snp125CodingCoordless as a comma separated list including final comma. */

/* -------------------------------- End autoSql Generated Code -------------------------------- */

#endif /* SNP125CODINGCOORDLESS_H */

