home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / code / stl / readme.old < prev    next >
Encoding:
Text File  |  1995-05-19  |  4.7 KB  |  156 lines

  1.  
  2. The present implementation reflects the version of the STL document
  3. dated: August 18, 1994.
  4.  
  5. It has many minor differences from the previous versions. The most
  6. significant are:
  7.  
  8.     - inclusion of reference types in the allocators and containers;
  9.     - inclusion of the reverse iterator type and rbegin(), rend()
  10.       functions in the containers;
  11.     - inclusion of swap function in the containers;
  12.     - elimination of empty and restrictor throughout.
  13.  
  14. To illustrate how to use allocators, several types of allocators and
  15. containers using them are included.
  16.  
  17. The new version of STL has been compiled on:
  18.  
  19. Borland 4.0
  20. Lucid 3.2
  21. EDG
  22. IBM xlC
  23. IBM C set
  24.  
  25. It would take an effort to port this code to a cfront based
  26. compilers (e.g. HP). We have no experience with G++. 
  27.  
  28. There are some cases on which any of these compilers do not compile STL
  29. code, but it is usually corner cases. Moreover, on Borland, for
  30. example, STL does not compile the same cases on which Borland's own
  31. library does not compile. 
  32.  
  33. We did not have time to put the ifdefs that will work around different
  34. compiler bugs. The code is "generic" with only some workarounds for
  35. the Borland compiler in it.
  36.  
  37. Users of Borland need to either comment out the definitions of min and
  38. max in algobase.h or comment out Borland's min and max in stdlib.h.
  39.  
  40. You might encounter the following compiler problems:
  41.  
  42. 1. functions that take const T & as an argument do not match arguments
  43. of type T&. (Happens with max and min, for example.) The error
  44. messages on Borland say "Illegal structure operation in ...". Three
  45. possible workarounds are:
  46.     - replacing const T& with T&;
  47.     - replacing const T& with T;
  48.     - providing a manual instantiation of an offending function.
  49.  
  50. 2. Compiler matches templates incorrectly. That happens often if
  51. different memory models are used together. copy, for example, is
  52. instantiated for int* and then the same instance is used for copy(int
  53. __huge *, ...). This bug is very hard to catch, because it is only run
  54. time detectable. (Occasionally it might be indicated with a warning:
  55. "Suspicious pointer conversion".) 
  56.  
  57. 3. destroy does not work for your built-in type. (Most compilers have
  58. a variant of this one.) As a workaround, provide your own destroy for
  59. the type. (We include many of them in defalloc.h)
  60.  
  61.  
  62. The only non-implemented parts of the STL as described in the document
  63. are:
  64.  
  65. 1) Constructor templates and insert templates for containers taking
  66. two arbitrary iterators. They are simulated by a constructors taking
  67. pointers.
  68.  
  69. 2) Parameterization of containers with a template allocator is
  70. simulated with the help of cpp.
  71.  
  72. 3) Since bool is not yet implemented as a type on most compilers -
  73. vector<bool> is impemented as bit_vector.
  74.  
  75. 4) Default template arguments have to be always explicitly given.
  76.  
  77. The total amount of code that would need to be re-written when the
  78. corresponding features are supported is of the order of 20 lines.
  79.  
  80.  
  81. We intend to keep improving the implementation.  Therefore, we would
  82. appreciate your comments and algorithmic bug reports.  Please send them
  83. to:
  84.  
  85. stepanov@hpl.hp.com
  86.  
  87. or to:
  88.  
  89. lee@hpl.hp. com
  90.  
  91. or to:
  92.  
  93. musser@cs.rpi.edu
  94.  
  95. Please do not send us reports of compiler bugs.  Report them to your
  96. compiler vendor.
  97.  
  98. The following files are included:
  99.  
  100. algo.h - includes all the algorithms
  101. algobase.h - auxiliary file
  102. bool.h - simulates bool
  103. bvector.h - bit_vector
  104. defalloc.h - allocator
  105. deque.h - deque
  106. doc.bar.ps - postscript of the document with change bars from the previous 
  107.     version of the document
  108. doc.ps - postscript of the document
  109. faralloc.h - far_allocator 
  110. fdeque.h - far_deque
  111. flist.h - far_list
  112. fmap.h - far_map
  113. fmultmap.h - far_multimap
  114. fmultset.h - far_multiset
  115. fset.h - far_set
  116. function.h - operators, function objects and function adaptors
  117. hdeque.h - huge_deque
  118. heap.h - auxiliary file
  119. hlist.h - huge_list
  120. hmap.h - huge_map
  121. hmultmap.h - huge_multimap
  122. hmultset.h - huge_multiset
  123. hset.h - huge_set
  124. hugalloc.h - huge_allocator
  125. hvector.h - huge_vector
  126. iterator.h - iterator tags, stream iterators and iterator adaptors
  127. lbvector.h - long_bit_vector
  128. ldeque.h - long_deque
  129. list.h - list
  130. llist.h - long_list
  131. lmap.h - long_map
  132. lmultmap.h - long_multimap
  133. lmultset.h - long_multiset
  134. lngalloc.h - long_allocator
  135. lset.h - long_set
  136. map.h - map
  137. multimap.h - multimap
  138. multiset.h - multiset
  139. neralloc.h - near_allocator
  140. nmap.h - near_map
  141. nmultmap.h - near_multimap
  142. nmultset.h - near_multiset
  143. nset.h - near_set
  144. pair.h - pair
  145. projectn.h - auxiliary file
  146. random.cpp - random number generator. It should be compiled and 
  147.     linked if random_shuffle is used.
  148. set.h - set
  149. stack.h - container adaptors
  150. tempbuf.cpp - an auxiliary buffer for get_temporary_buffer; it should be 
  151.     compiled and linked if get_temporary_buffer, stable_partition,
  152.     inplace_merge or stable_sort are used.
  153. tempbuf.h - get_temporary_buffer
  154. tree.h - auxiliary file
  155. vector.h - vector
  156.