// Path: src/main/java/org/dmfs/rfc5545/recur/RecurrenceRule.java
// public enum Skip
// {
//     /**
//      * OMIT is the default value. It means that non-existing dates are just ignored.
//      */
//     OMIT,
// 
//     /**
//      * BACKWARD means that non-existing instanced get rolled back to the previous day (for leap days) or month (for leap months).
//      */
//     BACKWARD,
// 
//     /**
//      * FORWARD means that non-existing instanced get rolled forward to the next day (for leap days) or month (for leap months).
//      */
//     FORWARD;
// }


import org.dmfs.rfc5545.Instance;
import org.dmfs.rfc5545.calendarmetrics.CalendarMetrics;
import org.dmfs.rfc5545.recur.RecurrenceRule.Skip;
/*
 * Copyright (C) 2015 Marten Gajda <marten@dmfs.org>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */

package org.dmfs.rfc5545.recur;



/**
 * A filter that ensures invalid month numbers are skipped.
 *
 * @author Marten Gajda
 */
final class ByMonthSkipFilter extends RuleIterator
{
    /**
     * Stop iterating (throwing an exception) if this number of empty sets passed in a line, i.e. sets that contain no elements because they have been filtered
     * or nothing was expanded.
     */
    private final static int MAX_EMPTY_SETS = 1000;

    private final CalendarMetrics mCalendarMetrics;
// Path: src/main/java/org/dmfs/rfc5545/recur/RecurrenceRule.java
// public enum Skip
// {
//     /**
//      * OMIT is the default value. It means that non-existing dates are just ignored.
//      */
//     OMIT,
// 
//     /**
//      * BACKWARD means that non-existing instanced get rolled back to the previous day (for leap days) or month (for leap months).
//      */
//     BACKWARD,
// 
//     /**
//      * FORWARD means that non-existing instanced get rolled forward to the next day (for leap days) or month (for leap months).
//      */
//     FORWARD;
// }


// Path: src/main/java/org/dmfs/rfc5545/recur/ByMonthSkipFilter.java
import org.dmfs.rfc5545.Instance;
import org.dmfs.rfc5545.calendarmetrics.CalendarMetrics;
import org.dmfs.rfc5545.recur.RecurrenceRule.Skip;

/*
 * Copyright (C) 2015 Marten Gajda <marten@dmfs.org>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */

package org.dmfs.rfc5545.recur;



/**
 * A filter that ensures invalid month numbers are skipped.
 *
 * @author Marten Gajda
 */
final class ByMonthSkipFilter extends RuleIterator
{
    /**
     * Stop iterating (throwing an exception) if this number of empty sets passed in a line, i.e. sets that contain no elements because they have been filtered
     * or nothing was expanded.
     */
    private final static int MAX_EMPTY_SETS = 1000;

    private final CalendarMetrics mCalendarMetrics;
    private final Skip mSkip;