Новости | 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) при каждом обращении к свойтсву.