File: fileBins.h

package info (click to toggle)
segemehl 0.3.4-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 2,024 kB
  • sloc: ansic: 35,270; makefile: 43; sh: 37
file content (198 lines) | stat: -rw-r--r-- 4,746 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/*
 *   segemehl - a read aligner
 *   Copyright (C) 2008-2017  Steve Hoffmann and Christian Otto
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */


#ifndef FILEBINS_H
#define FILEBINS_H

/*
 *  fileBins.h
 *  segemehl
 *
 *  Created by Steve Hoffmann on 09.02.10.
 *  Copyright 2010 University Leipzig. 
 *  All rights reserved.
 *
 */

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include "basic-types.h"
#include <pthread.h>


#ifndef HAVE_FSEEKO
    int fseeko(FILE *stream, off_t offset, int whence);
#endif

#ifndef HAVE_FTELLO
    off_t ftello(FILE *stream);
#endif

typedef struct bl_fileBinClass_s{
  char *classname;
  int classno;
  LLint start;
  LLint end;
} bl_fileBinClass_t;

typedef struct fileBin_s{
  FILE *fp;
  bl_fileBinClass_t *id;
  char *fname;
  unsigned char unlinked;
  off_t maxsize;
  pthread_mutex_t* mtx;
  unsigned char sorted;
  unsigned long long int lines;
} bl_fileBin_t;

typedef struct fileBins_s {
  Uint noofbins;
  bl_fileBin_t *b;
} bl_fileBins_t;

typedef struct fileBinDomain_s {
  char *domainname;
  Uint domainsize;
  bl_fileBins_t bins;
} bl_fileBinDomain_t;

typedef struct fileBinDomains_t {
  Uint noofdomains;
  Uint exp; //to the base of two
  bl_fileBinDomain_t *domain;
} bl_fileBinDomains_t;

typedef struct fileSort_s {
  LLint key;
  Uint len;
  char *line;
  off_t ptr;
} bl_fileSort_t;


void
bl_fileBinsUnlock (bl_fileBin_t *bin);

void
bl_fileBinsLock (bl_fileBin_t *bin);

void
bl_fileBinsCloseAll (bl_fileBins_t *bins);

void 
bl_fileBinsAdd(void *space, bl_fileBins_t* bins, Uint add,
    bl_fileBinClass_t* (*assigner)(void *, int, void *), void *nfo, char** names,
    char *template, Uint tmplen);

void
bl_fileBinsSortLine(void *space, bl_fileBins_t* bins, 
    unsigned char fileSort, char *filename, unsigned char ulink,
    LLint (*key)(char *, void*), void* nfo);

int
bl_fileBinsCClassSelect (void *id, void *nfo);

bl_fileBinClass_t*
bl_fileBinCClassAssign (void *space, int id, void *nfo);

int
bl_fileBinsClose(bl_fileBin_t *fx);

void
bl_fileBinsDestruct (void *space, bl_fileBins_t *bins);

void
bl_fileBinsInit(void *space, bl_fileBins_t *bins);

bl_fileBin_t *
bl_fileBinsFind (void *space, bl_fileBins_t* bins, 
    int (*selector)(void *id, void *nfo), void *nfo);

FILE*
bl_fileBinsOpen(void *space, bl_fileBin_t *bin, const char *mode);

void
bl_fileBinsWriteLn(void *space, bl_fileBin_t *fx, char *line);

unsigned char
bl_fileBinsIsOpen (bl_fileBin_t *fx);

char *
bl_fileBinsGetTemp(char *tmp, Uint tmplen);

void
bl_fileBinsGetInfo(bl_fileBins_t *);

void
bl_fileBinsCClassRename (void *space, bl_fileBins_t *fb, 
    char *bname, Uint bnamelen, char *suf, Uint suflen);

void
bl_fileBinsUnixSort (void *space, bl_fileBins_t *fb, const char *fieldstring, const char delim);

bl_fileBinDomains_t* 
bl_fileBinsDomainsInit(void *space, char **domainnames, Uint *domainsizes, 
    Uint noofdomains, Uint total, Uint avgbins, Uint maxbins, char *filenametemplate, Uint tmplen);

bl_fileBin_t *
bl_fileBinsDomainGetBin (bl_fileBinDomains_t *dms, char *domainname, Uint pos);

void
bl_fileBinDomainsDestruct (void *space, bl_fileBinDomains_t *dms);


void
bl_fileBinsDomainGetInfo (bl_fileBinDomains_t *dms);

void
bl_fileBinDomainsCloseAll (bl_fileBinDomains_t *dms);

void 
bl_fileBinDomainsUnixSort (void *space, bl_fileBinDomains_t *dms, const char *fldstr, const char delim); 


void
bl_fileBinDomainsMerge (void *space, bl_fileBinDomains_t *dms, 
    char *bname, Uint bnamelen, 
    char *suf, Uint suflen, char **header,
    unsigned char remove);

void
bl_fileBinDomainsSortMerge(void *space, bl_fileBinDomains_t *dms,
    char *bname, Uint bnamelen,
    char *suf, Uint suflen,
    const char *fldstr, const char delim,
    unsigned char remove);

Uint 
bl_fileBinsDomainsGetList(void *space, bl_fileBinDomains_t *domains, 
    char **domainnames[], Uint **domainsizes);

void
bl_fileBinDomainsDestruct (void *space, bl_fileBinDomains_t *dms);

  Uint 
bl_fileBinsDomainsGetNoOfNames(void *space, bl_fileBinDomains_t *domains);

void
bl_fileBinsDomainDump (bl_fileBinDomains_t *dms); 
#endif