diff options
Diffstat (limited to 'ACE/apps/drwho/Binary_Search.h')
-rw-r--r-- | ACE/apps/drwho/Binary_Search.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/ACE/apps/drwho/Binary_Search.h b/ACE/apps/drwho/Binary_Search.h new file mode 100644 index 00000000000..ae8dc93cb29 --- /dev/null +++ b/ACE/apps/drwho/Binary_Search.h @@ -0,0 +1,71 @@ +/* -*- C++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// drwho +// +// = FILENAME +// Binary_Search.h +// +// = DESCRIPTION +// Defines a binary search abstraction for friend records. +// +// = AUTHOR +// Douglas C. Schmidt +// +// ============================================================================ + +#ifndef _BINARY_SEARCH_H +#define _BINARY_SEARCH_H + +#include "Search_Struct.h" + +class Binary_Search : public Search_Struct +{ + // = TITLE + // Defines a binary search abstraction for friend records. +public: + // = Initialization and termination method. + Binary_Search (void); + // Initialize the values for the iterators... + + virtual ~Binary_Search (void); + // Destructor. + + virtual Protocol_Record *get_next_entry (void); + // Returns the next friend in the sequence of sorted friends. Note + // that this function would be simplified if we expanded the + // iterator interface to include an "initialize" and "next" + // function! + + virtual Protocol_Record *get_each_entry (void); + // An iterator, similar to Binary_Search::get_next_friend, though in + // this case the friend records are returned in the order they + // appeared in the friend file, rather than in sorted order. Also, + // we skip over entries that don't have any hosts associated with + // them. + + virtual Protocol_Record *insert (const char *key_name, + int max_len = MAXUSERIDNAMELEN) = 0; + // This function is used to merge the <key_name> from server + // <host_name> into the sorted list of userids kept on the client's + // side. + + static int name_compare (const void *, const void *); + // This function is passed to qsort to perform the comparison + // between login names for two friends. + +protected: + Protocol_Record **current_ptr_; + int current_index_; + + Protocol_Record *protocol_record_; + Protocol_Record **sorted_record_; + + const char *buffer_; + int buffer_size_; +}; + +#endif /* _BINARY_SEARCH_H */ |