void ApplicationVersionRepository::add(const ApplicationVersion &entity, bool *ok)
{
    if (!isValid() || !entity.isValid() || entity.isCreatedByRepo())
        return bSet(ok, false);
    QVariantMap values;
    values.insert("client_type", int(entity.clienType()));
    values.insert("os_type", int(entity.os()));
    values.insert("portable", int(entity.portable()));
    values.insert("processor_architecture_type", int(entity.processorArchitecture()));
    values.insert("download_url", entity.downloadUrl().toString());
    values.insert("version", entity.version().toString());
    bSet(ok, Source->insert("application_versions", values).success());
}
void ApplicationVersionRepository::edit(const ApplicationVersion &entity, bool *ok)
{
    if (!isValid() || !entity.isValid() || entity.isCreatedByRepo())
        return bSet(ok, false);
    QVariantMap values;
    values.insert("download_url", entity.downloadUrl().toString());
    values.insert("version", entity.version().toString());
    QString ws = "client_type = :client_type AND os_type = :os_type AND portable = :portable "
        "AND processor_architecture_type = :processor_architecture_type";
    QVariantMap wvalues;
    wvalues.insert(":client_type", int(entity.clienType()));
    wvalues.insert(":os_type", int(entity.os()));
    wvalues.insert(":portable", int(entity.portable()));
    wvalues.insert(":processor_architecture_type", int(entity.processorArchitecture()));
    bSet(ok, Source->update("application_versions", values, BSqlWhere(ws, wvalues)).success());
}
Esempio n. 3
0
/*
 * undo a movement.
 * myPiece is the piece which has moved.
 * oldPiece is the piece at move.dst[x,y] before the move.
 * rocksInfoSave is the Rocks bits field before the move.
 */
void undoMovement(Board board, Color color, Move move, Piece myPiece, Piece oldPiece, Case rocksInfoSave)
{
	bSet(board, move.srcX, move.srcY, myPiece);
	bSet(board, move.dstX, move.dstY, oldPiece);
	if (move.enpassant == ENPASSANT_DANGER)
		board[ENPASSANT_INDEX(color)] &= ~(1 << move.srcX);
	else if (move.enpassant == ENPASSANT_EAT)
		bSet(board, move.dstX, move.srcY, pawn | (color ^ COLOR_ON));
	board[ROCK_INDEX] = rocksInfoSave;
	if ((myPiece & PIECE_MASK) == king)
	{
		switch (move.rock)
		{
		case ROCK_LEFT:
			bSet(board, 3, move.dstY, 0);
			bSet(board, 0, move.dstY, rock | color);
			break;
		case ROCK_RIGHT:
			bSet(board, 5, move.dstY, 0);
			bSet(board, 7, move.dstY, rock | color);
			break;
		default: break;
		}
	}
}
Esempio n. 4
0
/*
 * apply a movement on a board
 */
void applyMovement(Board board, Color color, Piece piece, Move move)
{
	bSet(board, move.srcX, move.srcY, 0);
	bSet(board, move.dstX, move.dstY, piece);

	switch (piece & PIECE_MASK)
	{
	case king:
		if ((board[ROCK_INDEX] & KING_BIT(color)) == 0)
		{
			if ((move.dstY == 0 && color == white) || (move.dstY == 7 && color == black))
			{
				if (move.dstX == 2)
				{
					bSet(board, 3, move.dstY, rock | color);
					bSet(board, 0, move.dstY, 0);
					board[ROCK_INDEX] |= LEFT_ROCK_BIT(color);
				}
				else if (move.dstX == 6)
				{
					bSet(board, 5, move.dstY, rock | color);
					bSet(board, 7, move.dstY, 0);
					board[ROCK_INDEX] |= RIGHT_ROCK_BIT(color);
				}
			}
			board[ROCK_INDEX] |= KING_BIT(color);
		}
		break;
	case rock:
		if ((move.srcY == 0 && color == white) || (move.srcY == 7 && color == black))
		{
			if (move.srcX == 0)
			{
				board[ROCK_INDEX] |= LEFT_ROCK_BIT(color);
			}
			else if (move.srcX == 7)
			{
				board[ROCK_INDEX] |= RIGHT_ROCK_BIT(color);
			}
		}
		break;
	case pawn:
		if (move.enpassant == ENPASSANT_DANGER)
			board[ENPASSANT_INDEX(color)] |= (1 << move.srcX);
		else if (move.enpassant == ENPASSANT_EAT)
			bSet(board, move.dstX, move.srcY, 0);
		else if (move.promotion)
			bSet(board, move.dstX, move.dstY, queen | color);
		break;
	default: break;
	}
}