| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | MODULE = Time::XS                PACKAGE = Time::XS::Timezone | 
| 2 |  |  |  |  |  |  | PROTOTYPES: DISABLE | 
| 3 |  |  |  |  |  |  |  | 
| 4 | 2467 | 50 |  |  |  |  | string name (TimezoneSP THIS) { RETVAL = THIS->name; } | 
| 5 |  |  |  |  |  |  |  | 
| 6 | 1229 |  |  |  |  |  | bool is_local (TimezoneSP THIS) { RETVAL = THIS->is_local; } | 
| 7 |  |  |  |  |  |  |  | 
| 8 |  |  |  |  |  |  | Hash export (TimezoneSP THIS) { | 
| 9 | 1228 | 50 |  |  |  |  | RETVAL = Hash::create(); | 
| 10 |  |  |  |  |  |  |  | 
| 11 | 1228 | 50 |  |  |  |  | RETVAL.store("name", Simple(string_view(THIS->name.data(), THIS->name.length()))); | 
|  |  | 50 |  |  |  |  |  | 
| 12 | 1228 | 100 |  |  |  |  | RETVAL.store("is_local", Simple(THIS->is_local ? 1 : 0)); | 
|  |  | 50 |  |  |  |  |  | 
|  |  | 50 |  |  |  |  |  | 
| 13 |  |  |  |  |  |  |  | 
| 14 | 2456 | 50 |  |  |  |  | auto future = Hash::create(); | 
|  |  | 50 |  |  |  |  |  | 
| 15 | 1228 | 100 |  |  |  |  | future.store("hasdst", Simple(THIS->future.hasdst ? 1 : 0)); | 
|  |  | 50 |  |  |  |  |  | 
|  |  | 50 |  |  |  |  |  | 
| 16 |  |  |  |  |  |  |  | 
| 17 | 2456 | 50 |  |  |  |  | auto outer = Hash::create(); | 
|  |  | 50 |  |  |  |  |  | 
| 18 | 1228 | 50 |  |  |  |  | outer.store("abbrev",     Simple(string_view(THIS->future.outer.abbrev, strlen(THIS->future.outer.abbrev)))); | 
|  |  | 50 |  |  |  |  |  | 
| 19 | 1228 | 50 |  |  |  |  | outer.store("offset",     Simple(THIS->future.outer.offset)); | 
|  |  | 50 |  |  |  |  |  | 
| 20 | 1228 | 50 |  |  |  |  | outer.store("gmt_offset", Simple(THIS->future.outer.gmt_offset)); | 
|  |  | 50 |  |  |  |  |  | 
| 21 | 1228 | 50 |  |  |  |  | outer.store("isdst",      Simple(THIS->future.outer.isdst)); | 
|  |  | 50 |  |  |  |  |  | 
| 22 | 1228 | 50 |  |  |  |  | future.store("outer", Ref::create(outer)); | 
|  |  | 50 |  |  |  |  |  | 
| 23 |  |  |  |  |  |  |  | 
| 24 | 1228 | 100 |  |  |  |  | if (THIS->future.hasdst) { | 
| 25 | 890 | 50 |  |  |  |  | auto outer_end = Hash::create(); | 
| 26 | 445 | 50 |  |  |  |  | outer_end.store("mon",  Simple(THIS->future.outer.end.mon)); | 
|  |  | 50 |  |  |  |  |  | 
| 27 | 445 | 50 |  |  |  |  | outer_end.store("week", Simple(THIS->future.outer.end.yday)); | 
|  |  | 50 |  |  |  |  |  | 
| 28 | 445 | 50 |  |  |  |  | outer_end.store("day",  Simple(THIS->future.outer.end.wday)); | 
|  |  | 50 |  |  |  |  |  | 
| 29 | 445 | 50 |  |  |  |  | outer_end.store("hour", Simple(THIS->future.outer.end.hour)); | 
|  |  | 50 |  |  |  |  |  | 
| 30 | 445 | 50 |  |  |  |  | outer_end.store("min",  Simple(THIS->future.outer.end.min)); | 
|  |  | 50 |  |  |  |  |  | 
| 31 | 445 | 50 |  |  |  |  | outer_end.store("sec",  Simple(THIS->future.outer.end.sec)); | 
|  |  | 50 |  |  |  |  |  | 
| 32 | 445 | 50 |  |  |  |  | outer.store("end", Ref::create(outer_end)); | 
|  |  | 50 |  |  |  |  |  | 
| 33 |  |  |  |  |  |  |  | 
| 34 | 890 | 50 |  |  |  |  | auto inner = Hash::create(); | 
| 35 | 445 | 50 |  |  |  |  | inner.store("abbrev",     Simple(string_view(THIS->future.inner.abbrev, strlen(THIS->future.inner.abbrev)))); | 
|  |  | 50 |  |  |  |  |  | 
| 36 | 445 | 50 |  |  |  |  | inner.store("offset",     Simple(THIS->future.inner.offset)); | 
|  |  | 50 |  |  |  |  |  | 
| 37 | 445 | 50 |  |  |  |  | inner.store("gmt_offset", Simple(THIS->future.inner.gmt_offset)); | 
|  |  | 50 |  |  |  |  |  | 
| 38 | 445 | 50 |  |  |  |  | inner.store("isdst",      Simple(THIS->future.inner.isdst)); | 
|  |  | 50 |  |  |  |  |  | 
| 39 |  |  |  |  |  |  |  | 
| 40 | 890 | 50 |  |  |  |  | auto inner_end = Hash::create(); | 
| 41 | 445 | 50 |  |  |  |  | inner_end.store("mon",  Simple(THIS->future.inner.end.mon)); | 
|  |  | 50 |  |  |  |  |  | 
| 42 | 445 | 50 |  |  |  |  | inner_end.store("week", Simple(THIS->future.inner.end.yday)); | 
|  |  | 50 |  |  |  |  |  | 
| 43 | 445 | 50 |  |  |  |  | inner_end.store("day",  Simple(THIS->future.inner.end.wday)); | 
|  |  | 50 |  |  |  |  |  | 
| 44 | 445 | 50 |  |  |  |  | inner_end.store("hour", Simple(THIS->future.inner.end.hour)); | 
|  |  | 50 |  |  |  |  |  | 
| 45 | 445 | 50 |  |  |  |  | inner_end.store("min",  Simple(THIS->future.inner.end.min)); | 
|  |  | 50 |  |  |  |  |  | 
| 46 | 445 | 50 |  |  |  |  | inner_end.store("sec",  Simple(THIS->future.inner.end.sec)); | 
|  |  | 50 |  |  |  |  |  | 
| 47 | 445 | 50 |  |  |  |  | inner.store("end", Ref::create(inner_end)); | 
|  |  | 50 |  |  |  |  |  | 
| 48 |  |  |  |  |  |  |  | 
| 49 | 445 | 50 |  |  |  |  | future.store("inner", Ref::create(inner)); | 
|  |  | 50 |  |  |  |  |  | 
| 50 |  |  |  |  |  |  | } | 
| 51 | 1228 | 50 |  |  |  |  | RETVAL.store("future", Ref::create(future)); | 
|  |  | 50 |  |  |  |  |  | 
| 52 |  |  |  |  |  |  |  | 
| 53 | 2456 | 50 |  |  |  |  | auto trans = Array::create(); | 
|  |  | 50 |  |  |  |  |  | 
| 54 | 103011 | 100 |  |  |  |  | for (uint32_t i = 0; i < THIS->trans_cnt; ++i) trans.push(Ref::create(export_transition(THIS->trans[i], false))); | 
|  |  | 50 |  |  |  |  |  | 
|  |  | 50 |  |  |  |  |  | 
|  |  | 50 |  |  |  |  |  | 
| 55 | 1228 | 50 |  |  |  |  | RETVAL.store("transitions", Ref::create(trans)); | 
|  |  | 50 |  |  |  |  |  | 
| 56 |  |  |  |  |  |  |  | 
| 57 | 1228 | 50 |  |  |  |  | RETVAL.store("past", Ref::create(export_transition(THIS->trans[0], true))); | 
|  |  | 50 |  |  |  |  |  | 
|  |  | 50 |  |  |  |  |  | 
| 58 |  |  |  |  |  |  | } |