-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathTodo.xml
189 lines (162 loc) · 5.8 KB
/
Todo.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<?xml-stylesheet type="text/xsl" href="../../Docs/XSL/Todo.xsl" ?>
<topics xmlns:r="http://www.r-project.org">
<topic>
<title>Basics</title>
<items>
<item>
Sort out the inheritance issues with RFunctionImpl and RObjectImpl
and the interfaces and the implementation of the methods.
<br/>
I want the methods to be inherited from RObjectImpl.
</item>
<item>
Make the REvaluator a singleton, e.g. through a service
or make the factory smart enough to reuse the same object.
</item>
<item>
Allow JavaScript to pass an object to R and have this treated
as a JavaScript object. From this, allow dynamic calls to
JavaScript methods be called.
See include/js/jsapi.h
<js:code>
</js:code>
</item>
<item status="partial">
Convert R (non-scalar) vectors to JavaScript arrays.
<br/>
See RVariants.cpp in the inst/components directory.
</item>
<item>
Convert JavaScript hashes/associative/named arrays to R objects.
And the other way too.
</item>
<item>
Create NS exceptions in R/C++ code.
</item>
<item>
Classes for different JavaScript types.
<br/>
Should be able to use dynamic invocation via xptcall.
Can R handle this.
</item>
<item>
Call JavaScript methods from references to JavaScript objects in R.
<br/>
https://developer.mozilla.org/en/XPConnect_wrappers
</item>
<item>
Allow passing a JavaScript function to R.
</item>
<item>
Figure out XPTCall.
</item>
<item>
Make S4 objects accessible in JavaScript with
slots accessible as obj.slot.
</item>
<item>
Allow R programmers to implement an XPCOM interface.
</item>
<item>
Find out how to build xulrunner and firefox as embeddable libraries.
<br/>
Is building xulrunner and firefox from source
the same thing. i.e. using .mozconfig, make -f client.mk and so on.
<br/>
The browser doesn't seem to have been built, or
more specifically, if it is, how do we invoke it?
</item>
<item>
Embed xulrunner in R so we can run GUIs within R.
</item>
<item>
Embed R within Firefox as an extension/component.
</item>
<item>
Bindings for R to access XPCOM objects.
</item>
<item>
Allow specifying R functions as event handlers.
<br/>
Can we do this in JavaScript with
something akin to R::cb_func(obj).
What about anonymous functions.
(e.g. instead of "javascript:...." we might have "r:function(a, b) {...}"
and have R interpret that code)
Or can we do something nice via XBL.
<br/>
Look at how Python does it.
</item>
<item>
reflection.cc (line 93)
Converting nsID/nsIID to a string via ToString() but only if we
use nspr.
</item>
<item>
TestXPTCInvoke.cpp works when in the mozilla-1.9.1/xpcom/reflect/xptcall/tests
tree, but not if we use xul-runner.
Code is the same. But the compilation and linking are different.
<invisible>
<sh:output>
c++ -o TestXPTCInvoke.o -c -I../../../../dist/include/system_wrappers -include ../../../../config/gcc_hidden.h -DOSTYPE=\"Darwin9.7.0\"\
-DOSARCH=Darwin -I. -I. -I../../../../dist/include/xpcom -I../../../../dist/include -I../../../../dist/include/TestXPTC -I/Users/du\
ncan/Projects/Mozilla/mozilla-1.9.1/dist/include/nspr -I/Users/duncan/Projects/Mozilla/mozilla-1.9.1/dist/sdk/include -I/usr/X11/inc\
lude -fPIC -I/usr/X11/include -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -W\
no-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-long-long -fno-strict-aliasing -fpascal-strings -fno-common -fshort-wchar -\
pthread -I/Developer/Headers/FlatCarbon -pipe -DDEBUG -D_DEBUG -DDEBUG_duncan -DTRACING -g -I/usr/X11/include -DMOZILLA_CLIENT -inclu\
de ../../../../mozilla-config.h -Wp,-MD,.deps/TestXPTCInvoke.pp TestXPTCInvoke.cpp
TestXPTCInvoke.cpp: In function 'int main()':
TestXPTCInvoke.cpp:904: warning: format '%s' expects type 'char*', but argument 2 has type 'void*'
TestXPTCInvoke.cpp: At global scope:
TestXPTCInvoke.cpp:1325: warning: 'void DoSpeedTest()' defined but not used
c++ -I/usr/X11/include -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-vi\
rtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-long-long -fno-strict-aliasing -fpascal-strings -fno-common -fshort-wchar -pthread -\
I/Developer/Headers/FlatCarbon -pipe -DDEBUG -D_DEBUG -DDEBUG_duncan -DTRACING -g -o TestXPTCInvoke TestXPTCInvoke.o -framework Coco\
a -framework ExceptionHandling -Wl,-executable_path,/Users/duncan/Projects/Mozilla/mozilla-1.9.1/dist/bin -L../../../../dist/bin\
-L../../../../dist/lib /Users/duncan/Projects/Mozilla/mozilla-1.9.1/dist/lib/libxpcomglue_s.a -L/Users/duncan/Projects/Mozilla/mozilla\
-1.9.1/dist/bin -lxpcom -L/Users/duncan/Projects/Mozilla/mozilla-1.9.1/dist/lib -lplds4 -lplc4 -lnspr4
</sh:output>
Note that we change the include to get the system_wrappers,
include gcc_hidden.h, probably need the OSTYPE and OSARCH,
use nspr, g++ options, -DMOZILLA_CLIENT, mozilla-config.h;
link against xpcom plds4, plc4, nspr4, pull in libxpcomglue_s.a
<br/>
</invisible>
See RFirefox/expt/xpt/Makefile for how to get this to work
agains the build in mozilla-1.9.1/dist/{bin,lib}
</item>
<item>
Implement the mapping from R to variants and back.
</item>
</items>
</topic>
<topic>
<title>IDL</title>
<items>
<item>
Support for sequence. See RObject.idl and creating the .h file.
</item>
</items>
</topic>
<topic>
<title>Ideas for Extensions</title>
<items>
<item>
Allow tabs to be collected in a tree in a panel on the
side of the browser so that we can group them more
than just tabs.
Allow dragging the entire parent node to a new window to put them in a different window,
or for a different profile.
</item>
<item>
Record the history for a particular tab and see how we jump around
and display this in a plot that lets us see where we started
and remember why we were there.
</item>
<item>
Let me see the (Google) search string that brought me to this page.
i.e. go back through the history to the top-most page and get the search string.
</item>
</items>
</topic>
</topics>