/*Vibhor 020904: End of Code*/ // timj added 9oct07 public static unsafe int eval_dir_device_tables_8(ref DDlDevDescription.FLAT_DEVICE_DIR_6 device_dir, ref DDlDevDescription.BIN_DEVICE_DIR_6 device_bin, uint mask) { int rc = Common.DDL_SUCCESS; /* return code */ if ((mask & DDlDevDescription.BLK_TBL_MASK) != 0) { /* rc = dir_mask_man((uint) BLK_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, &device_dir.attr_avail, (int (*) ()) eval_dir_blk_tbl, (void *) &device_dir.blk_tbl, &device_bin.blk_tbl); if ((rc != DDL_SUCCESS) { != 0) return rc; }*/ } if ((mask & DDlDevDescription.DICT_REF_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.DICT_REF_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_dict_ref_tbl8, ref device_dir, ref device_bin.dict_ref_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } // copy the parsed dictionary into the global dictionary DDlDevDescription.pGlobalDict.makedict(ref device_dir.dict_ref_tbl); } if ((mask & DDlDevDescription.DOMAIN_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.DOMAIN_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_domain_tbl, ref device_dir, ref device_bin.domain_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } } if ((mask & DDlDevDescription.ITEM_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.ITEM_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_item_tbl, ref device_dir, ref device_bin.item_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } } if ((mask & DDlDevDescription.PROG_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.PROG_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_prog_tbl, ref device_dir, ref device_bin.prog_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } } if ((mask & DDlDevDescription.STRING_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.STRING_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_string_tbl, ref device_dir, ref device_bin.string_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } if (DDlDevDescription.pLitStringTable != null) // stevev 24apr08 - for fm <8 != 0) // copy the parsed string table into the global lit string table DDlDevDescription.pLitStringTable.makelit((device_dir.string_tbl), false); } if ((mask & DDlDevDescription.LOCAL_VAR_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.LOCAL_VAR_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_local_var_tbl, ref device_dir, ref device_bin.local_var_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } } if ((mask & DDlDevDescription.CMD_NUM_ID_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.CMD_NUM_ID_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_cmd_num_id_tbl, ref device_dir, ref device_bin.cmd_num_id_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } } if ((mask & DDlDevDescription.IMAGE_TBL_MASK) != 0) { rc = dir_mask_man((uint)DDlDevDescription.IMAGE_TBL_MASK, device_bin.bin_exists, device_bin.bin_hooked, ref device_dir.attr_avail, EVALDIR_FN.eval_dir_image_tbl, ref device_dir, ref device_bin.image_tbl); if ((rc != Common.DDL_SUCCESS)) { return rc; } } return rc; }
public static unsafe int dir_mask_man(uint attr_mask, uint bin_exists, uint bin_hooked, ref uint attr_avail, EVALDIR_FN eval, ref DDlDevDescription.FLAT_DEVICE_DIR_6 device_dir, ref DDlDevDescription.BININFO bin) { int rc = Common.DDL_SUCCESS; /* return code */ /* * No binary exists */ if ((attr_mask & bin_exists) == 0) { /* * This is a DDOD error, by definition all directory tables * must have binary available */ rc = Common.DDL_BINARY_REQUIRED; } /* * No binary hooked */ else if ((attr_mask & bin_hooked) == 0) { /* * If value is already available */ if ((attr_mask & attr_avail) != 0) { rc = Common.DDL_SUCCESS; } /* * error, binary should be hooked up */ else { rc = Common.DDL_BINARY_REQUIRED; } } else { /* * check masks for evaluating */ if ((attr_mask & attr_avail) == 0) { //rc = (*eval)(attribute, bin); switch (eval) { case EVALDIR_FN.eval_dir_dict_ref_tbl: rc = eval_dir_dict_ref_tbl(ref device_dir.dict_ref_tbl, ref bin); break; case EVALDIR_FN.eval_dir_item_tbl: rc = eval_dir_item_tbl(ref device_dir.item_tbl, ref bin); break; case EVALDIR_FN.eval_dir_string_tbl: rc = eval_dir_string_tbl(ref device_dir.string_tbl, ref bin); break; case EVALDIR_FN.eval_dir_image_tbl: rc = eval_dir_image_tbl(ref device_dir.image_tbl, ref bin); break; case EVALDIR_FN.eval_dir_cmd_num_id_tbl: rc = eval_dir_cmd_num_id_tbl(ref device_dir.cmd_num_id_tbl, ref bin); break; case EVALDIR_FN.eval_dir_dict_ref_tbl8: rc = eval_dir_dict_ref_tbl8(ref device_dir.dict_ref_tbl, ref bin); break; case EVALDIR_FN.eval_dir_domain_tbl: rc = eval_dir_domain_tbl(ref device_dir.domain_tbl, ref bin); break; case EVALDIR_FN.eval_dir_prog_tbl: rc = eval_dir_prog_tbl(ref device_dir.prog_tbl, ref bin); break; case EVALDIR_FN.eval_dir_local_var_tbl: rc = eval_dir_local_var_tbl(ref device_dir.local_var_tbl, ref bin); break; default: rc = Common.DDL_ENCODING_ERROR; break; } if (rc == Common.DDL_SUCCESS) { attr_avail |= attr_mask; } } /* * evaluation is not necessary */ else { rc = Common.DDL_SUCCESS; } } return rc; }