File indexing completed on 2024-04-14 03:52:09

0001 /*
0002     This file is part of the kholidays library.
0003 
0004     SPDX-FileCopyrightText: 2010 John Layt <john@layt.net>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #ifndef KHOLIDAYS_HOLIDAYSCANNERPLAN_P_H
0010 #define KHOLIDAYS_HOLIDAYSCANNERPLAN_P_H
0011 
0012 // Flex expects the signature of yylex to be defined in the macro YY_DECL, and
0013 // the C++ parser expects it to be declared. We can factor both as follows.
0014 
0015 #ifndef YY_DECL
0016 
0017 #define YY_DECL                                                                                                                                                \
0018     KHolidays::HolidayParserPlan::token_type KHolidays::HolidayScannerPlan::lex(KHolidays::HolidayParserPlan::semantic_type *yylval,                           \
0019                                                                                 KHolidays::HolidayParserPlan::location_type *yylloc)
0020 #endif
0021 
0022 #ifndef __FLEX_LEXER_H
0023 #define yyFlexLexer HolidayScannerFlexLexer
0024 #include "FlexLexer.h"
0025 #undef yyFlexLexer
0026 #endif
0027 
0028 #include "holidayparserplan.hpp"
0029 
0030 namespace KHolidays
0031 {
0032 /**
0033  * HolidayScannerPlan implementation class
0034  *
0035  * Implements the flex scanner for scanning Plan holiday files as
0036  * implemented in KDE SC 4.5 onwards.  This includes extensions to the file
0037  * format to support non-Gregorian calendar systems, metadata, and other new
0038  * features.
0039  *
0040  * Implemented using Flex C++ mode, based on the example at
0041  * https://panthema.net/2007/flex-bison-cpp-example/ which is released to Public Domain.
0042  *
0043  * @internal Private, for internal use only
0044  */
0045 
0046 class HolidayScannerPlan : public HolidayScannerFlexLexer
0047 {
0048 public:
0049     explicit HolidayScannerPlan(std::istream *arg_yyin = nullptr, std::ostream *arg_yyout = nullptr);
0050 
0051     ~HolidayScannerPlan() override;
0052 
0053     virtual HolidayParserPlan::token_type lex(HolidayParserPlan::semantic_type *yylval, HolidayParserPlan::location_type *yylloc);
0054 
0055     void set_debug(bool b);
0056 };
0057 
0058 } // namespace KHolidays
0059 
0060 #endif // KHOLIDAYS_HOLIDAYSCANNERPLAN_P_H