END_TEST START_TEST (test_get_param_type) { ck_assert(get_param_type("fun", 2, parser_data).std_type == NONE); ck_assert(check_enter_method("program", parser_data) != NULL); ck_assert(check_enter_method("fun", parser_data) != NULL); Attributes attrs = ATTRIBUTES_DEFAULT; attrs.t.std_type = INT; ck_assert(check_add_fun_param("x", attrs, parser_data) != NULL); attrs.t.std_type = REAL; ck_assert(check_add_fun_param("y", attrs, parser_data) != NULL); ck_assert(get_param_type("fun", 0, parser_data).std_type == INT); ck_assert(get_param_type("fun", 1, parser_data).std_type == REAL); }
void parse_ldi_param(t_vm *vm, t_program *prog, int param[4][2]) { int i; int j; int pc; pc = avance_mem(prog->pc, 1); j = 0; i = 3; while (i >= 0 && j < 4) { param[j][0] = get_param_type(vm->memory[pc], i); param[j][1] = get_size_to_read(vm->memory[pc], i); ++j; --i; } if (param[0][0] != PARAM_REG) param[0][1] = 2; if (param[1][0] != PARAM_REG) param[1][1] = 2; }
int get_lld_data(t_vm *vm, t_program *prog, unsigned char data[REG_SIZE]) { char type; int i; int tmp; i = avance_mem(prog->pc, 2); type = get_param_type(vm->memory[avance_mem(prog->pc, 1)], 3); tmp = get_size_to_read(vm->memory[avance_mem(prog->pc, 1)], 3); if (type == PARAM_REG) { if (vm->memory[i] - 1 < 0 || vm->memory[i] - 1 >= REG_NUMBER) return (1); my_memcpy(data, &prog->registre[vm->memory[i] - 1], REG_SIZE); return (0); } tmp = avance_mem(0, getnbr_wsize(vm->memory, avance_mem(prog->pc, 2), tmp)); if (type == PARAM_IND) tmp = avance_mem(prog->pc, tmp); mem_safecpy(data, vm->memory, avance_mem(prog->pc, tmp), REG_SIZE); return (0); }
void QuickEdit::SetupOperationAttributeController() { operationAttributeController = QSharedPointer<ItemController<BrowserNode> >( new ItemController<BrowserNode>()); operationAttributeController->SetColumns(columns); ADD_GETSET(BrowserOperationAttribute, operationAttributeController, columns.indexOf("name"), QVector<int>({Qt::DisplayRole,Qt::EditRole}), toString, get_name, set_name); ADD_GETSET(BrowserOperationAttribute, operationAttributeController, columns.indexOf("type"), QVector<int>({Qt::DisplayRole,Qt::EditRole}), toString, get_param_type().get_type, set_param_type); ADD_GETSET(BrowserOperationAttribute, operationAttributeController, columns.indexOf("default_value"), QVector<int>({Qt::DisplayRole,Qt::EditRole}), toString, get_default_value, set_default_value); ADD_GETSET(BrowserOperationAttribute, operationAttributeController, columns.indexOf("direction"), QVector<int>({Qt::DisplayRole,Qt::EditRole}), toString, get_direction, set_direction); ADD_GETSET(BrowserOperationAttribute, operationAttributeController, columns.indexOf("deleted"), QVector<int>({Qt::DisplayRole,Qt::EditRole}), toBool, deletedp, set_deleted); // ADD_GETSET(BrowserOperationAttribute, operationAttributeController, columns.indexOf("prefix"), QVector<int>({Qt::DisplayRole,Qt::EditRole}), // toString, get_specifier, set_specifier); ADD_GETSET(BrowserOperationAttribute, operationAttributeController, columns.indexOf("mark"), QVector<int>({Qt::DisplayRole,Qt::EditRole}), toBool, markedp, set_marked); operationAttributeController->AddGetter(columns.indexOf("deleted"),QVector<int>({Qt::DisplayRole,Qt::EditRole}), [] (const BrowserNode* data, const QModelIndex& index) { Q_UNUSED(index); if(!data) return QVariant(); const BrowserOperationAttribute* pointer = static_cast<const BrowserOperationAttribute*>(data); if(pointer) return QVariant(pointer->deletedp()); else return QVariant(); } ); operationAttributeController->AddSetter(columns.indexOf("deleted"),QVector<int>({Qt::DisplayRole,Qt::EditRole}), [] (BrowserNode* data, QVariant value, const QModelIndex& index) { if(!data) return false; BrowserOperationAttribute* pointer = static_cast<BrowserOperationAttribute*>(data); if(pointer) { pointer->set_deleted(value.toBool(), index.row()); pointer->modified(); } return true; } ); operationAttributeController->AddGetter(columns.indexOf("prefix"),QVector<int>({Qt::DisplayRole,Qt::EditRole}), [] (const BrowserNode* data, const QModelIndex& index) { Q_UNUSED(index); if(!data) return QVariant(); const BrowserOperationAttribute* pointer = static_cast<const BrowserOperationAttribute*>(data); if(pointer) return QVariant(pointer->get_specifier(index.row())); else return QVariant(); } ); operationAttributeController->AddSetter(columns.indexOf("prefix"),QVector<int>({Qt::DisplayRole,Qt::EditRole}), [] (BrowserNode* data, QVariant value, const QModelIndex& index) { if(!data) return false; BrowserOperationAttribute* pointer = static_cast<BrowserOperationAttribute*>(data); if(pointer) { pointer->set_specifier(value.toString(), index.row()); pointer->modified(); } return true; } ); operationAttributeController->AddGetter(columns.indexOf("postfix"),QVector<int>({Qt::DisplayRole,Qt::EditRole}), [] (const BrowserNode* data, const QModelIndex& index) { Q_UNUSED(index); if(!data) return QVariant(); const BrowserOperationAttribute* pointer = static_cast<const BrowserOperationAttribute*>(data); if(pointer) return QVariant(pointer->get_passage_type(index.row())); else return QVariant(); } ); operationAttributeController->AddSetter(columns.indexOf("postfix"),QVector<int>({Qt::DisplayRole,Qt::EditRole}), [] (BrowserNode* data, QVariant value, const QModelIndex& index) { if(!data) return false; BrowserOperationAttribute* pointer = static_cast<BrowserOperationAttribute*>(data); if(pointer) { pointer->set_passage_type(value.toString(), index.row()); pointer->modified(); } return true; } ); std::function<void(BrowserNode* , const QModelIndex&)> f = [](BrowserNode* node, const QModelIndex& index) { BrowserOperationAttribute* oper = static_cast<BrowserOperationAttribute*>(node); OperationFuncs::recompute_param(oper->get_operation(),index.row(),true); }; operationAttributeController->AddPostProcessors(columns.indexOf("direction"), QVector<int>(QVector<int>({Qt::DisplayRole,Qt::EditRole})),f); ADD_PIXMAP_GETTER(BrowserOperationAttribute, operationAttributeController, columns.indexOf("name"), QVector<int>({Qt::DecorationRole}), pixmap); operationAttributeController->AddFlagsFunctor ( [&](const QModelIndex& index) { Qt::ItemFlags result; result |= Qt::ItemIsSelectable; if(!(index.column() *in(columns.indexOf("name"),columns.indexOf("type"),columns.indexOf("default_value"), columns.indexOf("direction"), columns.indexOf("deleted"), columns.indexOf("mark"), columns.indexOf("prefix"), columns.indexOf("postfix")))) return result; TreeItemInterface* iface = static_cast<TreeItemInterface*>(index.internalPointer()); if(!iface) return result; BrowserOperationAttribute* pointer = static_cast<BrowserOperationAttribute*>(iface->InternalPointer()); if(!pointer) return result; if(pointer->is_writable() && !pointer->is_get_set()) result |= Qt::ItemIsEditable; result |= Qt::ItemIsEnabled ; return result; } ); }