Fix many MarkDown issues in {NOTES*,README*,HACKING,LICENSE}.md files
[openssl.git] / crypto / property / README.md
index b3f56cfa2f6e16388f6e31c1c2c9b943bb1a3581..9d97a69873052cdbb734ed405a6190dc21492770 100644 (file)
@@ -1,4 +1,8 @@
-Properties are associated with algorithms and are used to select between different implementations dynamically.
+Selecting algorithm implementations by properties
+=================================================
+
+Properties are associated with algorithms and are used to select between
+different implementations dynamically.
 
 This implementation is based on a number of assumptions:
 
@@ -23,7 +27,6 @@ This implementation is based on a number of assumptions:
 
 * Property queries can never add new property definitions.
 
-
 Some consequences of these assumptions are:
 
 * That definition is uncommon and queries are very common, we can treat
@@ -52,14 +55,15 @@ Some consequences of these assumptions are:
   properties are changed as doing so removes the need to index on both the
   global and requested property strings.
 
-
 The implementation:
 
-* property_lock.c contains some wrapper functions to handle the global
+* [property_lock.c](property_lock.c)
+  contains some wrapper functions to handle the global
   lock more easily.  The global lock is held for short periods of time with
   per algorithm locking being used for longer intervals.
 
-* property_string.c contains the string cache which converts property
+* [property_string.c](property_string.c)
+  contains the string cache which converts property
   names and values to small integer indices.  Names and values are stored in
   separate hash tables.  The two Boolean values, the strings "yes" and "no",
   are populated as the first two members of the value table.  All property
@@ -67,13 +71,15 @@ The implementation:
   provided to convert from an index back to the original string (this can be
   done by maintaining parallel stacks of strings if required).
 
-* property_parse.c contains the property definition and query parsers.
+* [property_parse.c](property_parse.c)
+  contains the property definition and query parsers.
   These convert ASCII strings into lists of properties.  The resulting
   lists are sorted by the name index.  Some additional utility functions
   for dealing with property lists are also included: comparison of a query
   against a definition and merging two queries into a single larger query.
 
-* property.c contains the main APIs for defining and using properties.
+* [property.c](property.c)
+  contains the main APIs for defining and using properties.
   Algorithms are discovered from their NID and a query string.
   The results are cached.
 
@@ -82,6 +88,7 @@ The implementation:
   without bounds and must garbage collect under-used entries.  The garbage
   collection does not have to be exact.
 
-* defn_cache.c contains a cache that maps property definition strings to
+* [defn_cache.c](defn_cache.c)
+  contains a cache that maps property definition strings to
   parsed properties.  It is used by property.c to improve performance when
   the same definition appears multiple times.