Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: third_party/wds/gen/parser.cpp

Issue 1498473010: third_party: Add WDS library (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wds
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /* A Bison parser, made by GNU Bison 3.0.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.2"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 1
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62 /* Substitute the variable and function names. */
63 #define yyparse wds_parse
64 #define yylex wds_lex
65 #define yyerror wds_error
66 #define yydebug wds_debug
67 #define yynerrs wds_nerrs
68
69
70 /* Copy the first part of user declarations. */
71
72
73
74 # ifndef YY_NULLPTR
75 # if defined __cplusplus && 201103L <= __cplusplus
76 # define YY_NULLPTR nullptr
77 # else
78 # define YY_NULLPTR 0
79 # endif
80 # endif
81
82 /* Enabling verbose error messages. */
83 #ifdef YYERROR_VERBOSE
84 # undef YYERROR_VERBOSE
85 # define YYERROR_VERBOSE 1
86 #else
87 # define YYERROR_VERBOSE 0
88 #endif
89
90 /* In a future release of Bison, this section will be replaced
91 by #include "parser.h". */
92 #ifndef YY_WDS_GEN_PARSER_H_INCLUDED
93 # define YY_WDS_GEN_PARSER_H_INCLUDED
94 /* Debug traces. */
95 #ifndef YYDEBUG
96 # define YYDEBUG 0
97 #endif
98 #if YYDEBUG
99 extern int wds_debug;
100 #endif
101 /* "%code requires" blocks. */
102
103
104 #include <map>
105 #include <memory>
106 #include "libwds/rtsp/audiocodecs.h"
107 #include "libwds/rtsp/contentprotection.h"
108 #include "libwds/rtsp/triggermethod.h"
109 #include "libwds/rtsp/route.h"
110 #include "libwds/rtsp/uibcsetting.h"
111 #include "libwds/rtsp/uibccapability.h"
112
113 #define YYLEX_PARAM scanner
114
115 namespace wds {
116 struct AudioCodec;
117 namespace rtsp {
118 class Driver;
119 class Scanner;
120 class Message;
121 class Header;
122 class TransportHeader;
123 class Property;
124 class PropertyErrors;
125 class Payload;
126 class VideoFormats;
127 struct H264Codec;
128 struct H264Codec3d;
129 }
130 }
131
132
133
134 /* Token type. */
135 #ifndef YYTOKENTYPE
136 # define YYTOKENTYPE
137 enum yytokentype
138 {
139 END = 0,
140 WFD_SP = 258,
141 WFD_NUM = 259,
142 WFD_OPTIONS = 260,
143 WFD_SET_PARAMETER = 261,
144 WFD_GET_PARAMETER = 262,
145 WFD_SETUP = 263,
146 WFD_PLAY = 264,
147 WFD_TEARDOWN = 265,
148 WFD_PAUSE = 266,
149 WFD_END = 267,
150 WFD_RESPONSE = 268,
151 WFD_RESPONSE_CODE = 269,
152 WFD_STRING = 270,
153 WFD_GENERIC_PROPERTY = 271,
154 WFD_HEADER = 272,
155 WFD_CSEQ = 273,
156 WFD_RESPONSE_METHODS = 274,
157 WFD_TAG = 275,
158 WFD_SUPPORT_CHECK = 276,
159 WFD_REQUEST_URI = 277,
160 WFD_CONTENT_TYPE = 278,
161 WFD_MIME = 279,
162 WFD_CONTENT_LENGTH = 280,
163 WFD_AUDIO_CODECS = 281,
164 WFD_VIDEO_FORMATS = 282,
165 WFD_3D_FORMATS = 283,
166 WFD_CONTENT_PROTECTION = 284,
167 WFD_DISPLAY_EDID = 285,
168 WFD_COUPLED_SINK = 286,
169 WFD_TRIGGER_METHOD = 287,
170 WFD_PRESENTATION_URL = 288,
171 WFD_CLIENT_RTP_PORTS = 289,
172 WFD_ROUTE = 290,
173 WFD_I2C = 291,
174 WFD_AV_FORMAT_CHANGE_TIMING = 292,
175 WFD_PREFERRED_DISPLAY_MODE = 293,
176 WFD_UIBC_CAPABILITY = 294,
177 WFD_UIBC_SETTING = 295,
178 WFD_STANDBY_RESUME_CAPABILITY = 296,
179 WFD_STANDBY_IN_REQUEST = 297,
180 WFD_STANDBY_IN_RESPONSE = 298,
181 WFD_CONNECTOR_TYPE = 299,
182 WFD_IDR_REQUEST = 300,
183 WFD_AUDIO_CODECS_ERROR = 301,
184 WFD_VIDEO_FORMATS_ERROR = 302,
185 WFD_3D_FORMATS_ERROR = 303,
186 WFD_CONTENT_PROTECTION_ERROR = 304,
187 WFD_DISPLAY_EDID_ERROR = 305,
188 WFD_COUPLED_SINK_ERROR = 306,
189 WFD_TRIGGER_METHOD_ERROR = 307,
190 WFD_PRESENTATION_URL_ERROR = 308,
191 WFD_CLIENT_RTP_PORTS_ERROR = 309,
192 WFD_ROUTE_ERROR = 310,
193 WFD_I2C_ERROR = 311,
194 WFD_AV_FORMAT_CHANGE_TIMING_ERROR = 312,
195 WFD_PREFERRED_DISPLAY_MODE_ERROR = 313,
196 WFD_UIBC_CAPABILITY_ERROR = 314,
197 WFD_UIBC_SETTING_ERROR = 315,
198 WFD_STANDBY_RESUME_CAPABILITY_ERROR = 316,
199 WFD_STANDBY_ERROR = 317,
200 WFD_CONNECTOR_TYPE_ERROR = 318,
201 WFD_IDR_REQUEST_ERROR = 319,
202 WFD_GENERIC_PROPERTY_ERROR = 320,
203 WFD_NONE = 321,
204 WFD_AUDIO_CODEC_LPCM = 322,
205 WFD_AUDIO_CODEC_AAC = 323,
206 WFD_AUDIO_CODEC_AC3 = 324,
207 WFD_HDCP_SPEC_2_0 = 325,
208 WFD_HDCP_SPEC_2_1 = 326,
209 WFD_IP_PORT = 327,
210 WFD_PRESENTATION_URL_0 = 328,
211 WFD_PRESENTATION_URL_1 = 329,
212 WFD_STREAM_PROFILE = 330,
213 WFD_MODE_PLAY = 331,
214 WFD_ROUTE_PRIMARY = 332,
215 WFD_ROUTE_SECONDARY = 333,
216 WFD_INPUT_CATEGORY_LIST = 334,
217 WFD_INPUT_CATEGORY_GENERIC = 335,
218 WFD_INPUT_CATEGORY_HIDC = 336,
219 WFD_GENERIC_CAP_LIST = 337,
220 WFD_INPUT_TYPE_KEYBOARD = 338,
221 WFD_INPUT_TYPE_MOUSE = 339,
222 WFD_INPUT_TYPE_SINGLE_TOUCH = 340,
223 WFD_INPUT_TYPE_MULTI_TOUCH = 341,
224 WFD_INPUT_TYPE_JOYSTICK = 342,
225 WFD_INPUT_TYPE_CAMERA = 343,
226 WFD_INPUT_TYPE_GESTURE = 344,
227 WFD_INPUT_TYPE_REMOTE_CONTROL = 345,
228 WFD_HIDC_CAP_LIST = 346,
229 WFD_INPUT_PATH_INFRARED = 347,
230 WFD_INPUT_PATH_USB = 348,
231 WFD_INPUT_PATH_BT = 349,
232 WFD_INPUT_PATH_WIFI = 350,
233 WFD_INPUT_PATH_ZIGBEE = 351,
234 WFD_INPUT_PATH_NOSP = 352,
235 WFD_UIBC_SETTING_ENABLE = 353,
236 WFD_UIBC_SETTING_DISABLE = 354,
237 WFD_SUPPORTED = 355,
238 WFD_SESSION = 356,
239 WFD_SESSION_ID = 357,
240 WFD_TIMEOUT = 358,
241 WFD_TRANSPORT = 359,
242 WFD_SERVER_PORT = 360
243 };
244 #endif
245
246 /* Value type. */
247 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
248 typedef union YYSTYPE YYSTYPE;
249 union YYSTYPE
250 {
251
252
253 std::string* sval;
254 unsigned long long int nval;
255 bool bool_val;
256 std::vector<std::string>* vsval;
257 wds::rtsp::Message* message;
258 wds::rtsp::Header* header;
259 wds::rtsp::Payload* mpayload;
260 wds::AudioFormats audio_format;
261 wds::rtsp::Property* property;
262 std::vector<unsigned short>* error_list;
263 wds::rtsp::PropertyErrors* property_errors;
264 std::map<wds::rtsp::PropertyType, std::shared_ptr<wds::rtsp::PropertyErrors>> * property_error_map;
265 std::vector<wds::rtsp::H264Codec>* codecs;
266 wds::rtsp::H264Codec* codec;
267 std::vector<wds::rtsp::H264Codec3d>* codecs_3d;
268 wds::rtsp::H264Codec3d* codec_3d;
269 wds::rtsp::ContentProtection::HDCPSpec hdcp_spec;
270 wds::rtsp::TriggerMethod::Method trigger_method;
271 wds::rtsp::Route::Destination route_destination;
272 bool uibc_setting;
273 std::vector<wds::rtsp::UIBCCapability::InputCategory>* input_category_list;
274 std::vector<wds::rtsp::UIBCCapability::InputType>* generic_cap_list;
275 std::vector<wds::rtsp::UIBCCapability::DetailedCapability>* hidc_cap_list;
276 wds::rtsp::UIBCCapability::InputCategory input_category_list_value;
277 wds::rtsp::UIBCCapability::InputType generic_cap_list_value;
278 wds::rtsp::UIBCCapability::DetailedCapability* hidc_cap_list_value;
279 wds::rtsp::UIBCCapability::InputPath input_path;
280 wds::rtsp::Method method;
281 std::vector<wds::rtsp::Method>* methods;
282 wds::rtsp::PropertyType parameter;
283 std::vector<wds::rtsp::PropertyType>* parameters;
284 std::vector<wds::AudioCodec>* audio_codecs;
285 wds::AudioCodec* audio_codec;
286 std::pair<std::string, unsigned int>* session_info;
287 wds::rtsp::TransportHeader* transport;
288
289
290 };
291 # define YYSTYPE_IS_TRIVIAL 1
292 # define YYSTYPE_IS_DECLARED 1
293 #endif
294
295
296
297 int wds_parse (void* scanner, std::unique_ptr<wds::rtsp::Message>& message);
298
299 #endif /* !YY_WDS_GEN_PARSER_H_INCLUDED */
300
301 /* Copy the second part of user declarations. */
302
303
304 /* Unqualified %code blocks. */
305
306
307 /*
308 * This file is part of Wireless Display Software for Linux OS
309 *
310 * Copyright (C) 2015 Intel Corporation.
311 *
312 * This library is free software; you can redistribute it and/or
313 * modify it under the terms of the GNU Lesser General Public
314 * License as published by the Free Software Foundation; either
315 * version 2.1 of the License, or (at your option) any later version.
316 *
317 * This library is distributed in the hope that it will be useful,
318 * but WITHOUT ANY WARRANTY; without even the implied warranty of
319 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
320 * Lesser General Public License for more details.
321 *
322 * You should have received a copy of the GNU Lesser General Public
323 * License along with this library; if not, write to the Free Software
324 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
325 * 02110-1301 USA
326 */
327
328 #include <iostream>
329 #include <cstdlib>
330 #include <string>
331 #include <vector>
332 #include <map>
333
334 #include "libwds/rtsp/driver.h"
335 #include "libwds/rtsp/message.h"
336 #include "libwds/rtsp/header.h"
337 #include "libwds/rtsp/transportheader.h"
338 #include "libwds/rtsp/payload.h"
339 #include "libwds/rtsp/reply.h"
340 #include "libwds/rtsp/options.h"
341 #include "libwds/rtsp/getparameter.h"
342 #include "libwds/rtsp/setparameter.h"
343 #include "libwds/rtsp/play.h"
344 #include "libwds/rtsp/teardown.h"
345 #include "libwds/rtsp/pause.h"
346 #include "libwds/rtsp/setup.h"
347 #include "libwds/rtsp/audiocodecs.h"
348 #include "libwds/rtsp/videoformats.h"
349 #include "libwds/rtsp/formats3d.h"
350 #include "libwds/rtsp/contentprotection.h"
351 #include "libwds/rtsp/displayedid.h"
352 #include "libwds/rtsp/coupledsink.h"
353 #include "libwds/rtsp/triggermethod.h"
354 #include "libwds/rtsp/clientrtpports.h"
355 #include "libwds/rtsp/i2c.h"
356 #include "libwds/rtsp/avformatchangetiming.h"
357 #include "libwds/rtsp/standbyresumecapability.h"
358 #include "libwds/rtsp/standby.h"
359 #include "libwds/rtsp/idrrequest.h"
360 #include "libwds/rtsp/connectortype.h"
361 #include "libwds/rtsp/preferreddisplaymode.h"
362 #include "libwds/rtsp/presentationurl.h"
363 #include "libwds/rtsp/uibccapability.h"
364
365 #define UNUSED_TOKEN(T) (void)T
366 #define DELETE_TOKEN(T) \
367 delete T; \
368 T = nullptr
369
370
371
372 #ifdef short
373 # undef short
374 #endif
375
376 #ifdef YYTYPE_UINT8
377 typedef YYTYPE_UINT8 yytype_uint8;
378 #else
379 typedef unsigned char yytype_uint8;
380 #endif
381
382 #ifdef YYTYPE_INT8
383 typedef YYTYPE_INT8 yytype_int8;
384 #else
385 typedef signed char yytype_int8;
386 #endif
387
388 #ifdef YYTYPE_UINT16
389 typedef YYTYPE_UINT16 yytype_uint16;
390 #else
391 typedef unsigned short int yytype_uint16;
392 #endif
393
394 #ifdef YYTYPE_INT16
395 typedef YYTYPE_INT16 yytype_int16;
396 #else
397 typedef short int yytype_int16;
398 #endif
399
400 #ifndef YYSIZE_T
401 # ifdef __SIZE_TYPE__
402 # define YYSIZE_T __SIZE_TYPE__
403 # elif defined size_t
404 # define YYSIZE_T size_t
405 # elif ! defined YYSIZE_T
406 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
407 # define YYSIZE_T size_t
408 # else
409 # define YYSIZE_T unsigned int
410 # endif
411 #endif
412
413 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
414
415 #ifndef YY_
416 # if defined YYENABLE_NLS && YYENABLE_NLS
417 # if ENABLE_NLS
418 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
419 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
420 # endif
421 # endif
422 # ifndef YY_
423 # define YY_(Msgid) Msgid
424 # endif
425 #endif
426
427 #ifndef YY_ATTRIBUTE
428 # if (defined __GNUC__ \
429 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
430 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
431 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
432 # else
433 # define YY_ATTRIBUTE(Spec) /* empty */
434 # endif
435 #endif
436
437 #ifndef YY_ATTRIBUTE_PURE
438 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
439 #endif
440
441 #ifndef YY_ATTRIBUTE_UNUSED
442 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
443 #endif
444
445 #if !defined _Noreturn \
446 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
447 # if defined _MSC_VER && 1200 <= _MSC_VER
448 # define _Noreturn __declspec (noreturn)
449 # else
450 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
451 # endif
452 #endif
453
454 /* Suppress unused-variable warnings by "using" E. */
455 #if ! defined lint || defined __GNUC__
456 # define YYUSE(E) ((void) (E))
457 #else
458 # define YYUSE(E) /* empty */
459 #endif
460
461 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
462 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
463 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
464 _Pragma ("GCC diagnostic push") \
465 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
466 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
467 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
468 _Pragma ("GCC diagnostic pop")
469 #else
470 # define YY_INITIAL_VALUE(Value) Value
471 #endif
472 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
473 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
474 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
475 #endif
476 #ifndef YY_INITIAL_VALUE
477 # define YY_INITIAL_VALUE(Value) /* Nothing. */
478 #endif
479
480
481 #if ! defined yyoverflow || YYERROR_VERBOSE
482
483 /* The parser invokes alloca or malloc; define the necessary symbols. */
484
485 # ifdef YYSTACK_USE_ALLOCA
486 # if YYSTACK_USE_ALLOCA
487 # ifdef __GNUC__
488 # define YYSTACK_ALLOC __builtin_alloca
489 # elif defined __BUILTIN_VA_ARG_INCR
490 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
491 # elif defined _AIX
492 # define YYSTACK_ALLOC __alloca
493 # elif defined _MSC_VER
494 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
495 # define alloca _alloca
496 # else
497 # define YYSTACK_ALLOC alloca
498 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
499 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
500 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
501 # ifndef EXIT_SUCCESS
502 # define EXIT_SUCCESS 0
503 # endif
504 # endif
505 # endif
506 # endif
507 # endif
508
509 # ifdef YYSTACK_ALLOC
510 /* Pacify GCC's 'empty if-body' warning. */
511 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
512 # ifndef YYSTACK_ALLOC_MAXIMUM
513 /* The OS might guarantee only one guard page at the bottom of the stack,
514 and a page size can be as small as 4096 bytes. So we cannot safely
515 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
516 to allow for a few compiler-allocated temporary stack slots. */
517 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
518 # endif
519 # else
520 # define YYSTACK_ALLOC YYMALLOC
521 # define YYSTACK_FREE YYFREE
522 # ifndef YYSTACK_ALLOC_MAXIMUM
523 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
524 # endif
525 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
526 && ! ((defined YYMALLOC || defined malloc) \
527 && (defined YYFREE || defined free)))
528 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
529 # ifndef EXIT_SUCCESS
530 # define EXIT_SUCCESS 0
531 # endif
532 # endif
533 # ifndef YYMALLOC
534 # define YYMALLOC malloc
535 # if ! defined malloc && ! defined EXIT_SUCCESS
536 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
537 # endif
538 # endif
539 # ifndef YYFREE
540 # define YYFREE free
541 # if ! defined free && ! defined EXIT_SUCCESS
542 void free (void *); /* INFRINGES ON USER NAME SPACE */
543 # endif
544 # endif
545 # endif
546 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
547
548
549 #if (! defined yyoverflow \
550 && (! defined __cplusplus \
551 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
552
553 /* A type that is properly aligned for any stack member. */
554 union yyalloc
555 {
556 yytype_int16 yyss_alloc;
557 YYSTYPE yyvs_alloc;
558 };
559
560 /* The size of the maximum gap between one aligned stack and the next. */
561 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
562
563 /* The size of an array large to enough to hold all stacks, each with
564 N elements. */
565 # define YYSTACK_BYTES(N) \
566 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
567 + YYSTACK_GAP_MAXIMUM)
568
569 # define YYCOPY_NEEDED 1
570
571 /* Relocate STACK from its old location to the new one. The
572 local variables YYSIZE and YYSTACKSIZE give the old and new number of
573 elements in the stack, and YYPTR gives the new location of the
574 stack. Advance YYPTR to a properly aligned location for the next
575 stack. */
576 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
577 do \
578 { \
579 YYSIZE_T yynewbytes; \
580 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
581 Stack = &yyptr->Stack_alloc; \
582 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
583 yyptr += yynewbytes / sizeof (*yyptr); \
584 } \
585 while (0)
586
587 #endif
588
589 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
590 /* Copy COUNT objects from SRC to DST. The source and destination do
591 not overlap. */
592 # ifndef YYCOPY
593 # if defined __GNUC__ && 1 < __GNUC__
594 # define YYCOPY(Dst, Src, Count) \
595 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
596 # else
597 # define YYCOPY(Dst, Src, Count) \
598 do \
599 { \
600 YYSIZE_T yyi; \
601 for (yyi = 0; yyi < (Count); yyi++) \
602 (Dst)[yyi] = (Src)[yyi]; \
603 } \
604 while (0)
605 # endif
606 # endif
607 #endif /* !YYCOPY_NEEDED */
608
609 /* YYFINAL -- State number of the termination state. */
610 #define YYFINAL 130
611 /* YYLAST -- Last index in YYTABLE. */
612 #define YYLAST 498
613
614 /* YYNTOKENS -- Number of terminals. */
615 #define YYNTOKENS 112
616 /* YYNNTS -- Number of nonterminals. */
617 #define YYNNTS 76
618 /* YYNRULES -- Number of rules. */
619 #define YYNRULES 218
620 /* YYNSTATES -- Number of states. */
621 #define YYNSTATES 515
622
623 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
624 by yylex, with out-of-bounds checking. */
625 #define YYUNDEFTOK 2
626 #define YYMAXUTOK 360
627
628 #define YYTRANSLATE(YYX) \
629 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
630
631 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
632 as returned by yylex, without out-of-bounds checking. */
633 static const yytype_uint8 yytranslate[] =
634 {
635 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
636 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
638 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
639 2, 2, 106, 2, 108, 107, 2, 111, 2, 2,
640 2, 2, 2, 2, 2, 2, 2, 2, 109, 110,
641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
643 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
644 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
645 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
646 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
647 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
648 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
649 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
650 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
651 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
652 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
653 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
656 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
659 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
660 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
661 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
662 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
663 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
664 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
665 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
666 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
667 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
668 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
669 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
670 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
671 105
672 };
673
674 #if YYDEBUG
675 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
676 static const yytype_uint16 yyrline[] =
677 {
678 0, 324, 324, 328, 332, 335, 341, 342, 343, 344,
679 345, 346, 347, 348, 352, 355, 362, 369, 376, 383,
680 390, 397, 404, 411, 414, 415, 416, 420, 421, 425,
681 430, 431, 439, 445, 451, 457, 461, 468, 472, 477,
682 482, 488, 494, 504, 510, 514, 521, 522, 523, 524,
683 525, 526, 527, 528, 531, 533, 536, 539, 540, 541,
684 546, 553, 557, 565, 573, 574, 575, 576, 577, 578,
685 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
686 589, 590, 594, 598, 603, 607, 611, 615, 619, 623,
687 627, 631, 635, 639, 643, 647, 651, 655, 659, 663,
688 667, 671, 675, 683, 687, 696, 700, 709, 710, 711,
689 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
690 722, 723, 724, 725, 726, 729, 732, 740, 744, 750,
691 755, 763, 769, 770, 771, 775, 779, 786, 791, 800,
692 806, 811, 819, 825, 828, 832, 835, 840, 844, 850,
693 853, 859, 862, 868, 871, 878, 881, 885, 888, 894,
694 897, 901, 907, 910, 913, 916, 922, 930, 933, 937,
695 940, 944, 949, 955, 958, 964, 970, 973, 977, 984,
696 991, 994, 1003, 1009, 1012, 1016, 1022, 1025, 1031, 1037,
697 1040, 1044, 1050, 1053, 1056, 1059, 1062, 1065, 1068, 1071,
698 1077, 1083, 1086, 1091, 1098, 1105, 1108, 1111, 1114, 1117,
699 1120, 1126, 1132, 1135, 1141, 1147, 1150, 1156, 1159
700 };
701 #endif
702
703 #if YYDEBUG || YYERROR_VERBOSE || 0
704 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
705 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
706 static const char *const yytname[] =
707 {
708 "END", "error", "$undefined", "WFD_SP", "WFD_NUM", "WFD_OPTIONS",
709 "WFD_SET_PARAMETER", "WFD_GET_PARAMETER", "WFD_SETUP", "WFD_PLAY",
710 "WFD_TEARDOWN", "WFD_PAUSE", "WFD_END", "WFD_RESPONSE",
711 "WFD_RESPONSE_CODE", "WFD_STRING", "WFD_GENERIC_PROPERTY", "WFD_HEADER",
712 "WFD_CSEQ", "WFD_RESPONSE_METHODS", "WFD_TAG", "WFD_SUPPORT_CHECK",
713 "WFD_REQUEST_URI", "WFD_CONTENT_TYPE", "WFD_MIME", "WFD_CONTENT_LENGTH",
714 "WFD_AUDIO_CODECS", "WFD_VIDEO_FORMATS", "WFD_3D_FORMATS",
715 "WFD_CONTENT_PROTECTION", "WFD_DISPLAY_EDID", "WFD_COUPLED_SINK",
716 "WFD_TRIGGER_METHOD", "WFD_PRESENTATION_URL", "WFD_CLIENT_RTP_PORTS",
717 "WFD_ROUTE", "WFD_I2C", "WFD_AV_FORMAT_CHANGE_TIMING",
718 "WFD_PREFERRED_DISPLAY_MODE", "WFD_UIBC_CAPABILITY", "WFD_UIBC_SETTING",
719 "WFD_STANDBY_RESUME_CAPABILITY", "WFD_STANDBY_IN_REQUEST",
720 "WFD_STANDBY_IN_RESPONSE", "WFD_CONNECTOR_TYPE", "WFD_IDR_REQUEST",
721 "WFD_AUDIO_CODECS_ERROR", "WFD_VIDEO_FORMATS_ERROR",
722 "WFD_3D_FORMATS_ERROR", "WFD_CONTENT_PROTECTION_ERROR",
723 "WFD_DISPLAY_EDID_ERROR", "WFD_COUPLED_SINK_ERROR",
724 "WFD_TRIGGER_METHOD_ERROR", "WFD_PRESENTATION_URL_ERROR",
725 "WFD_CLIENT_RTP_PORTS_ERROR", "WFD_ROUTE_ERROR", "WFD_I2C_ERROR",
726 "WFD_AV_FORMAT_CHANGE_TIMING_ERROR", "WFD_PREFERRED_DISPLAY_MODE_ERROR",
727 "WFD_UIBC_CAPABILITY_ERROR", "WFD_UIBC_SETTING_ERROR",
728 "WFD_STANDBY_RESUME_CAPABILITY_ERROR", "WFD_STANDBY_ERROR",
729 "WFD_CONNECTOR_TYPE_ERROR", "WFD_IDR_REQUEST_ERROR",
730 "WFD_GENERIC_PROPERTY_ERROR", "WFD_NONE", "WFD_AUDIO_CODEC_LPCM",
731 "WFD_AUDIO_CODEC_AAC", "WFD_AUDIO_CODEC_AC3", "WFD_HDCP_SPEC_2_0",
732 "WFD_HDCP_SPEC_2_1", "WFD_IP_PORT", "WFD_PRESENTATION_URL_0",
733 "WFD_PRESENTATION_URL_1", "WFD_STREAM_PROFILE", "WFD_MODE_PLAY",
734 "WFD_ROUTE_PRIMARY", "WFD_ROUTE_SECONDARY", "WFD_INPUT_CATEGORY_LIST",
735 "WFD_INPUT_CATEGORY_GENERIC", "WFD_INPUT_CATEGORY_HIDC",
736 "WFD_GENERIC_CAP_LIST", "WFD_INPUT_TYPE_KEYBOARD",
737 "WFD_INPUT_TYPE_MOUSE", "WFD_INPUT_TYPE_SINGLE_TOUCH",
738 "WFD_INPUT_TYPE_MULTI_TOUCH", "WFD_INPUT_TYPE_JOYSTICK",
739 "WFD_INPUT_TYPE_CAMERA", "WFD_INPUT_TYPE_GESTURE",
740 "WFD_INPUT_TYPE_REMOTE_CONTROL", "WFD_HIDC_CAP_LIST",
741 "WFD_INPUT_PATH_INFRARED", "WFD_INPUT_PATH_USB", "WFD_INPUT_PATH_BT",
742 "WFD_INPUT_PATH_WIFI", "WFD_INPUT_PATH_ZIGBEE", "WFD_INPUT_PATH_NOSP",
743 "WFD_UIBC_SETTING_ENABLE", "WFD_UIBC_SETTING_DISABLE", "WFD_SUPPORTED",
744 "WFD_SESSION", "WFD_SESSION_ID", "WFD_TIMEOUT", "WFD_TRANSPORT",
745 "WFD_SERVER_PORT", "'*'", "'-'", "','", "':'", "';'", "'/'", "$accept",
746 "start", "message", "command", "options", "set_parameter",
747 "get_parameter", "setup", "play", "teardown", "pause", "wfd_reply",
748 "headers", "wfd_cseq", "wfd_content_type", "wfd_content_length",
749 "wfd_session", "wfd_transport", "wfd_supported_methods", "wfd_methods",
750 "wfd_method", "wfd_ows", "payload", "wfd_parameter_list",
751 "wfd_parameter", "wfd_error_list", "wfd_property_errors",
752 "wfd_property_error_map", "wdf_property_map", "wfd_property",
753 "wfd_property_audio_codecs", "wfd_audio_codec_list", "wfd_audio_codec",
754 "wfd_audio_codec_type", "wfd_property_video_formats", "wfd_h264_codecs",
755 "wfd_h264_codec", "wfd_h264_codecs_3d", "wfd_h264_codec_3d",
756 "wfd_max_hres", "wfd_max_vres", "wfd_property_3d_formats",
757 "wfd_content_protection", "hdcp2_spec", "wfd_display_edid",
758 "wfd_edid_payload", "wfd_coupled_sink", "wfd_sink_address",
759 "wfd_trigger_method", "wfd_supported_trigger_methods",
760 "wfd_presentation_url", "wfd_presentation_url0", "wfd_presentation_url1",
761 "wfd_client_rtp_ports", "wfd_route", "wfd_route_destination", "wfd_I2C",
762 "wfd_port", "wfd_av_format_change_timing", "wfd_preferred_display_mode",
763 "wfd_uibc_capability", "wfd_input_category_list",
764 "wfd_input_category_list_values", "wfd_input_category_list_value",
765 "wfd_generic_cap_list", "wfd_generic_cap_list_values",
766 "wfd_generic_cap_list_value", "wfd_hidc_cap_list",
767 "wfd_hidc_cap_list_values", "wfd_hidc_cap_list_value", "wfd_input_path",
768 "wfd_uibc_setting", "wfd_uibc_setting_value",
769 "wfd_standby_resume_capability", "wfd_standby_resume_capability_value",
770 "wfd_connector_type", YY_NULLPTR
771 };
772 #endif
773
774 # ifdef YYPRINT
775 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
776 (internal) symbol number NUM (which must be that of a token). */
777 static const yytype_uint16 yytoknum[] =
778 {
779 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
780 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
781 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
782 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
783 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
784 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
785 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
786 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
787 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
788 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
789 355, 356, 357, 358, 359, 360, 42, 45, 44, 58,
790 59, 47
791 };
792 # endif
793
794 #define YYPACT_NINF -432
795
796 #define yypact_value_is_default(Yystate) \
797 (!!((Yystate) == (-432)))
798
799 #define YYTABLE_NINF -57
800
801 #define yytable_value_is_error(Yytable_value) \
802 0
803
804 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
805 STATE-NUM. */
806 static const yytype_int16 yypact[] =
807 {
808 15, -432, 6, 81, 85, 100, 118, 125, 126, 4,
809 92, 67, 74, 75, 83, 84, 110, 130, 155, 156,
810 157, 158, 159, 160, 161, 162, 163, -432, -432, 164,
811 -432, 165, 166, 167, 168, 169, 170, 171, 172, 173,
812 174, 175, 176, 178, 180, 181, 182, 183, 184, 185,
813 221, -432, -432, -432, -432, -432, -432, -432, -432, -432,
814 -432, -432, 133, -432, -432, 177, 107, -432, -432, -432,
815 -432, -432, -432, -432, -432, -432, -432, -432, -432, -432,
816 -432, -432, -432, -432, -432, -9, 108, 264, 266, 273,
817 274, 275, 283, -432, 296, 297, 298, 299, 300, 301,
818 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
819 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
820 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
821 -432, -11, -432, -432, -432, -432, -432, -432, -432, -432,
822 -432, -432, -432, -432, -432, -432, -432, -432, -432, -432,
823 -432, -432, 92, 67, 74, 75, 83, 84, 110, 130,
824 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
825 -432, 332, 333, 334, 335, 336, 337, 338, 339, -432,
826 113, -432, 23, 25, 56, 26, 28, 179, 52, 268,
827 -38, 29, 340, 341, 38, 7, 16, 30, 342, 342,
828 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
829 342, 342, 342, 342, 342, 342, 342, 297, 297, 297,
830 -432, 297, 297, 344, 345, -432, -432, -432, -432, -432,
831 -432, 343, 346, 347, 348, 349, 350, 351, 352, -432,
832 -432, -432, -432, 240, -432, 353, 354, -432, 362, -432,
833 -432, -432, -432, 363, 364, -432, 365, -432, -432, -432,
834 -432, -432, -432, -432, -432, 366, 367, -432, -432, -432,
835 -432, -432, -432, 368, 369, -432, 21, 241, -432, -432,
836 -432, -432, -432, -432, -432, -432, -432, 242, 242, 242,
837 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
838 242, 242, 242, 242, 242, 242, 358, 370, 104, 355,
839 371, 250, -22, -432, -432, -432, -432, -432, -432, -432,
840 -432, 373, 374, 376, 377, 281, 20, 32, -55, 378,
841 379, 380, -432, -432, -432, 246, -432, 295, 382, -432,
842 -432, -432, -432, -432, -432, -432, -432, -432, -432, 0,
843 -432, -432, -432, 284, 384, 385, 194, 383, 387, 388,
844 389, -432, -432, -432, -432, -432, -432, -432, -432, -432,
845 391, -432, 392, 393, 112, 282, 394, 289, 395, 293,
846 356, -432, 397, 398, 399, -432, 400, 401, 39, -432,
847 -432, -432, -432, -432, -432, -432, -432, -432, 357, -432,
848 359, -432, 297, -432, 402, 403, -432, 405, 0, -432,
849 406, 0, -432, 407, 408, -432, 409, 120, 360, 104,
850 -432, 361, 410, 372, 411, 375, 381, 412, 128, -432,
851 386, 390, -432, 404, -432, 413, 415, 297, 416, 297,
852 -432, 417, -432, 61, 418, 29, -432, 419, 398, 420,
853 399, 421, -432, -432, -432, -432, -432, -432, -432, 128,
854 -432, 423, -432, 424, -432, 425, -432, 426, 427, 428,
855 430, 431, 432, 433, 434, 435, 437, 438, 439, 440,
856 441, 442, 444, 445, 446, 447, 448, 449, 451, 452,
857 453, 454, 33, 455, 457, -432, -432, 459, 460, 462,
858 34, 463, 461, -432, -432, -432, 466, 33, 467, 469,
859 470, 34, 398, -432, -432
860 };
861
862 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
863 Performed when YYTABLE does not specify something else to do. Zero
864 means the default is an error. */
865 static const yytype_uint8 yydefact[] =
866 {
867 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
868 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
869 73, 74, 75, 76, 77, 78, 79, 80, 124, 81,
870 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872 0, 2, 23, 6, 7, 8, 9, 10, 11, 12,
873 13, 4, 57, 61, 103, 59, 58, 105, 107, 108,
874 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
875 119, 120, 121, 122, 123, 0, 0, 0, 0, 0,
876 0, 0, 0, 126, 0, 54, 0, 0, 0, 0,
877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
880 1, 3, 62, 64, 65, 66, 67, 68, 69, 70,
881 71, 72, 73, 74, 75, 76, 77, 78, 79, 81,
882 60, 104, 0, 0, 0, 0, 0, 0, 0, 0,
883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884 106, 0, 0, 0, 0, 0, 0, 0, 0, 22,
885 0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
888 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,
889 25, 54, 54, 0, 0, 24, 26, 27, 29, 30,
890 28, 0, 0, 0, 0, 0, 0, 0, 0, 128,
891 132, 133, 134, 127, 129, 0, 0, 135, 0, 148,
892 149, 151, 152, 0, 0, 153, 0, 157, 162, 165,
893 164, 163, 161, 167, 168, 0, 0, 173, 174, 172,
894 177, 176, 175, 0, 0, 180, 0, 0, 212, 213,
895 211, 215, 216, 214, 217, 218, 82, 84, 85, 86,
896 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
897 97, 98, 99, 100, 101, 102, 0, 0, 0, 0,
898 0, 0, 37, 15, 14, 16, 17, 18, 19, 20,
899 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
900 0, 0, 183, 186, 187, 182, 184, 0, 0, 31,
901 32, 46, 47, 48, 49, 50, 51, 52, 53, 43,
902 44, 33, 34, 35, 0, 0, 0, 0, 0, 0,
903 0, 156, 155, 154, 160, 159, 158, 169, 170, 166,
904 0, 178, 0, 0, 0, 0, 0, 0, 0, 39,
905 38, 130, 0, 0, 0, 150, 0, 0, 0, 189,
906 192, 193, 194, 195, 196, 197, 198, 199, 188, 190,
907 0, 83, 54, 36, 0, 0, 131, 0, 136, 137,
908 0, 147, 140, 0, 0, 185, 0, 0, 0, 0,
909 41, 40, 0, 0, 0, 0, 0, 0, 0, 201,
910 0, 200, 202, 0, 45, 0, 0, 54, 0, 54,
911 171, 0, 191, 0, 0, 0, 42, 0, 0, 0,
912 0, 0, 205, 206, 207, 209, 208, 210, 204, 0,
913 181, 0, 138, 0, 141, 0, 203, 0, 0, 0,
914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
916 0, 0, 0, 0, 0, 144, 143, 0, 0, 0,
917 0, 0, 0, 146, 145, 142, 0, 0, 0, 0,
918 0, 0, 0, 139, 179
919 };
920
921 /* YYPGOTO[NTERM-NUM]. */
922 static const yytype_int16 yypgoto[] =
923 {
924 -432, -432, -432, -432, -432, -432, -432, -432, -432, -432,
925 -432, -432, -432, -432, -432, -432, -432, -432, -432, -432,
926 -6, -217, -432, -432, 422, 44, 414, -432, -432, 429,
927 -432, -432, 66, -432, -432, -432, -431, -432, -21, -71,
928 -68, -432, -432, -432, -432, -432, -432, -432, -432, -432,
929 -432, -432, -432, -432, -432, -432, -432, 36, -432, -432,
930 -432, -432, -432, 86, -432, -432, -297, -432, -432, 18,
931 -432, -432, -432, -432, -432, -432
932 };
933
934 /* YYDEFGOTO[NTERM-NUM]. */
935 static const yytype_int16 yydefgoto[] =
936 {
937 -1, 50, 51, 52, 53, 54, 55, 56, 57, 58,
938 59, 60, 131, 225, 226, 227, 228, 229, 230, 349,
939 350, 182, 61, 62, 63, 287, 64, 65, 66, 67,
940 68, 243, 244, 245, 69, 408, 409, 411, 412, 497,
941 505, 70, 71, 253, 72, 363, 73, 366, 74, 262,
942 75, 265, 369, 76, 77, 269, 78, 272, 79, 80,
943 81, 277, 335, 336, 375, 398, 430, 418, 431, 432,
944 458, 82, 280, 83, 283, 84
945 };
946
947 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
948 positive, shift that token. If negative, reduce the rule whose
949 number is the opposite. If YYTABLE_NINF, syntax error. */
950 static const yytype_int16 yytable[] =
951 {
952 306, 307, 308, 181, 309, 310, 217, 218, 219, 85,
953 220, 367, 221, 171, 222, -56, 1, 462, 92, 368,
954 2, 3, 4, 5, 6, 7, 8, 246, 9, 248,
955 254, 10, 256, 270, 284, 361, 364, 495, 503, 267,
956 268, 11, 12, 13, 14, 15, 16, 17, 18, 19,
957 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
958 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
959 40, 41, 42, 43, 44, 45, 46, 399, 47, 48,
960 49, 514, 281, 354, 86, 355, 362, 332, 87, 247,
961 223, 249, 255, 224, 257, 271, 285, 172, 365, 496,
962 504, 333, 334, 88, 275, 278, 279, 93, -54, 341,
963 342, 343, 344, 345, 346, 347, 282, 276, 263, 333,
964 334, 89, 250, 152, 348, 264, 251, 252, 90, 91,
965 173, 442, 377, 153, 154, 155, 156, 157, 158, 159,
966 160, 161, 162, 163, 164, 165, 166, 167, 168, 132,
967 28, 169, 30, 452, 453, 454, 455, 456, 457, 133,
968 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
969 144, 145, 146, 147, 148, 27, 94, 149, 389, 239,
970 240, 241, 242, 95, 96, 419, 429, 258, 259, 260,
971 261, 423, 97, 98, 425, 390, 391, 392, 393, 394,
972 395, 396, 397, 390, 391, 392, 393, 394, 395, 396,
973 397, 390, 391, 392, 393, 394, 395, 396, 397, 99,
974 448, 130, 450, 31, 32, 33, 34, 35, 36, 37,
975 38, 39, 40, 41, 42, 43, 44, 45, 46, 100,
976 47, 48, 49, 288, 289, 290, 291, 292, 293, 294,
977 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
978 305, 240, 241, 242, 101, 102, 103, 104, 105, 106,
979 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
980 117, 118, 119, 120, 121, 122, 174, 123, 175, 124,
981 125, 126, 127, 128, 129, 176, 177, 178, 179, 180,
982 181, 183, 184, 185, 186, 187, 188, 189, 190, 191,
983 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
984 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
985 212, 213, 214, 215, 216, 231, 232, 233, 234, 235,
986 236, 237, 238, 266, 273, 274, 286, 311, 321, 312,
987 338, 337, 353, 360, 373, 313, 322, 323, 314, 315,
988 316, 317, 318, 319, 320, 324, 325, 326, 327, 328,
989 329, 330, 331, 339, 340, 352, 356, 374, 357, 351,
990 358, 359, 370, 371, 372, 376, 382, 378, 379, 380,
991 383, 384, 400, 385, 386, 387, 388, 402, 401, 403,
992 404, 406, 407, 410, 413, 414, 420, 421, 422, 424,
993 426, 427, 428, 434, 436, 438, 441, 446, 447, 449,
994 451, 459, 381, 461, 463, 465, 467, 468, 469, 464,
995 470, 471, 472, 473, 474, 475, 509, 476, 477, 478,
996 479, 480, 481, 513, 482, 483, 484, 485, 486, 487,
997 417, 488, 489, 490, 491, 492, 493, 440, 494, 498,
998 499, 405, 500, 501, 507, 416, 502, 506, 435, 508,
999 433, 510, 511, 512, 415, 0, 445, 466, 0, 151,
1000 437, 460, 0, 439, 150, 0, 0, 0, 0, 0,
1001 0, 0, 0, 0, 0, 170, 0, 443, 444
1002 };
1003
1004 static const yytype_int16 yycheck[] =
1005 {
1006 217, 218, 219, 3, 221, 222, 17, 18, 19, 3,
1007 21, 66, 23, 22, 25, 0, 1, 448, 14, 74,
1008 5, 6, 7, 8, 9, 10, 11, 4, 13, 4,
1009 4, 16, 4, 4, 4, 15, 4, 4, 4, 77,
1010 78, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1011 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1012 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1013 55, 56, 57, 58, 59, 60, 61, 374, 63, 64,
1014 65, 512, 66, 105, 3, 107, 66, 66, 3, 66,
1015 101, 66, 66, 104, 66, 66, 66, 106, 66, 66,
1016 66, 80, 81, 3, 66, 98, 99, 15, 108, 5,
1017 6, 7, 8, 9, 10, 11, 100, 79, 66, 80,
1018 81, 3, 66, 16, 20, 73, 70, 71, 3, 3,
1019 22, 428, 349, 26, 27, 28, 29, 30, 31, 32,
1020 33, 34, 35, 36, 37, 38, 39, 40, 41, 16,
1021 43, 44, 45, 92, 93, 94, 95, 96, 97, 26,
1022 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1023 37, 38, 39, 40, 41, 42, 109, 44, 66, 66,
1024 67, 68, 69, 109, 109, 402, 66, 8, 9, 10,
1025 11, 408, 109, 109, 411, 83, 84, 85, 86, 87,
1026 88, 89, 90, 83, 84, 85, 86, 87, 88, 89,
1027 90, 83, 84, 85, 86, 87, 88, 89, 90, 109,
1028 437, 0, 439, 46, 47, 48, 49, 50, 51, 52,
1029 53, 54, 55, 56, 57, 58, 59, 60, 61, 109,
1030 63, 64, 65, 199, 200, 201, 202, 203, 204, 205,
1031 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
1032 216, 67, 68, 69, 109, 109, 109, 109, 109, 109,
1033 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1034 109, 109, 109, 109, 109, 109, 22, 109, 22, 109,
1035 109, 109, 109, 109, 109, 22, 22, 22, 15, 3,
1036 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1037 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1038 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1039 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1040 3, 3, 3, 75, 4, 4, 4, 3, 108, 4,
1041 108, 110, 102, 72, 108, 12, 3, 3, 12, 12,
1042 12, 12, 12, 12, 12, 3, 3, 3, 3, 3,
1043 3, 3, 3, 15, 4, 4, 3, 82, 4, 24,
1044 4, 4, 4, 4, 4, 3, 3, 103, 4, 4,
1045 3, 3, 110, 4, 3, 3, 3, 108, 4, 4,
1046 107, 4, 4, 4, 4, 4, 4, 4, 3, 3,
1047 3, 3, 3, 419, 4, 4, 4, 4, 3, 3,
1048 3, 3, 356, 4, 4, 4, 3, 3, 3, 450,
1049 4, 4, 4, 3, 3, 3, 507, 4, 4, 4,
1050 3, 3, 3, 511, 4, 4, 4, 3, 3, 3,
1051 91, 4, 4, 4, 3, 3, 3, 76, 4, 4,
1052 3, 105, 3, 3, 3, 108, 4, 4, 107, 3,
1053 110, 4, 3, 3, 388, -1, 72, 459, -1, 65,
1054 108, 445, -1, 108, 62, -1, -1, -1, -1, -1,
1055 -1, -1, -1, -1, -1, 66, -1, 111, 108
1056 };
1057
1058 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1059 symbol of state STATE-NUM. */
1060 static const yytype_uint8 yystos[] =
1061 {
1062 0, 1, 5, 6, 7, 8, 9, 10, 11, 13,
1063 16, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1064 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1065 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1066 55, 56, 57, 58, 59, 60, 61, 63, 64, 65,
1067 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1068 123, 134, 135, 136, 138, 139, 140, 141, 142, 146,
1069 153, 154, 156, 158, 160, 162, 165, 166, 168, 170,
1070 171, 172, 183, 185, 187, 3, 3, 3, 3, 3,
1071 3, 3, 14, 15, 109, 109, 109, 109, 109, 109,
1072 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1073 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1074 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1075 0, 124, 16, 26, 27, 28, 29, 30, 31, 32,
1076 33, 34, 35, 36, 37, 38, 39, 40, 41, 44,
1077 136, 138, 16, 26, 27, 28, 29, 30, 31, 32,
1078 33, 34, 35, 36, 37, 38, 39, 40, 41, 44,
1079 141, 22, 106, 22, 22, 22, 22, 22, 22, 15,
1080 3, 3, 133, 3, 3, 3, 3, 3, 3, 3,
1081 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1082 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1083 3, 3, 3, 3, 3, 3, 3, 17, 18, 19,
1084 21, 23, 25, 101, 104, 125, 126, 127, 128, 129,
1085 130, 3, 3, 3, 3, 3, 3, 3, 3, 66,
1086 67, 68, 69, 143, 144, 145, 4, 66, 4, 66,
1087 66, 70, 71, 155, 4, 66, 4, 66, 8, 9,
1088 10, 11, 161, 66, 73, 163, 75, 77, 78, 167,
1089 4, 66, 169, 4, 4, 66, 79, 173, 98, 99,
1090 184, 66, 100, 186, 4, 66, 4, 137, 137, 137,
1091 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
1092 137, 137, 137, 137, 137, 137, 133, 133, 133, 133,
1093 133, 3, 4, 12, 12, 12, 12, 12, 12, 12,
1094 12, 108, 3, 3, 3, 3, 3, 3, 3, 3,
1095 3, 3, 66, 80, 81, 174, 175, 110, 108, 15,
1096 4, 5, 6, 7, 8, 9, 10, 11, 20, 131,
1097 132, 24, 4, 102, 105, 107, 3, 4, 4, 4,
1098 72, 15, 66, 157, 4, 66, 159, 66, 74, 164,
1099 4, 4, 4, 108, 82, 176, 3, 133, 103, 4,
1100 4, 144, 3, 3, 3, 4, 3, 3, 3, 66,
1101 83, 84, 85, 86, 87, 88, 89, 90, 177, 178,
1102 110, 4, 108, 4, 107, 105, 4, 4, 147, 148,
1103 4, 149, 150, 4, 4, 175, 108, 91, 179, 133,
1104 4, 4, 3, 133, 3, 133, 3, 3, 3, 66,
1105 178, 180, 181, 110, 132, 107, 4, 108, 4, 108,
1106 76, 4, 178, 111, 108, 72, 4, 3, 133, 3,
1107 133, 3, 92, 93, 94, 95, 96, 97, 182, 3,
1108 169, 4, 148, 4, 150, 4, 181, 3, 3, 3,
1109 4, 4, 4, 3, 3, 3, 4, 4, 4, 3,
1110 3, 3, 4, 4, 4, 3, 3, 3, 4, 4,
1111 4, 3, 3, 3, 4, 4, 66, 151, 4, 3,
1112 3, 3, 4, 4, 66, 152, 4, 3, 3, 151,
1113 4, 3, 3, 152, 148
1114 };
1115
1116 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1117 static const yytype_uint8 yyr1[] =
1118 {
1119 0, 112, 113, 114, 114, 114, 115, 115, 115, 115,
1120 115, 115, 115, 115, 116, 116, 117, 118, 119, 120,
1121 121, 122, 123, 124, 124, 124, 124, 124, 124, 124,
1122 124, 124, 125, 126, 127, 128, 128, 129, 129, 129,
1123 129, 129, 129, 130, 131, 131, 132, 132, 132, 132,
1124 132, 132, 132, 132, 133, 133, 134, 134, 134, 134,
1125 135, 135, 135, 135, 136, 136, 136, 136, 136, 136,
1126 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1127 136, 136, 137, 137, 138, 138, 138, 138, 138, 138,
1128 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1129 138, 138, 138, 139, 139, 140, 140, 141, 141, 141,
1130 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
1131 141, 141, 141, 141, 141, 141, 141, 142, 142, 143,
1132 143, 144, 145, 145, 145, 146, 146, 147, 147, 148,
1133 149, 149, 150, 151, 151, 152, 152, 153, 153, 154,
1134 154, 155, 155, 156, 156, 157, 157, 158, 158, 159,
1135 159, 160, 161, 161, 161, 161, 162, 163, 163, 164,
1136 164, 165, 166, 167, 167, 168, 169, 169, 170, 171,
1137 172, 172, 173, 174, 174, 174, 175, 175, 176, 177,
1138 177, 177, 178, 178, 178, 178, 178, 178, 178, 178,
1139 179, 180, 180, 180, 181, 182, 182, 182, 182, 182,
1140 182, 183, 184, 184, 185, 186, 186, 187, 187
1141 };
1142
1143 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1144 static const yytype_uint8 yyr2[] =
1145 {
1146 0, 2, 1, 2, 1, 1, 1, 1, 1, 1,
1147 1, 1, 1, 1, 5, 5, 5, 5, 5, 5,
1148 5, 5, 3, 0, 2, 2, 2, 2, 2, 2,
1149 2, 4, 3, 3, 3, 3, 5, 2, 4, 4,
1150 6, 6, 8, 3, 1, 5, 1, 1, 1, 1,
1151 1, 1, 1, 1, 0, 1, 0, 1, 1, 1,
1152 2, 1, 2, 1, 1, 1, 1, 1, 1, 1,
1153 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1154 1, 1, 1, 4, 4, 4, 4, 4, 4, 4,
1155 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1156 4, 4, 4, 1, 2, 1, 2, 1, 1, 1,
1157 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1158 1, 1, 1, 1, 1, 1, 2, 4, 4, 1,
1159 4, 5, 1, 1, 1, 4, 8, 1, 5, 21,
1160 1, 5, 17, 1, 1, 1, 1, 8, 4, 4,
1161 7, 1, 1, 4, 6, 1, 1, 4, 6, 1,
1162 1, 4, 1, 1, 1, 1, 6, 1, 1, 1,
1163 1, 10, 4, 1, 1, 4, 1, 1, 6, 28,
1164 4, 11, 2, 1, 1, 4, 1, 1, 2, 1,
1165 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
1166 2, 1, 1, 4, 3, 1, 1, 1, 1, 1,
1167 1, 4, 1, 1, 4, 1, 1, 4, 4
1168 };
1169
1170
1171 #define yyerrok (yyerrstatus = 0)
1172 #define yyclearin (yychar = YYEMPTY)
1173 #define YYEMPTY (-2)
1174 #define YYEOF 0
1175
1176 #define YYACCEPT goto yyacceptlab
1177 #define YYABORT goto yyabortlab
1178 #define YYERROR goto yyerrorlab
1179
1180
1181 #define YYRECOVERING() (!!yyerrstatus)
1182
1183 #define YYBACKUP(Token, Value) \
1184 do \
1185 if (yychar == YYEMPTY) \
1186 { \
1187 yychar = (Token); \
1188 yylval = (Value); \
1189 YYPOPSTACK (yylen); \
1190 yystate = *yyssp; \
1191 goto yybackup; \
1192 } \
1193 else \
1194 { \
1195 yyerror (scanner, message, YY_("syntax error: cannot back up")); \
1196 YYERROR; \
1197 } \
1198 while (0)
1199
1200 /* Error token number */
1201 #define YYTERROR 1
1202 #define YYERRCODE 256
1203
1204
1205
1206 /* Enable debugging if requested. */
1207 #if YYDEBUG
1208
1209 # ifndef YYFPRINTF
1210 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1211 # define YYFPRINTF fprintf
1212 # endif
1213
1214 # define YYDPRINTF(Args) \
1215 do { \
1216 if (yydebug) \
1217 YYFPRINTF Args; \
1218 } while (0)
1219
1220 /* This macro is provided for backward compatibility. */
1221 #ifndef YY_LOCATION_PRINT
1222 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1223 #endif
1224
1225
1226 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1227 do { \
1228 if (yydebug) \
1229 { \
1230 YYFPRINTF (stderr, "%s ", Title); \
1231 yy_symbol_print (stderr, \
1232 Type, Value, scanner, message); \
1233 YYFPRINTF (stderr, "\n"); \
1234 } \
1235 } while (0)
1236
1237
1238 /*----------------------------------------.
1239 | Print this symbol's value on YYOUTPUT. |
1240 `----------------------------------------*/
1241
1242 static void
1243 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue p, void* scanner, std::unique_ptr<wds::rtsp::Message>& message)
1244 {
1245 FILE *yyo = yyoutput;
1246 YYUSE (yyo);
1247 YYUSE (scanner);
1248 YYUSE (message);
1249 if (!yyvaluep)
1250 return;
1251 # ifdef YYPRINT
1252 if (yytype < YYNTOKENS)
1253 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1254 # endif
1255 YYUSE (yytype);
1256 }
1257
1258
1259 /*--------------------------------.
1260 | Print this symbol on YYOUTPUT. |
1261 `--------------------------------*/
1262
1263 static void
1264 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, voi d* scanner, std::unique_ptr<wds::rtsp::Message>& message)
1265 {
1266 YYFPRINTF (yyoutput, "%s %s (",
1267 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1268
1269 yy_symbol_value_print (yyoutput, yytype, yyvaluep, scanner, message);
1270 YYFPRINTF (yyoutput, ")");
1271 }
1272
1273 /*------------------------------------------------------------------.
1274 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1275 | TOP (included). |
1276 `------------------------------------------------------------------*/
1277
1278 static void
1279 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1280 {
1281 YYFPRINTF (stderr, "Stack now");
1282 for (; yybottom <= yytop; yybottom++)
1283 {
1284 int yybot = *yybottom;
1285 YYFPRINTF (stderr, " %d", yybot);
1286 }
1287 YYFPRINTF (stderr, "\n");
1288 }
1289
1290 # define YY_STACK_PRINT(Bottom, Top) \
1291 do { \
1292 if (yydebug) \
1293 yy_stack_print ((Bottom), (Top)); \
1294 } while (0)
1295
1296
1297 /*------------------------------------------------.
1298 | Report that the YYRULE is going to be reduced. |
1299 `------------------------------------------------*/
1300
1301 static void
1302 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, void* scanner, std::unique_ptr<wds::rtsp::Message>& message)
1303 {
1304 unsigned long int yylno = yyrline[yyrule];
1305 int yynrhs = yyr2[yyrule];
1306 int yyi;
1307 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1308 yyrule - 1, yylno);
1309 /* The symbols being reduced. */
1310 for (yyi = 0; yyi < yynrhs; yyi++)
1311 {
1312 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1313 yy_symbol_print (stderr,
1314 yystos[yyssp[yyi + 1 - yynrhs]],
1315 &(yyvsp[(yyi + 1) - (yynrhs)])
1316 , scanner, message);
1317 YYFPRINTF (stderr, "\n");
1318 }
1319 }
1320
1321 # define YY_REDUCE_PRINT(Rule) \
1322 do { \
1323 if (yydebug) \
1324 yy_reduce_print (yyssp, yyvsp, Rule, scanner, message); \
1325 } while (0)
1326
1327 /* Nonzero means print parse trace. It is left uninitialized so that
1328 multiple parsers can coexist. */
1329 int yydebug;
1330 #else /* !YYDEBUG */
1331 # define YYDPRINTF(Args)
1332 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1333 # define YY_STACK_PRINT(Bottom, Top)
1334 # define YY_REDUCE_PRINT(Rule)
1335 #endif /* !YYDEBUG */
1336
1337
1338 /* YYINITDEPTH -- initial size of the parser's stacks. */
1339 #ifndef YYINITDEPTH
1340 # define YYINITDEPTH 200
1341 #endif
1342
1343 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1344 if the built-in stack extension method is used).
1345
1346 Do not make this value too large; the results are undefined if
1347 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1348 evaluated with infinite-precision integer arithmetic. */
1349
1350 #ifndef YYMAXDEPTH
1351 # define YYMAXDEPTH 10000
1352 #endif
1353
1354
1355 #if YYERROR_VERBOSE
1356
1357 # ifndef yystrlen
1358 # if defined __GLIBC__ && defined _STRING_H
1359 # define yystrlen strlen
1360 # else
1361 /* Return the length of YYSTR. */
1362 static YYSIZE_T
1363 yystrlen (const char *yystr)
1364 {
1365 YYSIZE_T yylen;
1366 for (yylen = 0; yystr[yylen]; yylen++)
1367 continue;
1368 return yylen;
1369 }
1370 # endif
1371 # endif
1372
1373 # ifndef yystpcpy
1374 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1375 # define yystpcpy stpcpy
1376 # else
1377 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1378 YYDEST. */
1379 static char *
1380 yystpcpy (char *yydest, const char *yysrc)
1381 {
1382 char *yyd = yydest;
1383 const char *yys = yysrc;
1384
1385 while ((*yyd++ = *yys++) != '\0')
1386 continue;
1387
1388 return yyd - 1;
1389 }
1390 # endif
1391 # endif
1392
1393 # ifndef yytnamerr
1394 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1395 quotes and backslashes, so that it's suitable for yyerror. The
1396 heuristic is that double-quoting is unnecessary unless the string
1397 contains an apostrophe, a comma, or backslash (other than
1398 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1399 null, do not copy; instead, return the length of what the result
1400 would have been. */
1401 static YYSIZE_T
1402 yytnamerr (char *yyres, const char *yystr)
1403 {
1404 if (*yystr == '"')
1405 {
1406 YYSIZE_T yyn = 0;
1407 char const *yyp = yystr;
1408
1409 for (;;)
1410 switch (*++yyp)
1411 {
1412 case '\'':
1413 case ',':
1414 goto do_not_strip_quotes;
1415
1416 case '\\':
1417 if (*++yyp != '\\')
1418 goto do_not_strip_quotes;
1419 /* Fall through. */
1420 default:
1421 if (yyres)
1422 yyres[yyn] = *yyp;
1423 yyn++;
1424 break;
1425
1426 case '"':
1427 if (yyres)
1428 yyres[yyn] = '\0';
1429 return yyn;
1430 }
1431 do_not_strip_quotes: ;
1432 }
1433
1434 if (! yyres)
1435 return yystrlen (yystr);
1436
1437 return yystpcpy (yyres, yystr) - yyres;
1438 }
1439 # endif
1440
1441 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1442 about the unexpected token YYTOKEN for the state stack whose top is
1443 YYSSP.
1444
1445 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
1446 not large enough to hold the message. In that case, also set
1447 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
1448 required number of bytes is too large to store. */
1449 static int
1450 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1451 yytype_int16 *yyssp, int yytoken)
1452 {
1453 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1454 YYSIZE_T yysize = yysize0;
1455 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1456 /* Internationalized format string. */
1457 const char *yyformat = YY_NULLPTR;
1458 /* Arguments of yyformat. */
1459 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1460 /* Number of reported tokens (one for the "unexpected", one per
1461 "expected"). */
1462 int yycount = 0;
1463
1464 /* There are many possibilities here to consider:
1465 - If this state is a consistent state with a default action, then
1466 the only way this function was invoked is if the default action
1467 is an error action. In that case, don't check for expected
1468 tokens because there are none.
1469 - The only way there can be no lookahead present (in yychar) is if
1470 this state is a consistent state with a default action. Thus,
1471 detecting the absence of a lookahead is sufficient to determine
1472 that there is no unexpected or expected token to report. In that
1473 case, just report a simple "syntax error".
1474 - Don't assume there isn't a lookahead just because this state is a
1475 consistent state with a default action. There might have been a
1476 previous inconsistent state, consistent state with a non-default
1477 action, or user semantic action that manipulated yychar.
1478 - Of course, the expected token list depends on states to have
1479 correct lookahead information, and it depends on the parser not
1480 to perform extra reductions after fetching a lookahead from the
1481 scanner and before detecting a syntax error. Thus, state merging
1482 (from LALR or IELR) and default reductions corrupt the expected
1483 token list. However, the list is correct for canonical LR with
1484 one exception: it will still contain any token that will not be
1485 accepted due to an error action in a later state.
1486 */
1487 if (yytoken != YYEMPTY)
1488 {
1489 int yyn = yypact[*yyssp];
1490 yyarg[yycount++] = yytname[yytoken];
1491 if (!yypact_value_is_default (yyn))
1492 {
1493 /* Start YYX at -YYN if negative to avoid negative indexes in
1494 YYCHECK. In other words, skip the first -YYN actions for
1495 this state because they are default actions. */
1496 int yyxbegin = yyn < 0 ? -yyn : 0;
1497 /* Stay within bounds of both yycheck and yytname. */
1498 int yychecklim = YYLAST - yyn + 1;
1499 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1500 int yyx;
1501
1502 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1503 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1504 && !yytable_value_is_error (yytable[yyx + yyn]))
1505 {
1506 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1507 {
1508 yycount = 1;
1509 yysize = yysize0;
1510 break;
1511 }
1512 yyarg[yycount++] = yytname[yyx];
1513 {
1514 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx ]);
1515 if (! (yysize <= yysize1
1516 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1517 return 2;
1518 yysize = yysize1;
1519 }
1520 }
1521 }
1522 }
1523
1524 switch (yycount)
1525 {
1526 # define YYCASE_(N, S) \
1527 case N: \
1528 yyformat = S; \
1529 break
1530 YYCASE_(0, YY_("syntax error"));
1531 YYCASE_(1, YY_("syntax error, unexpected %s"));
1532 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1533 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1534 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1535 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or % s"));
1536 # undef YYCASE_
1537 }
1538
1539 {
1540 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1541 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1542 return 2;
1543 yysize = yysize1;
1544 }
1545
1546 if (*yymsg_alloc < yysize)
1547 {
1548 *yymsg_alloc = 2 * yysize;
1549 if (! (yysize <= *yymsg_alloc
1550 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1551 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1552 return 1;
1553 }
1554
1555 /* Avoid sprintf, as that infringes on the user's name space.
1556 Don't have undefined behavior even if the translation
1557 produced a string with the wrong number of "%s"s. */
1558 {
1559 char *yyp = *yymsg;
1560 int yyi = 0;
1561 while ((*yyp = *yyformat) != '\0')
1562 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1563 {
1564 yyp += yytnamerr (yyp, yyarg[yyi++]);
1565 yyformat += 2;
1566 }
1567 else
1568 {
1569 yyp++;
1570 yyformat++;
1571 }
1572 }
1573 return 0;
1574 }
1575 #endif /* YYERROR_VERBOSE */
1576
1577 /*-----------------------------------------------.
1578 | Release the memory associated to this symbol. |
1579 `-----------------------------------------------*/
1580
1581 static void
1582 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void* scanner, std ::unique_ptr<wds::rtsp::Message>& message)
1583 {
1584 YYUSE (yyvaluep);
1585 YYUSE (scanner);
1586 YYUSE (message);
1587 if (!yymsg)
1588 yymsg = "Deleting";
1589 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1590
1591 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1592 switch (yytype)
1593 {
1594 case 15: /* WFD_STRING */
1595
1596 { DELETE_TOKEN(((*yyvaluep).sval)); }
1597
1598 break;
1599
1600 case 16: /* WFD_GENERIC_PROPERTY */
1601
1602 { DELETE_TOKEN(((*yyvaluep).sval)); }
1603
1604 break;
1605
1606 case 22: /* WFD_REQUEST_URI */
1607
1608 { DELETE_TOKEN(((*yyvaluep).sval)); }
1609
1610 break;
1611
1612 case 24: /* WFD_MIME */
1613
1614 { DELETE_TOKEN(((*yyvaluep).sval)); }
1615
1616 break;
1617
1618 case 130: /* wfd_supported_methods */
1619
1620 { DELETE_TOKEN(((*yyvaluep).methods)); }
1621
1622 break;
1623
1624 case 131: /* wfd_methods */
1625
1626 { DELETE_TOKEN(((*yyvaluep).methods)); }
1627
1628 break;
1629
1630 case 135: /* wfd_parameter_list */
1631
1632 { DELETE_TOKEN(((*yyvaluep).mpayload)); }
1633
1634 break;
1635
1636 case 143: /* wfd_audio_codec_list */
1637
1638 { DELETE_TOKEN(((*yyvaluep).audio_codecs)); }
1639
1640 break;
1641
1642 case 144: /* wfd_audio_codec */
1643
1644 { DELETE_TOKEN(((*yyvaluep).audio_codec)); }
1645
1646 break;
1647
1648 case 147: /* wfd_h264_codecs */
1649
1650 { DELETE_TOKEN(((*yyvaluep).codecs)); }
1651
1652 break;
1653
1654 case 148: /* wfd_h264_codec */
1655
1656 { DELETE_TOKEN(((*yyvaluep).codec)); }
1657
1658 break;
1659
1660 case 149: /* wfd_h264_codecs_3d */
1661
1662 { DELETE_TOKEN(((*yyvaluep).codecs_3d)); }
1663
1664 break;
1665
1666 case 150: /* wfd_h264_codec_3d */
1667
1668 { DELETE_TOKEN(((*yyvaluep).codec_3d)); }
1669
1670 break;
1671
1672 case 157: /* wfd_edid_payload */
1673
1674 { DELETE_TOKEN(((*yyvaluep).sval)); }
1675
1676 break;
1677
1678 case 181: /* wfd_hidc_cap_list_value */
1679
1680 { DELETE_TOKEN(((*yyvaluep).hidc_cap_list_value)); }
1681
1682 break;
1683
1684
1685 default:
1686 break;
1687 }
1688 YY_IGNORE_MAYBE_UNINITIALIZED_END
1689 }
1690
1691
1692
1693
1694 /*----------.
1695 | yyparse. |
1696 `----------*/
1697
1698 int
1699 yyparse (void* scanner, std::unique_ptr<wds::rtsp::Message>& message)
1700 {
1701 /* The lookahead symbol. */
1702 int yychar;
1703
1704
1705 /* The semantic value of the lookahead symbol. */
1706 /* Default value used for initialization, for pacifying older GCCs
1707 or non-GCC compilers. */
1708 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
1709 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
1710
1711 /* Number of syntax errors so far. */
1712 int yynerrs;
1713
1714 int yystate;
1715 /* Number of tokens to shift before error messages enabled. */
1716 int yyerrstatus;
1717
1718 /* The stacks and their tools:
1719 'yyss': related to states.
1720 'yyvs': related to semantic values.
1721
1722 Refer to the stacks through separate pointers, to allow yyoverflow
1723 to reallocate them elsewhere. */
1724
1725 /* The state stack. */
1726 yytype_int16 yyssa[YYINITDEPTH];
1727 yytype_int16 *yyss;
1728 yytype_int16 *yyssp;
1729
1730 /* The semantic value stack. */
1731 YYSTYPE yyvsa[YYINITDEPTH];
1732 YYSTYPE *yyvs;
1733 YYSTYPE *yyvsp;
1734
1735 YYSIZE_T yystacksize;
1736
1737 int yyn;
1738 int yyresult;
1739 /* Lookahead token as an internal (translated) token number. */
1740 int yytoken = 0;
1741 /* The variables used to return semantic value and location from the
1742 action routines. */
1743 YYSTYPE yyval;
1744
1745 #if YYERROR_VERBOSE
1746 /* Buffer for error messages, and its allocated size. */
1747 char yymsgbuf[128];
1748 char *yymsg = yymsgbuf;
1749 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1750 #endif
1751
1752 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1753
1754 /* The number of symbols on the RHS of the reduced rule.
1755 Keep to zero when no symbol should be popped. */
1756 int yylen = 0;
1757
1758 yyssp = yyss = yyssa;
1759 yyvsp = yyvs = yyvsa;
1760 yystacksize = YYINITDEPTH;
1761
1762 YYDPRINTF ((stderr, "Starting parse\n"));
1763
1764 yystate = 0;
1765 yyerrstatus = 0;
1766 yynerrs = 0;
1767 yychar = YYEMPTY; /* Cause a token to be read. */
1768 goto yysetstate;
1769
1770 /*------------------------------------------------------------.
1771 | yynewstate -- Push a new state, which is found in yystate. |
1772 `------------------------------------------------------------*/
1773 yynewstate:
1774 /* In all cases, when you get here, the value and location stacks
1775 have just been pushed. So pushing a state here evens the stacks. */
1776 yyssp++;
1777
1778 yysetstate:
1779 *yyssp = yystate;
1780
1781 if (yyss + yystacksize - 1 <= yyssp)
1782 {
1783 /* Get the current used size of the three stacks, in elements. */
1784 YYSIZE_T yysize = yyssp - yyss + 1;
1785
1786 #ifdef yyoverflow
1787 {
1788 /* Give user a chance to reallocate the stack. Use copies of
1789 these so that the &'s don't force the real ones into
1790 memory. */
1791 YYSTYPE *yyvs1 = yyvs;
1792 yytype_int16 *yyss1 = yyss;
1793
1794 /* Each stack pointer address is followed by the size of the
1795 data in use in that stack, in bytes. This used to be a
1796 conditional around just the two extra args, but that might
1797 be undefined if yyoverflow is a macro. */
1798 yyoverflow (YY_("memory exhausted"),
1799 &yyss1, yysize * sizeof (*yyssp),
1800 &yyvs1, yysize * sizeof (*yyvsp),
1801 &yystacksize);
1802
1803 yyss = yyss1;
1804 yyvs = yyvs1;
1805 }
1806 #else /* no yyoverflow */
1807 # ifndef YYSTACK_RELOCATE
1808 goto yyexhaustedlab;
1809 # else
1810 /* Extend the stack our own way. */
1811 if (YYMAXDEPTH <= yystacksize)
1812 goto yyexhaustedlab;
1813 yystacksize *= 2;
1814 if (YYMAXDEPTH < yystacksize)
1815 yystacksize = YYMAXDEPTH;
1816
1817 {
1818 yytype_int16 *yyss1 = yyss;
1819 union yyalloc *yyptr =
1820 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1821 if (! yyptr)
1822 goto yyexhaustedlab;
1823 YYSTACK_RELOCATE (yyss_alloc, yyss);
1824 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1825 # undef YYSTACK_RELOCATE
1826 if (yyss1 != yyssa)
1827 YYSTACK_FREE (yyss1);
1828 }
1829 # endif
1830 #endif /* no yyoverflow */
1831
1832 yyssp = yyss + yysize - 1;
1833 yyvsp = yyvs + yysize - 1;
1834
1835 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1836 (unsigned long int) yystacksize));
1837
1838 if (yyss + yystacksize - 1 <= yyssp)
1839 YYABORT;
1840 }
1841
1842 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1843
1844 if (yystate == YYFINAL)
1845 YYACCEPT;
1846
1847 goto yybackup;
1848
1849 /*-----------.
1850 | yybackup. |
1851 `-----------*/
1852 yybackup:
1853
1854 /* Do appropriate processing given the current state. Read a
1855 lookahead token if we need one and don't already have one. */
1856
1857 /* First try to decide what to do without reference to lookahead token. */
1858 yyn = yypact[yystate];
1859 if (yypact_value_is_default (yyn))
1860 goto yydefault;
1861
1862 /* Not known => get a lookahead token if don't already have one. */
1863
1864 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1865 if (yychar == YYEMPTY)
1866 {
1867 YYDPRINTF ((stderr, "Reading a token: "));
1868 yychar = yylex (&yylval, scanner, message);
1869 }
1870
1871 if (yychar <= YYEOF)
1872 {
1873 yychar = yytoken = YYEOF;
1874 YYDPRINTF ((stderr, "Now at end of input.\n"));
1875 }
1876 else
1877 {
1878 yytoken = YYTRANSLATE (yychar);
1879 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1880 }
1881
1882 /* If the proper action on seeing token YYTOKEN is to reduce or to
1883 detect an error, take that action. */
1884 yyn += yytoken;
1885 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1886 goto yydefault;
1887 yyn = yytable[yyn];
1888 if (yyn <= 0)
1889 {
1890 if (yytable_value_is_error (yyn))
1891 goto yyerrlab;
1892 yyn = -yyn;
1893 goto yyreduce;
1894 }
1895
1896 /* Count tokens shifted since error; after three, turn off error
1897 status. */
1898 if (yyerrstatus)
1899 yyerrstatus--;
1900
1901 /* Shift the lookahead token. */
1902 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1903
1904 /* Discard the shifted token. */
1905 yychar = YYEMPTY;
1906
1907 yystate = yyn;
1908 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1909 *++yyvsp = yylval;
1910 YY_IGNORE_MAYBE_UNINITIALIZED_END
1911
1912 goto yynewstate;
1913
1914
1915 /*-----------------------------------------------------------.
1916 | yydefault -- do the default action for the current state. |
1917 `-----------------------------------------------------------*/
1918 yydefault:
1919 yyn = yydefact[yystate];
1920 if (yyn == 0)
1921 goto yyerrlab;
1922 goto yyreduce;
1923
1924
1925 /*-----------------------------.
1926 | yyreduce -- Do a reduction. |
1927 `-----------------------------*/
1928 yyreduce:
1929 /* yyn is the number of a rule to reduce with. */
1930 yylen = yyr2[yyn];
1931
1932 /* If YYLEN is nonzero, implement the default value of the action:
1933 '$$ = $1'.
1934
1935 Otherwise, the following line sets YYVAL to garbage.
1936 This behavior is undocumented and Bison
1937 users should not rely upon it. Assigning to YYVAL
1938 unconditionally makes the parser a bit smaller, and it avoids a
1939 GCC warning that YYVAL may be used uninitialized. */
1940 yyval = yyvsp[1-yylen];
1941
1942
1943 YY_REDUCE_PRINT (yyn);
1944 switch (yyn)
1945 {
1946 case 3:
1947
1948 {
1949 message.reset((yyvsp[-1].message));
1950 (yyvsp[-1].message)->set_header(std::unique_ptr<wds::rtsp::Header>((yyvsp[ 0].header)));
1951 }
1952
1953 break;
1954
1955 case 4:
1956
1957 {
1958 message->set_payload(std::unique_ptr<wds::rtsp::Payload>((yyvsp[0].mpayloa d)));
1959 }
1960
1961 break;
1962
1963 case 5:
1964
1965 {
1966 std::cerr << "Unknown message" << std::endl;
1967 }
1968
1969 break;
1970
1971 case 14:
1972
1973 {
1974 (yyval.message) = new wds::rtsp::Options("*");
1975 }
1976
1977 break;
1978
1979 case 15:
1980
1981 {
1982 (yyval.message) = new wds::rtsp::Options(*(yyvsp[-2].sval));
1983 DELETE_TOKEN((yyvsp[-2].sval));
1984 }
1985
1986 break;
1987
1988 case 16:
1989
1990 {
1991 (yyval.message) = new wds::rtsp::SetParameter(*(yyvsp[-2].sval));
1992 DELETE_TOKEN((yyvsp[-2].sval));
1993 }
1994
1995 break;
1996
1997 case 17:
1998
1999 {
2000 (yyval.message) = new wds::rtsp::GetParameter(*(yyvsp[-2].sval));
2001 DELETE_TOKEN((yyvsp[-2].sval));
2002 }
2003
2004 break;
2005
2006 case 18:
2007
2008 {
2009 (yyval.message) = new wds::rtsp::Setup(*(yyvsp[-2].sval));
2010 DELETE_TOKEN((yyvsp[-2].sval));
2011 }
2012
2013 break;
2014
2015 case 19:
2016
2017 {
2018 (yyval.message) = new wds::rtsp::Play(*(yyvsp[-2].sval));
2019 DELETE_TOKEN((yyvsp[-2].sval));
2020 }
2021
2022 break;
2023
2024 case 20:
2025
2026 {
2027 (yyval.message) = new wds::rtsp::Teardown(*(yyvsp[-2].sval));
2028 DELETE_TOKEN((yyvsp[-2].sval));
2029 }
2030
2031 break;
2032
2033 case 21:
2034
2035 {
2036 (yyval.message) = new wds::rtsp::Pause(*(yyvsp[-2].sval));
2037 DELETE_TOKEN((yyvsp[-2].sval));
2038 }
2039
2040 break;
2041
2042 case 22:
2043
2044 {
2045 DELETE_TOKEN((yyvsp[0].sval));
2046 (yyval.message) = new wds::rtsp::Reply((yyvsp[-1].nval));
2047 }
2048
2049 break;
2050
2051 case 23:
2052
2053 {
2054 (yyval.header) = new wds::rtsp::Header();
2055 }
2056
2057 break;
2058
2059 case 24:
2060
2061 { (yyvsp[-1].header)->set_cseq((yyvsp[0].nval)); }
2062
2063 break;
2064
2065 case 25:
2066
2067 { (yyvsp[-1].header)->set_require_wfd_support(true); }
2068
2069 break;
2070
2071 case 26:
2072
2073 {
2074 (yyvsp[-1].header)->set_content_type(*(yyvsp[0].sval));
2075 DELETE_TOKEN((yyvsp[0].sval));
2076 }
2077
2078 break;
2079
2080 case 27:
2081
2082 { (yyvsp[-1].header)->set_content_length((yyvsp[0].nval)); }
2083
2084 break;
2085
2086 case 28:
2087
2088 {
2089 (yyvsp[-1].header)->set_supported_methods(*(yyvsp[0].methods));
2090 DELETE_TOKEN((yyvsp[0].methods));
2091 }
2092
2093 break;
2094
2095 case 29:
2096
2097 {
2098 (yyvsp[-1].header)->set_session((*(yyvsp[0].session_info)).first);
2099 (yyvsp[-1].header)->set_timeout((*(yyvsp[0].session_info)).second);
2100 DELETE_TOKEN((yyvsp[0].session_info));
2101 }
2102
2103 break;
2104
2105 case 30:
2106
2107 { (yyvsp[-1].header)->set_transport ((yyvsp[0].transport)); }
2108
2109 break;
2110
2111 case 31:
2112
2113 {
2114 (yyvsp[-3].header)->add_generic_header(*(yyvsp[-2].sval), *(yyvsp[0].s val));
2115 DELETE_TOKEN((yyvsp[-2].sval));
2116 DELETE_TOKEN((yyvsp[0].sval));
2117 }
2118
2119 break;
2120
2121 case 32:
2122
2123 {
2124 (yyval.nval) = (yyvsp[0].nval);
2125 }
2126
2127 break;
2128
2129 case 33:
2130
2131 {
2132 (yyval.sval) = (yyvsp[0].sval);
2133 }
2134
2135 break;
2136
2137 case 34:
2138
2139 {
2140 (yyval.nval) = (yyvsp[0].nval);
2141 }
2142
2143 break;
2144
2145 case 35:
2146
2147 {
2148 (yyval.session_info) = new std::pair<std::string, unsigned int>(*(yyvsp[0] .sval), 0);
2149 DELETE_TOKEN((yyvsp[0].sval));
2150 }
2151
2152 break;
2153
2154 case 36:
2155
2156 {
2157 (yyval.session_info) = new std::pair<std::string, unsigned int>(*(yyvsp[-2 ].sval), (yyvsp[0].nval));
2158 DELETE_TOKEN((yyvsp[-2].sval));
2159 }
2160
2161 break;
2162
2163 case 37:
2164
2165 {
2166 (yyval.transport) = new wds::rtsp::TransportHeader();
2167 (yyval.transport)->set_client_port ((yyvsp[0].nval));
2168 }
2169
2170 break;
2171
2172 case 38:
2173
2174 {
2175 (yyval.transport) = new wds::rtsp::TransportHeader();
2176 (yyval.transport)->set_client_port ((yyvsp[-2].nval));
2177 (yyval.transport)->set_client_supports_rtcp (true);
2178 }
2179
2180 break;
2181
2182 case 39:
2183
2184 {
2185 (yyval.transport) = new wds::rtsp::TransportHeader();
2186 (yyval.transport)->set_client_port ((yyvsp[-2].nval));
2187 (yyval.transport)->set_server_port ((yyvsp[0].nval));
2188 }
2189
2190 break;
2191
2192 case 40:
2193
2194 {
2195 (yyval.transport) = new wds::rtsp::TransportHeader();
2196 (yyval.transport)->set_client_port ((yyvsp[-4].nval));
2197 (yyval.transport)->set_client_supports_rtcp (true);
2198 (yyval.transport)->set_server_port ((yyvsp[0].nval));
2199 }
2200
2201 break;
2202
2203 case 41:
2204
2205 {
2206 (yyval.transport) = new wds::rtsp::TransportHeader();
2207 (yyval.transport)->set_client_port ((yyvsp[-4].nval));
2208 (yyval.transport)->set_server_port ((yyvsp[-2].nval));
2209 (yyval.transport)->set_server_supports_rtcp (true);
2210 }
2211
2212 break;
2213
2214 case 42:
2215
2216 {
2217 (yyval.transport) = new wds::rtsp::TransportHeader();
2218 (yyval.transport)->set_client_port ((yyvsp[-6].nval));
2219 (yyval.transport)->set_client_supports_rtcp (true);
2220 (yyval.transport)->set_server_port ((yyvsp[-2].nval));
2221 (yyval.transport)->set_server_supports_rtcp (true);
2222 }
2223
2224 break;
2225
2226 case 43:
2227
2228 {
2229 (yyval.methods) = (yyvsp[0].methods);
2230 }
2231
2232 break;
2233
2234 case 44:
2235
2236 {
2237 (yyval.methods) = new std::vector<wds::rtsp::Method>();
2238 (yyval.methods)->push_back((yyvsp[0].method));
2239 }
2240
2241 break;
2242
2243 case 45:
2244
2245 {
2246 UNUSED_TOKEN((yyval.methods));
2247 (yyvsp[-4].methods)->push_back((yyvsp[0].method));
2248 }
2249
2250 break;
2251
2252 case 46:
2253
2254 { (yyval.method) = wds::rtsp::OPTIONS; }
2255
2256 break;
2257
2258 case 47:
2259
2260 { (yyval.method) = wds::rtsp::SET_PARAMETER; }
2261
2262 break;
2263
2264 case 48:
2265
2266 { (yyval.method) = wds::rtsp::GET_PARAMETER; }
2267
2268 break;
2269
2270 case 49:
2271
2272 { (yyval.method) = wds::rtsp::SETUP; }
2273
2274 break;
2275
2276 case 50:
2277
2278 { (yyval.method) = wds::rtsp::PLAY; }
2279
2280 break;
2281
2282 case 51:
2283
2284 { (yyval.method) = wds::rtsp::TEARDOWN; }
2285
2286 break;
2287
2288 case 52:
2289
2290 { (yyval.method) = wds::rtsp::PAUSE; }
2291
2292 break;
2293
2294 case 53:
2295
2296 { (yyval.method) = wds::rtsp::ORG_WFA_WFD_1_0; }
2297
2298 break;
2299
2300 case 56:
2301
2302 {
2303 (yyval.mpayload) = 0;
2304 }
2305
2306 break;
2307
2308 case 60:
2309
2310 {
2311 UNUSED_TOKEN((yyval.mpayload));
2312 if (auto payload = ToGetParameterPayload((yyvsp[-1].mpayload)))
2313 payload->AddRequestProperty((yyvsp[0].parameter));
2314 else
2315 YYERROR;
2316 }
2317
2318 break;
2319
2320 case 61:
2321
2322 {
2323 (yyval.mpayload) = new wds::rtsp::GetParameterPayload();
2324 wds::rtsp::ToGetParameterPayload((yyval.mpayload))->AddRequestProperty((yy vsp[0].parameter));
2325 }
2326
2327 break;
2328
2329 case 62:
2330
2331 {
2332 UNUSED_TOKEN((yyval.mpayload));
2333 if (auto payload = ToGetParameterPayload((yyvsp[-1].mpayload)))
2334 payload->AddRequestProperty(*(yyvsp[0].sval));
2335 else
2336 YYERROR;
2337 DELETE_TOKEN((yyvsp[0].sval));
2338 }
2339
2340 break;
2341
2342 case 63:
2343
2344 {
2345 (yyval.mpayload) = new wds::rtsp::GetParameterPayload();
2346 wds::rtsp::ToGetParameterPayload((yyval.mpayload))->AddRequestProperty(*(y yvsp[0].sval));
2347 DELETE_TOKEN((yyvsp[0].sval));
2348 }
2349
2350 break;
2351
2352 case 64:
2353
2354 { (yyval.parameter) = wds::rtsp::AudioCodecsPropertyType; }
2355
2356 break;
2357
2358 case 65:
2359
2360 { (yyval.parameter) = wds::rtsp::VideoFormatsPropertyType; }
2361
2362 break;
2363
2364 case 66:
2365
2366 { (yyval.parameter) = wds::rtsp::Video3DFormatsPropertyType; }
2367
2368 break;
2369
2370 case 67:
2371
2372 { (yyval.parameter) = wds::rtsp::ContentProtectionPropertyType; }
2373
2374 break;
2375
2376 case 68:
2377
2378 { (yyval.parameter) = wds::rtsp::DisplayEdidPropertyType; }
2379
2380 break;
2381
2382 case 69:
2383
2384 { (yyval.parameter) = wds::rtsp::CoupledSinkPropertyType; }
2385
2386 break;
2387
2388 case 70:
2389
2390 { (yyval.parameter) = wds::rtsp::TriggerMethodPropertyType; }
2391
2392 break;
2393
2394 case 71:
2395
2396 { (yyval.parameter) = wds::rtsp::PresentationURLPropertyType; }
2397
2398 break;
2399
2400 case 72:
2401
2402 { (yyval.parameter) = wds::rtsp::ClientRTPPortsPropertyType; }
2403
2404 break;
2405
2406 case 73:
2407
2408 { (yyval.parameter) = wds::rtsp::RoutePropertyType; }
2409
2410 break;
2411
2412 case 74:
2413
2414 { (yyval.parameter) = wds::rtsp::I2CPropertyType; }
2415
2416 break;
2417
2418 case 75:
2419
2420 { (yyval.parameter) = wds::rtsp::AVFormatChangeTimingPropertyType; }
2421
2422 break;
2423
2424 case 76:
2425
2426 { (yyval.parameter) = wds::rtsp::PreferredDisplayModePropertyType; }
2427
2428 break;
2429
2430 case 77:
2431
2432 { (yyval.parameter) = wds::rtsp::UIBCCapabilityPropertyType; }
2433
2434 break;
2435
2436 case 78:
2437
2438 { (yyval.parameter) = wds::rtsp::UIBCSettingPropertyType; }
2439
2440 break;
2441
2442 case 79:
2443
2444 { (yyval.parameter) = wds::rtsp::StandbyResumeCapabilityPropertyType; }
2445
2446 break;
2447
2448 case 80:
2449
2450 { (yyval.parameter) = wds::rtsp::StandbyPropertyType; }
2451
2452 break;
2453
2454 case 81:
2455
2456 { (yyval.parameter) = wds::rtsp::ConnectorTypePropertyType; }
2457
2458 break;
2459
2460 case 82:
2461
2462 {
2463 (yyval.error_list) = new std::vector<unsigned short>();
2464 (yyval.error_list)->push_back((yyvsp[0].nval));
2465 }
2466
2467 break;
2468
2469 case 83:
2470
2471 {
2472 (yyvsp[-3].error_list)->push_back((yyvsp[0].nval));
2473 }
2474
2475 break;
2476
2477 case 84:
2478
2479 {
2480 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::AudioCo decsPropertyType, *(yyvsp[0].error_list));
2481 DELETE_TOKEN((yyvsp[0].error_list));
2482 }
2483
2484 break;
2485
2486 case 85:
2487
2488 {
2489 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::VideoFo rmatsPropertyType, *(yyvsp[0].error_list));
2490 DELETE_TOKEN((yyvsp[0].error_list));
2491 }
2492
2493 break;
2494
2495 case 86:
2496
2497 {
2498 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Video3D FormatsPropertyType, *(yyvsp[0].error_list));
2499 DELETE_TOKEN((yyvsp[0].error_list));
2500 }
2501
2502 break;
2503
2504 case 87:
2505
2506 {
2507 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Content ProtectionPropertyType, *(yyvsp[0].error_list));
2508 DELETE_TOKEN((yyvsp[0].error_list));
2509 }
2510
2511 break;
2512
2513 case 88:
2514
2515 {
2516 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Display EdidPropertyType, *(yyvsp[0].error_list));
2517 DELETE_TOKEN((yyvsp[0].error_list));
2518 }
2519
2520 break;
2521
2522 case 89:
2523
2524 {
2525 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Coupled SinkPropertyType, *(yyvsp[0].error_list));
2526 DELETE_TOKEN((yyvsp[0].error_list));
2527 }
2528
2529 break;
2530
2531 case 90:
2532
2533 {
2534 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Trigger MethodPropertyType, *(yyvsp[0].error_list));
2535 DELETE_TOKEN((yyvsp[0].error_list));
2536 }
2537
2538 break;
2539
2540 case 91:
2541
2542 {
2543 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Present ationURLPropertyType, *(yyvsp[0].error_list));
2544 DELETE_TOKEN((yyvsp[0].error_list));
2545 }
2546
2547 break;
2548
2549 case 92:
2550
2551 {
2552 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::ClientR TPPortsPropertyType, *(yyvsp[0].error_list));
2553 DELETE_TOKEN((yyvsp[0].error_list));
2554 }
2555
2556 break;
2557
2558 case 93:
2559
2560 {
2561 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::RoutePr opertyType, *(yyvsp[0].error_list));
2562 DELETE_TOKEN((yyvsp[0].error_list));
2563 }
2564
2565 break;
2566
2567 case 94:
2568
2569 {
2570 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::I2CProp ertyType, *(yyvsp[0].error_list));
2571 DELETE_TOKEN((yyvsp[0].error_list));
2572 }
2573
2574 break;
2575
2576 case 95:
2577
2578 {
2579 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::AVForma tChangeTimingPropertyType, *(yyvsp[0].error_list));
2580 DELETE_TOKEN((yyvsp[0].error_list));
2581 }
2582
2583 break;
2584
2585 case 96:
2586
2587 {
2588 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Preferr edDisplayModePropertyType, *(yyvsp[0].error_list));
2589 DELETE_TOKEN((yyvsp[0].error_list));
2590 }
2591
2592 break;
2593
2594 case 97:
2595
2596 {
2597 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::UIBCCap abilityPropertyType, *(yyvsp[0].error_list));
2598 DELETE_TOKEN((yyvsp[0].error_list));
2599 }
2600
2601 break;
2602
2603 case 98:
2604
2605 {
2606 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::UIBCSet tingPropertyType, *(yyvsp[0].error_list));
2607 DELETE_TOKEN((yyvsp[0].error_list));
2608 }
2609
2610 break;
2611
2612 case 99:
2613
2614 {
2615 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Standby ResumeCapabilityPropertyType, *(yyvsp[0].error_list));
2616 DELETE_TOKEN((yyvsp[0].error_list));
2617 }
2618
2619 break;
2620
2621 case 100:
2622
2623 {
2624 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::Connect orTypePropertyType, *(yyvsp[0].error_list));
2625 DELETE_TOKEN((yyvsp[0].error_list));
2626 }
2627
2628 break;
2629
2630 case 101:
2631
2632 {
2633 (yyval.property_errors) = new wds::rtsp::PropertyErrors(wds::rtsp::IDRRequ estPropertyType, *(yyvsp[0].error_list));
2634 DELETE_TOKEN((yyvsp[0].error_list));
2635 }
2636
2637 break;
2638
2639 case 102:
2640
2641 {
2642 (yyval.property_errors) = new wds::rtsp::PropertyErrors(*(yyvsp[-3].sval), *(yyvsp[0].error_list));
2643 DELETE_TOKEN((yyvsp[-3].sval));
2644 DELETE_TOKEN((yyvsp[0].error_list));
2645 }
2646
2647 break;
2648
2649 case 103:
2650
2651 {
2652 (yyval.mpayload) = new wds::rtsp::PropertyErrorPayload();
2653 ToPropertyErrorPayload((yyval.mpayload))->AddPropertyError(std::shared_ptr <wds::rtsp::PropertyErrors>((yyvsp[0].property_errors)));
2654 }
2655
2656 break;
2657
2658 case 104:
2659
2660 {
2661 if (auto payload = ToPropertyErrorPayload((yyvsp[-1].mpayload)))
2662 payload->AddPropertyError(std::shared_ptr<wds::rtsp::PropertyErrors>((yy vsp[0].property_errors)));
2663 else
2664 YYERROR;
2665 }
2666
2667 break;
2668
2669 case 105:
2670
2671 {
2672 (yyval.mpayload) = new wds::rtsp::PropertyMapPayload();
2673 ToPropertyMapPayload((yyval.mpayload))->AddProperty(std::shared_ptr<wds::r tsp::Property>((yyvsp[0].property)));
2674 }
2675
2676 break;
2677
2678 case 106:
2679
2680 {
2681 if (auto payload = ToPropertyMapPayload((yyvsp[-1].mpayload)))
2682 payload->AddProperty(std::shared_ptr<wds::rtsp::Property>((yyvsp[0].prop erty)));
2683 else
2684 YYERROR;
2685 }
2686
2687 break;
2688
2689 case 124:
2690
2691 {
2692 (yyval.property) = new wds::rtsp::Standby();
2693 }
2694
2695 break;
2696
2697 case 125:
2698
2699 {
2700 (yyval.property) = new wds::rtsp::IDRRequest();
2701 }
2702
2703 break;
2704
2705 case 126:
2706
2707 {
2708 (yyval.property) = new wds::rtsp::GenericProperty(*(yyvsp[-1].sval), *(yyv sp[0].sval));
2709 DELETE_TOKEN((yyvsp[-1].sval));
2710 DELETE_TOKEN((yyvsp[0].sval));
2711 }
2712
2713 break;
2714
2715 case 127:
2716
2717 {
2718 (yyval.property) = new wds::rtsp::AudioCodecs(*(yyvsp[0].audio_codecs));
2719 DELETE_TOKEN((yyvsp[0].audio_codecs));
2720 }
2721
2722 break;
2723
2724 case 128:
2725
2726 {
2727 (yyval.property) = new wds::rtsp::AudioCodecs();
2728 }
2729
2730 break;
2731
2732 case 129:
2733
2734 {
2735 (yyval.audio_codecs) = new std::vector<wds::AudioCodec>();
2736 (yyval.audio_codecs)->push_back(*(yyvsp[0].audio_codec));
2737 DELETE_TOKEN((yyvsp[0].audio_codec));
2738 }
2739
2740 break;
2741
2742 case 130:
2743
2744 {
2745 UNUSED_TOKEN((yyval.audio_codecs));
2746 (yyvsp[-3].audio_codecs)->push_back(*(yyvsp[0].audio_codec));
2747 DELETE_TOKEN((yyvsp[0].audio_codec));
2748 }
2749
2750 break;
2751
2752 case 131:
2753
2754 {
2755 (yyval.audio_codec) = new wds::AudioCodec((yyvsp[-4].audio_format), (yyvsp[- 2].nval), (yyvsp[0].nval));
2756 }
2757
2758 break;
2759
2760 case 132:
2761
2762 { (yyval.audio_format) = wds::LPCM; }
2763
2764 break;
2765
2766 case 133:
2767
2768 { (yyval.audio_format) = wds::AAC; }
2769
2770 break;
2771
2772 case 134:
2773
2774 { (yyval.audio_format) = wds::AC3; }
2775
2776 break;
2777
2778 case 135:
2779
2780 {
2781 (yyval.property) = new wds::rtsp::VideoFormats();
2782 }
2783
2784 break;
2785
2786 case 136:
2787
2788 {
2789 (yyval.property) = new wds::rtsp::VideoFormats((yyvsp[-4].nval), (yyvsp[-2 ].nval), *(yyvsp[0].codecs));
2790 DELETE_TOKEN((yyvsp[0].codecs));
2791 }
2792
2793 break;
2794
2795 case 137:
2796
2797 {
2798 (yyval.codecs) = new wds::rtsp::H264Codecs();
2799 (yyval.codecs)->push_back(*(yyvsp[0].codec));
2800 DELETE_TOKEN((yyvsp[0].codec));
2801 }
2802
2803 break;
2804
2805 case 138:
2806
2807 {
2808 UNUSED_TOKEN((yyval.codecs));
2809 (yyvsp[-4].codecs)->push_back(*(yyvsp[0].codec));
2810 DELETE_TOKEN((yyvsp[0].codec));
2811 }
2812
2813 break;
2814
2815 case 139:
2816
2817 {
2818 (yyval.codec) = new wds::rtsp::H264Codec((yyvsp[-20].nval), (yyvsp[-18].nv al), (yyvsp[-16].nval), (yyvsp[-14].nval), (yyvsp[-12].nval), (yyvsp[-10].nval), (yyvsp[-8].nval), (yyvsp[-6].nval), (yyvsp[-4].nval), (yyvsp[-2].nval), (yyvsp[ 0].nval));
2819 }
2820
2821 break;
2822
2823 case 140:
2824
2825 {
2826 (yyval.codecs_3d) = new wds::rtsp::H264Codecs3d();
2827 (yyval.codecs_3d)->push_back(*(yyvsp[0].codec_3d));
2828 DELETE_TOKEN((yyvsp[0].codec_3d));
2829 }
2830
2831 break;
2832
2833 case 141:
2834
2835 {
2836 UNUSED_TOKEN((yyval.codecs_3d));
2837 (yyvsp[-4].codecs_3d)->push_back(*(yyvsp[0].codec_3d));
2838 DELETE_TOKEN((yyvsp[0].codec_3d));
2839 }
2840
2841 break;
2842
2843 case 142:
2844
2845 {
2846 (yyval.codec_3d) = new wds::rtsp::H264Codec3d((yyvsp[-16].nval), (yyvsp[-1 4].nval), (yyvsp[-12].nval), (yyvsp[-10].nval), (yyvsp[-8].nval), (yyvsp[-6].nva l), (yyvsp[-4].nval), (yyvsp[-2].nval), (yyvsp[0].nval));
2847 }
2848
2849 break;
2850
2851 case 143:
2852
2853 {
2854 (yyval.nval) = 0;
2855 }
2856
2857 break;
2858
2859 case 145:
2860
2861 {
2862 (yyval.nval) = 0;
2863 }
2864
2865 break;
2866
2867 case 147:
2868
2869 {
2870 (yyval.property) = new wds::rtsp::Formats3d((yyvsp[-4].nval), (yyvsp[-2].n val), *(yyvsp[0].codecs_3d));
2871 DELETE_TOKEN((yyvsp[0].codecs_3d));
2872 }
2873
2874 break;
2875
2876 case 148:
2877
2878 {
2879 (yyval.property) = new wds::rtsp::Formats3d();
2880 }
2881
2882 break;
2883
2884 case 149:
2885
2886 {
2887 (yyval.property) = new wds::rtsp::ContentProtection();
2888 }
2889
2890 break;
2891
2892 case 150:
2893
2894 {
2895 (yyval.property) = new wds::rtsp::ContentProtection((yyvsp[-3].hdcp_spec), (yyvsp[0].nval));
2896 }
2897
2898 break;
2899
2900 case 151:
2901
2902 {
2903 (yyval.hdcp_spec) = wds::rtsp::ContentProtection::HDCP_SPEC_2_0;
2904 }
2905
2906 break;
2907
2908 case 152:
2909
2910 {
2911 (yyval.hdcp_spec) = wds::rtsp::ContentProtection::HDCP_SPEC_2_1;
2912 }
2913
2914 break;
2915
2916 case 153:
2917
2918 {
2919 (yyval.property) = new wds::rtsp::DisplayEdid();
2920 }
2921
2922 break;
2923
2924 case 154:
2925
2926 {
2927 (yyval.property) = new wds::rtsp::DisplayEdid((yyvsp[-2].nval), (yyvsp[0]. sval) ? *(yyvsp[0].sval) : "");
2928 DELETE_TOKEN((yyvsp[0].sval));
2929 }
2930
2931 break;
2932
2933 case 155:
2934
2935 {
2936 (yyval.sval) = 0;
2937 }
2938
2939 break;
2940
2941 case 157:
2942
2943 {
2944 (yyval.property) = new wds::rtsp::CoupledSink();
2945 }
2946
2947 break;
2948
2949 case 158:
2950
2951 {
2952 (yyval.property) = new wds::rtsp::CoupledSink((yyvsp[-2].nval), (yyvsp[0]. nval));
2953 }
2954
2955 break;
2956
2957 case 159:
2958
2959 {
2960 (yyval.nval) = -1;
2961 }
2962
2963 break;
2964
2965 case 161:
2966
2967 {
2968 (yyval.property) = new wds::rtsp::TriggerMethod((yyvsp[0].trigger_method)) ;
2969 }
2970
2971 break;
2972
2973 case 162:
2974
2975 {
2976 (yyval.trigger_method) = wds::rtsp::TriggerMethod::SETUP;
2977 }
2978
2979 break;
2980
2981 case 163:
2982
2983 {
2984 (yyval.trigger_method) = wds::rtsp::TriggerMethod::PAUSE;
2985 }
2986
2987 break;
2988
2989 case 164:
2990
2991 {
2992 (yyval.trigger_method) = wds::rtsp::TriggerMethod::TEARDOWN;
2993 }
2994
2995 break;
2996
2997 case 165:
2998
2999 {
3000 (yyval.trigger_method) = wds::rtsp::TriggerMethod::PLAY;
3001 }
3002
3003 break;
3004
3005 case 166:
3006
3007 {
3008 (yyval.property) = new wds::rtsp::PresentationUrl((yyvsp[-2].sval) ? *(yyv sp[-2].sval) : "", (yyvsp[0].sval) ? *(yyvsp[0].sval) : "");
3009 DELETE_TOKEN((yyvsp[-2].sval));
3010 DELETE_TOKEN((yyvsp[0].sval));
3011 }
3012
3013 break;
3014
3015 case 167:
3016
3017 {
3018 (yyval.sval) = 0;
3019 }
3020
3021 break;
3022
3023 case 169:
3024
3025 {
3026 (yyval.sval) = 0;
3027 }
3028
3029 break;
3030
3031 case 171:
3032
3033 {
3034 (yyval.property) = new wds::rtsp::ClientRtpPorts((yyvsp[-4].nval), (yyvsp[ -2].nval));
3035 }
3036
3037 break;
3038
3039 case 172:
3040
3041 {
3042 (yyval.property) = new wds::rtsp::Route((yyvsp[0].route_destination));
3043 }
3044
3045 break;
3046
3047 case 173:
3048
3049 {
3050 (yyval.route_destination) = wds::rtsp::Route::PRIMARY;
3051 }
3052
3053 break;
3054
3055 case 174:
3056
3057 {
3058 (yyval.route_destination) = wds::rtsp::Route::SECONDARY;
3059 }
3060
3061 break;
3062
3063 case 175:
3064
3065 {
3066 (yyval.property) = new wds::rtsp::I2C((yyvsp[0].nval));
3067 }
3068
3069 break;
3070
3071 case 176:
3072
3073 {
3074 (yyval.nval) = -1;
3075 }
3076
3077 break;
3078
3079 case 178:
3080
3081 {
3082 (yyval.property) = new wds::rtsp::AVFormatChangeTiming((yyvsp[-2].nval), ( yyvsp[0].nval));
3083 }
3084
3085 break;
3086
3087 case 179:
3088
3089 {
3090 (yyval.property) = new wds::rtsp::PreferredDisplayMode((yyvsp[-24].nval), (yyvsp[-22].nval), (yyvsp[-20].nval), (yyvsp[-18].nval), (yyvsp[-16].nval), (yyv sp[-14].nval), (yyvsp[-12].nval), (yyvsp[-10].nval), (yyvsp[-8].nval), (yyvsp[-6 ].nval), (yyvsp[-4].nval), (yyvsp[-2].nval), *(yyvsp[0].codec));
3091 DELETE_TOKEN((yyvsp[0].codec));
3092 }
3093
3094 break;
3095
3096 case 180:
3097
3098 {
3099 (yyval.property) = new wds::rtsp::UIBCCapability();
3100 }
3101
3102 break;
3103
3104 case 181:
3105
3106 {
3107 (yyval.property) = new wds::rtsp::UIBCCapability(*(yyvsp[-7].input_categor y_list), *(yyvsp[-5].generic_cap_list), *(yyvsp[-3].hidc_cap_list), (yyvsp[0].nv al));
3108 DELETE_TOKEN((yyvsp[-7].input_category_list));
3109 DELETE_TOKEN((yyvsp[-5].generic_cap_list));
3110 DELETE_TOKEN((yyvsp[-3].hidc_cap_list));
3111 }
3112
3113 break;
3114
3115 case 182:
3116
3117 {
3118 (yyval.input_category_list) = (yyvsp[0].input_category_list);
3119 }
3120
3121 break;
3122
3123 case 183:
3124
3125 {
3126 (yyval.input_category_list) = new std::vector<wds::rtsp::UIBCCapability::I nputCategory>();
3127 }
3128
3129 break;
3130
3131 case 184:
3132
3133 {
3134 (yyval.input_category_list) = new std::vector<wds::rtsp::UIBCCapability::I nputCategory>();
3135 (yyval.input_category_list)->push_back((yyvsp[0].input_category_list_value ));
3136 }
3137
3138 break;
3139
3140 case 185:
3141
3142 {
3143 (yyvsp[-3].input_category_list)->push_back((yyvsp[0].input_category_list_v alue));
3144 }
3145
3146 break;
3147
3148 case 186:
3149
3150 {
3151 (yyval.input_category_list_value) = wds::rtsp::UIBCCapability::GENERIC;
3152 }
3153
3154 break;
3155
3156 case 187:
3157
3158 {
3159 (yyval.input_category_list_value) = wds::rtsp::UIBCCapability::HIDC;
3160 }
3161
3162 break;
3163
3164 case 188:
3165
3166 {
3167 (yyval.generic_cap_list) = (yyvsp[0].generic_cap_list);
3168 }
3169
3170 break;
3171
3172 case 189:
3173
3174 {
3175 (yyval.generic_cap_list) = new std::vector<wds::rtsp::UIBCCapability::Inpu tType>();
3176 }
3177
3178 break;
3179
3180 case 190:
3181
3182 {
3183 (yyval.generic_cap_list) = new std::vector<wds::rtsp::UIBCCapability::Inpu tType>();
3184 (yyval.generic_cap_list)->push_back((yyvsp[0].generic_cap_list_value));
3185 }
3186
3187 break;
3188
3189 case 191:
3190
3191 {
3192 (yyvsp[-3].generic_cap_list)->push_back((yyvsp[0].generic_cap_list_value)) ;
3193 }
3194
3195 break;
3196
3197 case 192:
3198
3199 {
3200 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::KEYBOARD;
3201 }
3202
3203 break;
3204
3205 case 193:
3206
3207 {
3208 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::MOUSE;
3209 }
3210
3211 break;
3212
3213 case 194:
3214
3215 {
3216 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::SINGLE_TOUCH;
3217 }
3218
3219 break;
3220
3221 case 195:
3222
3223 {
3224 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::MULTI_TOUCH;
3225 }
3226
3227 break;
3228
3229 case 196:
3230
3231 {
3232 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::JOYSTICK;
3233 }
3234
3235 break;
3236
3237 case 197:
3238
3239 {
3240 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::CAMERA;
3241 }
3242
3243 break;
3244
3245 case 198:
3246
3247 {
3248 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::GESTURE;
3249 }
3250
3251 break;
3252
3253 case 199:
3254
3255 {
3256 (yyval.generic_cap_list_value) = wds::rtsp::UIBCCapability::REMOTE_CONTROL ;
3257 }
3258
3259 break;
3260
3261 case 200:
3262
3263 {
3264 (yyval.hidc_cap_list) = (yyvsp[0].hidc_cap_list);
3265 }
3266
3267 break;
3268
3269 case 201:
3270
3271 {
3272 (yyval.hidc_cap_list) = new std::vector<wds::rtsp::UIBCCapability::Detaile dCapability>();
3273 }
3274
3275 break;
3276
3277 case 202:
3278
3279 {
3280 (yyval.hidc_cap_list) = new std::vector<wds::rtsp::UIBCCapability::Detaile dCapability>();
3281 (yyval.hidc_cap_list)->push_back(*(yyvsp[0].hidc_cap_list_value));
3282 DELETE_TOKEN((yyvsp[0].hidc_cap_list_value));
3283 }
3284
3285 break;
3286
3287 case 203:
3288
3289 {
3290 (yyvsp[-3].hidc_cap_list)->push_back(*(yyvsp[0].hidc_cap_list_value));
3291 DELETE_TOKEN((yyvsp[0].hidc_cap_list_value));
3292 }
3293
3294 break;
3295
3296 case 204:
3297
3298 {
3299 (yyval.hidc_cap_list_value) = new wds::rtsp::UIBCCapability::DetailedCapab ility((yyvsp[-2].generic_cap_list_value), (yyvsp[0].input_path));
3300 }
3301
3302 break;
3303
3304 case 205:
3305
3306 {
3307 (yyval.input_path) = wds::rtsp::UIBCCapability::INFRARED;
3308 }
3309
3310 break;
3311
3312 case 206:
3313
3314 {
3315 (yyval.input_path) = wds::rtsp::UIBCCapability::USB;
3316 }
3317
3318 break;
3319
3320 case 207:
3321
3322 {
3323 (yyval.input_path) = wds::rtsp::UIBCCapability::BT;
3324 }
3325
3326 break;
3327
3328 case 208:
3329
3330 {
3331 (yyval.input_path) = wds::rtsp::UIBCCapability::ZIGBEE;
3332 }
3333
3334 break;
3335
3336 case 209:
3337
3338 {
3339 (yyval.input_path) = wds::rtsp::UIBCCapability::WI_FI;
3340 }
3341
3342 break;
3343
3344 case 210:
3345
3346 {
3347 (yyval.input_path) = wds::rtsp::UIBCCapability::NO_SP;
3348 }
3349
3350 break;
3351
3352 case 211:
3353
3354 {
3355 (yyval.property) = new wds::rtsp::UIBCSetting((yyvsp[0].uibc_setting));
3356 }
3357
3358 break;
3359
3360 case 212:
3361
3362 {
3363 (yyval.uibc_setting) = true;
3364 }
3365
3366 break;
3367
3368 case 213:
3369
3370 {
3371 (yyval.uibc_setting) = false;
3372 }
3373
3374 break;
3375
3376 case 214:
3377
3378 {
3379 (yyval.property) = new wds::rtsp::StandbyResumeCapability((yyvsp[0].bool_v al));
3380 }
3381
3382 break;
3383
3384 case 215:
3385
3386 {
3387 (yyval.bool_val) = false;
3388 }
3389
3390 break;
3391
3392 case 216:
3393
3394 {
3395 (yyval.bool_val) = true;
3396 }
3397
3398 break;
3399
3400 case 217:
3401
3402 {
3403 (yyval.property) = new wds::rtsp::ConnectorType((yyvsp[0].nval));
3404 }
3405
3406 break;
3407
3408 case 218:
3409
3410 {
3411 (yyval.property) = new wds::rtsp::ConnectorType();
3412 }
3413
3414 break;
3415
3416
3417
3418 default: break;
3419 }
3420 /* User semantic actions sometimes alter yychar, and that requires
3421 that yytoken be updated with the new translation. We take the
3422 approach of translating immediately before every use of yytoken.
3423 One alternative is translating here after every semantic action,
3424 but that translation would be missed if the semantic action invokes
3425 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3426 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3427 incorrect destructor might then be invoked immediately. In the
3428 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3429 to an incorrect destructor call or verbose syntax error message
3430 before the lookahead is translated. */
3431 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3432
3433 YYPOPSTACK (yylen);
3434 yylen = 0;
3435 YY_STACK_PRINT (yyss, yyssp);
3436
3437 *++yyvsp = yyval;
3438
3439 /* Now 'shift' the result of the reduction. Determine what state
3440 that goes to, based on the state we popped back to and the rule
3441 number reduced by. */
3442
3443 yyn = yyr1[yyn];
3444
3445 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3446 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3447 yystate = yytable[yystate];
3448 else
3449 yystate = yydefgoto[yyn - YYNTOKENS];
3450
3451 goto yynewstate;
3452
3453
3454 /*--------------------------------------.
3455 | yyerrlab -- here on detecting error. |
3456 `--------------------------------------*/
3457 yyerrlab:
3458 /* Make sure we have latest lookahead translation. See comments at
3459 user semantic actions for why this is necessary. */
3460 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3461
3462 /* If not already recovering from an error, report this error. */
3463 if (!yyerrstatus)
3464 {
3465 ++yynerrs;
3466 #if ! YYERROR_VERBOSE
3467 yyerror (scanner, message, YY_("syntax error"));
3468 #else
3469 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3470 yyssp, yytoken)
3471 {
3472 char const *yymsgp = YY_("syntax error");
3473 int yysyntax_error_status;
3474 yysyntax_error_status = YYSYNTAX_ERROR;
3475 if (yysyntax_error_status == 0)
3476 yymsgp = yymsg;
3477 else if (yysyntax_error_status == 1)
3478 {
3479 if (yymsg != yymsgbuf)
3480 YYSTACK_FREE (yymsg);
3481 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
3482 if (!yymsg)
3483 {
3484 yymsg = yymsgbuf;
3485 yymsg_alloc = sizeof yymsgbuf;
3486 yysyntax_error_status = 2;
3487 }
3488 else
3489 {
3490 yysyntax_error_status = YYSYNTAX_ERROR;
3491 yymsgp = yymsg;
3492 }
3493 }
3494 yyerror (scanner, message, yymsgp);
3495 if (yysyntax_error_status == 2)
3496 goto yyexhaustedlab;
3497 }
3498 # undef YYSYNTAX_ERROR
3499 #endif
3500 }
3501
3502
3503
3504 if (yyerrstatus == 3)
3505 {
3506 /* If just tried and failed to reuse lookahead token after an
3507 error, discard it. */
3508
3509 if (yychar <= YYEOF)
3510 {
3511 /* Return failure if at end of input. */
3512 if (yychar == YYEOF)
3513 YYABORT;
3514 }
3515 else
3516 {
3517 yydestruct ("Error: discarding",
3518 yytoken, &yylval, scanner, message);
3519 yychar = YYEMPTY;
3520 }
3521 }
3522
3523 /* Else will try to reuse lookahead token after shifting the error
3524 token. */
3525 goto yyerrlab1;
3526
3527
3528 /*---------------------------------------------------.
3529 | yyerrorlab -- error raised explicitly by YYERROR. |
3530 `---------------------------------------------------*/
3531 yyerrorlab:
3532
3533 /* Pacify compilers like GCC when the user code never invokes
3534 YYERROR and the label yyerrorlab therefore never appears in user
3535 code. */
3536 if (/*CONSTCOND*/ 0)
3537 goto yyerrorlab;
3538
3539 /* Do not reclaim the symbols of the rule whose action triggered
3540 this YYERROR. */
3541 YYPOPSTACK (yylen);
3542 yylen = 0;
3543 YY_STACK_PRINT (yyss, yyssp);
3544 yystate = *yyssp;
3545 goto yyerrlab1;
3546
3547
3548 /*-------------------------------------------------------------.
3549 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3550 `-------------------------------------------------------------*/
3551 yyerrlab1:
3552 yyerrstatus = 3; /* Each real token shifted decrements this. */
3553
3554 for (;;)
3555 {
3556 yyn = yypact[yystate];
3557 if (!yypact_value_is_default (yyn))
3558 {
3559 yyn += YYTERROR;
3560 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3561 {
3562 yyn = yytable[yyn];
3563 if (0 < yyn)
3564 break;
3565 }
3566 }
3567
3568 /* Pop the current state because it cannot handle the error token. */
3569 if (yyssp == yyss)
3570 YYABORT;
3571
3572
3573 yydestruct ("Error: popping",
3574 yystos[yystate], yyvsp, scanner, message);
3575 YYPOPSTACK (1);
3576 yystate = *yyssp;
3577 YY_STACK_PRINT (yyss, yyssp);
3578 }
3579
3580 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3581 *++yyvsp = yylval;
3582 YY_IGNORE_MAYBE_UNINITIALIZED_END
3583
3584
3585 /* Shift the error token. */
3586 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3587
3588 yystate = yyn;
3589 goto yynewstate;
3590
3591
3592 /*-------------------------------------.
3593 | yyacceptlab -- YYACCEPT comes here. |
3594 `-------------------------------------*/
3595 yyacceptlab:
3596 yyresult = 0;
3597 goto yyreturn;
3598
3599 /*-----------------------------------.
3600 | yyabortlab -- YYABORT comes here. |
3601 `-----------------------------------*/
3602 yyabortlab:
3603 yyresult = 1;
3604 goto yyreturn;
3605
3606 #if !defined yyoverflow || YYERROR_VERBOSE
3607 /*-------------------------------------------------.
3608 | yyexhaustedlab -- memory exhaustion comes here. |
3609 `-------------------------------------------------*/
3610 yyexhaustedlab:
3611 yyerror (scanner, message, YY_("memory exhausted"));
3612 yyresult = 2;
3613 /* Fall through. */
3614 #endif
3615
3616 yyreturn:
3617 if (yychar != YYEMPTY)
3618 {
3619 /* Make sure we have latest lookahead translation. See comments at
3620 user semantic actions for why this is necessary. */
3621 yytoken = YYTRANSLATE (yychar);
3622 yydestruct ("Cleanup: discarding lookahead",
3623 yytoken, &yylval, scanner, message);
3624 }
3625 /* Do not reclaim the symbols of the rule whose action triggered
3626 this YYABORT or YYACCEPT. */
3627 YYPOPSTACK (yylen);
3628 YY_STACK_PRINT (yyss, yyssp);
3629 while (yyssp != yyss)
3630 {
3631 yydestruct ("Cleanup: popping",
3632 yystos[*yyssp], yyvsp, scanner, message);
3633 YYPOPSTACK (1);
3634 }
3635 #ifndef yyoverflow
3636 if (yyss != yyssa)
3637 YYSTACK_FREE (yyss);
3638 #endif
3639 #if YYERROR_VERBOSE
3640 if (yymsg != yymsgbuf)
3641 YYSTACK_FREE (yymsg);
3642 #endif
3643 return yyresult;
3644 }
3645
3646
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698