commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/geas/src/classdef classdef.c classdef.h gc...


From: Reinhard Mueller
Subject: gnue/geas/src/classdef classdef.c classdef.h gc...
Date: Wed, 14 Nov 2001 17:04:31 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Reinhard Mueller <address@hidden>       01/11/14 17:04:29

Modified files:
        geas/src/classdef: classdef.c classdef.h gcdinfo.c 

Log message:
        The automatic fields id, cre_user, cre_date, mod_user and mod_date are 
now defined NOTNULL. The id field and the hidden fields for implicit references 
and lists are now defined INTERNAL.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/geas/src/classdef/classdef.c.diff?tr1=1.23&tr2=1.24&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/geas/src/classdef/classdef.h.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/geas/src/classdef/gcdinfo.c.diff?tr1=1.8&tr2=1.9&r1=text&r2=text

Patches:
Index: gnue/geas/src/classdef/classdef.c
diff -u gnue/geas/src/classdef/classdef.c:1.23 
gnue/geas/src/classdef/classdef.c:1.24
--- gnue/geas/src/classdef/classdef.c:1.23      Thu Nov  1 13:14:25 2001
+++ gnue/geas/src/classdef/classdef.c   Wed Nov 14 17:04:29 2001
@@ -19,7 +19,7 @@
    along with GEAS; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-   $Id: classdef.c,v 1.23 2001/11/01 18:14:25 reinhard Exp $
+   $Id: classdef.c,v 1.24 2001/11/14 22:04:29 reinhard Exp $
 */
 
 #include "config.h"
@@ -237,6 +237,7 @@
 geas_cd_module_class_new (geas_cd_module *m, const char *name)
 {
   geas_cd_class *c;
+  geas_cd_field *f;
 
   g_return_val_if_fail (m, NULL);
   g_return_val_if_fail (name, NULL);
@@ -254,11 +255,21 @@
       g_hash_table_insert (m->classes, c->name, c);
 
       /* Create the automatic fields */
-      geas_cd_class_field_new (c, _geas_module, "id", _id_type);
-      geas_cd_class_field_new (c, _geas_module, "cre_user", _username_type);
-      geas_cd_class_field_new (c, _geas_module, "cre_time", _datetime_type);
-      geas_cd_class_field_new (c, _geas_module, "mod_user", _username_type);
-      geas_cd_class_field_new (c, _geas_module, "mod_time", _datetime_type);
+      f = geas_cd_class_field_new (c, _geas_module, "id", _id_type);
+      geas_cd_field_prop_set (f, GEAS_CD_FPROP_NOTNULL);
+      geas_cd_field_prop_set (f, GEAS_CD_FPROP_INTERNAL);
+
+      f = geas_cd_class_field_new (c, _geas_module, "cre_user", 
_username_type);
+      geas_cd_field_prop_set (f, GEAS_CD_FPROP_NOTNULL);
+
+      f = geas_cd_class_field_new (c, _geas_module, "cre_time", 
_datetime_type);
+      geas_cd_field_prop_set (f, GEAS_CD_FPROP_NOTNULL);
+
+      f = geas_cd_class_field_new (c, _geas_module, "mod_user", 
_username_type);
+      geas_cd_field_prop_set (f, GEAS_CD_FPROP_NOTNULL);
+
+      f = geas_cd_class_field_new (c, _geas_module, "mod_time", 
_datetime_type);
+      geas_cd_field_prop_set (f, GEAS_CD_FPROP_NOTNULL);
     }
 
   return (c);
@@ -541,7 +552,8 @@
                                   g_strconcat ("_", f->name, NULL),
                                   GEAS_CD_DATATYPE_ID);
           /* The shadow field db column starts with an underscore */
-          shadow->name_db = g_strconcat ("_", f->name_db, NULL);
+          shadow->name_db  = g_strconcat ("_", f->name_db, NULL);
+          shadow->property = f->property | GEAS_CD_FPROP_INTERNAL;
 
           f->thisfield  = shadow;
           f->otherfield = geas_cd_class_find_field (f->otherclass,
@@ -569,11 +581,12 @@
                                                ").", f->name, NULL),
                                   GEAS_CD_DATATYPE_ID);
           /* The shadow field db column starts with an underscore */
