[darwinbuild-changes] [726] branches/PR-7489777/darwinup

source_changes at macosforge.org source_changes at macosforge.org
Mon Mar 1 15:17:01 PST 2010


Revision: 726
          http://trac.macosforge.org/projects/darwinbuild/changeset/726
Author:   wsiegrist at apple.com
Date:     2010-03-01 15:16:58 -0800 (Mon, 01 Mar 2010)
Log Message:
-----------
Reorganize order of functions to group by caching/return behavior.

Modified Paths:
--------------
    branches/PR-7489777/darwinup/Table.cpp
    branches/PR-7489777/darwinup/Table.h

Modified: branches/PR-7489777/darwinup/Table.cpp
===================================================================
--- branches/PR-7489777/darwinup/Table.cpp	2010-03-01 21:28:59 UTC (rev 725)
+++ branches/PR-7489777/darwinup/Table.cpp	2010-03-01 23:16:58 UTC (rev 726)
@@ -155,33 +155,6 @@
 	return 0;
 }
 
-#define __alloc_stmt_query \
-	size_t size = 256; \
-	size_t used = 0; \
-	char* query = (char*)malloc(size); \
-	sqlite3_stmt** pps = (sqlite3_stmt**)malloc(sizeof(sqlite3_stmt*));
-
-#define __check_and_cat(text) \
-	used = strlcat(query, text, size); \
-    if (used >= size-1) { \
-        size *= 4; \
-        query = (char*)realloc(query, size); \
-        if (!query) { \
-			fprintf(stderr, "Error: ran out of memory!\n"); \
-            return NULL; \
-        } \
-        used = strlcat(query, text, size); \
-    }
-
-#define __prepare_stmt \
-    int res = sqlite3_prepare_v2(db, query, size, pps, NULL); \
-    free(query); \
-    if (res != SQLITE_OK) { \
-        fprintf(stderr, "Error: unable to prepare statement: %s\n", \
-				sqlite3_errmsg(db)); \
-        return NULL; \
-    }
-
 sqlite3_stmt* Table::create(sqlite3* db) {
 	size_t size = 0;
 	if (!m_create_sql) {
@@ -218,7 +191,7 @@
 			}
 		}
 	}
-
+	
 	sqlite3_stmt* stmt = (sqlite3_stmt*)malloc(sizeof(sqlite3_stmt*));
 	int res = sqlite3_prepare_v2(db, m_create_sql, size, &stmt, NULL); \
 	if (res != SQLITE_OK) { \
@@ -244,75 +217,6 @@
 	return stmt;
 }
 
