Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / datetime / XS / DateTime.xsp
1 #############################################################################
2 ## Name:        ext/datetime/XS/DateTime.xsp
3 ## Purpose:     XS++ for Wx::DateTime
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     22/09/2002
7 ## RCS-ID:      $Id: DateTime.xsp 2562 2009-05-17 08:57:33Z mbarbon $
8 ## Copyright:   (c) 2002, 2006, 2009 Mattia Barbon
9 ## Licence:     This program is free software; you can redistribute it and/or
10 ##              modify it under the same terms as Perl itself
11 #############################################################################
12
13 #include <wx/datetime.h>
14
15 %module{Wx};
16
17 %{
18 #define wxDateTime__TimeZone wxDateTime::TimeZone
19 #define Month wxDateTime::Month
20 #define WeekDay wxDateTime::WeekDay
21 #define WeekFlags wxDateTime::WeekFlags
22 #define NameFlags wxDateTime::NameFlags
23 #define wxDateTime_t wxDateTime::wxDateTime_t
24 #define Monday_First wxDateTime::Monday_First
25 #define Name_Full wxDateTime::Name_Full
26 #define Name_Abbr wxDateTime::Name_Abbr
27 #define Calendar wxDateTime::Calendar
28 #define Gregorian wxDateTime::Gregorian
29 #define Inv_Year wxDateTime::Inv_Year
30 #define Inv_Month wxDateTime::Inv_Month
31 #define wxDefaultDateTimePtr (wxDateTime*)&wxDefaultDateTime
32
33 #if WXPERL_W_VERSION_LT( 2, 5, 4 )
34 #define wxDefaultDateTimeFormat _T("%c")
35 #endif
36 %}
37
38 %typemap{Month}{simple};
39 %typemap{WeekDay}{simple};
40 %typemap{WeekFlags}{simple};
41 %typemap{wxDateTime_t}{simple};
42 %typemap{Calendar}{simple};
43 %typemap{wxDefaultDateTime}{simple};
44 %typemap{wxDefaultDateTimeFormat}{simple};
45
46 %typemap{const wxDateTime::TimeZone&}{parsed}{%wxDateTime::TimeZone%};
47
48 %name{Wx::DateTime} class wxDateTime
49 {
50     wxDateTime();
51     %name{newFromTimeT} wxDateTime( time_t time );
52     %name{newFromDMY} wxDateTime( wxDateTime_t day,
53         Month month = Inv_Month,
54         int year = Inv_Year, wxDateTime_t hour = 0,
55         wxDateTime_t minute = 0, wxDateTime_t second = 0,
56         wxDateTime_t millisec = 0 );
57
58 %{
59 static void
60 wxDateTime::CLONE()
61   CODE:
62     wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
63 %}
64     ## // thread OK
65     ~wxDateTime()
66         %code{% wxPli_thread_sv_unregister( aTHX_ "Wx::DateTime", THIS, ST(0) );
67                 delete THIS;
68                 %};
69
70 #define wxPL_DATETIME_FORMAT wxT("%c")
71
72     wxString Format( const wxChar* format = wxPL_DATETIME_FORMAT,
73                      const wxDateTime::TimeZone& tz = wxDateTime::Local );
74     wxString FormatDate();
75
76     int GetYear( const wxDateTime::TimeZone& tz = wxDateTime::Local );
77     Month GetMonth( const wxDateTime::TimeZone& tz = wxDateTime::Local );
78     wxDateTime_t GetDay( const wxDateTime::TimeZone& tz = wxDateTime::Local );
79     WeekDay GetWeekDay( const wxDateTime::TimeZone& tz = wxDateTime::Local );
80     wxDateTime_t GetHour( const wxDateTime::TimeZone& tz = wxDateTime::Local );
81     wxDateTime_t GetMinute( const wxDateTime::TimeZone& tz = wxDateTime::Local );
82     wxDateTime_t GetSecond( const wxDateTime::TimeZone& tz = wxDateTime::Local );
83     wxDateTime_t GetMillisecond( const wxDateTime::TimeZone& tz = wxDateTime::Local );
84     wxDateTime_t GetDayOfYear( const wxDateTime::TimeZone& tz = wxDateTime::Local );
85     wxDateTime_t GetWeekOfYear( WeekFlags flags = Monday_First, const wxDateTime::TimeZone& tz = wxDateTime::Local );
86     wxDateTime_t GetWeekOfMonth( WeekFlags flags = Monday_First, const wxDateTime::TimeZone& tz = wxDateTime::Local );
87
88     %name{SetTimeT} wxDateTime& Set( time_t time )
89         %code{%    RETVAL = &(THIS->Set( time )); %};
90     %name{SetJDN} wxDateTime& Set( double jdn )
91         %code{%    RETVAL = &(THIS->Set( jdn )); %};
92     %name{SetHMS} wxDateTime& Set( wxDateTime_t hour, wxDateTime_t minute = 0,
93                                    wxDateTime_t second = 0,
94                                    wxDateTime_t msec = 0 )
95         %code{%    RETVAL = &(THIS->Set( hour, minute, second, msec )); %};
96     %name{Set} wxDateTime& Set( wxDateTime_t day,
97                                 Month month = Inv_Month,
98                                 int year = Inv_Year,
99                                 wxDateTime_t hour, wxDateTime_t minute = 0,
100                                 wxDateTime_t second = 0,
101                                 wxDateTime_t msec = 0 )
102         %code{%    RETVAL = &(THIS->Set( day, month, year,
103                                          hour, minute, second, msec ));
104               %};
105     
106     wxDateTime& SetYear( int year );
107     wxDateTime& SetMonth( Month month );
108     wxDateTime& SetDay( wxDateTime_t day );
109     wxDateTime& SetHour( wxDateTime_t hour );
110     wxDateTime& SetMinute( wxDateTime_t minute );
111     wxDateTime& SetSecond( wxDateTime_t second );
112     wxDateTime& SetMillisecond( wxDateTime_t millisecond );
113
114     wxString FormatISODate();
115     wxString FormatTime();
116     wxString FormatISOTime();
117
118 #if WXPERL_W_VERSION_LT( 2, 9, 0 )
119     wxString ParseFormat( wxString date,
120                 wxString format = wxDefaultDateTimeFormat,
121                 const wxDateTime& dateDef = wxDefaultDateTimePtr );
122     wxString ParseDate( wxString date);
123     wxString ParseDateTime( wxString date);
124     wxString ParseTime( wxString date);
125     wxString ParseRfc822Date( wxString date);
126 #endif
127
128     wxDateTime& SetToCurrent( );
129     wxDateTime& ResetTime( );
130
131         bool IsEqualTo( wxDateTime& dt );
132         bool IsEarlierThan( wxDateTime& dt );
133         bool IsLaterThan( wxDateTime& dt );
134         bool IsBetween( wxDateTime& dt1, wxDateTime& dt2 );
135         bool IsStrictlyBetween( wxDateTime& dt1, wxDateTime& dt2 );
136         bool IsSameDate( wxDateTime& dt );
137         bool IsSameTime( wxDateTime& dt );
138
139         # all Add & Subtract methods for Time and Date parts
140         %name{AddDate} wxDateTime& Add( wxDateSpan& ds );
141         %name{AddTime} wxDateTime& Add( wxTimeSpan& ds );
142         # TimeSpan and all needed functions
143         # DateSpan and all needed functions
144 };
145
146 %{
147
148 void
149 wxDateTime::GetAmPmStrings()
150   PPCODE:
151     wxString am, pm;
152     THIS->GetAmPmStrings( &am, &pm );
153     SV* ams = wxPli_wxString_2_sv( aTHX_ am, sv_newmortal() ),
154       * pms = wxPli_wxString_2_sv( aTHX_ pm, sv_newmortal() );
155     EXTEND( SP, 2 );
156     PUSHs( ams );
157     PUSHs( pms );    
158
159
160 wxDateTime*
161 Today()
162   CODE:
163     RETVAL = new wxDateTime( wxDateTime::Today() );
164   OUTPUT:
165     RETVAL
166
167 wxDateTime*
168 Now()
169   CODE:
170     RETVAL = new wxDateTime( wxDateTime::Now() );
171   OUTPUT:
172     RETVAL
173
174 wxDateTime*
175 UNow()
176   CODE:
177     RETVAL = new wxDateTime( wxDateTime::UNow() );
178   OUTPUT:
179     RETVAL
180
181 bool
182 IsLeapYear( int year, Calendar cal = Gregorian)
183   CODE:
184     RETVAL = wxDateTime::IsLeapYear( year, cal );
185   OUTPUT:
186     RETVAL
187
188 wxString
189 GetMonthName( Month month, NameFlags flags = Name_Full )
190   CODE:
191     RETVAL = wxDateTime::GetMonthName( month, flags );
192   OUTPUT:
193     RETVAL
194
195 wxString
196 GetWeekDayName( WeekDay weekday, NameFlags flags = Name_Full )
197   CODE:
198     RETVAL = wxDateTime::GetWeekDayName( weekday, flags );
199   OUTPUT:
200     RETVAL
201
202 wxDateTime_t
203 GetNumberOfDaysInYear( int year = Inv_Year, Calendar cal = Gregorian )
204   CODE:
205     RETVAL = wxDateTime::GetNumberOfDays( year, cal );
206   OUTPUT:
207     RETVAL
208
209 wxDateTime_t
210 GetNumberOfDaysInMonth( Month month, int year = Inv_Year, Calendar cal = Gregorian )
211   CODE:
212     RETVAL = wxDateTime::GetNumberOfDays( month, year, cal );
213   OUTPUT:
214     RETVAL
215
216 int
217 GetCentury( int year = Inv_Year )
218   CODE:
219     RETVAL = wxDateTime::GetCentury( year );
220   OUTPUT:
221     RETVAL
222
223 int
224 GetCurrentYear( Calendar cal = Gregorian )
225   CODE:
226     RETVAL = wxDateTime::GetCurrentYear( cal );
227   OUTPUT:
228     RETVAL
229
230 int
231 GetCurrentMonth( Calendar cal = Gregorian )
232   CODE:
233     RETVAL = wxDateTime::GetCurrentMonth( cal );
234   OUTPUT:
235     RETVAL
236
237 %}