晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/opt/alt/libicu65/usr/include/unicode/
Upload File :
Current File : //opt/alt/libicu65/usr/include/unicode/dtrule.h
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
*******************************************************************************
* Copyright (C) 2007-2008, International Business Machines Corporation and         *
* others. All Rights Reserved.                                                *
*******************************************************************************
*/
#ifndef DTRULE_H
#define DTRULE_H

#include "unicode/utypes.h"

#if U_SHOW_CPLUSPLUS_API

/**
 * \file 
 * \brief C++ API: Rule for specifying date and time in an year
 */

#if !UCONFIG_NO_FORMATTING

#include "unicode/uobject.h"

U_NAMESPACE_BEGIN
/**
 * <code>DateTimeRule</code> is a class representing a time in a year by
 * a rule specified by month, day of month, day of week and
 * time in the day.
 * 
 * @stable ICU 3.8
 */
class U_I18N_API DateTimeRule : public UObject {
public:

    /**
     * Date rule type constants.
     * @stable ICU 3.8
     */
    enum DateRuleType {
        DOM = 0,        /**< The exact day of month,
                             for example, March 11. */
        DOW,            /**< The Nth occurence of the day of week,
                             for example, 2nd Sunday in March. */
        DOW_GEQ_DOM,    /**< The first occurence of the day of week on or after the day of monnth,
                             for example, first Sunday on or after March 8. */
        DOW_LEQ_DOM     /**< The last occurence of the day of week on or before the day of month,
                             for example, first Sunday on or before March 14. */
    };

    /**
     * Time rule type constants.
     * @stable ICU 3.8
     */
    enum TimeRuleType {
        WALL_TIME = 0,  /**< The local wall clock time */
        STANDARD_TIME,  /**< The local standard time */
        UTC_TIME        /**< The UTC time */
    };

    /**
     * Constructs a <code>DateTimeRule</code> by the day of month and
     * the time rule.  The date rule type for an instance created by
     * this constructor is <code>DOM</code>.
     * 
     * @param month         The rule month, for example, <code>Calendar::JANUARY</code>
     * @param dayOfMonth    The day of month, 1-based.
     * @param millisInDay   The milliseconds in the rule date.
     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
     *                      or <code>UTC_TIME</code>.
     * @stable ICU 3.8
     */
    DateTimeRule(int32_t month, int32_t dayOfMonth,
        int32_t millisInDay, TimeRuleType timeType);

