From noreply at r-forge.r-project.org Thu Nov 14 02:46:47 2013 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Thu, 14 Nov 2013 02:46:47 +0100 (CET) Subject: [Rprotobuf-commits] r539 - in pkg: . inst/unitTests src Message-ID: <20131114014647.57519184F46@r-forge.r-project.org> Author: murray Date: 2013-11-14 02:46:46 +0100 (Thu, 14 Nov 2013) New Revision: 539 Modified: pkg/ChangeLog pkg/inst/unitTests/runit.import.R pkg/src/lookup.cpp Log: Check in change I made last month addressing a bug Sundar found whereby RProtoBuf prevents you from being able to use <<- in your code. Modified: pkg/ChangeLog =================================================================== --- pkg/ChangeLog 2013-09-17 06:56:56 UTC (rev 538) +++ pkg/ChangeLog 2013-11-14 01:46:46 UTC (rev 539) @@ -1,3 +1,11 @@ +2013-10-23 Murray Stokely + + * src/lookup.cpp (rprotobuf): Remove stop() error in object table + assignment as this was causing errors with the '<<-' operator in + any code using RProtoBuf. + * inst/unitTests/runit.import.R (test.assign.in.global): Add a + test for the above. + 2013-09-16 Murray Stokely * DESCRIPTION (Version): Increment to 0.3.1.1. Modified: pkg/inst/unitTests/runit.import.R =================================================================== --- pkg/inst/unitTests/runit.import.R 2013-09-17 06:56:56 UTC (rev 538) +++ pkg/inst/unitTests/runit.import.R 2013-11-14 01:46:46 UTC (rev 539) @@ -18,3 +18,8 @@ # Verify that we get a graceful error rather than a segfault. checkException(readProtoFiles("/etc/hosts")) } + +test.assign.in.global <- function() { + xx.undef <<- 3 + checkEquals(xx.undef, 3) +} Modified: pkg/src/lookup.cpp =================================================================== --- pkg/src/lookup.cpp 2013-09-17 06:56:56 UTC (rev 538) +++ pkg/src/lookup.cpp 2013-11-14 01:46:46 UTC (rev 539) @@ -175,7 +175,6 @@ #ifdef LOOKUP_DEBUG Rprintf( " >> rProtoBufTable_assign( %s ) \n", name ); #endif - Rf_error("can't assign to protocol buffer descriptor pool"); return(R_NilValue); // make -Wall happy } From noreply at r-forge.r-project.org Thu Nov 14 02:47:29 2013 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Thu, 14 Nov 2013 02:47:29 +0100 (CET) Subject: [Rprotobuf-commits] r540 - pkg/src Message-ID: <20131114014730.02930184F46@r-forge.r-project.org> Author: murray Date: 2013-11-14 02:47:29 +0100 (Thu, 14 Nov 2013) New Revision: 540 Modified: pkg/src/extensions.cpp Log: Remove TODO that has been addressed. Modified: pkg/src/extensions.cpp =================================================================== --- pkg/src/extensions.cpp 2013-11-14 01:46:46 UTC (rev 539) +++ pkg/src/extensions.cpp 2013-11-14 01:47:29 UTC (rev 540) @@ -25,9 +25,6 @@ namespace rprotobuf { -// TODO add num_extensions to wrapper_Message.cpp and show this also -// in show(). - RcppExport SEXP getExtension( SEXP pointer, SEXP sfielddesc){ /* grab the Message pointer */ Rcpp::XPtr message(pointer) ; From noreply at r-forge.r-project.org Thu Nov 14 03:47:26 2013 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Thu, 14 Nov 2013 03:47:26 +0100 (CET) Subject: [Rprotobuf-commits] r541 - in pkg: . R inst/unitTests vignettes/RProtoBuf-quickref Message-ID: <20131114024726.E5B16184F46@r-forge.r-project.org> Author: murray Date: 2013-11-14 03:47:25 +0100 (Thu, 14 Nov 2013) New Revision: 541 Modified: pkg/ChangeLog pkg/R/extensions.R pkg/inst/unitTests/runit.extensions.R pkg/vignettes/RProtoBuf-quickref/RProtoBuf-quickref.Rnw Log: Raise an R stop() error rather than crashing with a CHECK failure in C++ code when the user attempts to get an extension of the wrong type. Modified: pkg/ChangeLog =================================================================== --- pkg/ChangeLog 2013-11-14 01:47:29 UTC (rev 540) +++ pkg/ChangeLog 2013-11-14 02:47:25 UTC (rev 541) @@ -1,3 +1,10 @@ +2013-11-13 Murray Stokely + + * R/extensions.R: Give a user friendly error message if someone tries + to set an extension to a message of the wrong type instead of + causing a C++ check failure that terminates your R session. + * inst/unitTests/runit.extensions.R (test.extension): Add test. + 2013-10-23 Murray Stokely * src/lookup.cpp (rprotobuf): Remove stop() error in object table Modified: pkg/R/extensions.R =================================================================== --- pkg/R/extensions.R 2013-11-14 01:47:29 UTC (rev 540) +++ pkg/R/extensions.R 2013-11-14 02:47:25 UTC (rev 541) @@ -43,6 +43,14 @@ if (!is_extension(field)) { stop(paste(name(field), "is not an extension FieldDescriptor.")) } + # This check causes a CHECK failure in the C++ code, so give + # a more user-friendly error here. + if (containing_type(field)@type != object at type) { + stop(paste("Field", name(field), + "does not match message type (", + containing_type(field)@type, "!=", + object at type, ")")) + } .Call( "getExtension", object at pointer, field, PACKAGE = "RProtoBuf" ) } ) Modified: pkg/inst/unitTests/runit.extensions.R =================================================================== --- pkg/inst/unitTests/runit.extensions.R 2013-11-14 01:47:29 UTC (rev 540) +++ pkg/inst/unitTests/runit.extensions.R 2013-11-14 02:47:25 UTC (rev 541) @@ -75,4 +75,8 @@ ## Check that we do something sensible if invalid field descriptors are passed checkException(test$getExtension(protobuf_unittest.TestAllExtensions)) checkException(test$setExtension(protobuf_unittest.TestAllExtensions, 3)) + + ## Check that we don't CHECK fail in C++, but instead give a reasonable + ## error message if incorrect extensions types are provided. + checkException(test$getExtension(protobuf_unittest.my_extension_string)) } Modified: pkg/vignettes/RProtoBuf-quickref/RProtoBuf-quickref.Rnw =================================================================== --- pkg/vignettes/RProtoBuf-quickref/RProtoBuf-quickref.Rnw 2013-11-14 01:47:29 UTC (rev 540) +++ pkg/vignettes/RProtoBuf-quickref/RProtoBuf-quickref.Rnw 2013-11-14 02:47:25 UTC (rev 541) @@ -1,6 +1,7 @@ \documentclass[10pt,twocolumn,a4paper]{article} %\VignetteIndexEntry{RProtoBuf-quickref} + \setlength{\hoffset}{-0.8in} \setlength{\voffset}{-0.8in} From noreply at r-forge.r-project.org Fri Nov 15 04:30:48 2013 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Fri, 15 Nov 2013 04:30:48 +0100 (CET) Subject: [Rprotobuf-commits] r542 - pkg/inst/unitTests Message-ID: <20131115033048.B8EFC186174@r-forge.r-project.org> Author: murray Date: 2013-11-15 04:30:47 +0100 (Fri, 15 Nov 2013) New Revision: 542 Modified: pkg/inst/unitTests/runit.extensions.R Log: Add another unit test that I used when looking into the nested extension messages issue that is still unresolved. Modified: pkg/inst/unitTests/runit.extensions.R =================================================================== --- pkg/inst/unitTests/runit.extensions.R 2013-11-14 02:47:25 UTC (rev 541) +++ pkg/inst/unitTests/runit.extensions.R 2013-11-15 03:30:47 UTC (rev 542) @@ -56,10 +56,17 @@ "foo") ## Test setting and getting enums. - # This works now test$setExtension(protobuf_unittest.optional_nested_enum_extension, protobuf_unittest.TestAllTypes.NestedEnum$BAR) + ## Test foreign message extensions + foo <- new(protobuf_unittest.ForeignMessage) + foo$c <- 3 + test$setExtension(protobuf_unittest.optional_foreign_message_extension, + foo) + checkEquals(test$getExtension(protobuf_unittest.optional_foreign_message_extension)$c, + 3) + # This causes an Rcpp exception, but not an R stop error as of my # version of Rcpp, so we can't checkError unfortunately, but we # can at least make sure it doesn't crash R.