-          shadow->name_db = g_strconcat ("_", f->thisclass->name_db, "_",
-                                         f->name_db, NULL);
+          shadow->name_db  = g_strconcat ("_", f->thisclass->name_db, "_",
+                                          f->name_db, NULL);
           /* FIXME: The above is for compatibility; this would be correct:
-          shadow->name_db = g_strconcat ("_", f->thisclass->name_db, "__",
-                                         f->name_db, NULL); */
+          shadow->name_db  = g_strconcat ("_", f->thisclass->name_db, "__",
+                                          f->name_db, NULL); */
+          shadow->property = GEAS_CD_FPROP_INTERNAL;
 
           f->thisfield  = geas_cd_class_find_field (f->thisclass, _geas_module,
                                                     "id");
@@ -1183,6 +1196,39 @@
   g_return_val_if_fail (f, NULL);
 
   return (f->otherfield);
+}
+
+/* ------------------------------------------------------------------------- *\
+ * Set a field property
+\* ------------------------------------------------------------------------- */
+void
+geas_cd_field_prop_set (geas_cd_field *f, int property)
+{
+  g_return_if_fail (f);
+
+  f->property |= property;
+}
+
+/* ------------------------------------------------------------------------- *\
+ * Clear a field property
+\* ------------------------------------------------------------------------- */
+void
+geas_cd_field_prop_clr (geas_cd_field *f, int property)
+{
+  g_return_if_fail (f);
+
+  f->property &= ~property;
+}
+
+/* ------------------------------------------------------------------------- *\
+ * Find out if a field property is set
+\* ------------------------------------------------------------------------- */
+int
+geas_cd_field_prop_get (geas_cd_field *f, int property)
+{
+  g_return_val_if_fail (f, 0);
+
+  return (f->property & property);
 }
 
 /* ------------------------------------------------------------------------- *\
Index: gnue/geas/src/classdef/classdef.h
diff -u gnue/geas/src/classdef/classdef.h:1.20 
gnue/geas/src/classdef/classdef.h:1.21
--- gnue/geas/src/classdef/classdef.h:1.20      Thu Nov  1 14:04:38 2001
+++ gnue/geas/src/classdef/classdef.h   Wed Nov 14 17:04:29 2001
@@ -19,7 +19,7 @@
    along with GEAS; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-   $Id: classdef.h,v 1.20 2001/11/01 19:04:38 reinhard Exp $
+   $Id: classdef.h,v 1.21 2001/11/14 22:04:29 reinhard Exp $
 */
 
 /* ------------------------------------------------------------------------- *\
@@ -147,7 +147,8 @@
  * Fields
 \* ------------------------------------------------------------------------- */
 
-#define GEAS_CD_FPROP_NOTNULL  0x0001;
+#define GEAS_CD_FPROP_NOTNULL  0x0001   /* may not contain NULL value */
+#define GEAS_CD_FPROP_INTERNAL 0x0002   /* only for internal use of GEAS */
 
 void             geas_cd_field_set_format (geas_cd_field *f, int format);
 const char      *geas_cd_field_get_name (const geas_cd_field *f);
@@ -159,4 +160,7 @@
 geas_cd_field   *geas_cd_field_get_thisfield (const geas_cd_field *f);
 geas_cd_class   *geas_cd_field_get_otherclass (const geas_cd_field *f);
 geas_cd_field   *geas_cd_field_get_otherfield (const geas_cd_field *f);
+void             geas_cd_field_prop_set (geas_cd_field *f, int property);
+void             geas_cd_field_prop_clr (geas_cd_field *f, int property);
+int              geas_cd_field_prop_get (geas_cd_field *f, int property);
 void             geas_cd_field_free (geas_cd_field *f);
Index: gnue/geas/src/classdef/gcdinfo.c
diff -u gnue/geas/src/classdef/gcdinfo.c:1.8 
gnue/geas/src/classdef/gcdinfo.c:1.9
--- gnue/geas/src/classdef/gcdinfo.c:1.8        Sat Oct 13 17:46:33 2001
+++ gnue/geas/src/classdef/gcdinfo.c    Wed Nov 14 17:04:29 2001
@@ -19,7 +19,7 @@
    along with GEAS; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-   $Id: gcdinfo.c,v 1.8 2001/10/13 21:46:33 reinhard Exp $
+   $Id: gcdinfo.c,v 1.9 2001/11/14 22:04:29 reinhard Exp $
 */
 
 #include <stdio.h>
@@ -53,6 +53,10 @@
       fl = geas_cd_class_fieldlist_new (c);
       while ((f = geas_cd_fieldlist_next (fl)))
         {
+          if (geas_cd_field_prop_get (f, GEAS_CD_FPROP_INTERNAL))
+            {
+              continue;
+            }
           printf ("%-32s ", geas_cd_field_get_name_full (f));
           switch (geas_cd_field_get_datatype (f))
             {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]