MCPcopy Create free account
hub / github.com/apache/thrift / _readMap

Method _readMap

lib/php/src/Thrift.php:98–164  ·  view source on GitHub ↗
(&$var, $spec, $input)

Source from the content-addressed store, hash-verified

96 TType::STRING => 'String');
97
98 private function _readMap(&$var, $spec, $input)
99 {
100 $xfer = 0;
101 $ktype = $spec['ktype'];
102 $vtype = $spec['vtype'];
103 $kread = $vread = null;
104 if (isset(TBase::$tmethod[$ktype])) {
105 $kread = 'read'.TBase::$tmethod[$ktype];
106 } else {
107 $kspec = $spec['key'];
108 }
109 if (isset(TBase::$tmethod[$vtype])) {
110 $vread = 'read'.TBase::$tmethod[$vtype];
111 } else {
112 $vspec = $spec['val'];
113 }
114 $var = array();
115 $_ktype = $_vtype = $size = 0;
116 $xfer += $input->readMapBegin($_ktype, $_vtype, $size);
117 for ($i = 0; $i < $size; ++$i) {
118 $key = $val = null;
119 if ($kread !== null) {
120 $xfer += $input->$kread($key);
121 } else {
122 switch ($ktype) {
123 case TType::STRUCT:
124 $class = $kspec['class'];
125 $key = new $class();
126 $xfer += $key->read($input);
127 break;
128 case TType::MAP:
129 $xfer += $this->_readMap($key, $kspec, $input);
130 break;
131 case TType::LST:
132 $xfer += $this->_readList($key, $kspec, $input, false);
133 break;
134 case TType::SET:
135 $xfer += $this->_readList($key, $kspec, $input, true);
136 break;
137 }
138 }
139 if ($vread !== null) {
140 $xfer += $input->$vread($val);
141 } else {
142 switch ($vtype) {
143 case TType::STRUCT:
144 $class = $vspec['class'];
145 $val = new $class();
146 $xfer += $val->read($input);
147 break;
148 case TType::MAP:
149 $xfer += $this->_readMap($val, $vspec, $input);
150 break;
151 case TType::LST:
152 $xfer += $this->_readList($val, $vspec, $input, false);
153 break;
154 case TType::SET:
155 $xfer += $this->_readList($val, $vspec, $input, true);

Callers 2

_readListMethod · 0.95
_readMethod · 0.95

Calls 4

_readListMethod · 0.95
readMapBeginMethod · 0.65
readMethod · 0.65
readMapEndMethod · 0.65

Tested by

no test coverage detected