| 97 | } |
| 98 | |
| 99 | bool FieldMap::erase(FieldNumber i) { |
| 100 | if (VALDI_UNLIKELY(_isMap)) { |
| 101 | auto& map = getMap(); |
| 102 | auto it = map.find(i); |
| 103 | if (it == map.end()) { |
| 104 | return false; |
| 105 | } |
| 106 | map.erase(it); |
| 107 | return true; |
| 108 | } else { |
| 109 | auto& vec = getVec(); |
| 110 | if (i >= vec.size()) { |
| 111 | return false; |
| 112 | } |
| 113 | auto& item = vec[i]; |
| 114 | if (item.isUnset()) { |
| 115 | return false; |
| 116 | } |
| 117 | item = Field(); |
| 118 | return true; |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | Field* FieldMap::find(FieldNumber i) { |
| 123 | if (VALDI_UNLIKELY(_isMap)) { |