summaryrefslogtreecommitdiffstats
path: root/generic/tclDate.h
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclDate.h')
-rw-r--r--generic/tclDate.h116
1 files changed, 66 insertions, 50 deletions
diff --git a/generic/tclDate.h b/generic/tclDate.h
index 8b71827..60e07ab 100644
--- a/generic/tclDate.h
+++ b/generic/tclDate.h
@@ -31,42 +31,51 @@
#define RODDENBERRY 1946 /* Another epoch (Hi, Jeff!) */
+enum DateInfoFlags {
+ CLF_OPTIONAL = 1 << 0, /* token is non mandatory */
+ CLF_POSIXSEC = 1 << 1,
+ CLF_LOCALSEC = 1 << 2,
+ CLF_JULIANDAY = 1 << 3,
+ CLF_TIME = 1 << 4,
+ CLF_ZONE = 1 << 5,
+ CLF_CENTURY = 1 << 6,
+ CLF_DAYOFMONTH = 1 << 7,
+ CLF_DAYOFYEAR = 1 << 8,
+ CLF_MONTH = 1 << 9,
+ CLF_YEAR = 1 << 10,
+ CLF_DAYOFWEEK = 1 << 11,
+ CLF_ISO8601YEAR = 1 << 12,
+ CLF_ISO8601WEAK = 1 << 13,
+ CLF_ISO8601CENTURY = 1 << 14,
+
+ CLF_SIGNED = 1 << 15,
+
+ /* Compounds */
+
+ CLF_HAVEDATE = (CLF_DAYOFMONTH | CLF_MONTH | CLF_YEAR),
+ CLF_DATE = (CLF_JULIANDAY | CLF_DAYOFMONTH | CLF_DAYOFYEAR
+ | CLF_MONTH | CLF_YEAR | CLF_ISO8601YEAR
+ | CLF_DAYOFWEEK | CLF_ISO8601WEAK),
+
+ /*
+ * Extra flags used outside of scan/format-tokens too (int, not a short).
+ */
+
+ CLF_RELCONV = 1 << 17,
+ CLF_ORDINALMONTH = 1 << 18,
+
+ /* On demand (lazy) assemble flags */
+
+ CLF_ASSEMBLE_DATE = 1 << 28,/* assemble year, month, etc. using julianDay */
+ CLF_ASSEMBLE_JULIANDAY = 1 << 29,
+ /* assemble julianDay using year, month, etc. */
+ CLF_ASSEMBLE_SECONDS = 1 << 30
+ /* assemble localSeconds (and seconds at end) */
+};
-#define CLF_OPTIONAL (1 << 0) /* token is non mandatory */
-#define CLF_POSIXSEC (1 << 1)
-#define CLF_LOCALSEC (1 << 2)
-#define CLF_JULIANDAY (1 << 3)
-#define CLF_TIME (1 << 4)
-#define CLF_ZONE (1 << 5)
-#define CLF_CENTURY (1 << 6)
-#define CLF_DAYOFMONTH (1 << 7)
-#define CLF_DAYOFYEAR (1 << 8)
-#define CLF_MONTH (1 << 9)
-#define CLF_YEAR (1 << 10)
-#define CLF_DAYOFWEEK (1 << 11)
-#define CLF_ISO8601YEAR (1 << 12)
-#define CLF_ISO8601WEAK (1 << 13)
-#define CLF_ISO8601CENTURY (1 << 14)
-
-#define CLF_SIGNED (1 << 15)
-
-/* extra flags used outside of scan/format-tokens too (int, not a short int) */
-#define CLF_RELCONV (1 << 17)
-#define CLF_ORDINALMONTH (1 << 18)
-
-/* On demand (lazy) assemble flags */
-#define CLF_ASSEMBLE_DATE (1 << 28) /* assemble year, month, etc. using julianDay */
-#define CLF_ASSEMBLE_JULIANDAY (1 << 29) /* assemble julianDay using year, month, etc. */
-#define CLF_ASSEMBLE_SECONDS (1 << 30) /* assemble localSeconds (and seconds at end) */
-
-#define CLF_HAVEDATE (CLF_DAYOFMONTH|CLF_MONTH|CLF_YEAR)
-#define CLF_DATE (CLF_JULIANDAY | CLF_DAYOFMONTH | CLF_DAYOFYEAR | \
- CLF_MONTH | CLF_YEAR | CLF_ISO8601YEAR | \
- CLF_DAYOFWEEK | CLF_ISO8601WEAK)
-
-#define TCL_MIN_SECONDS -0x00F0000000000000LL
-#define TCL_MAX_SECONDS 0x00F0000000000000LL
-#define TCL_INV_SECONDS (TCL_MIN_SECONDS-1)
+#define TCL_MIN_SECONDS -0x00F0000000000000LL
+#define TCL_MAX_SECONDS 0x00F0000000000000LL
+#define TCL_INV_SECONDS (TCL_MIN_SECONDS - 1)
/*
* Enumeration of the string literals used in [clock]
@@ -148,10 +157,11 @@ typedef enum ClockMsgCtLiteral {
* Structure containing the fields used in [clock format] and [clock scan]
*/
-#define CLF_CTZ (1 << 4)
+enum TclDateFieldsFlags {
+ CLF_CTZ = (1 << 4)
+};
typedef struct TclDateFields {
-
/* Cacheable fields: */
Tcl_WideInt seconds; /* Time expressed in seconds from the Posix
@@ -270,15 +280,19 @@ ClockInitDateInfo(
* Structure containing the command arguments supplied to [clock format] and [clock scan]
*/
-#define CLF_VALIDATE_S1 (1 << 0)
-#define CLF_VALIDATE_S2 (1 << 1)
-#define CLF_VALIDATE (CLF_VALIDATE_S1|CLF_VALIDATE_S2)
-#define CLF_EXTENDED (1 << 4)
-#define CLF_STRICT (1 << 8)
-#define CLF_LOCALE_USED (1 << 15)
+enum ClockFmtScnCmdArgsFlags {
+ CLF_VALIDATE_S1 = (1 << 0),
+ CLF_VALIDATE_S2 = (1 << 1),
+ CLF_VALIDATE = (CLF_VALIDATE_S1|CLF_VALIDATE_S2),
+ CLF_EXTENDED = (1 << 4),
+ CLF_STRICT = (1 << 8),
+ CLF_LOCALE_USED = (1 << 15)
+};
+
+typedef struct ClockClientData ClockClientData;
typedef struct ClockFmtScnCmdArgs {
- void *clientData; /* Opaque pointer to literal pool, etc. */
+ ClockClientData *dataPtr; /* Pointer to literal pool, etc. */
Tcl_Interp *interp; /* Tcl interpreter */
Tcl_Obj *formatObj; /* Format */
Tcl_Obj *localeObj; /* Name of the locale where the time will be expressed. */
@@ -422,10 +436,12 @@ typedef struct DateFormat {
Tcl_Obj *localeEra;
} DateFormat;
-#define CLFMT_INCR (1 << 3)
-#define CLFMT_DECR (1 << 4)
-#define CLFMT_CALC (1 << 5)
-#define CLFMT_LOCALE_INDX (1 << 8)
+enum ClockFormatTokenMapFlags {
+ CLFMT_INCR = (1 << 3),
+ CLFMT_DECR = (1 << 4),
+ CLFMT_CALC = (1 << 5),
+ CLFMT_LOCALE_INDX = (1 << 8)
+};
typedef struct ClockFormatToken ClockFormatToken;
@@ -513,7 +529,7 @@ MODULE_SCOPE void GetJulianDayFromEraYearMonthDay(
TclDateFields *fields, int changeover);
MODULE_SCOPE void GetJulianDayFromEraYearDay(
TclDateFields *fields, int changeover);
-MODULE_SCOPE int ConvertUTCToLocal(void *clientData, Tcl_Interp *,
+MODULE_SCOPE int ConvertUTCToLocal(ClockClientData *dataPtr, Tcl_Interp *,
TclDateFields *, Tcl_Obj *timezoneObj, int);
MODULE_SCOPE Tcl_Obj * LookupLastTransition(Tcl_Interp *, Tcl_WideInt,
Tcl_Size, Tcl_Obj *const *, Tcl_WideInt *rangesVal);
@@ -521,7 +537,7 @@ MODULE_SCOPE int TclClockFreeScan(Tcl_Interp *interp, DateInfo *info);
/* tclClock.c module declarations */
-MODULE_SCOPE Tcl_Obj * ClockSetupTimeZone(void *clientData,
+MODULE_SCOPE Tcl_Obj * ClockSetupTimeZone(ClockClientData *dataPtr,
Tcl_Interp *interp, Tcl_Obj *timezoneObj);
MODULE_SCOPE Tcl_Obj * ClockMCDict(ClockFmtScnCmdArgs *opts);
MODULE_SCOPE Tcl_Obj * ClockMCGet(ClockFmtScnCmdArgs *opts, int mcKey);