gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash/extensions/lirc lirc.cpp


From: Rob Savoye
Subject: [Gnash-commit] gnash/extensions/lirc lirc.cpp
Date: Fri, 14 Sep 2007 23:16:21 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Rob Savoye <rsavoye>    07/09/14 23:16:21

Modified files:
        extensions/lirc: lirc.cpp 

Log message:
        Much more complete implementation of the lirc_client API.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/extensions/lirc/lirc.cpp?cvsroot=gnash&r1=1.1&r2=1.2

Patches:
Index: lirc.cpp
===================================================================
RCS file: /sources/gnash/gnash/extensions/lirc/lirc.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- lirc.cpp    12 Sep 2007 04:16:30 -0000      1.1
+++ lirc.cpp    14 Sep 2007 23:16:21 -0000      1.2
@@ -20,11 +20,16 @@
 #include "config.h"
 #endif
 
-#include <map>
 #include <iostream>
+
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+
 #include <string>
 #include "log.h"
 #include "lirc.h"
+#include "lirc/lirc_client.h"
 #include "fn_call.h"
 #include "as_object.h"
 #include "builtin_function.h" // need builtin_function
@@ -33,20 +38,19 @@
 
 namespace gnash
 {
+  struct lirc_config *config;
 
-as_value lirc_ext_init(const fn_call& fn);
-as_value lirc_ext_deinit(const fn_call& fn);
-as_value lirc_ext_readconfig(const fn_call& fn);
-as_value lirc_ext_freeconfig(const fn_call& fn);
-as_value lirc_ext_nextcode(const fn_call& fn);
-as_value lirc_ext_code2char(const fn_call& fn);
-as_value lirc_ext_readconfig_only(const fn_call& fn);
-as_value lirc_ext_code2charprog(const fn_call& fn);
-as_value lirc_ext_getsocketname(const fn_call& fn);
-as_value lirc_ext_getmode(const fn_call& fn);
-as_value lirc_ext_setmode(const fn_call& fn);
-
-LogFile& dbglogfile = LogFile::getDefaultInstance();
+  as_value lirc_ext_init(const fn_call& fn);
+  as_value lirc_ext_deinit(const fn_call& fn);
+  as_value lirc_ext_readconfig(const fn_call& fn);
+  as_value lirc_ext_freeconfig(const fn_call& fn);
+  as_value lirc_ext_nextcode(const fn_call& fn);
+  as_value lirc_ext_code2char(const fn_call& fn);
+  as_value lirc_ext_readconfig_only(const fn_call& fn);
+  as_value lirc_ext_code2charprog(const fn_call& fn);
+  as_value lirc_ext_getsocketname(const fn_call& fn);
+  as_value lirc_ext_getmode(const fn_call& fn);
+  as_value lirc_ext_setmode(const fn_call& fn);
 
 class lirc_as_object : public as_object
 {
@@ -57,7 +61,7 @@
 static void
 attachInterface(as_object *obj)
 {
-//    GNASH_REPORT_FUNCTION;
+    GNASH_REPORT_FUNCTION;
     obj->init_member("lirc_init", new builtin_function(lirc_ext_init));
     obj->init_member("lirc_deinit", new builtin_function(lirc_ext_deinit));
     obj->init_member("lirc_readconfig", new 
builtin_function(lirc_ext_readconfig));
@@ -74,7 +78,7 @@
 static as_object*
 getInterface()
 {
-//    GNASH_REPORT_FUNCTION;
+    GNASH_REPORT_FUNCTION;
     static boost::intrusive_ptr<as_object> o;
     if (o == NULL) {
        o = new as_object();
@@ -85,7 +89,7 @@
 static as_value
 lirc_ctor(const fn_call& /* fn */)
 {
-//    GNASH_REPORT_FUNCTION;
+    GNASH_REPORT_FUNCTION;
     lirc_as_object* obj = new lirc_as_object();
 
     attachInterface(obj);
@@ -96,38 +100,44 @@
 
 Lirc::Lirc() 
 {
-//    GNASH_REPORT_FUNCTION;
+    GNASH_REPORT_FUNCTION;
 }
 
 Lirc::~Lirc()
 {
-//    GNASH_REPORT_FUNCTION;
+    GNASH_REPORT_FUNCTION;
 }
 
+//  int lirc_init(char *prog,int verbose);
 as_value
-lirc_ext_deinit(const fn_call& fn)
+lirc_ext_init(const fn_call& fn)
 {
     GNASH_REPORT_FUNCTION;
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
        string text = fn.arg(0).to_string();
-//     return as_value(ptr->obj.deinit(text.c_str()));
+       int num = fn.arg(1).to_number<int>();
+       return as_value(lirc_init(const_cast<char *>(text.c_str()), num));
     }
+    return as_value(false);
 }
 
+// int lirc_deinit(void);
 as_value
-lirc_ext_init(const fn_call& fn)
+lirc_ext_deinit(const fn_call& fn)
 {
     GNASH_REPORT_FUNCTION;
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
        string text = fn.arg(0).to_string();
-//     return as_value(ptr->obj.init(text.c_str()));
+       return as_value(lirc_deinit());
     }
+    return as_value(false);
 }
 
+// int lirc_readconfig(char *file,struct lirc_config **config, int 
(check)(char *s));
 as_value
 lirc_ext_readconfig(const fn_call& fn)
 {
@@ -136,19 +146,29 @@
     
     if (fn.nargs > 0) {
        string text = fn.arg(0).to_string();
+      config = dynamic_cast<lirc_config *>(fn.arg(1).to_object().get());
+      char *code = const_cast<char *>(text.c_str());
+      //      char *check = const_cast<char *>(fn.arg(2).to_string().c_str());
+      //      return as_value(lirc_readconfig(const_cast<char *>(text.c_str(), 
&config, check)));
     }
+    return as_value(false);
 }
 
