00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "strl.hpp"
00027 #include "uti.h"
00028
00029
00030
00031 INT _strl_cmp(const String *s1, const String *s2);
00032 INT _strl_rcmp(const String *s1, const String *s2);
00033
00034
00035
00036 VOID StrSet::add_s(const char *words )
00037 {
00038 StrList l(words);
00039 add_mv(l,FALSE);
00040 }
00041
00042
00043
00044 VOID StrSet::add_sf(const char *fwords, ... )
00045 {
00046 va_list v;
00047 va_start(v,fwords);
00048 add_s(fwords,v);
00049 va_end(v);
00050 }
00051
00052
00053
00054 VOID StrSet::add_s(const char *fwords, va_list v )
00055 {
00056 StrList l(fwords,v);
00057 add_mv(l,FALSE);
00058 }
00059
00060
00061
00062 VOID StrSet::add_s( const char *wordarray[] )
00063 {
00064 StrList l(wordarray);
00065 add_mv(l,FALSE);
00066 }
00067
00068
00069
00070 VOID StrSet::sort( BOOL reverse )
00071 {
00072 if (reverse) sortf(_strl_rcmp);
00073 else sortf(_strl_cmp);
00074 }
00075
00076
00077
00078 BOOL StrSet::OK ( VOID ) const
00079 {
00080 if (!(l.OK())) return FALSE;
00081 for (Lix p=first(); p!=0; p=next(p)) if (!item(p).OK()) return FALSE;
00082 return TRUE;
00083 }
00084
00085
00086
00087 std::ostream& operator << (std::ostream &st, const StrSet &l)
00088 {
00089 for (Lix p=l.first(); p!=0; p=l.next(p))
00090 st<< "\"" << l(p) << "\"" << std::endl;
00091 return st;
00092 }
00093
00094