Skip to content

Commit 7370921

Browse files
committed
Add markdown formatted files for github project pages
1 parent 610df4b commit 7370921

File tree

2 files changed

+161
-0
lines changed

2 files changed

+161
-0
lines changed

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# libdivsufsort Change Log
2+
3+
See full changelog at: https://github.com/y-256/libdivsufsort/commits
4+
5+
## [2.0.1] - 2010-11-11
6+
### Fixed
7+
* Wrong variable used in `divbwt` function
8+
* Enclose some string variables with double quotation marks in include/CMakeLists.txt
9+
* Fix typo in include/CMakeLists.txt
10+
11+
## 2.0.0 - 2008-08-23
12+
### Changed
13+
* Switch the build system to [CMake](http://www.cmake.org/)
14+
* Improve the performance of the suffix-sorting algorithm
15+
16+
### Added
17+
* OpenMP support
18+
* 64-bit version of divsufsort
19+
20+
[Unreleased]: https://github.com/y-256/libdivsufsort/compare/2.0.1...HEAD
21+
[2.0.1]: https://github.com/y-256/libdivsufsort/compare/2.0.0...2.0.1

README.md

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
# libdivsufsort
2+
3+
libdivsufsort is a software library that implements a lightweight suffix array construction algorithm.
4+
5+
## News
6+
* 2015-03-21: The project has moved from [Google Code](http://code.google.com/p/libdivsufsort/) to [GitHub](https://github.com/y-256/libdivsufsort)
7+
8+
## Introduction
9+
This library provides a simple and an efficient C API to construct a suffix array and a Burrows-Wheeler transformed string from a given string over a constant-size alphabet.
10+
The algorithm runs in O(n log n) worst-case time using only 5n+O(1) bytes of memory space, where n is the length of
11+
the string.
12+
13+
## Build requirements
14+
* An ANSI C Compiler (e.g. GNU GCC)
15+
* [CMake](http://www.cmake.org/ "CMake") version 2.4.2 or newer
16+
* CMake-supported build tool
17+
18+
## Building on GNU/Linux
19+
1. Get the source code from GitHub. You can either
20+
* use git to clone the repository
21+
```
22+
git clone https://github.com/y-256/libdivsufsort.git
23+
```
24+
* or download a [zip file](../../archive/master.zip) directly
25+
2. Create a `build` directory in the package source directory.
26+
```shell
27+
$ cd libdivsufsort
28+
$ mkdir build
29+
$ cd build
30+
```
31+
3. Configure the package for your system.
32+
If you want to install to a different location, change the -DCMAKE_INSTALL_PREFIX option.
33+
```shell
34+
$ cmake -DCMAKE_BUILD_TYPE="Release" \
35+
-DCMAKE_INSTALL_PREFIX="/usr/local" ..
36+
```
37+
4. Compile the package.
38+
```shell
39+
$ make
40+
```
41+
5. (Optional) Install the library and header files.
42+
```shell
43+
$ sudo make install
44+
```
45+
46+
## API
47+
```c
48+
/* Data types */
49+
typedef int32_t saint_t;
50+
typedef int32_t saidx_t;
51+
typedef uint8_t sauchar_t;
52+
53+
/*
54+
* Constructs the suffix array of a given string.
55+
* @param T[0..n-1] The input string.
56+
* @param SA[0..n-1] The output array or suffixes.
57+
* @param n The length of the given string.
58+
* @return 0 if no error occurred, -1 or -2 otherwise.
59+
*/
60+
saint_t
61+
divsufsort(const sauchar_t *T, saidx_t *SA, saidx_t n);
62+
63+
/*
64+
* Constructs the burrows-wheeler transformed string of a given string.
65+
* @param T[0..n-1] The input string.
66+
* @param U[0..n-1] The output string. (can be T)
67+
* @param A[0..n-1] The temporary array. (can be NULL)
68+
* @param n The length of the given string.
69+
* @return The primary index if no error occurred, -1 or -2 otherwise.
70+
*/
71+
saidx_t
72+
divbwt(const sauchar_t *T, sauchar_t *U, saidx_t *A, saidx_t n);
73+
```
74+
75+
## Example Usage
76+
```c
77+
#include <stdio.h>
78+
#include <stdlib.h>
79+
#include <string.h>
80+
81+
#include <divsufsort.h>
82+
83+
int main() {
84+
// intput data
85+
char *Text = "abracadabra";
86+
int n = strlen(Text);
87+
int i, j;
88+
89+
// allocate
90+
int *SA = (int *)malloc(n * sizeof(int));
91+
92+
// sort
93+
divsufsort((unsigned char *)Text, SA, n);
94+
95+
// output
96+
for(i = 0; i < n; ++i) {
97+
printf("SA[%2d] = %2d: ", i, SA[i]);
98+
for(j = SA[i]; j < n; ++j) {
99+
printf("%c", Text[j]);
100+
}
101+
printf("$\n");
102+
}
103+
104+
// deallocate
105+
free(SA);
106+
107+
return 0;
108+
}
109+
```
110+
See the [examples](examples) directory for a few other examples.
111+
112+
## Benchmarks
113+
See [Benchmarks](https://github.com/y-256/libdivsufsort/blob/wiki/SACA_Benchmarks.md) page for details.
114+
115+
## License
116+
libdivsufsort is released under the [MIT license](LICENSE "MIT license").
117+
> The MIT License (MIT)
118+
>
119+
> Copyright (c) 2003 Yuta Mori All rights reserved.
120+
>
121+
> Permission is hereby granted, free of charge, to any person obtaining a copy
122+
> of this software and associated documentation files (the "Software"), to deal
123+
> in the Software without restriction, including without limitation the rights
124+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
125+
> copies of the Software, and to permit persons to whom the Software is
126+
> furnished to do so, subject to the following conditions:
127+
>
128+
> The above copyright notice and this permission notice shall be included in all
129+
> copies or substantial portions of the Software.
130+
>
131+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
132+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
133+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
134+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
135+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
136+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
137+
> SOFTWARE.
138+
139+
## Author
140+
* Yuta Mori

0 commit comments

Comments
 (0)