OSDN Git Service

Added lang package.
authorNagao Takeyuki <nagaotakeyuki@gmail.com>
Sat, 12 Sep 2009 13:27:15 +0000 (22:27 +0900)
committerNagao Takeyuki <nagaotakeyuki@gmail.com>
Sat, 12 Sep 2009 13:27:15 +0000 (22:27 +0900)
Signed-off-by: Nagao Takeyuki <nagaotakeyuki@gmail.com>
src/js/include/jdisp/lang/oop.jsh [new file with mode: 0644]
src/js/include/jdisp/lang/package.jsh [new file with mode: 0644]

diff --git a/src/js/include/jdisp/lang/oop.jsh b/src/js/include/jdisp/lang/oop.jsh
new file mode 100644 (file)
index 0000000..5e3a0a0
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _OOP_JSH\r
+#define _OOP_JSH\r
+\r
+/*\r
+ * Configurations\r
+ */\r
+\r
+#define OOP_SUPER_VAR _super\r
+\r
+\r
+#define OOP_NAMESPACE_DEFINED(a) (typeof a === 'object')\r
+\r
+#define OOP_DECLARE_NAMESPACE_ROOT(a) \\r
+  if (!OOP_NAMESPACE_DEFINED(a)) { a = new Object(); }\r
+#define OOP_DECLARE_NAMESPACE(a) \\r
+  if (!OOP_NAMESPACE_DEFINED(a)) { a = new Object(); }\r
+\r
+#define OOP_DECLARE_NAMESPACE1 OOP_DECLARE_NAMESPACE_ROOT\r
+#define OOP_CONCAT1(a) a1\r
+#define OOP_CONCAT2(a, ...) a.OOP_CONCAT1(__VA_ARGS__)\r
+#define OOP_CONCAT3(a, ...) a.OOP_CONCAT2(__VA_ARGS__)\r
+#define OOP_CONCAT4(a, ...) a.OOP_CONCAT3(__VA_ARGS__)\r
+#define OOP_CONCAT5(a, ...) a.OOP_CONCAT4(__VA_ARGS__)\r
+#define OOP_CONCAT6(a, ...) a.OOP_CONCAT5(__VA_ARGS__)\r
+#define OOP_CONCAT7(a, ...) a.OOP_CONCAT6(__VA_ARGS__)\r
+#define OOP_CONCAT8(a, ...) a.OOP_CONCAT7(__VA_ARGS__)\r
+#define OOP_DECLARE_NAMESPACE2(a1, a2) \\r
+  OOP_DECLARE_NAMESPACE1(a1) \\r
+  OOP_DECLARE_NAMESPACE(a1.a2)\r
+#define OOP_DECLARE_NAMESPACE3(a1, a2, a3) \\r
+  OOP_DECLARE_NAMESPACE2(a1, a2) \\r
+  OOP_DECLARE_NAMESPACE(a1.a2.a3)\r
+#define OOP_DECLARE_NAMESPACE4(a1, a2, a3, a4) \\r
+  OOP_DECLARE_NAMESPACE3(a1, a2, a3) \\r
+  OOP_DECLARE_NAMESPACE(a1.a2.a3.a4)\r
+#define OOP_DECLARE_NAMESPACE5(a1, a2, a3, a4, a5) \\r
+  OOP_DECLARE_NAMESPACE4(a1, a2, a3, a4) \\r
+  OOP_DECLARE_NAMESPACE(a1.a2.a3.a4.a5)\r
+#define OOP_DECLARE_NAMESPACE6(a1, a2, a3, a4, a5, a6) \\r
+  OOP_DECLARE_NAMESPACE5(a1, a2, a3, a4, a5) \\r
+  OOP_DECLARE_NAMESPACE(a1.a2.a3.a4.a5.a6)\r
+#define OOP_DECLARE_NAMESPACE7(a1, a2, a3, a4, a5, a6, a7) \\r
+  OOP_DECLARE_NAMESPACE6(a1, a2, a3, a4, a5, a6) \\r
+  OOP_DECLARE_NAMESPACE(a1.a2.a3.a4.a5.a6.a7)\r
+#define OOP_DECLARE_NAMESPACE8(a1, a2, a3, a4, a5, a6, a7, a8) \\r
+  OOP_DECLARE_NAMESPACE7(a1, a2, a3, a4, a5, a6, a7) \\r
+  OOP_DECLARE_NAMESPACE(a1.a2.a3.a4.a5.a6.a7.a8)\r
+\r
+#define OOP_CLASS(cls) OOP_NAMESPACE.cls\r
+#define OOP_MEMBER(cls, name) OOP_CLASS(cls).prototype.name\r
+#define OOP_PRIVATE_MEMBER(cls, name) OOP_MEMBER(cls, name)\r
+#define OOP_METHOD(cls, name) OOP_MEMBER(cls, name)\r
+#define OOP_PRIVATE_METHOD(cls, name) OOP_MEMBER(cls, name)\r
+#define OOP_FIELD(cls, name)  OOP_MEMBER(cls, name)\r
+#define OOP_FIELDS(cls, dict) (function (d) { \\r
+  for (var k in d) OOP_CLASS(cls).prototype[k] = d[k]; \\r
+}) (dict)\r
+#define OOP_PRIVATE_FIELD(cls, name) OOP_MEMBER(cls, name)\r
+#define OOP_STATIC(cls, name) OOP_CLASS(cls).name\r
+#define OOP_STATIC_FIELD(cls, name) OOP_STATIC(cls, name)\r
+#define OOP_STATIC_METHOD(cls, name) OOP_STATIC(cls, name)\r
+#define OOP_SUPER this.OOP_SUPER_VAR\r
+#define OOP_EXTENDS(cls, base) \\r
+  OOP_CLASS(cls).prototype = new base(); \\r
+  OOP_CLASS(cls).prototype.OOP_SUPER_VAR = base;\r
+\r
+#endif /* _OOP_JSH */\r
diff --git a/src/js/include/jdisp/lang/package.jsh b/src/js/include/jdisp/lang/package.jsh
new file mode 100644 (file)
index 0000000..e7eddf0
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _JDISP_LANG_PACKAGE_JSH\r
+#define _JDISP_LANG_PACKAGE_JSH\r
+\r
+#include "oop.jsh"\r
+\r
+#endif /* _JDISP_LANG_PACKAGE_JSH */\r