rpm  5.4.4
ruby/rpmte-rb.c
Go to the documentation of this file.
00001 
00005 #include "system.h"
00006 
00007 #include "rpm-rb.h"
00008 #include "rpmte-rb.h"
00009 
00010 #ifdef  NOTYET
00011 #include <argv.h>
00012 #include <mire.h>
00013 #endif
00014 
00015 #define _RPMFI_INTERNAL
00016 #include <rpmtag.h>
00017 #include <rpmtypes.h>
00018 #include <rpmio.h>
00019 #include <rpmfi.h>
00020 #include <rpmte.h>
00021 
00022 #include "../debug.h"
00023 
00024 VALUE rpmteClass;
00025 
00026 /*@unchecked@*/
00027 static int _debug = 0;
00028 
00029 /* --- helpers */
00030 static void *
00031 rpmte_ptr(VALUE s)
00032 {
00033     void *ptr;
00034     Data_Get_Struct(s, void, ptr);
00035     return ptr;
00036 }
00037 
00038 /* --- Object methods */
00039 
00040 static void
00041 initMethods(VALUE klass)
00042 {
00043 }
00044 
00045 /* --- Object properties */
00046 static VALUE
00047 rpmte_debug_get(VALUE s)
00048 {
00049 if (_debug)
00050 fprintf(stderr, "==> %s(0x%lx)\n", __FUNCTION__, s);
00051     return INT2FIX(_debug);
00052 }
00053 
00054 static VALUE
00055 rpmte_debug_set(VALUE s, VALUE v)
00056 {
00057 if (_debug)
00058 fprintf(stderr, "==> %s(0x%lx, 0x%lx)\n", __FUNCTION__, s, v);
00059     return INT2FIX(_debug = FIX2INT(v));
00060 }
00061 
00062 #ifdef  NOTYET
00063 static VALUE
00064 rpmte_rootdir_get(VALUE s)
00065 {
00066     void *ptr = rpmte_ptr(s);
00067     rpmte te = ptr;
00068 if (_debug)
00069 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
00070     return rb_str_new2(rpmteRootDir(te));
00071 }
00072 
00073 static VALUE
00074 rpmte_rootdir_set(VALUE s, VALUE v)
00075 {
00076     void *ptr = rpmte_ptr(s);
00077     rpmte te = ptr;
00078 if (_debug)
00079 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr);
00080     rpmteSetRootDir(te, StringValueCStr(v));
00081     return rb_str_new2(rpmteRootDir(te));
00082 }
00083 
00084 static VALUE
00085 rpmte_vsflags_get(VALUE s)
00086 {
00087     void *ptr = rpmte_ptr(s);
00088     rpmte te = ptr;
00089 if (_debug)
00090 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
00091     return INT2FIX(_debug);
00092 }
00093 
00094 static VALUE
00095 rpmte_vsflags_set(VALUE s, VALUE v)
00096 {
00097     void *ptr = rpmte_ptr(s);
00098     rpmte te = ptr;
00099 if (_debug)
00100 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr);
00101     rpmteSetVSFlags(te, FIX2INT(v));
00102     return INT2FIX(rpmteVSFlags(te));
00103 }
00104 #endif  /* NOTYET */
00105 
00106 static void
00107 initProperties(VALUE klass)
00108 {
00109     rb_define_method(klass, "debug", rpmte_debug_get, 0);
00110     rb_define_method(klass, "debug=", rpmte_debug_set, 1);
00111 #ifdef  NOTYET
00112     rb_define_method(klass, "rootdir", rpmte_rootdir_get, 0);
00113     rb_define_method(klass, "rootdir=", rpmte_rootdir_set, 1);
00114     rb_define_method(klass, "vsflags", rpmte_vsflags_get, 0);
00115     rb_define_method(klass, "vsflags=", rpmte_vsflags_set, 1);
00116 #endif  /* NOTYET */
00117 }
00118 
00119 /* --- Object ctors/dtors */
00120 static void
00121 rpmte_free(rpmte te)
00122 {
00123 if (_debug)
00124 fprintf(stderr, "==> %s(%p)\n", __FUNCTION__, te);
00125 #ifdef  NOTYET
00126     te = rpmteFree(te);
00127 #else
00128     te = _free(te);
00129 #endif
00130 }
00131 
00132 static VALUE
00133 rpmte_alloc(VALUE klass)
00134 {
00135 #ifdef  NOTYET
00136     rpmte te = NULL;
00137 #else
00138     rpmte te = xcalloc(1, sizeof(void *));
00139 #endif
00140     VALUE obj = Data_Wrap_Struct(klass, 0, rpmte_free, te);
00141 if (_debug)
00142 fprintf(stderr, "==> %s(0x%lx) obj 0x%lx te %p\n", __FUNCTION__, klass, obj, te);
00143     return obj;
00144 }
00145 
00146 /* --- Class initialization */
00147 
00148 void
00149 Init_rpmte(void)
00150 {
00151     rpmteClass = rb_define_class("Te", rb_cObject);
00152 if (_debug)
00153 fprintf(stderr, "==> %s() rpmteClass 0x%lx\n", __FUNCTION__, rpmteClass);
00154     rb_define_alloc_func(rpmteClass, rpmte_alloc);
00155     initProperties(rpmteClass);
00156     initMethods(rpmteClass);
00157 }