[rkward-cvs] SF.net SVN: rkward: [787] trunk/rkward/rkward
tfry at users.sourceforge.net
tfry at users.sourceforge.net
Sun Oct 1 22:35:40 UTC 2006
Revision: 787
http://svn.sourceforge.net/rkward/?rev=787&view=rev
Author: tfry
Date: 2006-10-01 15:35:28 -0700 (Sun, 01 Oct 2006)
Log Message:
-----------
First use of RCommand::GetStructuredData, practicing on something easy.
This seems to be more code to write in general, but also much more readable
Modified Paths:
--------------
trunk/rkward/rkward/dialogs/rkloadlibsdialog.cpp
trunk/rkward/rkward/dialogs/rkloadlibsdialog.h
trunk/rkward/rkward/rbackend/rdata.cpp
trunk/rkward/rkward/rbackend/rembedinternal.cpp
trunk/rkward/rkward/rbackend/rpackages/rkward/R/internal.R
Modified: trunk/rkward/rkward/dialogs/rkloadlibsdialog.cpp
===================================================================
--- trunk/rkward/rkward/dialogs/rkloadlibsdialog.cpp 2006-10-01 21:44:11 UTC (rev 786)
+++ trunk/rkward/rkward/dialogs/rkloadlibsdialog.cpp 2006-10-01 22:35:28 UTC (rev 787)
@@ -2,7 +2,7 @@
rkloadlibsdialog - description
-------------------
begin : Mon Sep 6 2004
- copyright : (C) 2004 by Thomas Friedrichsmeier
+ copyright : (C) 2004, 2006 by Thomas Friedrichsmeier
email : tfry at users.sourceforge.net
***************************************************************************/
@@ -598,11 +598,19 @@
if (!command->failed ()) {
delete placeholder;
placeholder = 0;
- RK_ASSERT (command->getDataType () == RData::StringVector);
- RK_ASSERT ((command->getDataLength () % 2) == 1);
- unsigned int count = (command->getDataLength () / 2);
+
+ RK_ASSERT (command->getDataLength () == 3);
+
+ RData *names = command->getStructureVector ()[0];
+ RData *versions = command->getStructureVector ()[1];
+ RData *repos = command->getStructureVector ()[2];
+
+ unsigned int count = names->getDataLength ();
+ RK_ASSERT (count == versions->getDataLength ());
+ RK_ASSERT (repos->getDataLength () == 1);
+
for (unsigned int i=0; i < count; ++i) {
- new QListViewItem (installable_view, command->getStringVector ()[i], command->getStringVector ()[count + i]);
+ new QListViewItem (installable_view, names->getStringVector ()[i], versions->getStringVector ()[i]);
}
installable_view->setEnabled (true);
@@ -613,7 +621,7 @@
}
// this is after the repository was chosen. Update the repository string.
- parent->repos_string = command->getStringVector ()[2 * count];
+ parent->repos_string = repos->getStringVector ()[0];
} else {
get_list_button->setEnabled (true);
}
@@ -646,7 +654,7 @@
get_list_button->setEnabled (false);
- RCommand *command = new RCommand ("c (.rk.get.available.packages (), rk.make.repos.string ())", RCommand::App | RCommand::GetStringVector, QString::null, this, FIND_AVAILABLE_PACKAGES_COMMAND);
+ RCommand *command = new RCommand (".rk.get.available.packages ()", RCommand::App | RCommand::GetStructuredData, QString::null, this, FIND_AVAILABLE_PACKAGES_COMMAND);
RKProgressControl *control = new RKProgressControl (this, i18n ("Please stand by while downloading the list of available packages."), i18n ("Fetching list"), RKProgressControl::CancellableProgress | RKProgressControl::AutoCancelCommands);
control->addRCommand (command, true);
RKGlobals::rInterface ()->issueCommand (command, parent->chain);
Modified: trunk/rkward/rkward/dialogs/rkloadlibsdialog.h
===================================================================
--- trunk/rkward/rkward/dialogs/rkloadlibsdialog.h 2006-10-01 21:44:11 UTC (rev 786)
+++ trunk/rkward/rkward/dialogs/rkloadlibsdialog.h 2006-10-01 22:35:28 UTC (rev 787)
@@ -2,7 +2,7 @@
rkloadlibsdialog - description
-------------------
begin : Mon Sep 6 2004
- copyright : (C) 2004 by Thomas Friedrichsmeier
+ copyright : (C) 2004, 2006 by Thomas Friedrichsmeier
email : tfry at users.sourceforge.net
***************************************************************************/
Modified: trunk/rkward/rkward/rbackend/rdata.cpp
===================================================================
--- trunk/rkward/rkward/rbackend/rdata.cpp 2006-10-01 21:44:11 UTC (rev 786)
+++ trunk/rkward/rkward/rbackend/rdata.cpp 2006-10-01 22:35:28 UTC (rev 787)
@@ -82,6 +82,7 @@
void RData::detachData () {
data = 0;
length = 0;
+ datatype = NoData;
}
void RData::setData (RData *from) {
Modified: trunk/rkward/rkward/rbackend/rembedinternal.cpp
===================================================================
--- trunk/rkward/rkward/rbackend/rembedinternal.cpp 2006-10-01 21:44:11 UTC (rev 786)
+++ trunk/rkward/rkward/rbackend/rembedinternal.cpp 2006-10-01 22:35:28 UTC (rev 787)
@@ -455,7 +455,10 @@
{
RData **structure_array = new RData*[count];
for (unsigned int i=0; i < count; ++i) {
- structure_array[i] = SEXPToRData (VECTOR_ELT (from_exp, i));
+ SEXP subexp;
+ PROTECT (subexp = VECTOR_ELT (from_exp, i));
+ structure_array[i] = SEXPToRData (subexp);
+ UNPROTECT (1);
}
data->data = structure_array;
}
@@ -716,9 +719,6 @@
UNPROTECT (1); // exp
- if (*error != NoError) {
- return 0;
- }
return data;
}
Modified: trunk/rkward/rkward/rbackend/rpackages/rkward/R/internal.R
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkward/R/internal.R 2006-10-01 21:44:11 UTC (rev 786)
+++ trunk/rkward/rkward/rbackend/rpackages/rkward/R/internal.R 2006-10-01 22:35:28 UTC (rev 787)
@@ -132,7 +132,7 @@
".rk.get.available.packages" <- function () {
x <- .rk.cached.available.packages ()
- return (c (as.vector (x[,1]), as.vector (x[,2])))
+ return (list (as.character (x[,1]), as.character (x[,2]), rk.make.repos.string ()))
}
"require" <- function (package, quietly = FALSE, character.only = FALSE, ...)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the rkward-tracker
mailing list