--- linuxsampler/trunk/src/network/lscpparser.cpp 2004/06/14 19:33:16 123 +++ linuxsampler/trunk/src/network/lscpparser.cpp 2004/07/18 00:29:39 209 @@ -56,93 +56,117 @@ CHAR = 258, DOTNUM = 259, NUMBER = 260, - SP = 261, - LF = 262, - CR = 263, - HASH = 264, - EQ = 265, - ADD = 266, - GET = 267, - CREATE = 268, - DESTROY = 269, - LIST = 270, - LOAD = 271, - REMOVE = 272, - SET = 273, - SUBSCRIBE = 274, - UNSUBSCRIBE = 275, - RESET = 276, - QUIT = 277, - CHANNEL = 278, - NOTIFICATION = 279, - AVAILABLE_ENGINES = 280, - AVAILABLE_AUDIO_OUTPUT_DRIVERS = 281, - CHANNELS = 282, - INFO = 283, - BUFFER_FILL = 284, - STREAM_COUNT = 285, - VOICE_COUNT = 286, - INSTRUMENT = 287, - ENGINE = 288, - AUDIO_OUTPUT_CHANNEL = 289, - AUDIO_OUTPUT_CHANNEL_PARAMETER = 290, - AUDIO_OUTPUT_DEVICE = 291, - AUDIO_OUTPUT_DEVICES = 292, - AUDIO_OUTPUT_DEVICE_PARAMETER = 293, - AUDIO_OUTPUT_DRIVER = 294, - AUDIO_OUTPUT_DRIVER_PARAMETER = 295, - MIDI_INPUT_PORT = 296, - MIDI_INPUT_CHANNEL = 297, - MIDI_INPUT_TYPE = 298, - VOLUME = 299, - BYTES = 300, - PERCENTAGE = 301 + STRINGVAL = 261, + SP = 262, + LF = 263, + CR = 264, + HASH = 265, + EQ = 266, + ADD = 267, + GET = 268, + CREATE = 269, + DESTROY = 270, + LIST = 271, + LOAD = 272, + NON_MODAL = 273, + REMOVE = 274, + SET = 275, + SUBSCRIBE = 276, + UNSUBSCRIBE = 277, + RESET = 278, + QUIT = 279, + CHANNEL = 280, + NOTIFICATION = 281, + AVAILABLE_ENGINES = 282, + AVAILABLE_AUDIO_OUTPUT_DRIVERS = 283, + CHANNELS = 284, + INFO = 285, + BUFFER_FILL = 286, + STREAM_COUNT = 287, + VOICE_COUNT = 288, + INSTRUMENT = 289, + ENGINE = 290, + AUDIO_OUTPUT_CHANNEL = 291, + AUDIO_OUTPUT_CHANNEL_PARAMETER = 292, + AUDIO_OUTPUT_DEVICE = 293, + AUDIO_OUTPUT_DEVICES = 294, + AUDIO_OUTPUT_DEVICE_PARAMETER = 295, + AUDIO_OUTPUT_DRIVER = 296, + AUDIO_OUTPUT_DRIVER_PARAMETER = 297, + AUDIO_OUTPUT_TYPE = 298, + MIDI_INPUT = 299, + MIDI_INPUT_TYPE = 300, + MIDI_INPUT_PORT = 301, + MIDI_INPUT_CHANNEL = 302, + VOLUME = 303, + MIDI_INPUT_DRIVER = 304, + MIDI_INPUT_DRIVER_PARAMETER = 305, + AVAILABLE_MIDI_INPUT_DRIVERS = 306, + MIDI_INPUT_DEVICE = 307, + MIDI_INPUT_DEVICES = 308, + MIDI_INPUT_DEVICE_PARAMETER = 309, + MIDI_INPUT_PORT_PARAMETER = 310, + BYTES = 311, + PERCENTAGE = 312, + MISCELLANEOUS = 313 }; #endif #define CHAR 258 #define DOTNUM 259 #define NUMBER 260 -#define SP 261 -#define LF 262 -#define CR 263 -#define HASH 264 -#define EQ 265 -#define ADD 266 -#define GET 267 -#define CREATE 268 -#define DESTROY 269 -#define LIST 270 -#define LOAD 271 -#define REMOVE 272 -#define SET 273 -#define SUBSCRIBE 274 -#define UNSUBSCRIBE 275 -#define RESET 276 -#define QUIT 277 -#define CHANNEL 278 -#define NOTIFICATION 279 -#define AVAILABLE_ENGINES 280 -#define AVAILABLE_AUDIO_OUTPUT_DRIVERS 281 -#define CHANNELS 282 -#define INFO 283 -#define BUFFER_FILL 284 -#define STREAM_COUNT 285 -#define VOICE_COUNT 286 -#define INSTRUMENT 287 -#define ENGINE 288 -#define AUDIO_OUTPUT_CHANNEL 289 -#define AUDIO_OUTPUT_CHANNEL_PARAMETER 290 -#define AUDIO_OUTPUT_DEVICE 291 -#define AUDIO_OUTPUT_DEVICES 292 -#define AUDIO_OUTPUT_DEVICE_PARAMETER 293 -#define AUDIO_OUTPUT_DRIVER 294 -#define AUDIO_OUTPUT_DRIVER_PARAMETER 295 -#define MIDI_INPUT_PORT 296 -#define MIDI_INPUT_CHANNEL 297 -#define MIDI_INPUT_TYPE 298 -#define VOLUME 299 -#define BYTES 300 -#define PERCENTAGE 301 +#define STRINGVAL 261 +#define SP 262 +#define LF 263 +#define CR 264 +#define HASH 265 +#define EQ 266 +#define ADD 267 +#define GET 268 +#define CREATE 269 +#define DESTROY 270 +#define LIST 271 +#define LOAD 272 +#define NON_MODAL 273 +#define REMOVE 274 +#define SET 275 +#define SUBSCRIBE 276 +#define UNSUBSCRIBE 277 +#define RESET 278 +#define QUIT 279 +#define CHANNEL 280 +#define NOTIFICATION 281 +#define AVAILABLE_ENGINES 282 +#define AVAILABLE_AUDIO_OUTPUT_DRIVERS 283 +#define CHANNELS 284 +#define INFO 285 +#define BUFFER_FILL 286 +#define STREAM_COUNT 287 +#define VOICE_COUNT 288 +#define INSTRUMENT 289 +#define ENGINE 290 +#define AUDIO_OUTPUT_CHANNEL 291 +#define AUDIO_OUTPUT_CHANNEL_PARAMETER 292 +#define AUDIO_OUTPUT_DEVICE 293 +#define AUDIO_OUTPUT_DEVICES 294 +#define AUDIO_OUTPUT_DEVICE_PARAMETER 295 +#define AUDIO_OUTPUT_DRIVER 296 +#define AUDIO_OUTPUT_DRIVER_PARAMETER 297 +#define AUDIO_OUTPUT_TYPE 298 +#define MIDI_INPUT 299 +#define MIDI_INPUT_TYPE 300 +#define MIDI_INPUT_PORT 301 +#define MIDI_INPUT_CHANNEL 302 +#define VOLUME 303 +#define MIDI_INPUT_DRIVER 304 +#define MIDI_INPUT_DRIVER_PARAMETER 305 +#define AVAILABLE_MIDI_INPUT_DRIVERS 306 +#define MIDI_INPUT_DEVICE 307 +#define MIDI_INPUT_DEVICES 308 +#define MIDI_INPUT_DEVICE_PARAMETER 309 +#define MIDI_INPUT_PORT_PARAMETER 310 +#define BYTES 311 +#define PERCENTAGE 312 +#define MISCELLANEOUS 313 @@ -153,6 +177,7 @@ #include "lscpparser.h" #include "lscpserver.h" +#include "lscpevent.h" // as we need an reentrant scanner, we have to pass the pointer to the scanner with each yylex() call #define YYLEX_PARAM ((yyparse_param_t*) yyparse_param)->pScanner @@ -201,7 +226,7 @@ /* Line 214 of yacc.c. */ -#line 205 "y.tab.c" +#line 230 "y.tab.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE @@ -300,20 +325,20 @@ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 30 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 222 +#define YYLAST 300 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 47 +#define YYNTOKENS 59 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 29 +#define YYNNTS 32 /* YYNRULES -- Number of rules. */ -#define YYNRULES 81 +#define YYNRULES 108 /* YYNRULES -- Number of states. */ -#define YYNSTATES 225 +#define YYNSTATES 313 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 301 +#define YYMAXUTOK 313 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -351,7 +376,8 @@ 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, 44, - 45, 46 + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58 }; #if YYDEBUG @@ -359,69 +385,84 @@ YYRHS. */ static const unsigned short yyprhs[] = { - 0, 0, 3, 5, 9, 14, 15, 17, 19, 21, - 23, 26, 29, 32, 35, 39, 43, 47, 51, 55, - 59, 65, 69, 75, 81, 87, 89, 91, 93, 99, - 107, 117, 119, 125, 133, 143, 145, 151, 159, 165, - 171, 177, 185, 193, 203, 213, 217, 223, 227, 231, - 235, 241, 249, 255, 261, 267, 273, 277, 283, 285, - 287, 289, 295, 299, 301, 303, 305, 307, 309, 311, - 313, 315, 317, 319, 321, 323, 327, 329, 331, 334, - 337, 339 + 0, 0, 3, 6, 7, 9, 11, 13, 15, 18, + 21, 24, 27, 31, 35, 39, 43, 47, 51, 57, + 61, 65, 69, 75, 77, 79, 81, 83, 85, 87, + 89, 91, 93, 95, 97, 99, 101, 103, 105, 111, + 119, 129, 131, 137, 145, 155, 157, 159, 165, 171, + 179, 189, 197, 207, 209, 215, 223, 229, 235, 241, + 249, 259, 267, 277, 281, 287, 291, 297, 301, 305, + 309, 313, 317, 323, 331, 337, 347, 353, 359, 365, + 371, 377, 381, 387, 389, 391, 393, 395, 397, 403, + 411, 415, 417, 419, 421, 423, 425, 427, 429, 431, + 433, 435, 437, 439, 441, 443, 445, 447, 449 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yysigned_char yyrhs[] = { - 48, 0, -1, 49, -1, 48, 7, 49, -1, 48, - 8, 7, 49, -1, -1, 50, -1, 51, -1, 1, - -1, 9, -1, 50, 9, -1, 50, 6, -1, 50, - 5, -1, 50, 75, -1, 11, 6, 23, -1, 12, - 6, 52, -1, 13, 6, 54, -1, 14, 6, 55, - -1, 15, 6, 60, -1, 16, 6, 56, -1, 17, - 6, 23, 6, 65, -1, 18, 6, 53, -1, 19, - 6, 24, 6, 67, -1, 20, 6, 24, 6, 70, - -1, 21, 6, 23, 6, 65, -1, 22, -1, 25, - -1, 26, -1, 39, 6, 28, 6, 75, -1, 40, - 6, 28, 6, 75, 6, 75, -1, 40, 6, 28, - 6, 75, 6, 75, 6, 58, -1, 37, -1, 36, - 6, 28, 6, 5, -1, 34, 6, 28, 6, 5, - 6, 5, -1, 35, 6, 28, 6, 5, 6, 5, - 6, 75, -1, 27, -1, 23, 6, 28, 6, 65, - -1, 23, 6, 29, 6, 59, 6, 65, -1, 23, - 6, 30, 6, 65, -1, 23, 6, 31, 6, 65, - -1, 33, 6, 28, 6, 71, -1, 38, 6, 5, - 6, 75, 6, 74, -1, 38, 6, 5, 6, 75, - 10, 74, -1, 35, 6, 5, 6, 5, 6, 75, - 6, 74, -1, 35, 6, 5, 6, 5, 6, 75, - 10, 74, -1, 23, 6, 57, -1, 36, 6, 75, - 6, 58, -1, 36, 6, 5, -1, 32, 6, 61, - -1, 33, 6, 62, -1, 36, 6, 65, 6, 5, - -1, 34, 6, 65, 6, 68, 6, 68, -1, 41, - 6, 65, 6, 72, -1, 42, 6, 65, 6, 69, - -1, 43, 6, 65, 6, 63, -1, 44, 6, 65, - 6, 64, -1, 75, 10, 74, -1, 58, 6, 75, - 10, 74, -1, 45, -1, 46, -1, 37, -1, 73, - 6, 66, 6, 65, -1, 71, 6, 65, -1, 75, - -1, 4, -1, 5, -1, 5, -1, 5, -1, 5, - -1, 5, -1, 5, -1, 74, -1, 75, -1, 74, - -1, 74, -1, 73, 6, 74, -1, 75, -1, 5, - -1, 74, 75, -1, 74, 5, -1, 3, -1, 75, + 60, 0, -1, 61, 8, -1, -1, 62, -1, 63, + -1, 1, -1, 10, -1, 62, 10, -1, 62, 7, + -1, 62, 5, -1, 62, 90, -1, 12, 7, 25, + -1, 13, 7, 66, -1, 14, 7, 68, -1, 15, + 7, 69, -1, 16, 7, 74, -1, 17, 7, 70, + -1, 19, 7, 25, 7, 85, -1, 20, 7, 67, + -1, 21, 7, 64, -1, 22, 7, 65, -1, 23, + 7, 25, 7, 85, -1, 24, -1, 29, -1, 33, + -1, 32, -1, 31, -1, 30, -1, 58, -1, 29, + -1, 33, -1, 32, -1, 31, -1, 30, -1, 58, + -1, 27, -1, 51, -1, 49, 7, 30, 7, 90, + -1, 50, 7, 30, 7, 90, 7, 90, -1, 50, + 7, 30, 7, 90, 7, 90, 7, 72, -1, 28, + -1, 41, 7, 30, 7, 90, -1, 42, 7, 30, + 7, 90, 7, 90, -1, 42, 7, 30, 7, 90, + 7, 90, 7, 72, -1, 39, -1, 53, -1, 38, + 7, 30, 7, 5, -1, 52, 7, 30, 7, 5, + -1, 46, 7, 30, 7, 5, 7, 5, -1, 55, + 7, 30, 7, 5, 7, 5, 7, 90, -1, 36, + 7, 30, 7, 5, 7, 5, -1, 37, 7, 30, + 7, 5, 7, 5, 7, 90, -1, 29, -1, 25, + 7, 30, 7, 85, -1, 25, 7, 31, 7, 73, + 7, 85, -1, 25, 7, 32, 7, 85, -1, 25, + 7, 33, 7, 85, -1, 35, 7, 30, 7, 87, + -1, 40, 7, 5, 7, 90, 11, 89, -1, 37, + 7, 5, 7, 5, 7, 90, 11, 89, -1, 54, + 7, 5, 7, 90, 11, 89, -1, 55, 7, 5, + 7, 5, 7, 90, 11, 89, -1, 25, 7, 71, + -1, 38, 7, 90, 7, 72, -1, 38, 7, 90, + -1, 52, 7, 90, 7, 72, -1, 52, 7, 90, + -1, 38, 7, 5, -1, 52, 7, 5, -1, 34, + 7, 75, -1, 35, 7, 76, -1, 38, 7, 85, + 7, 77, -1, 36, 7, 85, 7, 78, 7, 78, + -1, 43, 7, 85, 7, 79, -1, 44, 7, 85, + 7, 80, 7, 81, 7, 82, -1, 52, 7, 85, + 7, 80, -1, 46, 7, 85, 7, 81, -1, 47, + 7, 85, 7, 82, -1, 45, 7, 85, 7, 83, + -1, 48, 7, 85, 7, 84, -1, 90, 11, 89, + -1, 72, 7, 90, 11, 89, -1, 56, -1, 57, + -1, 39, -1, 53, -1, 29, -1, 88, 7, 86, + 7, 85, -1, 18, 7, 88, 7, 86, 7, 85, + -1, 87, 7, 85, -1, 5, -1, 5, -1, 90, + -1, 5, -1, 5, -1, 5, -1, 90, -1, 4, + -1, 5, -1, 5, -1, 5, -1, 90, -1, 6, + -1, 6, -1, 5, -1, 4, -1, 3, -1, 90, 3, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned char yyrline[] = { - 0, 75, 75, 76, 77, 80, 81, 82, 83, 86, - 87, 88, 89, 90, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 124, 125, 126, 127, 128, 131, 134, 137, 138, - 141, 142, 143, 144, 145, 146, 149, 150, 152, 153, - 156, 159, 162, 165, 168, 169, 172, 175, 178, 181, - 184, 187, 190, 193, 196, 197, 200, 201, 202, 203, - 206, 207 + 0, 79, 79, 81, 82, 83, 84, 87, 88, 89, + 90, 91, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 108, 109, 110, 111, 112, 113, + 116, 117, 118, 119, 120, 121, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 149, + 150, 151, 152, 153, 156, 157, 158, 159, 162, 163, + 166, 167, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 181, 182, 185, 186, 189, 190, 191, 194, 195, + 198, 201, 204, 207, 210, 213, 216, 219, 222, 223, + 226, 229, 232, 235, 238, 239, 240, 243, 244 }; #endif @@ -430,25 +471,30 @@ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "CHAR", "DOTNUM", "NUMBER", "SP", "LF", - "CR", "HASH", "EQ", "ADD", "GET", "CREATE", "DESTROY", "LIST", "LOAD", - "REMOVE", "SET", "SUBSCRIBE", "UNSUBSCRIBE", "RESET", "QUIT", "CHANNEL", - "NOTIFICATION", "AVAILABLE_ENGINES", "AVAILABLE_AUDIO_OUTPUT_DRIVERS", - "CHANNELS", "INFO", "BUFFER_FILL", "STREAM_COUNT", "VOICE_COUNT", - "INSTRUMENT", "ENGINE", "AUDIO_OUTPUT_CHANNEL", - "AUDIO_OUTPUT_CHANNEL_PARAMETER", "AUDIO_OUTPUT_DEVICE", - "AUDIO_OUTPUT_DEVICES", "AUDIO_OUTPUT_DEVICE_PARAMETER", - "AUDIO_OUTPUT_DRIVER", "AUDIO_OUTPUT_DRIVER_PARAMETER", - "MIDI_INPUT_PORT", "MIDI_INPUT_CHANNEL", "MIDI_INPUT_TYPE", "VOLUME", - "BYTES", "PERCENTAGE", "$accept", "input", "line", "comment", "command", - "get_instruction", "set_instruction", "create_instruction", - "destroy_instruction", "load_instruction", "set_chan_instruction", - "key_val_list", "buffer_size_type", "list_instruction", - "load_instr_args", "load_engine_args", "midi_input_type", "volume", - "sampler_channel", "instrument_index", "udp_port", - "audio_output_channel", "midi_input_channel", "session_id", - "engine_name", "midi_input_port", "filename", "alpha_num_string", - "string", 0 + "$end", "error", "$undefined", "CHAR", "DOTNUM", "NUMBER", "STRINGVAL", + "SP", "LF", "CR", "HASH", "EQ", "ADD", "GET", "CREATE", "DESTROY", + "LIST", "LOAD", "NON_MODAL", "REMOVE", "SET", "SUBSCRIBE", + "UNSUBSCRIBE", "RESET", "QUIT", "CHANNEL", "NOTIFICATION", + "AVAILABLE_ENGINES", "AVAILABLE_AUDIO_OUTPUT_DRIVERS", "CHANNELS", + "INFO", "BUFFER_FILL", "STREAM_COUNT", "VOICE_COUNT", "INSTRUMENT", + "ENGINE", "AUDIO_OUTPUT_CHANNEL", "AUDIO_OUTPUT_CHANNEL_PARAMETER", + "AUDIO_OUTPUT_DEVICE", "AUDIO_OUTPUT_DEVICES", + "AUDIO_OUTPUT_DEVICE_PARAMETER", "AUDIO_OUTPUT_DRIVER", + "AUDIO_OUTPUT_DRIVER_PARAMETER", "AUDIO_OUTPUT_TYPE", "MIDI_INPUT", + "MIDI_INPUT_TYPE", "MIDI_INPUT_PORT", "MIDI_INPUT_CHANNEL", "VOLUME", + "MIDI_INPUT_DRIVER", "MIDI_INPUT_DRIVER_PARAMETER", + "AVAILABLE_MIDI_INPUT_DRIVERS", "MIDI_INPUT_DEVICE", + "MIDI_INPUT_DEVICES", "MIDI_INPUT_DEVICE_PARAMETER", + "MIDI_INPUT_PORT_PARAMETER", "BYTES", "PERCENTAGE", "MISCELLANEOUS", + "$accept", "input", "line", "comment", "command", "subscribe_event", + "unsubscribe_event", "get_instruction", "set_instruction", + "create_instruction", "destroy_instruction", "load_instruction", + "set_chan_instruction", "key_val_list", "buffer_size_type", + "list_instruction", "load_instr_args", "load_engine_args", + "audio_output_device", "audio_output_channel", "audio_output_type", + "midi_input_device", "midi_input_port", "midi_input_channel", + "midi_input_type", "volume", "sampler_channel", "instrument_index", + "engine_name", "filename", "param_val", "string", 0 }; #endif @@ -461,36 +507,41 @@ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301 + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 0, 47, 48, 48, 48, 49, 49, 49, 49, 50, - 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 53, 53, 53, 53, 53, 54, 55, 56, 56, - 57, 57, 57, 57, 57, 57, 58, 58, 59, 59, - 60, 61, 62, 63, 64, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 73, 74, 74, 74, 74, - 75, 75 + 0, 59, 60, 61, 61, 61, 61, 62, 62, 62, + 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, + 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, + 67, 67, 67, 67, 68, 68, 68, 68, 69, 69, + 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 72, 72, 73, 73, 74, 74, 74, 75, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 84, + 85, 86, 87, 88, 89, 89, 89, 90, 90 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const unsigned char yyr2[] = { - 0, 2, 1, 3, 4, 0, 1, 1, 1, 1, - 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, - 5, 3, 5, 5, 5, 1, 1, 1, 5, 7, - 9, 1, 5, 7, 9, 1, 5, 7, 5, 5, - 5, 7, 7, 9, 9, 3, 5, 3, 3, 3, - 5, 7, 5, 5, 5, 5, 3, 5, 1, 1, - 1, 5, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 1, 2, 2, - 1, 2 + 0, 2, 2, 0, 1, 1, 1, 1, 2, 2, + 2, 2, 3, 3, 3, 3, 3, 3, 5, 3, + 3, 3, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 5, 7, + 9, 1, 5, 7, 9, 1, 1, 5, 5, 7, + 9, 7, 9, 1, 5, 7, 5, 5, 5, 7, + 9, 7, 9, 3, 5, 3, 5, 3, 3, 3, + 3, 3, 5, 7, 5, 9, 5, 5, 5, 5, + 5, 3, 5, 1, 1, 1, 1, 1, 5, 7, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -498,163 +549,208 @@ means the default is an error. */ static const unsigned char yydefact[] = { - 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 2, 6, 7, 0, + 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 80, 12, 11, 10, 13, 14, 0, - 26, 27, 35, 0, 0, 0, 0, 31, 0, 0, - 15, 0, 16, 0, 17, 60, 18, 0, 0, 19, - 0, 0, 0, 0, 21, 0, 0, 0, 3, 0, - 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 1, 2, 107, 10, 9, 8, 11, 12, 0, 36, + 41, 53, 0, 0, 0, 0, 45, 0, 0, 0, + 0, 0, 37, 0, 46, 0, 13, 0, 0, 14, + 0, 0, 15, 87, 85, 86, 16, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 19, 24, 28, 27, + 26, 25, 29, 20, 30, 34, 33, 32, 31, 35, + 21, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 47, 77, 48, 0, 74, 76, 49, 0, 72, - 66, 20, 0, 0, 0, 0, 0, 0, 45, 0, - 0, 68, 22, 23, 71, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 78, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 58, 59, 0, 38, 39, 40, 0, 0, 32, 28, - 0, 46, 0, 77, 0, 75, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 33, 0, 29, 0, 56, 61, 69, 0, - 50, 52, 73, 70, 53, 54, 63, 64, 65, 55, - 0, 41, 42, 0, 0, 0, 0, 0, 0, 34, - 30, 57, 51, 43, 44 + 0, 0, 0, 65, 67, 68, 69, 103, 0, 70, + 0, 71, 0, 102, 100, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 83, 84, 0, 56, 57, + 58, 0, 0, 47, 42, 0, 0, 38, 0, 48, + 0, 64, 0, 66, 0, 101, 0, 90, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 51, 0, 43, 49, + 39, 0, 0, 106, 105, 104, 81, 0, 88, 92, + 0, 91, 72, 74, 93, 94, 0, 79, 97, 95, + 77, 96, 78, 98, 99, 80, 76, 0, 59, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 44, 40, 50, 82, 89, 73, 0, 60, + 62, 0, 75 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { - -1, 15, 16, 17, 18, 50, 64, 52, 54, 59, - 118, 161, 152, 56, 103, 107, 205, 209, 111, 164, - 122, 199, 204, 123, 108, 201, 104, 105, 106 + -1, 15, 16, 17, 18, 83, 90, 56, 76, 59, + 62, 69, 155, 211, 197, 66, 139, 141, 272, 270, + 273, 276, 280, 282, 277, 285, 145, 216, 142, 140, + 266, 212 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -86 +#define YYPACT_NINF -250 static const short yypact[] = { - 3, -86, -86, 21, 25, 43, 67, 86, 91, 96, - 105, 106, 108, 109, -86, 28, -86, 84, -86, -14, - 7, 80, 85, 83, 5, 87, 22, 99, 100, 102, - -86, 3, 115, -86, -86, -86, -86, 123, -86, 121, - -86, -86, -86, 122, 128, 129, 130, -86, 131, 132, - -86, 133, -86, 134, -86, -86, -86, 135, 136, -86, - 137, 138, 139, 140, -86, 141, 143, 144, -86, 3, - -86, -23, 101, 124, 125, 126, 127, 142, 148, 151, - 45, 148, 152, 38, 153, 154, 155, 45, 152, -86, - 157, 158, 159, 160, 161, 162, 166, 167, 168, 169, - 23, -86, -86, -86, 170, 93, 123, -86, 171, 123, - -86, -86, 172, 174, 175, 176, 177, 178, -86, 180, - 181, -86, -86, -86, 93, -86, 152, 40, 152, 152, - 148, 183, 184, 185, 148, 148, 148, 98, -86, 123, - 152, 152, 152, 152, 152, 152, 152, 186, 148, -86, - -86, -86, 187, -86, -86, -86, 192, 193, -86, 123, - 72, 194, 73, 195, 196, 93, -86, 197, 199, 202, - 203, 204, 205, 206, 52, 152, 208, 209, 148, 148, - 45, 152, 210, 211, 45, 212, 148, 104, 148, 45, - 45, -86, -86, 213, 88, 74, 93, -86, -86, 214, - -86, -86, 93, -86, -86, -86, 123, -86, -86, -86, - 53, 93, 93, 148, 148, 45, 210, 45, 45, 123, - 194, 93, -86, 93, 93 + 82, -250, -250, -1, 16, 100, 103, 128, 143, 144, + 147, 150, 151, 152, -250, 13, 30, 106, -250, 15, + -20, -27, -24, -19, 110, 53, -13, 23, 28, 55, + -250, -250, -250, -250, -250, -250, 127, -250, 153, -250, + -250, -250, 154, 155, 156, 157, -250, 158, 159, 160, + 161, 162, -250, 163, -250, 164, -250, 165, 166, -250, + 169, 170, -250, -250, -250, -250, -250, 171, 172, -250, + 174, 175, 176, 177, 178, 179, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, 180, -250, 107, 119, 167, 168, 173, 181, 182, + 183, 184, 185, 186, 188, 187, 187, 189, 190, 31, + 187, 191, 76, 194, 195, 196, 197, 191, 198, 199, + 200, 201, 202, 203, 213, 215, 216, 217, 218, 219, + 221, 223, 224, 36, 72, -250, -250, -250, 225, -250, + 226, -250, 228, 127, -250, -250, 229, 231, 232, 233, + 234, 235, 236, 237, 238, -250, 239, 240, 241, 242, + -250, 191, 6, 191, 191, 187, 245, 246, 247, 187, + 187, 248, 187, 187, 249, 250, 187, 187, 251, 253, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 254, 187, 187, 255, -250, -250, -250, 256, -250, -250, + -250, 257, 258, -250, 127, 84, 259, 127, 124, -250, + 260, 261, 33, 261, 262, -250, 263, -250, 264, 265, + 266, 268, 269, 271, 272, 273, 274, 275, 71, 73, + 276, 191, 279, 280, 187, 281, 187, 282, 187, 137, + 253, 191, 283, 284, 187, 285, 187, 286, 287, 142, + 285, 187, 137, 137, 187, -250, -250, 288, 126, -250, + 129, 289, 74, -250, -250, -250, -250, 290, -250, -250, + 291, -250, -250, -250, 127, -250, 292, -250, 127, -250, + -250, -250, -250, -250, -250, -250, -250, 97, -250, -250, + 123, 187, 187, 187, 187, 137, 191, 283, 286, 137, + 137, 127, 261, 261, 127, -250, -250, -250, 293, -250, + -250, 287, -250 }; /* YYPGOTO[NTERM-NUM]. */ -static const yysigned_char yypgoto[] = +static const short yypgoto[] = { - -86, -86, -30, -86, -86, -86, -86, -86, -86, -86, - -86, -22, -86, -86, -86, -86, -86, -86, -75, -86, - -86, 2, -86, -86, 92, -86, -86, -85, -17 + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -175, -250, -250, -250, -250, -250, -109, + -250, -61, -107, -119, -250, -250, -116, -47, 39, 78, + -249, -17 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -68 +#define YYTABLE_NINF -4 static const short yytable[] = { - 37, 68, 124, -5, 1, 90, 91, 92, 93, 38, - -5, -5, 2, 125, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 70, 19, 30, 136, - 39, 20, 40, 41, 42, 31, 32, 57, 58, 89, - 43, 44, 45, 46, 47, 61, 48, 49, 33, 21, - 102, 149, 165, 153, 154, 70, 70, 62, 189, 217, - 63, 100, 190, 218, 109, 166, 167, 168, 169, 170, - 171, 172, 112, 22, 113, 70, 70, 70, 178, 114, - 115, 116, 117, 180, 215, 150, 151, 33, 139, 34, - 35, 70, 23, 36, 214, 196, 33, 24, 138, 202, - 191, 33, 25, 163, 211, 212, 197, 139, 207, 208, - 60, 26, 27, 109, 28, 29, 51, 159, 160, 162, - 55, 53, 69, 65, 66, 67, 70, 71, 72, 94, - 221, 174, 223, 224, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 139, 87, - 88, 33, 95, 96, 97, 98, 101, 110, 119, 120, - 121, 194, 195, 126, 127, 128, 129, 130, 131, 206, - 99, 210, 132, 133, 134, 135, 137, 140, 141, 139, - 142, 143, 144, 145, 146, 139, 147, 148, 156, 157, - 158, 173, 220, 175, 139, 139, 219, 162, 176, 177, - 179, -67, 181, 182, 139, 183, 139, 139, 184, 185, - 186, 187, 188, 192, 193, 198, 200, 203, 222, 213, - 216, 0, 155 + 36, 160, 213, 288, 289, 38, 19, 39, 40, 41, + 63, 57, 71, 30, 60, 42, 43, 44, 45, 46, + 64, 47, 48, 20, 72, 58, 49, 73, 61, 50, + 51, 52, 53, 54, 65, 55, 92, 137, 31, 92, + 37, 74, 75, 176, 239, 194, 305, 198, 199, 138, + 309, 310, 77, 78, 79, 80, 81, 84, 85, 86, + 87, 88, 195, 196, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 92, 92, 92, 92, 70, 177, + 91, 82, 252, 1, 253, 295, 89, 92, 133, 134, + -3, 234, 2, 143, 3, 4, 5, 6, 7, 8, + 92, 9, 10, 11, 12, 13, 14, 21, 299, 32, + 22, 33, 146, 34, 147, 255, 35, 302, 303, 148, + 149, 150, 151, 152, 153, 268, 92, 92, 154, 92, + 92, 236, 92, 292, 300, 23, 293, 118, 119, 120, + 121, 263, 264, 265, 67, 68, 283, 284, 143, 122, + 24, 25, 204, 205, 26, 207, 208, 27, 28, 29, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 228, 229, 107, 108, 109, 110, + 306, 111, 112, 113, 114, 115, 116, 117, 307, 286, + 32, 308, 312, 267, 135, 136, 144, 123, 124, 156, + 157, 158, 159, 125, 200, 161, 162, 163, 164, 165, + 166, 126, 127, 128, 129, 130, 131, 258, 132, 260, + 167, 262, 168, 169, 170, 171, 172, 274, 173, 278, + 174, 175, 178, 179, 287, 180, 181, 290, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 201, 202, 203, 206, 209, 210, 214, 137, 215, 227, + 230, 0, 0, 231, 232, 233, 235, 237, 238, 240, + 241, 242, 243, 244, 301, 245, 246, 304, 247, 248, + 249, 250, 251, 254, 256, 257, 259, 261, 269, 271, + 275, 279, 281, 0, 0, 291, 294, 296, 297, 298, + 311 }; static const short yycheck[] = { - 17, 31, 87, 0, 1, 28, 29, 30, 31, 23, - 7, 8, 9, 88, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 3, 6, 0, 6, - 23, 6, 25, 26, 27, 7, 8, 32, 33, 69, - 33, 34, 35, 36, 37, 23, 39, 40, 3, 6, - 5, 126, 137, 128, 129, 3, 3, 35, 6, 6, - 38, 78, 10, 10, 81, 140, 141, 142, 143, 144, - 145, 146, 34, 6, 36, 3, 3, 3, 6, 41, - 42, 43, 44, 10, 10, 45, 46, 3, 105, 5, - 6, 3, 6, 9, 6, 180, 3, 6, 5, 184, - 175, 3, 6, 5, 189, 190, 181, 124, 4, 5, - 23, 6, 6, 130, 6, 6, 36, 134, 135, 136, - 37, 36, 7, 24, 24, 23, 3, 6, 6, 28, - 215, 148, 217, 218, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 165, 6, - 6, 3, 28, 28, 28, 28, 5, 5, 5, 5, - 5, 178, 179, 6, 6, 6, 6, 6, 6, 186, - 28, 188, 6, 6, 6, 6, 6, 6, 6, 196, - 6, 6, 6, 6, 6, 202, 6, 6, 5, 5, - 5, 5, 214, 6, 211, 212, 213, 214, 6, 6, - 6, 6, 6, 6, 221, 6, 223, 224, 6, 6, - 6, 6, 6, 5, 5, 5, 5, 5, 216, 6, - 6, -1, 130 + 17, 117, 177, 252, 253, 25, 7, 27, 28, 29, + 29, 38, 25, 0, 38, 35, 36, 37, 38, 39, + 39, 41, 42, 7, 37, 52, 46, 40, 52, 49, + 50, 51, 52, 53, 53, 55, 3, 6, 8, 3, + 25, 54, 55, 7, 11, 161, 295, 163, 164, 18, + 299, 300, 29, 30, 31, 32, 33, 29, 30, 31, + 32, 33, 56, 57, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 3, 3, 3, 3, 25, 7, + 25, 58, 11, 1, 11, 11, 58, 3, 105, 106, + 8, 7, 10, 110, 12, 13, 14, 15, 16, 17, + 3, 19, 20, 21, 22, 23, 24, 7, 11, 3, + 7, 5, 36, 7, 38, 231, 10, 292, 293, 43, + 44, 45, 46, 47, 48, 241, 3, 3, 52, 3, + 3, 7, 3, 7, 11, 7, 7, 30, 31, 32, + 33, 4, 5, 6, 34, 35, 4, 5, 165, 30, + 7, 7, 169, 170, 7, 172, 173, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 191, 192, 7, 7, 7, 7, + 296, 7, 7, 7, 7, 7, 7, 7, 297, 250, + 3, 298, 311, 240, 5, 5, 5, 30, 30, 5, + 5, 5, 5, 30, 165, 7, 7, 7, 7, 7, + 7, 30, 30, 30, 30, 30, 30, 234, 30, 236, + 7, 238, 7, 7, 7, 7, 7, 244, 7, 246, + 7, 7, 7, 7, 251, 7, 7, 254, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 5, 5, 5, 5, 5, 5, 178, 6, 5, 5, + 5, -1, -1, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 291, 7, 7, 294, 7, 7, + 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, + 5, 5, 5, -1, -1, 7, 7, 7, 7, 7, + 7 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 1, 9, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 48, 49, 50, 51, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 0, 7, 8, 3, 5, 6, 9, 75, 23, 23, - 25, 26, 27, 33, 34, 35, 36, 37, 39, 40, - 52, 36, 54, 36, 55, 37, 60, 32, 33, 56, - 23, 23, 35, 38, 53, 24, 24, 23, 49, 7, - 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 49, - 28, 29, 30, 31, 28, 28, 28, 28, 28, 28, - 75, 5, 5, 61, 73, 74, 75, 62, 71, 75, - 5, 65, 34, 36, 41, 42, 43, 44, 57, 5, - 5, 5, 67, 70, 74, 65, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 5, 75, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 65, - 45, 46, 59, 65, 65, 71, 5, 5, 5, 75, - 75, 58, 75, 5, 66, 74, 65, 65, 65, 65, - 65, 65, 65, 5, 75, 6, 6, 6, 6, 6, - 10, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 10, 65, 5, 5, 75, 75, 74, 65, 5, 68, - 5, 72, 74, 5, 69, 63, 75, 4, 5, 64, - 75, 74, 74, 6, 6, 10, 6, 6, 10, 75, - 58, 74, 68, 74, 74 + 0, 1, 10, 12, 13, 14, 15, 16, 17, 19, + 20, 21, 22, 23, 24, 60, 61, 62, 63, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0, 8, 3, 5, 7, 10, 90, 25, 25, 27, + 28, 29, 35, 36, 37, 38, 39, 41, 42, 46, + 49, 50, 51, 52, 53, 55, 66, 38, 52, 68, + 38, 52, 69, 29, 39, 53, 74, 34, 35, 70, + 25, 25, 37, 40, 54, 55, 67, 29, 30, 31, + 32, 33, 58, 64, 29, 30, 31, 32, 33, 58, + 65, 25, 3, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 30, 31, + 32, 33, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 90, 90, 5, 5, 6, 18, 75, + 88, 76, 87, 90, 5, 85, 36, 38, 43, 44, + 45, 46, 47, 48, 52, 71, 5, 5, 5, 5, + 85, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 85, 56, 57, 73, 85, 85, + 87, 5, 5, 5, 90, 90, 5, 90, 90, 5, + 5, 72, 90, 72, 88, 5, 86, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 5, 90, 90, + 5, 7, 7, 7, 7, 7, 7, 7, 7, 11, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 11, 11, 7, 85, 5, 5, 90, 5, + 90, 5, 90, 4, 5, 6, 89, 86, 85, 5, + 78, 5, 77, 79, 90, 5, 80, 83, 90, 5, + 81, 5, 82, 4, 5, 84, 80, 90, 89, 89, + 90, 7, 7, 7, 7, 11, 7, 7, 7, 11, + 11, 90, 72, 72, 90, 89, 85, 78, 81, 89, + 89, 7, 82 }; #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) @@ -1264,298 +1360,448 @@ YY_REDUCE_PRINT (yyn); switch (yyn) { - case 7: + case 3: +#line 81 "lscp.y" + { return LSCP_DONE; } + break; + + case 4: #line 82 "lscp.y" - { LSCPSERVER->AnswerClient(yyvsp[0].String); } + { return LSCP_DONE; } break; - case 8: + case 5: #line 83 "lscp.y" + { LSCPSERVER->AnswerClient(yyvsp[0].String); return LSCP_DONE; } + break; + + case 6: +#line 84 "lscp.y" { LSCPSERVER->AnswerClient("Err:0:Unknown command.\r\n"); RESTART; return LSCP_SYNTAX_ERROR; } break; - case 14: -#line 93 "lscp.y" + case 12: +#line 94 "lscp.y" { yyval.String = LSCPSERVER->AddChannel(); } break; + case 13: +#line 95 "lscp.y" + { yyval.String = yyvsp[0].String; } + break; + + case 14: +#line 96 "lscp.y" + { yyval.String = yyvsp[0].String; } + break; + case 15: -#line 94 "lscp.y" +#line 97 "lscp.y" { yyval.String = yyvsp[0].String; } break; case 16: -#line 95 "lscp.y" +#line 98 "lscp.y" { yyval.String = yyvsp[0].String; } break; case 17: -#line 96 "lscp.y" +#line 99 "lscp.y" { yyval.String = yyvsp[0].String; } break; case 18: -#line 97 "lscp.y" - { yyval.String = yyvsp[0].String; } +#line 100 "lscp.y" + { yyval.String = LSCPSERVER->RemoveChannel(yyvsp[0].Number); } break; case 19: -#line 98 "lscp.y" +#line 101 "lscp.y" { yyval.String = yyvsp[0].String; } break; case 20: -#line 99 "lscp.y" - { yyval.String = LSCPSERVER->RemoveChannel(yyvsp[0].Number); } +#line 102 "lscp.y" + { yyval.String = yyvsp[0].String; } break; case 21: -#line 100 "lscp.y" +#line 103 "lscp.y" { yyval.String = yyvsp[0].String; } break; case 22: -#line 101 "lscp.y" - { yyval.String = LSCPSERVER->SubscribeNotification(yyvsp[0].Number); } +#line 104 "lscp.y" + { yyval.String = LSCPSERVER->ResetChannel(yyvsp[0].Number); } break; case 23: -#line 102 "lscp.y" - { yyval.String = LSCPSERVER->UnsubscribeNotification(yyvsp[0].String); } +#line 105 "lscp.y" + { LSCPSERVER->AnswerClient("Bye!\r\n"); return LSCP_QUIT; } break; case 24: -#line 103 "lscp.y" - { yyval.String = LSCPSERVER->ResetChannel(yyvsp[0].Number); } +#line 108 "lscp.y" + { yyval.String = LSCPSERVER->SubscribeNotification(LSCPEvent::event_channels); } break; case 25: -#line 104 "lscp.y" - { LSCPSERVER->AnswerClient("Bye!\r\n"); return 0; } +#line 109 "lscp.y" + { yyval.String = LSCPSERVER->SubscribeNotification(LSCPEvent::event_voice_count); } break; case 26: -#line 107 "lscp.y" - { yyval.String = LSCPSERVER->GetAvailableEngines(); } +#line 110 "lscp.y" + { yyval.String = LSCPSERVER->SubscribeNotification(LSCPEvent::event_stream_count); } break; case 27: -#line 108 "lscp.y" - { yyval.String = LSCPSERVER->GetAvailableAudioOutputDrivers(); } +#line 111 "lscp.y" + { yyval.String = LSCPSERVER->SubscribeNotification(LSCPEvent::event_buffer_fill); } break; case 28: -#line 109 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputDriverInfo(yyvsp[0].String); } +#line 112 "lscp.y" + { yyval.String = LSCPSERVER->SubscribeNotification(LSCPEvent::event_info); } break; case 29: -#line 110 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputDriverParameterInfo(yyvsp[-2].String, yyvsp[0].String); } +#line 113 "lscp.y" + { yyval.String = LSCPSERVER->SubscribeNotification(LSCPEvent::event_misc); } break; case 30: -#line 111 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputDriverParameterInfo(yyvsp[-4].String, yyvsp[-2].String, yyvsp[0].KeyValList); } +#line 116 "lscp.y" + { yyval.String = LSCPSERVER->UnsubscribeNotification(LSCPEvent::event_channels); } break; case 31: -#line 112 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputDeviceCount(); } +#line 117 "lscp.y" + { yyval.String = LSCPSERVER->UnsubscribeNotification(LSCPEvent::event_voice_count); } break; case 32: -#line 113 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputDeviceInfo(yyvsp[0].Number); } +#line 118 "lscp.y" + { yyval.String = LSCPSERVER->UnsubscribeNotification(LSCPEvent::event_stream_count); } break; case 33: -#line 114 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputChannelInfo(yyvsp[-2].Number, yyvsp[0].Number); } +#line 119 "lscp.y" + { yyval.String = LSCPSERVER->UnsubscribeNotification(LSCPEvent::event_buffer_fill); } break; case 34: -#line 115 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputChannelParameterInfo(yyvsp[-4].Number, yyvsp[-2].Number, yyvsp[0].String); } +#line 120 "lscp.y" + { yyval.String = LSCPSERVER->UnsubscribeNotification(LSCPEvent::event_info); } break; case 35: -#line 116 "lscp.y" - { yyval.String = LSCPSERVER->GetChannels(); } +#line 121 "lscp.y" + { yyval.String = LSCPSERVER->UnsubscribeNotification(LSCPEvent::event_misc); } break; case 36: -#line 117 "lscp.y" - { yyval.String = LSCPSERVER->GetChannelInfo(yyvsp[0].Number); } +#line 124 "lscp.y" + { yyval.String = LSCPSERVER->GetAvailableEngines(); } break; case 37: -#line 118 "lscp.y" - { yyval.String = LSCPSERVER->GetBufferFill(yyvsp[-2].FillResponse, yyvsp[0].Number); } +#line 125 "lscp.y" + { yyval.String = LSCPSERVER->GetAvailableMidiInputDrivers(); } break; case 38: -#line 119 "lscp.y" - { yyval.String = LSCPSERVER->GetStreamCount(yyvsp[0].Number); } +#line 126 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputDriverInfo(yyvsp[0].String); } break; case 39: -#line 120 "lscp.y" - { yyval.String = LSCPSERVER->GetVoiceCount(yyvsp[0].Number); } +#line 127 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputDriverParameterInfo(yyvsp[-2].String, yyvsp[0].String); } break; case 40: -#line 121 "lscp.y" - { yyval.String = LSCPSERVER->GetEngineInfo(yyvsp[0].String); } +#line 128 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputDriverParameterInfo(yyvsp[-4].String, yyvsp[-2].String, yyvsp[0].KeyValList); } break; case 41: -#line 124 "lscp.y" - { yyval.String = LSCPSERVER->SetAudioOutputDeviceParameter(yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } +#line 129 "lscp.y" + { yyval.String = LSCPSERVER->GetAvailableAudioOutputDrivers(); } break; case 42: -#line 125 "lscp.y" - { yyval.String = LSCPSERVER->SetAudioOutputDeviceParameter(yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } +#line 130 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputDriverInfo(yyvsp[0].String); } break; case 43: -#line 126 "lscp.y" - { yyval.String = LSCPSERVER->SetAudioOutputChannelParameter(yyvsp[-6].Number, yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } +#line 131 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputDriverParameterInfo(yyvsp[-2].String, yyvsp[0].String); } break; case 44: -#line 127 "lscp.y" - { yyval.String = LSCPSERVER->SetAudioOutputChannelParameter(yyvsp[-6].Number, yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } +#line 132 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputDriverParameterInfo(yyvsp[-4].String, yyvsp[-2].String, yyvsp[0].KeyValList); } break; case 45: -#line 128 "lscp.y" - { yyval.String = yyvsp[0].String; } +#line 133 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputDeviceCount(); } break; case 46: -#line 131 "lscp.y" - { yyval.String = LSCPSERVER->CreateAudioOutputDevice(yyvsp[-2].String,yyvsp[0].KeyValList); } +#line 134 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputDeviceCount(); } break; case 47: -#line 134 "lscp.y" - { yyval.String = LSCPSERVER->DestroyAudioOutputDevice(yyvsp[0].Number); } +#line 135 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputDeviceInfo(yyvsp[0].Number); } break; case 48: -#line 137 "lscp.y" - { yyval.String = yyvsp[0].String; } +#line 136 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputDeviceInfo(yyvsp[0].Number); } break; case 49: -#line 138 "lscp.y" - { yyval.String = yyvsp[0].String; } +#line 137 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputPortInfo(yyvsp[-2].Number, yyvsp[0].Number); } break; case 50: -#line 141 "lscp.y" - { yyval.String = LSCPSERVER->SetAudioOutputDevice(yyvsp[0].Number, yyvsp[-2].Number); } +#line 138 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputPortParameterInfo(yyvsp[-4].Number, yyvsp[-2].Number, yyvsp[0].String); } break; case 51: -#line 142 "lscp.y" - { yyval.String = LSCPSERVER->SetAudioOutputChannel(yyvsp[-2].Number, yyvsp[0].Number, yyvsp[-4].Number); } +#line 139 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputChannelInfo(yyvsp[-2].Number, yyvsp[0].Number); } break; case 52: -#line 143 "lscp.y" - { yyval.String = LSCPSERVER->SetMIDIInputPort(yyvsp[0].String, yyvsp[-2].Number); } +#line 140 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputChannelParameterInfo(yyvsp[-4].Number, yyvsp[-2].Number, yyvsp[0].String); } break; case 53: -#line 144 "lscp.y" - { yyval.String = LSCPSERVER->SetMIDIInputChannel(yyvsp[0].Number, yyvsp[-2].Number); } +#line 141 "lscp.y" + { yyval.String = LSCPSERVER->GetChannels(); } break; case 54: -#line 145 "lscp.y" - { yyval.String = LSCPSERVER->SetMIDIInputType(yyvsp[0].String, yyvsp[-2].Number); } +#line 142 "lscp.y" + { yyval.String = LSCPSERVER->GetChannelInfo(yyvsp[0].Number); } break; case 55: -#line 146 "lscp.y" - { yyval.String = LSCPSERVER->SetVolume(yyvsp[0].Dotnum, yyvsp[-2].Number); } +#line 143 "lscp.y" + { yyval.String = LSCPSERVER->GetBufferFill(yyvsp[-2].FillResponse, yyvsp[0].Number); } break; case 56: -#line 149 "lscp.y" - { yyval.KeyValList[yyvsp[-2].String] = yyvsp[0].String; } +#line 144 "lscp.y" + { yyval.String = LSCPSERVER->GetStreamCount(yyvsp[0].Number); } break; case 57: -#line 150 "lscp.y" - { yyval.KeyValList = yyvsp[-4].KeyValList; yyval.KeyValList[yyvsp[-2].String] = yyvsp[0].String; } +#line 145 "lscp.y" + { yyval.String = LSCPSERVER->GetVoiceCount(yyvsp[0].Number); } break; case 58: -#line 152 "lscp.y" - { yyval.FillResponse = fill_response_bytes; } +#line 146 "lscp.y" + { yyval.String = LSCPSERVER->GetEngineInfo(yyvsp[0].String); } break; case 59: -#line 153 "lscp.y" - { yyval.FillResponse = fill_response_percentage; } +#line 149 "lscp.y" + { yyval.String = LSCPSERVER->SetAudioOutputDeviceParameter(yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } break; case 60: -#line 156 "lscp.y" - { yyval.String = LSCPSERVER->GetAudioOutputDevices(); } +#line 150 "lscp.y" + { yyval.String = LSCPSERVER->SetAudioOutputChannelParameter(yyvsp[-6].Number, yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } break; case 61: -#line 159 "lscp.y" - { yyval.String = LSCPSERVER->LoadInstrument(yyvsp[-4].String, yyvsp[-2].Number, yyvsp[0].Number); } +#line 151 "lscp.y" + { yyval.String = LSCPSERVER->SetMidiInputDeviceParameter(yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } break; case 62: -#line 162 "lscp.y" - { yyval.String = LSCPSERVER->LoadEngine(yyvsp[-2].String, yyvsp[0].Number); } +#line 152 "lscp.y" + { yyval.String = LSCPSERVER->SetMidiInputPortParameter(yyvsp[-6].Number, yyvsp[-4].Number, yyvsp[-2].String, yyvsp[0].String); } + break; + + case 63: +#line 153 "lscp.y" + { yyval.String = yyvsp[0].String; } + break; + + case 64: +#line 156 "lscp.y" + { yyval.String = LSCPSERVER->CreateAudioOutputDevice(yyvsp[-2].String,yyvsp[0].KeyValList); } break; case 65: -#line 169 "lscp.y" - { yyval.Dotnum = yyvsp[0].Number; } +#line 157 "lscp.y" + { yyval.String = LSCPSERVER->CreateAudioOutputDevice(yyvsp[0].String); } + break; + + case 66: +#line 158 "lscp.y" + { yyval.String = LSCPSERVER->CreateMidiInputDevice(yyvsp[-2].String,yyvsp[0].KeyValList); } + break; + + case 67: +#line 159 "lscp.y" + { yyval.String = LSCPSERVER->CreateMidiInputDevice(yyvsp[0].String); } + break; + + case 68: +#line 162 "lscp.y" + { yyval.String = LSCPSERVER->DestroyAudioOutputDevice(yyvsp[0].Number); } + break; + + case 69: +#line 163 "lscp.y" + { yyval.String = LSCPSERVER->DestroyMidiInputDevice(yyvsp[0].Number); } + break; + + case 70: +#line 166 "lscp.y" + { yyval.String = yyvsp[0].String; } + break; + + case 71: +#line 167 "lscp.y" + { yyval.String = yyvsp[0].String; } + break; + + case 72: +#line 170 "lscp.y" + { yyval.String = LSCPSERVER->SetAudioOutputDevice(yyvsp[0].Number, yyvsp[-2].Number); } + break; + + case 73: +#line 171 "lscp.y" + { yyval.String = LSCPSERVER->SetAudioOutputChannel(yyvsp[-2].Number, yyvsp[0].Number, yyvsp[-4].Number); } + break; + + case 74: +#line 172 "lscp.y" + { yyval.String = LSCPSERVER->SetAudioOutputType(yyvsp[0].String, yyvsp[-2].Number); } break; case 75: -#line 197 "lscp.y" - { yyval.String = yyvsp[-2].String + ' ' + yyvsp[0].String; } +#line 173 "lscp.y" + { yyval.String = LSCPSERVER->SetMIDIInput(yyvsp[-4].Number, yyvsp[-2].Number, yyvsp[0].Number, yyvsp[-6].Number); } break; case 76: -#line 200 "lscp.y" - { yyval.String = yyvsp[0].String; } +#line 174 "lscp.y" + { yyval.String = LSCPSERVER->SetMIDIInputDevice(yyvsp[0].Number, yyvsp[-2].Number); } break; case 77: -#line 201 "lscp.y" - { std::stringstream ss; ss << yyvsp[0].Number; yyval.String = ss.str(); } +#line 175 "lscp.y" + { yyval.String = LSCPSERVER->SetMIDIInputPort(yyvsp[0].Number, yyvsp[-2].Number); } break; case 78: -#line 202 "lscp.y" - { yyval.String = yyvsp[-1].String + yyvsp[0].String; } +#line 176 "lscp.y" + { yyval.String = LSCPSERVER->SetMIDIInputChannel(yyvsp[0].Number, yyvsp[-2].Number); } break; case 79: -#line 203 "lscp.y" - { std::stringstream ss; ss << yyvsp[-1].String << yyvsp[0].Number; yyval.String = ss.str(); } +#line 177 "lscp.y" + { yyval.String = LSCPSERVER->SetMIDIInputType(yyvsp[0].String, yyvsp[-2].Number); } break; case 80: -#line 206 "lscp.y" - { std::string s; s = yyvsp[0].Char; yyval.String = s; } +#line 178 "lscp.y" + { yyval.String = LSCPSERVER->SetVolume(yyvsp[0].Dotnum, yyvsp[-2].Number); } break; case 81: -#line 207 "lscp.y" +#line 181 "lscp.y" + { yyval.KeyValList[yyvsp[-2].String] = yyvsp[0].String; } + break; + + case 82: +#line 182 "lscp.y" + { yyval.KeyValList = yyvsp[-4].KeyValList; yyval.KeyValList[yyvsp[-2].String] = yyvsp[0].String; } + break; + + case 83: +#line 185 "lscp.y" + { yyval.FillResponse = fill_response_bytes; } + break; + + case 84: +#line 186 "lscp.y" + { yyval.FillResponse = fill_response_percentage; } + break; + + case 85: +#line 189 "lscp.y" + { yyval.String = LSCPSERVER->GetAudioOutputDevices(); } + break; + + case 86: +#line 190 "lscp.y" + { yyval.String = LSCPSERVER->GetMidiInputDevices(); } + break; + + case 87: +#line 191 "lscp.y" + { yyval.String = LSCPSERVER->ListChannels(); } + break; + + case 88: +#line 194 "lscp.y" + { yyval.String = LSCPSERVER->LoadInstrument(yyvsp[-4].String, yyvsp[-2].Number, yyvsp[0].Number); } + break; + + case 89: +#line 195 "lscp.y" + { yyval.String = LSCPSERVER->LoadInstrument(yyvsp[-4].String, yyvsp[-2].Number, yyvsp[0].Number, true); } + break; + + case 90: +#line 198 "lscp.y" + { yyval.String = LSCPSERVER->LoadEngine(yyvsp[-2].String, yyvsp[0].Number); } + break; + + case 99: +#line 223 "lscp.y" + { yyval.Dotnum = yyvsp[0].Number; } + break; + + case 104: +#line 238 "lscp.y" + { yyval.String = yyvsp[0].String; } + break; + + case 105: +#line 239 "lscp.y" + { std::stringstream ss; ss << yyvsp[0].Number; yyval.String = ss.str(); } + break; + + case 106: +#line 240 "lscp.y" + { std::stringstream ss; ss << yyvsp[0].Dotnum; yyval.String = ss.str(); } + break; + + case 107: +#line 243 "lscp.y" + { std::string s; s = yyvsp[0].Char; yyval.String = s; } + break; + + case 108: +#line 244 "lscp.y" { yyval.String = yyvsp[-1].String + yyvsp[0].Char; } break; @@ -1563,7 +1809,7 @@ } /* Line 999 of yacc.c. */ -#line 1567 "y.tab.c" +#line 1813 "y.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -1757,7 +2003,7 @@ } -#line 210 "lscp.y" +#line 247 "lscp.y" /** @@ -1773,9 +2019,6 @@ void restart(yyparse_param_t* pparam, int& yychar) { // restart scanner yyrestart(stdin, pparam->pScanner); - // flush input buffer - static char buf[1024]; - while(recv(hSession, buf, 1024, MSG_DONTWAIT) > 0); // reset lookahead symbol yyclearin; }