package org.jerlang.erts.emulator.op;
import org.jerlang.Module;
import org.jerlang.Process;
import org.jerlang.erts.emulator.Instruction;
import org.jerlang.type.List;
import org.jerlang.type.Map;
import org.jerlang.type.Term;
/**
* Verify that map in Source has all keys in FieldList.
* If not, jump to Label.
*
* Arguments:
* 1. Label
* 2. Source
* 3. FieldList
*
* Example:
* {has_map_fields,{f,4},{x,0},[b]}
*/
public class HasMapFields {
public static Term execute(Process proc, Module m, Instruction i, List params) {
Map map = i.arg(1).toArg(proc).toMap();
List fields = i.arg(2).toList();
while (fields.length() > 0) {
if (!map.is_key(fields.head())) {
return i.arg(0);
}
fields = fields.tail();
}
return null;
}
}