/[svn]/linuxsampler/trunk/src/network/lscpparser.h
ViewVC logotype

Contents of /linuxsampler/trunk/src/network/lscpparser.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2515 - (show annotations) (download) (as text)
Wed Feb 5 20:45:18 2014 UTC (10 years, 2 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 4673 byte(s)
* WIP: Introducing the LSCP shell: for now, providing color
  highlighting while typing (indicating correct part bold white,
  incorrect part red, and turning green when the command is
  complete. The shell application is implemented as thin client,
  that is the parser work is performed on sampler side and the
  shell application is just providing output formatting.
* Bumped version (1.0.0.svn28).

1 /***************************************************************************
2 * *
3 * LinuxSampler - modular, streaming capable sampler *
4 * *
5 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck *
6 * Copyright (C) 2005 - 2014 Christian Schoenebeck *
7 * *
8 * This program is free software; you can redistribute it and/or modify *
9 * it under the terms of the GNU General Public License as published by *
10 * the Free Software Foundation; either version 2 of the License, or *
11 * (at your option) any later version. *
12 * *
13 * This program is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16 * GNU General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU General Public License *
19 * along with this program; if not, write to the Free Software *
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
21 * MA 02111-1307 USA *
22 ***************************************************************************/
23
24 #ifndef __LSCPPARSER_H__
25 #define __LSCPPARSER_H__
26
27 #include <sys/types.h>
28 #if defined(WIN32)
29 #include <windows.h>
30 #else
31 #include <sys/socket.h>
32 #endif
33
34 #include <stdlib.h>
35 #include <iostream>
36 #include <sstream>
37 #include <string>
38 #include <stdint.h>
39 #include <set>
40
41 #include "../common/global_private.h"
42 #include "../common/Path.h"
43 #include "lscpevent.h"
44 #include "../Sampler.h"
45 #include "../drivers/midi/MidiInstrumentMapper.h"
46
47 namespace LinuxSampler {
48
49 /// Will be returned by the parser in case of syntax errors.
50 #define LSCP_SYNTAX_ERROR -69
51 #define LSCP_QUIT -1
52 #define LSCP_DONE 0
53
54 // just symbol prototyping
55 class LSCPServer;
56
57 /**
58 * How the fill states of disk stream buffers should be reflected.
59 */
60 enum fill_response_t {
61 fill_response_bytes, ///< The returned values are meant in bytes.
62 fill_response_percentage ///< The returned values are meant in percentage.
63 };
64
65 /**
66 * Semantic value of the lookahead symbol.
67 *
68 * Structure that is used by the parser to process and return values from the
69 * input text. The lexical analyzer for example returns a number for
70 * recognized number strings in the input text and the parser might return a
71 * value for each of it's rules.
72 */
73 struct _YYSTYPE {
74 union {
75 char Char;
76 unsigned int Number;
77 bool Bool;
78 double Dotnum;
79 fill_response_t FillResponse;
80 LSCPEvent::event_t Event;
81 MidiInstrumentMapper::mode_t LoadMode;
82 };
83 std::string String;
84 std::map<std::string,std::string> KeyValList;
85 Path UniversalPath;
86 };
87 #define YYSTYPE _YYSTYPE
88 #define yystype YYSTYPE ///< For backward compatibility.
89 #define YYSTYPE_IS_DECLARED ///< We tell the lexer / parser that we use our own data structure as defined above.
90 #define YYTYPE_INT16 int16_t
91
92 /**
93 * Parameters given to the parser on every yyparse() call.
94 */
95 struct yyparse_param_t {
96 LSCPServer* pServer;
97 int hSession;
98 bool bVerbose; ///< if true then all commands will immediately sent back (echo)
99 bool bShellInteract; ///< if true: then client is the LSCP shell
100 int iLine; ///< Current line (just for verbosity / messages)
101 int iColumn; ///< Current column (just for verbosity / messages)
102 YYTYPE_INT16** ppStackBottom; ///< Bottom end of the Bison parser's state stack.
103 YYTYPE_INT16** ppStackTop; ///< Current position (heap) of the Bison parser's state stack.
104
105 yyparse_param_t() {
106 pServer = NULL;
107 hSession = -1;
108 bVerbose = false;
109 bShellInteract = false;
110 iLine = iColumn = 0;
111 ppStackBottom = ppStackTop = NULL;
112 }
113 };
114 #define YYPARSE_PARAM yyparse_param
115
116 /**
117 * Prototype of the main scanner function (lexical analyzer).
118 */
119 #define YY_DECL int yylex(YYSTYPE* yylval)
120
121 }
122
123 #endif // __LSCPPARSER_H__

  ViewVC Help
Powered by ViewVC