-sqlite3_stmt** Table::count(sqlite3* db, uint32_t count, va_list args) {
-	__alloc_stmt_query;
-	strlcpy(query, "SELECT count(*) FROM ", size);
-	__check_and_cat(m_name);
-	__check_and_cat(" WHERE 1");
-	this->where_va_columns(count, query, size, &used, args);
-	strlcat(query, ";", size);
-	__prepare_stmt;
-
-	return pps;	
-}
-
-sqlite3_stmt** Table::get_column(sqlite3* db, Column* value_column, uint32_t count, va_list args) {
-	__alloc_stmt_query;
-	strlcpy(query, "SELECT ", size);
-	__check_and_cat(value_column->name());
-	__check_and_cat(" FROM ");
-	__check_and_cat(m_name);
-	__check_and_cat(" WHERE 1");
-	this->where_va_columns(count, query, size, &used, args);
-	strlcat(query, ";", size);
-	__prepare_stmt;
-	
-	return pps;
-}
-
-sqlite3_stmt** Table::get_row(sqlite3* db, uint32_t count, va_list args) {
-	__alloc_stmt_query;
-	strlcpy(query, "SELECT * FROM ", size);
-	__check_and_cat(m_name);
-	__check_and_cat(" WHERE 1");
-	this->where_va_columns(count, query, size, &used, args);
-	strlcat(query, ";", size);
-	__prepare_stmt;
-	
-	return pps;	
-}
-
-sqlite3_stmt** Table::get_row_ordered(sqlite3* db, Column* order_by, int order, 
-									 uint32_t count, va_list args) {
-	__alloc_stmt_query;
-	strlcpy(query, "SELECT * FROM ", size);
-	__check_and_cat(m_name);
-	__check_and_cat(" WHERE 1");
-	this->where_va_columns(count, query, size, &used, args);
-	__check_and_cat(" ORDER BY ");
-	__check_and_cat(order_by->name());
-	__check_and_cat((order == ORDER_BY_DESC ? " DESC" : " ASC"));
-	strlcat(query, ";", size);
-	__prepare_stmt;
-	
-	return pps;	
-}
-
-
-sqlite3_stmt** Table::update_value(sqlite3* db, Column* value_column, uint32_t count, va_list args) {
-	__alloc_stmt_query;
-	strlcpy(query, "UPDATE ", size);
-	__check_and_cat(m_name);
-	__check_and_cat(" SET ");
-	__check_and_cat(value_column->name());
-	__check_and_cat("=? WHERE 1");
-	this->where_va_columns(count, query, size, &used, args);
-	strlcat(query, ";", size);
-	__prepare_stmt;
-	
-	return pps;
-}
-
 /**
  * Prepare and cache the update statement. 
  * Assumes table only has 1 primary key
@@ -357,7 +261,7 @@
 		}
 	}
 	strlcat(m_update_sql, ";", size);
-		
+	
 	// prepare
 	int res = sqlite3_prepare_v2(db, m_update_sql, strlen(m_update_sql), &m_prepared_update, NULL);
 	if (res != SQLITE_OK) {
@@ -373,7 +277,7 @@
 	if (m_prepared_insert) {
 		return m_prepared_insert;
 	}
-
+	
 	uint32_t i = 0;
 	bool comma = false;  // flag we set to start adding commas
 	
@@ -409,7 +313,7 @@
 		}
 	}
 	strlcat(m_insert_sql, ");", size);
-
+	
 	// prepare
 	int res = sqlite3_prepare_v2(db, m_insert_sql, strlen(m_insert_sql), &m_prepared_insert, NULL);
 	if (res != SQLITE_OK) {
@@ -422,7 +326,7 @@
 sqlite3_stmt* Table::del(sqlite3* db) {
 	// we only need to prepare once, return if we already have it
 	if (m_prepared_delete) return m_prepared_delete;
-
+	
 	uint32_t i = 0;
 	
 	// generate the sql query
@@ -458,6 +362,101 @@
 	
 }
 
+#define __alloc_stmt_query \
+	size_t size = 256; \
+	size_t used = 0; \
+	char* query = (char*)malloc(size); \
+	sqlite3_stmt** pps = (sqlite3_stmt**)malloc(sizeof(sqlite3_stmt*));
+
+#define __check_and_cat(text) \
+	used = strlcat(query, text, size); \
+    if (used >= size-1) { \
+        size *= 4; \
+        query = (char*)realloc(query, size); \
+        if (!query) { \
+			fprintf(stderr, "Error: ran out of memory!\n"); \
+            return NULL; \
+        } \
+        used = strlcat(query, text, size); \
+    }
+
+#define __prepare_stmt \
+    int res = sqlite3_prepare_v2(db, query, size, pps, NULL); \
+    free(query); \
+    if (res != SQLITE_OK) { \
+        fprintf(stderr, "Error: unable to prepare statement: %s\n", \
+				sqlite3_errmsg(db)); \
+        return NULL; \
+    }
+
+sqlite3_stmt** Table::count(sqlite3* db, uint32_t count, va_list args) {
+	__alloc_stmt_query;
+	strlcpy(query, "SELECT count(*) FROM ", size);
+	__check_and_cat(m_name);
+	__check_and_cat(" WHERE 1");
+	this->where_va_columns(count, query, size, &used, args);
+	strlcat(query, ";", size);
+	__prepare_stmt;
+
+	return pps;	
+}
+
+sqlite3_stmt** Table::get_column(sqlite3* db, Column* value_column, uint32_t count, va_list args) {
+	__alloc_stmt_query;
+	strlcpy(query, "SELECT ", size);
+	__check_and_cat(value_column->name());
+	__check_and_cat(" FROM ");
+	__check_and_cat(m_name);
+	__check_and_cat(" WHERE 1");
+	this->where_va_columns(count, query, size, &used, args);
+	strlcat(query, ";", size);
+	__prepare_stmt;
+	
+	return pps;
+}
+
+sqlite3_stmt** Table::get_row(sqlite3* db, uint32_t count, va_list args) {
+	__alloc_stmt_query;
+	strlcpy(query, "SELECT * FROM ", size);
+	__check_and_cat(m_name);
+	__check_and_cat(" WHERE 1");
+	this->where_va_columns(count, query, size, &used, args);
+	strlcat(query, ";", size);
+	__prepare_stmt;
+	
+	return pps;	
+}
+
+sqlite3_stmt** Table::get_row_ordered(sqlite3* db, Column* order_by, int order, 
+									 uint32_t count, va_list args) {
+	__alloc_stmt_query;
+	strlcpy(query, "SELECT * FROM ", size);
+	__check_and_cat(m_name);
+	__check_and_cat(" WHERE 1");
+	this->where_va_columns(count, query, size, &used, args);
+	__check_and_cat(" ORDER BY ");
+	__check_and_cat(order_by->name());
+	__check_and_cat((order == ORDER_BY_DESC ? " DESC" : " ASC"));
+	strlcat(query, ";", size);
+	__prepare_stmt;
+	
+	return pps;	
+}
+
+sqlite3_stmt** Table::update_value(sqlite3* db, Column* value_column, uint32_t count, va_list args) {
+	__alloc_stmt_query;
+	strlcpy(query, "UPDATE ", size);
+	__check_and_cat(m_name);
+	__check_and_cat(" SET ");
+	__check_and_cat(value_column->name());
+	__check_and_cat("=? WHERE 1");
+	this->where_va_columns(count, query, size, &used, args);
+	strlcat(query, ";", size);
+	__prepare_stmt;
+	
+	return pps;
+}
+
 sqlite3_stmt** Table::del(sqlite3* db, uint32_t count, va_list args) {
 	__alloc_stmt_query;
 	strlcpy(query, "DELETE FROM ", size);

Modified: branches/PR-7489777/darwinup/Table.h
===================================================================
--- branches/PR-7489777/darwinup/Table.h	2010-03-01 21:28:59 UTC (rev 725)
+++ branches/PR-7489777/darwinup/Table.h	2010-03-01 23:16:58 UTC (rev 726)
@@ -58,7 +58,16 @@
 	int            free_result(uint8_t* result);
 
 	/**
-	 * sql statement generators
+	 * sql statement generators (cached on Table)
+	 */
+	sqlite3_stmt*    create(sqlite3* db);  
+	sqlite3_stmt*    count(sqlite3* db);
+	sqlite3_stmt*    update(sqlite3* db);
+	sqlite3_stmt*    insert(sqlite3* db);
+	sqlite3_stmt*    del(sqlite3* db);
+	
+	/**
+	 * sql statement generators (cached by Database & libcache)
 	 *
 	 * - order is either ORDER_BY_ASC or ORDER_BY_DESC
 	 * - count parameters should be the number of items in the va_list
@@ -71,8 +80,6 @@
 	 *          instead
 	 *
 	 */
-	sqlite3_stmt*    create(sqlite3* db);  
-	sqlite3_stmt*    count(sqlite3* db);
 	sqlite3_stmt**    count(sqlite3* db, uint32_t count, va_list args);
 	sqlite3_stmt**    get_column(sqlite3* db, Column* value_column, 
 								uint32_t count, va_list args);
@@ -81,9 +88,6 @@
 							 uint32_t count, va_list args);
 	sqlite3_stmt**    update_value(sqlite3* db, Column* value_column, 
 								  uint32_t count, va_list args);
-	sqlite3_stmt*    update(sqlite3* db);
-	sqlite3_stmt*    insert(sqlite3* db);
-	sqlite3_stmt*    del(sqlite3* db);
 	sqlite3_stmt**    del(sqlite3* db, uint32_t count, va_list args);
 	
 protected:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20100301/9be27857/attachment.html>


More information about the darwinbuild-changes mailing list