package joshua.discriminative.semiring_parsingv2.pmodule;
import joshua.discriminative.semiring_parsingv2.SignedValue;
import joshua.discriminative.semiring_parsingv2.semiring.LogSemiring;
/** P is in a SemiringLog
* */
public class ListPM implements PModule<LogSemiring, ListPM>{
private SparseMap value;
public ListPM(SparseMap v_){
this.value = v_;
}
public ListPM duplicate() {
SparseMap v = this.value.duplicate();
return new ListPM(v);
}
public void multiSemiring(LogSemiring p) {
for(SignedValue signedVal : this.value.getValues())
signedVal.multiLogNumber( p.getLogValue() );
}
/*public void add(ListPM b) {
for(Integer id : b.value.getIds()){
SignedValue valB = b.value.getValueAt(id);
SignedValue valA = this.value.getValueAt(id);
if(valA!=null){
valA.add(valB);
}else{
this.value.addInToArray(id, SignedValue.duplicate(valB) );
}
}
}*/
public void add(ListPM b) {
this.value.add(b.value);
}
public void printInfor() {
for(SignedValue val : this.value.getValues()){
val.printInfor();
}
}
public void setToZero() {
for(SignedValue val : this.value.getValues()){
val.setToZero();
}
}
public SparseMap getValue(){
return this.value;
}
}