diff options
author | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-05-03 03:23:17 +0000 |
---|---|---|
committer | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-05-03 03:23:17 +0000 |
commit | a549f00b15db9c1bce2e60f77c4f9de4231eddbd (patch) | |
tree | 53e6560d75c8cbff236eac88ab9776bcea8cad01 | |
parent | e18cae36d6c5cc4abc169848e9e6068a525a3d84 (diff) | |
download | ATCD-a549f00b15db9c1bce2e60f77c4f9de4231eddbd.tar.gz |
*** empty log message ***
-rw-r--r-- | ChangeLog-97a | 68 | ||||
-rw-r--r-- | ace/IOStream.cpp | 251 | ||||
-rw-r--r-- | ace/IOStream.h | 61 | ||||
-rw-r--r-- | ace/Map_Manager.cpp | 6 | ||||
-rw-r--r-- | ace/Map_Manager.h | 4 | ||||
-rw-r--r-- | ace/README | 1 | ||||
-rw-r--r-- | ace/Set.cpp | 263 | ||||
-rw-r--r-- | ace/Set.h | 64 | ||||
-rw-r--r-- | ace/config-hpux-10.x-g++.h | 1 | ||||
-rw-r--r-- | ace/config-irix5.3-g++.h | 2 | ||||
-rw-r--r-- | ace/config-mvs.h | 163 | ||||
-rw-r--r-- | ace/config-osf1-4.0-g++.h | 1 | ||||
-rw-r--r-- | ace/config-osf1-4.0.h | 1 | ||||
-rw-r--r-- | ace/config-sunos4-g++.h | 2 | ||||
-rw-r--r-- | ace/config-sunos5.4-g++.h | 1 | ||||
-rw-r--r-- | ace/config-sunos5.5-g++.h | 1 | ||||
-rw-r--r-- | ace/config-unixware-2.01-g++.h | 1 | ||||
-rw-r--r-- | ace/config-vxworks5.2-g++.h | 1 | ||||
-rw-r--r-- | apps/Gateway/Gateway/proxy_config | 2 |
19 files changed, 525 insertions, 369 deletions
diff --git a/ChangeLog-97a b/ChangeLog-97a index 413ea249b8c..5827942f231 100644 --- a/ChangeLog-97a +++ b/ChangeLog-97a @@ -1,5 +1,55 @@ +Fri May 2 14:57:56 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu> + + * ace/Map_Manager.cpp: Added a no-op destructor to ACE_Map_Entry + just to keep some compilers happy. Thanks to Chuck Gehr for + reporting this. + + * ace/config-osf1-4.0.h: Added + + #define ACE_LACKS_IOSTREAM_FX + #define ACE_LACKS_LINEBUFFERED_STREAMBUF + #define ACE_LACKS_SIGNED_CHAR + + Thanks to James CE Johnson <jjohnson@lads.com> for reporting + this. + + * ace/Timer_{Wheel,Heap,List}_T.h: Fixed a typo in all these + classes that was failing to put the keyword "class" after + "friend." Also, replaced the use of the typedef with the + expanded name of the class to work around problems with DEC + C++. Thanks to James CE Johnson <jjohnson@lads.com> for + reporting this. + + * ace/Set: Added a find() method that will return the "ith" + element in the set. + + * ace/Set: Added copy constructors and assignment operators to all + the ACE_*_Set classes. + + * ace/Set.cpp: Changed the implementation of ACE_Unbounded_Set to + use a dummy node and a circular list. This improves performance + and also makes it possible to implement "queue" semantics for + inserting at the tail of the set. + + * ace/config-osf1-4.0.h: Added the ACE_HAS_STRING_CLASS macro. + Thanks to James CE Johnson <jcej@lads.com> for this. + + * ace/IOStream: Added the ACE_HAS_STRING_CLASS macro to + replace the nasty #ifdefs we had previously. Thanks to + James CE Johnson <jcej@lads.com> for this. + + * ace/config*.g++: Added ACE_HAS_STRING_CLASS for all the GNU + compilers and Win32. + + * ace/config-mvs.h: Added a new version that contains support for + IBM OS/390 r2. Thanks to Chuck Gehr for this. + Fri May 02 08:14:30 1997 David L. Levine <levine@cs.wustl.edu> + * examples/ASX/Event_Server/Transceiver/transceiver.cpp: removed + specializations of ACE Guards because they're in libGateway. + Thanks to Joey Zhu <joey.zhu@wcom.com> for reporting this problem. + * examples/ASX/Event_Server/Transceiver/{Makefile,transceiver.cpp}: added template specializations to transceiver.cpp so that it no longer needs to be linked with libGateway. @@ -22,24 +72,6 @@ Fri May 02 08:14:30 1997 David L. Levine <levine@cs.wustl.edu> * tests/Conn_Test.cpp: changed some fprintf print specifiers to avoid g++ warnings about printing pointer values. -Thu May 1 10:16:34 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu> - - * ace/config-osf1-4.0.h: Added - - #define ACE_LACKS_IOSTREAM_FX - #define ACE_LACKS_LINEBUFFERED_STREAMBUF - #define ACE_LACKS_SIGNED_CHAR - - Thanks to James CE Johnson <jjohnson@lads.com> for reporting - this. - - * ace/Timer_{Wheel,Heap,List}_T.h: Fixed a typo in all these - classes that was failing to put the keyword "class" after - "friend." Also, replaced the use of the typedef with the - expanded name of the class to work around problems with DEC - C++. Thanks to James CE Johnson <jjohnson@lads.com> for - reporting this. - Thu May 01 00:05:59 1997 <irfan@TWOSTEP> * tests/Time_Service_Test.cpp (main): Made sure that the backing diff --git a/ace/IOStream.cpp b/ace/IOStream.cpp index 79e28154d74..92143eb727f 100644 --- a/ace/IOStream.cpp +++ b/ace/IOStream.cpp @@ -18,7 +18,7 @@ class myiostream : public iostream { public: - myiostream& operator>>(String & s) + myiostream& operator>> (String & s) { ... } @@ -28,19 +28,19 @@ int i; String s; - myiostream foo(...); + myiostream foo (...); foo >> s; // OK - // invokes myiostream::operator>>(String&) returning myiostream& + // invokes myiostream::operator>> (String&) returning myiostream& foo >> i; // OK - // invokes iostream::operator>>(int&) returning iostream& + // invokes iostream::operator>> (int&) returning iostream& foo >> i >> s; // BAD - // invokes iostream::operator>>(int&) then iostream::operator>>(String&) + // invokes iostream::operator>> (int&) then iostream::operator>> (String&) // // What has happened is that the first >> is invoked on the base class and returns // a reference to iostream. The second >> has no idea of the ACE_IOStream and @@ -52,12 +52,12 @@ class myiostream : public iostream { public: - myiostream& operator>>(int & i) + myiostream& operator>> (int & i) { - return((myiostream&)iostream::operator>>(i)); + return ((myiostream&)iostream::operator>> (i)); } - myiostream& operator>>(String & s) + myiostream& operator>> (String & s) { ... } @@ -67,41 +67,39 @@ int i; String s; - myiostream foo(...); + myiostream foo (...); foo >> s; // OK - // invokes myiostream::operator>>(String&) returning myiostream& + // invokes myiostream::operator>> (String&) returning myiostream& foo >> i; // OK - // invokes myiostream::operator>>(int&) returning myiostream& + // invokes myiostream::operator>> (int&) returning myiostream& foo >> i >> s; // OK - // Because you provided operator>>(int&) in class myiostream, that + // Because you provided operator>> (int&) in class myiostream, that // function will be invoked by the first >>. Since it returns // a myiostream&, the second >> will be invoked as desired. */ -/////////////////////////////////////////////////////////////////////////// - -#if ! defined( ACE_IOSTREAM_BUILDING_TEMPLATE ) +#if ! defined (ACE_IOSTREAM_BUILDING_TEMPLATE) ACE_Time_Value * -ACE_Streambuf_T::recv_timeout( ACE_Time_Value * tv ) +ACE_Streambuf_T::recv_timeout (ACE_Time_Value * tv) { - ACE_Time_Value * rval = recv_timeout_; - if( tv ) - { - recv_timeout_value_ = *tv; - recv_timeout_ = &recv_timeout_value_; - } - else - recv_timeout_ = NULL; + ACE_Time_Value * rval = recv_timeout_; + if (tv) + { + recv_timeout_value_ = *tv; + recv_timeout_ = &recv_timeout_value_; + } + else + recv_timeout_ = NULL; - return rval; + return rval; } int @@ -110,7 +108,7 @@ ACE_Streambuf_T::underflow (void) // If input mode is not set, any attempt to read from the stream is // a failure. - if (!(mode_ & ios::in)) + if (! (mode_ & ios::in)) return EOF; // If base () is empty then this is the first time any get/put @@ -172,7 +170,7 @@ ACE_Streambuf_T::underflow (void) // setp (0, 0); - // Like the case where base () is false, we now point base() + // Like the case where base () is false, we now point base () // to use our private get buffer. setb (this->eback_saved_, @@ -227,7 +225,7 @@ int ACE_Streambuf_T::overflow (int c) { // Check to see if output is allowed at all. - if (!(mode_ & ios::out)) + if (! (mode_ & ios::out)) return EOF; // First invokation of a get or put function @@ -339,26 +337,26 @@ ACE_Streambuf_T::sync (void) int ACE_Streambuf_T::flushbuf (void) { - // pptr() is one character beyond the last character put - // into the buffer. pbase() points to the beginning of - // the put buffer. Unless pptr() is greater than pbase() + // pptr () is one character beyond the last character put + // into the buffer. pbase () points to the beginning of + // the put buffer. Unless pptr () is greater than pbase () // there is nothing to be sent to the peer. // - if( pptr() <= pbase() ) + if (pptr () <= pbase ()) return 0; // 4/12/97 -- JCEJ // Kludge!!! // If the remote side shuts down the connection, an attempt to - // send() to the remote will result in the message 'Broken Pipe' + // send () to the remote will result in the message 'Broken Pipe' // I think this is an OS message, I've tracked it down to the // ACE_OS::write () function. That's the last one to be called // before the message. I can only test this on Linux though, so // I don't know how other systems will react. // - // To get around this gracefully, I do a PEEK recv() with an - // immediate (nearly) timeout. recv() is much more graceful - // on it's failure. If we get -1 from recv() not due to timeout + // To get around this gracefully, I do a PEEK recv () with an + // immediate (nearly) timeout. recv () is much more graceful + // on it's failure. If we get -1 from recv () not due to timeout // then we know we're SOL. // // Q: Is 'errno' threadsafe? Should the section below be a @@ -366,12 +364,12 @@ ACE_Streambuf_T::flushbuf (void) // // // char tbuf[1]; - // ACE_Time_Value to(0,1); - // if( this->recv( tbuf, 1, MSG_PEEK, &to ) == -1 ) + // ACE_Time_Value to (0,1); + // if (this->recv (tbuf, 1, MSG_PEEK, &to) == -1) // { - // if( errno != ETIME ) + // if (errno != ETIME) // { - // perror("OOPS preparing to send to peer"); + // perror ("OOPS preparing to send to peer"); // return EOF; // } // } @@ -385,7 +383,7 @@ ACE_Streambuf_T::flushbuf (void) // data as there is waiting. send guarantees that all // of the data will be sent or an error will be returned. // - if( this->send( pbase(), pptr() - pbase() ) == -1 ) + if (this->send (pbase (), pptr () - pbase ()) == -1) { return EOF; } @@ -399,15 +397,15 @@ ACE_Streambuf_T::flushbuf (void) } int -ACE_Streambuf_T::get_one_byte ( void ) +ACE_Streambuf_T::get_one_byte (void) { // The recv function will return immediately if there is no data // waiting. So, we use recv_n to wait for exactly one byte to come // from the peer. Later, we can use recv to see if there is - // anything else in the buffer. (Ok, we could use flags to tell it + // anything else in the buffer. (Ok, we could use flags to tell it // to block but I like this better.) - if( this->recv_n( base(), 1, MSG_PEEK, recv_timeout_ ) != 1 ) + if (this->recv_n (base (), 1, MSG_PEEK, recv_timeout_) != 1) return EOF; return 1; @@ -421,13 +419,13 @@ ACE_Streambuf_T::fillbuf (void) // Invoke recv_n to get exactly one byte from the remote. This // will block until something shows up. // - if( get_one_byte() == EOF ) + if (get_one_byte () == EOF) return EOF; // Now, get whatever else may be in the buffer. This will return if // there is nothing in the buffer. - int bc = this->recv ( base(), blen(), recv_timeout_ ); + int bc = this->recv (base (), blen (), recv_timeout_); // recv will give us -1 if there was a problem. If there was // nothing waiting to be read, it will give us 0. That isn't an @@ -438,7 +436,7 @@ ACE_Streambuf_T::fillbuf (void) // Move the get pointer to reflect the number of bytes we just read. - setg (base (), base (), base () + bc ); + setg (base (), base (), base () + bc); // Return the byte-read-count including the one from <get_one_byte> return bc; @@ -449,32 +447,32 @@ ACE_Streambuf_T::ACE_Streambuf_T (u_int streambuf_size, int io_mode) put_mode_ (2), mode_ (io_mode), streambuf_size_ (streambuf_size), - recv_timeout_(NULL) + recv_timeout_ (NULL) { - (void)reset_get_buffer(); - (void)reset_put_buffer(); + (void)reset_get_buffer (); + (void)reset_put_buffer (); } -u_int ACE_Streambuf_T::streambuf_size(void) +u_int ACE_Streambuf_T::streambuf_size (void) { return streambuf_size_; } -u_int ACE_Streambuf_T::get_waiting(void) +u_int ACE_Streambuf_T::get_waiting (void) // Return the number of bytes not yet gotten. // eback + get_waiting = gptr { return this->gptr_saved_ - this->eback_saved_; } -u_int ACE_Streambuf_T::get_avail(void) +u_int ACE_Streambuf_T::get_avail (void) // Return the number of bytes in the get area (includes some already gotten); // eback + get_avail = egptr { return this->egptr_saved_ - this->eback_saved_; } -u_int ACE_Streambuf_T::put_avail(void) +u_int ACE_Streambuf_T::put_avail (void) // Return the number of bytes to be 'put' onto the stream media. // pbase + put_avail = pptr { @@ -482,14 +480,14 @@ u_int ACE_Streambuf_T::put_avail(void) } char * -ACE_Streambuf_T::reset_get_buffer(char * newBuffer, u_int _streambuf_size, u_int _gptr, u_int _egptr ) +ACE_Streambuf_T::reset_get_buffer (char * newBuffer, u_int _streambuf_size, u_int _gptr, u_int _egptr) // // Typical usage: // -// u_int newGptr = otherStream->get_waiting(); -// u_int newEgptr = otherStream->get_avail(); -// char * newBuf = otherStream->reset_get_buffer(); -// char * oldgetbuf = myStream->reset_get_buffer( newBuf, otherStream->streambuf_size(), newGptr, newEgptr ); +// u_int newGptr = otherStream->get_waiting (); +// u_int newEgptr = otherStream->get_avail (); +// char * newBuf = otherStream->reset_get_buffer (); +// char * oldgetbuf = myStream->reset_get_buffer (newBuf, otherStream->streambuf_size (), newGptr, newEgptr); // // 'myStream' now has the get buffer of 'otherStream' and can use it in any way. // 'otherStream' now has a new, empty get buffer. @@ -513,9 +511,9 @@ ACE_Streambuf_T::reset_get_buffer(char * newBuffer, u_int _streambuf_size, u_int // the variables below. Initially, they all point to the beginning // of our read-dedicated buffer. // - if( newBuffer ) + if (newBuffer) { - if( streambuf_size_ != _streambuf_size ) + if (streambuf_size_ != _streambuf_size) return NULL; this->eback_saved_ = newBuffer; } @@ -531,19 +529,19 @@ ACE_Streambuf_T::reset_get_buffer(char * newBuffer, u_int _streambuf_size, u_int // invoked on the first get operation. setg (0, 0, 0); - reset_base(); + reset_base (); return rval; } char * -ACE_Streambuf_T::reset_put_buffer(char * newBuffer, u_int _streambuf_size, u_int _pptr ) +ACE_Streambuf_T::reset_put_buffer (char * newBuffer, u_int _streambuf_size, u_int _pptr) // // Typical usage: // -// u_int newPptr = otherStream->put_avail(); -// char * newBuf = otherStream->reset_put_buffer(); -// char * oldputbuf = otherStream->reset_put_buffer( newBuf, otherStream->streambuf_size(), newPptr ); +// u_int newPptr = otherStream->put_avail (); +// char * newBuf = otherStream->reset_put_buffer (); +// char * oldputbuf = otherStream->reset_put_buffer (newBuf, otherStream->streambuf_size (), newPptr); // { char * rval = this->pbase_saved_; @@ -561,9 +559,9 @@ ACE_Streambuf_T::reset_put_buffer(char * newBuffer, u_int _streambuf_size, u_int // Again to switch quickly between modes, we keep copies of // these three pointers. // - if( newBuffer ) + if (newBuffer) { - if( streambuf_size_ != _streambuf_size ) + if (streambuf_size_ != _streambuf_size) return NULL; this->pbase_saved_ = newBuffer; } @@ -579,13 +577,13 @@ ACE_Streambuf_T::reset_put_buffer(char * newBuffer, u_int _streambuf_size, u_int // to any put operator. setp (0, 0); - reset_base(); + reset_base (); return rval; } void -ACE_Streambuf_T::reset_base(void) +ACE_Streambuf_T::reset_base (void) { // Until we experience the first get or put operation, we do not // know what our current IO mode is. @@ -619,8 +617,8 @@ ACE_Streambuf_T::~ACE_Streambuf_T (void) // streambuf objects, we can be input-only, output-only or both. template <class STREAM> -ACE_Streambuf<STREAM>::ACE_Streambuf (STREAM *peer, u_int streambuf_size, int io_mode ) - : ACE_Streambuf_T( streambuf_size, io_mode ), peer_ (peer) +ACE_Streambuf<STREAM>::ACE_Streambuf (STREAM *peer, u_int streambuf_size, int io_mode) + : ACE_Streambuf_T (streambuf_size, io_mode), peer_ (peer) { // A streambuf allows for unbuffered IO where every character is // read as requested and written as provided. To me, this seems @@ -649,15 +647,15 @@ ACE_Streambuf<STREAM>::ACE_Streambuf (STREAM *peer, u_int streambuf_size, int io // STREAM. template <class STREAM> -ACE_IOStream<STREAM>::ACE_IOStream ( STREAM & stream, u_int streambuf_size ) - : iostream(streambuf_ = new ACE_Streambuf<STREAM> ((STREAM *) this, streambuf_size)), - STREAM(stream) +ACE_IOStream<STREAM>::ACE_IOStream (STREAM & stream, u_int streambuf_size) + : iostream (streambuf_ = new ACE_Streambuf<STREAM> ((STREAM *) this, streambuf_size)), + STREAM (stream) { } template <class STREAM> -ACE_IOStream<STREAM>::ACE_IOStream ( u_int streambuf_size ) - : iostream(streambuf_ = new ACE_Streambuf<STREAM> ((STREAM *) this, streambuf_size)) +ACE_IOStream<STREAM>::ACE_IOStream (u_int streambuf_size) + : iostream (streambuf_ = new ACE_Streambuf<STREAM> ((STREAM *) this, streambuf_size)) { } @@ -680,14 +678,14 @@ ACE_IOStream<STREAM>::close (void) } template <class STREAM> ACE_IOStream<STREAM> & -ACE_IOStream<STREAM>::operator>>(ACE_Time_Value *& tv ) +ACE_IOStream<STREAM>::operator>> (ACE_Time_Value *& tv) { - ACE_Time_Value * old_tv = this->streambuf_->recv_timeout(tv); + ACE_Time_Value * old_tv = this->streambuf_->recv_timeout (tv); tv = old_tv; return *this; } -#if (defined(__GNUC__) && !defined (CHORUS)) || defined(ACE_WIN32) +#if (ACE_HAS_STRING_CLASS) // A simple string operator. The base iostream has 'em for char* but // that isn't always the best thing for a String. If we don't provide @@ -696,7 +694,7 @@ ACE_IOStream<STREAM>::operator>>(ACE_Time_Value *& tv ) template <class STREAM> ACE_IOStream<STREAM> & ACE_IOStream<STREAM>::operator>> (ACE_IOStream_String & v) { - if( ipfx0() ) + if (ipfx0 ()) { char c; iostream::operator>> (c); @@ -705,7 +703,7 @@ ACE_IOStream<STREAM>::operator>> (ACE_IOStream_String & v) continue; } - isfx(); + isfx (); return *this; } @@ -714,19 +712,17 @@ ACE_IOStream<STREAM>::operator>> (ACE_IOStream_String & v) template <class STREAM> ACE_IOStream<STREAM> & ACE_IOStream<STREAM>::operator<< (ACE_IOStream_String & v) { - if( opfx() ) - { + if (opfx ()) + { #if defined (ACE_WIN32) - for( int i = 0 ; i < v.GetLength() ; ++i ) + for (int i = 0 ; i < v.GetLength () ; ++i) #else - for( u_int i = 0 ; i < (u_int)v.length() ; ++i ) + for (u_int i = 0 ; i < (u_int) v.length () ; ++i) #endif - { - this->put( v[i] ); - } - } + this->put (v[i]); + } - osfx(); + osfx (); return *this; } @@ -739,38 +735,31 @@ ACE_IOStream<STREAM>::operator<< (ACE_IOStream_String & v) template <class STREAM> ACE_IOStream<STREAM> & ACE_IOStream<STREAM>::operator>> (QuotedString & str) { - if( ipfx0() ) - { - char c; - - if( !(*this >> c) ) // eat space up to the first char - { - // this->set(ios::eofbit|ios::failbit); - return *this; - } + if (ipfx0 ()) + { + char c; - str = ""; // Initialize the string + if (! (*this >> c)) // eat space up to the first char + // this->set (ios::eofbit|ios::failbit); + return *this; - // if we don't have a quote, append until we see space - if (c != '"') - { - for( str = c ; this->get(c) && !isspace(c) ; str += c ); - } - else - { - for( ; this->get(c) && c != '"' ; str += c ) - { - if (c == '\\') - { - this->get(c); - if (c != '"') - str += '\\'; - } - } - } - } + str = ""; // Initialize the string + + // if we don't have a quote, append until we see space + if (c != '"') + for (str = c ; this->get (c) && !isspace (c) ; str += c) + continue; + else + for (; this->get (c) && c != '"' ; str += c) + if (c == '\\') + { + this->get (c); + if (c != '"') + str += '\\'; + } + } - isfx(); + isfx (); return *this; } @@ -778,27 +767,23 @@ ACE_IOStream<STREAM>::operator>> (QuotedString & str) template <class STREAM> ACE_IOStream<STREAM> & ACE_IOStream<STREAM>::operator<< (QuotedString & str) { - if( opfx() ) + if (opfx ()) { - this->put('"'); - for( u_int i = 0 ; i < str.length() ; ++i ) + this->put ('"'); + for (u_int i = 0 ; i < str.length () ; ++i) { - if( str[i] == '"' ) - this->put('\\'); - this->put( str[i] ); + if (str[i] == '"') + this->put ('\\'); + this->put (str[i]); } - this->put('"'); + this->put ('"'); } - osfx(); + osfx (); return *this; } - -/////////////////////////////////////////////////////////////////////////// - - -#endif /* (__GNUC__ && ! CHORUS) || ACE_WIN32 */ +#endif /* ACE_HAS_STRING_CLASS */ #endif /* ACE_IOSTREAM_C */ diff --git a/ace/IOStream.h b/ace/IOStream.h index 86865241ef6..0b1ef15ce28 100644 --- a/ace/IOStream.h +++ b/ace/IOStream.h @@ -83,49 +83,42 @@ #include "ace/INET_Addr.h" #include <iomanip.h> -#if defined (__GNUC__) && !defined (CHORUS) -#include <String.h> -typedef String ACE_IOStream_String; -#endif /* __GNUC__ */ -// +#if defined (ACE_HAS_STRING_CLASS) #if defined (ACE_WIN32) typedef CString ACE_IOStream_String; +#else +#include <String.h> +typedef String ACE_IOStream_String; #endif /* ACE_WIN32 */ +#endif /* ACE_HAS_STRING_CLASS */ -#if defined(__GNUC__) || defined(ACE_WIN32) +#if defined (ACE_HAS_STRING_CLASS) class QuotedString : public ACE_IOStream_String { public: - inline QuotedString() { - *this = ""; - } - inline QuotedString(const char * c) { - *this = ACE_IOStream_String(c); - } - inline QuotedString(const ACE_IOStream_String& s) { - *this = s; - } - inline QuotedString& operator=(const ACE_IOStream_String& s) { - return (QuotedString&) ACE_IOStream_String::operator=(s); - } - inline QuotedString & operator =(const char c) { - return (QuotedString&) ACE_IOStream_String::operator=(c); - } - inline QuotedString & operator =(const char* c) { - return (QuotedString&) ACE_IOStream_String::operator=(c); - } - inline bool operator < (const QuotedString& s) const { - return *(ACE_IOStream_String *)this < (ACE_IOStream_String)s; - } + inline QuotedString (void) { *this = ""; } + inline QuotedString (const char * c) { *this = ACE_IOStream_String (c); } + inline QuotedString (const ACE_IOStream_String& s) { *this = s; } + inline QuotedString& operator= (const ACE_IOStream_String& s) + { + return (QuotedString&) ACE_IOStream_String::operator= (s); + } + inline QuotedString & operator = (const char c) { + return (QuotedString&) ACE_IOStream_String::operator= (c); + } + inline QuotedString & operator = (const char* c) { + return (QuotedString&) ACE_IOStream_String::operator= (c); + } + inline bool operator < (const QuotedString& s) const { + return * (ACE_IOStream_String *)this < (ACE_IOStream_String)s; + } #if defined (ACE_WIN32) - inline int length(void) { - return this->GetLength(); - } -#endif + inline int length (void) { return this->GetLength (); } +#endif /* ACE_WIN32 */ }; -#endif /* __GNUC__ || ACE_WIN32 */ +#endif /* ACE_HAS_STRING_CLASS */ /////////////////////////////////////////////////////////////////////////// @@ -517,7 +510,7 @@ public: // The only ambituity in the multiple inheritance is the close() // function. -#if defined(__GNUC__) || defined(ACE_WIN32) +#if defined (ACE_HAS_STRING_CLASS) virtual ACE_IOStream & operator>>(ACE_IOStream_String & v); // A simple string operator. The base iostream has 'em for char* // but that isn't always the best thing for a String. If we don't @@ -532,7 +525,7 @@ public: virtual ACE_IOStream & operator<<(QuotedString &v); // The converse of the QuotedString put operator. -#endif /* __GNUC__ || ACE_WIN32 */ +#endif /* ACE_HAS_STRING_CLASS */ // = Using the macros to provide get/set operators. #if !defined (ACE_LACKS_IOSTREAM_SETGET) diff --git a/ace/Map_Manager.cpp b/ace/Map_Manager.cpp index 96639b94df5..3bb1a9f7d2f 100644 --- a/ace/Map_Manager.cpp +++ b/ace/Map_Manager.cpp @@ -17,6 +17,12 @@ ACE_ALLOC_HOOK_DEFINE(ACE_Map_Entry) template <class EXT_ID, class INT_ID> void +ACE_Map_Entry<EXT_ID, INT_ID>::~ACE_Map_Entry (void) +{ + // No-op just to keep some compilers happy... +} + +template <class EXT_ID, class INT_ID> void ACE_Map_Entry<EXT_ID, INT_ID>::dump (void) const { ACE_TRACE ("ACE_Map_Entry<EXT_ID, INT_ID>::dump"); diff --git a/ace/Map_Manager.h b/ace/Map_Manager.h index 23190077974..c93c0768fc9 100644 --- a/ace/Map_Manager.h +++ b/ace/Map_Manager.h @@ -36,6 +36,10 @@ struct ACE_Map_Entry int is_free_; // Keeps track whether entry is free or not. + ~ACE_Map_Entry (void); + // We need this destructor to keep some compilers from complaining. + // It's just a no-op, however. + void dump (void) const; // Dump the state of an object. diff --git a/ace/README b/ace/README index 37d6a8dbada..57a5c48af03 100644 --- a/ace/README +++ b/ace/README @@ -113,6 +113,7 @@ ACE_HAS_STREAMS Platform supports STREAMS ACE_HAS_STREAM_PIPES Platform supports STREAM pipes ACE_HAS_STRERROR Compiler/platform supports strerror () ACE_HAS_STRICT Use the STRICT compilation mode on Win32. +ACE_HAS_STRING_CLASS Platform/Compiler supports a String class (e.g., GNU or Win32). ACE_HAS_STRUCT_NETDB_DATA Compiler/platform has strange hostent API for socket *_r() calls ACE_HAS_STRUCT_PROTOENT_DATA Compiler/platform has strange protoent API for socket *_r() calls ACE_HAS_SUNOS4_GETTIMEOFDAY SunOS 4 style prototype. diff --git a/ace/Set.cpp b/ace/Set.cpp index 716d526fd57..c6c3bfcbd4a 100644 --- a/ace/Set.cpp +++ b/ace/Set.cpp @@ -47,6 +47,30 @@ ACE_Fixed_Set<T, SIZE>::~ACE_Fixed_Set (void) } template <class T, size_t SIZE> +ACE_Fixed_Set<T, SIZE>::ACE_Fixed_Set (const ACE_Fixed_Set<T, SIZE> &fs) + : cur_size_ (fs.cur_size_) +{ + ACE_TRACE ("ACE_Fixed_Set<T>::ACE_Fixed_Set"); + + for (size_t i = 0; i < this->cur_size_; i++) + this->search_structure_[i] = fs.search_structure_[i]; +} + +template <class T, size_t SIZE> void +ACE_Fixed_Set<T, SIZE>::operator = (const ACE_Fixed_Set<T, SIZE> &fs) +{ + ACE_TRACE ("ACE_Fixed_Set<T>::operator ="); + + if (this == &fs) + return; + + this->cur_size_ = bs.cur_size_; + + for (size_t i = 0; i < this->cur_size_; i++) + this->search_structure_[i] = fs.search_structure_[i]; +} + +template <class T, size_t SIZE> ACE_Fixed_Set<T, SIZE>::ACE_Fixed_Set (void) : cur_size_ (0), max_size_ (SIZE) @@ -71,6 +95,23 @@ ACE_Fixed_Set<T, SIZE>::find (const T &item) const } template <class T, size_t SIZE> int +ACE_Fixed_Set<T, SIZE>::find (T &item, size_t index) const +{ + ACE_TRACE ("ACE_Fixed_Set<T, SIZE>::find"); + + if (index > this->cur_size_ + || this->search_structure_[index].is_free_ != 0) + return 0; + else + { + item = this->search_structure_[i].item_; + return 1; + } + + return 0; +} + +template <class T, size_t SIZE> int ACE_Fixed_Set<T, SIZE>::insert (const T &item) { @@ -215,6 +256,40 @@ ACE_Bounded_Set<T>::ACE_Bounded_Set (void) } template <class T> +ACE_Bounded_Set<T>::ACE_Bounded_Set (const ACE_Bounded_Set<T> &bs) + : cur_size_ (bs.cur_size_), + max_size_ (bs.max_size_) +{ + ACE_TRACE ("ACE_Bounded_Set<T>::ACE_Bounded_Set"); + + ACE_NEW (this->search_structure_, ACE_Bounded_Set<T>::Search_Structure[this->max_size_]); + + for (size_t i = 0; i < this->cur_size_; i++) + this->search_structure_[i] = bs.search_structure_[i]; +} + +template <class T> void +ACE_Bounded_Set<T>::operator = (const ACE_Bounded_Set<T> &bs) +{ + ACE_TRACE ("ACE_Bounded_Set<T>::operator ="); + + if (this == &bs) + return; + else if (this->max_size_ < bs.cur_size_) + { + delete [] this->search_structure_; + ACE_NEW (this->search_structure_, + ACE_Bounded_Set<T>::Search_Structure[bs.cur_size_]); + this->max_size_ = bs.cur_size_; + } + + this->cur_size_ = bs.cur_size_; + + for (size_t i = 0; i < this->cur_size_; i++) + this->search_structure_[i] = bs.search_structure_[i]; +} + +template <class T> ACE_Bounded_Set<T>::ACE_Bounded_Set (size_t size) : cur_size_ (0), max_size_ (size) @@ -241,6 +316,23 @@ ACE_Bounded_Set<T>::find (const T &item) const } template <class T> int +ACE_Bounded_Set<T>::find (T &item, size_t index) const +{ + ACE_TRACE ("ACE_Bounded_Set<T>::find"); + + if (index > this->cur_size_ + || this->search_structure_[index].is_free_ != 0) + return 0; + else + { + item = this->search_structure_[i].item_; + return 1; + } + + return 0; +} + +template <class T> int ACE_Bounded_Set<T>::insert (const T &item) { ACE_TRACE ("ACE_Bounded_Set<T>::insert"); @@ -402,38 +494,135 @@ ACE_Unbounded_Set<T>::dump (void) const // ACE_TRACE ("ACE_Unbounded_Set<T>::dump"); } -template <class T> -ACE_Unbounded_Set<T>::~ACE_Unbounded_Set (void) +template <class T> void +ACE_Unbounded_Set<T>::copy_nodes (const ACE_Unbounded_Set<T> &us) { -// ACE_TRACE ("ACE_Unbounded_Set<T>::~ACE_Unbounded_Set"); - while (this->head_ != 0) + for (ACE_Set_Node<T> *curr = us.head_->next_; + curr != us.head_; + curr = curr->next_) + this->insert_tail (curr->item_); +} + +template <class T> void +ACE_Unbounded_Set<T>::delete_nodes (void) +{ + ACE_Set_Node<T> *curr = this->head_->next_; + + // Keep looking until we've hit the dummy node. + + while (curr != this->head_) { - ACE_Set_Node<T> *temp = this->head_; - this->head_ = this->head_->next_; - this->cur_size_--; + ACE_Set_Node<T> *temp = curr; + curr = curr->next_; delete temp; + this->cur_size_--; } + + // Reset the list to be a circular list with just a dummy node. + this->head_->next_ = this->head_; +} + +template <class T> +ACE_Unbounded_Set<T>::~ACE_Unbounded_Set (void) +{ +// ACE_TRACE ("ACE_Unbounded_Set<T>::~ACE_Unbounded_Set"); + + this->delete_nodes (); + + // Delete the dummy node. + delete this->head_; + this->head_ = 0; } template <class T> int ACE_Unbounded_Set<T>::find (const T &item) const { // ACE_TRACE ("ACE_Unbounded_Set<T>::find"); - for (ACE_Set_Node<T> *temp = this->head_; - temp != 0; - temp = temp->next_) - if (temp->item_ == item) - return 1; + // Set <item> into the dummy node. + this->head_->item_ = item; + + ACE_Set_Node<T> *temp = this->head_->next_; + + // Keep looping until we find the item. + while (!(temp->item_ == item)) + temp = temp->next_; - return 0; + // If we found the dummy node then it's not really there, otherwise, + // it is there. + return temp == this->head_ ? 0 : 1; +} + +template <class T> int +ACE_Unbounded_Set<T>::find (T &item, size_t index) const +{ + ACE_TRACE ("ACE_Unbounded_Set<T>::find"); + + ACE_Set_Node<T> *curr = this->head_->next_; + + size_t i; + + for (i = 0; i < this->cur_size_; i++) + { + if (i == index) + break; + + curr = curr->next_; + } + + if (i < this->cur_size_) + { + ACE_ASSERT (curr != this->head_); + item = curr->item_; + return 1; + } + else + return 0; } template <class T> ACE_Unbounded_Set<T>::ACE_Unbounded_Set (void) - : head_ (0), + : head_ (new ACE_Set_Node<T>), cur_size_ (0) { // ACE_TRACE ("ACE_Unbounded_Set<T>::ACE_Unbounded_Set"); + // Make the list circular by pointing it back to itself. + this->head_->next_ = this->head_; +} + +template <class T> +ACE_Unbounded_Set<T>::ACE_Unbounded_Set (const ACE_Unbounded_Set<T> &us) + : head_ (new ACE_Set_Node<T>), + cur_size_ (us.cur_size_) +{ + ACE_TRACE ("ACE_Unbounded_Set<T>::ACE_Unbounded_Set"); + + this->head_->next_ = this->head_; + this->copy_nodes (us); +} + +template <class T> void +ACE_Unbounded_Set<T>::operator = (const ACE_Unbounded_Set<T> &us) +{ + ACE_TRACE ("ACE_Unbounded_Set<T>::operator ="); + + if (this == &us) + return; + + this->delete_nodes (); + this->copy_nodes (us); +} + +// Insert the new node at the tail of the list. + +template <class T> int +ACE_Unbounded_Set<T>::insert_tail (const T &item) +{ +// ACE_TRACE ("ACE_Unbounded_Set<T>::insert"); + ACE_Set_Node<T> *temp; + ACE_NEW_RETURN (temp, ACE_Set_Node<T> (item, this->head_->next_), -1); + this->head_->next_ = temp; + this->cur_size_++; + return 0; } template <class T> int @@ -441,11 +630,7 @@ ACE_Unbounded_Set<T>::insert (const T &item) { // ACE_TRACE ("ACE_Unbounded_Set<T>::insert"); if (this->find (item) == 0) - { - ACE_NEW_RETURN (this->head_, ACE_Set_Node<T> (item, this->head_), -1); - this->cur_size_++; - return 0; - } + return this->insert_tail (item); else return 1; } @@ -454,29 +639,26 @@ template <class T> int ACE_Unbounded_Set<T>::remove (const T &item) { // ACE_TRACE ("ACE_Unbounded_Set<T>::remove"); - ACE_Set_Node<T> *prev = 0; - ACE_Set_Node<T> *temp; - for (temp = this->head_; - temp != 0; - temp = temp->next_) - { - if (temp->item_ == item) - break; - prev = temp; - } + // Insert the item to be founded into the dummy node. + this->head_->item_ = item; - if (temp == 0) - return 0; - else if (prev == 0) // Deleting the front of the list. - this->head_ = this->head_->next_; - else - prev->next_ = temp->next_; + ACE_Set_Node<T> *curr = this->head_; - this->cur_size_--; + while (!(curr->next_->item_ == item)) + curr = curr->next_; - delete temp; - return 1; + if (curr->next_ == this->head_) + return 0; // Item was not found. + else + { + ACE_Set_Node<T> *temp = curr->next_; + // Skip over the node that we're deleting. + curr->next_ = temp->next_; + this->cur_size_--; + delete temp; + return 1; + } } ACE_ALLOC_HOOK_DEFINE(ACE_Unbounded_Set_Iterator) @@ -489,7 +671,8 @@ ACE_Unbounded_Set_Iterator<T>::dump (void) const template <class T> ACE_Unbounded_Set_Iterator<T>::ACE_Unbounded_Set_Iterator (ACE_Unbounded_Set<T> &s) - : current_ (s.head_) + : current_ (s.head_->next_), + set_ (s) { // ACE_TRACE ("ACE_Unbounded_Set_Iterator<T>::ACE_Unbounded_Set_Iterator"); } @@ -506,7 +689,7 @@ template <class T> int ACE_Unbounded_Set_Iterator<T>::next (T *&item) { // ACE_TRACE ("ACE_Unbounded_Set_Iterator<T>::next"); - if (this->current_ == 0) + if (this->current_ == this->set_.head_) return 0; else { diff --git a/ace/Set.h b/ace/Set.h index 3621a5acb40..2c1f5a563da 100644 --- a/ace/Set.h +++ b/ace/Set.h @@ -51,6 +51,10 @@ public: private: ACE_Set_Node<T> *current_; + // Pointer to the current node in the iteration. + + ACE_Unbounded_Set<T> &set_; + // Pointer to the set we're iterating over. }; // Forward declaration (use the "Cheshire Cat" approach to information @@ -71,14 +75,27 @@ friend class ACE_Unbounded_Set_Iterator<T>; public: // = Initialization and termination methods. ACE_Unbounded_Set (void); + // Constructor. + + ACE_Unbounded_Set (const ACE_Unbounded_Set<T> &); + // Copy constructor. + + void operator= (const ACE_Unbounded_Set<T> &); + // Assignment operator. + ~ACE_Unbounded_Set (void); - + // Destructor. + // = Classic unordered set operations. int insert (const T &new_item); // Insert <new_item> into the set (doesn't allow duplicates). // Returns -1 if failures occur, 1 if item is already present, else // 0. + int insert_tail (const T &new_item); + // Insert <new_item> into the set at the tail. Returns -1 if + // failures occur else 0. + int remove (const T &item); // Remove first occurrence of <item> from the set. Returns 1 if // it removes the item, 0 if it can't find the item, and -1 if a @@ -87,6 +104,10 @@ public: int find (const T &item) const; // Return first occurrence of <item> from the set. // Returns 0 if can't find, else 1. + + int find (T &item, size_t index) const; + // Find the <index>th element in the set. Returns 0 if the element + // isn't in the range <0..size()>, else 1. size_t size (void) const; // Size of the set. @@ -98,6 +119,12 @@ public: // Declare the dynamic allocation hooks. private: + void delete_nodes (void); + // Delete all the nodes in the Set. + + void copy_nodes (const ACE_Unbounded_Set<T> &); + // Copy nodes into this set. + ACE_Set_Node<T> *head_; // Head of the linked list of Nodes. @@ -158,8 +185,20 @@ friend class ACE_Fixed_Set_Iterator<T, SIZE>; public: // = Initialization and termination methods. ACE_Fixed_Set (void); + // Constructor. + + ACE_Fixed_Set (size_t size); + // Constructor. + + ACE_Fixed_Set (const ACE_Fixed_Set<T, SIZE> &); + // Copy constructor. + + void operator = (const ACE_Fixed_Set<T, SIZE> &); + // Assignment operator. + ~ACE_Fixed_Set (void); - + // Destructor. + // = Classic unordered set operations. int insert (const T &new_item); // Insert <new_item> into the set (doesn't allow duplicates). @@ -175,6 +214,10 @@ public: // Return first occurrence of <item> from the set. // Returns 0 if can't find, else 1. + int find (T &item, size_t index) const; + // Find the <index>th element in the set. Returns 0 if the element + // isn't in the range <0..size()>, else 1. + size_t size (void) const; // Size of the set. @@ -260,9 +303,20 @@ public: // = Initialization and termination methods. ACE_Bounded_Set (void); + // Constructor. + ACE_Bounded_Set (size_t size); + // Constructor. + + ACE_Bounded_Set (const ACE_Bounded_Set<T> &); + // Copy constructor. + + void operator= (const ACE_Bounded_Set<T> &); + // Assignment operator. + ~ACE_Bounded_Set (void); - + // Destructor + // = Classic unordered set operations. int insert (const T &new_item); // Insert <new_item> into the set (doesn't allow duplicates). @@ -278,6 +332,10 @@ public: // Return first occurrence of <item> from the set. // Returns 0 if can't find, else 1. + int find (T &item, size_t index) const; + // Find the <index>th element in the set. Returns 0 if the element + // isn't in the range <0..size()>, else 1. + size_t size (void) const; // Size of the set. diff --git a/ace/config-hpux-10.x-g++.h b/ace/config-hpux-10.x-g++.h index 5eef7dc7869..e15296019d1 100644 --- a/ace/config-hpux-10.x-g++.h +++ b/ace/config-hpux-10.x-g++.h @@ -14,6 +14,7 @@ #define ACE_HAS_BROKEN_CONVERSIONS #define ACE_HAS_STREAMS +#define ACE_HAS_STRING_CLASS // They forgot a const in the prototype of putmsg and putpmsg... #define ACE_LACKS_CONST_STRBUF_PTR diff --git a/ace/config-irix5.3-g++.h b/ace/config-irix5.3-g++.h index b76fe08eae5..d0b9e036827 100644 --- a/ace/config-irix5.3-g++.h +++ b/ace/config-irix5.3-g++.h @@ -9,7 +9,7 @@ // Platform supports getpagesize() call. #define ACE_HAS_GETPAGESIZE - +#define ACE_HAS_STRING_CLASS #define IRIX5 #define ACE_HAS_SIGWAIT diff --git a/ace/config-mvs.h b/ace/config-mvs.h index 7771322f871..468fa33cd05 100644 --- a/ace/config-mvs.h +++ b/ace/config-mvs.h @@ -1,30 +1,11 @@ /* -*- C++ -*- */ // $Id$ -// The following configuration file is designed to work for MVS with -// OpenEdition. +// Config file for MVS with OpenEdition #if !defined (ACE_CONFIG_H) #define ACE_CONFIG_H -// log is defined as a macro on MVS in math.h. :-( -#if defined (log) -#undef log -#endif /* log */ - -#define ACE_LACKS_LINEBUFFERED_STREAMBUF - -#define ACE_LACKS_TCP_H - -// Platform supports getpagesize() call. -#define ACE_HAS_GETPAGESIZE - -// highest possible errno. -#define ERRMAX __sys_nerr - -// Platform does not define sys_nerr -#define ACE_LACKS_SYS_NERR - // The following #defines are hacks to get around things // that seem to be missing or different in MVS land #define MAXPATHLEN 1024 /* sys/param.h not on MVS */ @@ -33,175 +14,81 @@ #define howmany __howmany /* MVS uses different names than most others */ #define fd_mask __fd_mask #define MAXNAMLEN __DIR_NAME_MAX +#define ERRMAX __sys_nerr +#if defined (log) /* log is a macro in math.h */ +#undef log /* conflicts with log function in ACE */ +#endif /* log */ -// Compiler must see template source. -#define ACE_TEMPLATES_REQUIRE_SOURCE +// See the README file in this directory +// for a description of the following ACE_ macros -// Compiler/platform uses macro for ctime +#if __COMPILER_VER__ >= 0x21020000 /* OS/390 r2 or higher */ + #define ACE_HAS_4_4BSD_SENDMSG_RECVMSG +#endif #define ACE_HAS_BROKEN_CTIME - -// Compiler requires extern "C" functions for signals. -#define ACE_HAS_SIG_C_FUNC - -// Prototypes for both signal() and struct sigaction are consistent. #define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES - -// Compiler/platform has correctly prototyped header files. #define ACE_HAS_CPLUSPLUS_HEADERS - -// Compiler supports the getrusage() system call +#define ACE_HAS_GETPAGESIZE #define ACE_HAS_GETRUSAGE - -// The pthread_create() routine *must* take extern C functions. -#define ACE_HAS_THR_C_FUNC - -// The pthread_keycreate() routine *must* take extern C functions. -#define ACE_HAS_THR_C_DEST - -// The rusage_t structure has only two fields #define ACE_HAS_LIMITED_RUSAGE_T - -// Platform supports recvmsg and sendmsg. #define ACE_HAS_MSG - -// sigwait() takes on argument #define ACE_HAS_ONEARG_SIGWAIT - -// Compiler/platform supports poll(). #define ACE_HAS_POLL - -// Platform supports POSIX O_NONBLOCK semantics. #define ACE_HAS_POSIX_NONBLOCK - -// Platform supports POSIX timers via timestruc_t. #define ACE_HAS_POSIX_TIME - -// Platform supports POSIX threads #define ACE_HAS_PTHREADS - -#define ACE_LACKS_RWLOCK_T - -// Platform has pthread_condattr_setkind_np() #define ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP - -// Platform has pthread_mutexattr_setkind_np() -#define ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP - -// Platform has pthread_equal() +#define ACE_HAS_PTHREAD_DSTATE_PTR #define ACE_HAS_PTHREAD_EQUAL - -// Platform has struct pthread_t -#define ACE_HAS_PTHREAD_T - -// pthread_getspecific() takes a data pointer for 2nd argument #define ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR - -// pthread_attr_setdetachstate() takes pointer to 2nd arg -#define ACE_HAS_PTHREAD_DSTATE_PTR - -// Platform has sigwait prototype +#define ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP +#define ACE_HAS_PTHREAD_T +#define ACE_HAS_SIGINFO_T #define ACE_HAS_SIGWAIT - -// Compiler/platform defines the sig_atomic_t typedef #define ACE_HAS_SIG_ATOMIC_T - -// Compiler has siginfo_t typedef -#define ACE_HAS_SIGINFO_T - -// Platform supports inet_addr len field. +#define ACE_HAS_SIG_C_FUNC #define ACE_HAS_SIN_LEN - -// Compiler uses size_t rather than in for socket lenghts #define ACE_HAS_SIZET_SOCKET_LEN - -// Compiler supports the ssize_t typedef. #define ACE_HAS_SSIZE_T - -// Compiler/platform supports strerror (). #define ACE_HAS_STRERROR - -// Platform has strings.h #define ACE_HAS_STRINGS - -// Platform supports System V IPC #define ACE_HAS_SYSV_IPC - -// Platform/compiler supports timezone * as second parameter to gettimeofday() -#define ACE_HAS_TIMEZONE_GETTIMEOFDAY - -// Platform supports threads #define ACE_HAS_THREADS - -// Platform/compiler has thread-specific storage #define ACE_HAS_THREAD_SPECIFIC_STORAGE - -// Platform has the sid_t type +#define ACE_HAS_THR_C_DEST +#define ACE_HAS_THR_C_FUNC #define ACE_HAS_TID_T - -// Platform has utime.h +#define ACE_HAS_TIMEZONE_GETTIMEOFDAY #define ACE_HAS_UTIME - -// Platform uses void * arg 1 for mmap() #define ACE_HAS_VOIDPTR_MMAP - -// Platform uses void * arg 4 for setsockopt() #define ACE_HAS_VOIDPTR_SOCKOPT - -// Platform requrires pthread_yield() to take a NULL #define ACE_HAS_YIELD_VOID_PTR - -// Platform doesn't have pthread_condattr_setpshared() #define ACE_LACKS_CONDATTR_PSHARED - -// iostream header lacks ipfx (), isfx (), etc., declarations #define ACE_LACKS_IOSTREAM_FX - -// Platform doesn't have pthread_key_delete() #define ACE_LACKS_KEYDELETE - -// Platform doesn't have madvise() +#define ACE_LACKS_LINEBUFFERED_STREAMBUF #define ACE_LACKS_MADVISE - -// Platform doesn't have malloc.h #define ACE_LACKS_MALLOC_H - -// Platform doesn't have struct msgbuf_t #define ACE_LACKS_MSGBUF_T - -// Platform doesn't have <sys/param.h> #define ACE_LACKS_PARAM_H - -// Platform lacks pthread_sigaction #define ACE_LACKS_PTHREAD_THR_SIGSETMASK - -// Platform doesn't have pthread_setsched() and friends. +#define ACE_LACKS_RWLOCK_T #define ACE_LACKS_SETSCHED - -// Compiler doesn't have <siginfo.h> #define ACE_LACKS_SIGINFO_H - -// Platform doesn't define struct strrecvfd #define ACE_LACKS_STRRECVFD - -// Platform doesn't have pthread_attr_setscope() +#define ACE_LACKS_SYS_NERR +#define ACE_LACKS_TCP_H #define ACE_LACKS_THREAD_PROCESS_SCOPING - -// Platform doesn't have pthread_attr_setstackaddr() #define ACE_LACKS_THREAD_STACK_ADDR - -// Compiler doesn't have <ucontext.h> #define ACE_LACKS_UCONTEXT_H - -// Compile using multi-threaded libraries #define ACE_MT_SAFE - #define ACE_NEEDS_DEV_IO_CONVERSION - -// <time.h> doesn't automatically #include <sys/time.h> #define ACE_NEEDS_SYSTIME_H +#define ACE_TEMPLATES_REQUIRE_SOURCE #if !defined (ACE_NTRACE) #define ACE_NTRACE 1 #endif /* ACE_NTRACE */ #endif /* ACE_CONFIG_H */ + diff --git a/ace/config-osf1-4.0-g++.h b/ace/config-osf1-4.0-g++.h index d7f3b9c699e..de39278a23a 100644 --- a/ace/config-osf1-4.0-g++.h +++ b/ace/config-osf1-4.0-g++.h @@ -23,6 +23,7 @@ // support... #define ACE_TEMPLATES_REQUIRE_SPECIALIZATION +#define ACE_HAS_STRING_CLASS // Compiler's template mechanism must see source code (i.e., .C // files). #define ACE_TEMPLATES_REQUIRE_SOURCE diff --git a/ace/config-osf1-4.0.h b/ace/config-osf1-4.0.h index aa81be4c4da..8ab712eb3df 100644 --- a/ace/config-osf1-4.0.h +++ b/ace/config-osf1-4.0.h @@ -19,6 +19,7 @@ // functionality is lost? Platform supports <sys/procfs.h> //#define ACE_HAS_PROC_FS +#define ACE_HAS_STRING_CLASS #define ACE_LACKS_IOSTREAM_FX #define ACE_LACKS_LINEBUFFERED_STREAMBUF #define ACE_LACKS_SIGNED_CHAR diff --git a/ace/config-sunos4-g++.h b/ace/config-sunos4-g++.h index e385e4644fd..e6c765a2f71 100644 --- a/ace/config-sunos4-g++.h +++ b/ace/config-sunos4-g++.h @@ -12,7 +12,7 @@ // Platform supports pread() and pwrite() #define ACE_HAS_P_READ_WRITE - +#define ACE_HAS_STRING_CLASS #define ACE_NEEDS_SYSTIME_H #define ACE_HAS_CHARPTR_SPRINTF #define ACE_HAS_UNION_WAIT diff --git a/ace/config-sunos5.4-g++.h b/ace/config-sunos5.4-g++.h index a731843d794..da23743d5be 100644 --- a/ace/config-sunos5.4-g++.h +++ b/ace/config-sunos5.4-g++.h @@ -11,6 +11,7 @@ #define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +#define ACE_HAS_STRING_CLASS #define ACE_HAS_TEMPLATE_SPECIALIZATION // Platform supports pread() and pwrite() diff --git a/ace/config-sunos5.5-g++.h b/ace/config-sunos5.5-g++.h index d8ef2d603f1..529e4f94b8d 100644 --- a/ace/config-sunos5.5-g++.h +++ b/ace/config-sunos5.5-g++.h @@ -11,6 +11,7 @@ #define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +#define ACE_HAS_STRING_CLASS #define ACE_HAS_TEMPLATE_SPECIALIZATION // ACE_HAS_EXCEPTIONS requires -fhandle-exceptions, but that gives diff --git a/ace/config-unixware-2.01-g++.h b/ace/config-unixware-2.01-g++.h index 2a65ad56589..6b1ee6adf36 100644 --- a/ace/config-unixware-2.01-g++.h +++ b/ace/config-unixware-2.01-g++.h @@ -12,6 +12,7 @@ #define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +#define ACE_HAS_STRING_CLASS #define ACE_LACKS_STRCASECMP #define ACE_HAS_SIZET_SOCKET_LEN #define ACE_HAS_AUTOMATIC_INIT_FINI diff --git a/ace/config-vxworks5.2-g++.h b/ace/config-vxworks5.2-g++.h index 4a6f2299733..8e92855bc86 100644 --- a/ace/config-vxworks5.2-g++.h +++ b/ace/config-vxworks5.2-g++.h @@ -11,6 +11,7 @@ #define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +#define ACE_HAS_STRING_CLASS #define ACE_LACKS_COND_T #define ACE_LACKS_EXEC #define ACE_LACKS_KEY_T diff --git a/apps/Gateway/Gateway/proxy_config b/apps/Gateway/Gateway/proxy_config index df034f543b1..e0784e4038e 100644 --- a/apps/Gateway/Gateway/proxy_config +++ b/apps/Gateway/Gateway/proxy_config @@ -35,7 +35,7 @@ # ID Port Role Timeout Port # ---- -------- ------ ------ ---------- ----- -------- 1 merengue.cs 10010 S 32 0 1 - 2 mambo.cs 10010 C 32 0 1 + 2 tango.cs 10010 C 32 0 1 # 3 mambo.cs 10002 C 32 0 1 # 4 lambada.cs 10002 C 32 0 1 # 5 lambada.cs 10002 C 32 0 1 |