OSSP CVS Repository

ossp - Difference in ossp-pkg/cfg/perl/cfg.xs versions 1.1 and 1.2
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/cfg/perl/cfg.xs 1.1 -> 1.2

--- cfg.xs       2004/11/14 18:38:53     1.1
+++ cfg.xs       2004/11/17 13:14:34     1.2
@@ -575,6 +575,70 @@
             RETVAL
 
 cfg_rc_t
+cfg_data_get(data,attr,va_arg1)
+    CASE: (cfg_data_attr_t)SvIV(ST(1)) == CFG_DATA_ATTR_TYPE
+        PROTOTYPE:
+            $$$
+        INPUT:
+            cfg_data_t *data
+            cfg_data_attr_t attr
+            cfg_data_type_t &va_arg1 = NO_INIT
+        CODE:
+            RETVAL = cfg_data_get(data, attr, &va_arg1);
+        OUTPUT:
+            va_arg1
+            RETVAL
+    CASE: (cfg_data_attr_t)SvIV(ST(1)) == CFG_DATA_ATTR_VALUE
+        INPUT:
+            cfg_data_t *data
+            cfg_data_attr_t attr
+            SV *va_arg1
+        PREINIT:
+            cfg_data_type_t type;
+        CODE:
+            if ((RETVAL = cfg_data_get(data, CFG_DATA_ATTR_TYPE, &type)) == CFG_OK) {
+                switch (type) {
+                    case CFG_DATA_TYPE_PTR: {
+                        void *arg;
+                        RETVAL = cfg_data_get(data, attr, &arg);
+                        sv_setiv(va_arg1, PTR2INT(arg));
+                        break;
+                    }
+                    case CFG_DATA_TYPE_STR: {
+                        char *arg;
+                        RETVAL = cfg_data_set(data, attr, &arg);
+                        sv_setpv(va_arg1, arg);
+                        break;
+                    }
+                    case CFG_DATA_TYPE_INT: {
+                        int arg;
+                        RETVAL = cfg_data_set(data, attr, &arg);
+                        sv_setiv(va_arg1, arg);
+                        break;
+                    }
+                    case CFG_DATA_TYPE_FLT: {
+                        double arg;
+                        RETVAL = cfg_data_set(data, attr, &arg);
+                        sv_setnv(va_arg1, arg);
+                        break;
+                    }
+                }
+            }
+        OUTPUT:
+            va_arg1
+            RETVAL
+    CASE: (cfg_data_attr_t)SvIV(ST(1)) == CFG_DATA_ATTR_CTRL
+        INPUT:
+            cfg_data_t *data
+            cfg_data_attr_t attr
+            cfg_data_cb_t &va_arg1 = NO_INIT
+        CODE:
+            RETVAL = cfg_data_set(data, attr, &va_arg1);
+        OUTPUT:
+            va_arg1
+            RETVAL
+
+cfg_rc_t
 cfg_data_ctrl(data,ctrl,va_arg1)
     CASE: (cfg_data_ctrl_t)SvIV(ST(1)) == CFG_DATA_CTRL_CLONE
         PROTOTYPE:

CVSTrac 2.0.1