Commit | Line | Data |
---|---|---|
5f085726 CM |
1 | <?php |
2 | ||
3 | require_once 'types.php'; | |
4 | ||
5 | function _to_php($obj) { | |
6 | if (_list_Q($obj) || _vector_Q($obj) || _hash_map_Q($obj)) { | |
7 | $ret = array(); | |
8 | foreach ($obj as $k => $v) { | |
9 | $ret[_to_php($k)] = _to_php($v); | |
10 | } | |
11 | return $ret; | |
12 | } elseif (is_string($obj)) { | |
13 | if (strpos($obj, chr(0x7f)) === 0) { | |
14 | return ":".substr($obj,1); | |
15 | } else { | |
16 | return $obj; | |
17 | } | |
18 | } elseif (_symbol_Q($obj)) { | |
19 | return ${$obj->value}; | |
20 | } elseif (_atom_Q($obj)) { | |
21 | return $obj->value; | |
5f085726 CM |
22 | } else { |
23 | return $obj; | |
24 | } | |
25 | } | |
26 | ||
27 | function _to_mal($obj) { | |
28 | switch (gettype($obj)) { | |
29 | case "object": | |
30 | return _to_mal(get_object_vars($obj)); | |
31 | case "array": | |
32 | $obj_conv = array(); | |
33 | foreach ($obj as $k => $v) { | |
34 | $obj_conv[_to_mal($k)] = _to_mal($v); | |
35 | } | |
36 | if ($obj_conv !== array_values($obj_conv)) { | |
37 | $new_obj = _hash_map(); | |
38 | $new_obj->exchangeArray($obj_conv); | |
39 | return $new_obj; | |
40 | } else { | |
41 | return call_user_func_array('_list', $obj_conv); | |
42 | } | |
43 | default: | |
44 | return $obj; | |
45 | } | |
46 | } | |
47 | ||
48 | ?> |