[Gnucash-changes] r12319 - gnucash/trunk/lib/libqof/qof - Add
CACHE_REPLACE(dst, src) macro for common case in string setters.
Chris Shoemaker
chris at cvs.gnucash.org
Tue Jan 10 23:27:02 EST 2006
Author: chris
Date: 2006-01-10 23:27:02 -0500 (Tue, 10 Jan 2006)
New Revision: 12319
Trac: http://svn.gnucash.org/trac/changeset/12319
Modified:
gnucash/trunk/lib/libqof/qof/gnc-engine-util.h
Log:
Add CACHE_REPLACE(dst, src) macro for common case in string setters.
Modified: gnucash/trunk/lib/libqof/qof/gnc-engine-util.h
===================================================================
--- gnucash/trunk/lib/libqof/qof/gnc-engine-util.h 2006-01-11 04:25:36 UTC (rev 12318)
+++ gnucash/trunk/lib/libqof/qof/gnc-engine-util.h 2006-01-11 04:27:02 UTC (rev 12319)
@@ -305,8 +305,22 @@
*/
gpointer gnc_string_cache_insert(gconstpointer key);
-#define CACHE_INSERT(str) gnc_string_cache_insert((gconstpointer)(str));
-#define CACHE_REMOVE(str) gnc_string_cache_remove((str));
+#define CACHE_INSERT(str) gnc_string_cache_insert((gconstpointer)(str))
+#define CACHE_REMOVE(str) gnc_string_cache_remove((str))
+/* Replace cached string currently in 'dst' with string in 'src'.
+ * Typical usage:
+ * void foo_set_name(Foo *f, const char *str) {
+ * CACHE_REPLACE(f->name, str);
+ * }
+ * It avoids unnecessary ejection by doing INSERT before REMOVE.
+*/
+#define CACHE_REPLACE(dst, src) do { \
+ gpointer tmp = CACHE_INSERT((src)); \
+ CACHE_REMOVE((dst)); \
+ (dst) = tmp; \
+ } while (0)
+
+
#endif /* QOF_UTIL_H */
/** @} */
More information about the gnucash-changes
mailing list