| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 19.02.2016 18:01 / 19.02.2016 18:17
С точки зрения класса date твой пример надо переписать так:@main[] $h[$.a(1)] ^h.a.inc[] [$h.a] $t[^test::create[]] ^t.a.inc[] [$t.a] @CLASS test @create[] $self._a(1) @GET_a[] $result($self._a) @SET_a[value] $self._a($value)В коде Парсера геттер написан так:
override Value* VDate::get_element(const String& aname) {
// $method
if(Value* result=VStateless_object::get_element(aname))
return result;
// $TZ
if(aname=="TZ")
return ftz_cstr ? new VString(*new String(ftz_cstr)): new VString();
int result;
if(aname=="year") result=1900+ftm.tm_year;
else if(aname=="month") result=1+ftm.tm_mon;
else if(aname=="day") result=ftm.tm_mday;
else if(aname=="hour") result=ftm.tm_hour;
else if(aname=="minute") result=ftm.tm_min;
else if(aname=="second") result=ftm.tm_sec;
else if(aname=="weekday") result=ftm.tm_wday;
else if(aname=="yearday") result=ftm.tm_yday;
else if(aname=="daylightsaving") result=ftm.tm_isdst;
else if(aname=="week") {
yw week = CalcWeek(ftm);
result=week.week;
}
else if(aname=="weekyear") {
yw week = CalcWeek(ftm);
result=1900+week.year;
} else { return bark("%s field not found", &aname); }
return new VInt(result);
}Т.е. в объекте date лежит структура (ftm) из «сишных интов», поля которой преобразуются в парсеровский int (VInt) при каждом обращении к свойтсву.