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()); }
/* * 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; } } }
/* * 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; } }