コード例 #1
0
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);
}
コード例 #2
0
ファイル: cmd_ldi.c プロジェクト: Wayt/AnciensProjets
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;
}
コード例 #3
0
ファイル: cmd_lld.c プロジェクト: Wayt/AnciensProjets
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);
}
コード例 #4
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;
    }
    );
}