+// void lirc_freeconfig(struct lirc_config *config);
 as_value lirc_ext_freeconfig(const fn_call& fn)
 {
     GNASH_REPORT_FUNCTION;
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
-       string text = fn.arg(0).to_string();
+      config = dynamic_cast<lirc_config *>(fn.arg(0).to_object().get());
+      lirc_freeconfig(config);
+      return as_value(true);
     }
+    return as_value(false);
 }
 
+// int lirc_nextcode(char **code);
 as_value lirc_ext_nextcode(const fn_call& fn)
 {
     GNASH_REPORT_FUNCTION;
@@ -156,19 +176,29 @@
     
     if (fn.nargs > 0) {
        string text = fn.arg(0).to_string();
+       char *code = const_cast<char *>(text.c_str());
+       return as_value(lirc_nextcode(&code));
     }
+    return as_value(false);
 }
 
+// int lirc_code2char(struct lirc_config *config,char *code,char **string);
 as_value lirc_ext_code2char(const fn_call& fn)
 {
     GNASH_REPORT_FUNCTION;
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
-       string text = fn.arg(0).to_string();
+      config = dynamic_cast<lirc_config *>(fn.arg(0).to_object().get());
+      char *code = const_cast<char *>(fn.arg(1).to_string().c_str());
+      char *str = const_cast<char *>(fn.arg(2).to_string().c_str());
+      return as_value(lirc_code2char(config, code, &str));
     }
+    return as_value(false);
 }
 
+// int lirc_readconfig_only(char *file,struct lirc_config **config,
+//                          int (check)(char *s));
 as_value
 lirc_ext_readconfig_only(const fn_call& fn)
 {
@@ -176,10 +206,16 @@
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
-       string text = fn.arg(0).to_string();
+      char *file = const_cast<char *>(fn.arg(0).to_string().c_str());
+      config = dynamic_cast<lirc_config *>(fn.arg(1).to_object().get());
+      char *check = const_cast<char *>(fn.arg(2).to_string().c_str());
+      //      return as_value(lirc_readconfig_only(file, &config, check));
     }
+    return as_value(false);
 }
 
+// int lirc_code2charprog(struct lirc_config *config,char *code,char **string,
+//                        char **prog);
 as_value
 lirc_ext_code2charprog(const fn_call& fn)
 {
@@ -187,10 +223,16 @@
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
-       string text = fn.arg(0).to_string();
+       config = dynamic_cast<lirc_config *>(fn.arg(0).to_object().get());
+       char *code = const_cast<char *>(fn.arg(1).to_string().c_str());
+       char *str = const_cast<char *>(fn.arg(2).to_string().c_str());
+       char *prog = const_cast<char *>(fn.arg(3).to_string().c_str());
+       return as_value(lirc_code2charprog(config, code, &str, &prog));
     }
+    return as_value(false);
 }
 
+// size_t lirc_getsocketname(const char *filename, char *buf, size_t size);
 as_value
 lirc_ext_getsocketname(const fn_call& fn)
 {
@@ -198,10 +240,15 @@
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
-       string text = fn.arg(0).to_string();
+      const char *filename = fn.arg(0).to_string().c_str();
+      char *buf = const_cast<char *>(fn.arg(1).to_string().c_str());
+      size_t size = fn.arg(2).to_number<int>();
+      lirc_getsocketname(filename, buf, size);
     }
+    return as_value(false);
 }
 
+// const char *lirc_getmode(struct lirc_config *config);
 as_value
 lirc_ext_getmode(const fn_call& fn)
 {
@@ -209,10 +256,13 @@
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
-       string text = fn.arg(0).to_string();
+       config = dynamic_cast<lirc_config *>(fn.arg(0).to_object().get());
+       return as_value(lirc_getmode(config));
     }
+    return as_value(false);
 }
 
+// const char *lirc_setmode(struct lirc_config *config, const char *mode);
 as_value
 lirc_ext_setmode(const fn_call& fn)
 {
@@ -220,8 +270,11 @@
     boost::intrusive_ptr<lirc_as_object> ptr = 
ensureType<lirc_as_object>(fn.this_ptr);
     
     if (fn.nargs > 0) {
-       string text = fn.arg(0).to_string();
+       config = dynamic_cast<lirc_config *>(fn.arg(0).to_object().get());
+       char *mode = const_cast<char *>(fn.arg(1).to_string().c_str());
+       return as_value(lirc_setmode(config, mode));
     }
+    return as_value(false);
 }
 
 std::auto_ptr<as_object>
@@ -230,6 +283,7 @@
     return std::auto_ptr<as_object>(new lirc_as_object());
 }
 
+// const char *lirc_setmode(struct lirc_config *config, const char *mode);
 extern "C" {
     void
     lirc_class_init(as_object &obj)




reply via email to

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