dogygen.
EXTRA_DIST = version.h.in
include_HEADERS = \
- compiler.h constants.h inlines.h sg_traits.hxx sg_zlib.h version.h
+ compiler.h constants.h sg_inlines.h sg_traits.hxx sg_zlib.h version.h
SUBDIRS = \
bucket \
+++ /dev/null
-// inlines.h -- various inline template definitions
-//
-// Written by Norman Vine, started June 2000.
-//
-// Copyright (C) 2000 Norman Vine - nhv@cape.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Library General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Library General Public License for more details.
-//
-// You should have received a copy of the GNU Library General Public
-// License along with this library; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-//
-// $Id$
-
-
-#ifndef _SG_INLINES_H
-#define _SG_INLINES_H
-
-
-template <class T>
-inline const int SG_SIGN(const T x) {
- return x < T(0) ? -1 : 1;
-}
-
-template <class T>
-inline const T SG_MIN2(const T a, const T b) {
- return a < b ? a : b;
-}
-
-// return the minimum of three values
-template <class T>
-inline const T SG_MIN3( const T a, const T b, const T c) {
- return (a < b ? SG_MIN2 (a, c) : SG_MIN2 (b, c));
-}
-
-template <class T>
-inline const T SG_MAX2(const T a, const T b) {
- return a > b ? a : b;
-}
-
-// return the maximum of three values
-template <class T>
-inline const T SG_MAX3 (const T a, const T b, const T c) {
- return (a > b ? SG_MAX2 (a, c) : SG_MAX2 (b, c));
-}
-
-//
-template <class T>
-inline void SG_SWAP( T &a, T &b) {
- T c = a; a = b; b = c;
-}
-
-#endif // _SG_INLINES_H
-// iochannel.hxx -- High level IO channel class
-//
+/**
+ * \file iochannel.hxx
+ * High level IO channel base class.
+ */
+
// Written by Curtis Olson, started November 1999.
//
// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
#define SG_IO_MAX_MSG_SIZE 16384
+/**
+ * Specify if this is a read (IN), write (OUT), or r/w (BI) directional
+ * channel
+ */
enum SGProtocolDir {
SG_IO_NONE = 0,
SG_IO_IN = 1,
SG_IO_BI = 3
};
-
+/**
+ * Specify the channel type
+ */
enum SGChannelType {
sgFileType = 0,
sgSerialType = 1,
sgSocketType = 2
};
+
+/**
+ * The SGIOChannel base class provides a consistent method for
+ * applications to communication through various mediums. By providing
+ * a base class with multiple derived classes, and application such as
+ * FlightGear can implement a way to speak any protocol via any kind
+ * of I/O channel.
+ *
+ * All of the SGIOChannel derived classes have exactly the same usage
+ * interface once an instance has been created.
+ *
+ */
class SGIOChannel {
SGChannelType type;
public:
+ /** Constructor */
SGIOChannel();
+
+ /** Destructor */
virtual ~SGIOChannel();
+ /** Open a channel.
+ * @param d channel communication "direction"
+ * Direction can be one of:
+ * - SG_IO_IN - data will be flowing into this object to the application.
+ * - SG_IO_OUT - data will be flowing out of this object from the
+ * application.
+ * - SG_IO_BI - data will be flowing in both directions.
+ * - SG_IO_NONE - data will not be flowing in either direction.
+ * This is here for the sake of completeness.
+ */
virtual bool open( const SGProtocolDir d );
+
+ /**
+ * The read() method is modeled after the read() Unix system
+ * call. You must provide a pointer to a character buffer that has
+ * enough allocated space for your potential read. You can also
+ * specify the maximum number of bytes allowed for this particular
+ * read. The actual number of bytes read is returned. You are
+ * responsible to ensure that the size of buf is large enough to
+ * accomodate your input message
+ * @param buf a char pointer to your input buffer
+ * @param length max number of bytes to read
+ */
virtual int read( char *buf, int length );
+
+ /**
+ * The readline() method is similar to read() except that it will
+ * stop at the first end of line encountered in the input buffer.
+ * @param buf a char pointer to your input buffer
+ * @param length max number of bytes to read
+ */
virtual int readline( char *buf, int length );
virtual int write( const char *buf, const int length );
virtual int writestring( const char *str );
--- /dev/null
+/**
+ * \file sg_inlines.h
+ * Various inline template definitions.
+ */
+
+// Written by Norman Vine, started June 2000.
+//
+// Copyright (C) 2000 Norman Vine - nhv@cape.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the
+// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+//
+// $Id$
+
+
+#ifndef _SG_INLINES_H
+#define _SG_INLINES_H
+
+template <class T>
+inline const int SG_SIGN(const T x) {
+ return x < T(0) ? -1 : 1;
+}
+
+template <class T>
+inline const T SG_MIN2(const T a, const T b) {
+ return a < b ? a : b;
+}
+
+// return the minimum of three values
+template <class T>
+inline const T SG_MIN3( const T a, const T b, const T c) {
+ return (a < b ? SG_MIN2 (a, c) : SG_MIN2 (b, c));
+}
+
+template <class T>
+inline const T SG_MAX2(const T a, const T b) {
+ return a > b ? a : b;
+}
+
+// return the maximum of three values
+template <class T>
+inline const T SG_MAX3 (const T a, const T b, const T c) {
+ return (a > b ? SG_MAX2 (a, c) : SG_MAX2 (b, c));
+}
+
+//
+template <class T>
+inline void SG_SWAP( T &a, T &b) {
+ T c = a; a = b; b = c;
+}
+
+#endif // _SG_INLINES_H