summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/myline.h
blob: 01e31e3ebb8f2f906cbb0821ac1903dd93c9ba6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// myLine.h
//
// Donated to the public domain; no restrictions on reuse or abuse apply.
// by David Nugent, 7th June, 1993.
// Simple line input class for istream to demonstrate input of a complete
// line rather than whitespace separated tokens (the default for operator<<
// for char* and other built-in types).
// Works by overloading operator>> for a customised class - this functionality
// is easily incorporated into your favourite String class
//

# if !defined(_myLine_h)
# define _myLine_h 1

# define AUTO_GROW 1            // Allow autogrowth of buffer to fit
# define ALLOC_LEN 80           // Standard length & growth increment

    // Class declaration

class myLine
{

  public:

    myLine (short buflen =ALLOC_LEN);
    myLine (char * usebuf, short buflen =ALLOC_LEN);
    ~myLine (void);
                                       // Get buffer address
    char const * buf (void) const { return mybuf; }
                                       // Conversion operators
    char const * operator() (void) const { return mybuf; } // Explicit cast
    operator char const * (void) const { return mybuf; }   // Implicit cast
                                       // istream operator>>
    friend istream & operator>> (istream &, myLine &);

  private:

    short len, xalloc;
    char * mybuf;

};

# endif     // _myLine_h