home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / clobss.pak / BSORTARY.CPO < prev    next >
Text File  |  1997-07-23  |  2KB  |  66 lines

  1. /*------------------------------------------------------------------------*/
  2. /*                                                                        */
  3. /*  BSORTARY.CPP                                                          */
  4. /*                                                                        */
  5. /*  Copyright Borland International 1991, 1993                            */
  6. /*  All Rights Reserved                                                   */
  7. /*                                                                        */
  8. /*------------------------------------------------------------------------*/
  9.  
  10. #if !defined( TEMPLATES )
  11. #define TEMPLATES
  12. #endif
  13.  
  14. #if 0
  15.  
  16. #if !defined( __SORTABLE_H )
  17. #include "classlib\obsolete\sortable.h"
  18. #endif  // __SORTABLE_H
  19.  
  20. #if !defined( __ARRAYS_H )
  21. #include "classlib\arrays.h"
  22. #endif  // __ARRAYS_H
  23.  
  24. void BI_ISObjectVector::add( Object _FAR *o )
  25. {
  26.     if( count_ >= lim )
  27.         resize( count_+1 );
  28.     unsigned loc = count_++;
  29.     while( loc > 0 && *(Sortable _FAR *)o < *(Sortable _FAR *)(void _FAR *)(data[loc-1]) )
  30.         {
  31.         data[loc] = data[loc-1];
  32.         loc--;
  33.         }
  34.     data[loc] = o;
  35. }
  36.  
  37. unsigned BI_ISObjectVector::find( void _FAR * obj ) const
  38. {
  39.     unsigned lower = 0;
  40.     unsigned upper = count_-1;
  41.     if( count_ != 0 )
  42.         {
  43.         while( lower < upper && upper != UINT_MAX )
  44.             {
  45.             unsigned middle = (lower+upper)/2;
  46.             if( *(const Sortable _FAR *)(void _FAR *)(data[middle]) ==
  47.                 *(const Sortable _FAR *)obj
  48.               )
  49.                 return middle;
  50.             if( *(const Sortable _FAR *)(const void _FAR *)(data[middle]) <
  51.                 *(const Sortable _FAR *)obj
  52.               )
  53.                 lower = middle+1;
  54.             else
  55.                 upper = middle-1;
  56.             }
  57.         }
  58.     if( lower == upper &&
  59.         *(const Sortable _FAR *)(const void _FAR *)(data[lower]) == *(const Sortable _FAR *)obj
  60.       )
  61.         return lower;
  62.     else
  63.         return UINT_MAX;
  64. }
  65. #endif
  66.