Ejemplo n.º 1
0
/**
 * gda_pstmt_copy_contents:
 * @src: a #GdaPStmt object
 * @dest: a #GdaPStmt object
 *
 * Copies @src's data to @dest 
 */
void
gda_pstmt_copy_contents (GdaPStmt *src, GdaPStmt *dest)
{
	GSList *list;
	g_return_if_fail (GDA_IS_PSTMT (src));
	g_return_if_fail (GDA_IS_PSTMT (dest));
	GdaPStmtPrivate *priv = gda_pstmt_get_instance_private (src);
	GdaPStmtPrivate *dpriv = gda_pstmt_get_instance_private (dest);

	g_rec_mutex_lock (& priv->mutex);
	g_rec_mutex_lock (& dpriv->mutex);

	g_free (dpriv->sql);
	dpriv->sql = NULL;
	if (priv->sql)
		dpriv->sql = g_strdup (priv->sql);
	if (dpriv->param_ids) {
		g_slist_free_full (dpriv->param_ids, (GDestroyNotify) g_free);
		dpriv->param_ids = NULL;
	}
	for (list = priv->param_ids; list; list = list->next)
		dpriv->param_ids = g_slist_append (dpriv->param_ids, g_strdup ((gchar *) list->data));
	dpriv->ncols = priv->ncols;
	if (dpriv->types != NULL) {
		g_free (dpriv->types);
	}
	dpriv->types = NULL;
	if (priv->types) {
		dpriv->types = g_new (GType, dpriv->ncols);
		memcpy (dpriv->types, priv->types, sizeof (GType) * dpriv->ncols); /* Flawfinder: ignore */
	}
	if (priv->tmpl_columns) {
		GSList *list;
		for (list = priv->tmpl_columns; list; list = list->next)
			dpriv->tmpl_columns = g_slist_append (dpriv->tmpl_columns,
							     gda_column_copy (GDA_COLUMN (list->data)));
	}
	GdaStatement *stmt;
	stmt = g_weak_ref_get (& priv->gda_stmt_ref);
	if (stmt) {
		gda_pstmt_set_gda_statement (dest, stmt);
		g_object_unref (stmt);
	}

	g_rec_mutex_unlock (& priv->mutex);
	g_rec_mutex_unlock (& dpriv->mutex);

}
Ejemplo n.º 2
0
/**
 * gda_pstmt_copy_contents:
 * @src: a #GdaPStmt object
 * @dest: a #GdaPStmt object
 *
 * Copies @src's data to @dest 
 */
void
gda_pstmt_copy_contents (GdaPStmt *src, GdaPStmt *dest)
{
	GSList *list;
	g_return_if_fail (GDA_IS_PSTMT (src));
	g_return_if_fail (GDA_IS_PSTMT (dest));

	g_rec_mutex_lock (& src->priv->mutex);
	g_rec_mutex_lock (& dest->priv->mutex);

	g_free (dest->sql);
	dest->sql = NULL;
	if (src->sql)
		dest->sql = g_strdup (src->sql);
	if (dest->param_ids) {
		g_slist_foreach (dest->param_ids, (GFunc) g_free, NULL);
		g_slist_free (dest->param_ids);
		dest->param_ids = NULL;
	}
	for (list = src->param_ids; list; list = list->next) 
		dest->param_ids = g_slist_append (dest->param_ids, g_strdup ((gchar *) list->data));
	dest->ncols = src->ncols;

	g_free (dest->types);
	dest->types = NULL;
	if (src->types) {
		dest->types = g_new (GType, dest->ncols);
		memcpy (dest->types, src->types, sizeof (GType) * dest->ncols); /* Flawfinder: ignore */
	}
	if (src->tmpl_columns) {
		GSList *list;
		for (list = src->tmpl_columns; list; list = list->next) 
			dest->tmpl_columns = g_slist_append (dest->tmpl_columns, 
							     gda_column_copy (GDA_COLUMN (list->data)));
	}
	GdaStatement *stmt;
	stmt = g_weak_ref_get (& src->priv->gda_stmt_ref);
	if (stmt) {
		gda_pstmt_set_gda_statement (dest, stmt);
		g_object_unref (stmt);
	}

	g_rec_mutex_unlock (& src->priv->mutex);
	g_rec_mutex_unlock (& dest->priv->mutex);

}