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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 210 by schoenebeck, Sat Jul 24 12:33:49 2004 UTC revision 2515 by schoenebeck, Wed Feb 5 20:45:18 2014 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   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  *   *   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  *   *   it under the terms of the GNU General Public License as published by  *
# Line 24  Line 25 
25  #define __LSCPPARSER_H__  #define __LSCPPARSER_H__
26    
27  #include <sys/types.h>  #include <sys/types.h>
28    #if defined(WIN32)
29    #include <windows.h>
30    #else
31  #include <sys/socket.h>  #include <sys/socket.h>
32    #endif
33    
34  #include <stdlib.h>  #include <stdlib.h>
35  #include <iostream>  #include <iostream>
36  #include <sstream>  #include <sstream>
37  #include <string>  #include <string>
38    #include <stdint.h>
39    #include <set>
40    
41  #include "../common/global.h"  #include "../common/global_private.h"
42    #include "../common/Path.h"
43  #include "lscpevent.h"  #include "lscpevent.h"
44  #include "../Sampler.h"  #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.  /// Will be returned by the parser in case of syntax errors.
50  #define LSCP_SYNTAX_ERROR       -69  #define LSCP_SYNTAX_ERROR       -69
51  #define LSCP_QUIT               -1  #define LSCP_QUIT               -1
52  #define LSCP_DONE               0  #define LSCP_DONE               0
53    
 using namespace LinuxSampler;  
   
54  // just symbol prototyping  // just symbol prototyping
55  class LSCPServer;  class LSCPServer;
56    
# Line 61  enum fill_response_t { Line 70  enum fill_response_t {
70   * recognized number strings in the input text and the parser might return a   * recognized number strings in the input text and the parser might return a
71   * value for each of it's rules.   * value for each of it's rules.
72   */   */
73  struct YYSTYPE {  struct _YYSTYPE {
74      union {      union {
75          char            Char;          char                         Char;
76          unsigned int    Number;          unsigned int                 Number;
77          double          Dotnum;          bool                         Bool;
78          fill_response_t FillResponse;          double                       Dotnum;
79          LSCPEvent::event_t Event;          fill_response_t              FillResponse;
80            LSCPEvent::event_t           Event;
81            MidiInstrumentMapper::mode_t LoadMode;
82      };      };
83      std::string                       String;      std::string                       String;
84      std::map<std::string,std::string> KeyValList;      std::map<std::string,std::string> KeyValList;
85        Path                              UniversalPath;
86  };  };
87    #define YYSTYPE _YYSTYPE
88  #define yystype YYSTYPE         ///< For backward compatibility.  #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.  #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
 // pointer to an (reentrant) scanner / lexical analyzer  
 typedef void* yyscan_t;  
91    
92  /**  /**
93   * Parameters given to the parser on every yyparse() call.   * Parameters given to the parser on every yyparse() call.
# Line 84  typedef void* yyscan_t; Line 95  typedef void* yyscan_t;
95  struct yyparse_param_t {  struct yyparse_param_t {
96      LSCPServer* pServer;      LSCPServer* pServer;
97      int         hSession;      int         hSession;
     yyscan_t    pScanner;  
98      bool        bVerbose; ///< if true then all commands will immediately sent back (echo)      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() {      yyparse_param_t() {
106          pServer  = NULL;          pServer  = NULL;
107          hSession = -1;          hSession = -1;
         pScanner = NULL;  
108          bVerbose = false;          bVerbose = false;
109            bShellInteract = false;
110            iLine = iColumn = 0;
111            ppStackBottom = ppStackTop = NULL;
112      }      }
113  };  };
114  #define YYPARSE_PARAM yyparse_param  #define YYPARSE_PARAM yyparse_param
# Line 99  struct yyparse_param_t { Line 116  struct yyparse_param_t {
116  /**  /**
117   * Prototype of the main scanner function (lexical analyzer).   * Prototype of the main scanner function (lexical analyzer).
118   */   */
119  #define YY_DECL int yylex(YYSTYPE* yylval, yyscan_t yyscanner)  #define YY_DECL int yylex(YYSTYPE* yylval)
120    
121  /**  }
  * Override lex's input function which just reads from stdin by default.  
  * We read from a socket instead.  
  */  
 extern int GetLSCPCommand( void *buf, int max_size);  
 #define YY_INPUT(buf,result,max_size) \  
         result = GetLSCPCommand(buf, max_size)  
122    
123  #endif // __LSCPPARSER_H__  #endif // __LSCPPARSER_H__

Legend:
Removed from v.210  
changed lines
  Added in v.2515

  ViewVC Help
Powered by ViewVC