[ekg2-devel] Ekg2::Watch (new)
Wiesław Ochmiński
wiechu w wiechu.com
Śro, 20 Lut 2008, 19:28:03 CET
Kłaniam!
Łatka na dostęp do listy watches ze skryptów perlowych.
Pozdrawiam,
W.
--
Wiesław Ochmiński, Polska Północna, Malbork.
-------------- następna część ---------
Index: perl_bless.h
===================================================================
--- perl_bless.h (wersja 3798)
+++ perl_bless.h (kopia robocza)
@@ -16,6 +16,7 @@
BLESS_VARIABLE,
BLESS_PLUGIN,
BLESS_WINDOW,
+ BLESS_WATCH,
BLESS_COMMAND,
BLESS_SESSION_PARAM,
BLESS_TIMER,
@@ -49,6 +50,9 @@
#define bless_window(window)\
(SV *) ekg2_bless(BLESS_WINDOW, 0, window)
+#define bless_watch(watch)\
+ (SV *) ekg2_bless(BLESS_WATCH, 0, watch)
+
#define bless_command(command)\
(SV *) ekg2_bless(BLESS_COMMAND, 0, command)
Index: common/typemap
===================================================================
--- common/typemap (wersja 3798)
+++ common/typemap (kopia robocza)
@@ -5,12 +5,14 @@
Ekg2::Session T_Ekg2Ses
Ekg2::Session::Param T_Ekg2SesVar
Ekg2::Script T_Ekg2Scr
+Ekg2::Watch T_Ekg2Watch
Ekg2::Window T_Ekg2Win
Ekg2::Plugin T_Ekg2Plu
Ekg2::User T_Ekg2User
Ekg2::Timer T_Ekg2Time
Ekg2::Userlist T_PlainList
+Ekg2::Watch T_PlainList
short * T_PlainList
INPUT
@@ -39,6 +41,9 @@
T_Ekg2Comm
$var = (command_t *) Ekg2_ref_object($arg)
+T_Ekg2Watch
+ $var = (watch_t *) Ekg2_ref_object($arg)
+
T_Ekg2Win
$var = (window_t *) Ekg2_ref_object($arg)
@@ -61,6 +66,9 @@
T_Ekg2Comm
$arg = (void *) bless_command( (command_t *) $var);
+T_Ekg2Watch
+ $arg = (void *) bless_watch( (watch_t *) $var);
+
T_Ekg2Win
$arg = (void *) bless_window( (window_t *) $var);
Index: common/Ekg2.xs
===================================================================
--- common/Ekg2.xs (wersja 3798)
+++ common/Ekg2.xs (kopia robocza)
@@ -178,6 +178,7 @@
ekg2_boot(Session);
ekg2_boot(Variable);
ekg2_boot(Plugin);
+ ekg2_boot(Watch);
ekg2_boot(Window);
ekg2_boot(Command);
ekg2_boot(Timer);
Index: common/module.h
===================================================================
--- common/module.h (wersja 3798)
+++ common/module.h (kopia robocza)
@@ -12,6 +12,7 @@
#include <ekg/debug.h>
#include <ekg/dynstuff.h>
+#include <ekg/plugins.h>
#include <ekg/sessions.h>
#include <ekg/stuff.h>
#include <ekg/userlist.h>
@@ -38,6 +39,7 @@
typedef command_t *Ekg2__Command;
typedef window_t *Ekg2__Window;
typedef plugin_t *Ekg2__Plugin;
+typedef watch_t *Ekg2__Watch;
typedef struct timer *Ekg2__Timer;
Index: perl_bless.c
===================================================================
--- perl_bless.c (wersja 3798)
+++ perl_bless.c (kopia robocza)
@@ -126,6 +126,20 @@
hv_store(hv, "attr",4, create_sv_ptr(fstr->attr), 0);
}
+void ekg2_bless_watch(HV *hv, watch_t *watch)
+{
+ char *plugin;
+ if (watch->plugin) plugin = watch->plugin->name;
+ else plugin = ("-");
+ debug_bless("blessing watch fd:%d plugin:%s\n", watch->fd, plugin);
+ hv_store(hv, "fd", 2, newSViv(watch->fd), 0);
+ hv_store(hv, "type", 4, newSViv(watch->type), 0);
+ hv_store(hv, "removed", 7, newSViv(watch->removed), 0);
+ hv_store(hv, "timeout", 7, newSViv(watch->timeout), 0);
+ hv_store(hv, "plugin", 6, new_pv(plugin), 0);
+ hv_store(hv, "started", 7, newSViv(watch->started), 0);
+}
+
void ekg2_bless_window(HV *hv, window_t *window)
{
char *target = window_target(window);
@@ -222,6 +236,10 @@
stash = gv_stashpv("Ekg2::Plugin", 1);
ekg2_bless_plugin(hv, object);
break;
+ case BLESS_WATCH:
+ stash = gv_stashpv("Ekg2::Watch", 1);
+ ekg2_bless_watch(hv, object);
+ break;
case BLESS_WINDOW:
stash = gv_stashpv("Ekg2::Window", 1);
ekg2_bless_window(hv, object);
Więcej informacji o liście dyskusyjnej ekg2-devel