Category : Recently Uploaded Files
Archive   : SNIP9503.ZIP
Filename : MYIODEMO.CPP

 
Output of file : MYIODEMO.CPP contained in archive : SNIP9503.ZIP
// Myiodemo.cpp
// This is a trivial program which uses the myio loopback class
// to demonstrate the basics on writing an io interface using
// the AT&T C++ iostream classes.
// The program simply provides the ability to selectively add
// to or read from a Myio instance and display information to
// assist in understanding how it all works.
//

# include "Mystream.h" // This includes Myio.h and iostream.h
# include "myLine.h"
# include // For getch()
# include // For toupper()
# include

# define NL char('\n')

// Let's do the "application is a class" trick

class myApplication
{
// Defines a pointer to member function type
// used for dispatching the menu

typedef void (myApplication::*pvf) (void);

public:

myApplication (void) : mio() {}
int execute (void);

private:

iostream & stream (void) { return mio.stream(); }
int domenu (void);
void send (void);
void read (void);
void disp (void);
void peek (void);
void flsh (void);
void stat (void);

pvf choice; // Function called to execute
Myio mio; // IO object

};


void
myApplication::disp (void)
{
cout << "Mystream status:" << NL
<< "Chrs in output buffer = " << stream().rdbuf()->out_waiting() << NL

<< "Chrs in input buffer = " << stream().rdbuf()->in_avail() << NL

<< "Myio object status = "
<< mio.count() << char('/') << mio.size()
<< " LastWrite=" << (mio.writeok() ? "OK" : "Incomplete")
<< " LastRead=" << (mio.readok() ? "OK" : "EOF")
<< endl;
}

// Request a line and send it to the IO device

void
myApplication::send (void)
{
cout << NL << "Enter text to write - press when done\n:";
myLine L;
cin >> L;
int l = strlen(L);
if (!l)
cerr << "Nothing entered." << endl;
else
{
cout << "Writing '"
<< L
<< char('\'')
<< endl;
stream() << L << NL; // Send the entered data, NL terminated
cout << "Chrs written to Myio object = " << (l + 1) << NL;
disp ();
}
}

void
myApplication::read (void)
{
cout << NL << "Reading a line from object:" << NL;
myLine L;
mio.stream().clear();
mio.stream() >> L;
int l = strlen(L);
if (!l)
{
cout << "Nothing read." << endl;
mio.stream().clear(); // Clear EOF status
}
else
{
cout << "Read '"
<< L
<< char('\'')
<< endl;
cout << "Chrs read from Myio object = " << (l + 1) << NL;
disp ();
}
}

void
myApplication::flsh (void)
{
cout << NL << "Flushing stream" << endl;
stream() << flush;
disp ();
}

void
myApplication::stat (void)
{
cout << NL << "Myio object buffer dump:" << NL;
mio.dump();
disp ();
stream().rdbuf()->dbp(); // Dump stream info
}

int
myApplication::domenu (void)
{
cout << NL
<< "W)rite R)ead D)ump F)lush Q)uit\n"
<< "Select: "
<< flush; // Need to flush here for portability
int key;
for (;;)
{
key = getch ();
switch (toupper(key))
{
case 'W': choice = &myApplication::send; break;
case 'R': choice = &myApplication::read; break;
case 'D': choice = &myApplication::stat; break;
case 'F': choice = &myApplication::flsh; break;
case 'Q': key = 0; break;
default:
continue;
}
cout << char(key) << endl;
break;
}
return key;
}

int // This is really the application
myApplication::execute (void)
{
while (domenu ())
(this->*choice) ();
return 0;
}

int
main (void)
{
myApplication Demo; // Declare the application
return Demo.execute (); // go for it!
}


  3 Responses to “Category : Recently Uploaded Files
Archive   : SNIP9503.ZIP
Filename : MYIODEMO.CPP

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/