Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/shell/shell_buffer.h @ 5595

Last change on this file since 5595 was 5246, checked in by bensch, 19 years ago

orxonox/trunk: minimalized the ShellBuffer

File size: 2.5 KB
Line 
1/*!
2 * @file shell_buffer.h
3 * @brief The Shell buffer Tasks
4 * @see debug.h
5*/
6
7#ifndef _SHELL_BUFFER_H
8#define _SHELL_BUFFER_H
9
10#include <stdarg.h>
11
12#define      SHELL_BUFFER_SIZE       16384         //!< The Size of the input-buffers (should be large enough to carry any kind of input)
13
14// FORWARD DECLARATION
15class Shell;
16template<class T> class tList;
17#ifndef NULL
18#define NULL 0            //!< a pointer to NULL
19#endif
20
21//! A class handling output from orxonox via debug.h
22class ShellBuffer {
23
24 public:
25  virtual ~ShellBuffer();
26  /** @returns a Pointer to the only object of this Class */
27  inline static ShellBuffer* getInstance() { if (!ShellBuffer::singletonRef) ShellBuffer::singletonRef = new ShellBuffer();  return ShellBuffer::singletonRef; };
28  /** @returns true if this class is instanciated, false otherwise */
29  inline static bool isInstanciated() { return (ShellBuffer::singletonRef == NULL)?false:true; };
30
31  void registerShell(Shell* shell);
32  void unregisterShell(Shell* shell);
33
34  // BUFFER //
35  /** @param bufferSize the new Buffer-Size */
36  void setBufferSize(unsigned int bufferSize) { this->bufferSize = bufferSize; };
37  void flush();
38  static bool addBufferLineStatic(const char* line, ...);
39  void addBufferLine(const char* line, va_list arg);
40  /** @returns the List of stings from the Buffer */
41  const tList<char>* getBuffer() const { return this->buffer; };
42 /** @returns the Count of lines processed by the Shell. */
43  inline long getLineCount() const { return this->lineCount; };
44
45  void debug() const;
46
47  private:
48    ShellBuffer();
49
50  private:
51   static ShellBuffer*      singletonRef;                       //!< The singleton-reference to the only memeber of this class.
52   unsigned int             bufferSize;                         //!< The Size of the buffer
53   tList<char>*             buffer;                             //!< A list of stored char-arrays(strings) to store the history
54
55   Shell*                   shell;                              //!< the Registered Shell.
56   char                     bufferArray[SHELL_BUFFER_SIZE];     //!< a BUFFER for fast writing
57   char                     keepBufferArray[SHELL_BUFFER_SIZE]; //!< a BUFFER to have multi-non-newLine commands be copied into the shell.
58   bool                     keepBuffer;                         //!< if the keepbuffer contains unfinished lines.
59
60   unsigned long            lineCount;                          //!< how many Lines have been written out so far.
61};
62
63#endif /* _SHELL_BUFFER_H */
Note: See TracBrowser for help on using the repository browser.