diff -c IV-3.1/iv/src/include/NLS/locale.h:1.2 IV-3.1/iv/src/include/NLS/locale.h:1.3 *** IV-3.1/iv/src/include/NLS/locale.h:1.2 Tue Apr 20 20:10:41 1993 --- IV-3.1/iv/src/include/NLS/locale.h Tue Apr 20 20:10:41 1993 *************** *** 37,46 **** --- 37,48 ---- class Locale { public: static const Locale& setlocale (); + static const Locale& setlocale (const char*); static const Locale& setlocale (const String&); static const Locale& setlocale (const Locale&); public: + Locale (const char*); Locale (const String&); Locale (const Locale&); *************** *** 48,53 **** --- 50,58 ---- const UniqueString& name () const; const UniqueString& codeset () const; + private: + LocaleRep* rep (const String&); + private: const LocaleRep *rep_; diff -c IV-3.1/iv/src/lib/NLS/locale.c:1.3 IV-3.1/iv/src/lib/NLS/locale.c:1.4 *** IV-3.1/iv/src/lib/NLS/locale.c:1.3 Tue Apr 20 20:10:53 1993 --- IV-3.1/iv/src/lib/NLS/locale.c Tue Apr 20 20:10:53 1993 *************** *** 53,59 **** --- 53,95 ---- Locale* Locale::default_; LocaleRepTable* Locale::table_; + Locale::Locale (const char* locale) { + rep_ = rep(String(locale)); + } + Locale::Locale (const String& locale) { + rep_ = rep(locale); + } + + Locale::Locale (const Locale& locale) { + rep_ = locale.rep_; + } + + const Locale& Locale::setlocale () { + if (default_ == nil) { + default_ = new Locale ("C"); + } + return *default_; + } + + const Locale& Locale::setlocale (const char* locale) { + return setlocale(Locale(locale)); + } + + const Locale& Locale::setlocale (const String& locale) { + return setlocale(Locale(locale)); + } + + const Locale& Locale::setlocale (const Locale& locale) { + if (default_ == nil) { + default_ = new Locale (locale); + } else { + default_->rep_ = locale.rep_; + } + return *default_; + } + + LocaleRep* Locale::rep (const String& locale) { if (table_ == nil) { // Initialization of LocaleRepTable; *************** *** 98,127 **** rep->name_ = new UniqueString(locale); table_->insert(*rep->name_, rep); } ! rep_ = rep; ! } ! ! Locale::Locale (const Locale& locale) { ! rep_ = locale.rep_; ! } ! ! const Locale& Locale::setlocale () { ! if (default_ == nil) { ! default_ = new Locale ("C"); ! } ! return *default_; ! } ! ! const Locale& Locale::setlocale (const String& locale) { ! return setlocale(Locale(locale)); ! } ! ! const Locale& Locale::setlocale (const Locale& locale) { ! if (default_ == nil) { ! default_ = new Locale (locale); ! } else { ! default_->rep_ = locale.rep_; ! } ! return *default_; } --- 134,139 ---- rep->name_ = new UniqueString(locale); table_->insert(*rep->name_, rep); } ! return rep; } diff -c IV-3.1/iv/src/lib/NLS/wregexp.c:1.3 IV-3.1/iv/src/lib/NLS/wregexp.c:1.4 *** IV-3.1/iv/src/lib/NLS/wregexp.c:1.3 Tue Apr 20 20:10:54 1993 --- IV-3.1/iv/src/lib/NLS/wregexp.c Tue Apr 20 20:10:54 1993 *************** *** 509,515 **** nlsFile file (IV_REGEXP_PATH); HitMap *map = nil; int word = nil; ! Locale locale(String("C")); while ((argc = file.getline (argv, argsize)) >= 0) { if (argc == 0) { --- 509,515 ---- nlsFile file (IV_REGEXP_PATH); HitMap *map = nil; int word = nil; ! Locale locale("C"); while ((argc = file.getline (argv, argsize)) >= 0) { if (argc == 0) {