    /**
     * Constructs a <code>DateTimeRule</code> by the day of week and its oridinal
     * number and the time rule.  The date rule type for an instance created
     * by this constructor is <code>DOW</code>.
     * 
     * @param month         The rule month, for example, <code>Calendar::JANUARY</code>.
     * @param weekInMonth   The ordinal number of the day of week.  Negative number
     *                      may be used for specifying a rule date counted from the
     *                      end of the rule month.
     * @param dayOfWeek     The day of week, for example, <code>Calendar::SUNDAY</code>.
     * @param millisInDay   The milliseconds in the rule date.
     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
     *                      or <code>UTC_TIME</code>.
     * @stable ICU 3.8
     */
    DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek,
        int32_t millisInDay, TimeRuleType timeType);

    /**
     * Constructs a <code>DateTimeRule</code> by the first/last day of week
     * on or after/before the day of month and the time rule.  The date rule
     * type for an instance created by this constructor is either
     * <code>DOM_GEQ_DOM</code> or <code>DOM_LEQ_DOM</code>.
     * 
     * @param month         The rule month, for example, <code>Calendar::JANUARY</code>
     * @param dayOfMonth    The day of month, 1-based.
     * @param dayOfWeek     The day of week, for example, <code>Calendar::SUNDAY</code>.
     * @param after         true if the rule date is on or after the day of month.
     * @param millisInDay   The milliseconds in the rule date.
     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
     *                      or <code>UTC_TIME</code>.
     * @stable ICU 3.8
     */
    DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after,
        int32_t millisInDay, TimeRuleType timeType);

    /**
     * Copy constructor.
     * @param source    The DateTimeRule object to be copied.
     * @stable ICU 3.8
     */
    DateTimeRule(const DateTimeRule& source);

    /**
     * Destructor.
     * @stable ICU 3.8
     */
    ~DateTimeRule();

    /**
     * Clone this DateTimeRule object polymorphically. The caller owns the result and
     * should delete it when done.
     * @return    A copy of the object.
     * @stable ICU 3.8
     */
    DateTimeRule* clone() const;

    /**
     * Assignment operator.
     * @param right The object to be copied.
     * @stable ICU 3.8
     */
    DateTimeRule& operator=(const DateTimeRule& right);

    /**
     * Return true if the given DateTimeRule objects are semantically equal. Objects
     * of different subclasses are considered unequal.
     * @param that  The object to be compared with.
     * @return  true if the given DateTimeRule objects are semantically equal.
     * @stable ICU 3.8
     */
    UBool operator==(const DateTimeRule& that) const;

    /**
     * Return true if the given DateTimeRule objects are semantically unequal. Objects
     * of different subclasses are considered unequal.
     * @param that  The object to be compared with.
     * @return  true if the given DateTimeRule objects are semantically unequal.
     * @stable ICU 3.8
     */
    UBool operator!=(const DateTimeRule& that) const;

    /**
     * Gets the date rule type, such as <code>DOM</code>
     * @return The date rule type.
     * @stable ICU 3.8
     */
    DateRuleType getDateRuleType(void) const;

    /**
     * Gets the time rule type
     * @return The time rule type, either <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
     *         or <code>UTC_TIME</code>.
     * @stable ICU 3.8
     */
    TimeRuleType getTimeRuleType(void) const;

    /**
     * Gets the rule month.
     * @return The rule month.
     * @stable ICU 3.8
     */
    int32_t getRuleMonth(void) const;

    /**
     * Gets the rule day of month.  When the date rule type
     * is <code>DOW</code>, the value is always 0.
     * @return The rule day of month
     * @stable ICU 3.8
     */
    int32_t getRuleDayOfMonth(void) const;

    /**
     * Gets the rule day of week.  When the date rule type
     * is <code>DOM</code>, the value is always 0.
     * @return The rule day of week.
     * @stable ICU 3.8
     */
    int32_t getRuleDayOfWeek(void) const;

    /**
     * Gets the ordinal number of the occurence of the day of week
     * in the month.  When the date rule type is not <code>DOW</code>,
     * the value is always 0.
     * @return The rule day of week ordinal number in the month.
     * @stable ICU 3.8
     */
    int32_t getRuleWeekInMonth(void) const;

    /**
     * Gets the rule time in the rule day.
     * @return The time in the rule day in milliseconds.
     * @stable ICU 3.8
     */
    int32_t getRuleMillisInDay(void) const;

private:
    int32_t fMonth;
    int32_t fDayOfMonth;
    int32_t fDayOfWeek;
    int32_t fWeekInMonth;
    int32_t fMillisInDay;
    DateRuleType fDateRuleType;
    TimeRuleType fTimeRuleType;

public:
    /**
     * Return the class ID for this class. This is useful only for comparing to
     * a return value from getDynamicClassID(). For example:
     * <pre>
     * .   Base* polymorphic_pointer = createPolymorphicObject();
     * .   if (polymorphic_pointer->getDynamicClassID() ==
     * .       erived::getStaticClassID()) ...
     * </pre>
     * @return          The class ID for all objects of this class.
     * @stable ICU 3.8
     */
    static UClassID U_EXPORT2 getStaticClassID(void);

    /**
     * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
     * method is to implement a simple version of RTTI, since not all C++
     * compilers support genuine RTTI. Polymorphic operator==() and clone()
     * methods call this method.
     *
     * @return          The class ID for this object. All objects of a
     *                  given class have the same class ID.  Objects of
     *                  other classes have different class IDs.
     * @stable ICU 3.8
     */
    virtual UClassID getDynamicClassID(void) const;
};

U_NAMESPACE_END

#endif /* #if !UCONFIG_NO_FORMATTING */

#endif /* U_SHOW_CPLUSPLUS_API */

#endif // DTRULE_H
//eof