From 4982ea950822add928df949ded7a9f3cf4c2c748 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Sun, 27 Jan 2013 19:47:23 -0500 Subject: [PATCH] wrong markdown syntax... --- README.md | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 6d78db7..59fb7cd 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ##Overview Klib is a standalone and lightweight C library distributed under [MIT/X11 -license](1). Most components are independent of external libraries, except the +license][1]. Most components are independent of external libraries, except the standard C library, and independent of each other. To use a component of this library, you only need to copy a couple of files to your souce code tree without worrying about library dependencies. @@ -15,35 +15,35 @@ speed and memory use. ####Common components -* khash.h: generic hash table based on [double hashing](2). -* kbtree.h: generic search tree based on [B-tree](3). -* ksort.h: generic sort, including [introsort](4), [merge sort](5), [heap sort](6), [comb sort](7), [Knuth shuffle](8) and the [k-small](9) algorithm. -* kseq.h: generic stream buffer and a [FASTA](10)/[FASTQ](11) format parser. +* khash.h: generic hash table based on [double hashing][2]. +* kbtree.h: generic search tree based on [B-tree][3]. +* ksort.h: generic sort, including [introsort][4], [merge sort][5], [heap sort][6], [comb sort][7], [Knuth shuffle][8] and the [k-small][9] algorithm. +* kseq.h: generic stream buffer and a [FASTA][10]/[FASTQ][11] format parser. * kvec.h: generic dynamic array. -* klist.h: generic single-linked list and [memory pool](12). +* klist.h: generic single-linked list and [memory pool][12]. * kstring.{h,c}: basic string library. -* kmath.{h,c}: numerical routines including [MT19937-64](13) [pseudorandom generator](14), basic [nonlinear programming](15) and a few special math functions. +* kmath.{h,c}: numerical routines including [MT19937-64][13] [pseudorandom generator][14], basic [nonlinear programming][15] and a few special math functions. ####Components for more specific use cases -* ksa.c: constructing [suffix arrays](16) for strings with multiple sentinels, based on a revised [SAIS algorithm](17). +* ksa.c: constructing [suffix arrays][16] for strings with multiple sentinels, based on a revised [SAIS algorithm][17]. * knetfile.{h,c}: random access to remote files on HTTP or FTP. * kopen.c: smart stream opening. -* khmm.{h,c}: basic [HMM](18) library. -* ksw.(h,c}: Striped [Smith-Waterman algorithm](19). -* knhx.{h,c}: [Newick tree format](20) parser. +* khmm.{h,c}: basic [HMM][18] library. +* ksw.(h,c}: Striped [Smith-Waterman algorithm][19]. +* knhx.{h,c}: [Newick tree format][20] parser. ##Philosophy -For the implementation of generic [containers](21), klib extensively uses C +For the implementation of generic [containers][21], klib extensively uses C marcos. To use these data structures, you usually need to instantiate methods by expanding a long macro. This makes the source code look unusual or even ugly and adds difficulty to debugging. However, for efficient generic programming -in C where we do not have effective [template](22) syntax in C++, using marcos +in C where we do not have effective [template][22] syntax in C++, using marcos is the only solution. Only with marcos, you can write a generic container which, once instantiated, is able to achieve the same efficiency as a -type-specific container. Some generic libraries in C, such as [Glib](23), +type-specific container. Some generic libraries in C, such as [Glib][23], use the `void*` type to implement containers. These implementations are usually slower and use more memory than klib. @@ -51,19 +51,19 @@ are usually slower and use more memory than klib. ##Resources * Library documentations, if present, are available in the header files. Examples -can be found in the [test/](24) directory. +can be found in the [test/][24] directory. * An **obsolete** documentation of the hash table library can be found at -[SourceForget](25). -* [Blog post](26) describing the hash table library. -* [Blog post](27) on why using `void*` for generic programming may be inefficient. -* [Blog post](28) on the generic stream buffer. -* [Blog post](29) evaluating the performance of `kvec.h`. -* [Blog post](30) arguing B-tree may be a better data structure than a binary search tree. -* [Blog post](31) evaluating the performance of `khash.h` and `kbtree.h` among many other implementations. -[An older version](33) of the benchmark is also available. -* [Blog post](34) benchmarking internal sorting algorithms and implementations. -* [Blog post](32) on the k-small algorithm. -* [Blog post](35) on the Hooke-Jeeve's algorithm for nonlinear programming. +[SourceForget][25]. +* [Blog post][26] describing the hash table library. +* [Blog post][27] on why using `void*` for generic programming may be inefficient. +* [Blog post][28] on the generic stream buffer. +* [Blog post][29] evaluating the performance of `kvec.h`. +* [Blog post][30] arguing B-tree may be a better data structure than a binary search tree. +* [Blog post][31] evaluating the performance of `khash.h` and `kbtree.h` among many other implementations. +[An older version][33] of the benchmark is also available. +* [Blog post][34] benchmarking internal sorting algorithms and implementations. +* [Blog post][32] on the k-small algorithm. +* [Blog post][35] on the Hooke-Jeeve's algorithm for nonlinear programming. [1]: http://en.wikipedia.org/wiki/MIT_License [2]: http://en.wikipedia.org/wiki/Double_hashing -- 2.47.3