1 
2 /******************************************************************************
3 * MODULE     : multiline.cpp
4 * DESCRIPTION: A plugin which uses multiline input as long as
5 *              the input is not terminated by ';'
6 * COPYRIGHT  : (C) 2003  Joris van der Hoeven
7 *******************************************************************************
8 * This software falls under the GNU general public license version 3 or later.
9 * It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
10 * in the root directory or <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ******************************************************************************/
12 
13 #include <iostream>
14 using namespace std;
15 
16 #define DATA_BEGIN   ((char) 2)
17 #define DATA_END     ((char) 5)
18 #define DATA_COMMAND ((char) 16)
19 #define DATA_ESCAPE  ((char) 27)
20 
21 int
main()22 main () {
23   cout << DATA_BEGIN << "verbatim:";
24   cout << "Terminate your input by ';'";
25   cout << DATA_END;
26   cout.flush ();
27 
28   while (true) {
29     char buffer[100];
30     cin.getline (buffer, 100, '\n');
31     if (buffer[0] != DATA_COMMAND) {
32       cout << DATA_BEGIN << "verbatim:";
33       cout << buffer;
34       cout << DATA_END;
35     }
36     else {
37       int  n = strlen (buffer);
38       cout << DATA_BEGIN << "scheme:";
39       if (n>0 && buffer[n-1] == ')') n--;
40       if (n>0 && buffer[n-1] == '\"') n--;
41       if (n>0 && buffer[n-1] == ';') cout << "#t";
42       else cout << "#f";
43       cout << DATA_END;
44     }
45     cout.flush ();
46   }
47   return 0;
48 }
49