00001
00007 #ifndef z_date_H
00008 #define z_date_H
00009
00010 #include <yaz/odr.h>
00011 #include <yaz/z-core.h>
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00016 typedef struct Z_DateTime Z_DateTime;
00017 YAZ_EXPORT int z_DateTime (ODR o, Z_DateTime **p, int opt, const char *name);
00018
00019 typedef struct Z_DateMonthAndDay Z_DateMonthAndDay;
00020 YAZ_EXPORT int z_DateMonthAndDay (ODR o, Z_DateMonthAndDay **p, int opt, const char *name);
00021
00022 typedef struct Z_DateQuarter Z_DateQuarter;
00023 YAZ_EXPORT int z_DateQuarter (ODR o, Z_DateQuarter **p, int opt, const char *name);
00024
00025 typedef struct Z_DateSeason Z_DateSeason;
00026 YAZ_EXPORT int z_DateSeason (ODR o, Z_DateSeason **p, int opt, const char *name);
00027
00028 typedef struct Z_Era Z_Era;
00029 YAZ_EXPORT int z_Era (ODR o, Z_Era **p, int opt, const char *name);
00030
00031 typedef struct Z_DateFlags Z_DateFlags;
00032 YAZ_EXPORT int z_DateFlags (ODR o, Z_DateFlags **p, int opt, const char *name);
00033
00034 typedef struct Z_Date Z_Date;
00035 YAZ_EXPORT int z_Date (ODR o, Z_Date **p, int opt, const char *name);
00036
00037 typedef struct Z_Time Z_Time;
00038 YAZ_EXPORT int z_Time (ODR o, Z_Time **p, int opt, const char *name);
00039 #ifdef __cplusplus
00040 }
00041 #endif
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045 struct Z_DateTime {
00046 Z_Date *date;
00047 Z_Time *time;
00048 };
00049
00050 struct Z_DateMonthAndDay {
00051 int *month;
00052 int *day;
00053 };
00054
00055 struct Z_DateQuarter {
00056 int which;
00057 union {
00058 Odr_null *first;
00059 Odr_null *second;
00060 Odr_null *third;
00061 Odr_null *fourth;
00062 #define Z_DateQuarter_first 1
00063 #define Z_DateQuarter_second 2
00064 #define Z_DateQuarter_third 3
00065 #define Z_DateQuarter_fourth 4
00066 } u;
00067 };
00068
00069 struct Z_DateSeason {
00070 int which;
00071 union {
00072 Odr_null *winter;
00073 Odr_null *spring;
00074 Odr_null *summer;
00075 Odr_null *autumn;
00076 #define Z_DateSeason_winter 1
00077 #define Z_DateSeason_spring 2
00078 #define Z_DateSeason_summer 3
00079 #define Z_DateSeason_autumn 4
00080 } u;
00081 };
00082
00083 struct Z_Era {
00084 int which;
00085 union {
00086 Odr_null *decade;
00087 Odr_null *century;
00088 Odr_null *millennium;
00089 #define Z_Era_decade 1
00090 #define Z_Era_century 2
00091 #define Z_Era_millennium 3
00092 } u;
00093 };
00094
00095 struct Z_DateFlags {
00096 Odr_null *circa;
00097 Z_Era *era;
00098 };
00099
00100 struct Z_Date {
00101 int *year;
00102 int which;
00103 union {
00104 Z_DateMonthAndDay *monthAndDay;
00105 int *julianDay;
00106 int *weekNumber;
00107 Z_DateQuarter *quarter;
00108 Z_DateSeason *season;
00109 #define Z_Date_monthAndDay 1
00110 #define Z_Date_julianDay 2
00111 #define Z_Date_weekNumber 3
00112 #define Z_Date_quarter 4
00113 #define Z_Date_season 5
00114 } u;
00115 Z_DateFlags *flags;
00116 };
00117
00118 struct Z_Time {
00119 int *hour;
00120 int *minute;
00121 int *second;
00122 Z_IntUnit *partOfSecond;
00123 int which;
00124 union {
00125 Odr_null *local;
00126 Odr_null *utc;
00127 int *utcOffset;
00128 #define Z_Time_local 1
00129 #define Z_Time_utc 2
00130 #define Z_Time_utcOffset 3
00131 } u;
00132 };
00133
00134 #ifdef __cplusplus
00135 }
00136 #endif
00137 #endif