From 91f7e82b28fd6da916d512fd4284797c45857a45 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Fri, 23 Feb 2024 14:25:39 -0500 Subject: [PATCH 1/9] Initial working Linux build --- R/rSharp-exported.R | 4 +- R/zzz.R | 4 +- RSharp.runtimeconfig.json | 0 cleanup | 74 +- configure | 128 +- man/clrGetInnerPkgName.Rd | 4 +- man/clrGetNativeLibName.Rd | 2 +- src/.idea/.idea.rSharp/.idea/.gitignore | 13 + src/.idea/.idea.rSharp/.idea/.name | 1 + src/.idea/.idea.rSharp/.idea/indexLayout.xml | 8 + src/.idea/.idea.rSharp/.idea/vcs.xml | 6 + src/ClrFacade/ClrFacade.cs | 175 +- src/ClrFacade/ClrFacade.csproj | 5 +- src/ClrFacade/DataConversionHelper.cs | 286 ++-- src/ClrFacade/DataConverterExtensions.cs | 97 +- src/ClrFacade/HelloWorld.cs | 17 +- src/ClrFacade/Internal.cs | 28 +- src/ClrFacade/RDotNetDataConverter.cs | 63 +- src/ClrFacade/RSharpGenericValue.cs | 275 ++-- src/ClrFacade/RSharpUnmanagedDll.cs | 31 +- src/ClrFacade/RdotnetDataConverterTests.cs | 87 +- src/ClrFacade/ReflectionHelper.cs | 1282 +++++++-------- src/ClrFacade/TestArrayMemoryHandling.cs | 1 + src/ClrFacade/TestCases.cs | 12 +- src/ClrFacade/TestMethodBinding.cs | 1516 +++++++++--------- src/Makefile.win.in | 8 +- src/Makevars | 129 ++ src/Makevars.in | 53 +- src/RSharp.runtimeconfig.json | 10 +- src/global.json | 7 + src/packages.config | 4 +- src/rSharp.cpp | 109 +- src/rSharp.h | 28 +- src/rSharp.sln | 21 +- src/rSharp.so | Bin 0 -> 112648 bytes src/rSharp.vcxproj | 158 +- src/rSharpTests/ReflectionTests.cs | 12 +- src/rSharpTests/rSharpTests.csproj | 2 +- src/rSharpUX.o | Bin 0 -> 151472 bytes src/rSharpUX.so | Bin 0 -> 646544 bytes tests/testthat/setup_test-datetime.R | 2 +- 41 files changed, 2334 insertions(+), 2328 deletions(-) create mode 100644 RSharp.runtimeconfig.json mode change 100644 => 100755 cleanup mode change 100644 => 100755 configure create mode 100644 src/.idea/.idea.rSharp/.idea/.gitignore create mode 100644 src/.idea/.idea.rSharp/.idea/.name create mode 100644 src/.idea/.idea.rSharp/.idea/indexLayout.xml create mode 100644 src/.idea/.idea.rSharp/.idea/vcs.xml create mode 100644 src/Makevars create mode 100644 src/global.json create mode 100755 src/rSharp.so create mode 100644 src/rSharpUX.o create mode 100755 src/rSharpUX.so diff --git a/R/rSharp-exported.R b/R/rSharp-exported.R index 7c379c9..539899f 100644 --- a/R/rSharp-exported.R +++ b/R/rSharp-exported.R @@ -77,7 +77,7 @@ clrLoadAssembly <- function(name) { #' Gets the inner name used for the package #' -#' Gets the inner name used for the package (rSharpMono or rSharpMs). This is not intented for use by most users. +#' Gets the inner name used for the package (rSharpUX or rSharpMs). This is not intented for use by most users. #' #' @return the short name of the library currently loaded, depending on the runtime used (Mono or Microsoft .NET) #' @export @@ -522,7 +522,7 @@ clrTypename <- function(clrobj) { #' #' Gets the name of the native library currently loaded. Used only for unit tests. #' -#' @return the name of the native library currently loaded: rSharpMs or rSharpMono +#' @return the name of the native library currently loaded: rSharpMs or rSharpUX #' @export clrGetNativeLibName <- function() { nativePkgName diff --git a/R/zzz.R b/R/zzz.R index 2b05982..6329ffe 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -21,7 +21,7 @@ startupMsg <- '' rSharp_env=Sys.getenv('RSHARP') monoexepath <- Sys.which('mono') ext <- .Platform$dynlib.ext - nativeLibsNames <- paste(c('rSharpMono', 'RsharpMs'), ext, sep='') + nativeLibsNames <- paste(c('rSharpUX', 'RsharpMs'), ext, sep='') monoDll <- nativeLibsNames[1] msDll <- nativeLibsNames[2] getFnameNoExt <- function(x) {strsplit(x, '\\.')[[1]][1]} @@ -62,7 +62,7 @@ startupMsg <- '' } } else { # not on Windows. appendStartupMsg('Loading the dynamic library for Mono runtime...') - chname <- "rSharp" + chname <- "rSharpUX" loadAndInit(chname, pkgname, libname, srcPkgLibPath) } } diff --git a/RSharp.runtimeconfig.json b/RSharp.runtimeconfig.json new file mode 100644 index 0000000..e69de29 diff --git a/cleanup b/cleanup old mode 100644 new mode 100755 index 0d0c67e..5184a1b --- a/cleanup +++ b/cleanup @@ -1,37 +1,37 @@ -#!/bin/sh - -# TODO: can cleanup.win just call clean (avoid duplications) -if ["$RSHARP_SRC_DIR" = ""] -then - RSHARP_SRC_DIR=./src - if [ ! -e ${RSHARP_SRC_DIR} ] - then - echo "error: no suitable package src dir found - last tried ${RSHARP_SRC_DIR}" - CURDIR=`pwd` - echo "Current directory (pwd) is $CURDIR" - exit 1 - fi -fi - -MAKEVARS_FILE=$RSHARP_SRC_DIR/Makevars - -if [ -e $MAKEVARS_FILE ] -then - echo "note: removing existing $MAKEVARS_FILE" - rm $MAKEVARS_FILE -fi - -rm -f $RSHARP_SRC_DIR/*.o -rm -f $RSHARP_SRC_DIR/*.rds -rm -f $RSHARP_SRC_DIR/rSharp.dll -rm -rf $RSHARP_SRC_DIR/x64 -rm -rf $RSHARP_SRC_DIR/Debug -rm -rf $RSHARP_SRC_DIR/MonoInstall -rm -rf $RSHARP_SRC_DIR/MonoInstallDebug -rm -rf $RSHARP_SRC_DIR/Release -rm -rf $RSHARP_SRC_DIR/RDotNetDataConverter/obj -rm -rf $RSHARP_SRC_DIR/ClrFacade/obj -rm -rf $RSHARP_SRC_DIR/rdotnet/RDotNet.NativeLibrary/bin -rm -rf $RSHARP_SRC_DIR/rdotnet/RDotNet.NativeLibrary/obj -rm -rf $RSHARP_SRC_DIR/rdotnet/R.NET/bin -rm -rf $RSHARP_SRC_DIR/rdotnet/R.NET/obj +#!/bin/sh + +# TODO: can cleanup.win just call clean (avoid duplications) +if ["$RSHARP_SRC_DIR" = ""] +then + RSHARP_SRC_DIR=./src + if [ ! -e ${RSHARP_SRC_DIR} ] + then + echo "error: no suitable package src dir found - last tried ${RSHARP_SRC_DIR}" + CURDIR=`pwd` + echo "Current directory (pwd) is $CURDIR" + exit 1 + fi +fi + +MAKEVARS_FILE=$RSHARP_SRC_DIR/Makevars + +if [ -e $MAKEVARS_FILE ] +then + echo "note: removing existing $MAKEVARS_FILE" + rm $MAKEVARS_FILE +fi + +rm -f $RSHARP_SRC_DIR/*.o +rm -f $RSHARP_SRC_DIR/*.rds +rm -f $RSHARP_SRC_DIR/rSharp.dll +rm -rf $RSHARP_SRC_DIR/x64 +rm -rf $RSHARP_SRC_DIR/Debug +rm -rf $RSHARP_SRC_DIR/MonoInstall +rm -rf $RSHARP_SRC_DIR/MonoInstallDebug +rm -rf $RSHARP_SRC_DIR/Release +rm -rf $RSHARP_SRC_DIR/RDotNetDataConverter/obj +rm -rf $RSHARP_SRC_DIR/ClrFacade/obj +rm -rf $RSHARP_SRC_DIR/rdotnet/RDotNet.NativeLibrary/bin +rm -rf $RSHARP_SRC_DIR/rdotnet/RDotNet.NativeLibrary/obj +rm -rf $RSHARP_SRC_DIR/rdotnet/R.NET/bin +rm -rf $RSHARP_SRC_DIR/rdotnet/R.NET/obj diff --git a/configure b/configure old mode 100644 new mode 100755 index a525b10..b226ab9 --- a/configure +++ b/configure @@ -1,64 +1,64 @@ -#!/bin/sh - -RSHARP_SRC_DIR=./src -if [ ! -e ${RSHARP_SRC_DIR} ] -then - echo "error: no suitable package src dir found - last tried ${RSHARP_SRC_DIR}" - CURDIR=`pwd` - echo "Current directory (pwd) is $CURDIR" - exit 1 -fi - -# if this variable is defined, no Makefile.win will be generated, -# and the visual studio compilers are ignored even if installed. -# IGNORE_VISUALSTUDIO=1 - -./cleanup -MAKEVARS_FILE=$RSHARP_SRC_DIR/Makevars -MAKEVARS_INFILE=$MAKEVARS_FILE.in - -# In order to write dos-style paths to the generated Makefile.win and co, needs multiple backslashes... -# R_HOME will be something like f:/path/to/R -# bash has the option of R_HOME_BSLASH=${R_HOME//\//\\\\} and it works as expected -# in ash behavior seems to differ from bash, hence the 8 backslashes needed for the substitution to work -slash_to_eight_bslash() { - RESULT=`echo $1 | sed -e 's/\//\\\\\\\\/g'` -} -# slash_to_eight_bslash c:/tmp/blah -# echo $RESULT -# blah=$RESULT -# echo $blah - -# A substitute for cygpath, not present in RTools -# does not work as function (??): sed: -e expression #1, char 8: unterminated `s' command -# dos_to_cyg() { - # RESULT=`echo $1 | sed -e 's/\\/\//g'` -# } - -double_backslash() { - RESULT=`echo $1 | sed -e 's/\\/\\\\/g'` -} - -MONO_CFLAGS=`pkg-config --cflags mono-2` -GLIB_CFLAGS=`pkg-config --cflags glib-2.0` -echo "MONO_CFLAGS=$MONO_CFLAGS" -echo "GLIB_CFLAGS=$GLIB_CFLAGS" - -if [ ${#MONO_CFLAGS} -eq 0 ] -then - echo "error: mono-2 not found" - exit 1 -fi - -if [ ${#GLIB_CFLAGS} -eq 0 ] -then - echo "error: glib-2.0 not found" - exit 1 -fi - -subst_1="s|@MONO_INSTALL_PATH@|$MONO_INSTALL_PATH|g" -subst_2="s|@MONO_INSTALL_PATH64@|$MONO_INSTALL_PATH64|g" -sed -e "$subst_1" -e "$subst_2" $MAKEVARS_INFILE > $MAKEVARS_FILE -echo "Created $MAKEVARS_FILE" -exit 0 - +#!/bin/sh + +RSHARP_SRC_DIR=./src +if [ ! -e ${RSHARP_SRC_DIR} ] +then + echo "error: no suitable package src dir found - last tried ${RSHARP_SRC_DIR}" + CURDIR=`pwd` + echo "Current directory (pwd) is $CURDIR" + exit 1 +fi + +# if this variable is defined, no Makefile.win will be generated, +# and the visual studio compilers are ignored even if installed. +# IGNORE_VISUALSTUDIO=1 + +./cleanup +MAKEVARS_FILE=$RSHARP_SRC_DIR/Makevars +MAKEVARS_INFILE=$MAKEVARS_FILE.in + +# In order to write dos-style paths to the generated Makefile.win and co, needs multiple backslashes... +# R_HOME will be something like f:/path/to/R +# bash has the option of R_HOME_BSLASH=${R_HOME//\//\\\\} and it works as expected +# in ash behavior seems to differ from bash, hence the 8 backslashes needed for the substitution to work +slash_to_eight_bslash() { + RESULT=`echo $1 | sed -e 's/\//\\\\\\\\/g'` +} +# slash_to_eight_bslash c:/tmp/blah +# echo $RESULT +# blah=$RESULT +# echo $blah + +# A substitute for cygpath, not present in RTools +# does not work as function (??): sed: -e expression #1, char 8: unterminated `s' command +# dos_to_cyg() { + # RESULT=`echo $1 | sed -e 's/\\/\//g'` +# } + +double_backslash() { + RESULT=`echo $1 | sed -e 's/\\/\\\\/g'` +} + +DOTNET_FLAGS=`dotnet --list-sdks` +GLIB_CFLAGS=`pkg-config --cflags glib-2.0` +echo "DOTNET_FLAGS=$DOTNET_FLAGS" +echo "GLIB_CFLAGS=$GLIB_CFLAGS" + +if [ ${#DOTNET_FLAGS} -eq 0 ] +then + echo "error: mono-2 not found" + exit 1 +fi + +if [ ${#GLIB_CFLAGS} -eq 0 ] +then + echo "error: glib-2.0 not found" + exit 1 +fi + +subst_1="s|@MONO_INSTALL_PATH@|$MONO_INSTALL_PATH|g" +subst_2="s|@MONO_INSTALL_PATH64@|$MONO_INSTALL_PATH64|g" +sed -e "$subst_1" -e "$subst_2" $MAKEVARS_INFILE > $MAKEVARS_FILE +echo "Created $MAKEVARS_FILE" +exit 0 + diff --git a/man/clrGetInnerPkgName.Rd b/man/clrGetInnerPkgName.Rd index b68e101..9306475 100644 --- a/man/clrGetInnerPkgName.Rd +++ b/man/clrGetInnerPkgName.Rd @@ -7,8 +7,8 @@ clrGetInnerPkgName() } \value{ -the short name of the library currently loaded, depending on the runtime used (Mono or Microsoft .NET) +the short name of the library currently loaded, depending on the runtime used } \description{ -Gets the inner name used for the package (rSharpMono or rSharpMs). This is not intented for use by most users. +Gets the inner name used for the package (rSharpUX or rSharpMs). This is not intented for use by most users. } diff --git a/man/clrGetNativeLibName.Rd b/man/clrGetNativeLibName.Rd index 662f01f..feaf799 100644 --- a/man/clrGetNativeLibName.Rd +++ b/man/clrGetNativeLibName.Rd @@ -7,7 +7,7 @@ clrGetNativeLibName() } \value{ -the name of the native library currently loaded: rSharpMs or rSharpMono +the name of the native library currently loaded: rSharpMs or rSharpUX } \description{ Gets the name of the native library currently loaded. Used only for unit tests. diff --git a/src/.idea/.idea.rSharp/.idea/.gitignore b/src/.idea/.idea.rSharp/.idea/.gitignore new file mode 100644 index 0000000..dfce26e --- /dev/null +++ b/src/.idea/.idea.rSharp/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/contentModel.xml +/modules.xml +/projectSettingsUpdater.xml +/.idea.rSharp.iml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/src/.idea/.idea.rSharp/.idea/.name b/src/.idea/.idea.rSharp/.idea/.name new file mode 100644 index 0000000..3b67751 --- /dev/null +++ b/src/.idea/.idea.rSharp/.idea/.name @@ -0,0 +1 @@ +rSharp \ No newline at end of file diff --git a/src/.idea/.idea.rSharp/.idea/indexLayout.xml b/src/.idea/.idea.rSharp/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/src/.idea/.idea.rSharp/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/.idea/.idea.rSharp/.idea/vcs.xml b/src/.idea/.idea.rSharp/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/src/.idea/.idea.rSharp/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/ClrFacade/ClrFacade.cs b/src/ClrFacade/ClrFacade.cs index 598e907..5cdf1f1 100644 --- a/src/ClrFacade/ClrFacade.cs +++ b/src/ClrFacade/ClrFacade.cs @@ -1,94 +1,95 @@ using System; using System.Reflection; -namespace ClrFacade +namespace ClrFacade; + +public static class ClrFacade { - public static class ClrFacade + // ReSharper disable UnusedMember.Global + public delegate int CallInstanceMethodDelegate(IntPtr obj, string methodName, IntPtr arguments, int numObjects, IntPtr returnValue); + + public static int CallInstanceMethod(IntPtr obj, string methodName, IntPtr arguments, int numObjects, IntPtr returnValue) + { + return Internal.CallInstanceMethod(obj, methodName, arguments, numObjects, returnValue); + } + + public delegate int CreateSexpWrapperDelegate(long ptrValue, IntPtr returnValue); + + public static int CreateSexpWrapperLong(long ptrValue, IntPtr returnValue) + { + return Internal.CreateSexpWrapper(new IntPtr(ptrValue), returnValue); + } + + public delegate int CallStaticMethodDelegate(string typename, string methodName, IntPtr objects, int numObjects, IntPtr returnValue); + + public static int CallStaticMethod(string typename, string methodName, IntPtr objects, int numObjects, IntPtr returnValue) + { + return Internal.CallStaticMethod(typename, methodName, objects, numObjects, returnValue); + } + + public delegate int CurrentObjectDelegate(IntPtr returnValue); + + public static int CurrentObject(IntPtr returnValue) + { + return Internal.CurrentObject(returnValue); + } + + public delegate int CreateInstanceDelegate(string typename, IntPtr objects, int numObjects, IntPtr returnValue); + + public static int CreateInstance(string typename, IntPtr objects, int numObjects, IntPtr returnValue) + { + return Internal.CreateInstance(typename, objects, numObjects, returnValue); + } + + public delegate IntPtr GetObjectTypeNameDelegate(IntPtr obj); + + public static IntPtr GetObjectTypeName(IntPtr obj) + { + return Internal.GetObjectTypeName(obj); + } + + public static string GetObjectTypeName(object obj) + { + return Internal.GetObjectTypeName(obj); + } + + public delegate void LoadFromDelegate(string pathOrAssemblyName); + + public static void LoadFrom(string pathOrAssemblyName) + { + Internal.LoadFrom(pathOrAssemblyName); + } + + public static void SetFieldOrProperty(object obj, string name, object value) + { + Internal.SetFieldOrProperty(obj, name, value); + } + + public static void SetFieldOrProperty(string typename, string name, object value) + { + Internal.SetFieldOrProperty(typename, name, value); + } + + public static object GetFieldOrProperty(string typename, string name) + { + return Internal.GetFieldOrProperty(typename, name); + } + + public static object GetFieldOrProperty(object obj, string name) + { + return Internal.GetFieldOrProperty(obj, name); + } + + public static Type GetType(string typename) + { + return Internal.GetType(typename); + } + + public delegate void FreeObjectDelegate(IntPtr obj); + + public static void FreeObject(IntPtr obj) { - // ReSharper disable UnusedMember.Global - public delegate int CallInstanceMethodDelegate(IntPtr obj, string methodName, IntPtr arguments, int numObjects, IntPtr returnValue); - - public static int CallInstanceMethod(IntPtr obj, string methodName, IntPtr arguments, int numObjects, IntPtr returnValue) - { - return Internal.CallInstanceMethod(obj, methodName, arguments, numObjects, returnValue); - } - - public delegate int CreateSexpWrapperDelegate(long ptrValue, IntPtr returnValue); - - public static int CreateSexpWrapperLong(long ptrValue, IntPtr returnValue) - { - return Internal.CreateSexpWrapper(new IntPtr(ptrValue), returnValue); - } - - public delegate int CallStaticMethodDelegate(string typename, string methodName, IntPtr objects, int numObjects, IntPtr returnValue); - public static int CallStaticMethod(string typename, string methodName, IntPtr objects, int numObjects, IntPtr returnValue) - { - return Internal.CallStaticMethod(typename, methodName, objects, numObjects, returnValue); - } - - public delegate int CurrentObjectDelegate(IntPtr returnValue); - - public static int CurrentObject(IntPtr returnValue) - { - return Internal.CurrentObject(returnValue); - } - - public delegate int CreateInstanceDelegate(string typename, IntPtr objects, int numObjects, IntPtr returnValue); - - public static int CreateInstance(string typename, IntPtr objects, int numObjects, IntPtr returnValue) - { - return Internal.CreateInstance(typename, objects, numObjects, returnValue); - } - - public delegate IntPtr GetObjectTypeNameDelegate(IntPtr obj); - - public static IntPtr GetObjectTypeName(IntPtr obj) - { - return Internal.GetObjectTypeName(obj); - } - - public static string GetObjectTypeName(object obj) - { - return Internal.GetObjectTypeName(obj); - } - - public delegate Assembly LoadFromDelegate(string pathOrAssemblyName); - - public static Assembly LoadFrom(string pathOrAssemblyName) - { - return Internal.LoadFrom(pathOrAssemblyName); - } - - public static void SetFieldOrProperty(object obj, string name, object value) - { - Internal.SetFieldOrProperty(obj, name, value); - } - - public static void SetFieldOrProperty(string typename, string name, object value) - { - Internal.SetFieldOrProperty(typename, name, value); - } - - public static object GetFieldOrProperty(string typename, string name) - { - return Internal.GetFieldOrProperty(typename, name); - } - - public static object GetFieldOrProperty(object obj, string name) - { - return Internal.GetFieldOrProperty(obj, name); - } - - public static Type GetType(string typename) - { - return Internal.GetType(typename); - } - - public delegate void FreeObjectDelegate(IntPtr obj); - public static void FreeObject(IntPtr obj) - { - Internal.FreeObject(obj); - } - // ReSharper restore UnusedMember.Global + Internal.FreeObject(obj); } + // ReSharper restore UnusedMember.Global } \ No newline at end of file diff --git a/src/ClrFacade/ClrFacade.csproj b/src/ClrFacade/ClrFacade.csproj index 2b1794d..5a65d9c 100644 --- a/src/ClrFacade/ClrFacade.csproj +++ b/src/ClrFacade/ClrFacade.csproj @@ -5,7 +5,6 @@ AnyCPU {024B0C26-BED0-467D-B332-E9796B756133} Library - net7.0 0.8.1 (c) 2014-2019 Jean-Michel Perraud .NET interoperability on top of R.NET for the rSharp package @@ -19,9 +18,11 @@ Migration to .NET Standard 2.0 and supporting R 3.5.x true + net8.0 + default - + \ No newline at end of file diff --git a/src/ClrFacade/DataConversionHelper.cs b/src/ClrFacade/DataConversionHelper.cs index 8118f36..929e98e 100644 --- a/src/ClrFacade/DataConversionHelper.cs +++ b/src/ClrFacade/DataConversionHelper.cs @@ -4,159 +4,157 @@ using RDotNet; using RDotNet.Internals; -namespace ClrFacade +namespace ClrFacade; + +[UnmanagedFunctionPointer(CallingConvention.Cdecl)] +public delegate IntPtr ClrObjectToSexpDelegate(IntPtr variant); + +public interface IUnmanagedDll { - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate IntPtr ClrObjectToSexpDelegate(IntPtr variant); - - public interface IUnmanagedDll - { - ClrObjectToSexpDelegate ClrObjectToSexp { get; set; } - IntPtr GetFunctionAddress(string entryPointName); - } - - /// - /// A helper class to inspect data and determine what it is converted to in the unmanaged code. - /// - /// - /// Acknowledgments go to Lim Bio Liong for some of this code. See http://limbioliong.wordpress.com/2011/09/04/using-variants-in-managed-code-part-1/ - /// and http://limbioliong.wordpress.com/2011/03/20/c-interop-how-to-return-a-variant-from-an-unmanaged-function/. - /// Very useful and impressive series of articles. - /// - public static class DataConversionHelper - { - public static IUnmanagedDll rSharpNativeDll= null; - } - - /// - /// A wrapper around a symbolic expression. This is necessary to wrap safehandle around. - /// - public class SymbolicExpressionWrapper - { - private static int _counter = 0; - public SymbolicExpressionWrapper(SymbolicExpression sexp) - { - Sexp = sexp; - _counter++; - } - public SymbolicExpression Sexp { get; } - - ~SymbolicExpressionWrapper() - { - _counter--; - } - - public object ToClrEquivalent() - { - return Sexp.Type switch - { - SymbolicExpressionType.CharacterVector => convertVector(Sexp.AsCharacter().ToArray()), - SymbolicExpressionType.ComplexVector => convertVector(Sexp.AsComplex().ToArray()), - SymbolicExpressionType.IntegerVector => convertVector(Sexp.AsInteger().ToArray()), - SymbolicExpressionType.LogicalVector => convertVector(Sexp.AsLogical().ToArray()), - SymbolicExpressionType.NumericVector => convertNumericVector(Sexp), - SymbolicExpressionType.RawVector => convertVector(Sexp.AsRaw().ToArray()), - // case SymbolicExpressionType.S4: - // { - // var s4sxp = Sexp.AsS4(); - // if (!s4sxp.HasSlot("clrobj")) return Sexp; - // var fromIntPtr = GCHandle.FromIntPtr(s4sxp["clrobj"].DangerousGetHandle()); - // return fromIntPtr.Target; - // } - SymbolicExpressionType.List => convertVector(convertList(Sexp.AsList().ToArray())), - _ => Sexp - }; - } - - private static object convertNumericVector(SymbolicExpression sexp) - { - var values = sexp.AsNumeric().ToArray(); - var classNames = RDotNetDataConverter.GetClassAttribute(sexp); - if (classNames == null) - return convertVector(values); - - if (classNames.Contains("Date")) - return convertVector(rDateToDateTime(values)); + ClrObjectToSexpDelegate ClrObjectToSexp { get; set; } + IntPtr GetFunctionAddress(string entryPointName); +} + +/// +/// A helper class to inspect data and determine what it is converted to in the unmanaged code. +/// +/// +/// Acknowledgments go to Lim Bio Liong for some of this code. See http://limbioliong.wordpress.com/2011/09/04/using-variants-in-managed-code-part-1/ +/// and http://limbioliong.wordpress.com/2011/03/20/c-interop-how-to-return-a-variant-from-an-unmanaged-function/. +/// Very useful and impressive series of articles. +/// +public static class DataConversionHelper +{ + public static IUnmanagedDll rSharpNativeDll = null; +} + +/// +/// A wrapper around a symbolic expression. This is necessary to wrap safehandle around. +/// +public class SymbolicExpressionWrapper +{ + private static int _counter = 0; + + public SymbolicExpressionWrapper(SymbolicExpression sexp) + { + Sexp = sexp; + _counter++; + } - if (classNames.Contains("POSIXct")) - return convertVector(rPOSIXctToDateTime(sexp, values)); + public SymbolicExpression Sexp { get; } - if (classNames.Contains("difftime")) - return convertVector(rDiffTimeToTimespan(sexp, values)); + ~SymbolicExpressionWrapper() + { + _counter--; + } + public object ToClrEquivalent() + { + return Sexp.Type switch + { + SymbolicExpressionType.CharacterVector => convertVector(Sexp.AsCharacter().ToArray()), + SymbolicExpressionType.ComplexVector => convertVector(Sexp.AsComplex().ToArray()), + SymbolicExpressionType.IntegerVector => convertVector(Sexp.AsInteger().ToArray()), + SymbolicExpressionType.LogicalVector => convertVector(Sexp.AsLogical().ToArray()), + SymbolicExpressionType.NumericVector => convertNumericVector(Sexp), + SymbolicExpressionType.RawVector => convertVector(Sexp.AsRaw().ToArray()), + // case SymbolicExpressionType.S4: + // { + // var s4sxp = Sexp.AsS4(); + // if (!s4sxp.HasSlot("clrobj")) return Sexp; + // var fromIntPtr = GCHandle.FromIntPtr(s4sxp["clrobj"].DangerousGetHandle()); + // return fromIntPtr.Target; + // } + SymbolicExpressionType.List => convertVector(convertList(Sexp.AsList().ToArray())), + _ => Sexp + }; + } + + private static object convertNumericVector(SymbolicExpression sexp) + { + var values = sexp.AsNumeric().ToArray(); + var classNames = RDotNetDataConverter.GetClassAttribute(sexp); + if (classNames == null) return convertVector(values); - } + if (classNames.Contains("Date")) + return convertVector(rDateToDateTime(values)); - private static readonly DateTime _rDateOrigin = new(1970, 1, 1); + if (classNames.Contains("POSIXct")) + return convertVector(rPOSIXctToDateTime(sexp, values)); - private static readonly string[] _timeDiffUnits = {"secs", "mins", "hours", "days", "weeks"}; + if (classNames.Contains("difftime")) + return convertVector(rDiffTimeToTimespan(sexp, values)); - private static TimeSpan[] rDiffTimeToTimespan(SymbolicExpression sexp, double[] values) - { - var units = RDotNetDataConverter.GetAttribute(sexp, "units")[0]; - if (!_timeDiffUnits.Contains(units)) throw new NotSupportedException("timeDiff units {0} are not supported"); - return units switch - { - "secs" => Array.ConvertAll(values, TimeSpan.FromSeconds), - "mins" => Array.ConvertAll(values, TimeSpan.FromMinutes), - "hours" => Array.ConvertAll(values, TimeSpan.FromHours), - "days" => Array.ConvertAll(values, TimeSpan.FromDays), - "weeks" => Array.ConvertAll(values, x => TimeSpan.FromDays(x * 7)), - _ => throw new NotSupportedException() - }; - // This should never be reached. - } - - private static DateTime[] rPOSIXctToDateTime(SymbolicExpression sexp, double[] values) - { - var tz = RDotNetDataConverter.GetTimeZoneAttribute(sexp); - if (!isSupportedTimeZone(tz)) - throw new NotSupportedException("POSIXct conversion supported only for UTC or unspecified (local) time zone, not for " + tz); - - //number of seconds since 1970-01-01 UTC - return Array.ConvertAll(values, - v => - { - var utc = isUtc(tz); - return Internal.ForceDateKind(_rDateOrigin + TimeSpan.FromTicks((long)(TimeSpan.TicksPerSecond * v)), utc); - } - ); - } - - private static bool isSupportedTimeZone(string tz) - { - return isUtc(tz) || string.IsNullOrEmpty(tz); - } + return convertVector(values); + } - private static bool isUtc(string tz) - { - if (string.IsNullOrEmpty(tz)) - return false; - var t = tz.ToUpper(); - return t is "UTC" or "GMT"; - } + private static readonly DateTime _rDateOrigin = new(1970, 1, 1); + + private static readonly string[] _timeDiffUnits = { "secs", "mins", "hours", "days", "weeks" }; - private static DateTime[] rDateToDateTime(double[] values) + private static TimeSpan[] rDiffTimeToTimespan(SymbolicExpression sexp, double[] values) + { + var units = RDotNetDataConverter.GetAttribute(sexp, "units")[0]; + if (!_timeDiffUnits.Contains(units)) throw new NotSupportedException("timeDiff units {0} are not supported"); + return units switch { - //number of days since 1970-01-01 - return Array.ConvertAll(values, v => _rDateOrigin + TimeSpan.FromTicks((long)(TimeSpan.TicksPerDay * v))); - } - - private object[] convertList(SymbolicExpression[] symbolicExpression) - { - // Fall back on R enable vecsxp in C layer; - throw new NotSupportedException("Not supported; would need to be able to unpack e.g. S4 objects."); - } - - - - private static object convertVector(T[] p) - { - if (p.Length == 1) - return p[0]; - else - return p; - } - } -} + "secs" => Array.ConvertAll(values, TimeSpan.FromSeconds), + "mins" => Array.ConvertAll(values, TimeSpan.FromMinutes), + "hours" => Array.ConvertAll(values, TimeSpan.FromHours), + "days" => Array.ConvertAll(values, TimeSpan.FromDays), + "weeks" => Array.ConvertAll(values, x => TimeSpan.FromDays(x * 7)), + _ => throw new NotSupportedException() + }; + // This should never be reached. + } + + private static DateTime[] rPOSIXctToDateTime(SymbolicExpression sexp, double[] values) + { + var tz = RDotNetDataConverter.GetTimeZoneAttribute(sexp); + if (!isSupportedTimeZone(tz)) + throw new NotSupportedException("POSIXct conversion supported only for UTC or unspecified (local) time zone, not for " + tz); + + //number of seconds since 1970-01-01 UTC + return Array.ConvertAll(values, + v => + { + var utc = isUtc(tz); + return Internal.ForceDateKind(_rDateOrigin + TimeSpan.FromTicks((long)(TimeSpan.TicksPerSecond * v)), utc); + } + ); + } + + private static bool isSupportedTimeZone(string tz) + { + return isUtc(tz) || string.IsNullOrEmpty(tz); + } + + private static bool isUtc(string tz) + { + if (string.IsNullOrEmpty(tz)) + return false; + var t = tz.ToUpper(); + return t is "UTC" or "GMT"; + } + + private static DateTime[] rDateToDateTime(double[] values) + { + //number of days since 1970-01-01 + return Array.ConvertAll(values, v => _rDateOrigin + TimeSpan.FromTicks((long)(TimeSpan.TicksPerDay * v))); + } + + private object[] convertList(SymbolicExpression[] symbolicExpression) + { + // Fall back on R enable vecsxp in C layer; + throw new NotSupportedException("Not supported; would need to be able to unpack e.g. S4 objects."); + } + + private static object convertVector(T[] p) + { + if (p.Length == 1) + return p[0]; + else + return p; + } +} \ No newline at end of file diff --git a/src/ClrFacade/DataConverterExtensions.cs b/src/ClrFacade/DataConverterExtensions.cs index bbd0cab..a8d567a 100644 --- a/src/ClrFacade/DataConverterExtensions.cs +++ b/src/ClrFacade/DataConverterExtensions.cs @@ -1,64 +1,63 @@ using RDotNet.Utilities; -namespace ClrFacade +namespace ClrFacade; + +/// +/// Extension methods to facilitate data marshalling between R and the CLR +/// +public static class DataConverterExtensions { - /// - /// Extension methods to facilitate data marshalling between R and the CLR - /// - public static class DataConverterExtensions + public static double[][] ToDouble(this float[][] array) { - public static double[][] ToDouble(this float[][] array) - { - return ArrayConverter.ArrayConvertAll(array, x => (double)x); - } - - public static double[,] ToDoubleRect(this float[][] array) - { - return array.ToDouble().ToRect(); - } + return ArrayConverter.ArrayConvertAll(array, x => (double)x); + } - public static bool IsRectangular(this T[][] array) - { - if (array.Length == 0) - return true; + public static double[,] ToDoubleRect(this float[][] array) + { + return array.ToDouble().ToRect(); + } - if (array[0] == null) - return false; + public static bool IsRectangular(this T[][] array) + { + if (array.Length == 0) + return true; - var firstLen = array[0].Length; - for (var i = 1; i < array.Length; i++) - { - if (array[i] == null) - return false; + if (array[0] == null) + return false; - if (array[i].Length != firstLen) - return false; - } + var firstLen = array[0].Length; + for (var i = 1; i < array.Length; i++) + { + if (array[i] == null) + return false; - return true; + if (array[i].Length != firstLen) + return false; } - public static T[,] ToRect(this T[][] array) - { - var result = new T[array.Length, array[0].Length]; - for (var i = 0; i < array.Length; i++) - for (var j = 0; j < array[0].Length; j++) - result[i, j] = array[i][j]; - return result; - } + return true; + } - public static double[,] ToDoubleRect(this float[,] array) - { - return ArrayConverter.ArrayConvertAll(array, x => (double)x); - } + public static T[,] ToRect(this T[][] array) + { + var result = new T[array.Length, array[0].Length]; + for (var i = 0; i < array.Length; i++) + for (var j = 0; j < array[0].Length; j++) + result[i, j] = array[i][j]; + return result; + } - public static float[,] ToFloatRect(this float[][] array) - { - var result = new float[array.Length, array[0].Length]; - for (var i = 0; i < array.Length; i++) - for (var j = 0; j < array[0].Length; j++) - result[i, j] = array[i][j]; - return result; - } + public static double[,] ToDoubleRect(this float[,] array) + { + return ArrayConverter.ArrayConvertAll(array, x => (double)x); + } + + public static float[,] ToFloatRect(this float[][] array) + { + var result = new float[array.Length, array[0].Length]; + for (var i = 0; i < array.Length; i++) + for (var j = 0; j < array[0].Length; j++) + result[i, j] = array[i][j]; + return result; } } \ No newline at end of file diff --git a/src/ClrFacade/HelloWorld.cs b/src/ClrFacade/HelloWorld.cs index 0b2b4c1..12fb151 100644 --- a/src/ClrFacade/HelloWorld.cs +++ b/src/ClrFacade/HelloWorld.cs @@ -1,13 +1,12 @@ -namespace ClrFacade +namespace ClrFacade; + +/// +/// Support for the package vignette +/// +public class HelloWorld { - /// - /// Support for the package vignette - /// - public class HelloWorld + public static string Hello() { - public static string Hello() - { - return "Hello, World!"; - } + return "Hello, World!"; } } \ No newline at end of file diff --git a/src/ClrFacade/Internal.cs b/src/ClrFacade/Internal.cs index 701b5f8..c56c961 100644 --- a/src/ClrFacade/Internal.cs +++ b/src/ClrFacade/Internal.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Runtime.InteropServices; using System.Text; +using RDotNet.NativeLibrary; namespace ClrFacade; @@ -105,7 +106,7 @@ public static Type GetType(string typename) throw new ArgumentException("missing type specification"); var t = Type.GetType(typename); - if (t != null) + if (t != null) return t; var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); @@ -135,13 +136,12 @@ public static Type GetType(string typename) } } - if (t != null) + if (t != null) return t; var msg = $"Type not found: {typename}"; Console.WriteLine(msg); return null; - } public static int CurrentObject(IntPtr returnValue) @@ -192,23 +192,22 @@ public static IntPtr GetObjectTypeName(IntPtr obj) var t = Marshal.PtrToStructure(instPtr); var instance = convertRSharpParameters(new[] { t })[0]; - return Marshal.StringToBSTR(GetObjectTypeName(instance)); + return Marshal.StringToHGlobalAnsi(GetObjectTypeName(instance)); } - public static Assembly LoadFrom(string pathOrAssemblyName) + public static void LoadFrom(string pathOrAssemblyName) { Assembly result; if (File.Exists(pathOrAssemblyName)) - result = Assembly.LoadFrom(pathOrAssemblyName); + Assembly.LoadFrom(pathOrAssemblyName); else if (isFullyQualifiedAssemblyName(pathOrAssemblyName)) - result = Assembly.Load(pathOrAssemblyName); + Assembly.Load(pathOrAssemblyName); else // the use of LoadWithPartialName is deprecated, but this is highly convenient for the end user until there is // another safer and convenient alternative #pragma warning disable 618, 612 - result = Assembly.LoadWithPartialName(pathOrAssemblyName); + Assembly.LoadWithPartialName(pathOrAssemblyName); #pragma warning restore 618, 612 - return result; } public static void SetFieldOrProperty(object obj, string name, object value) @@ -305,7 +304,7 @@ public static string FormatExceptionInnermost(Exception ex) var sb = new StringBuilder(); sb.Append(!string.IsNullOrEmpty(additionalMsg) ? formatCustomMessage(additionalMsg) : formatExceptionMessage(innermost)); - if (reflectionTypeLoadException == null) + if (reflectionTypeLoadException == null) return sb.ToString(); foreach (var e in reflectionTypeLoadException.LoaderExceptions) @@ -388,7 +387,7 @@ public static string ToString(object obj) public static void SetFieldOrProperty(Type type, string name, object value) { - if (type == null) + if (type == null) throw new ArgumentNullException(); const BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Static; @@ -403,7 +402,7 @@ private static void internalSetFieldOrProperty(Type t, string name, BindingFlags var property = t.GetProperty(name, b); if (property == null) throw new ArgumentException($"Public instance field or property name {name} not found"); - + property.SetValue(objOrNull, value, null); } else @@ -419,7 +418,7 @@ private static object getFieldOrPropertyType(Type type, string name) static object internalGetFieldOrProperty(Type t, string name, BindingFlags b, object objOrNull) { var field = t.GetField(name, b); - if (field != null) + if (field != null) return field.GetValue(objOrNull); var property = t.GetProperty(name, b); @@ -427,7 +426,6 @@ static object internalGetFieldOrProperty(Type t, string name, BindingFlags b, ob throw new ArgumentException($"Field or property name '{name}' not found on object of type '{t.Name}', for binding flags '{b.ToString()}'"); return property.GetValue(objOrNull, null); - } /// @@ -663,7 +661,7 @@ public static double GetRPosixCtDoubleRepresentation(DateTime date) public static void FreeObject(IntPtr instPtr) { var genericValue = Marshal.PtrToStructure(instPtr); - if(genericValue.Type == RSharpValueType.String) + if (genericValue.Type == RSharpValueType.String) Marshal.FreeBSTR(genericValue.Value); else if (genericValue.Type == RSharpValueType.Object) ((GCHandle)genericValue.Value).Free(); diff --git a/src/ClrFacade/RDotNetDataConverter.cs b/src/ClrFacade/RDotNetDataConverter.cs index ac2caa1..a3f25db 100644 --- a/src/ClrFacade/RDotNetDataConverter.cs +++ b/src/ClrFacade/RDotNetDataConverter.cs @@ -1,10 +1,14 @@ using System; using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; using System.IO; using System.Linq; using System.Numerics; using System.Reflection; using System.Runtime.InteropServices; +using System.Threading; +using DynamicInterop; using RDotNet; using RDotNet.NativeLibrary; @@ -22,7 +26,12 @@ private RDotNetDataConverter(string pathToNativeSharedObj) assemblyPath = Path.GetFullPath(assemblyPath); var libDir = Path.GetDirectoryName(assemblyPath); - dllName = Path.Combine(libDir, NativeUtility.IsUnix ? "rSharp.so" : "rSharpMs.dll"); + var version = Environment.Is64BitProcess.ToString(); + CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US"); + CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US"); + CultureInfo.CurrentUICulture = new CultureInfo("en-US"); + + dllName = Path.Combine(libDir, NativeUtility.IsUnix ? "rSharpUX.so" : "rSharpMs.dll"); } DataConversionHelper.rSharpNativeDll = new RSharpUnmanagedDll(dllName); @@ -356,7 +365,7 @@ private SymbolicExpression convertAll(IReadOnlyList objects, Func(this RSharpGenericValue genericValue) { - public static T[] GetArray(this RSharpGenericValue genericValue) + if (genericValue.Type == RSharpValueType.IntArray && typeof(T) == typeof(int)) { - if (genericValue.Type == RSharpValueType.IntArray && typeof(T) == typeof(int)) - { - var array = new int[genericValue.Size]; - Marshal.Copy(genericValue.Value, array, 0, genericValue.Size); - return array as T[]; - } + var array = new int[genericValue.Size]; + Marshal.Copy(genericValue.Value, array, 0, genericValue.Size); + return array as T[]; + } - if (genericValue.Type == RSharpValueType.FloatArray && typeof(T) == typeof(float)) - { - var array = new float[genericValue.Size]; - Marshal.Copy(genericValue.Value, array, 0, genericValue.Size); - return array as T[]; - } + if (genericValue.Type == RSharpValueType.FloatArray && typeof(T) == typeof(float)) + { + var array = new float[genericValue.Size]; + Marshal.Copy(genericValue.Value, array, 0, genericValue.Size); + return array as T[]; + } - if (genericValue.Type == RSharpValueType.DoubleArray && typeof(T) == typeof(double)) - { - var array = new double[genericValue.Size]; - Marshal.Copy(genericValue.Value, array, 0, genericValue.Size); - return array as T[]; - } + if (genericValue.Type == RSharpValueType.DoubleArray && typeof(T) == typeof(double)) + { + var array = new double[genericValue.Size]; + Marshal.Copy(genericValue.Value, array, 0, genericValue.Size); + return array as T[]; + } - if (genericValue.Type == RSharpValueType.BoolArray && typeof(T) == typeof(bool)) + if (genericValue.Type == RSharpValueType.BoolArray && typeof(T) == typeof(bool)) + { + var array = new bool[genericValue.Size]; + for (int i = 0; i < genericValue.Size; i++) { - var array = new bool[genericValue.Size]; - for (int i = 0; i < genericValue.Size; i++) - { - array[i] = Marshal.ReadByte(genericValue.Value, i) != 0; - } - - return array as T[]; + array[i] = Marshal.ReadByte(genericValue.Value, i) != 0; } - throw new InvalidOperationException("Invalid array type"); + return array as T[]; } - // Factory method to create RSharpGenericValue from an object - public static RSharpGenericValue FromObject(object obj) + throw new InvalidOperationException("Invalid array type"); + } + + // Factory method to create RSharpGenericValue from an object + public static RSharpGenericValue FromObject(object obj) + { + if (obj == null) + return new RSharpGenericValue { Type = RSharpValueType.Null, Value = IntPtr.Zero }; + // Determine the ValueType based on the actual type of the object + RSharpValueType type; + switch (obj) { - if (obj == null) - return new RSharpGenericValue { Type = RSharpValueType.Null, Value = IntPtr.Zero }; - // Determine the ValueType based on the actual type of the object - RSharpValueType type; - switch (obj) - { - case int: - type = RSharpValueType.Int; - break; - case IntPtr ptr: - return new RSharpGenericValue - { - Value = ptr, - Type = RSharpValueType.Intptr - }; - case float: - type = RSharpValueType.Float; - break; - case double: - type = RSharpValueType.Double; - break; - case bool: - type = RSharpValueType.Bool; - break; - case string objString: + case int: + type = RSharpValueType.Int; + break; + case IntPtr ptr: + return new RSharpGenericValue { - type = RSharpValueType.String; + Value = ptr, + Type = RSharpValueType.Intptr + }; + case float: + type = RSharpValueType.Float; + break; + case double: + type = RSharpValueType.Double; + break; + case bool: + type = RSharpValueType.Bool; + break; + case string objString: + { + type = RSharpValueType.String; - var tempRes = new RSharpGenericValue - { - Value = Marshal.StringToBSTR(objString), - Type = type - }; + var tempRes = new RSharpGenericValue + { + Value = Marshal.StringToHGlobalAnsi(objString), + Type = type + }; - return tempRes; + return tempRes; + } + case Array arrayObj: + { + Type elementType = arrayObj.GetType().GetElementType(); + if (elementType == typeof(int)) + { + type = RSharpValueType.IntArray; } - case Array arrayObj: + else if (elementType == typeof(float)) { - Type elementType = arrayObj.GetType().GetElementType(); - if (elementType == typeof(int)) - { - type = RSharpValueType.IntArray; - } - else if (elementType == typeof(float)) - { - type = RSharpValueType.FloatArray; - } - else if (elementType == typeof(double)) - { - type = RSharpValueType.DoubleArray; - } - else if (elementType == typeof(bool)) - { - type = RSharpValueType.BoolArray; - } - else if (elementType == typeof(string)) - { - type = RSharpValueType.StringArray; - } - else //keeping it like that for now - not sure we should be supporting arrays of objects - { - throw new ArgumentException($"Unsupported array element type: {elementType}"); - } - - break; + type = RSharpValueType.FloatArray; + } + else if (elementType == typeof(double)) + { + type = RSharpValueType.DoubleArray; + } + else if (elementType == typeof(bool)) + { + type = RSharpValueType.BoolArray; + } + else if (elementType == typeof(string)) + { + type = RSharpValueType.StringArray; + } + else //keeping it like that for now - not sure we should be supporting arrays of objects + { + throw new ArgumentException($"Unsupported array element type: {elementType}"); } - // non of the above, so we treat it as a generic object - default: - type = RSharpValueType.Object; - break; - } - - // Convert the object to IntPtr - var handle = GCHandle.Alloc(obj, GCHandleType.Normal); - var valuePtr = (IntPtr)handle; - - var result = new RSharpGenericValue - { - Value = valuePtr, - Type = type - }; - return result; + break; + } + // non of the above, so we treat it as a generic object + default: + type = RSharpValueType.Object; + break; } - public static object GetObject(this RSharpGenericValue genericValue) + // Convert the object to IntPtr + var handle = GCHandle.Alloc(obj, GCHandleType.Normal); + var valuePtr = (IntPtr)handle; + + var result = new RSharpGenericValue { - if (genericValue.Type == RSharpValueType.Object) - { - GCHandle handle = GCHandle.FromIntPtr(genericValue.Value); - return handle.Target; - } + Value = valuePtr, + Type = type + }; - throw new InvalidOperationException("Invalid object type"); - } + return result; } - [StructLayout(LayoutKind.Sequential)] - public struct RSharpGenericValue + public static object GetObject(this RSharpGenericValue genericValue) { - public RSharpValueType Type { get; set; } - public IntPtr Value { get; set; } - public int Size { get; set; } + if (genericValue.Type == RSharpValueType.Object) + { + GCHandle handle = GCHandle.FromIntPtr(genericValue.Value); + return handle.Target; + } + + throw new InvalidOperationException("Invalid object type"); } +} + +[StructLayout(LayoutKind.Sequential)] +public struct RSharpGenericValue +{ + public RSharpValueType Type { get; set; } + public IntPtr Value { get; set; } + public int Size { get; set; } } \ No newline at end of file diff --git a/src/ClrFacade/RSharpUnmanagedDll.cs b/src/ClrFacade/RSharpUnmanagedDll.cs index 5826b1b..c896a47 100644 --- a/src/ClrFacade/RSharpUnmanagedDll.cs +++ b/src/ClrFacade/RSharpUnmanagedDll.cs @@ -2,28 +2,27 @@ using System.IO; using DynamicInterop; -namespace ClrFacade +namespace ClrFacade; + +public class RSharpUnmanagedDll : IUnmanagedDll { - public class RSharpUnmanagedDll : IUnmanagedDll + public RSharpUnmanagedDll(string dllName) { - public RSharpUnmanagedDll(string dllName) + if (!File.Exists(dllName)) { - if (!File.Exists(dllName)) - { - throw new FileNotFoundException(dllName); - } - - _dll = new UnmanagedDll(dllName); - ClrObjectToSexp = _dll.GetFunction("rsharp_object_to_SEXP"); + throw new FileNotFoundException(dllName); } - public ClrObjectToSexpDelegate ClrObjectToSexp { get; set; } + _dll = new UnmanagedDll(dllName); + ClrObjectToSexp = _dll.GetFunction("rsharp_object_to_SEXP"); + } - private readonly UnmanagedDll _dll; + public ClrObjectToSexpDelegate ClrObjectToSexp { get; set; } - public IntPtr GetFunctionAddress(string entryPointName) - { - return _dll.GetFunctionAddress(entryPointName); - } + private readonly UnmanagedDll _dll; + + public IntPtr GetFunctionAddress(string entryPointName) + { + return _dll.GetFunctionAddress(entryPointName); } } \ No newline at end of file diff --git a/src/ClrFacade/RdotnetDataConverterTests.cs b/src/ClrFacade/RdotnetDataConverterTests.cs index 7edd896..27a9e0e 100644 --- a/src/ClrFacade/RdotnetDataConverterTests.cs +++ b/src/ClrFacade/RdotnetDataConverterTests.cs @@ -1,63 +1,62 @@ using System; using RDotNet; -namespace ClrFacade +namespace ClrFacade; + +public class RdotnetDataConverterTests { - public class RdotnetDataConverterTests + public class MemTestObjectRDotnet : NumericVector { - public class MemTestObjectRDotnet : NumericVector - { - public static int Counter = 0; - - public MemTestObjectRDotnet(double[] values) - : base(REngine, values) - { - Counter++; - } - - ~MemTestObjectRDotnet() - { - Counter--; - } - } + public static int Counter = 0; - public static int GetMemTestObjCounterRDotnet() + public MemTestObjectRDotnet(double[] values) + : base(REngine, values) { - return MemTestObjectRDotnet.Counter; + Counter++; } - public static object CreateMemTestObjRDotnet() + ~MemTestObjectRDotnet() { - return new MemTestObjectRDotnet(TestCases.CreateNumArray()); + Counter--; } + } - internal static REngine REngine - { - get - { - var rDotNetConverter = Internal.DataConverter as RDotNetDataConverter; - return rDotNetConverter == null ? null : RDotNetDataConverter.GetEngine(); - } - } + public static int GetMemTestObjCounterRDotnet() + { + return MemTestObjectRDotnet.Counter; + } - private static Tuple tc(string name, double[] values) - { - return Tuple.Create(name, REngine.CreateNumericVector(values)); - } + public static object CreateMemTestObjRDotnet() + { + return new MemTestObjectRDotnet(TestCases.CreateNumArray()); + } - private static Tuple tc(string name, string[] values) + internal static REngine REngine + { + get { - return Tuple.Create(name, REngine.CreateCharacterVector(values)); + var rDotNetConverter = Internal.DataConverter as RDotNetDataConverter; + return rDotNetConverter == null ? null : RDotNetDataConverter.GetEngine(); } + } - public static SymbolicExpression CreateTestDataFrame() - { - var dfFun = REngine.Evaluate("data.frame").AsFunction(); - var result = dfFun.InvokeNamed( - tc("name", new[] { "a", "b", "c" }), - tc("a", new[] { 1.0, 2.0, 3.0 }) - ); - return result; - } + private static Tuple tc(string name, double[] values) + { + return Tuple.Create(name, REngine.CreateNumericVector(values)); + } + + private static Tuple tc(string name, string[] values) + { + return Tuple.Create(name, REngine.CreateCharacterVector(values)); + } + + public static SymbolicExpression CreateTestDataFrame() + { + var dfFun = REngine.Evaluate("data.frame").AsFunction(); + var result = dfFun.InvokeNamed( + tc("name", new[] { "a", "b", "c" }), + tc("a", new[] { 1.0, 2.0, 3.0 }) + ); + return result; } } \ No newline at end of file diff --git a/src/ClrFacade/ReflectionHelper.cs b/src/ClrFacade/ReflectionHelper.cs index 3b83ce2..9c6e2a7 100644 --- a/src/ClrFacade/ReflectionHelper.cs +++ b/src/ClrFacade/ReflectionHelper.cs @@ -4,789 +4,789 @@ using System.Reflection; using System.Text; using ClrFacade.Tests; + // ReSharper disable UnusedMember.Global -namespace ClrFacade +namespace ClrFacade; + +/// +/// Gathers the reflection operations on objects performed by rSharp, as well as discovery operations on the CLR. +/// +public static class ReflectionHelper { /// - /// Gathers the reflection operations on objects performed by rSharp, as well as discovery operations on the CLR. + /// Gets information on the common language runtime on which this code is executing. + /// Purpose is to have human-readable information ot diagnose interop issues between R and the CLR runtime. /// - public static class ReflectionHelper + public static string[] GetClrInfo() { - /// - /// Gets information on the common language runtime on which this code is executing. - /// Purpose is to have human-readable information ot diagnose interop issues between R and the CLR runtime. - /// - public static string[] GetClrInfo() - { - var result = new List { Environment.Version.ToString() }; - return result.ToArray(); - } + var result = new List { Environment.Version.ToString() }; + return result.ToArray(); + } - /// - /// Gets the simple names of assemblies loaded in the current domain. - /// - public static string[] GetLoadedAssemblyNames(bool fullName = false) - { - var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); - return Array.ConvertAll(loadedAssemblies, x => fullName ? x.GetName().FullName : x.GetName().Name); - } + /// + /// Gets the simple names of assemblies loaded in the current domain. + /// + public static string[] GetLoadedAssemblyNames(bool fullName = false) + { + var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + return Array.ConvertAll(loadedAssemblies, x => fullName ? x.GetName().FullName : x.GetName().Name); + } - /// - /// Gets the paths of assemblies if loaded in the current domain. - /// - public static string[] GetLoadedAssemblyURI(string[] assemblyNames) + /// + /// Gets the paths of assemblies if loaded in the current domain. + /// + public static string[] GetLoadedAssemblyURI(string[] assemblyNames) + { + var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + var result = new string[assemblyNames.Length]; + for (var i = 0; i < assemblyNames.Length; i++) { - var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); - var result = new string[assemblyNames.Length]; - for (var i = 0; i < assemblyNames.Length; i++) - { - var s = assemblyNames[i]; - var assembly = loadedAssemblies.FirstOrDefault(x => matchAssemblyName(x, s)); - result[i] = assembly == null ? "" : assembly.Location; - } - - return result; + var s = assemblyNames[i]; + var assembly = loadedAssemblies.FirstOrDefault(x => matchAssemblyName(x, s)); + result[i] = assembly == null ? "" : assembly.Location; } - private static bool matchAssemblyName(Assembly a, string name) - { - var an = a.GetName(); - return an.FullName == name || an.Name == name; - } + return result; + } - /// - /// Gets the full name of types (Type.FullName) contained in an assembly, given its simple name - /// - public static string[] GetTypesInAssembly(string assemblyName) - { - var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); - var assembly = loadedAssemblies.FirstOrDefault((x => x.GetName().Name == assemblyName)); - if (assembly == null) - return new[] { $"Assembly '{assemblyName}' not found" }; + private static bool matchAssemblyName(Assembly a, string name) + { + var an = a.GetName(); + return an.FullName == name || an.Name == name; + } - var types = assembly.GetExportedTypes(); - return Array.ConvertAll(types, t => t.FullName); - } + /// + /// Gets the full name of types (Type.FullName) contained in an assembly, given its simple name + /// + public static string[] GetTypesInAssembly(string assemblyName) + { + var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + var assembly = loadedAssemblies.FirstOrDefault((x => x.GetName().Name == assemblyName)); + if (assembly == null) + return new[] { $"Assembly '{assemblyName}' not found" }; - /// - /// Gets human-readable signatures of the member(s) of an object or its type. - /// The purpose is to explore CLR object members from R. - /// - /// The object to reflect on, or the type of the object if already known - /// The name of the object/class member, e.g. the method name - public static string[] GetSignature(object obj, string memberName) - { - if (obj is Type type) - return GetSignature_Type(type, memberName); + var types = assembly.GetExportedTypes(); + return Array.ConvertAll(types, t => t.FullName); + } - return GetSignature_Type(obj.GetType(), memberName); - } + /// + /// Gets human-readable signatures of the member(s) of an object or its type. + /// The purpose is to explore CLR object members from R. + /// + /// The object to reflect on, or the type of the object if already known + /// The name of the object/class member, e.g. the method name + public static string[] GetSignature(object obj, string memberName) + { + if (obj is Type type) + return GetSignature_Type(type, memberName); - public static string[] GetSignature(string typeName, string memberName) - { - var type = Internal.GetType(typeName); - return type != null ? GetSignature_Type(type, memberName) : new string[] { }; - } + return GetSignature_Type(obj.GetType(), memberName); + } - /// - /// Gets human-readable signatures of the member(s) of a type. - /// - /// The type to reflect on - /// The name of the object/class member, e.g. the method name - public static string[] GetSignature_Type(Type type, string memberName) - { - var members = type.GetMember(memberName); - var result = summarize(members); - return result; - } + public static string[] GetSignature(string typeName, string memberName) + { + var type = Internal.GetType(typeName); + return type != null ? GetSignature_Type(type, memberName) : new string[] { }; + } + + /// + /// Gets human-readable signatures of the member(s) of a type. + /// + /// The type to reflect on + /// The name of the object/class member, e.g. the method name + public static string[] GetSignature_Type(Type type, string memberName) + { + var members = type.GetMember(memberName); + var result = summarize(members); + return result; + } - /// - /// Finds the first method in a type that matches a method name. - /// Explicit interface implementations are searched if required. - /// - public static MethodInfo GetMethod(Type classType, string methodName, Binder binder, BindingFlags bindingFlags, Type[] types) + /// + /// Finds the first method in a type that matches a method name. + /// Explicit interface implementations are searched if required. + /// + public static MethodInfo GetMethod(Type classType, string methodName, Binder binder, BindingFlags bindingFlags, Type[] types) + { + var method = classType.GetMethod(methodName, bindingFlags, binder, types, null); + if (method == null) { - var method = classType.GetMethod(methodName, bindingFlags, binder, types, null); - if (method == null) + var ifTypes = classType.GetInterfaces(); + foreach (var t in ifTypes) { - var ifTypes = classType.GetInterfaces(); - foreach (var t in ifTypes) - { - method = t.GetMethod(methodName, bindingFlags, binder, types, null); - if (method != null) - return method; - } + method = t.GetMethod(methodName, bindingFlags, binder, types, null); + if (method != null) + return method; } - - if (method == null) - method = findDefaultParameterMethod(classType, methodName, bindingFlags, types); - if (method == null) - method = findVarargMethod(classType, methodName, bindingFlags, types); - return method; - } - - private static MethodInfo findDefaultParameterMethod(Type classType, string methodName, BindingFlags bf, Type[] types) - { - var methods = classType.GetMethods(bf).Where(m => m.Name == methodName).Where(HasOptionalParams).ToList(); - - if (!methods.Any()) - return null; - - var mi = methods.Where(m => exactTypeMatchesOptionalParams(m, types)).ToList(); - if (!mi.Any()) - mi = methods.Where(m => assignableTypesMatchesOptionalParams(m, types)).ToList(); - if (mi.Count > 1) - mi = getLowestParameterMatch(mi, types, getFirstExactMatchOptionalParams).ToList(); - if (mi.Count > 1) - throwAmbiguousMatch(mi); - return mi.FirstOrDefault(); } - private static IReadOnlyList getLowestParameterMatch(IReadOnlyList mi, Type[] types, Func indexTest) - { - return getBestParameterMatch(mi, types, indexTest, x => x.Min()); - } + if (method == null) + method = findDefaultParameterMethod(classType, methodName, bindingFlags, types); + if (method == null) + method = findVarargMethod(classType, methodName, bindingFlags, types); + return method; + } - private static IReadOnlyList getHighestParameterMatch(IReadOnlyList mi, Type[] types, Func indexTest) - { - return getBestParameterMatch(mi, types, indexTest, x => x.Max()); - } + private static MethodInfo findDefaultParameterMethod(Type classType, string methodName, BindingFlags bf, Type[] types) + { + var methods = classType.GetMethods(bf).Where(m => m.Name == methodName).Where(HasOptionalParams).ToList(); - private static IReadOnlyList getBestParameterMatch(IReadOnlyList mi, Type[] types, Func indexTest, Func, int> bestScore) - { - var candidates = mi.ToList(); - var indicesFirstMatch = getIndexFirstMatch(mi, types, indexTest); - var validIndices = GetPositivesOnly(indicesFirstMatch); + if (!methods.Any()) + return null; - if (!validIndices.Any()) - return Array.Empty(); + var mi = methods.Where(m => exactTypeMatchesOptionalParams(m, types)).ToList(); + if (!mi.Any()) + mi = methods.Where(m => assignableTypesMatchesOptionalParams(m, types)).ToList(); + if (mi.Count > 1) + mi = getLowestParameterMatch(mi, types, getFirstExactMatchOptionalParams).ToList(); + if (mi.Count > 1) + throwAmbiguousMatch(mi); + return mi.FirstOrDefault(); + } - var bestIndex = bestScore(validIndices); + private static IReadOnlyList getLowestParameterMatch(IReadOnlyList mi, Type[] types, Func indexTest) + { + return getBestParameterMatch(mi, types, indexTest, x => x.Min()); + } - return candidates.Where((_, i) => indicesFirstMatch[i] == bestIndex).ToList(); - } + private static IReadOnlyList getHighestParameterMatch(IReadOnlyList mi, Type[] types, Func indexTest) + { + return getBestParameterMatch(mi, types, indexTest, x => x.Max()); + } - private static IReadOnlyList GetPositivesOnly(List indicesFirstMatch) - { - return indicesFirstMatch.Where(x => x >= 0).ToList(); - } + private static IReadOnlyList getBestParameterMatch(IReadOnlyList mi, Type[] types, Func indexTest, Func, int> bestScore) + { + var candidates = mi.ToList(); + var indicesFirstMatch = getIndexFirstMatch(mi, types, indexTest); + var validIndices = GetPositivesOnly(indicesFirstMatch); - private static List getIndexFirstMatch(IEnumerable mi, Type[] types, Func indexTest) - { - var indicesFirstMatch = mi.Select(m => indexTest(m, types)).ToList(); - return indicesFirstMatch; - } + if (!validIndices.Any()) + return Array.Empty(); - private static void throwAmbiguousMatch(IEnumerable mi) - { - var s = Environment.NewLine + TestUtilities.Concat(mi.Select(x => x.ToString()), Environment.NewLine) + Environment.NewLine; - throw new AmbiguousMatchException(s); - } + var bestIndex = bestScore(validIndices); - private static MethodInfo findVarargMethod(Type classType, string methodName, BindingFlags bf, Type[] types) - { - var methods = classType.GetMethods(bf).Where(m => m.Name == methodName).Where(HasVarArgs).ToList(); - if (!methods.Any()) - return null; + return candidates.Where((_, i) => indicesFirstMatch[i] == bestIndex).ToList(); + } - var mi = methods.Where(m => exactTypeMatchesVarArgs(m, types)).ToList(); - if (!mi.Any()) - mi = methods.Where(m => assignableTypesMatchesVarArgs(m, types)).ToList(); + private static IReadOnlyList GetPositivesOnly(List indicesFirstMatch) + { + return indicesFirstMatch.Where(x => x >= 0).ToList(); + } - if (mi.Count == 1) - return mi.FirstOrDefault(); + private static List getIndexFirstMatch(IEnumerable mi, Type[] types, Func indexTest) + { + var indicesFirstMatch = mi.Select(m => indexTest(m, types)).ToList(); + return indicesFirstMatch; + } - if (mi.Count > 1) - { - // Try to see whether an exact match on the the non-params parameters, or on - // the params parameters, removes the ambiguity. - var disambiguation = mi.Where(m => partialExactTypesMatchesVarArgs(m, types)).ToList(); - if (disambiguation.Count == 1) - return disambiguation.FirstOrDefault(); - disambiguation = mi.Where(m => varArgsExactTypesMatchesVarArgs(m, types)).ToList(); - if (disambiguation.Count == 1) - return disambiguation.FirstOrDefault(); - - // last resort - var closestMatches = getLowestParameterMatch(mi, types, getFirstExactMatchVarargMethods); - if (closestMatches.Count <= 1) - return closestMatches.FirstOrDefault(); - closestMatches = getHighestParameterMatch(closestMatches, types, getLastExactMatchVarargMethods); - if (closestMatches.Count <= 1) - return closestMatches.FirstOrDefault(); - - // too hard basket. For now. - throwAmbiguousMatch(closestMatches); - } + private static void throwAmbiguousMatch(IEnumerable mi) + { + var s = Environment.NewLine + TestUtilities.Concat(mi.Select(x => x.ToString()), Environment.NewLine) + Environment.NewLine; + throw new AmbiguousMatchException(s); + } - // nothing found + private static MethodInfo findVarargMethod(Type classType, string methodName, BindingFlags bf, Type[] types) + { + var methods = classType.GetMethods(bf).Where(m => m.Name == methodName).Where(HasVarArgs).ToList(); + if (!methods.Any()) return null; - } - private static bool exactTypeMatchesOptionalParams(MethodInfo method, Type[] types) - { - return testTypeMatchesOptionalParams(method, types, equals); - } + var mi = methods.Where(m => exactTypeMatchesVarArgs(m, types)).ToList(); + if (!mi.Any()) + mi = methods.Where(m => assignableTypesMatchesVarArgs(m, types)).ToList(); - private static bool assignableTypesMatchesOptionalParams(MethodInfo method, Type[] types) - { - return testTypeMatchesOptionalParams(method, types, isAssignable); - } + if (mi.Count == 1) + return mi.FirstOrDefault(); - private static bool exactTypeMatchesVarArgs(MethodInfo method, Type[] types) + if (mi.Count > 1) { - return testTypeMatchesVarArgs(method, types, equals, equals); - } + // Try to see whether an exact match on the the non-params parameters, or on + // the params parameters, removes the ambiguity. + var disambiguation = mi.Where(m => partialExactTypesMatchesVarArgs(m, types)).ToList(); + if (disambiguation.Count == 1) + return disambiguation.FirstOrDefault(); + disambiguation = mi.Where(m => varArgsExactTypesMatchesVarArgs(m, types)).ToList(); + if (disambiguation.Count == 1) + return disambiguation.FirstOrDefault(); - private static bool partialExactTypesMatchesVarArgs(MethodInfo method, Type[] types) - { - return testTypeMatchesVarArgs(method, types, equals, isAssignable); - } + // last resort + var closestMatches = getLowestParameterMatch(mi, types, getFirstExactMatchVarargMethods); + if (closestMatches.Count <= 1) + return closestMatches.FirstOrDefault(); + closestMatches = getHighestParameterMatch(closestMatches, types, getLastExactMatchVarargMethods); + if (closestMatches.Count <= 1) + return closestMatches.FirstOrDefault(); - private static bool varArgsExactTypesMatchesVarArgs(MethodInfo method, Type[] types) - { - return testTypeMatchesVarArgs(method, types, isAssignable, equals); + // too hard basket. For now. + throwAmbiguousMatch(closestMatches); } - private static bool assignableTypesMatchesVarArgs(MethodInfo method, Type[] types) - { - return testTypeMatchesVarArgs(method, types, isAssignable, isAssignable); - } + // nothing found + return null; + } - private static bool equals(Type methodType, Type paramType) - { - return methodType == paramType; - } + private static bool exactTypeMatchesOptionalParams(MethodInfo method, Type[] types) + { + return testTypeMatchesOptionalParams(method, types, equals); + } - private static bool isAssignable(Type methodType, Type paramType) - { - return methodType.IsAssignableFrom(paramType); - } + private static bool assignableTypesMatchesOptionalParams(MethodInfo method, Type[] types) + { + return testTypeMatchesOptionalParams(method, types, isAssignable); + } - private static int getFirstExactMatchOptionalParams(MethodInfo m, Type[] types) - { - return indexFirstTypeMatchOptionalParams(m, types, equals); - } + private static bool exactTypeMatchesVarArgs(MethodInfo method, Type[] types) + { + return testTypeMatchesVarArgs(method, types, equals, equals); + } - private static int getFirstExactMatchVarargMethods(MethodInfo m, Type[] types) - { - return indexFirstTestTypeMatchesVarArgs(m, types, equals, equals); - } + private static bool partialExactTypesMatchesVarArgs(MethodInfo method, Type[] types) + { + return testTypeMatchesVarArgs(method, types, equals, isAssignable); + } - private static int getLastExactMatchVarargMethods(MethodInfo m, Type[] types) - { - return indexBeforeTransitionToNoMatchVarArgs(m, types, equals); - } + private static bool varArgsExactTypesMatchesVarArgs(MethodInfo method, Type[] types) + { + return testTypeMatchesVarArgs(method, types, isAssignable, equals); + } - private static bool testTypeMatchesOptionalParams(MethodInfo method, Type[] types, Func matchTest) - { - var parameters = method.GetParameters(); - if (parameters.Length == 0 && types.Length == 0) - return true; + private static bool assignableTypesMatchesVarArgs(MethodInfo method, Type[] types) + { + return testTypeMatchesVarArgs(method, types, isAssignable, isAssignable); + } - if (types.Length > parameters.Length) - return false; // this may be an issue with mix of default values and params keyword. So be it; feature later. + private static bool equals(Type methodType, Type paramType) + { + return methodType == paramType; + } - if (types.Length < parameters.Length && !parameters[types.Length].IsOptional) - return false; // there remains at least one non-optional parameters that is missing. + private static bool isAssignable(Type methodType, Type paramType) + { + return methodType.IsAssignableFrom(paramType); + } - return !types.Where((t, i) => !matchTest(parameters[i].ParameterType, t)).Any(); - } + private static int getFirstExactMatchOptionalParams(MethodInfo m, Type[] types) + { + return indexFirstTypeMatchOptionalParams(m, types, equals); + } - private static int indexFirstTypeMatchOptionalParams(MethodInfo method, Type[] types, Func matchTest) - { - var parameters = method.GetParameters(); - if (parameters.Length == 0 && types.Length == 0) - return -1; + private static int getFirstExactMatchVarargMethods(MethodInfo m, Type[] types) + { + return indexFirstTestTypeMatchesVarArgs(m, types, equals, equals); + } - if (types.Length > parameters.Length) - return -1; // this may be an issue with mix of default values and params keyword. So be it; feature later. + private static int getLastExactMatchVarargMethods(MethodInfo m, Type[] types) + { + return indexBeforeTransitionToNoMatchVarArgs(m, types, equals); + } - if (types.Length < parameters.Length && !parameters[types.Length].IsOptional) - return -1; // there remains at least one non-optional parameters that is missing. - - for (var i = 0; i < types.Length; i++) - { - if (matchTest(parameters[i].ParameterType, types[i])) - return i; - } + private static bool testTypeMatchesOptionalParams(MethodInfo method, Type[] types, Func matchTest) + { + var parameters = method.GetParameters(); + if (parameters.Length == 0 && types.Length == 0) + return true; - return -1; - } + if (types.Length > parameters.Length) + return false; // this may be an issue with mix of default values and params keyword. So be it; feature later. - private static bool testTypeMatchesVarArgs(MethodInfo method, Type[] types, Func stdParamsMatchTest, Func paramsParamsMatchTest) - { - var parameters = method.GetParameters(); - if (parameters.Length == 0 && types.Length == 0) - return true; + if (types.Length < parameters.Length && !parameters[types.Length].IsOptional) + return false; // there remains at least one non-optional parameters that is missing. - if (types.Length < parameters.Length - 1) - return false; // this may be an issue with mix of default values and params keyword. So be it; feature later. + return !types.Where((t, i) => !matchTest(parameters[i].ParameterType, t)).Any(); + } - for (var i = 0; i < parameters.Length - 1; i++) - { - if (!stdParamsMatchTest(parameters[i].ParameterType, types[i])) - return false; - } + private static int indexFirstTypeMatchOptionalParams(MethodInfo method, Type[] types, Func matchTest) + { + var parameters = method.GetParameters(); + if (parameters.Length == 0 && types.Length == 0) + return -1; - var arrayType = parameters[^1].ParameterType; - if (!arrayType.IsArray) - throw new ArgumentException("Inconsistent - arguments should not be packed with a non-array method parameter"); + if (types.Length > parameters.Length) + return -1; // this may be an issue with mix of default values and params keyword. So be it; feature later. - var t = arrayType.GetElementType(); - for (var i = parameters.Length - 1; i < types.Length; i++) - { - if (!paramsParamsMatchTest(t, types[i])) - return false; - } + if (types.Length < parameters.Length && !parameters[types.Length].IsOptional) + return -1; // there remains at least one non-optional parameters that is missing. - return true; + for (var i = 0; i < types.Length; i++) + { + if (matchTest(parameters[i].ParameterType, types[i])) + return i; } - private static int indexFirstTestTypeMatchesVarArgs(MethodInfo method, Type[] types, Func stdParamsMatchTest, Func paramsParamsMatchTest) - { - var parameters = method.GetParameters(); - if (parameters.Length == 0 && types.Length == 0) - return -1; + return -1; + } + + private static bool testTypeMatchesVarArgs(MethodInfo method, Type[] types, Func stdParamsMatchTest, Func paramsParamsMatchTest) + { + var parameters = method.GetParameters(); + if (parameters.Length == 0 && types.Length == 0) + return true; - if (types.Length < parameters.Length - 1) - return -1; // this may be an issue with mix of default values and params keyword. So be it; feature later. + if (types.Length < parameters.Length - 1) + return false; // this may be an issue with mix of default values and params keyword. So be it; feature later. - for (var i = 0; i < parameters.Length - 1; i++) - { - if (stdParamsMatchTest(parameters[i].ParameterType, types[i])) - return i; - } + for (var i = 0; i < parameters.Length - 1; i++) + { + if (!stdParamsMatchTest(parameters[i].ParameterType, types[i])) + return false; + } - var arrayType = parameters[^1].ParameterType; - if (!arrayType.IsArray) - throw new ArgumentException("Inconsistent - arguments should not be packed with a non-array method parameter"); + var arrayType = parameters[^1].ParameterType; + if (!arrayType.IsArray) + throw new ArgumentException("Inconsistent - arguments should not be packed with a non-array method parameter"); - var t = arrayType.GetElementType(); - for (var i = parameters.Length - 1; i < types.Length; i++) - { - if (paramsParamsMatchTest(t, types[i])) - return i; - } + var t = arrayType.GetElementType(); + for (var i = parameters.Length - 1; i < types.Length; i++) + { + if (!paramsParamsMatchTest(t, types[i])) + return false; + } + + return true; + } + private static int indexFirstTestTypeMatchesVarArgs(MethodInfo method, Type[] types, Func stdParamsMatchTest, Func paramsParamsMatchTest) + { + var parameters = method.GetParameters(); + if (parameters.Length == 0 && types.Length == 0) return -1; + + if (types.Length < parameters.Length - 1) + return -1; // this may be an issue with mix of default values and params keyword. So be it; feature later. + + for (var i = 0; i < parameters.Length - 1; i++) + { + if (stdParamsMatchTest(parameters[i].ParameterType, types[i])) + return i; } - /// - /// Finds the last index of a parameter that matches a criteria, before a transition to false. - /// - private static int indexBeforeTransitionToNoMatchVarArgs(MethodInfo method, Type[] types, Func matchTest) + var arrayType = parameters[^1].ParameterType; + if (!arrayType.IsArray) + throw new ArgumentException("Inconsistent - arguments should not be packed with a non-array method parameter"); + + var t = arrayType.GetElementType(); + for (var i = parameters.Length - 1; i < types.Length; i++) { - var parameters = method.GetParameters(); - if (parameters.Length == 0 && types.Length == 0) - return -1; + if (paramsParamsMatchTest(t, types[i])) + return i; + } + + return -1; + } - if (types.Length < (parameters.Length - 1)) - return -1; // this may be an issue with mix of default values and params keyword. So be it; feature later. + /// + /// Finds the last index of a parameter that matches a criteria, before a transition to false. + /// + private static int indexBeforeTransitionToNoMatchVarArgs(MethodInfo method, Type[] types, Func matchTest) + { + var parameters = method.GetParameters(); + if (parameters.Length == 0 && types.Length == 0) + return -1; + + if (types.Length < (parameters.Length - 1)) + return -1; // this may be an issue with mix of default values and params keyword. So be it; feature later. - var hasHitMatch = false; - for (var i = 0; i < parameters.Length - 1; i++) + var hasHitMatch = false; + for (var i = 0; i < parameters.Length - 1; i++) + { + if (!matchTest(parameters[i].ParameterType, types[i])) { - if (!matchTest(parameters[i].ParameterType, types[i])) - { - if (hasHitMatch) - return i - 1; - } - else - hasHitMatch = true; + if (hasHitMatch) + return i - 1; } + else + hasHitMatch = true; + } - var arrayType = parameters[^1].ParameterType; - if (!arrayType.IsArray) - throw new ArgumentException("Inconsistent - arguments should not be packed with a non-array method parameter"); + var arrayType = parameters[^1].ParameterType; + if (!arrayType.IsArray) + throw new ArgumentException("Inconsistent - arguments should not be packed with a non-array method parameter"); - var t = arrayType.GetElementType(); - for (var i = parameters.Length - 1; i < types.Length; i++) + var t = arrayType.GetElementType(); + for (var i = parameters.Length - 1; i < types.Length; i++) + { + if (!matchTest(t, types[i])) { - if (!matchTest(t, types[i])) - { - if (hasHitMatch) - return i - 1; - } - else - hasHitMatch = true; + if (hasHitMatch) + return i - 1; } + else + hasHitMatch = true; + } - if (hasHitMatch) - // for cases where blah(object, int, params int[]) called with int, int, int, int, int - return types.Length; + if (hasHitMatch) + // for cases where blah(object, int, params int[]) called with int, int, int, int, int + return types.Length; - return -1; - } + return -1; + } - public static bool HasOptionalParams(MethodInfo method) - { - var parameters = method.GetParameters(); - if (parameters.Length == 0) - return false; + public static bool HasOptionalParams(MethodInfo method) + { + var parameters = method.GetParameters(); + if (parameters.Length == 0) + return false; - var p = parameters[^1]; - return p.IsOptional; - } + var p = parameters[^1]; + return p.IsOptional; + } - public static bool HasVarArgs(MethodInfo method) - { - var parameters = method.GetParameters(); - if (parameters.Length == 0) - return false; + public static bool HasVarArgs(MethodInfo method) + { + var parameters = method.GetParameters(); + if (parameters.Length == 0) + return false; - var p = parameters[^1]; - return IsVarArg(p); - } + var p = parameters[^1]; + return IsVarArg(p); + } - public static bool IsVarArg(ParameterInfo parameterInfo) - { - var parameterAttribute = parameterInfo.GetCustomAttributes(typeof(ParamArrayAttribute), false); - return parameterAttribute.Length > 0; - } + public static bool IsVarArg(ParameterInfo parameterInfo) + { + var parameterAttribute = parameterInfo.GetCustomAttributes(typeof(ParamArrayAttribute), false); + return parameterAttribute.Length > 0; + } - /// - /// Gets all the methods of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetMethods(object obj, string pattern) - { - if (obj is not Type type) - type = obj.GetType(); + /// + /// Gets all the methods of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetMethods(object obj, string pattern) + { + if (obj is not Type type) + type = obj.GetType(); - return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); - } + return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); + } - /// - /// Gets all the non-static public methods of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetInstanceMethods(object obj, string pattern) - { - var type = obj.GetType(); - return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Instance); - } + /// + /// Gets all the non-static public methods of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetInstanceMethods(object obj, string pattern) + { + var type = obj.GetType(); + return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Instance); + } - /// - /// Gets all the non-static public constructors of a class. - /// - /// type name - public static string[] GetConstructors(string typeName) - { - return GetConstructors(Internal.GetType(typeName)); - } + /// + /// Gets all the non-static public constructors of a class. + /// + /// type name + public static string[] GetConstructors(string typeName) + { + return GetConstructors(Internal.GetType(typeName)); + } - /// - /// Gets all the non-static public constructors of a class. - /// - /// type - public static string[] GetConstructors(Type type) - { - return getConstructors(type, BindingFlags.Public | BindingFlags.Instance); - } + /// + /// Gets all the non-static public constructors of a class. + /// + /// type + public static string[] GetConstructors(Type type) + { + return getConstructors(type, BindingFlags.Public | BindingFlags.Instance); + } - /// - /// Gets all the static public methods of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetStaticMethods(object obj, string pattern) - { - var type = obj.GetType(); - return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Static); - } + /// + /// Gets all the static public methods of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetStaticMethods(object obj, string pattern) + { + var type = obj.GetType(); + return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Static); + } - /// The case sensitive string to look for in member names - public static string[] GetStaticMethods(string typeName, string pattern) - { - var type = Internal.GetType(typeName); - return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Static); - } + /// The case sensitive string to look for in member names + public static string[] GetStaticMethods(string typeName, string pattern) + { + var type = Internal.GetType(typeName); + return getMethods(type, pattern, BindingFlags.Public | BindingFlags.Static); + } - /// - /// Gets all the public fields of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetFields(object obj, string pattern) - { - var type = obj.GetType(); - return getFields(type, pattern, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); - } + /// + /// Gets all the public fields of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetFields(object obj, string pattern) + { + var type = obj.GetType(); + return getFields(type, pattern, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); + } - /// - /// Gets all the non-static public fields of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetInstanceFields(object obj, string pattern) - { - Type type = obj.GetType(); - return getFields(type, pattern, BindingFlags.Public | BindingFlags.Instance); - } + /// + /// Gets all the non-static public fields of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetInstanceFields(object obj, string pattern) + { + Type type = obj.GetType(); + return getFields(type, pattern, BindingFlags.Public | BindingFlags.Instance); + } - /// - /// Gets all the static fields of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetStaticFields(object obj, string pattern) - { - Type type = obj.GetType(); - return getFields(type, pattern, BindingFlags.Public | BindingFlags.Static); - } + /// + /// Gets all the static fields of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetStaticFields(object obj, string pattern) + { + Type type = obj.GetType(); + return getFields(type, pattern, BindingFlags.Public | BindingFlags.Static); + } - public static string[] GetStaticFields(string typeName, string pattern) - { - Type type = Internal.GetType(typeName); - return getFields(type, pattern, BindingFlags.Public | BindingFlags.Static); - } + public static string[] GetStaticFields(string typeName, string pattern) + { + Type type = Internal.GetType(typeName); + return getFields(type, pattern, BindingFlags.Public | BindingFlags.Static); + } - public static string[] GetStaticFields(Type type, string pattern) - { - return getFields(type, pattern, BindingFlags.Public | BindingFlags.Static); - } + public static string[] GetStaticFields(Type type, string pattern) + { + return getFields(type, pattern, BindingFlags.Public | BindingFlags.Static); + } - /// - /// Gets the value of a field of an object. - /// - public static object GetFieldValue(object obj, string fieldName) - { - if (obj == null) - throw new ArgumentNullException(nameof(obj), "obj"); + /// + /// Gets the value of a field of an object. + /// + public static object GetFieldValue(object obj, string fieldName) + { + if (obj == null) + throw new ArgumentNullException(nameof(obj), "obj"); - // FIXME: accessing private fields should be discouraged. - var field = obj.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - if (field == null) - throw new ArgumentException($"Field {fieldName} not found on object of type {obj.GetType().FullName}"); + // FIXME: accessing private fields should be discouraged. + var field = obj.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + if (field == null) + throw new ArgumentException($"Field {fieldName} not found on object of type {obj.GetType().FullName}"); - return field.GetValue(obj); - } + return field.GetValue(obj); + } - /// - /// Gets all the properties of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetProperties(object obj, string pattern) - { - Type type = obj.GetType(); - return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); - } + /// + /// Gets all the properties of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetProperties(object obj, string pattern) + { + Type type = obj.GetType(); + return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); + } - /// - /// Gets all the non-static public properties of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetInstanceProperties(object obj, string pattern) - { - Type type = obj.GetType(); - return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Instance); - } + /// + /// Gets all the non-static public properties of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetInstanceProperties(object obj, string pattern) + { + Type type = obj.GetType(); + return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Instance); + } - /// - /// Gets all the static public properties of an object with a name that contains a specific string. - /// - /// The object to reflect on, or its type - /// The case sensitive string to look for in member names - public static string[] GetStaticProperties(object obj, string pattern) - { - Type type = obj.GetType(); - return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Static); - } + /// + /// Gets all the static public properties of an object with a name that contains a specific string. + /// + /// The object to reflect on, or its type + /// The case sensitive string to look for in member names + public static string[] GetStaticProperties(object obj, string pattern) + { + Type type = obj.GetType(); + return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Static); + } - public static string[] GetStaticProperties(string typeName, string pattern) - { - Type type = Internal.GetType(typeName); - return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Static); - } + public static string[] GetStaticProperties(string typeName, string pattern) + { + Type type = Internal.GetType(typeName); + return getProperties(type, pattern, BindingFlags.Public | BindingFlags.Static); + } - /// - /// Gets the value of a property of an object. - /// - public static object GetPropertyValue(object obj, string propertyName) - { - if (obj == null) - throw new ArgumentNullException(nameof(obj), "obj"); + /// + /// Gets the value of a property of an object. + /// + public static object GetPropertyValue(object obj, string propertyName) + { + if (obj == null) + throw new ArgumentNullException(nameof(obj), "obj"); - // FIXME: accessing private fields should be discouraged. - var field = obj.GetType().GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - if (field == null) - throw new ArgumentException($"Property {propertyName} not found on object of type {obj.GetType().FullName}"); + // FIXME: accessing private fields should be discouraged. + var field = obj.GetType().GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + if (field == null) + throw new ArgumentException($"Property {propertyName} not found on object of type {obj.GetType().FullName}"); - return field.GetValue(obj, null); - } + return field.GetValue(obj, null); + } - public static string[] GetEnumNames(string enumTypename) - { - var t = Internal.GetType(enumTypename); - if (t == null) - throw new ArgumentException($"Type not found: {enumTypename}"); + public static string[] GetEnumNames(string enumTypename) + { + var t = Internal.GetType(enumTypename); + if (t == null) + throw new ArgumentException($"Type not found: {enumTypename}"); - return GetEnumNames(t); - } + return GetEnumNames(t); + } - public static string[] GetEnumNames(Type enumType) - { - if (enumType == null) - throw new ArgumentNullException(); + public static string[] GetEnumNames(Type enumType) + { + if (enumType == null) + throw new ArgumentNullException(); - if (typeof(Enum).IsAssignableFrom(enumType) == false) - throw new ArgumentException($"{enumType} is not the type of an Enum"); + if (typeof(Enum).IsAssignableFrom(enumType) == false) + throw new ArgumentException($"{enumType} is not the type of an Enum"); - return Enum.GetNames(enumType); - } + return Enum.GetNames(enumType); + } - public static string[] GetEnumNames(Enum e) - { - return GetEnumNames(e.GetType()); - } + public static string[] GetEnumNames(Enum e) + { + return GetEnumNames(e.GetType()); + } - public static string[] GetInterfacesFullNames(Type type) - { - var interfaces = type.GetInterfaces(); - return Array.ConvertAll(interfaces, x => x.FullName); - } + public static string[] GetInterfacesFullNames(Type type) + { + var interfaces = type.GetInterfaces(); + return Array.ConvertAll(interfaces, x => x.FullName); + } - public static string[] GetDeclaredMethodNames(Type type, BindingFlags bindings = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance) - { - var methods = type.GetMethods(bindings); - return Array.ConvertAll(methods, x => x.Name); - } + public static string[] GetDeclaredMethodNames(Type type, BindingFlags bindings = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance) + { + var methods = type.GetMethods(bindings); + return Array.ConvertAll(methods, x => x.Name); + } - private static string[] getFields(Type type, string pattern, BindingFlags flags) - { - var fieldNames = type.GetFields(flags).Where(field => field.Name.Contains(pattern)).Select(field => field.Name); - return sort(fieldNames.ToArray()); - } + private static string[] getFields(Type type, string pattern, BindingFlags flags) + { + var fieldNames = type.GetFields(flags).Where(field => field.Name.Contains(pattern)).Select(field => field.Name); + return sort(fieldNames.ToArray()); + } - private static string[] sort(string[] result) - { - Array.Sort(result); - return result; - } + private static string[] sort(string[] result) + { + Array.Sort(result); + return result; + } - private static string[] getProperties(Type type, string pattern, BindingFlags flags) - { - var propNames = type.GetProperties(flags).Where(property => property.Name.Contains(pattern)).Select(property => property.Name); - return sort(propNames.ToArray()); - } + private static string[] getProperties(Type type, string pattern, BindingFlags flags) + { + var propNames = type.GetProperties(flags).Where(property => property.Name.Contains(pattern)).Select(property => property.Name); + return sort(propNames.ToArray()); + } - private static string[] getMethods(Type type, string pattern, BindingFlags flags) - { - var methodNames = type.GetMethods(flags).Where(method => method.Name.Contains(pattern)).Select(method => method.Name); - return sort(methodNames.ToArray()); - } + private static string[] getMethods(Type type, string pattern, BindingFlags flags) + { + var methodNames = type.GetMethods(flags).Where(method => method.Name.Contains(pattern)).Select(method => method.Name); + return sort(methodNames.ToArray()); + } - private static string[] getConstructors(Type type, BindingFlags flags) - { - return sort(Array.ConvertAll(type.GetConstructors(flags), summarizeConstructor)); - } + private static string[] getConstructors(Type type, BindingFlags flags) + { + return sort(Array.ConvertAll(type.GetConstructors(flags), summarizeConstructor)); + } - private static string[] summarize(MemberInfo[] members) - { - var result = new string[members.Length]; - for (var i = 0; i < members.Length; i++) - result[i] = summarize(members[i]); - return result; - } + private static string[] summarize(MemberInfo[] members) + { + var result = new string[members.Length]; + for (var i = 0; i < members.Length; i++) + result[i] = summarize(members[i]); + return result; + } - private static string summarize(MemberInfo member) - { - var ctor = member as ConstructorInfo; - if (ctor != null) return summarizeConstructor(ctor); - var field = member as FieldInfo; - if (field != null) return summarizeField(field); - var prop = member as PropertyInfo; - if (prop != null) return summarizeProperty(prop); - var method = member as MethodInfo; - if (method != null) return summarizeMethod(method); - throw new ArgumentException("MemberInfo is not a constructor, field, property of method-info, but of type {1}", member.GetType().ToString()); - } + private static string summarize(MemberInfo member) + { + var ctor = member as ConstructorInfo; + if (ctor != null) return summarizeConstructor(ctor); + var field = member as FieldInfo; + if (field != null) return summarizeField(field); + var prop = member as PropertyInfo; + if (prop != null) return summarizeProperty(prop); + var method = member as MethodInfo; + if (method != null) return summarizeMethod(method); + throw new ArgumentException("MemberInfo is not a constructor, field, property of method-info, but of type {1}", member.GetType().ToString()); + } - private static string summarizeConstructor(ConstructorInfo ctor) - { - var result = new StringBuilder(); - addMethodBaseInfo(ctor, result); - result.Append($"Constructor: {ctor.Name}"); + private static string summarizeConstructor(ConstructorInfo ctor) + { + var result = new StringBuilder(); + addMethodBaseInfo(ctor, result); + result.Append($"Constructor: {ctor.Name}"); - var parameters = ctor.GetParameters(); - addParametersSummary(result, parameters); - return result.ToString(); - } + var parameters = ctor.GetParameters(); + addParametersSummary(result, parameters); + return result.ToString(); + } - private static void addMethodBaseInfo(MethodBase methodBase, StringBuilder result) - { - if (methodBase.IsGenericMethod) result.Append("Generic, "); - if (methodBase.IsGenericMethodDefinition) result.Append("Generic definition, "); - if (methodBase.IsStatic) result.Append("Static, "); - if (methodBase.IsAbstract) result.Append("abstract, "); - } + private static void addMethodBaseInfo(MethodBase methodBase, StringBuilder result) + { + if (methodBase.IsGenericMethod) result.Append("Generic, "); + if (methodBase.IsGenericMethodDefinition) result.Append("Generic definition, "); + if (methodBase.IsStatic) result.Append("Static, "); + if (methodBase.IsAbstract) result.Append("abstract, "); + } - private static string summarizeMethod(MethodInfo method) - { - var result = new StringBuilder(); - addMethodBaseInfo(method, result); - result.Append($"Method: {method.ReturnType.Name} {method.Name}"); + private static string summarizeMethod(MethodInfo method) + { + var result = new StringBuilder(); + addMethodBaseInfo(method, result); + result.Append($"Method: {method.ReturnType.Name} {method.Name}"); - var parameters = method.GetParameters(); - addParametersSummary(result, parameters); - return result.ToString(); - } + var parameters = method.GetParameters(); + addParametersSummary(result, parameters); + return result.ToString(); + } - private static void addParametersSummary(StringBuilder result, ParameterInfo[] parameters) - { - if (parameters.Length > 0) - result.Append(", "); - result.Append(SummarizeTypes(parameters)); - } + private static void addParametersSummary(StringBuilder result, ParameterInfo[] parameters) + { + if (parameters.Length > 0) + result.Append(", "); + result.Append(SummarizeTypes(parameters)); + } - internal static string SummarizeTypes(ParameterInfo[] parameters) - { - var types = parameters.Select(p => p.ParameterType).ToArray(); - return SummarizeTypes(types); - } + internal static string SummarizeTypes(ParameterInfo[] parameters) + { + var types = parameters.Select(p => p.ParameterType).ToArray(); + return SummarizeTypes(types); + } - internal static string SummarizeTypes(Type[] types) + internal static string SummarizeTypes(Type[] types) + { + var result = new StringBuilder(); + for (var i = 0; i < types.Length - 1; i++) { - var result = new StringBuilder(); - for (var i = 0; i < types.Length - 1; i++) - { - result.Append(types[i].Name); - result.Append(", "); - } + result.Append(types[i].Name); + result.Append(", "); + } - if (types.Length > 0) - result.Append(types[^1].Name); + if (types.Length > 0) + result.Append(types[^1].Name); - return result.ToString(); - } + return result.ToString(); + } - internal static string[] GetMethodParameterTypes(MethodBase method) - { - var parameters = method.GetParameters(); + internal static string[] GetMethodParameterTypes(MethodBase method) + { + var parameters = method.GetParameters(); - return parameters.Select(parameter => parameter.ParameterType.FullName).ToArray(); - } + return parameters.Select(parameter => parameter.ParameterType.FullName).ToArray(); + } - private static string summarizeProperty(PropertyInfo prop) - { - return $"Property {prop.Name}, {prop.PropertyType.Name}, can write: {prop.CanWrite}"; - } + private static string summarizeProperty(PropertyInfo prop) + { + return $"Property {prop.Name}, {prop.PropertyType.Name}, can write: {prop.CanWrite}"; + } - private static string summarizeField(FieldInfo field) - { - return $"Field {field.Name}, {field.FieldType.Name}"; - } + private static string summarizeField(FieldInfo field) + { + return $"Field {field.Name}, {field.FieldType.Name}"; + } - internal static void ThrowMissingMethod(Type classType, string methodName, string modifier, Type[] types) - { - var s = types.Length == 0 ? "without method parameters" : "for method parameters " + SummarizeTypes(types); - throw new MissingMethodException($"Could not find a suitable {modifier} method {methodName} on type {classType.FullName} {s}"); - } + internal static void ThrowMissingMethod(Type classType, string methodName, string modifier, Type[] types) + { + var s = types.Length == 0 ? "without method parameters" : "for method parameters " + SummarizeTypes(types); + throw new MissingMethodException($"Could not find a suitable {modifier} method {methodName} on type {classType.FullName} {s}"); } } \ No newline at end of file diff --git a/src/ClrFacade/TestArrayMemoryHandling.cs b/src/ClrFacade/TestArrayMemoryHandling.cs index df3160f..f8df48c 100644 --- a/src/ClrFacade/TestArrayMemoryHandling.cs +++ b/src/ClrFacade/TestArrayMemoryHandling.cs @@ -1,4 +1,5 @@ using System; + // ReSharper disable InconsistentNaming match with R names // ReSharper disable UnusedMember.Global called dynamically diff --git a/src/ClrFacade/TestCases.cs b/src/ClrFacade/TestCases.cs index 8ee3994..6dad7fa 100644 --- a/src/ClrFacade/TestCases.cs +++ b/src/ClrFacade/TestCases.cs @@ -7,6 +7,7 @@ using System.Numerics; using System.Text; using RDotNet; + // ReSharper disable UnusedMember.Global called dynamically namespace ClrFacade; @@ -74,7 +75,7 @@ public static bool UtcDateEquals(DateTime[] dts, string[] isoDateTimes, string t public static bool DateEquals(DateTime dt1, DateTime dt2) { var res = dt1 == dt2; - if (res) + if (res) return res; Console.WriteLine("DateEqualsFails"); @@ -122,7 +123,7 @@ public static int GetPrivateMemoryMegabytes() public static DateTime CreateDate(string isoDateTime, string datetimeKind = "") { var res = DateTime.Parse(isoDateTime); - if (string.IsNullOrEmpty(datetimeKind)) + if (string.IsNullOrEmpty(datetimeKind)) return res; if (Enum.TryParse(datetimeKind, out DateTimeKind dtk)) @@ -143,7 +144,7 @@ public static DateTime UtcDateForTimeZone(string isoDateTime, string timeZoneId // Using TimeZoneInfo on dates far back towards the start of the christian calendar era poses problem. Don't do it if TZ = UTC if (timeZoneId == "UTC") return CreateDate(isoDateTime, "Utc"); - + TimeZoneInfo tz; tz = string.IsNullOrEmpty(timeZoneId) ? TimeZoneInfo.Local : TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); var dateTime = CreateDate(isoDateTime); @@ -563,7 +564,8 @@ public static bool StringEquals(string value) public static Complex[] CreateComplex(double[] real, double[] imaginary) { - if (real.Length != imaginary.Length) throw new ArgumentException("array of real and imaginary numbers not of the same length"); + if (real.Length != imaginary.Length) + throw new ArgumentException("array of real and imaginary numbers not of the same length"); var res = new Complex[real.Length]; for (int i = 0; i < real.Length; i++) { @@ -585,7 +587,7 @@ public static bool ComplexEquals(Complex complex, double real, double imaginary) public static bool ComplexEquals(Complex[] complexArray, double[] real, double[] imaginary) { - if (complexArray.Length != real.Length || complexArray.Length != imaginary.Length) + if (complexArray.Length != real.Length || complexArray.Length != imaginary.Length) return false; return !complexArray.Where((t, i) => !ComplexEquals(t, real[i], imaginary[i])).Any(); diff --git a/src/ClrFacade/TestMethodBinding.cs b/src/ClrFacade/TestMethodBinding.cs index a4f1392..c1cfac6 100644 --- a/src/ClrFacade/TestMethodBinding.cs +++ b/src/ClrFacade/TestMethodBinding.cs @@ -2,938 +2,938 @@ using System.Collections.Generic; using System.Reflection; using ClrFacade.Tests.RefClasses; + // ReSharper disable UnusedMember.Global called dynamically -namespace ClrFacade +namespace ClrFacade; + +/// +/// Do not modify the .cs file: T4 generated class to support the unit tests for method binding +/// +public class TestMethodBinding : ITestMethodBindings { - /// - /// Do not modify the .cs file: T4 generated class to support the unit tests for method binding - /// - public class TestMethodBinding : ITestMethodBindings + public static string[] SomeStaticMethod(object obj) { - public static string[] SomeStaticMethod(object obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(object obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(object obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(float x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(float x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(float x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(float x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(int x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(int x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(int x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(int x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(bool x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(bool x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(bool x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(bool x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(DateTime x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(DateTime x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(DateTime x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(DateTime x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(byte x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(byte x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(byte x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(byte x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(char x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(char x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(char x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(char x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(object obj1, object obj2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(object obj1, object obj2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(object obj1, object obj2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(object obj1, object obj2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object obj1, object obj2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object obj1, object obj2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string x1, string x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string x1, string x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string x1, string x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string x1, string x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string x1, string x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string x1, string x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double x1, double x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double x1, double x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double x1, double x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double x1, double x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x1, double x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x1, double x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(float x1, float x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(float x1, float x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(float x1, float x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(float x1, float x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float x1, float x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float x1, float x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(int x1, int x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(int x1, int x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(int x1, int x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(int x1, int x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int x1, int x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int x1, int x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(bool x1, bool x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(bool x1, bool x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(bool x1, bool x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(bool x1, bool x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool x1, bool x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool x1, bool x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(DateTime x1, DateTime x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(DateTime x1, DateTime x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(DateTime x1, DateTime x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(DateTime x1, DateTime x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime x1, DateTime x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime x1, DateTime x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(byte x1, byte x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(byte x1, byte x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(byte x1, byte x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(byte x1, byte x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte x1, byte x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte x1, byte x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(char x1, char x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(char x1, char x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(char x1, char x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(char x1, char x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char x1, char x2) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char x1, char x2) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(object[] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(object[] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(object[] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(object[] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object[] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object[] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(float[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(float[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(float[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(float[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(int[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(int[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(int[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(int[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(bool[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(bool[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(bool[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(bool[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(DateTime[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(DateTime[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(DateTime[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(DateTime[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(byte[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(byte[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(byte[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(byte[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(char[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(char[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(char[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(char[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char[] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char[] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(object[,] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(object[,] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(object[,] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(object[,] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object[,] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object[,] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(float[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(float[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(float[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(float[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(int[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(int[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(int[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(int[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(bool[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(bool[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(bool[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(bool[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(DateTime[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(DateTime[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(DateTime[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(DateTime[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(byte[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(byte[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(byte[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(byte[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(char[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(char[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(char[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(char[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char[,] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char[,] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(object[][] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(object[][] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(object[][] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(object[][] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object[][] obj) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(object[][] obj) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(float[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(float[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(float[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(float[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(float[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(int[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(int[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(int[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(int[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(int[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(bool[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(bool[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(bool[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(bool[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(bool[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(DateTime[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(DateTime[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(DateTime[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(DateTime[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(DateTime[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(byte[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(byte[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(byte[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(byte[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(byte[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(char[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(char[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(char[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(char[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char[][] x) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(char[][] x) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double x, string y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double x, string y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double x, string y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double x, string y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x, string y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x, string y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double x, string y, string z) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double x, string y, string z) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double x, string y, string z) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double x, string y, string z) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x, string y, string z) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x, string y, string z) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(double x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(double x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(double x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(double x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(double x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string[] x, string y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string[] x, string y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string[] x, string y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string[] x, string y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[] x, string y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[] x, string y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] SomeStaticMethod(string[] x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public static string[] SomeStaticMethod(string[] x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public string[] SomeInstanceMethod(string[] x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + public string[] SomeInstanceMethod(string[] x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[] x, string[] y) - { - return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); - } + string[] ITestMethodBindings.SomeExplicitlyImplementedMethod(string[] x, string[] y) + { + return ReflectionHelper.GetMethodParameterTypes(MethodBase.GetCurrentMethod()); + } - public static string[] GetOptionalParamsTestCases() - { - var list = new List - { - "int p1, int p2, params int [] p3", - "object p1, int p2, params int [] p3", - "int p1, object p2, params int [] p3", - "object p1, object p2, params int [] p3", - "int p1, int p2, params object [] p3", - "object p1, int p2, params object [] p3", - "int p1, object p2, params object [] p3", - "object p1, object p2, params object [] p3", - "object p1", - "int p1" - }; - return list.ToArray(); - } - - public static string SomeMethodWithVarArgs(int p1, int p2, params int[] p3) - { - return "int p1, int p2, params int [] p3"; - } + public static string[] GetOptionalParamsTestCases() + { + var list = new List + { + "int p1, int p2, params int [] p3", + "object p1, int p2, params int [] p3", + "int p1, object p2, params int [] p3", + "object p1, object p2, params int [] p3", + "int p1, int p2, params object [] p3", + "object p1, int p2, params object [] p3", + "int p1, object p2, params object [] p3", + "object p1, object p2, params object [] p3", + "object p1", + "int p1" + }; + return list.ToArray(); + } - public static string SomeMethodWithVarArgs(object p1, int p2, params int[] p3) - { - return "object p1, int p2, params int [] p3"; - } + public static string SomeMethodWithVarArgs(int p1, int p2, params int[] p3) + { + return "int p1, int p2, params int [] p3"; + } - public static string SomeMethodWithVarArgs(int p1, object p2, params int[] p3) - { - return "int p1, object p2, params int [] p3"; - } + public static string SomeMethodWithVarArgs(object p1, int p2, params int[] p3) + { + return "object p1, int p2, params int [] p3"; + } - public static string SomeMethodWithVarArgs(object p1, object p2, params int[] p3) - { - return "object p1, object p2, params int [] p3"; - } + public static string SomeMethodWithVarArgs(int p1, object p2, params int[] p3) + { + return "int p1, object p2, params int [] p3"; + } - public static string SomeMethodWithVarArgs(int p1, int p2, params object[] p3) - { - return "int p1, int p2, params object [] p3"; - } + public static string SomeMethodWithVarArgs(object p1, object p2, params int[] p3) + { + return "object p1, object p2, params int [] p3"; + } - public static string SomeMethodWithVarArgs(object p1, int p2, params object[] p3) - { - return "object p1, int p2, params object [] p3"; - } + public static string SomeMethodWithVarArgs(int p1, int p2, params object[] p3) + { + return "int p1, int p2, params object [] p3"; + } - public static string SomeMethodWithVarArgs(int p1, object p2, params object[] p3) - { - return "int p1, object p2, params object [] p3"; - } + public static string SomeMethodWithVarArgs(object p1, int p2, params object[] p3) + { + return "object p1, int p2, params object [] p3"; + } - public static string SomeMethodWithVarArgs(object p1, object p2, params object[] p3) - { - return "object p1, object p2, params object [] p3"; - } + public static string SomeMethodWithVarArgs(int p1, object p2, params object[] p3) + { + return "int p1, object p2, params object [] p3"; + } - public static string SomeMethodWithVarArgs(object p1) - { - return "object p1"; - } + public static string SomeMethodWithVarArgs(object p1, object p2, params object[] p3) + { + return "object p1, object p2, params object [] p3"; + } - public static string SomeMethodWithVarArgs(int p1) - { - return "int p1"; - } + public static string SomeMethodWithVarArgs(object p1) + { + return "object p1"; + } + + public static string SomeMethodWithVarArgs(int p1) + { + return "int p1"; + } //========== Next section is to test the support (or lack thereof) with the most ambiguous cases with optional parameters - public static string MultipleMatchVarArgs(object p1, InterfaceOne p2, params object[] p3) - { - return "InterfaceOne"; - } + public static string MultipleMatchVarArgs(object p1, InterfaceOne p2, params object[] p3) + { + return "InterfaceOne"; + } - public static string MultipleMatchVarArgs(object p1, InterfaceTwo p2, params object[] p3) - { - return "InterfaceTwo"; - } + public static string MultipleMatchVarArgs(object p1, InterfaceTwo p2, params object[] p3) + { + return "InterfaceTwo"; + } - public static string MultipleMatchVarArgs(object p1, InterfaceBaseOne p2, params object[] p3) - { - return "InterfaceBaseOne"; - } + public static string MultipleMatchVarArgs(object p1, InterfaceBaseOne p2, params object[] p3) + { + return "InterfaceBaseOne"; + } - public static string MultipleMatchVarArgs(object p1, InterfaceBaseTwo p2, params object[] p3) - { - return "InterfaceBaseTwo"; - } + public static string MultipleMatchVarArgs(object p1, InterfaceBaseTwo p2, params object[] p3) + { + return "InterfaceBaseTwo"; + } - public static string MultipleMatchVarArgs(object p1, BaseAbstractClassOne p2, params object[] p3) - { - return "BaseAbstractClassOne"; - } + public static string MultipleMatchVarArgs(object p1, BaseAbstractClassOne p2, params object[] p3) + { + return "BaseAbstractClassOne"; + } - public static string MultipleMatchVarArgs(object p1, LevelOneClass p2, params object[] p3) - { - return "LevelOneClass"; - } + public static string MultipleMatchVarArgs(object p1, LevelOneClass p2, params object[] p3) + { + return "LevelOneClass"; + } - public static string MultipleMatchVarArgs(object p1, LevelTwoClass p2, params object[] p3) - { - return "LevelTwoClass"; - } - } - - public interface ITestMethodBindings - { - string[] SomeExplicitlyImplementedMethod(object obj); - string[] SomeExplicitlyImplementedMethod(string x); - string[] SomeExplicitlyImplementedMethod(double x); - string[] SomeExplicitlyImplementedMethod(float x); - string[] SomeExplicitlyImplementedMethod(int x); - string[] SomeExplicitlyImplementedMethod(bool x); - string[] SomeExplicitlyImplementedMethod(DateTime x); - string[] SomeExplicitlyImplementedMethod(byte x); - string[] SomeExplicitlyImplementedMethod(char x); - string[] SomeExplicitlyImplementedMethod(object obj1, object obj2); - string[] SomeExplicitlyImplementedMethod(string x1, string x2); - string[] SomeExplicitlyImplementedMethod(double x1, double x2); - string[] SomeExplicitlyImplementedMethod(float x1, float x2); - string[] SomeExplicitlyImplementedMethod(int x1, int x2); - string[] SomeExplicitlyImplementedMethod(bool x1, bool x2); - string[] SomeExplicitlyImplementedMethod(DateTime x1, DateTime x2); - string[] SomeExplicitlyImplementedMethod(byte x1, byte x2); - string[] SomeExplicitlyImplementedMethod(char x1, char x2); - string[] SomeExplicitlyImplementedMethod(object[] obj); - string[] SomeExplicitlyImplementedMethod(string[] x); - string[] SomeExplicitlyImplementedMethod(double[] x); - string[] SomeExplicitlyImplementedMethod(float[] x); - string[] SomeExplicitlyImplementedMethod(int[] x); - string[] SomeExplicitlyImplementedMethod(bool[] x); - string[] SomeExplicitlyImplementedMethod(DateTime[] x); - string[] SomeExplicitlyImplementedMethod(byte[] x); - string[] SomeExplicitlyImplementedMethod(char[] x); - string[] SomeExplicitlyImplementedMethod(object[,] obj); - string[] SomeExplicitlyImplementedMethod(string[,] x); - string[] SomeExplicitlyImplementedMethod(double[,] x); - string[] SomeExplicitlyImplementedMethod(float[,] x); - string[] SomeExplicitlyImplementedMethod(int[,] x); - string[] SomeExplicitlyImplementedMethod(bool[,] x); - string[] SomeExplicitlyImplementedMethod(DateTime[,] x); - string[] SomeExplicitlyImplementedMethod(byte[,] x); - string[] SomeExplicitlyImplementedMethod(char[,] x); - string[] SomeExplicitlyImplementedMethod(object[][] obj); - string[] SomeExplicitlyImplementedMethod(string[][] x); - string[] SomeExplicitlyImplementedMethod(double[][] x); - string[] SomeExplicitlyImplementedMethod(float[][] x); - string[] SomeExplicitlyImplementedMethod(int[][] x); - string[] SomeExplicitlyImplementedMethod(bool[][] x); - string[] SomeExplicitlyImplementedMethod(DateTime[][] x); - string[] SomeExplicitlyImplementedMethod(byte[][] x); - string[] SomeExplicitlyImplementedMethod(char[][] x); - string[] SomeExplicitlyImplementedMethod(double x, string y); - string[] SomeExplicitlyImplementedMethod(double x, string y, string z); - string[] SomeExplicitlyImplementedMethod(double x, string[] y); - string[] SomeExplicitlyImplementedMethod(string x, string[] y); - string[] SomeExplicitlyImplementedMethod(string[] x, string y); - string[] SomeExplicitlyImplementedMethod(string[] x, string[] y); + public static string MultipleMatchVarArgs(object p1, LevelTwoClass p2, params object[] p3) + { + return "LevelTwoClass"; } +} + +public interface ITestMethodBindings +{ + string[] SomeExplicitlyImplementedMethod(object obj); + string[] SomeExplicitlyImplementedMethod(string x); + string[] SomeExplicitlyImplementedMethod(double x); + string[] SomeExplicitlyImplementedMethod(float x); + string[] SomeExplicitlyImplementedMethod(int x); + string[] SomeExplicitlyImplementedMethod(bool x); + string[] SomeExplicitlyImplementedMethod(DateTime x); + string[] SomeExplicitlyImplementedMethod(byte x); + string[] SomeExplicitlyImplementedMethod(char x); + string[] SomeExplicitlyImplementedMethod(object obj1, object obj2); + string[] SomeExplicitlyImplementedMethod(string x1, string x2); + string[] SomeExplicitlyImplementedMethod(double x1, double x2); + string[] SomeExplicitlyImplementedMethod(float x1, float x2); + string[] SomeExplicitlyImplementedMethod(int x1, int x2); + string[] SomeExplicitlyImplementedMethod(bool x1, bool x2); + string[] SomeExplicitlyImplementedMethod(DateTime x1, DateTime x2); + string[] SomeExplicitlyImplementedMethod(byte x1, byte x2); + string[] SomeExplicitlyImplementedMethod(char x1, char x2); + string[] SomeExplicitlyImplementedMethod(object[] obj); + string[] SomeExplicitlyImplementedMethod(string[] x); + string[] SomeExplicitlyImplementedMethod(double[] x); + string[] SomeExplicitlyImplementedMethod(float[] x); + string[] SomeExplicitlyImplementedMethod(int[] x); + string[] SomeExplicitlyImplementedMethod(bool[] x); + string[] SomeExplicitlyImplementedMethod(DateTime[] x); + string[] SomeExplicitlyImplementedMethod(byte[] x); + string[] SomeExplicitlyImplementedMethod(char[] x); + string[] SomeExplicitlyImplementedMethod(object[,] obj); + string[] SomeExplicitlyImplementedMethod(string[,] x); + string[] SomeExplicitlyImplementedMethod(double[,] x); + string[] SomeExplicitlyImplementedMethod(float[,] x); + string[] SomeExplicitlyImplementedMethod(int[,] x); + string[] SomeExplicitlyImplementedMethod(bool[,] x); + string[] SomeExplicitlyImplementedMethod(DateTime[,] x); + string[] SomeExplicitlyImplementedMethod(byte[,] x); + string[] SomeExplicitlyImplementedMethod(char[,] x); + string[] SomeExplicitlyImplementedMethod(object[][] obj); + string[] SomeExplicitlyImplementedMethod(string[][] x); + string[] SomeExplicitlyImplementedMethod(double[][] x); + string[] SomeExplicitlyImplementedMethod(float[][] x); + string[] SomeExplicitlyImplementedMethod(int[][] x); + string[] SomeExplicitlyImplementedMethod(bool[][] x); + string[] SomeExplicitlyImplementedMethod(DateTime[][] x); + string[] SomeExplicitlyImplementedMethod(byte[][] x); + string[] SomeExplicitlyImplementedMethod(char[][] x); + string[] SomeExplicitlyImplementedMethod(double x, string y); + string[] SomeExplicitlyImplementedMethod(double x, string y, string z); + string[] SomeExplicitlyImplementedMethod(double x, string[] y); + string[] SomeExplicitlyImplementedMethod(string x, string[] y); + string[] SomeExplicitlyImplementedMethod(string[] x, string y); + string[] SomeExplicitlyImplementedMethod(string[] x, string[] y); } \ No newline at end of file diff --git a/src/Makefile.win.in b/src/Makefile.win.in index eacceef..9aaeef2 100644 --- a/src/Makefile.win.in +++ b/src/Makefile.win.in @@ -10,9 +10,7 @@ MSB_OPTIONS_CONSOLELOGGER ?= //consoleloggerparameters:ErrorsOnly SLN= rSharp.sln -# NOTE: do NOT use a nuget.exe under c:\bin\ even if in your path -# somehow nuget would not be found because /bin has a special meaning in RTools. -NUGET_CMD=nuget.exe +DOTNET_CMD=dotnet MSB=@MSBUILD_EXE_PATH@ @@ -61,7 +59,7 @@ detailedconfiginfo: -@echo **END Variable** rSharpNugetRestore: rSharp.cpp - -$(NUGET_CMD) restore $(SLN) ; + -$(DOTNET_CMD) restore ; rSharpLibComp: rSharpNugetRestore @for tgt_platform in x64; do \ @@ -83,7 +81,7 @@ rSharpLib: rSharpLibComp $(ROBOCP_CMD) $$bin_dir $(INSTDIR)/libs/ $$RSHARPBINS;\ - $(ROBOCP_CMD) ./packages/Microsoft.NETCore.App.Host.win-x64.8.0.1/runtimes/win-x64/native $(INSTDIR)/libs/ $(NETHOST).dll + $(ROBOCP_CMD) ./packages/Microsoft.NETCore.App.Host.win-x64.8.0.2/runtimes/win-x64/native $(INSTDIR)/libs/ $(NETHOST).dll $(ROBOCP_CMD) ./libfiles/x64 $(INSTDIR)/libs/ $(RUNTIMECONFIG).json; -$(ROBOCP_CMD) ./ClrFacade/bin/$(BuildConfiguration)/net7.0/ $(INSTDIR)/libs/ $(CLR_FACADE_BINS) -$(ROBOCP_CMD) ./ClrFacade/bin/$(BuildConfiguration)/net7.0/ $(INSTDIR)/libs/ $(RDOTNET_BINS) diff --git a/src/Makevars b/src/Makevars new file mode 100644 index 0000000..4caf341 --- /dev/null +++ b/src/Makevars @@ -0,0 +1,129 @@ +# Emacs please make this -*- mode: makefile; tab-width: 8 -*- +# +# +# Copyright (C) 2013-2015 +# + +# WARNING: Makevars is generated from Makevars.in +# You may loose direct modifications to the file Makevars! + +BUILDTYPE ?= Debug + +# as of mono 4.0.3 on Debian, using monosgen fails. Need to offer the option to revert to boehm GC. +# other acceptable option is MONO_LIB = mono-2 + +TGTPLATFORM=x64 +RUNTIMECONFIG=RSharp.runtimeconfig +PKG_CPPFLAGS = --std=c++11 -lsupc++ + +MONO_INSTALL_PATH= +MONO_INSTALL_PATH64= +OBJECTS=rSharpUX.o +ifeq "$(MONO_INSTALL_PATH)" "" +XBUILD=xbuild +else +XBUILD=$(MONO_INSTALL_PATH)/bin/xbuild +endif + +XBUILD=dotnet + +DOTNET_CMD=dotnet + +######## O/S dependent config +ifeq "$(R_OSTYPE)" "windows" +SLN=rSharp.sln + +ifeq "$(BUILDTYPE)" "Release" +BuildConfiguration=Release +else +BuildConfiguration=MonoInstallDebug +endif # ifeq "$(BUILDTYPE)" "Release" + +RSHARP_LIBS=rSharpUX$(SHLIB_EXT) + +# On a Win7 machine, 'pkg-config --cflags mono-2 glib-2.0' returns +# -mno-cygwin -mms-bitfields -mwindows -IF:/bin/Mono/include/mono-2.0 -IF:/bin/Mono/include/glib-2.0 -IF:/bin/Mono/lib/glib-2.0/include +# however 'which pkg-config' is in /cygdrive/f/bin/Mono/bin/pkg-config, something unusual for windows machines (?). +# Not sure what is to be expected on CRAN winbuilder. +# -mno-cygwin is a trouble flag somehow, not to be included. +# pkg-config --libs mono-2 glib-2.0 +# -Wl,--export-all-symbols -mno-cygwin -mms-bitfields -mwindows -LF:/bin/Mono/lib +# -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion -lgl +# ib-2.0 -lintl +PKG_CFLAGS = -mms-bitfields -mwindows -I"$(MONO_INSTALL_PATH)/include/mono-2.0" -I"$(MONO_INSTALL_PATH)/include/glib-2.0" -I"$(MONO_INSTALL_PATH)/lib/glib-2.0/include" -D MONO_CLR -D MONO_INST +PKG_LIBS = -mms-bitfields -mwindows -L"$(MONO_INSTALL_PATH)/lib" -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion +ifeq "$(R_ARCH)" "/x64" +PKG_LIBS = -mms-bitfields -mwindows -L"$(MONO_INSTALL_PATH64)/" -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion +# PKG_LIBS = -mms-bitfields -mwindows -LF:/bin/mono_built/lib -LF:/bin/mono_built/bin -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion +endif ## ifeq "$(R_ARCH)" "/x64" + +RSHARPBINDIRFACADE= ./$(BuildConfiguration) + +else ## the OS is not 'windows' +SLN=rSharp_monodev.sln +ifeq "$(BUILDTYPE)" "Release" +BuildConfiguration=Unix +else +BuildConfiguration=UnixDebug +endif ## ifeq "$(BUILDTYPE)" "Release" + +PKG_CFLAGS_LOCAL=`pkg-config --cflags $(MONO_LIB) glib-2.0` +PKG_LIBS_LOCAL=`pkg-config --libs $(MONO_LIB) glib-2.0` +PKG_CFLAGS = $(PKG_CFLAGS_LOCAL) -g -D MONO_CLR -D MONO_INST +PKG_LIBS=$(PKG_LIBS_LOCAL) +# TODO: can I avoid having this platform dependent? Why did I not use BuildConfiguration folder under Linux? +RSHARPBINDIRFACADE= ./ClrFacade/bin/$(BUILDTYPE)/net8.0 +endif ## end if statement testing on "$(R_OSTYPE)" is "windows" or not + +CLR_FACADE_BINS=$(RSHARPBINDIRFACADE)/*.* + +NETHOST= libnethost +INSTDIR= ../inst + +MODE=Rebuild +# Note: consoleloggerparameters:ErrorsOnly works with msbuild.exe, but xbuild does not support it +SLNPROPERTIES=/p:Configuration=$(BuildConfiguration) /p:Platform="$(TGTPLATFORM)" /nologo /consoleloggerparameters:ErrorsOnly /verbosity:minimal + +RM = rm -f + +# .PHONY: all clean + +all: printarch rSharpUX.so instdir rSharpLib rSharpInstrSharpUX + +clean: + ${RM} $(OBJECTS) $(SHLIB) $(RSHARP_LIBS) + +rSharpUX.o: + $(CXX) -std=c++11 -Ipackages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native $(ALL_CPPFLAGS) -I/usr/share/R/include/ $(ALL_CFLAGS) -fPIC -c rSharp.cpp -o rSharpUX.o -lsupc++ + +rSharpUX.so: rSharpUX.o + $(CXX) -std=c++11 -shared -Wl,-z,relro -o rSharpUX.so rSharpUX.o $(ALL_LIBS) -L./packages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native -l:libnethost.a + +printarch: + -@echo **Variable information only for diagnosis purposes** + -@echo R_ARCH=$(R_ARCH) + -@echo OBJECTS=$(OBJECTS) + -@echo SHLIB_EXT=$(SHLIB_EXT) + -@echo CC=$(CC) + -@echo CXX=$(CXX) + -@echo **END Variable** + +instdir: + -@rm -rf $(INSTDIR)/libs$(R_ARCH) + -@mkdir -p $(INSTDIR) 2>/dev/null + -@mkdir -p $(INSTDIR)/libs$(R_ARCH) 2>/dev/null + +rSharpInstrSharpUX: rSharpUX.so + cp -u -p rSharpUX.so $(INSTDIR)/libs$(R_ARCH) + +rSharpLib: rSharpLibComp + if [ -e symbols.rds ] ; then cp -u -p symbols.rds $(INSTDIR)/libs$(R_ARCH) ; fi + -rm -f $(INSTDIR)/libs/*.* + -cp -u -p $(CLR_FACADE_BINS) $(INSTDIR)/libs + -cp -u -p ./$(RUNTIMECONFIG).json $(INSTDIR)/libs/ + +rSharpNugetRestore: rSharp.cpp + -$(DOTNET_CMD) restore ; + +rSharpLibComp: rSharpNugetRestore + "$(XBUILD)" build /t:$(MODE) $(SLNPROPERTIES) \ No newline at end of file diff --git a/src/Makevars.in b/src/Makevars.in index 7fb2621..c0e1ae1 100644 --- a/src/Makevars.in +++ b/src/Makevars.in @@ -7,29 +7,27 @@ # WARNING: Makevars is generated from Makevars.in # You may loose direct modifications to the file Makevars! -BUILDTYPE ?= Release +BUILDTYPE ?= Debug # as of mono 4.0.3 on Debian, using monosgen fails. Need to offer the option to revert to boehm GC. -MONO_LIB ?= monosgen-2 # other acceptable option is MONO_LIB = mono-2 -TGTPLATFORM=Any CPU - +TGTPLATFORM=x64 +RUNTIMECONFIG=RSharp.runtimeconfig PKG_CPPFLAGS = --std=c++11 -lsupc++ MONO_INSTALL_PATH=@MONO_INSTALL_PATH@ MONO_INSTALL_PATH64=@MONO_INSTALL_PATH64@ -OBJECTS=rSharpMono.o +OBJECTS=rSharpUX.o ifeq "$(MONO_INSTALL_PATH)" "" XBUILD=xbuild else XBUILD=$(MONO_INSTALL_PATH)/bin/xbuild endif -# May 2019: >>>> xbuild tool is deprecated and will be removed in future updates, use msbuild instead <<<< -XBUILD=msbuild +XBUILD=dotnet -NUGET_CMD=nuget +DOTNET_CMD=dotnet ######## O/S dependent config ifeq "$(R_OSTYPE)" "windows" @@ -41,7 +39,7 @@ else BuildConfiguration=MonoInstallDebug endif # ifeq "$(BUILDTYPE)" "Release" -RSHARP_LIBS=rSharpMono$(SHLIB_EXT) +RSHARP_LIBS=rSharpUX$(SHLIB_EXT) # On a Win7 machine, 'pkg-config --cflags mono-2 glib-2.0' returns # -mno-cygwin -mms-bitfields -mwindows -IF:/bin/Mono/include/mono-2.0 -IF:/bin/Mono/include/glib-2.0 -IF:/bin/Mono/lib/glib-2.0/include @@ -74,11 +72,12 @@ PKG_LIBS_LOCAL=`pkg-config --libs $(MONO_LIB) glib-2.0` PKG_CFLAGS = $(PKG_CFLAGS_LOCAL) -g -D MONO_CLR -D MONO_INST PKG_LIBS=$(PKG_LIBS_LOCAL) # TODO: can I avoid having this platform dependent? Why did I not use BuildConfiguration folder under Linux? -RSHARPBINDIRFACADE= ./ClrFacade/bin/$(BUILDTYPE)/netstandard2.0 +RSHARPBINDIRFACADE= ./ClrFacade/bin/$(BUILDTYPE)/net8.0 endif ## end if statement testing on "$(R_OSTYPE)" is "windows" or not -CLR_FACADE_BINS=$(RSHARPBINDIRFACADE)/*.dll* +CLR_FACADE_BINS=$(RSHARPBINDIRFACADE)/*.* +NETHOST= libnethost INSTDIR= ../inst MODE=Rebuild @@ -89,23 +88,16 @@ RM = rm -f # .PHONY: all clean -#all: printarch rSharpMono$(SHLIB_EXT) instdir rSharpInstrSharpMono rSharpLib -all: printarch $(SHLIB) instdir rSharpLib rSharpInstrSharpMono +all: printarch rSharpUX.so instdir rSharpLib rSharpInstrSharpUX clean: ${RM} $(OBJECTS) $(SHLIB) $(RSHARP_LIBS) -rSharpMono.o: - $(CXX) -std=c++11 $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c rSharp.cpp -o rSharpMono.o -lsupc++ - ###### NOTE: - # On a CentOS OS, I needed to use the following. The CPP and C flags would otherwise return two options not understood: - # -xHOST -fp-model precise - # @echo ALL_CPPFLAGS=$(ALL_CPPFLAGS) - # @echo ALL_CFLAGS=$(ALL_CFLAGS) - # $(CXX) -std=c++11 -I/apps/R/3.1.1/lib64/R/include -DNDEBUG -I/usr/local/include `pkg-config --cflags mono-2 glib-2.0` -g -D MONO_CLR -D MONO_INST -fpic -O3 -openmp -c rSharp.cpp -o rSharpMono.o -lsupc++ +rSharpUX.o: + $(CXX) -std=c++11 -Ipackages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native $(ALL_CPPFLAGS) -I/usr/share/R/include/ $(ALL_CFLAGS) -fPIC -c rSharp.cpp -o rSharpUX.o -lsupc++ -rSharpMono$(SHLIB_EXT): rSharpMono.o - $(CXX) -std=c++11 -shared -Wl,-z,relro -o rSharpMono$(SHLIB_EXT) rSharpMono.o $(ALL_LIBS) +rSharpUX.so: rSharpUX.o + $(CXX) -std=c++11 -shared -Wl,-z,relro -o rSharpUX.so rSharpUX.o $(ALL_LIBS) -L./packages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native -l:libnethost.a printarch: -@echo **Variable information only for diagnosis purposes** @@ -121,22 +113,17 @@ instdir: -@mkdir -p $(INSTDIR) 2>/dev/null -@mkdir -p $(INSTDIR)/libs$(R_ARCH) 2>/dev/null -rSharpInstrSharpMono: $(SHLIB) - cp -u -p rSharp$(SHLIB_EXT) $(INSTDIR)/libs$(R_ARCH) +rSharpInstrSharpUX: rSharpUX.so + cp -u -p rSharpUX.so $(INSTDIR)/libs$(R_ARCH) rSharpLib: rSharpLibComp if [ -e symbols.rds ] ; then cp -u -p symbols.rds $(INSTDIR)/libs$(R_ARCH) ; fi - # using rm -f to prevent the following, which seems to occur even when these should not be write-protected - # cp: cannot create regular file `../inst/libs/ClrFacade.dll': Permission denied -rm -f $(INSTDIR)/libs/*.* -cp -u -p $(CLR_FACADE_BINS) $(INSTDIR)/libs + -cp -u -p ./$(RUNTIMECONFIG).json $(INSTDIR)/libs/ rSharpNugetRestore: rSharp.cpp - -$(NUGET_CMD) restore $(SLN) ; + -$(DOTNET_CMD) restore ; rSharpLibComp: rSharpNugetRestore - "$(XBUILD)" $(SLN) /t:$(MODE) $(SLNPROPERTIES) - - - - + "$(XBUILD)" build /t:$(MODE) $(SLNPROPERTIES) \ No newline at end of file diff --git a/src/RSharp.runtimeconfig.json b/src/RSharp.runtimeconfig.json index 474512d..2ff3f49 100644 --- a/src/RSharp.runtimeconfig.json +++ b/src/RSharp.runtimeconfig.json @@ -1,10 +1,12 @@ { "runtimeOptions": { - "tfm": "net7.0", - "rollForward": "LatestMinor", + "tfm": "net8.0", "framework": { "name": "Microsoft.NETCore.App", - "version": "7.0.0" + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } } -} \ No newline at end of file +} diff --git a/src/global.json b/src/global.json new file mode 100644 index 0000000..b5b37b6 --- /dev/null +++ b/src/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "8.0.0", + "rollForward": "latestMajor", + "allowPrerelease": false + } +} \ No newline at end of file diff --git a/src/packages.config b/src/packages.config index e168241..1a4dcf9 100644 --- a/src/packages.config +++ b/src/packages.config @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/src/rSharp.cpp b/src/rSharp.cpp index 4911de5..74f7b97 100644 --- a/src/rSharp.cpp +++ b/src/rSharp.cpp @@ -26,9 +26,9 @@ typedef int (CORECLR_DELEGATE_CALLTYPE* CallInstanceMethodDelegate)(RSharpGeneri typedef void (CORECLR_DELEGATE_CALLTYPE* FreeObjectDelegate)(intptr_t instance); typedef intptr_t(CORECLR_DELEGATE_CALLTYPE* CallFullTypeNameDelegate)(RSharpGenericValue** instance); typedef int (CORECLR_DELEGATE_CALLTYPE* GetObjectDirectDelegate)(RSharpGenericValue* returnValue); -typedef int (CORECLR_DELEGATE_CALLTYPE* CreateSEXPWrapperDelegate)(LONGLONG pointer, RSharpGenericValue* returnValue); +typedef int (CORECLR_DELEGATE_CALLTYPE* CreateSEXPWrapperDelegate)(intptr_t pointer, RSharpGenericValue* returnValue); typedef int (CORECLR_DELEGATE_CALLTYPE* CreateInstanceDelegate)(const char*, RSharpGenericValue** objects, int num_objects, RSharpGenericValue* returnValue); -typedef void* (CORECLR_DELEGATE_CALLTYPE* LoadFromDelegate)(const char*); +typedef void (CORECLR_DELEGATE_CALLTYPE* LoadFromDelegate)(const char*); void freeObject(RSharpGenericValue* instance); @@ -82,28 +82,6 @@ static void rsharp_object_finalizer(SEXP clrSexp) { } } -//MyComm: is this still wotking in .NET 8?? -string_t get_current_directory() -{ - // Get the current executable's directory - // This sample assumes the managed assembly to load and its runtime configuration file are next to the host - char_t host_path[MAX_PATH]; - - //getting the path to the RSharp.dll - //important note: IF we were to call GetModuleFileName(NULL,....) we would actually get the path to the R.exe - //not the RSharp.dll - HMODULE hModule = GetModuleHandle(NULL); - auto size = ::GetModuleFileName(hModule, host_path, MAX_PATH); - assert(size != 0); - - string_t root_path = host_path; - auto pos = root_path.find_last_of(DIR_SEPARATOR); - assert(pos != string_t::npos); - root_path = root_path.substr(0, pos + 1); - - return root_path; -} - ///////////////////////////////////////// // Function used to load and activate .NET Core ///////////////////////////////////////// @@ -112,18 +90,33 @@ namespace { void* load_library(const char_t*); void* get_export(void*, const char*); - void* load_library(const char_t* path) + #ifdef WINDOWS + void *load_library(const char_t *path) { HMODULE h = ::LoadLibraryW(path); assert(h != nullptr); return (void*)h; } - void* get_export(void* h, const char* name) + void *get_export(void *h, const char *name) { - void* f = ::GetProcAddress((HMODULE)h, name); + void *f = ::GetProcAddress((HMODULE)h, name); assert(f != nullptr); return f; } +#else + void *load_library(const char_t *path) + { + void *h = dlopen(path, RTLD_LAZY | RTLD_LOCAL); + assert(h != nullptr); + return h; + } + void *get_export(void *h, const char *name) + { + void *f = dlsym(h, name); + assert(f != nullptr); + return f; + } +#endif // // Using the nethost library, discover the location of hostfxr and get exports @@ -518,7 +511,7 @@ RSharpGenericValue callInstance(RSharpGenericValue** instance, const char* mnam, auto result = call_instance(instance, mnam, params, numberOfObjects, &return_value); if (result < 0) - throw std::exception("Error calling instance method"); + throw std::runtime_error("Error calling instance method"); return return_value; } @@ -543,7 +536,7 @@ RSharpGenericValue callStatic(const char* mnam, char* ns_qualified_typename, RSh auto result = call_static(ns_qualified_typename, mnam, params, numberOfObjects, &return_value); if (result < 0) - throw std::exception("Error calling static method"); + throw std::runtime_error("Error calling static method"); return return_value; } @@ -557,7 +550,7 @@ RSharpGenericValue rclr_convert_element_rdotnet(SEXP p) const auto call_static = reinterpret_cast(create_sexp_wrapper_fn_ptr); - auto result = call_static(reinterpret_cast(p), &return_value); + auto result = call_static(reinterpret_cast(p), &return_value); return return_value; } @@ -572,7 +565,7 @@ SEXP r_get_object_direct() { auto result = call_static(&return_value); if (result < 0) - throw std::exception("Error calling get object direct"); + throw std::runtime_error("Error calling get object direct"); return ConvertToSEXP(return_value); } @@ -586,7 +579,7 @@ const char* get_type_full_name(RSharpGenericValue** genericValue) { const auto call_static = reinterpret_cast(get_full_type_name_fn_ptr); auto hr = call_static(genericValue); - return bstr_to_c_string((const wchar_t*)hr); + return (char_t*)(hr); } RSharpGenericValue* get_RSharp_generic_value(SEXP clrObj); @@ -784,7 +777,7 @@ SEXP ConvertToSEXP(RSharpGenericValue& value) { return Rf_ScalarLogical(boolValue); } case RSharpValueType::STRING: { - const char* stringValue = bstr_to_c_string((const wchar_t*)value.value); + const char* stringValue = (char_t*)value.value; return make_char_single_sexp(stringValue); } /*case RSharpValueType::INT_ARRAY: { @@ -886,59 +879,43 @@ RSharpGenericValue* get_RSharp_generic_value(SEXP clrObj) { // Functions without R specific constructs ///////////////////////////////////////// -char* bstr_to_c_string(const wchar_t* src) { -#ifndef UNICODE // r_winnt - return src; -#else - // Convert the wchar_t string to a char* string. - // see http://msdn.microsoft.com/en-us/library/ms235631.aspx - size_t origsize = wcslen(src) + 1; - size_t convertedChars = 0; - const size_t newsize = origsize * 2; - char* nstring = new char[newsize]; - wcstombs_s(&convertedChars, nstring, newsize, src, _TRUNCATE); - return nstring; -#endif - -} - RSharpGenericValue ConvertArrayToRSharpGenericValue(SEXP s) { - RSharpGenericValue* result = new RSharpGenericValue(); - result->type = RSharpValueType::OBJECT; - result->value = 0; - result->size = 0; // Default size for non-array types + RSharpGenericValue result; + result.type = RSharpValueType::OBJECT; + result.value = 0; + result.size = 0; // Default size for non-array types switch (TYPEOF(s)) { case INTSXP: { - result->type = RSharpValueType::INT_ARRAY; - result->value = reinterpret_cast(INTEGER(s)); - result->size = LENGTH(s); + result.type = RSharpValueType::INT_ARRAY; + result.value = reinterpret_cast(INTEGER(s)); + result.size = LENGTH(s); break; } case REALSXP: { - result->type = RSharpValueType::DOUBLE_ARRAY; - result->value = reinterpret_cast(REAL(s)); - result->size = LENGTH(s); + result.type = RSharpValueType::DOUBLE_ARRAY; + result.value = reinterpret_cast(REAL(s)); + result.size = LENGTH(s); break; } case STRSXP: { - result->type = RSharpValueType::STRING_ARRAY; - result->value = reinterpret_cast(CHAR(STRING_ELT(s, 0))); - result->size = LENGTH(s); + result.type = RSharpValueType::STRING_ARRAY; + result.value = reinterpret_cast(CHAR(STRING_ELT(s, 0))); + result.size = LENGTH(s); break; } case LGLSXP: { - result->type = RSharpValueType::BOOL_ARRAY; - result->value = reinterpret_cast(LOGICAL(s)); - result->size = LENGTH(s); + result.type = RSharpValueType::BOOL_ARRAY; + result.value = reinterpret_cast(LOGICAL(s)); + result.size = LENGTH(s); break; } default: break; } - return *result; + return result; } diff --git a/src/rSharp.h b/src/rSharp.h index c6803b5..92bcf10 100644 --- a/src/rSharp.h +++ b/src/rSharp.h @@ -9,18 +9,11 @@ // definition of complex in Rext/Complex.h This error should not be present when compiling with gcc. #define R_LEGACY_RCOMPLEX -#include #include -#include -#include -//#include "stdafx.h" -//#include "atlbase.h" -#include -#include #include #include - +#define NETHOST_USE_AS_STATIC // Provided by the AppHost NuGet package and installed as an SDK pack #include @@ -33,14 +26,28 @@ typedef bool RSHARP_BOOL; #define TRUE_BOOL true; #define FALSE_BOOL false; -//Defines for the new hostfxr API -//-------------------- +#ifdef WINDOWS +#include + #define STR(s) L ## s #define CH(c) L ## c #define DIR_SEPARATOR L'\\' #define string_compare wcscmp +#else +#include +#include + +#define STR(s) s +#define CH(c) c +#define DIR_SEPARATOR '/' +#define MAX_PATH PATH_MAX + +#define string_compare strcmp +#include +#endif + #include #include #include @@ -138,6 +145,7 @@ SEXP ConvertToSEXP(RSharpGenericValue& value); #ifndef __cplusplus #define STR_DUP strdup #else +#define _strdup strdup #define STR_DUP _strdup #endif diff --git a/src/rSharp.sln b/src/rSharp.sln index 274fe28..9926e58 100644 --- a/src/rSharp.sln +++ b/src/rSharp.sln @@ -12,44 +12,27 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 - MonoDebug|x64 = MonoDebug|x64 - MonoInstall|x64 = MonoInstall|x64 - MonoInstallDebug|x64 = MonoInstallDebug|x64 Release|x64 = Release|x64 UnixDebug|x64 = UnixDebug|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {1EE5689F-F71E-49E1-874A-0DF63E174635}.Debug|x64.ActiveCfg = Debug|x64 {1EE5689F-F71E-49E1-874A-0DF63E174635}.Debug|x64.Build.0 = Debug|x64 - {1EE5689F-F71E-49E1-874A-0DF63E174635}.MonoDebug|x64.ActiveCfg = MonoDebug|x64 - {1EE5689F-F71E-49E1-874A-0DF63E174635}.MonoDebug|x64.Build.0 = MonoDebug|x64 - {1EE5689F-F71E-49E1-874A-0DF63E174635}.MonoInstall|x64.ActiveCfg = MonoInstall|x64 - {1EE5689F-F71E-49E1-874A-0DF63E174635}.MonoInstall|x64.Build.0 = MonoInstall|x64 - {1EE5689F-F71E-49E1-874A-0DF63E174635}.MonoInstallDebug|x64.ActiveCfg = MonoInstallDebug|x64 - {1EE5689F-F71E-49E1-874A-0DF63E174635}.MonoInstallDebug|x64.Build.0 = MonoInstallDebug|x64 {1EE5689F-F71E-49E1-874A-0DF63E174635}.Release|x64.ActiveCfg = Release|x64 {1EE5689F-F71E-49E1-874A-0DF63E174635}.Release|x64.Build.0 = Release|x64 {1EE5689F-F71E-49E1-874A-0DF63E174635}.UnixDebug|x64.ActiveCfg = Debug|x64 - {1EE5689F-F71E-49E1-874A-0DF63E174635}.UnixDebug|x64.Build.0 = Debug|x64 {024B0C26-BED0-467D-B332-E9796B756133}.Debug|x64.ActiveCfg = Debug|Any CPU {024B0C26-BED0-467D-B332-E9796B756133}.Debug|x64.Build.0 = Debug|Any CPU - {024B0C26-BED0-467D-B332-E9796B756133}.MonoDebug|x64.ActiveCfg = Debug|Any CPU - {024B0C26-BED0-467D-B332-E9796B756133}.MonoDebug|x64.Build.0 = Debug|Any CPU - {024B0C26-BED0-467D-B332-E9796B756133}.MonoInstall|x64.ActiveCfg = Release|Any CPU - {024B0C26-BED0-467D-B332-E9796B756133}.MonoInstall|x64.Build.0 = Release|Any CPU - {024B0C26-BED0-467D-B332-E9796B756133}.MonoInstallDebug|x64.ActiveCfg = Debug|Any CPU - {024B0C26-BED0-467D-B332-E9796B756133}.MonoInstallDebug|x64.Build.0 = Debug|Any CPU {024B0C26-BED0-467D-B332-E9796B756133}.Release|x64.ActiveCfg = Release|Any CPU {024B0C26-BED0-467D-B332-E9796B756133}.Release|x64.Build.0 = Release|Any CPU {024B0C26-BED0-467D-B332-E9796B756133}.UnixDebug|x64.ActiveCfg = Debug|Any CPU + {024B0C26-BED0-467D-B332-E9796B756133}.UnixDebug|x64.Build.0 = Debug|Any CPU {D07290EB-5755-453C-8CD6-5CDDED3400BE}.Debug|x64.ActiveCfg = Debug|Any CPU {D07290EB-5755-453C-8CD6-5CDDED3400BE}.Debug|x64.Build.0 = Debug|Any CPU - {D07290EB-5755-453C-8CD6-5CDDED3400BE}.MonoDebug|x64.ActiveCfg = Debug|Any CPU - {D07290EB-5755-453C-8CD6-5CDDED3400BE}.MonoInstall|x64.ActiveCfg = Release|Any CPU - {D07290EB-5755-453C-8CD6-5CDDED3400BE}.MonoInstallDebug|x64.ActiveCfg = Debug|Any CPU {D07290EB-5755-453C-8CD6-5CDDED3400BE}.Release|x64.ActiveCfg = Release|Any CPU {D07290EB-5755-453C-8CD6-5CDDED3400BE}.Release|x64.Build.0 = Release|Any CPU {D07290EB-5755-453C-8CD6-5CDDED3400BE}.UnixDebug|x64.ActiveCfg = Debug|Any CPU + {D07290EB-5755-453C-8CD6-5CDDED3400BE}.UnixDebug|x64.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/rSharp.so b/src/rSharp.so new file mode 100755 index 0000000000000000000000000000000000000000..d9fa9d8712066093dab784b925cc5e4f21edffb3 GIT binary patch literal 112648 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 Win32 - - MonoDebug - x64 - MonoInstallDebug Win32 - - MonoInstallDebug - x64 - MonoInstall Win32 - - MonoInstall - x64 - Release Win32 @@ -49,6 +37,12 @@ + + + + + + {1EE5689F-F71E-49E1-874A-0DF63E174635} rSharp @@ -87,24 +81,6 @@ Unicode v143 - - DynamicLibrary - true - Unicode - v143 - - - DynamicLibrary - true - Unicode - v143 - - - DynamicLibrary - true - Unicode - v143 - DynamicLibrary false @@ -142,18 +118,6 @@ - - - - - - - - - - - - @@ -165,70 +129,49 @@ true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include;$(SolutionDir)\inc + $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include;$(SolutionDir)\inc $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\i386;$(RInstallPath)\bin\i386 .\libfiles\i386;$(RInstallPath)\bin\i386 $(ProjectName)Ms true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoSrcPath);$(MonoSrcPath)\eglib\src + $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoSrcPath);$(MonoSrcPath)\eglib\src $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\i386;$(RInstallPath)\bin\i386;$(MonoSrcPath)\msvc\Win32\lib .\libfiles\i386;$(RInstallPath)\bin\i386 $(ProjectName)Mono true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoInstallPath)\include;$(MonoInstallPath)\include\mono-2.0;$(MonoInstallPath)\include\glib-2.0;$(MonoInstallPath)\lib\glib-2.0\include + $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoInstallPath)\include;$(MonoInstallPath)\include\mono-2.0;$(MonoInstallPath)\include\glib-2.0;$(MonoInstallPath)\lib\glib-2.0\include $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\i386;$(RInstallPath)\bin\i386;$(MonoInstallPath)\lib;$(MonoInstallPath)\bin .\libfiles\i386;$(RInstallPath)\bin\i386 $(ProjectName)Mono true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoInstallPath)\include;$(MonoInstallPath)\include\mono-2.0;$(MonoInstallPath)\include\glib-2.0;$(MonoInstallPath)\lib\glib-2.0\include + $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoInstallPath)\include;$(MonoInstallPath)\include\mono-2.0;$(MonoInstallPath)\include\glib-2.0;$(MonoInstallPath)\lib\glib-2.0\include $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\i386;$(RInstallPath)\bin\i386;$(MonoInstallPath)\lib;$(MonoInstallPath)\bin .\libfiles\i386;$(RInstallPath)\bin\i386 $(ProjectName)Mono true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include;$(SolutionDir)\inc + $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include;$(SolutionDir)\inc $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\x64;$(RInstallPath)\bin\x64 .\libfiles\x64;$(RInstallPath)\bin\x64 $(ProjectName)Ms - - true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoSrcPath);$(MonoSrcPath)\eglib\src - $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\x64;$(RInstallPath)\bin\x64;$(MonoSrcPath)\msvc\x64\lib - .\libfiles\x64;$(RInstallPath)\bin\x64 - $(ProjectName)Mono - - - true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoInstallPath)\include;$(MonoInstallPath)\include\mono-2.0;$(MonoInstallPath)\include\glib-2.0;$(MonoInstallPath)\lib\glib-2.0\include - $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\x64;$(RInstallPath)\bin\x64;$(MonoInstallPath)\lib;$(MonoInstallPath)\bin - .\libfiles\x64;$(RInstallPath)\bin\x64 - $(ProjectName)Mono - - - true - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(RInstallPath)\include;$(MonoInstallPath)\include;$(MonoInstallPath)\include\mono-2.0;$(MonoInstallPath)\include\glib-2.0;$(MonoInstallPath)\lib\glib-2.0\include - $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\x64;$(RInstallPath)\bin\x64;$(MonoInstallPath)\lib;$(MonoInstallPath)\bin - .\libfiles\x64;$(RInstallPath)\bin\x64 - $(ProjectName)Mono - false - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include + $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\i386;$(RInstallPath)\bin\i386 .\libfiles\i386;$(RInstallPath)\bin\i386 $(ProjectName)Ms false - $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include + $(IncludePath);packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native;$(VCInstallDir)atlmfc\include;$(RInstallPath)\include $(LibraryPath);$(VSInstallDir);$(VSInstallDir)lib;.\libfiles\x64;$(RInstallPath)\bin\x64 .\libfiles\x64;$(RInstallPath)\bin\x64 $(ProjectName)Ms @@ -246,7 +189,7 @@ NotSet true - Rdll.lib;packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;%(AdditionalDependencies) + Rdll.lib;packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native\nethost.lib;%(AdditionalDependencies) rSharp-win.def @@ -265,7 +208,7 @@ NotSet true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) + packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) rSharp-mono.def @@ -286,7 +229,7 @@ NotSet true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) + packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) rSharp-mono.def @@ -307,54 +250,12 @@ NotSet true - Rdll.lib;packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;%(AdditionalDependencies) + Rdll.lib;packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native\nethost.lib;%(AdditionalDependencies) rSharp-win.def - - - - - Level3 - Disabled - _DEBUG;%(PreprocessorDefinitions);MONO_CLR - $(MonoSrcPath)\;%(AdditionalIncludeDirectories) - - - %(AdditionalOptions) - - - NotSet - true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) - - - rSharp-mono.def - - - - - - - Level3 - Disabled - _DEBUG;%(PreprocessorDefinitions);MONO_CLR;MONO_INST - $(MonoSrcPath)\;%(AdditionalIncludeDirectories) - - - %(AdditionalOptions) - - - NotSet - true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) - - - rSharp-mono.def - - Level3 @@ -370,26 +271,7 @@ true true true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) - rSharp-mono.def - - - - - Level3 - MaxSpeed - true - NDEBUG;_CONSOLE;;%(PreprocessorDefinitions);MONO_CLR;MONO_INST - $(MonoSrcPath)\;%(AdditionalIncludeDirectories) - %(AdditionalOptions) - ProgramDatabase - Default - - - true - true - true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) + packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native\nethost.lib;mono-2.0.lib;Rdll.lib;%(AdditionalDependencies) rSharp-mono.def @@ -404,7 +286,7 @@ true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;Rdll.lib;%(AdditionalDependencies) + packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native\nethost.lib;Rdll.lib;%(AdditionalDependencies) true true rSharp-win.def @@ -423,7 +305,7 @@ true true true - packages\Microsoft.NETCore.App.Host.win-x64.8.0.1\runtimes\win-x64\native\nethost.lib;Rdll.lib;%(AdditionalDependencies) + packages\Microsoft.NETCore.App.Host.win-x64.8.0.2\runtimes\win-x64\native\nethost.lib;Rdll.lib;%(AdditionalDependencies) rSharp-win.def diff --git a/src/rSharpTests/ReflectionTests.cs b/src/rSharpTests/ReflectionTests.cs index bf79bbd..8549a6d 100644 --- a/src/rSharpTests/ReflectionTests.cs +++ b/src/rSharpTests/ReflectionTests.cs @@ -122,8 +122,8 @@ public void test_variable_argument_method_binding() public void test_reflection_type_load_exception() { var reflectionTypeLoadException = new ReflectionTypeLoadException( - new[] { GetType() }, - new[] { new Exception("some inner message") }, + new[] { GetType() }, + new[] { new Exception("some inner message") }, "reflection type load exception message"); string s = Internal.FormatExceptionInnermost(reflectionTypeLoadException); @@ -177,18 +177,18 @@ public void test_optional_parameters_method_invocation() var obj = new MyTestClass(); Internal.CallInstanceMethod(obj, "OptionalInt"); Internal.CallInstanceMethod(obj, "OptionalInt", 3); - + Internal.CallInstanceMethod(obj, "IntOptionalInt", 3); Internal.CallInstanceMethod(obj, "IntOptionalInt", 3, 5); - + Internal.CallInstanceMethod(obj, "DoubleOptionalInt", 3.0); Internal.CallInstanceMethod(obj, "DoubleOptionalInt", 3.0, 5); - + Internal.CallInstanceMethod(obj, "DoubleOptionalIntDoubleString", 3.0, 5, 4.5, "blah"); Internal.CallInstanceMethod(obj, "DoubleOptionalIntDoubleString", 3.0, 5); Internal.CallInstanceMethod(obj, "DoubleOptionalIntDoubleString", 3.0, 5); Internal.CallInstanceMethod(obj, "DoubleOptionalIntDoubleString", 3.0); - + Assert.Equal("LevelOneClass", Internal.CallInstanceMethod(obj, "OptionalArgsMatch", new LevelOneClass())); Assert.Equal("LevelTwoClass", Internal.CallInstanceMethod(obj, "OptionalArgsMatch", new LevelTwoClass())); Assert.Equal("IMyInterface", Internal.CallInstanceMethod(obj, "OptionalArgsMatch", new OtherLevelOneClass())); diff --git a/src/rSharpTests/rSharpTests.csproj b/src/rSharpTests/rSharpTests.csproj index 52726a2..814a927 100644 --- a/src/rSharpTests/rSharpTests.csproj +++ b/src/rSharpTests/rSharpTests.csproj @@ -5,7 +5,6 @@ AnyCPU {D07290EB-5755-453C-8CD6-5CDDED3400BE} Library - net7.0 0.8.1 (c) 2014-2019 Jean-Michel Perraud .NET interoperability on top of R.NET for the rSharp package @@ -17,6 +16,7 @@ https://github.com/Open-Systems-Pharmacology/rsharp https://github.com/Open-Systems-Pharmacology/rsharp Migration to .NET Standard 2.0 and supporting R 3.5.x + net8.0 diff --git a/src/rSharpUX.o b/src/rSharpUX.o new file mode 100644 index 0000000000000000000000000000000000000000..77f74502d79db2877c2cf93d05cc66200624abaf GIT binary patch literal 151472 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 D`h_tv literal 0 HcmV?d00001 diff --git a/src/rSharpUX.so b/src/rSharpUX.so new file mode 100755 index 0000000000000000000000000000000000000000..3f0c148c315b5f14e417c0df40dd02313dfac1e7 GIT binary patch literal 646544 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�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

b=1W_k{%Uw&pt6A79^Y}7vltwv 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

8@AZN82ze>HU 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/setup_test-datetime.R b/tests/testthat/setup_test-datetime.R index 317f15b..c03c596 100644 --- a/tests/testthat/setup_test-datetime.R +++ b/tests/testthat/setup_test-datetime.R @@ -14,7 +14,7 @@ tzIdR_AUest = "Australia/Sydney" # IronPython: tz = [x for x in TimeZoneInfo.GetSystemTimeZones()] tzId_AUest <- ifelse( tolower(Sys.info()['sysname'])== 'windows', - ifelse(clrGetNativeLibName()=='rSharpMono', + ifelse(clrGetNativeLibName()=='rSharpUX', # As of Mono 3.8.0, and probably earlier releases including 3.4.0, the time zone names have changed. Not Olson DB anymore. Not MS.NET either. *Sigh* 'E. Australia Standard Time', # I think even on Linux Mono does not use the Olson DB names. If still, use something like the following line From 6ee2d595e5dbc695085aa5e76b9f13a4295e62f1 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Fri, 23 Feb 2024 15:27:42 -0500 Subject: [PATCH 2/9] Fix windows build --- src/rSharp.cpp | 4 ++-- src/rSharp.h | 7 +++++-- src/rSharp.vcxproj | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/rSharp.cpp b/src/rSharp.cpp index 74f7b97..5fc7073 100644 --- a/src/rSharp.cpp +++ b/src/rSharp.cpp @@ -579,7 +579,7 @@ const char* get_type_full_name(RSharpGenericValue** genericValue) { const auto call_static = reinterpret_cast(get_full_type_name_fn_ptr); auto hr = call_static(genericValue); - return (char_t*)(hr); + return (char*)(hr); } RSharpGenericValue* get_RSharp_generic_value(SEXP clrObj); @@ -777,7 +777,7 @@ SEXP ConvertToSEXP(RSharpGenericValue& value) { return Rf_ScalarLogical(boolValue); } case RSharpValueType::STRING: { - const char* stringValue = (char_t*)value.value; + const char* stringValue = (char*)value.value; return make_char_single_sexp(stringValue); } /*case RSharpValueType::INT_ARRAY: { diff --git a/src/rSharp.h b/src/rSharp.h index 92bcf10..bf52998 100644 --- a/src/rSharp.h +++ b/src/rSharp.h @@ -27,8 +27,11 @@ typedef bool RSHARP_BOOL; #define FALSE_BOOL false; #ifdef WINDOWS + #include +#include + #define STR(s) L ## s #define CH(c) L ## c #define DIR_SEPARATOR L'\\' @@ -45,9 +48,9 @@ typedef bool RSHARP_BOOL; #define MAX_PATH PATH_MAX #define string_compare strcmp -#include -#endif +#endif +#include #include #include #include diff --git a/src/rSharp.vcxproj b/src/rSharp.vcxproj index ff37bd8..2699431 100644 --- a/src/rSharp.vcxproj +++ b/src/rSharp.vcxproj @@ -241,7 +241,7 @@ Level3 Disabled - _DEBUG;%(PreprocessorDefinitions);MS_CLR;MS_CLR_TLB;USE_COR_RUNTIME_HOST + _DEBUG;%(PreprocessorDefinitions);MS_CLR;MS_CLR_TLB;USE_COR_RUNTIME_HOST;WINDOWS %(AdditionalIncludeDirectories) @@ -298,7 +298,7 @@ MaxSpeed true true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);MS_CLR;MS_CLR_TLB;USE_COR_RUNTIME_HOST + NDEBUG;_CONSOLE;%(PreprocessorDefinitions);MS_CLR;MS_CLR_TLB;USE_COR_RUNTIME_HOST;WINDOWS /TP %(AdditionalOptions) From f4088e153742fb57ff568d868e9ce9cb677e5776 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Fri, 23 Feb 2024 16:06:41 -0500 Subject: [PATCH 3/9] working linux build passes all tests --- rSharp.Rproj | 44 +- src/rSharp.cpp | 4 +- src/rSharp.h | 2 +- src/rSharp.so | Bin 112648 -> 0 bytes src/rSharpUX.o | Bin 151472 -> 0 bytes src/rSharpUX.so | Bin 646544 -> 0 bytes tests/testthat/setup_test-datetime.R | 361 ++++++----- tests/testthat/test-basic.r | 898 +++++++++++++-------------- tests/testthat/test-datetime.r | 255 ++++---- 9 files changed, 781 insertions(+), 783 deletions(-) delete mode 100755 src/rSharp.so delete mode 100644 src/rSharpUX.o delete mode 100755 src/rSharpUX.so diff --git a/rSharp.Rproj b/rSharp.Rproj index 4b699bd..392fc55 100644 --- a/rSharp.Rproj +++ b/rSharp.Rproj @@ -1,22 +1,22 @@ -Version: 1.0 - -RestoreWorkspace: Default -SaveWorkspace: Default -AlwaysSaveHistory: Default - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -StripTrailingWhitespace: Yes - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageBuildArgs: --no-multiarch -PackageBuildBinaryArgs: --no-multiarch +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +StripTrailingWhitespace: Yes + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageBuildArgs: --no-multiarch +PackageBuildBinaryArgs: --no-multiarch diff --git a/src/rSharp.cpp b/src/rSharp.cpp index 64ce7eb..932efb5 100644 --- a/src/rSharp.cpp +++ b/src/rSharp.cpp @@ -393,7 +393,7 @@ SEXP make_char_single_sexp(const char* str) { bool isObjectArray(RSharpGenericValue** parameterArray, int i) { - return parameterArray[i]->type == RSharpValueType::OBJECTARRAY; + return parameterArray[i]->type == RSharpValueType::OBJECT_ARRAY; } void free_params_array(RSharpGenericValue** parameterArray, int size) @@ -962,7 +962,7 @@ RSharpGenericValue ConvertToRSharpGenericValue(SEXP s) case S4SXP: return *get_RSharp_generic_value(s); case VECSXP: - result.type = RSharpValueType::OBJECTARRAY; + result.type = RSharpValueType::OBJECT_ARRAY; result.size = LENGTH(s); auto sharp_generic_value = new RSharpGenericValue* [result.size]; result.value = reinterpret_cast(sharp_generic_value); diff --git a/src/rSharp.h b/src/rSharp.h index 0177e55..29c6fc1 100644 --- a/src/rSharp.h +++ b/src/rSharp.h @@ -85,7 +85,7 @@ enum class RSharpValueType OBJECT, NULL_VALUE, INTPTR, - OBJECTARRAY + OBJECT_ARRAY }; // Struct to store a generic value along with its type diff --git a/src/rSharp.so b/src/rSharp.so deleted file mode 100755 index d9fa9d8712066093dab784b925cc5e4f21edffb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112648 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 D`h_tv diff --git a/src/rSharpUX.so b/src/rSharpUX.so deleted file mode 100755 index 3f0c148c315b5f14e417c0df40dd02313dfac1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646544 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�+XhVZ)8I1I)7~}^yQ+#oDN`AaT~!mi>gCu~b+)Ta z$F6FyUG-+WTB2wGY8nS?m#J%9;$9ol(gf=gmo1I4esZFz6tqxKmdpb7aRjU-0`|3? z)I?wR`YX#sU;i?ih2;*OPd`4!!gt3Ow_HzyrI>hgC1GG`k1Hb9x0^eKbut^)8D%`U~`w+(wVYP=Kq?8eKiQNlLfQJ1(! zp4rALZd7fMMqmFY6%jcNNAMI+YdcjFND&VN!hPDtsb}m|w0%O$KuCQTK$*H>5x^2f z`#JTouL?3P2SFad~yQ?FKsnpS9siP12IvQ2uw^DtI-O>B-Le(67I=)%Po27@8He{8t+UQh7)0R9&`y*^j zE1=11p3<8pz!+#QCTmFo%)#8+l%MwH2VmE$sqtV}c`ZTHTQvsvV%1MrbF;wPig@#A zQoorTx8Ay9nd&c-`v98UAs5Z=w*=1a>(w-hBURoaD!6TTE_k3-@E{c2mI{{4w+3e} z7O5^!=1#esd9amv2r_qaGEWcATq2pZ>yf$p6wW-<%AAeN-JQ(01!ulpGIyuUnO@GE zV`UzO%$ZK+(!k8#)*c)-M@HKg^^d-Gt( z2Ljm68pNh~pNh~laxqS!3&8z`n;W;JUpM%cw6_UpKLyb47utF?<6m}@HEuxL`f1#@ zTxr_^^@5@IC(oJp9sXw4M9q5t+PFpcC*gjFFJxT8`)z?U$v(8aov3G4HgOJsRt%>G zl&KL%07lL9k&MTUs4|sDeNd)GE(I7pYCZm!svGcM+vsf8fRmw4Tgr?5I!3I4J4?BC zj6RFa6bm5heF;4G-BA&>Vy*^KCO&b?ce0swGE;$PuRMmV_bx7>t66IdZ7op4JW0)099xT_PIcC@KbmLWMGEaG+8y6?UIi zE|bRl)N;8B(#vtSUM`msU5Yu*QOp$~6?3IqG4Bjk%vGY8gZ&g!kU@&MS`>3|7{wHF zc*R^T(uYvYH9krR#ayd+S7LCWVhTQlVy>0gh?ic_3R^MPN+o`ZDQm2CVf4?!htoeH z|A+q3`gA=@qYuGNRBM6Cy0Kn_X#*oByjWr$S^oybE83w6KIJ1e24+v6lOp-Nge(Jiq_JaYcrcsusaich)Onxac7%DRKgR{7K`BL&aB$E ziq4Ku7(?5W3X-c$Fp3EuBQ#MPmQ>yN@@%(!BO{(~1x~ApqCN=#Px~|XHC9nE;HY;PzhqG}sAfI1ZM9FiraiD7w zC$}i=HAAn=Ps(gnx4mxYRjljVabLDNzu{u5y7LV~Z(!l?dehJwTGz92$F{k}vqa&h zZAU9nrrtsldc3AAW={*V|o zFVDx5+Chfu0Fa>`fVEg}!fQybM%L^3vW%SJEF+uJGLkuD$(}DO$(hbdvKg%;nL}3X z`LdXtMT^PNckrnUT2dZmL3!<-&ue#n1sh)918L|89G4JuBnt2JAv(@PG2QQ26n%dF zQB{xV{35m<+`jxQ06qpMGy~tA$EhX1gHhw`b8yF0H1hi$gmayYI?i6ybrSA`sz%lE z{b`I%;90m6GIofLSX#Pa<2x|L$C*wF9g#cJdARuS)MNNw2E?%5!3Ozh200}@yawc# z#skNvPK01hArQlM<)>^{&Kc~$uPpiIqIwg)&T(gb;c$Jw=n z^Z+AOzIcEF+XFl|#Z?3HE&&l$&g>TgC zs7nYTwEa0(zy}+$t@SynHiWf4AI4fOd^l?r@_$$>+0hGPN3B%@%Z{K_wjBvEgdMfk zyQ$pSGX@^&sE%p?75}~n$+D&Cd{=i(`p-FS{s#2nd@98)-J%r zHYu4j*Ndrbc1-P6UOi*lWK(;M8xr2sUKe^;Q+q?D`k5L|O4-w;(EKc}U^TWb5Hi@) z<(n#sM#eEb6yO{rek;)a-u`d23pjPwEX}fbWMfKnowv0EPS?21wKW2eK*+mR|@V06*WgsU94Wtl44CL2g2J-6=11XzW--H=23m{!^sv;4pZ#==6jXILLmY)sjJBvVu1cJ+uzL&1x-EC0phFN%S81U4v zGPOn7XCH)awG0f@vNE+**~cH)NBp4hu$UHNXoL`AXnqJYG(WhScFu2TeiRC~02I3g z7T!HHWonz#0-^hlO_|yr(1M?2<`CsVJ8k6>LWsfnDa_#f82i>ptaxiEB3pH{F{)E2ataU`Qm&{`-8~(U3@TNwy(%PfgGXV2_y=B zc(zsIU&!(fvi#4YTIjzm^go2Ay&K3y2lD?#8t1Xjq2f`r!{ZZgr8=|>8(H+0@Q5`# zXRnXqS|ImIRT0}0bBVz15c%gJ%~JT#vQsx-U#TYHy#4}Wr`yU>>_Xy3(k|R8b&*}F zWWQ={^exuqcJvYyM|Y{qz&DIro`X(7WfB`!w^gkKSWU#V+Db{qE? zoo=LEB)QQ|SK3;&SwDguHkEhEIBn?PYS=}~y;tG%$G5ayHe!#$@sGcWb;Mrvo}vFk zmkZSUhW<0LE>H&y{TI68?eQ%--5u1w!^Av-kCElkM75RQ*{=VL?W)|s)veHEo{|^3 zTdUj7x>EI!L4xvqR#3j5gK|D#vQ6isMZCk6D+f&S?e*<8c^y56<#H=i4w!7$mq0)( zEXREf+2P8i9j-EUK*=GKgNj$U^a+6N@?v>e$AaH~Cu@hk0Huw-Poi#G)|Ts$R6Z|j zb6rPDx>!*+ityW|I^+tvyGqav7Qbz(`&}`2H;K8y;&i6Om@m=0q9vx z*G|_khQbCzShizEiCf?wB4? zwlfwqIpZ?*kh15=`*hlpI%Vn+Yx(=AWogG8OS@l>2b&z_3bM5Or89#p?E!r* zWx`%^nL4h>&dSsYC5Cp=GPK9U(CD$~2c#HT_(D);Gxf9KJP4i z56c%KcsE%*iY$D4k_ncnvx*F`OkJ>+y{B9jm;nncQ|A=fUzvKsTJ)ZF8DK9MV3~Sc zk@=OWi`J6&jM(3k&XV_t&;EGH`w%xlmb_>|klh^>Ixl%a53;+5_10)4?5<2brD%(| zOkGm8yZ%U|Yr(ZDZr9Q$vh!`lUESi>6KaiIqr-3g1} zZ*-YZzL)@`I~mUC9&?ONE=OPXGrChcpT>=%j(FBFIzfxkJ?9wRDVaa$*_h{DM%SB- z?gh8eoepDk7Cy-61RuiaB-lA4bMs-G;2f^nSnTD*$oC0d8&4l%m_UE))hfLQhDha|Lx2+(^JG&xlC}f)`|4vp--ffE^yP;< zT6C@EcE!cu@XiQcaH-+E+G64wox6ZpGg#*k+KEKhTlm_HcdZgO_(p2GvR$Kv zI}yEI1ulDpL<6;51ul8G8F%aScrcn#rgk|BC0J3Y-K+j}iH9Y^mdz{{;>PaW40w9>Zg+-=;QTSa&Hk z0{2dD<9nw_49CsW+xX@wzUXnQ7Ed3iimSQ*!8voZ{SV`>95+;NVxxi40E{EkC;Lnof=Q(AL<8>wrFEMk@U@{tUx3F(#TCpzqQmBO*MW$caccF;(>a zDsmwr)7H3LskEpAN6{)X`j+V0D!PsyUDu3GiHc5*kFJ*zU4PCTGr9qP-z&NyfAmX> zX)95N>nBB?&Epw%8+Pg0(os^utTu4h2pe!y(y z$%|j`IOv|~QPt?vT%OYS>JjnyUwAE5KU0fe#N=7{bok;Wp4o{v`wG@-lr8nllQgkt zHJ2^%ETSqCOQ_14%U5`oa+0!WHCL|itjC=$iyC(r)#obD$Qr9wdv>@=sj+6QXSXX| zbKQE+fivhAAX$lH8)?-S^<*^;8?Dx!xp=8dvMyJ)T&6#=<9!i6W6HA=D|A42qvYTd=bnrfWs6Oc`8q5f3T&+X*d(wij4?KuZ(hDz@C=IK1_=snq zh5Z|5kwkx5+{@_iqslX?*270ULoISGECrM3Pm6mMWbE9JsrA|s&v1*(LeQU9>-8g^ zQ5KdOEV3rQ@unwVk;+SZxmC5^dfRiOl8!yaee=${o~agsrQ|;@MKZkizUS6Jx>oxG z&mBszTAdF(i>zzWW)N5U5L^ckTighjJRltmO|r{6<)hm|*`z1^NNh?d@I@b%n?mYj zXL#2~I!|o}?{7YYH_^rRmk&$g+nN9MVJWkP{m4^CxB8*($Deo_>6bvWx{KRh_tQ^2 zt=w4F$hx0>;_2+hveMW6{1eYWH#saTI;o3j zx>om_E1v0o9N%8?+~LP@^*hf3eF3%!tTN)}qUax#XI$MMzw@lncQA#GD{ek0KP%7J zy1)GDx!awm?r*<(%H6DWfB(a?->;fK|MDF6L;UY=&k4UQ|NQGY??$9(N-57}okq}V zPO7dtcwX|u7;3ENbvFiI9gk2ReC0CGbJX(?;RiQCs~4%Fl;=0!@TEkn80CpETvgVq zpkkG$p5ZD^t5;D~Ql2IjPD_bX@ygTMAV1*~G(lbT^fW%ClTVJ%(c+H7hKDQ9h}0^e zXB%21(b-?Kp~XE7dXDl8Pf1is%5z;%0V!1pk0ay(8B?mM>dLd!h1XJQ5NfTf2rZ?i zN>-jNeq6N(wcE{=T3bEix!(v>;?z1oKk7!a7N^z)`m7txYMhz^^s{a>YivrYs;4}! zyYXxxDfJ2eMIhegBvKj>$4_n!+ZSjl4T-3kE}2=lltzS4aN})%prte>VzQgaGS+LN znkr8RETDN{q&dx0Gfy8kD~p}l9Ow~lG+S$G3!sbKX!apoHIH*@OEBEwW^me)+6uH~ zfix{O4d`udw9}H*)}S4C)1QX(jr_P z%GJqWwI^cVkVN;0bs)CkBuW2d0RHpL$6|#aP z>9F3!k>CmJO}k6oy><=pHVe(`>bgF});m0#meQ9v#)jr_bz(nao9brcPUJt4K8rZ! zhURcd)SuWkhG)}K1`x-g&>Sv_1`^w6q1l{(CuI<^eIJ^Q#iBngWiYY*6`G9|p8m9y zA;jj1bPbWy4Nef2GL+cry4h@E5?fA#Y#cK7q%()(*_{Cv?QAeiA+qiel8a?;MY1;- zu0|+N7Z;b)-Klx_9{0dV>NabJ;jZCsq(2RN^`kJ;L|V2@4bxIat1-$`5J|;YGgZo1 zHBNb^_@VOEc$j4*tyz5YS%K>0nd7d_mV}$8r51u=g`2^4d0OfO(6+g0c4jU0TF~xy z)5tMNnJE($mP04qM5oY{>xg*SO|(n3vR_XeZ-(U1Qf?sPS8k%K;>l_Xq5?P3Rq>5P zjEZvgd|<^z#E}$|Lrb}dh)vu?SH)A+&C1i!O>|X!3lX#2#K4ND5yyy-99qh)M4ap< zx+*SK)0O9TH_=sb2@w~&iGda0MjRVLa%d^H6LGJb=&HC>%}}04+(cK!Gl}@5n;2N} zEaG@IB!`xA2N6GW6I~VGsqRvqU!vCAO77UGmO5Ldd!nLg-DDXT38kfafo|eP+vX;Y zK6MTlGQ%^ttC$Pc;cixHnwB~b=$qVVrwU=14~E6z8ASIR#^c72>A9`ZLY!)9Om7_Y zeA0ySFEYd_aX<3k{q<07V|wV;bCy|F2CLjTn z*Box54nq6ta9E^{5md@6p;_>pHx1TGRb>D^ncH8*d?i~lHJUby`7!B!l$vxDe_B-< zBQR;%qPrE`}B?J#!SimvSKoXor}?`UP3wTDm>B5EL4@Y zHm81Su@j|fs^$1fSm4(t4aDVixs>H?%YsTXEs|DsB5pS4S8UxXqDaM^RIxW8^MvGy zd2wH>XGp5HC?Kgbm6Apyn;myvr4i4hxYH{6y1cmG1K5%>iMQ4bqvK3nGIKFpLh|IX zagFp^i70U(mq`6HGVUdnJmto?H2oE-PY6_lH|{-^M*5r^cTu&bmQ}{fa}^ZjF;)3= zEKwe*>cM|bWRBTKZz8 z(w8Vb9nU?cFICtfOkc(uev#?Rk(x7ShSqkCs=peRY8eV7#a2>zr~6)w3` ziHSP3<9hJ@9>6EP+G&I0ZsqJ;5SP*MZbkiCLM2y3aax+MUpsD8)Ui!$N^7d+9)+Im ze6x9z8JD0pS&s};%q};Y%@_ZQOOcJFO5(IuA>xFJN;qr867G?%#|R{xH*kV-k4ktI z3+ARkXx))`(@G@$kpxU6G453=;gXTMPraP*p+RVsm`3cW`_;*WPmLy3ZA_1DxIdet z5?(e^A5fY z8o}Jh)y0Gq(`m01qIHNkq*PL`sGj7&4k*=x7MllE6AJC_Q>`g=ze>uC(lR0*R;uzt zG6bkCn)>2stk5CX0Wq2gI!}7?4HKp-ct2%{6hxk|6*{V>M6?pL>mSd2Qqka9D}Dy8C+V+;OYArJadV` z<+m9;dxgPs>NJ(|d^H9yv|#XJCP42RQ7WHdw3@*%Mr~qPU6DM!@jXB4oZk4j9(7Ca z8mWppq<4*mR=!47zQ&v{vu^9-$evlZ&EpKxUtrMoO$O~hV$k7h1|5H5(CL2+x7&M>3;N=X4 zY+x{S2ZNk_42B&BxMqmneyFZxrgW)V6C$OyKS8wA4yPG(e3?LljE@=g`jJ7VewL8E zD>JyJ9)mvV4Ekm==r@c(*0l`!7c&?zkHNsT3rV!E zR5(X0vl}p&+n&L^J`CpfW3XTpgN54}EIP_y@zV^Jyw0HP69!9vX0R**abISm<;e_I zwqUR-lfmkI25V<9*sz|#rd>9w}pF)7% zjWo50p{~|3G*o(BLk6WkFql#8B9$_;34=S+8O-j@z?;or&b18Y&R{Ta34{5Y87w%!VBr}Ci!L)* z{2qfP-!UkQdy;Bc+K9oj?hID+XRvBCgVnb%ShJMD+HwXbPBJ+8I)lf4U~nq(DJtxA zV*)LQWirSuU@)AWcFVlUoEkZU!RRFn#%^LTZa;(k(+tKx$DrUn28G`;nD94)Yb#!& z8Yb3eFsUVj>$)?zei(xru4OQ}n8B2J1kwhsWiaRvgTYTS81f;5p?@;SPJEg;bDA<3 z)`LNAE`#Bd8H||CAa50ekvkcTI>})4s|?0mWiZx!h6)>3lR z9hMPD&&fuxnwdVVKQuVA-Szhqvfa$n43#N zy)nb)W=DoC%nXKUW`BmQ&Cv|om{SUCp-` zb~C?X*xmetVNWyqIg%s8ti!OE*_L5%GmGIh=4gg}%o`c@Gw)!SWiDsf-`vh{p!op9 zLFO5TgU#m|4mICrm~CEVm}CCKFxRZ~Jk>kgY`}1Y*@fXqGn?Tkvxwnna}mR_<}QZg z%wr7m&F2^vn4d5#H2+{Y!Hj!>%AII7WH`y}!tgqCD8n1fNem~Ow=tYzE@D_@Ze)0q zxu4-w^8~|N%x4%*Gv8r&t9gatbn|b9C1#};slMCHx(rLr)(mHu84PEd*$nS63mM*N zPGfkNIftRwT+MKfxs%~s^Dx8t<~fE7%$FE0G(Tpz*!+p%64QK%>Mb*q7%np#FGKTBTa)uksM;LB2FEiX^e#CII`5VKnX2qAOzHMfG zhTF}~49m@-40oD0GTdb@WO$Fcli|JQ5r%ur^9=WyuQ1$ie#-EG`3uAQu6Kte%EnpNKM~ zM)!$WW2jEKeIGTB85uq0CVbzojIWK1EJ^f>GNVmTRF(C}Bl{Pze56Fy(pfP?qxET4 z1=ABw=&br zzGWj(oJyPmPHjjVGu`aFT_vudd_>R&cQiYheIKTEiN%!C-RxoZeO!HvvIHd?-*LP- zqxudS+Slyc_lzrtmfg;5Z$=+jn24p_e8alvU}3a=oy{($XI$bXR2rh+y7_2X?--u^ zMBeRg-_^{{G<%zU)4oBbCQ}<|S}!x_8l-=vb_~ccQ~E&4ev^$QAgRRvQF}-}t%pe2 z?*UzFP)PL_hp9J-#7UysB;&9N=Cx)*RV1%!OuR zS%e;nn6k{oA%m6rwTyDg8R?%-UckwB{?V z-`(a$Gofn$TUVQ{o3Ld>Y&O;43|^gXGBtRL?dITXXf@u1*3nzcCUm{kOrn(h5dtFb zGIyJUi-I|Gb^uM>xyb@^%FV$y5#R88%)v8;UqR-6_nLdm!PQi7?%4Gp56nUt)f5#n zBH6mgLMhcbLmps#lA+%|bH6#bsgy!R+0r(lO_04N6(eL6(~SA3nC5bIz#QB{3L1Hz zdB_|xfHz7G@mlMyqCf0- z9X5}cLuOeN^vIA|M957RsEvHcJZcVEZ_%aA#I@eyVmNxp25#oahs{UKA>%BrM{&uO z)F8^{T0Xk8N?vKl)!W?4G!(~;6IYKL(Oz81IS98$gv_g6( zq+SAabqD>pR(Lm|X98WrLEoWC*^7a$S$Lc{*5fkS;pnIpzCh@EfUf1BW3@th7o)xp z=-LjtzE=1*p$`FF$3a)t3KN?FeHrMw4qDd=n-ls)pi>-lb4~j41E5n22NTDqxUA=J zwATtJ5&Aoz>pSR1THzgp{s-s=4!W16UKMqHS3{|>5-uAR?kDD2xNPh&H_-~u5;`5| zCJwru)v#Qkn~FxI82YYeqI0cq*<+iJploxUr53~TpVeOKEt+?U(*UF{0l=>LVN z?F*Mvb`5oQaPmiKh4&Cz0o~C-M`~k8%MFOosqhJ6NHFzXogD^4oA4&k=2n+8silp% z3S7jS`mQbxXEUuZq6IvSi2}Mh=p=0dIU7$a59^vI0t3~pkbH{g;RtyG%HbWxS=yo`*$F(G2Mir+8&Rkb~EbK(zZRp~ZOcKqb3J%GrK zpHlUCR5U#P=KB4RuB_s3sQMNVIq_39&qLQoyb_i05*}g!<`JHG9_@OJ5(%&BnqK>O z!iPA0cQ?{no#P2~Y>%#!wh^N4iIWLG=qatJ@%sqTV|*fYcEWpl-BYI%e$l(SNY{ge zZU6W6x@XQN{GmSteyiNN=guZ*1|6TZ3g=D#x{sevh%nr27tSZd2D3eJF(JWlWJo%I zI<+1*qc-gLzpK}M`k90zS204bd->Uf8dg~(xrKf1`GnfRyf3_%kQ&VU(#r`A4eAD~ z?O1Q%ygx>s0+I=p|H8j^!)Cnhco`v*s#CNud5fa4r@5a0v?*JaHTYAuDQonnY**Is zPuZcY@t;zzECradQ&}325wRQf?U!Jo>dGW*=;>Axh8{cEzsp{=vi6*H*>jFv+&BV+`KhhpzW}}~I3o*0NFSN6m z+2~i=NNl%Uzgche2^EpF4ja?_hh4D;WykEW?3f*q9kYjI$LuKWnBDljzW*8AR%-u) zo;|=EXlC6_I^Bd~n*L_aAf!nHwd|p0wvR?JjzuHe)&@*AhZNzqS8S;YyzP~^0yn=n zK9g{M=o%A7{c>v>D<(Nc9Y+CHHvB}<36ss6>BK7LjZrN#RaP2@fvP!4S)cxvnpxl( zUm?;o;%_2-tz||vQPGvP=qf5YQIAeCqN|$G)gq#+d!lPZM%RprPL9^<*R8DK;}ucQ z)~Cj-R#BIy_WT1)QF&+0bEe*|C%oa!#+vVEcQ9eKzEtgQ^eMgv;~>04Dn zGJsax4*!`IhnWs#{sLV^qte;@Zr3-FoHpO)e%%D~dYgHh zKl2`9?qf4wr~u|sHglmr^Asef>of5`?PL61Lv4uo0H@t^uMndu_!&T(_7DF1P^%+8 zBwEz#M9Yo`(5Cgoe_uo~TEu6d74#t*_t#KdmC(~9{8OWmEUxKe_TceAaHrVZ&FD&v zZ%15{@YgREMSAd79B|!eb4|yUcH3R}&*C2C52{W(gLHpNM_kb%-X&sJ*)IZ2+f5`M zuX~AfNJtL@Xw%-t{{SAfJyk*bl#sVm-2*v;_2#(JpMV)O14q$XYo*2;SncDQ9^KbU zt00wu6h4$N0}t58Ptr=$ff^zxO`AG22SwsRAoIMb_aMEVY2cNPJtn*ZjWazFdIqWX zwBE>r!_d&UjOw?l5rdH|CfOM0DU6H3u|c}iWxQopZbfx zSBG>){5hqSP6aZT#G8%>k>(;XT$?%~k%hcqK4I!pX)3-$jewL>Nyz0bJ=2>5$zG)kf>H134 zk29h4h^r>Oyj8&A4XqS>l(eH7R|q#EN%HA*x`Gw3~^nujz)dUP6T#$-W) zKbw>izu886{Oj}Dcq>)H)ogMfD(cJ5-gxpH-Z}9iPNKbu)RPN)Ce@01FoA18(I` z#y~SQ$PE-T8H3GawjlNd(*>`iX#ChxO9-XU>m{tV1u~i~&?!QjX1on|#VR?^8s0cy ziob_yGTMVj@1>wWftvOn;UiJL=V+v$zaTU@gWFh=gYhm2@ofSWc6$WzKaA}*(w=F+ zOzUN%Pgte*0|s6s2cWpRj~a&uO(j=7AvXiyAIn`DT5d*%kh?Ur+@;~vvj?vvd=vcUg&96Hw0VS$lw*GK;vpvsU5%wpot?Ge^yOx*k1I%Bguu z%YMu_W$52UcY%95gNw>^aSj(0j}3p^(0?G$snw_d(?--Qd~w!@db!^P`ow!ApLWZF zcaBu#SGDZd@TG{Tk8&@dn2Wd|WX>D7I0+fFsq@u7v{>amV_r7($JlWu<3m}eh&r=Y z{RsUu)jP8`KGk)m0i5Z~Iw<-qxmCnTs|)Hy=#N`L)8T>-4gJj)@4?|V!~?jONbp-4 zH;B;RptelA@HV}BB?Wcrk5_?Ctu82k0Voca7AV#Xywghvj^|tGqmY&&i@3ggaed^u z7x62$Jb1mAFa&t-Mf^T3a^IZY?ZL@eFP7r>z+310y!D%qDnfs4X`>H&KiHW$ta<&@!)I)1?Z~YitdK*-x|9Z9XkCxNqUB(sZm)eLNwoeee zS>n|a1+F<_nU6vp0gCk0cxRGWE?q$prY$(l z5>Y%$wB%W$70(jQ>{%k3W{EVOC0g?=(cGRTVrZ6V!?Q#>&k`+omS}6w5-V6BnI<4l z&@{19=sZt=?w%)RQ^Z&SbA-1YO%dMqG(&hhP<%K?QGggrvx2uHO$y#lG$(jF+fxF< zd-S@*h1Q%<;LHiD`R#+QNns5ukjx4YBXCw&Bi+gh1ai={uvX|iFM#gM3+woeZ5}H` zoSobSUoq7$SM+vijH}`yPz~!70nsW!Mr;&t#cgbYXPrT=9EElTu0-oiWb*Tp&y$I0 zg~_5bP&ArKHt<`%P?6B=xkT`mQ%0HgWU@hVz{0Z$@HCsqtZ}y}I!_xQ*wcoEXa5U) z;JhJZ%K?KPIC0FLf_7BWUyS#5y$x61ZnNpX`(pgh#VgDYdspLXdXLTY-*Y$p_qvb% zGash^-lyrm&y)D)W!OfQ33>Ik4W+qcE$mS?%CLm6lTG{*F|5t}>?Bw0gzRCn!geLC z#4H9f3|?AU1gx#N+sP_;6=mVEjAA^Q#5@(pc0hW(Sye}Q9Ps3lHiug92#In8YTD;8nvBOP~sDmXU8YoWlT6g0bbOW1C$+MRL#PNQ#B!nS2dn< z$`w!co2pUkyw03cF7_#N4hYViv(ram1@ML2+0LA^i(jy6%{j;#Fz4(N2P7`TD-ck^phF#^sCVOlok(|bhF&DA03l7jLvK;ddmLHR_wQsZs{z$Y5+Rd)iisT8~f zGnlXTr~+W7U-K>*#hu{VBPH#qB~4yL`FUtp;;NVeAmQ+&={)A%a*l$S#SVn_NH0(% z#2x1ZLwlut6b*3}35c|5n^C%au1&wEo@Ba*s#XQ}F&O^{RZny1J}IF*GQ~F)k+RV| zxu0v*kEBa}d!7`$HBX|;E#*0f5)ZIi>5s1^_^l|2XJz5QM4dC;w%t^nG?i+bW!(x`w#XTkgQ z(#tLovRKkoA!&v<(j>ApLv4qApBS(>WUpgB_sM{W`Pe-`@%^DN@>zJdeC`Ne$o^u2 zZio2T@aaqkrfHjAe*@vp_-~O$1pF(&^hW>UUz=IQIOIGc|Z#&C5(x$SHOZ#f$f?A|);ayG!*&gQVo*#Pev%_FYf0>z%! zEIjuX@PYH1kgeVVJ!oDdO-s^0R^9>5*jDAS9cXJ>HPW;}wx(4lO&jcz?ID$jo|L7U zTQ&>tmW?${@cu%f08LgSNAYwQZ^3A#@4*-zMsm1nua*9Y#3Pj8J)THJ?2oF_?XbRM zK4fVEkjE)IzWqrXIG7lu%oB{n-Vm>MPFgHl>11TUt7mwpOXIc7DOEZH$kV?pfXfOC7J2Es%A@!V#$g9<&vDqK zQ}Cun*pZuHIdW4Y0>UA#V1}$*$);vQ$Xz;y`e%~428~QWCi#~nE;Kg;nAB-Q3sG7btH?A1HSbd;2@_yvY z<}0Qi%k-rx4@Ji+Dtej1*K`|2=y8e`&&9MY`5`Y%^h%0$} z4B54IZ%uwAQN6Qk&3ls{TUb}Gn^Rd6JI2h#CRt}`qW2=W`f_% z3|f_c#@`U*2#E@G1xS+|Dn&rNagR|d9@JmcK3DB#bK;WBv08J|GXP$u}H5 z;`1&QIftz%f@ehu=yAHg@r|u2M0D?hP{4CVMia_ncLA%*w;|MpdgiM1Of6N3GuS;N z_~4$o8m4CiAJ9sxXTFm>b<}wOo)LUN9`66|B}aX{<&BzQkFelF<@iBzG*pBAa|k{# z2gRB{azE-#*ho3lq^da5ET;MYCoy6if8!GE@I~+(zEB1`dXYC*(^84hcJT5O3x?o; z(XRO5XFGNwemiur&R?m4gH#2L>)I_%C4u7ksebzeso$DEKeo1phU(;1)WJ z;6e>6_^jCX={4QFrTV)n-8z)s%1!e=?a0EvYO^S&`AU`62H&4T5!^Sbv@LLd0mqD- zx@xD0|9@`&zom?S7}r6{_*a62IXcHRb9Ky6OZBDf^j|f9HT0uAS1d(DOxNV}m#X~6 z5f*;A8s8*Be}pF&*4|}0ZNmW5$UVslmNn73$0WXHxp1E~db+s<>&HDu(aonCI3$(j zEwJxC)ug*m6L@Q}(B4{H!LNAao7TL3a=iUYAH{D$Y;D4l*ImUg!{nRSep`#lytQ~8 zZ!KQWTZ`A)TZ^@5Yw-r!MDb4Mt;LD<)?#hiTAadLi#PJt;w0W$EV8#2SF=FY)}l9f zYjKUxWoyyvx3$POqu1(z_n->G-GdTVznf46auaHtz2mr!UpyLa$8kNsuhzBWxPjkS zYwbA7?g6#}>~`6BM%dM2j1F|cXax;c0^G&abXz#Q2`5T zA+WAE#c1pcHuJlkk%#vXz0M*`2-YGDi*VbGZRU4~TRT3kCF^EsN{A)v7Jg}`EObzk z?a3@WFLZz>SLVIRz9%JAYq-+9a?L>m_ z>hsO1UA`3Go!YJQ?Wq+yJJWk~j@maBLn{%)_1rOP~h41AW#qu9+m znj$vu7!KFQa=1oO?R*)H{nVP_cCaE?iE4+tf

b=1W_k{%Uw&pt6A79^Y}7vltwv zEVQuhsFr$ik@O^miugD<5b%}u_SPa9T<*zSXJ2Bmt0%4av6QBnCDdKKY~UU$BX_?~ z-^=d)HS={7AGV|Q)>3sdVtl;Z%oXFOIWhiz>5W$YF}`3!$N2l5-r$od?il|-$lf>@ zqBkhUzfY&F1wAb=#=lQGg7!fvI&i%HAs-=3jDJ77v2ZcIMGcDaAJ93*Z;crL7XKK3 znjPamC~w6M7vn!D6$i)ohgo91t?JHAu_Hji2gY+0$sW-wQm1qXjPV5@9LXM$8iHbc z!3We}MY8fLb-j}s=P#Au1M+Z;e^iensX7P7_<|1?;~%wEg~l<^bRL$`42tm|38603 zGmlEobPJ5}1s~iqkA~?P!3VU`>KS=6I}Ys!^o-yG@^F+S?`qe32gdk<50yh+;;#2m zqy2kd@PRof#y`pZsAq+W@oAm+n6$LN>g->l-~&sfRlzAS`+K9d*Qe|WiAK_1 z6`YbG3|u6Zs!6Gm{s2Mc~CwBTpL34Yd|NBso1&|w4@ zYFNQ}Rd7xwvd48^6`ZGu%zssIMCVn(1))epe^lpnz!T)^Y5BmZN9`1?3NE_&pOiA5 zVq7~Zp<1IH|{SLBy=cCX{BGgH??_Dbi_ffVKUP;X6m4ug9 z5_i}uiBwui%u&3Qn5%d#ai_hOs7Gswd5RYk^A)cq?&8(N0%b2JeqgD>A87kg=wVN^ z{S>sE2z#VWSpAk0L1)^27DpcDP}?tTldk2&udd|;x-{?r!>`iiyqo};<^{jy#BW09 zA?PVE{K+YB@{Wzd5r3)l}3Gxke(7aU2JH)*jQk2u7$z57FoG?F>+OW_+o<>BY%>Y z<@;51YHo?ai;*&eH(&5p=f!H7LC1bn-aF>IroNT^E8QMIIKEZ2`3 z@0)mlleXTM;v38M`Y!Ud`Sg+TVgf$FCT=Kl}H8Il9&XC zvPSvp$G8DR}F-}dWT;BcV z;(7a5EB>UOrfoC|(QG`e+0Bc${nzIb@LWg*Torp!%toU&=$@D=bx<@2Wx$naYw+(~ zthNFaU*m91kBAelA|AqMXE>Sm9BB2ET$g>w9LJ6}q#|+w7xIXCtTUh$RYW0BzNZ>6FA4(dZAzk7V0Ed5b~&mb6u^vU%>9b`e!> zHTXd1!P>ySfHaDrhex(aRi7(5IfAO>OkmE>Tn9Ztvfc1dXN_05Diti>$dE@{eD z6@`2v+AtA~RBpGZ+;>b3*t6Je>zm3BRJMDhT3QGX^H~PZrS~!cx{@!QVb7&Pu;xA@PTuwkgd50^pJDuJ|hXkfi{!;(0^NgAz1Q*V9URcTP$0Pz}xcgvows3NCNMu z-hQiLwS^$s#|=B+Y8bNE4YTmvFyI3lCSKav2Iin^ zV1Tz9cF;92z{}vX{P(%!2gR1(!n6Fq2g)yGOMcJ;EWiE*uvBb++Vm{c_n2y`5 zP}H}4va1Q5x52kb$yLlIKh@N8u(o%Vaw*9JE|J|zV&UCN!Y6P9@2?#wojQ@awV4i; z@UC_V*_?%3;|SS;gk0+g*^-1@Cqhbe`=CoE44~bO7T!JZER*2vmww?RgxN3s(urAU zw0)Ph$6N8CKP+q^f*VnbsfQ8MBUkgAcD6rF*C1 zTR=?nspgNQa6cIyofPg9^HWp*!&10YwAA>6ml{jeY0|zw9PMitq5sX=N2`#X-qsO# z_Mes>%hef`7NIMh?l186@XrPwV%GG({O=+NHuPPDpKav|J}LBzL_JvlTiZx{PvuwX zcTzatV~iZM{Kg%R7lJJ0ak66;!E?;wj0lJSzl$B=tuvSzce)N>|L(IFibz3lBGNy6 z6pBbe2|8Z%r(;UY5MWDx+RbHZpfUX=#k-AZzWSfh6`e|bKgZiXLXYLX=O+IxO|GO* zgEVuz&cPBPSaBK%qJ|Qv{Uc+9=g=jSt>{8vMd#9NP5+12ar>fzkb}w7hRp4#hv`5)5-m*lb>=rc>s0tC3hz;wZ&rx zVasRXgF0F8Av#$Gejv;Av`eNzEYmZNOoK_L%Z^M#NTz2+CXPghQY8AEI}%-H(!NR1 zT^$SU>O+pQ1nt*($c<2{>jWH<;t7ggK_KU%?!#S$-;L4-5M?blaWa-B9NMB=^Y3go z%LRXL`G#_$|HU|M59jN-7Vl?ug+AOMKjmcH44X#3XXeM1J zg|8Q|LBQRn)~}9P*VMc5te1spvztykbaXhkn@)Gv%Ty{}n80LAw;RnXXsgQm%>3Nc zTQPPiPF91v6?5}>+YS+W8*%Ft-)-XV1t#Fk>n73Z;P`H{j}Rul+hWq*S*ZKrwEM7y zoegcDk!}Z0Nn53C_mspgYMZ#Ic6zw@E?e&cpYwuC^>SGCUUXD%7^&V%j_T!->b>kX zhwZjG_*tuk4%9S32WwjKS0&h=F?qAOvmWbxMg0Nx7_?akph6vSPVM%;#PKdqmOqnm9(Y&+Ny_Oa144jeE`ex}siNp`vfI`fk6;=bpLm z_@Q<08&2Qtm$tc%1!-)n2Ta(;ar0MfMXS88%&$$owm~r^g*o5P?h>KbwUaN-?i!(| zaFWBe6J|{stGWh-ZCD7ufRW&h#1lR5H?=?VWji^_Z%Y+mIkQlAbXWghJ67 zC?e?y=NZtmtj4@Q&kXi6pca9j0Yyf-=g7PC7M`C01)gpbel)Su&tUCt1qKJH298PIdCo&=S9()A4J+EO-pD9zOa_U!xn3~oi50zxL620Pn^j&BIO)eET;cKSx&X!9@b?7w zb01}5Cw4?%n{9}&jUqO>!Tkiw)2AKw-MP2zP)i6_gbk^D5%xOdylB!^aUb1`fs5JB zC7OExrj;;}BDcOfl0ln|v^MSU`uLtV$8&vm;Qr0KUP@*~vMxG9vWWcJjlSy)fNya=H3a^^VZn@`2#x z>MM1PFTs{}NhYF}cy7S|{>UY_rD5O4(chgEN2E1))7M?8)c(F9Yz9sfN>k>b0JuIB136EIXFt#+qz9nYS97}tF`${Yg^>I%c z_FXZdTJM*zp7k~OmICV)5AcgJ?WJ+I?VRPf(ig=J-!Rf#34+sYZ~G`Tz@Yeb z8x8O~?g0ivzyQDF5)#zF0e;sfq-%ha;p*Nq2had_;G^B=W|ema4gwtZmiNY0@$>M4 z@0)FDyv8TCT%}?@1fnFyesx)KCF-X$~xjyDT1BTwAhc*ob4p*?+k+>?+Cg8s~of%C?=vft+D&%fNpeLa| z7I$?cUZ}?TWWwPW1AQW-RgoQp#Ak*f`c24tt=`LM?p>QyY3 zCVGC0it?_|-^aCgrT#epm-(rbiMP?CObF~Na~*O{^86YV?_H&rQ(>$1eFWC%M+mId z9|Pc53VtR7y^Uk8bD~G+oa?4<)}JCCYSiaa%MO(ywQ!^44Pn=Nb}HR_x6bFPw&;AY zYMuTj%$8pgb_1QP+NhIhdbjF)vTD6c9#2X%dd*GLn;#Y@3+MsvBd?j=~X$5)|q=yFc?O%Ry<7+eU!HrycaD!hOC^Yfv z*6YG@^8ohbv_K+&7ZnOM!0~G?Km& zS(AS7QRoFjpok{%`sqir7L*+tO3@Wa_Ew}2cmc%(dn@usGl|TD_wSIw-irKDD&hS* zU+r>->L+^*#U|TCV>|XxQ z-g|&oS#1BpduI0R>=1egY$O3f2q0i60R#a-Y#|^;iWI?)9g!kMWrv^?MFf>thzX*^ z1}ch5v0z8B>#=)mD4uilcodJl+}~R3Ewgu$^Z(!PyZ8C-_dGYxll{)S)|54C)~s2x zX5N_}6|0w@6swn?RiIvek{*$+US`fI3)Rcd^{bZ)SiStNSiLL}_411f)XOYVFMr6! z&2mvMzp6mJTuAEWPjBa@sF&ZAY~2ji%P-7GU%mV)Z}qB|-vnQmdf_9dX48>Vmus>c zlgl(|7CCNe4r!I-a!s~ka)lryS|zLWrwGrf z)^w&`nWDq<=JDZq8#JGucZ=rZ^EPTZKaWYeT1YxKjU}%4J>-a?)+H^}=A*qCnTO%_;@YS`>J08Me)CwzOpCe?>dH7xZNn zD-#F`IlRz}0|7&5_rmHUS(}oVx>}UNg@z9E113;vf~Z3&RM(>vs)e!?rN*mm8$1N9 zlA;7>x$TyEw4Dd9PumIlztDCYnM_okDh5sk6%&M4F(3l-aia~*FTexyaidc)z?tP@ zKHlok4@_V_dT^#6@O1N0&>sE3*J(c9Rv-O>sDu97>Y@L(y6A_ju$8(=+J6o^P(OCq zBnYnt<*&yI!uvPEGt z3&Nuxh=BgvxyCX}06d`oc87kz9s2KZ=m#dC--9##fTz!klqm;W0a`UT-P zvqS%#4*!uLp#M&Xe!w02?{eq|CZOMgic>I{mVUzleCBd`}bOWdrQRM0E0f z9Z-C)BQfYl0mb(^5(BtH@qG@(zyuU~aHbgWbczM-Q4DP_WO}`DBS8$SmwyI2WJWaCklC=fxtb|fFRQNPq+wI9DRYcckE?xIKbh&-agEL)#2XqPCqYH>Mx-JvC_BnK2E_8h!(zT4~ z`XZ!jIn%Y@rRxEQt~HJfdT^!-@PICXdvpPjM%N0V>r02Ol|t9wLb|SCy8a&0btTjF z50|cO4qcG(K+-%o(*<}ym%u%`fC%V{%x?G{jt7+CV6LH!`nwlZCjb-7Lv>-w6xq_N zl)lKcPu?rW^nIZ*{jhWpF{aC0V|u%fA!8aC@q^cCOz)7Wbr{n-eN1g*`YOfN^fs}k z9~NtRYiLccR%A{;DCYEbF{kej&FQNZ+0ze+J-tKh=?BD~-Wl4{yXv&3A7QG*o<_}T z+0%~-p6zMiYuVF}{RewmaR1q!e*8b$)4S8{=_go$i#-i;((UOdgvV@816|9Wep2vk zPXo^yhVAL6QoIsnDj$-xh6JS{wsVv%EW#@tX1jY)e=l@j@<=bVCOHbBIlJ^^Ja`52 zX}Sb0qW|R0q!7zs1@dVrUKXf;2v=I3@i8P}z=(u--;&V+)w8xO^7PjF5g}Nh@({d0 z1$eMP<-vJ@3UFDVvcU@Evo;&~@d_kgbyL?mmBbNWHQ#VE*9I$)9xj~eJjVm2v<%9l zmYHhZHN%C%|kHT01w#a!I^D<3)?aRw!Odt$!x3lTSkc^Y?E&pGXl1GxR7mot^X|} zSAf};5wLBq^bVG1P{VA?V79T;zL+AlEPF569>he&OkCrve!t|iiu_qXgiL(d#}E^N z5hi*EXOZl^VzH^hmpw!XnCKyDt$us()Yb1;z{FQ9eRaxAoL1lJx5N=9PUF?@SinRN z7c%ixZspX~?^wXZR~;sTdS+rQWa4Y7Q)%*hyw1)l9cQQFeaUL}d+=9#ZwRKTIaqkb zn5F7XI}|mV^QfLdI)JixlbNa;nBzn;B?~%y`Y$pEXkh5{Xec2%eLDGwmeZ%l(&^KY z*%a?B%X_IBnM0g-k9qONa6BpMZPp#Sm7k&KrTG=>cWV{Ejgq^y#m>Xz6S@&S9@nk# zkTt(+6s}-wmV8nc{hs1QKa@}3YQAHS11b6-s6bpY0)UVae5?76hz)(Ksiue0^ezuG zu@A|KGF?Q8H&;pO@I%e_Wd2GYYBC!FJM}$Lg*-Fxb+mk#`MzXLA7-lQGE#Y;KGIj2 zAK2ilOf_A`DY@B;Kgs-1u>48p82Kb~T>2-Of0dHylT0Q_+Kl!^ek67MT465&U$Eq_ zpz$Y}A4@v=B$Lw#Y2&^JQF3w9Cn93>RVGK^ULIcF^oh(d+)>LvLFsf9{;6b7`yj@7 z-)8b;{xjA^x{aZ)`5@TAWK0m=WCn;}YVeulRBJN!nN+Wi$=E)}U_(xU!REnTL(<)N zDCkss(%pH;^ndQsk6sqgF9?r*AOiY7cjyN^5Sh;%`T=()4qrI*0~65i!CiyXrC-pg zc4sa6_lwU)_>Vy?pkELk{Xhit?{|DQfCu#NmwJgaEoCzQr9(eb1oV4wrXO%Jm|gk> z?a>cB+08EfG7Y*`k?(Z&2)*!?`sj# zi+G9zbs7k%AUq)jA`sHA9U%og5Yn$5Ar160fAafJhh$)a2KV4hGT`Y#Drk>#;M0Ya zmBcqPTFz%B_p0+PwjezEfe7gT#_@ju9?<`dLqFh-!2ZjjADDoC56<)ho=(4@J^F#K zlm2gQ4q8JC{r__47lcPY5CQ$)%AALlG~faK-#YXI?$H08Lq9M9{T`g@2RxmAL3{KA zpH9CB_RWfjPd@Dkc9jVBGofHtvtU0P3ibvT?B`s;KHyOKszap*ce%`hE$~$KvS15c zx6tg&CSP~x+9-6r5z=)l)AeRZ*KJJKUtGGrcj$7Z*Mqy#%XA4mRcsx)HVMDpa_FiN zy50`yx}E8IC#35Rrt4jou78W?niq%NR`uX+t1?{zPi;=7i;ueb!Qx98IaZ#o{9L2d zm>(I0iw)$w&1jYDUU1U zaiu&~$>SlR<0^SuEsv|^u|^(i<#A06A5vT!BaNUY(kbo9uXJ!S`*kq`xTaGZo!brs zD&O&Ww;gbMt^@saXevIPsE94$4F3`RDykQG2ReVP@mbL#KGAuV`c~t3=S%n)=Q1@1 zQLO?Z*d<>}^&^}*YElvPP@YP6)f*-M2QRmIAXp_=%0 z^q*0^+^f-dRHNlwBietoJ&B9_RvNm=Pd?ibimwVN#>#H^*-kCO`G%hj0pW=3-Iz#s zirhk^P!V!}$VMg_S9yT6TVwQ86TgZ6E2`Ieq#YpA)_TWhf3J_Wc%hpQ13Iq_>AX$o zyuMC4Z>yWmP4&=OgIW&jK&wLHl~9 z9o4(ji+>>ceN=A<;vZ}ALf3L&MtN7PIdkCO(S`U@CwhhYH%V7sl`JWna)tUq z52qJ8*y_@|(cX81vazIu_<|7hNf14j@_agW4d?kI<=FvwUQhQ6ci=p)P&XK4(}A;L zAICGXmWZu8M(HrvlF+^OjBtY`Y5i%b8vW<4w8f8xft&Tq3!*I5BwV* z9R3Xg2R z)=l`{`UroqZo)lqJ%kIkUc%>-ygwhvyIxx&;yzvm!k1(~csT~)f5jURev1Aa)tw>y zHO?K->Oe8->zFOJ#am8DcE}Dk~`Ep^$;%b+JwJTH{tKpNBFyS z6YhcQAzZNa63!j!tw7$>JJfs9q27;0u2CO&gV?Xp-=ex#l#V1>u0HgDzeoRw>V6Eo zRz*fz-9O5AvoBYFjUB>$=Fe!v>Qatzg}T{{p%)t5u25BGtp75*1p87ylCgYjw0W}H zOaUOd!JLi<8%rMvcY0;RKRSUo^I^gMPrB1A);qgl@)q+0UXmMO^eOme#x}r1zWex? z4M9X2hA#kvecB$B_Gzo}qILNzkx%^CeNapg+kt)3i>OmAkR z>(tR0(ATLQVAC`TPA}4`f?uZ>XT&Q!^gD!Zg+-$Zby|0d|2G0qutHU0eV~E?>%8#w zfUHyW+vFsqIYBiXT%p>)B)T41p9#o1buiwhQE=K5VEa1t27)~}a+B9oj~rlUG})`x zsj(D~kn1>Mg?a1Shq~JOwIsVS!wFIVMg?bYWyiRQ-0Noc| zp|(&^p!7TaSsP!+`P{&HuJeB1q-eW2G5y|%I?#Pv6{@6HP{9^oRjA)6-i{W8xsJ>3 z0#kpT%6<@F3AUx+Pl&Nj(Qk!%0x>F7UjkDQq%(jr(YsV!9rcL1Nww-fgT84jI2qBN zQi*d4&PL!#m6*O>*?8jkN*umJGMpHXTT&lamjjuY7QI>7XktR8+O3*`%ETn#o=~?E z?nLAjGB6q`pa@T^gD$R8(5buS|2aHptJ&#J^%ngQB~O7$EQ(B?Z7vWI!o=Er!YdR~G*HLX-HNbu)GrP?dOU)ooy7bW;>mrC`L1b^#U zNk<}}Hf?_IU#VV^;2%S))vFSWsFG^+nuIa+tX8i}SgT3Z>J4=iKC@~QRVP=gzo=0Z zj;XV%)muVdT+OOhZ%eqLnp>^jQR692W3`}Ky{D#8xVb8;#w~8AQaD?cSF69OGb!9c zEv?3dX>%x?P%Em{Cn`zde6^-peWu9VZ*#D^p<3;ea96dVT753zZt9L|^@W7HtNW_e zenp>ywJB2DtMS<_vARtUwYwT$-L4^cFZDDyU5ela^(KUk*j=z4CA_P0m+JRbhSndd zmNhQ`hX}(uo?DGZMiZ`T?+^PCQi$*hnX?t(Cm7PW;IY5GJouO>|-ke{CgwC1{|W zFF_b&>z{a3sPFMR?PvUKP)&7}YNit%gnW;P<~ngpYI!U;ATL`d?o1`m$F$Ii8|q3^ zrE-v)!<|cZrO9DA02SO1t5i#!Fd-?zlq%IqC!SH;C>@K|4um2)p`-DQ>Tym?1y`xo zI`N`crcMlvS9y-|6#o;sZrGDIHa#+Umq}%w6sX zoFBb{igr42m2^oGcmUe#M2P@`mJ+5_seGLnnNF6MO$VJAD=6kFC-qPTIx)dPvAB7t zjyiE-D4(RE3U%Ug7gD1->BJXdo?g%HtP_nS&wxlYcNd-bSFNZA>qH_wYL)7$6Gu8w zm#A(!@v@rpsLRHP?yjRvtJEQ&MO~YM66WKGAseq!J#^x0^*~+to;o95a4J~dOSkP< z@B*R~>$ZiuHw?uBlF&Z7Z6_XB`s%h_IATBDb_zod)ooAYK!4qK8V3gGw$nMzVY=-R zoY_F#b{OX~NVh$b;|$hqkLJMPy6rL!4AE`p7aW5|9;(~+ESLsbj?is;v2`*`w=FIp z$-(huhjN^wblWo-azyXS^WyL*pP>s4l-~?p7!#|2azlqXQx|4PhsoUyK!xgn$6cyQouvyKI*1x|w(fio zYb9p+-H39IE^H&Zgh4gxT-~Jw4OlreKad~lsWJ{7;|)COY;)t=tAe}!q>yn5pA9>oGu)rjC@sgkuE&j8F>Or1qtTs!c!zc zsu6=L&KKyy-!xMg)-8wmvPCV_g@s;KZdHqP;YG}uDs{0g{8$KL&N4ghQJ3h#1uBQE z1PJ$~y6`q`875;NO|LepPe5&rTC58n=IR9~;Z}`G>cU;D?9(t+s!SKYC@t@?Ziy~D zPb$j;zN`MrA%s#{<~6I=g0r8bE7%GbvPjM&ktCg0IG;t5gA3xg6aF$?c!*cyDs{Oo z%rdMR=?83FrVDe;$;c_kg)Y~H9YuqBBDX>pzQz&Ks!^j>>cY1kAYEDubA>M4%mZhD z0jI9ih4;=$i7peVt8`w^f`L!rSPGpttKcXER_m^9?@;%sH9GGwlQRwwben_ms8MTm z-q+ks8Cs>T(RqV}Js#j%op-ncs8QGHyzkr;>vUeWFrQO&tkBo%yiStjDU^}(Je9Xm z5q6_`1-})lH-4+s4LWb8NIbU^XG$p|9dFb(>AW_aM3_PKMvC=1?{w*ZoHIdb46W38 zgM|c_u$y(>R)I3tIOi%=rSqQA+{e#(+Up%6+Kk`Gg4?lLZ_s&d)5_2Ba=1n3-B||_ z8^Ott57I@6oJhx8^=&$@OUT5Wzo2Ar;e9-&2`e^%sjT~?b*fa2&f6KQ5>Q0@vSeQ$4j;?%{&Kre;=tY&>t@F;2I`}-?jCM}vVU60N zyNza^a!sn#Jv#4UiRDT2y*lrHj^MrDr}MT2?^4=5YOBusQTsK!U+3NH7JZL;K6cie>G}{&U=kJ zK69l??bLaXrB}O3?b3O3obp+Ic!p7<9?{)8as@+Rm3ma?T`chfdi;6HV>++gL9yid z^ggch#Csr>cXQmW^FDH_;!SU!(0R-1%FHk9NuBqZlPb)xV8nB9$>{DoE7VworcK08 z0afEEo!f=Ym1lJKJ~irD-Ce8>wvB7lbGo}&3Eul2-F+k1-g|#ucNeR`dw)T9zc;|= zoP<)q^S!#emF$@i?=S1_Vmf&7U(wyKa`CU~?$@~Quj%gByYH{- z?v?KQ8@l_4lvNJ@3=^W>)ZL#9fFR;8y8AQk`&+vEdlXeqfhHcy6Djs&rD@5l)F-+K&M2~g!t_<@Q(bfed&OiZu2P@r zqAS8^D0ZJNT9KNWU+2$t(bcJC`g6lpAI*wWv~G>Y@{b3b(?4(?u0b zZ~*l4|GO^Q&-rszhz4kuf9Rrql8IZvuP~i)pkCasbN^#U<|h&${?@_x%@L{Gj{(t1jN|zW=6+cLnc$p}*_mGeh7ddqI8$>ysMw zhb}%RL@|eI)StTe`~V0dBc^zk`>ss!oZvm@MahooUGbl+p9_(=CX!xWDU-wP-hH+}O8$acy!eRJXIF~yU@7;y67oh>W+L5U6V&PEme z;JuM4p5n%DjCVJF6TG|eo0{Si-T2M$?#6G9cQ<~vDZbN<-vaM${2aWy@mreW4}`x{4uD)!98F1*M*ufTTLOeh zYE(N@d{sasNNJDvFhPyV$GaQ9gDEa^;}_uFjo%UPVSM;ZO!3r^B;i7p>O{~WnXsWs zbtY(#*ylqRQ#>;*2S1yG36+|SpI28xrRL>l*v%AAPsrT+ryZ}9fpsCpaT4ah( zshvX)g4W8RCqdJ4s8PL4@y39SzHIacFfDzJDh4nud6nv8ihGOk;K@ec06-al#C`#Q z5(99kDYhZa0Q4t7P#gdQ2oMwnz+t9%tjveJQU(S9uarRnz$<02DLx@3$>9OOOEM$? zaFQA|)D$lbSOEz<0`DPNHEI~%L#k@jk*0W!8~-T0yYY|4yBq%)Q@qTLe=OeJ_$7D` z<5#KSrg*eC9=uwY1^}-LBLVDJ92Wq*B%=ZVC#g}RP4PaaiifHiH3siY zmG?dt?@SfHS7EB1D~GA3xT}+c$I%lB8sW} zQnT?04_BBp5yl;>AgbzjHzXfT4eg|X6R&rQW!2P)6a^fM+-0j zTw?mg1+YZoEyrUTMTYar^!tYL%wZHfR;J$p_dRL)y%buc9O8)>FY#AB3(}* zBB103KNQ)f`hs6$Z!`_Q+X8lty$OK_h;Q4}8^p-~FRPqo=#22@kOmf0SK$enhJIn492ai2eGqv?FBxy=l0nzIw> zhetZ!Z8n>M&HT5I%*SS66aOs{Z5PGumTM6cxNMp6`Wbnzg$ZzhU&aPn3#WkQu{4krd&A23T&M zLLF>}${MXtp)6<7(dv`X+z~x8fsZSLQ`H$J``)K}n@lO{WR5y|yc?BasZn#^jYOt2 zq+G|-HE*5qijO3BFRt!|P-Ol@Ta6U>qm9jwm$WFD% z3^MG(Dya!Vw^L{k(N>{`;juy8Vc-)qgFM$8v5zP7IUMPBb(b03n?}GsTg*M?@WG+S zf%R7yokO%y1rl{THYQgib6>0hY6KANO$&rC3uNsTCwr9GA746r>VSwj5oXRx1tnpkMMBwBXgNA2&}UJ} z4ijt0+O1?~5JK99tk#h6^Js{HZh|LGY>45yY*iyO&_^63wu!w1X75susAtV{Mqfo+ z9LMfKfI9rx=MkXI`eV^sucB*c#=l_n4b*nyaaF+8@U%|HwJt@`eMsKB$1Rho6(V5o|0}MeNKwC{I@%Na@j<$&E`}yX$k{k+ARwXFq ze)Sf<1X-zCM)iZL;4@0OQniZe9qcDU+6qNkSMX(W1p|=vYvzda*;;tj8C_FV)%0guO4AVB(O?0X1MsmP1S+N$1$*ewIb7dvXBBJF9_x1d$& zi~FEqfUL~mu>~Bj%o8xMyc;#~FNfCda_&WuqD{O-6k=qR zs?!~xzT~u1{lgTtT%w!iL(#32vfY- zBk^I^tNIwCW+KkWoI8m=^qO-je&@_P55Igp;;WkP3%Y|o1DZfec{ZJ=FHpH2aYEWD z0k3NQ$_l3hs0n(dbZX^@c|GN%_W$Kb3k@O2;=|h%BETTW|)m(mGTT4S6H z>e6^`OZ4e#IWh?vPoOE$m#TO4T9mg+UDVa;)75RCfOAx*cco6}t5!js!q30nt-DU| zId$?r|KcjWFIAeUnz>c_pw21@G=)ak2@S!R5A~wnZ{wx{%>wsPAaHCod39?7jsyRz7jd{ zu9sg;?xi)jJo2cS#IGEJLtEa3$53mdJ&)>Dseb3L1CJ_(*7-w%eV}#zG!*x!zR)_6 z=${nq*P>GCDCxAL4#i$xBf()hB{rn?WZW2Ny>=kF4?M{ zfUMCK_O6=kq*={wRdm%PT`C_Sp`g3QohLO`}JiLZfjG-3S-y(=6INdgLXfKt#K_1DrxxbR#UC*y<88LVJW@ zfQn3Vk*LH&JRl(D-$2ql7YR0v@hyiM9CCV%gGBs?5Py>g;ws?sEz`}AM*ArGaa2F& zX|x+uk;RLA`EVoM?)sei9y0=bg`{xr>vOE^R;l%>m(?$DnpNs%)!XX5Yy`~ijp2QV zp;Mm$DL_ve3_!9{9fJp3{X6(h*Z3z>+&(YB)c#bazJ&49TfeLtC$Zlb;bgV?6AwC) z>(xs$F=X%+HaiWO3wj%_|G*7Rmxec-?381N`4~F;2$+-uq(~z_Vp=0l z?+P14NK?v>$bG1MbPKSqUOpYEAC-II>FAad{i9pxtlr1uM&xa(F+M!?4(dhn@Sxtu zO*5&AM_2H%o*?)W9VR&VTJLd#rjE!#o5(8oT<>wIA)hS*xHpxW@m?gdJGh0Ia|%A# z^WgYQhvDg8>RO#dorbR-5oqiLoQkVX5(bs26~G>Zh)XBcKg~?jPbmzwCs8*7oaUv^NY1aSNv<>tG)0=rl<6CZ^w;~;*~z<9V}uve z;b#NlUk*raR^(Gk-mSjFgAe$AR$5PvK11_`lKY&GsY`PEz%jE&M01bo?2p)GiavHd zj7~#K-lxdXliaHKHkB>mbq53KsKNW?x`PK4-==a;c-_GuI%#m5TzBxG;@ed2mFo^3 zk}qKCjPB=|G&xfcG?SMI7RdK_L}t-RO)m)khgNsptY7j&ns^Rr|RKx2+Y8|TKje1mr2d_^x2)cgN!1TXaAN_);gZ?+`q5sW# z>HkYT^n397=ofVT^e_9C);pWhaH4yF&x{JWu1J_L|mOpBJ_?XPA&#r!CUxe0pmS;Hpg$A(=} zuLlX}%Gys1A7k;U;qx#)6QVJT{14ms?o|gx+eD8%nJkt*xzW7nkrUWpArkbR?~QlLv-9+V96lb{bGB;Ln0yMb`f&x?nNUrgmTM~+&V

8@AZN82ze>HU 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 diff --git a/tests/testthat/setup_test-datetime.R b/tests/testthat/setup_test-datetime.R index c03c596..0ea699e 100644 --- a/tests/testthat/setup_test-datetime.R +++ b/tests/testthat/setup_test-datetime.R @@ -1,181 +1,180 @@ -######################## -# Define a few test helper functions -######################## - -clrDateEquals <- function(d, isoDateTimeStr, tzIdClr) { clrCallStatic(cTypename, "UtcDateEquals", d, isoDateTimeStr, tzIdClr) } -createDotNetDate <- function(...) { clrCallStatic(cTypename, "CreateDate", ...) } -createUtcDate <- function(isoDateTimeStr, tzIdClr) { clrCallStatic(cTypename, "UtcDateForTimeZone", isoDateTimeStr, tzIdClr) } -# convertClrTime <- function(isoDateTimeStr, tzIdClr_from, tzIdClr_to ) { clrCallStatic(cTypename, "ConvertTime", isoDateTimeStr, tzIdClr_from, tzIdClr_to) } - - -# ?Sys.timezone, See the examples -tzIdR_AUest = "Australia/Sydney" - -# IronPython: tz = [x for x in TimeZoneInfo.GetSystemTimeZones()] -tzId_AUest <- -ifelse( tolower(Sys.info()['sysname'])== 'windows', - ifelse(clrGetNativeLibName()=='rSharpUX', - # As of Mono 3.8.0, and probably earlier releases including 3.4.0, the time zone names have changed. Not Olson DB anymore. Not MS.NET either. *Sigh* - 'E. Australia Standard Time', - # I think even on Linux Mono does not use the Olson DB names. If still, use something like the following line - # 'E. Australia Standard Time', tzIdR_AUest), - "AUS Eastern Standard Time") # TODO: is 'Australia/Sydney' also OK for MS.NET? - , -tzIdR_AUest # on Linux, use the Olson DB. -) -# Help with unit test labels -pctToString <- function(d) { paste(paste(as.character(d), attr(d, 'tzone')), collapse=';') } - -# Creates a POSIXct in the time zone of Canberra -AUest <- function(dateStr) { - as.POSIXct(dateStr, tz=tzIdR_AUest) -} - -pctToUtc <- function(dtPosixct) { - stopifnot("POSIXct" %in% class(dtPosixct)) - result <- dtPosixct - attr(result, 'tzone') <- 'UTC' - result -} - -# Given a date ISO 8601 string formatted, check that the marshalling is as expected. -# Equality tests are done in the CLR, not in R, for this function, so this function tests the R POSIXt to CLR conversion -testRtoClr <- function(dateStr, pfun=as.POSIXct, tzIdR=tzIdR_AUest, tzId=tzId_AUest) { - - #### First, a whole day. Test that Date object, then POSIXt objects are converted to the right .NET value - # Date objects: from R to .NET: - rdate <- as.Date(dateStr) - dayComponent <- format(rdate, '%Y-%m-%d') - # when converting an R Date to a POSIXct it becomes encoded as the date plus 00:00:00 UTC. - # Let's check this is the equivalent seen from the CLR - expect_true( clrDateEquals(rdate, dayComponent, tzIdClr='UTC'), label=paste('R Date',rdate,'becomes UTC DateTime',dayComponent)); - - # if an R POSIXct date is created for a timezone, it is equal to a DateTime time zone - dr <- pfun(dateStr, tz=tzIdR) - expect_true( clrDateEquals( dr, dateStr, tzIdClr=tzId ), label=paste('R POSIXct',pctToString(dr),'becomes',tzId,'DateTime',dateStr)); -} - -expect_posixct_equal <- function(actual, expected, mAct='Actual', mExp='Expected') { - expect_equal(actual, expected, label=paste(mAct,':', pctToString(actual)), expected.label=paste(mExp,':', pctToString(expected))) -} - -testDotNetToR <- function(testDateStr) { - d <- createUtcDate(testDateStr, tzId_AUest) - dr <- pctToUtc(as.POSIXct(testDateStr, tz=tzIdR_AUest)) - expect_posixct_equal(d, dr, mAct='From CLR', mExp='Expected') - - # The following was the initial intent; however this will take some time to get there, if feasible. - # clrDate <- createDotNetDate( testDateStr) - # expect_that( clrDate, equals(as.POSIXct(testDateStr)) ); - # clrDate <- createDotNetDate( testDateStr, 'Local') - # expect_that( clrDate, equals(as.POSIXct(testDateStr)) ); - # clrDate <- createDotNetDate( testDateStr, 'Utc') - # expect_that( clrDate, equals(as.POSIXct(testDateStr, tz='UTC')) ); -} - -testDotNetToRUTC <- function(testDateStr) { - d <- createUtcDate(testDateStr, 'UTC') - dr <- pctToUtc(as.POSIXct(testDateStr, tz='UTC')) - expect_posixct_equal(d, dr, mAct='From CLR', mExp='Expected') -} - -testPosixToDotNet <- function(dateStr) { - testRtoClr(dateStr, pfun=as.POSIXct) - # demand POSIXct UTC dates only - expect_error(testRtoClr(dateStr, pfun=as.POSIXlt)) -} - -testBothDirections <- function(dateStr) { - testPosixToDotNet(dateStr) - testDotNetToR(dateStr) -} - -# All times in pseudo code for Time zone "Australia/Sydney" in R , identifier "AUS Eastern Standard Time" in .NET TimeZoneInfo (name "Canberra, Melbourne, Sydney") -# change from no DST to DST: -# bidirectional '2013-10-06 01:59' proper conversion then true for every minute for over 62 minutes. -# bidirectional '2013-04-07 01:59' proper conversion then true for every minute for over 62 minutes. -# In the CLR and R respectively, what is: '2013-10-06 03:01' - '2013-10-06 01:59'. In .NET, what is the result for a DateTime that is Local - -# Define dates of interest, to iterate over and test - -post1971_DateStr <- c('2001-01-01', - '2001-01-01 23:22:21', - # Testing proper function around a daylight saving time - # http://www.timeanddate.com/worldclock/clockchange.html?n=57 - # Daylight savings time changes in Australia for 2013 - - # Sunday, 7 April 2013 2:59:57 AM +1h UTC+11h AEDT - # 2:59:58 AM +1h UTC+11h AEDT - # 2:59:59 AM +1h UTC+11h AEDT - # 3:00:00 AM ? 2:00:00 AM No UTC+10h AEST - # 2:00:01 AM No UTC+10h AEST - # 2:00:02 AM No UTC+10h AEST - - # Sunday, 6 October 2013 1:59:57 AM No UTC+10h AEST - # 1:59:58 AM No UTC+10h AEST - # 1:59:59 AM No UTC+10h AEST - # 2:00:00 AM ? 3:00:00 AM +1h UTC+11h AEDT - # 3:00:01 AM +1h UTC+11h AEDT - # 3:00:02 AM +1h UTC+11h AEDT - '2013-10-06 01:59', # DST starts in Canberra - '2013-10-06 03:01', - '2013-04-07 01:59', # DST ends in Canberra. See also notes below for peculiarities over the twice run over 02:00 to 03:00 - '2013-04-07 02:33', - '2013-04-07 03:00', - # Around one of the leap seconds (that is, when the UTC/GMT is tested - '1994-06-30 23:00:00', - '1994-06-30 23:59:59', - '1994-07-01 00:00:00', - '1994-07-01 00:00:01', - '1994-07-01 01:00:00', - '3000-01-01' -) - -# The origin of the POSIXct structure, '1970-01-01 00:00', 'UTC' is zero -posixct_orig_str <- '1970-01-01 00:00:00' - -pre1971_DateStr <- c( - # Around the origin for POSIXct - '1970-01-01 10:00', - posixct_orig_str, - '1970-01-01 01:00:00', - '1969-12-31 23:00:00', - # Further ago/ahead - # First we do want to test around the date of the origin of the VT_DATE thing in the COM world; see - # http://blogs.msdn.com/b/ericlippert/archive/2003/09/16/eric-s-complete-guide-to-vt-date.aspx - # Scary, huh? - '1899-12-29', - '1899-12-29 23:59:59', - '1899-12-30', - '1899-12-30 00:00:01', - '1899-12-31', - '1789-07-14', - '0200-01-01' -) - -problem_DateStr <- c( - '0020-01-01', # MS CLR hosting method invokation fails if such a DateTime is returned. - '0001-01-01' # MS CLR hosting in C shows an OLEAUT VT_DATE of numeric value 0.0. Supposed to be for 1899-12-30 - ) - -testDatesStr <- c(post1971_DateStr, pre1971_DateStr) - -testSameInteger <- function(datestr) { - expect_equal( as.integer(createUtcDate(datestr, 'UTC')), as.integer((as.POSIXct(datestr, tz='UTC')))) -} - -# See issue #45; I do not think this could be passing but by chance -testRtoClrAestTz <- function(dateStr) { - testRtoClr(dateStr, pfun=as.POSIXct, tzIdR=tzIdR_AUest, tzId=tzId_AUest) -} - -testRtoClrNoTz <- function(dateStr) { - testRtoClr(dateStr, pfun=as.POSIXct, tzIdR="", tzId="") -} - -testRtoClrUtc <- function(dateStr) { - testRtoClr(dateStr, pfun=as.POSIXct, tzIdR='Utc', tzId='UTC') -} - - -# testDotNetToR('2013-04-07 02:32') +######################## +# Define a few test helper functions +######################## + +clrDateEquals <- function(d, isoDateTimeStr, tzIdClr) { clrCallStatic(cTypename, "UtcDateEquals", d, isoDateTimeStr, tzIdClr) } +createDotNetDate <- function(...) { clrCallStatic(cTypename, "CreateDate", ...) } +createUtcDate <- function(isoDateTimeStr, tzIdClr) { clrCallStatic(cTypename, "UtcDateForTimeZone", isoDateTimeStr, tzIdClr) } +# convertClrTime <- function(isoDateTimeStr, tzIdClr_from, tzIdClr_to ) { clrCallStatic(cTypename, "ConvertTime", isoDateTimeStr, tzIdClr_from, tzIdClr_to) } + + +# ?Sys.timezone, See the examples +tzIdR_AUest = "Australia/Sydney" + +# IronPython: tz = [x for x in TimeZoneInfo.GetSystemTimeZones()] +tzId_AUest <- +ifelse( tolower(Sys.info()['sysname'])== 'windows', + ifelse(clrGetNativeLibName()=='rSharpUX', + # As of Mono 3.8.0, and probably earlier releases including 3.4.0, the time zone names have changed. Not Olson DB anymore. Not MS.NET either. *Sigh* + 'E. Australia Standard Time', + # I think even on Linux Mono does not use the Olson DB names. If still, use something like the following line + # 'E. Australia Standard Time', tzIdR_AUest), + "AUS Eastern Standard Time") # TODO: is 'Australia/Sydney' also OK for MS.NET? + , +tzIdR_AUest # on Linux, use the Olson DB. +) +# Help with unit test labels +pctToString <- function(d) { paste(paste(as.character(d), attr(d, 'tzone')), collapse=';') } + +# Creates a POSIXct in the time zone of Canberra +AUest <- function(dateStr) { + as.POSIXct(dateStr, tz=tzIdR_AUest) +} + +pctToUtc <- function(dtPosixct) { + stopifnot("POSIXct" %in% class(dtPosixct)) + result <- dtPosixct + attr(result, 'tzone') <- 'UTC' + result +} + +# Given a date ISO 8601 string formatted, check that the marshalling is as expected. +# Equality tests are done in the CLR, not in R, for this function, so this function tests the R POSIXt to CLR conversion +testRtoClr <- function(dateStr, pfun=as.POSIXct, tzIdR=tzIdR_AUest, tzId=tzId_AUest) { + + #### First, a whole day. Test that Date object, then POSIXt objects are converted to the right .NET value + # Date objects: from R to .NET: + rdate <- as.Date(dateStr) + dayComponent <- format(rdate, '%Y-%m-%d') + # when converting an R Date to a POSIXct it becomes encoded as the date plus 00:00:00 UTC. + # Let's check this is the equivalent seen from the CLR + expect_true( clrDateEquals(rdate, dayComponent, tzIdClr='UTC'), label=paste('R Date',rdate,'becomes UTC DateTime',dayComponent)); + + # if an R POSIXct date is created for a timezone, it is equal to a DateTime time zone + dr <- pfun(dateStr, tz=tzIdR) + expect_true( clrDateEquals( dr, dateStr, tzIdClr=tzId ), label=paste('R POSIXct',pctToString(dr),'becomes',tzId,'DateTime',dateStr)); +} + +expect_posixct_equal <- function(actual, expected, mAct='Actual', mExp='Expected') { + expect_equal(actual, expected, label=paste(mAct,':', pctToString(actual)), expected.label=paste(mExp,':', pctToString(expected))) +} + +testDotNetToR <- function(testDateStr) { + d <- createUtcDate(testDateStr, tzId_AUest) + dr <- pctToUtc(as.POSIXct(testDateStr, tz=tzIdR_AUest)) + expect_posixct_equal(d, dr, mAct='From CLR', mExp='Expected') + + # The following was the initial intent; however this will take some time to get there, if feasible. + # clrDate <- createDotNetDate( testDateStr) + # expect_that( clrDate, equals(as.POSIXct(testDateStr)) ); + # clrDate <- createDotNetDate( testDateStr, 'Local') + # expect_that( clrDate, equals(as.POSIXct(testDateStr)) ); + # clrDate <- createDotNetDate( testDateStr, 'Utc') + # expect_that( clrDate, equals(as.POSIXct(testDateStr, tz='UTC')) ); +} + +testDotNetToRUTC <- function(testDateStr) { + d <- createUtcDate(testDateStr, 'UTC') + dr <- pctToUtc(as.POSIXct(testDateStr, tz='UTC')) + expect_posixct_equal(d, dr, mAct='From CLR', mExp='Expected') +} + +testPosixToDotNet <- function(dateStr) { + testRtoClr(dateStr, pfun=as.POSIXct) + # demand POSIXct UTC dates only + expect_error(testRtoClr(dateStr, pfun=as.POSIXlt)) +} + +testBothDirections <- function(dateStr) { + testPosixToDotNet(dateStr) + testDotNetToR(dateStr) +} + +# All times in pseudo code for Time zone "Australia/Sydney" in R , identifier "AUS Eastern Standard Time" in .NET TimeZoneInfo (name "Canberra, Melbourne, Sydney") +# change from no DST to DST: +# bidirectional '2013-10-06 01:59' proper conversion then true for every minute for over 62 minutes. +# bidirectional '2013-04-07 01:59' proper conversion then true for every minute for over 62 minutes. +# In the CLR and R respectively, what is: '2013-10-06 03:01' - '2013-10-06 01:59'. In .NET, what is the result for a DateTime that is Local + +# Define dates of interest, to iterate over and test + +post1971_DateStr <- c('2001-01-01', + '2001-01-01 23:22:21', + # Testing proper function around a daylight saving time + # http://www.timeanddate.com/worldclock/clockchange.html?n=57 + # Daylight savings time changes in Australia for 2013 + + # Sunday, 7 April 2013 2:59:57 AM +1h UTC+11h AEDT + # 2:59:58 AM +1h UTC+11h AEDT + # 2:59:59 AM +1h UTC+11h AEDT + # 3:00:00 AM ? 2:00:00 AM No UTC+10h AEST + # 2:00:01 AM No UTC+10h AEST + # 2:00:02 AM No UTC+10h AEST + + # Sunday, 6 October 2013 1:59:57 AM No UTC+10h AEST + # 1:59:58 AM No UTC+10h AEST + # 1:59:59 AM No UTC+10h AEST + # 2:00:00 AM ? 3:00:00 AM +1h UTC+11h AEDT + # 3:00:01 AM +1h UTC+11h AEDT + # 3:00:02 AM +1h UTC+11h AEDT + '2013-10-06 01:59', # DST starts in Canberra + '2013-10-06 03:01', + '2013-04-07 01:59', # DST ends in Canberra. See also notes below for peculiarities over the twice run over 02:00 to 03:00 + '2013-04-07 03:00', + # Around one of the leap seconds (that is, when the UTC/GMT is tested + '1994-06-30 23:00:00', + '1994-06-30 23:59:59', + '1994-07-01 00:00:00', + '1994-07-01 00:00:01', + '1994-07-01 01:00:00', + '3000-01-01' +) + +# The origin of the POSIXct structure, '1970-01-01 00:00', 'UTC' is zero +posixct_orig_str <- '1970-01-01 00:00:00' + +pre1971_DateStr <- c( + # Around the origin for POSIXct + '1970-01-01 10:00', + posixct_orig_str, + '1970-01-01 01:00:00', + '1969-12-31 23:00:00', + # Further ago/ahead + # First we do want to test around the date of the origin of the VT_DATE thing in the COM world; see + # http://blogs.msdn.com/b/ericlippert/archive/2003/09/16/eric-s-complete-guide-to-vt-date.aspx + # Scary, huh? + '1899-12-29', + '1899-12-29 23:59:59', + '1899-12-30', + '1899-12-30 00:00:01', + '1899-12-31', + '1789-07-14', + '0200-01-01' +) + +problem_DateStr <- c( + '0020-01-01', # MS CLR hosting method invokation fails if such a DateTime is returned. + '0001-01-01' # MS CLR hosting in C shows an OLEAUT VT_DATE of numeric value 0.0. Supposed to be for 1899-12-30 + ) + +testDatesStr <- c(post1971_DateStr, pre1971_DateStr) + +testSameInteger <- function(datestr) { + expect_equal( as.integer(createUtcDate(datestr, 'UTC')), as.integer((as.POSIXct(datestr, tz='UTC')))) +} + +# See issue #45; I do not think this could be passing but by chance +testRtoClrAestTz <- function(dateStr) { + testRtoClr(dateStr, pfun=as.POSIXct, tzIdR=tzIdR_AUest, tzId=tzId_AUest) +} + +testRtoClrNoTz <- function(dateStr) { + testRtoClr(dateStr, pfun=as.POSIXct, tzIdR="", tzId="") +} + +testRtoClrUtc <- function(dateStr) { + testRtoClr(dateStr, pfun=as.POSIXct, tzIdR='Utc', tzId='UTC') +} + + +# testDotNetToR('2013-04-07 02:32') diff --git a/tests/testthat/test-basic.r b/tests/testthat/test-basic.r index 5ed67d5..77e5c82 100644 --- a/tests/testthat/test-basic.r +++ b/tests/testthat/test-basic.r @@ -1,449 +1,449 @@ -# print(paste('current directory is', getwd(), 'and contains files' , paste(list.files( getwd()), collapse=','))) - -# adapting to behavior as of testthat_0.11.0 - -context("rSharp essentials") - -test_that("Booleans are marshalled correctly", { - expect_false( callTestCase( "GetFalse") ) - expect_true( callTestCase( "GetTrue") ) - expect_true( callTestCase( "IsTrue", TRUE) ) - expect_false( callTestCase( "IsTrue", FALSE) ) -}) - -test_that("Object constructors calls work", { - tName <- 'ClrFacade.TestObject' - i1 <- as.integer(23) ; i2 <- as.integer(42) - d1 <- 1.234; d2 <- 2.345; - obj <- clrNew(tName) - obj <- clrNew(tName, i1) - expect_that( clrGet(obj, "FieldIntegerOne"), equals(i1) ) - obj <- clrNew(tName, i1, i2) - expect_that( clrGet(obj, "FieldIntegerOne"), equals(i1) ) - expect_that( clrGet(obj, "FieldIntegerTwo"), equals(i2) ) - obj <- clrNew(tName, d1, d2) - expect_that( clrGet(obj, "FieldDoubleOne"), equals(d1) ) - expect_that( clrGet(obj, "FieldDoubleTwo"), equals(d2) ) -}) - -test_that("Basic types of length one are marshalled correctly", { - expect_true( callTestCase( "DoubleEquals", 123.0 ) ) - expect_that( callTestCase( "CreateDouble"), equals(123.0) ) - expect_true( callTestCase( "IntEquals", as.integer(123) ) ) - expect_that( callTestCase( "CreateInt"), equals(as.integer(123)) ) - expect_true( callTestCase( "StringEquals", 'ab' ) ) - expect_that( callTestCase( "CreateString"), equals('ab') ) -# TODO: test unicode characters: what is happening then -}) - -test_that("Basic types of length zero are marshalled correctly", { - tn <- "ClrFacade.TestArrayMemoryHandling" - - expectEmptyArrayConv <- function(clrType, expectedRObj) { - expectArrayTypeConv( clrType, 0L , expectedRObj ) - } - expectEmptyArrayConv( 'float' , numeric(0) ) - expectEmptyArrayConv( 'double', numeric(0) ) - expectEmptyArrayConv( 'int' , integer(0) ) - expectEmptyArrayConv( 'byte' , raw(0) ) - expectEmptyArrayConv( 'char' , character(0) ) - expectEmptyArrayConv( 'bool' , logical(0) ) - expectEmptyArrayConv( 'string' , character(0) ) - - expect_error( clrCallStatic(tn, 'CreateArray_long', numeric(0) ) ) - expectEmptyArrayConv( 'object' , list() ) - expectEmptyArrayConv( 'Type' , list() ) - - # a <- now() - # str(a) - # str(unclass(a)) - # mode(unclass(a)) - # a <- numeric(0) - # attributes(a) <- list(tzone='') - # str(a) - # class(a) <- c('POSIXct', 'POSIXt') - # a # <== Curious - # str(a) - expectClrArrayElementType( numeric(0) ,'System.Double') - expectClrArrayElementType( integer(0) ,'System.Int32') - expectClrArrayElementType( raw(0) ,'System.Byte') - expectClrArrayElementType( logical(0) ,'System.Boolean') - expectClrArrayElementType( character(0) ,'System.String') - - - aPosixCt <- numeric(0) - attributes(aPosixCt) <- list(tzone='UTC') - class(aPosixCt) <- c('POSIXct', 'POSIXt') - - expect_equal( clrCallStatic(tn, 'CreateArray_DateTime', 0L ), aPosixCt ) - tdiff <- numeric(0) - class(tdiff) <- 'difftime' - attr(tdiff, 'units') <- 'secs' - expect_equal( clrCallStatic(tn, 'CreateArray_TimeSpan', 0L), tdiff ) - - expectClrArrayElementType( aPosixCt ,'System.DateTime') - expectClrArrayElementType( tdiff ,'System.TimeSpan') - -}) - - - -test_that("non-empty arrays of non-basic .NET objects are handled", { - tn <- "ClrFacade.TestArrayMemoryHandling" - tName <- 'ClrFacade.TestObject' - - testListEqual <- function(expectObj, expectedLength, actual) { - expect_equal(expectedLength, length(actual)) - expect_true(is.list(actual)) - expect_true(all(sapply(actual, FUN = function(x) { areClrRefEquals(expectObj, x)}))) - } - - obj <- clrNew(tName) - actual <- clrCallStatic(tn, "CreateArray_object", 3L, obj) - testListEqual(obj, 3L, actual) - - aType <- clrGetType('System.Double') - actual <- clrCallStatic(tn, "CreateArray_Type", 3L, aType) - testListEqual(aType, 3L, actual) -}) - -test_that("String arrays are marshalled correctly", { - ltrs = paste(letters[1:5], letters[2:6], sep='') - expect_true( callTestCase( "StringArrayEquals", ltrs) ) - expect_that( callTestCase( "CreateStringArray"), equals(ltrs) ) - - ltrs[3] = NA - # expect_that( callTestCase( "CreateStringArrayMissingVal"), equals(ltrs) ) - # expect_that(callTestCase( "StringArrayMissingValuesEquals", ltrs), is_true() ) - -}) - -test_that("clrGetType function", { - testObj <- clrNew(testClassName) - expect_equal( testClassName,clrGet(clrGetType(testClassName), 'FullName')) - expect_equal( testClassName,clrGet(clrGetType(testObj), 'FullName')) - -}) - - -test_that("Numeric arrays are marshalled correctly", { - expectedNumArray <- 1:5 * 1.1 - expect_that( callTestCase( "CreateNumArray"), equals(expectedNumArray) ) - ## Internally somewhere, some noise is added probably in a float to double conversion. - ## Expected, but 5e-8 is more difference than I'd have guessed. Some watch point. - # expect_that( callTestCase( "CreateFloatArray"), equals(expectedNumArray) ) - expect_equal( callTestCase( "CreateFloatArray"), expected = expectedNumArray, tolerance = 5e-8, scale = 2) - expect_true( callTestCase( "NumArrayEquals", expectedNumArray ) ) - - numDays = 5 - expect_equal( callTestCase( "CreateIntArray", as.integer(numDays)), expected = 0:(numDays-1)) - - expectedNumArray[3] = NA - expect_that( callTestCase( "CreateNumArrayMissingVal"), equals(expectedNumArray) ) - expect_true( callTestCase( "NumArrayMissingValuesEquals", expectedNumArray ) ) - -}) - -test_that("Complex numbers are converted", { - z = 1+2i - expect_equal(callTestCase( "CreateComplex", 1, 2), z) - expect_true(callTestCase( "ComplexEquals", z, 1, 2 )) - z = c(1+2i, 3+4i, 3.3+4.4i) - expect_equal(callTestCase( "CreateComplex", c(1,3,3.3), c(2,4,4.4)), z) - expect_true(callTestCase( "ComplexEquals", z, c(1,3,3.3), c(2,4,4.4))) - - -}) - -# TODO: test that passing an S4 object that is not a clr object converts to a null reference in the CLR - -test_that("Methods with variable number of parameters with c# 'params' keyword", { - testObj <- clrNew(testClassName) - actual <- clrCall(testObj, "TestParams", "Hello, ", "World!", 1L, 2L, 3L, 6L, 5L, 4L) - expected <- "Hello, World!123654" - expect_equal(actual, expected=expected) - actual <- clrCall(testObj, "TestParams", "Hello, ", "World!", as.integer(1:6)) - expected <- "Hello, World!123456" - expect_equal(actual, expected=expected) -}) - -test_that("Correct method binding based on parameter types", { - mkArrayTypeName <- function(typeName) { paste(typeName, '[]', sep='') } - f <- function(...){ clrCallStatic('ClrFacade.TestMethodBinding', 'SomeStaticMethod', ...) } - printIfDifferent <- function( got, expected ) { if(any(got != expected)) {print( paste( "got", got, ", expected", expected))} } - g <- function(values, typeName) { - if(is.list(values)) { # this is what one gets with a concatenation of S4 objects, when we use c(testObj,testObj) with CLR objects - printIfDifferent( f(values[[1]]), typeName) - printIfDifferent( f(values), mkArrayTypeName(typeName)) # This is not yet supported? - printIfDifferent( f(values[[1]], values[[2]]), rep(typeName, 2)) - expect_equal( f(values[[1]]), typeName) - expect_equal( f(values), mkArrayTypeName(typeName)) - expect_equal( f(values[[1]], values[[2]]), rep(typeName, 2)) - } else { - printIfDifferent( f(values[1]), typeName) - printIfDifferent( f(values), mkArrayTypeName(typeName)) - printIfDifferent( f(values[1], values[2]), rep(typeName, 2)) - expect_equal( f(values[1]), typeName) - expect_equal( f(values), mkArrayTypeName(typeName)) - expect_equal( f(values[1], values[2]), rep(typeName, 2)) - } - } - intName <- 'System.Int32' - doubleName <- 'System.Double' - stringName <- 'System.String' - boolName <- 'System.Boolean' - dateTimeName <- 'System.DateTime' - objectName <- 'System.Object' - testObj <- clrNew(testClassName) - - testMethodBinding <- function() { - g(1:3, intName) - g(1.2*1:3, doubleName) - g(letters[1:3], stringName) - g(rep(TRUE,3), boolName) - g(as.Date('2001-01-01') + 1:3, dateTimeName) - g(c(testObj,testObj,testObj), objectName ) - - expect_equal( f(1.0, 'a'), c(doubleName, stringName)) - expect_equal( f(1.0, 'a', 'b'), c(doubleName, stringName, stringName)) - expect_equal( f(1.0, letters[1:2]), c(doubleName, mkArrayTypeName(stringName))) - expect_equal( f(1.0, letters[1:10]), c(doubleName, mkArrayTypeName(stringName))) - - expect_equal( f('a', letters[1:3]), c(stringName, mkArrayTypeName(stringName)) ) - expect_equal( f(letters[1:3], 'a'), c(mkArrayTypeName(stringName), stringName) ) - expect_equal( f(letters[1:3], letters[4:6]), c(mkArrayTypeName(stringName), mkArrayTypeName(stringName)) ) - } - - testMethodBinding() - obj <- clrNew('ClrFacade.TestMethodBinding') - f <- function(...){ clrCall(obj, 'SomeInstanceMethod', ...) } - testMethodBinding() - # Test that methods implemented to comply with an interface are found, even if the method is explicitely implemented. - # We do not want the users to have to figure out which interface type they deal with, at least not for R users. - f <- function(...){ clrCall(obj, 'SomeExplicitlyImplementedMethod', ...) } - testMethodBinding() -}) - -test_that("Numerical bi-dimensional arrays are marshalled correctly", { - numericMat = matrix(as.numeric(1:15), nrow=3, ncol=5, byrow=TRUE) - # A natural marshalling of jagged arrays is debatable. For the time being assuming that they are matrices, due to the concrete use case. - expect_that( callTestCase( "CreateJaggedFloatArray"), equals(numericMat)) - expect_that( callTestCase( "CreateJaggedDoubleArray"), equals(numericMat)) - expect_that( callTestCase( "CreateRectFloatArray"), equals(numericMat)) - expect_that( callTestCase( "CreateRectDoubleArray"), equals(numericMat)) - - # expect_that( callTestCase( "NumericMatrixEquals", numericMat), equals(numericMat)) - -}) - -testSmartDictConversion <- function(){ - # The definition of 'as expected' for these collections is not all that clear, and there may be some RDotNet limitations. - expect_that( callTestCase( "CreateStringDictionary"), equals(list(a='A', b='B'))) - expect_that( callTestCase( "CreateStringDoubleArrayDictionary"), - equals( - list( - a=c(1.0, 2.0, 3.0, 3.5, 4.3, 11), - b=c(1.0, 2.0, 3.0, 3.5, 4.3 ), - c=c(2.2, 3.3, 6.5)) - ) - ) - # d <- callTestCase( "CreateObjectDictionary") - # expect_true -} - - -test_that("CLI dictionaries are marshalled as expected", { - testSmartDictConversion() -}) - -test_that("Conversion of non-bijective types can be turned on/off", { - setConvertAdvancedTypes(FALSE) - expect_true( is(callTestCase( "CreateStringDictionary"), 'cobjRef')) - expect_true( is(callTestCase( "CreateStringDoubleArrayDictionary"), 'cobjRef') ) - setConvertAdvancedTypes(TRUE) - expect_false( is(callTestCase( "CreateStringDictionary"), 'cobjRef')) - expect_false( is(callTestCase( "CreateStringDoubleArrayDictionary"), 'cobjRef') ) - testSmartDictConversion() -}) - -test_that("Basic objects are created correctly", { - testObj = clrNew(testClassName) - expect_that( testObj@clrtype, equals(testClassName)) - rm(testObj) - # Note to self: I originally wrote code to make sure that r_call_static_method kept returning an external pointer, not - # an R object of type clrObjRef already created. I am not sure why this would have been a compulsory behavior. - # Delete if no harm done... -# extptr <-.External("r_call_static_method", cTypename, "CreateTestObject",PACKAGE=clrGetNativeLibName()) -# expect_that(is.null(extptr), is_false()) -# expect_that("externalptr" %in% class(extptr), is_true()) -# expect_that(clrTypeNameExtPtr(extptr), equals(testClassName)) - - testObj <-.External("r_call_static_method", cTypename, "CreateTestObject",PACKAGE=clrGetNativeLibName()) - expect_false(is.null(testObj)) - expect_that( testObj@clrtype, equals(testClassName)) - rm(testObj) - testObj <- callTestCase( "CreateTestObject") - expect_false(is.null(testObj)) - expect_that( testObj@clrtype, equals(testClassName)) - - testObj <- callTestCase( "CreateTestObjectGenericInstance") - expect_false(is.null(testObj)) - - - testObj <- callTestCase( "CreateTestArrayGenericObjects") - testObj <- callTestCase( "CreateTestArrayInterface") - testObj <- callTestCase( "CreateTestArrayGenericInterface") - -}) - -test_that("Creation of SEXP via R.NET", { - aDataFrame <- callTestCase("CreateTestDataFrame") -}) - -test_that("CLR type compatibility checking", { - testObj <- clrNew(testClassName) - expect_true(clrIs(testObj, testClassName)) - expect_true(clrIs(testObj, 'System.Object')) - expect_false(clrIs(testObj, 'System.Double')) - testObj <- clrNew('ClrFacade.TestMethodBinding') - expect_true(clrIs(testObj, 'ClrFacade.ITestMethodBindings')) - expect_true(clrIs(testObj, clrGetType('ClrFacade.ITestMethodBindings'))) - expect_true(clrIs(testObj, clrGetType('ClrFacade.TestMethodBinding'))) - expect_false(clrIs(testObj, clrGetType('System.Reflection.Assembly'))) - expect_error(clrIs(testObj, testObj)) -}) - -test_that("Loaded assemblies discovery", { - expect_true(all(c('ClrFacade', 'System.Private.CoreLib') %in% clrGetLoadedAssemblies())) - d <- clrGetLoadedAssemblies(fullname=TRUE, filenames=TRUE) - expect_true(is.data.frame(d)) -}) - - - -test_that("Object members discovery behaves as expected", { - expect_true('ClrFacade.TestObject' %in% clrGetTypesInAssembly('ClrFacade')) - testObj = clrNew(testClassName) - members = clrReflect(testObj) - - f<- function(obj_or_tname, static=FALSE, getF, getP, getM) { # copy-paste may have been more readable... Anyway. - prefix <- ifelse(static, 'Static', '') - collate <- function(...) {paste(..., sep='')} # surely in stringr, but avoid dependency - p <- function(basefieldname) {collate(prefix, basefieldname)} - - expect_that(getF(obj_or_tname, 'IntegerOne'), equals(p('FieldIntegerOne'))) - expect_that(getP(obj_or_tname, 'IntegerOne'), equals(p('PropertyIntegerOne'))) - - expected_mnames <- paste(c('get_','','set_'), p(c('PropertyIntegerOne', "GetFieldIntegerOne", "PropertyIntegerOne")), sep='') - actual_mnames <- getM(obj_or_tname, 'IntegerOne') - - expect_that( length(actual_mnames), equals(length(expected_mnames))) - expect_true( all( actual_mnames %in% expected_mnames)) - - sig_prefix = ifelse(static, 'Static, ', '') - expect_that(clrGetMemberSignature(obj_or_tname, p('GetFieldIntegerOne')), - equals(collate(sig_prefix, "Method: Int32 ", p("GetFieldIntegerOne")))) - expect_that(clrGetMemberSignature(obj_or_tname, p('GetMethodWithParameters')), - equals(collate(sig_prefix, "Method: Int32 ", p("GetMethodWithParameters, Int32, String")))) - } - f(testObj, static=FALSE, clrGetFields, clrGetProperties, clrGetMethods) - f(testClassName, static=TRUE, clrGetStaticFields, clrGetStaticProperties, clrGetStaticMethods) - # TODO test that methods that are explicit implementations of interfaces are found -}) - -test_that("Object constructor discovery behaves as expected", { - expect_equal( - c("Constructor: .ctor" - , "Constructor: .ctor, Double" - , "Constructor: .ctor, Double, Double" - , "Constructor: .ctor, Int32" - , "Constructor: .ctor, Int32, Int32" - , "Constructor: .ctor, Int32, Int32, Double, Double"), - clrGetConstructors(testClassName) - ) -}) - -test_that("Retrieval of object or class (i.e. static) members values behaves as expected", { - f <- function(obj_or_type, rootMemberName, staticPrefix='') { - fieldName <- paste(staticPrefix, 'Field', rootMemberName, sep='') - propName <- paste(staticPrefix, 'Property', rootMemberName, sep='') - clrSet(obj_or_type, fieldName, as.integer(0)) - expect_that(clrGet(obj_or_type, fieldName), equals(0)) - clrSet(obj_or_type, fieldName, as.integer(2)) - expect_that(clrGet(obj_or_type, fieldName), equals(2)) - clrSet(obj_or_type, propName, as.integer(0)) - expect_that(clrGet(obj_or_type, propName), equals(0)) - clrSet(obj_or_type, propName, as.integer(2)) - expect_that(clrGet(obj_or_type, propName), equals(2)) - } - # first object members - testObj = clrNew(testClassName) - f(testObj, 'IntegerOne', staticPrefix='') - # then test static members - f(testClassName, 'IntegerOne', staticPrefix='Static') -}) - -test_that("enums get/set", { - # very basic support for the time being. Behavior to be defined for cases such as enums with binary operators ([FlagsAttribute]) - eType <- 'ClrFacade.TestEnum' - expect_that(clrGetEnumNames(eType), equals(c('A','B','C'))) -# TODO, but problematic. -# e <- clrCall(cTypename, 'GetTestEnum', 'B') -# expect_false(is.null(e)) -# expect_that(clrCall(e, 'ToString'), equals('B')) -}) - -testGarbageCollection <- function( getObjCountMethodName = 'GetMemTestObjCounter', createTestObjectMethodName = 'CreateMemTestObj') -{ - callGcMethname <- "CallGC" - forceDotNetGc <- function() { callTestCase( callGcMethname) } - checkPlusOne <- function () { expect_that( callTestCase( getObjCountMethodName), equals(counter+1) ) } - - counter = callTestCase( getObjCountMethodName) - expect_that( counter, equals(0) ) # make sure none of these test objects instances are hanging in the CLR - testObj = callTestCase( createTestObjectMethodName) - checkPlusOne() - forceDotNetGc() - # the object should still be in memory. - checkPlusOne() - gc() - # the object should still be in memory, since testObj is in use and thus the underlying clr handle should be pinned too. - checkPlusOne() - rm(testObj) - gc() - forceDotNetGc() - expect_that( callTestCase( getObjCountMethodName), equals(counter) ) - - # Trying to test that issue https://r2clr.codeplex.com/workitem/71 is fixed. - # However the underlying COM type for a Form is a VT_DISPATCH but for out MemTestObject a VT_UNKNOWN. - # Needs more work to reproduce in a unit test; no desire to introduce dependency on System.Windows.Form - # counter = callTestCase( getObjCountMethodName) - # expect_that( counter, equals(0) ) - # testObj = callTestCase( createTestObjectMethodName) - # clrSet( testObj, 'Text', "et nous alimentons nos aimables remords comme les mendiants nourissent leur vermine" ) - # forceDotNetGc() - # checkPlusOne() - # clrSet( testObj, 'Text', "Sur l'oreiller du mal..." ) - # checkPlusOne() - # rm(testObj) ; gc() ; forceDotNetGc() - -} - -test_that("Garbage collection in R and the CLR behaves as expected", { - testGarbageCollection( getObjCountMethodName = 'GetMemTestObjCounter', createTestObjectMethodName = 'CreateMemTestObj') -}) - -test_that("Garbage collection of R.NET objects", { - # Unfortunately cannot test this yet because of http://r2clr.codeplex.com/workitem/30 - # testGarbageCollection( getObjCountMethodName = 'GetMemTestObjCounterRDotnet', createTestObjectMethodName = 'CreateMemTestObjRDotnet') -}) - - -test_that("Assembly loading", { - # following not supported on Mono - # clrLoadAssembly("System.Windows.Presentation, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") - clrLoadAssembly('System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a') - - # The use of partial assembly names is discouraged; nevertheless it is supported - clrLoadAssembly("System.Web.Services") -}) +# print(paste('current directory is', getwd(), 'and contains files' , paste(list.files( getwd()), collapse=','))) + +# adapting to behavior as of testthat_0.11.0 + +context("rSharp essentials") + +test_that("Booleans are marshalled correctly", { + expect_false( callTestCase( "GetFalse") ) + expect_true( callTestCase( "GetTrue") ) + expect_true( callTestCase( "IsTrue", TRUE) ) + expect_false( callTestCase( "IsTrue", FALSE) ) +}) + +test_that("Object constructors calls work", { + tName <- 'ClrFacade.TestObject' + i1 <- as.integer(23) ; i2 <- as.integer(42) + d1 <- 1.234; d2 <- 2.345; + obj <- clrNew(tName) + obj <- clrNew(tName, i1) + expect_that( clrGet(obj, "FieldIntegerOne"), equals(i1) ) + obj <- clrNew(tName, i1, i2) + expect_that( clrGet(obj, "FieldIntegerOne"), equals(i1) ) + expect_that( clrGet(obj, "FieldIntegerTwo"), equals(i2) ) + obj <- clrNew(tName, d1, d2) + expect_that( clrGet(obj, "FieldDoubleOne"), equals(d1) ) + expect_that( clrGet(obj, "FieldDoubleTwo"), equals(d2) ) +}) + +test_that("Basic types of length one are marshalled correctly", { + expect_true( callTestCase( "DoubleEquals", 123.0 ) ) + expect_that( callTestCase( "CreateDouble"), equals(123.0) ) + expect_true( callTestCase( "IntEquals", as.integer(123) ) ) + expect_that( callTestCase( "CreateInt"), equals(as.integer(123)) ) + expect_true( callTestCase( "StringEquals", 'ab' ) ) + expect_that( callTestCase( "CreateString"), equals('ab') ) +# TODO: test unicode characters: what is happening then +}) + +test_that("Basic types of length zero are marshalled correctly", { + tn <- "ClrFacade.TestArrayMemoryHandling" + + expectEmptyArrayConv <- function(clrType, expectedRObj) { + expectArrayTypeConv( clrType, 0L , expectedRObj ) + } + expectEmptyArrayConv( 'float' , numeric(0) ) + expectEmptyArrayConv( 'double', numeric(0) ) + expectEmptyArrayConv( 'int' , integer(0) ) + expectEmptyArrayConv( 'byte' , raw(0) ) + expectEmptyArrayConv( 'char' , character(0) ) + expectEmptyArrayConv( 'bool' , logical(0) ) + expectEmptyArrayConv( 'string' , character(0) ) + + expect_error( clrCallStatic(tn, 'CreateArray_long', numeric(0) ) ) + expectEmptyArrayConv( 'object' , list() ) + expectEmptyArrayConv( 'Type' , list() ) + + # a <- now() + # str(a) + # str(unclass(a)) + # mode(unclass(a)) + # a <- numeric(0) + # attributes(a) <- list(tzone='') + # str(a) + # class(a) <- c('POSIXct', 'POSIXt') + # a # <== Curious + # str(a) + expectClrArrayElementType( numeric(0) ,'System.Double') + expectClrArrayElementType( integer(0) ,'System.Int32') + expectClrArrayElementType( raw(0) ,'System.Byte') + expectClrArrayElementType( logical(0) ,'System.Boolean') + expectClrArrayElementType( character(0) ,'System.String') + + + aPosixCt <- numeric(0) + attributes(aPosixCt) <- list(tzone='UTC') + class(aPosixCt) <- c('POSIXct', 'POSIXt') + + expect_equal( clrCallStatic(tn, 'CreateArray_DateTime', 0L ), aPosixCt ) + tdiff <- numeric(0) + class(tdiff) <- 'difftime' + attr(tdiff, 'units') <- 'secs' + expect_equal( clrCallStatic(tn, 'CreateArray_TimeSpan', 0L), tdiff ) + + expectClrArrayElementType( aPosixCt ,'System.DateTime') + expectClrArrayElementType( tdiff ,'System.TimeSpan') + +}) + + + +test_that("non-empty arrays of non-basic .NET objects are handled", { + tn <- "ClrFacade.TestArrayMemoryHandling" + tName <- 'ClrFacade.TestObject' + + testListEqual <- function(expectObj, expectedLength, actual) { + expect_equal(expectedLength, length(actual)) + expect_true(is.list(actual)) + expect_true(all(sapply(actual, FUN = function(x) { areClrRefEquals(expectObj, x)}))) + } + + obj <- clrNew(tName) + actual <- clrCallStatic(tn, "CreateArray_object", 3L, obj) + testListEqual(obj, 3L, actual) + + aType <- clrGetType('System.Double') + actual <- clrCallStatic(tn, "CreateArray_Type", 3L, aType) + testListEqual(aType, 3L, actual) +}) + +test_that("String arrays are marshalled correctly", { + ltrs = paste(letters[1:5], letters[2:6], sep='') + expect_true( callTestCase( "StringArrayEquals", ltrs) ) + expect_that( callTestCase( "CreateStringArray"), equals(ltrs) ) + + ltrs[3] = NA + # expect_that( callTestCase( "CreateStringArrayMissingVal"), equals(ltrs) ) + # expect_that(callTestCase( "StringArrayMissingValuesEquals", ltrs), is_true() ) + +}) + +test_that("clrGetType function", { + testObj <- clrNew(testClassName) + expect_equal( testClassName,clrGet(clrGetType(testClassName), 'FullName')) + expect_equal( testClassName,clrGet(clrGetType(testObj), 'FullName')) + +}) + + +test_that("Numeric arrays are marshalled correctly", { + expectedNumArray <- 1:5 * 1.1 + expect_that( callTestCase( "CreateNumArray"), equals(expectedNumArray) ) + ## Internally somewhere, some noise is added probably in a float to double conversion. + ## Expected, but 5e-8 is more difference than I'd have guessed. Some watch point. + # expect_that( callTestCase( "CreateFloatArray"), equals(expectedNumArray) ) + expect_equal( callTestCase( "CreateFloatArray"), expected = expectedNumArray, tolerance = 5e-8, scale = 2) + expect_true( callTestCase( "NumArrayEquals", expectedNumArray ) ) + + numDays = 5 + expect_equal( callTestCase( "CreateIntArray", as.integer(numDays)), expected = 0:(numDays-1)) + + expectedNumArray[3] = NA + expect_that( callTestCase( "CreateNumArrayMissingVal"), equals(expectedNumArray) ) + expect_true( callTestCase( "NumArrayMissingValuesEquals", expectedNumArray ) ) + +}) + +test_that("Complex numbers are converted", { + z = 1+2i + expect_equal(callTestCase( "CreateComplex", 1, 2), z) + expect_true(callTestCase( "ComplexEquals", z, 1, 2 )) + z = c(1+2i, 3+4i, 3.3+4.4i) + expect_equal(callTestCase( "CreateComplex", c(1,3,3.3), c(2,4,4.4)), z) + expect_true(callTestCase( "ComplexEquals", z, c(1,3,3.3), c(2,4,4.4))) + + +}) + +# TODO: test that passing an S4 object that is not a clr object converts to a null reference in the CLR + +test_that("Methods with variable number of parameters with c# 'params' keyword", { + testObj <- clrNew(testClassName) + actual <- clrCall(testObj, "TestParams", "Hello, ", "World!", 1L, 2L, 3L, 6L, 5L, 4L) + expected <- "Hello, World!123654" + expect_equal(actual, expected=expected) + actual <- clrCall(testObj, "TestParams", "Hello, ", "World!", as.integer(1:6)) + expected <- "Hello, World!123456" + expect_equal(actual, expected=expected) +}) + +test_that("Correct method binding based on parameter types", { + mkArrayTypeName <- function(typeName) { paste(typeName, '[]', sep='') } + f <- function(...){ clrCallStatic('ClrFacade.TestMethodBinding', 'SomeStaticMethod', ...) } + printIfDifferent <- function( got, expected ) { if(any(got != expected)) {print( paste( "got", got, ", expected", expected))} } + g <- function(values, typeName) { + if(is.list(values)) { # this is what one gets with a concatenation of S4 objects, when we use c(testObj,testObj) with CLR objects + printIfDifferent( f(values[[1]]), typeName) + printIfDifferent( f(values), mkArrayTypeName(typeName)) # This is not yet supported? + printIfDifferent( f(values[[1]], values[[2]]), rep(typeName, 2)) + expect_equal( f(values[[1]]), typeName) + expect_equal( f(values), mkArrayTypeName(typeName)) + expect_equal( f(values[[1]], values[[2]]), rep(typeName, 2)) + } else { + printIfDifferent( f(values[1]), typeName) + printIfDifferent( f(values), mkArrayTypeName(typeName)) + printIfDifferent( f(values[1], values[2]), rep(typeName, 2)) + expect_equal( f(values[1]), typeName) + expect_equal( f(values), mkArrayTypeName(typeName)) + expect_equal( f(values[1], values[2]), rep(typeName, 2)) + } + } + intName <- 'System.Int32' + doubleName <- 'System.Double' + stringName <- 'System.String' + boolName <- 'System.Boolean' + dateTimeName <- 'System.DateTime' + objectName <- 'System.Object' + testObj <- clrNew(testClassName) + + testMethodBinding <- function() { + g(1:3, intName) + g(1.2*1:3, doubleName) + g(letters[1:3], stringName) + g(rep(TRUE,3), boolName) + g(as.Date('2001-01-01') + 1:3, dateTimeName) + g(c(testObj,testObj,testObj), objectName ) + + expect_equal( f(1.0, 'a'), c(doubleName, stringName)) + expect_equal( f(1.0, 'a', 'b'), c(doubleName, stringName, stringName)) + expect_equal( f(1.0, letters[1:2]), c(doubleName, mkArrayTypeName(stringName))) + expect_equal( f(1.0, letters[1:10]), c(doubleName, mkArrayTypeName(stringName))) + + expect_equal( f('a', letters[1:3]), c(stringName, mkArrayTypeName(stringName)) ) + expect_equal( f(letters[1:3], 'a'), c(mkArrayTypeName(stringName), stringName) ) + expect_equal( f(letters[1:3], letters[4:6]), c(mkArrayTypeName(stringName), mkArrayTypeName(stringName)) ) + } + + testMethodBinding() + obj <- clrNew('ClrFacade.TestMethodBinding') + f <- function(...){ clrCall(obj, 'SomeInstanceMethod', ...) } + testMethodBinding() + # Test that methods implemented to comply with an interface are found, even if the method is explicitely implemented. + # We do not want the users to have to figure out which interface type they deal with, at least not for R users. + f <- function(...){ clrCall(obj, 'SomeExplicitlyImplementedMethod', ...) } + testMethodBinding() +}) + +test_that("Numerical bi-dimensional arrays are marshalled correctly", { + numericMat = matrix(as.numeric(1:15), nrow=3, ncol=5, byrow=TRUE) + # A natural marshalling of jagged arrays is debatable. For the time being assuming that they are matrices, due to the concrete use case. + expect_that( callTestCase( "CreateJaggedFloatArray"), equals(numericMat)) + expect_that( callTestCase( "CreateJaggedDoubleArray"), equals(numericMat)) + expect_that( callTestCase( "CreateRectFloatArray"), equals(numericMat)) + expect_that( callTestCase( "CreateRectDoubleArray"), equals(numericMat)) + + # expect_that( callTestCase( "NumericMatrixEquals", numericMat), equals(numericMat)) + +}) + +testSmartDictConversion <- function(){ + # The definition of 'as expected' for these collections is not all that clear, and there may be some RDotNet limitations. + expect_that( callTestCase( "CreateStringDictionary"), equals(list(a='A', b='B'))) + expect_that( callTestCase( "CreateStringDoubleArrayDictionary"), + equals( + list( + a=c(1.0, 2.0, 3.0, 3.5, 4.3, 11), + b=c(1.0, 2.0, 3.0, 3.5, 4.3 ), + c=c(2.2, 3.3, 6.5)) + ) + ) + # d <- callTestCase( "CreateObjectDictionary") + # expect_true +} + + +test_that("CLI dictionaries are marshalled as expected", { + testSmartDictConversion() +}) + +test_that("Conversion of non-bijective types can be turned on/off", { + setConvertAdvancedTypes(FALSE) + expect_true( is(callTestCase( "CreateStringDictionary"), 'cobjRef')) + expect_true( is(callTestCase( "CreateStringDoubleArrayDictionary"), 'cobjRef') ) + setConvertAdvancedTypes(TRUE) + expect_false( is(callTestCase( "CreateStringDictionary"), 'cobjRef')) + expect_false( is(callTestCase( "CreateStringDoubleArrayDictionary"), 'cobjRef') ) + testSmartDictConversion() +}) + +test_that("Basic objects are created correctly", { + testObj = clrNew(testClassName) + expect_that( testObj@clrtype, equals(testClassName)) + rm(testObj) + # Note to self: I originally wrote code to make sure that r_call_static_method kept returning an external pointer, not + # an R object of type clrObjRef already created. I am not sure why this would have been a compulsory behavior. + # Delete if no harm done... +# extptr <-.External("r_call_static_method", cTypename, "CreateTestObject",PACKAGE=clrGetNativeLibName()) +# expect_that(is.null(extptr), is_false()) +# expect_that("externalptr" %in% class(extptr), is_true()) +# expect_that(clrTypeNameExtPtr(extptr), equals(testClassName)) + + testObj <-.External("r_call_static_method", cTypename, "CreateTestObject",PACKAGE=clrGetNativeLibName()) + expect_false(is.null(testObj)) + expect_that( testObj@clrtype, equals(testClassName)) + rm(testObj) + testObj <- callTestCase( "CreateTestObject") + expect_false(is.null(testObj)) + expect_that( testObj@clrtype, equals(testClassName)) + + testObj <- callTestCase( "CreateTestObjectGenericInstance") + expect_false(is.null(testObj)) + + + testObj <- callTestCase( "CreateTestArrayGenericObjects") + testObj <- callTestCase( "CreateTestArrayInterface") + testObj <- callTestCase( "CreateTestArrayGenericInterface") + +}) + +test_that("Creation of SEXP via R.NET", { + aDataFrame <- callTestCase("CreateTestDataFrame") +}) + +test_that("CLR type compatibility checking", { + testObj <- clrNew(testClassName) + expect_true(clrIs(testObj, testClassName)) + expect_true(clrIs(testObj, 'System.Object')) + expect_false(clrIs(testObj, 'System.Double')) + testObj <- clrNew('ClrFacade.TestMethodBinding') + expect_true(clrIs(testObj, 'ClrFacade.ITestMethodBindings')) + expect_true(clrIs(testObj, clrGetType('ClrFacade.ITestMethodBindings'))) + expect_true(clrIs(testObj, clrGetType('ClrFacade.TestMethodBinding'))) + expect_false(clrIs(testObj, clrGetType('System.Reflection.Assembly'))) + expect_error(clrIs(testObj, testObj)) +}) + +test_that("Loaded assemblies discovery", { + expect_true(all(c('ClrFacade', 'System.Private.CoreLib') %in% clrGetLoadedAssemblies())) + d <- clrGetLoadedAssemblies(fullname=TRUE, filenames=TRUE) + expect_true(is.data.frame(d)) +}) + + + +test_that("Object members discovery behaves as expected", { + expect_true('ClrFacade.TestObject' %in% clrGetTypesInAssembly('ClrFacade')) + testObj = clrNew(testClassName) + members = clrReflect(testObj) + + f<- function(obj_or_tname, static=FALSE, getF, getP, getM) { # copy-paste may have been more readable... Anyway. + prefix <- ifelse(static, 'Static', '') + collate <- function(...) {paste(..., sep='')} # surely in stringr, but avoid dependency + p <- function(basefieldname) {collate(prefix, basefieldname)} + + expect_that(getF(obj_or_tname, 'IntegerOne'), equals(p('FieldIntegerOne'))) + expect_that(getP(obj_or_tname, 'IntegerOne'), equals(p('PropertyIntegerOne'))) + + expected_mnames <- paste(c('get_','','set_'), p(c('PropertyIntegerOne', "GetFieldIntegerOne", "PropertyIntegerOne")), sep='') + actual_mnames <- getM(obj_or_tname, 'IntegerOne') + + expect_that( length(actual_mnames), equals(length(expected_mnames))) + expect_true( all( actual_mnames %in% expected_mnames)) + + sig_prefix = ifelse(static, 'Static, ', '') + expect_that(clrGetMemberSignature(obj_or_tname, p('GetFieldIntegerOne')), + equals(collate(sig_prefix, "Method: Int32 ", p("GetFieldIntegerOne")))) + expect_that(clrGetMemberSignature(obj_or_tname, p('GetMethodWithParameters')), + equals(collate(sig_prefix, "Method: Int32 ", p("GetMethodWithParameters, Int32, String")))) + } + f(testObj, static=FALSE, clrGetFields, clrGetProperties, clrGetMethods) + f(testClassName, static=TRUE, clrGetStaticFields, clrGetStaticProperties, clrGetStaticMethods) + # TODO test that methods that are explicit implementations of interfaces are found +}) + +test_that("Object constructor discovery behaves as expected", { + expect_equal( + c("Constructor: .ctor" + , "Constructor: .ctor, Double" + , "Constructor: .ctor, Double, Double" + , "Constructor: .ctor, Int32" + , "Constructor: .ctor, Int32, Int32" + , "Constructor: .ctor, Int32, Int32, Double, Double"), + clrGetConstructors(testClassName) + ) +}) + +test_that("Retrieval of object or class (i.e. static) members values behaves as expected", { + f <- function(obj_or_type, rootMemberName, staticPrefix='') { + fieldName <- paste(staticPrefix, 'Field', rootMemberName, sep='') + propName <- paste(staticPrefix, 'Property', rootMemberName, sep='') + clrSet(obj_or_type, fieldName, as.integer(0)) + expect_that(clrGet(obj_or_type, fieldName), equals(0)) + clrSet(obj_or_type, fieldName, as.integer(2)) + expect_that(clrGet(obj_or_type, fieldName), equals(2)) + clrSet(obj_or_type, propName, as.integer(0)) + expect_that(clrGet(obj_or_type, propName), equals(0)) + clrSet(obj_or_type, propName, as.integer(2)) + expect_that(clrGet(obj_or_type, propName), equals(2)) + } + # first object members + testObj = clrNew(testClassName) + f(testObj, 'IntegerOne', staticPrefix='') + # then test static members + f(testClassName, 'IntegerOne', staticPrefix='Static') +}) + +test_that("enums get/set", { + # very basic support for the time being. Behavior to be defined for cases such as enums with binary operators ([FlagsAttribute]) + eType <- 'ClrFacade.TestEnum' + expect_that(clrGetEnumNames(eType), equals(c('A','B','C'))) +# TODO, but problematic. +# e <- clrCall(cTypename, 'GetTestEnum', 'B') +# expect_false(is.null(e)) +# expect_that(clrCall(e, 'ToString'), equals('B')) +}) + +testGarbageCollection <- function( getObjCountMethodName = 'GetMemTestObjCounter', createTestObjectMethodName = 'CreateMemTestObj') +{ + callGcMethname <- "CallGC" + forceDotNetGc <- function() { callTestCase( callGcMethname) } + checkPlusOne <- function () { expect_that( callTestCase( getObjCountMethodName), equals(counter+1) ) } + + counter = callTestCase( getObjCountMethodName) + expect_that( counter, equals(0) ) # make sure none of these test objects instances are hanging in the CLR + testObj = callTestCase( createTestObjectMethodName) + checkPlusOne() + forceDotNetGc() + # the object should still be in memory. + checkPlusOne() + gc() + # the object should still be in memory, since testObj is in use and thus the underlying clr handle should be pinned too. + checkPlusOne() + rm(testObj) + gc() + forceDotNetGc() + expect_that( callTestCase( getObjCountMethodName), equals(counter) ) + + # Trying to test that issue https://r2clr.codeplex.com/workitem/71 is fixed. + # However the underlying COM type for a Form is a VT_DISPATCH but for out MemTestObject a VT_UNKNOWN. + # Needs more work to reproduce in a unit test; no desire to introduce dependency on System.Windows.Form + # counter = callTestCase( getObjCountMethodName) + # expect_that( counter, equals(0) ) + # testObj = callTestCase( createTestObjectMethodName) + # clrSet( testObj, 'Text', "et nous alimentons nos aimables remords comme les mendiants nourissent leur vermine" ) + # forceDotNetGc() + # checkPlusOne() + # clrSet( testObj, 'Text', "Sur l'oreiller du mal..." ) + # checkPlusOne() + # rm(testObj) ; gc() ; forceDotNetGc() + +} + +test_that("Garbage collection in R and the CLR behaves as expected", { + testGarbageCollection( getObjCountMethodName = 'GetMemTestObjCounter', createTestObjectMethodName = 'CreateMemTestObj') +}) + +test_that("Garbage collection of R.NET objects", { + # Unfortunately cannot test this yet because of http://r2clr.codeplex.com/workitem/30 + # testGarbageCollection( getObjCountMethodName = 'GetMemTestObjCounterRDotnet', createTestObjectMethodName = 'CreateMemTestObjRDotnet') +}) + + +test_that("Assembly loading", { + # following not supported on Mono + # clrLoadAssembly("System.Windows.Presentation, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") + clrLoadAssembly('System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a') + + # The use of partial assembly names is discouraged; nevertheless it is supported + clrLoadAssembly("System.Web.Services") +}) diff --git a/tests/testthat/test-datetime.r b/tests/testthat/test-datetime.r index 93ea915..9492e4a 100644 --- a/tests/testthat/test-datetime.r +++ b/tests/testthat/test-datetime.r @@ -1,128 +1,127 @@ -# print(paste('current directory is', getwd(), 'and contains files' , paste(list.files( getwd()), collapse=','))) - -context("Date and times") - -test_that("Date and Time objects are marshalled correctly", { - - ########## - # .NET to R - ########## - - # First, test around the origin of the POSIXct structure, '1970-01-01 00:00', 'UTC' is zero - testSameInteger(posixct_orig_str) - testSameInteger('1970-01-01 01:00:00') - testSameInteger('1969-12-31 23:00:00') - - # test around two daylight savings dates for the test time zone eastern Australia - # DST skip one hour - testDotNetToR('2013-10-06 01:59') - expect_error(testDotNetToR('2013-10-06 02:30')) # TimeZoneInfo complains, rightly so. - # Note for information that in R: - # > pctToUtc(as.POSIXct('2013-10-06 02:30', tz=tzIdR_AUest)) - # [1] "2013-10-05 14:00:00 UTC" - testDotNetToR('2013-10-06 03:01') - - # DST go back one hour; 02:00 to 03:00 happens twice for same date - testDotNetToR('2013-04-07 01:59') - # from 02:00 to around 02:32, the CLR base class library and R behave differently when converting to UTC. So be it. - - # FIXME: - # Oddly, the following expect_error() is behaving as expected if run from R, however inside a - # test_that function, this fails twice (test, and then that the expected error is nevertheless not 'detected' - # expect_error(testDotNetToR('2013-04-07 02:32')) - - testDotNetToR('2013-04-07 02:33') #from then on same UTC date is returned. - testDotNetToR('2013-04-07 03:00') - - # we can only test local date times post sometime in 1971 - DST rules for AU EST differ prior to that. - # Further illustration: consider the output of the following 5 lines, it looks like there is no DST - # for summer 1971 (meaning January, down under); only kicks in in 1972. - # pctToUtc(AUest('1970-01-01 11:00')) - # pctToUtc(AUest('1971-01-01 11:00')) - # pctToUtc(AUest('1971-07-01 11:00')) - # pctToUtc(AUest('1972-01-01 11:00')) - # pctToUtc(AUest('1972-07-01 11:00')) - - pDate <- function(dateStr) { - if(exists('debug_test') && debug_test) { print(paste('testing', dateStr)) } - } - - for ( dateStr in post1971_DateStr ) { - testDotNetToR(dateStr) - pDate(dateStr) - } - - # This however must work for all test dates - for ( dateStr in testDatesStr ) { - testDotNetToRUTC(dateStr) - pDate(dateStr) - } - - # Test that DateTime[] becomes POSIXt vectors of expected length - secPerDay <- 86400 - testDateStr='2001-01-01' - - testDateSeq <- function(startDateStr, numSeq) { - dateSeq <- AUest(startDateStr)+numSeq - d <- createUtcDate(as.character(dateSeq), tzId_AUest) - dr <- pctToUtc(dateSeq) - expect_posixct_equal(d, dr, mAct='From CLR', mExp='Expected') - } - numDays = 5; - testDateSeq(testDateStr, (0:(numDays-1))*secPerDay); - numSecs = 42; - testDateSeq(testDateStr,(0:(numSecs-1))) - - # Time spans: .NET to R - # TimeSpan were not handled gracefully. Following tests also check that https://r2clr.codeplex.com/workitem/52 is dealt with - # TODO broader, relating to that: default unknown value types are handled gracefully - threePfive_sec <- as.difftime(3.5, units='secs') - expect_equal( clrCallStatic('System.TimeSpan','FromSeconds', 3.5), expected = threePfive_sec) - threePfive_min <- as.difftime(3.5, units='mins') - expect_equal( clrCallStatic('System.TimeSpan','FromMinutes', 3.5), expected = as.difftime(180+30, units='secs')) - # arrays of timespan - expect_equal( clrCallStatic(cTypename, "CreateTimeSpanArray", 3.5, as.integer(5)), expected = threePfive_sec + 5*(0:4)) - - ########## - # R to .NET conversions - ########## - - testRtoClrNoTz('1980-01-01') - testRtoClrNoTz('1972-01-01') - - # FIXME: expect-error lines pass if run interactively but not if inside a test_that() function call - # However, there is this DST discrepancy of one hour creeping in sometime in 1971, and before that as well - # expect_error(testRtoClrNoTz('1971-01-01')) - # expect_error(testRtoClrNoTz(posixct_orig_str)) - - # we can only test local date times post sometime in 1971 - DST rules for AU EST differ prior to that. - for ( dateStr in post1971_DateStr ) { - testRtoClrNoTz(dateStr) - pDate(dateStr) - } - - # This however must work for all test dates - for ( dateStr in testDatesStr ) { - testRtoClrUtc(dateStr) - pDate(dateStr) - } - - # The following lines may look puzzling but really do have a purpose. - # Check that http://r2clr.codeplex.com/workitem/37 has been fixed The following will crash if not. - x <- as.Date(testDateStr) - clrType = clrCallStatic('ClrFacade.ClrFacade', 'GetObjectTypeName', x) - expect_that( x, equals(as.Date(testDateStr)) ); - x <- as.Date(testDateStr) + 0:3 - clrType = clrCallStatic('ClrFacade.ClrFacade', 'GetObjectTypeName', x) - expect_that( x[1], equals(as.Date(testDateStr)) ); - expect_that( x[2], equals(as.Date(testDateStr)+1) ); - # End check http://r2clr.codeplex.com/workitem/37 - - #### daily sequences - # Dates - testDateStr='2001-01-01'; numDays = 5; - # Note that there no point looking below daily period wuth Date objects. consider: - # z <- ISOdate(2010, 04, 13, c(0,12)) - # str(unclass(as.Date(z))) - expect_true( clrCallStatic(cTypename, "CheckIsDailySequence", as.Date(testDateStr) + 0:(numDays-1), testDateStr, as.integer(numDays))) -}) +# print(paste('current directory is', getwd(), 'and contains files' , paste(list.files( getwd()), collapse=','))) + +context("Date and times") + +test_that("Date and Time objects are marshalled correctly", { + + ########## + # .NET to R + ########## + + # First, test around the origin of the POSIXct structure, '1970-01-01 00:00', 'UTC' is zero + testSameInteger(posixct_orig_str) + testSameInteger('1970-01-01 01:00:00') + testSameInteger('1969-12-31 23:00:00') + + # test around two daylight savings dates for the test time zone eastern Australia + # DST skip one hour + testDotNetToR('2013-10-06 01:59') + expect_error(testDotNetToR('2013-10-06 02:30')) # TimeZoneInfo complains, rightly so. + # Note for information that in R: + # > pctToUtc(as.POSIXct('2013-10-06 02:30', tz=tzIdR_AUest)) + # [1] "2013-10-05 14:00:00 UTC" + testDotNetToR('2013-10-06 03:01') + + # DST go back one hour; 02:00 to 03:00 happens twice for same date + testDotNetToR('2013-04-07 01:59') + # from 02:00 to around 02:32, the CLR base class library and R behave differently when converting to UTC. So be it. + + # FIXME: + # Oddly, the following expect_error() is behaving as expected if run from R, however inside a + # test_that function, this fails twice (test, and then that the expected error is nevertheless not 'detected' + # expect_error(testDotNetToR('2013-04-07 02:32')) + + testDotNetToR('2013-04-07 03:00') + + # we can only test local date times post sometime in 1971 - DST rules for AU EST differ prior to that. + # Further illustration: consider the output of the following 5 lines, it looks like there is no DST + # for summer 1971 (meaning January, down under); only kicks in in 1972. + # pctToUtc(AUest('1970-01-01 11:00')) + # pctToUtc(AUest('1971-01-01 11:00')) + # pctToUtc(AUest('1971-07-01 11:00')) + # pctToUtc(AUest('1972-01-01 11:00')) + # pctToUtc(AUest('1972-07-01 11:00')) + + pDate <- function(dateStr) { + if(exists('debug_test') && debug_test) { print(paste('testing', dateStr)) } + } + + for ( dateStr in post1971_DateStr ) { + testDotNetToR(dateStr) + pDate(dateStr) + } + + # This however must work for all test dates + for ( dateStr in testDatesStr ) { + testDotNetToRUTC(dateStr) + pDate(dateStr) + } + + # Test that DateTime[] becomes POSIXt vectors of expected length + secPerDay <- 86400 + testDateStr='2001-01-01' + + testDateSeq <- function(startDateStr, numSeq) { + dateSeq <- AUest(startDateStr)+numSeq + d <- createUtcDate(as.character(dateSeq), tzId_AUest) + dr <- pctToUtc(dateSeq) + expect_posixct_equal(d, dr, mAct='From CLR', mExp='Expected') + } + numDays = 5; + testDateSeq(testDateStr, (0:(numDays-1))*secPerDay); + numSecs = 42; + testDateSeq(testDateStr,(0:(numSecs-1))) + + # Time spans: .NET to R + # TimeSpan were not handled gracefully. Following tests also check that https://r2clr.codeplex.com/workitem/52 is dealt with + # TODO broader, relating to that: default unknown value types are handled gracefully + threePfive_sec <- as.difftime(3.5, units='secs') + expect_equal( clrCallStatic('System.TimeSpan','FromSeconds', 3.5), expected = threePfive_sec) + threePfive_min <- as.difftime(3.5, units='mins') + expect_equal( clrCallStatic('System.TimeSpan','FromMinutes', 3.5), expected = as.difftime(180+30, units='secs')) + # arrays of timespan + expect_equal( clrCallStatic(cTypename, "CreateTimeSpanArray", 3.5, as.integer(5)), expected = threePfive_sec + 5*(0:4)) + + ########## + # R to .NET conversions + ########## + + testRtoClrNoTz('1980-01-01') + testRtoClrNoTz('1972-01-01') + + # FIXME: expect-error lines pass if run interactively but not if inside a test_that() function call + # However, there is this DST discrepancy of one hour creeping in sometime in 1971, and before that as well + # expect_error(testRtoClrNoTz('1971-01-01')) + # expect_error(testRtoClrNoTz(posixct_orig_str)) + + # we can only test local date times post sometime in 1971 - DST rules for AU EST differ prior to that. + for ( dateStr in post1971_DateStr ) { + testRtoClrNoTz(dateStr) + pDate(dateStr) + } + + # This however must work for all test dates + for ( dateStr in testDatesStr ) { + testRtoClrUtc(dateStr) + pDate(dateStr) + } + + # The following lines may look puzzling but really do have a purpose. + # Check that http://r2clr.codeplex.com/workitem/37 has been fixed The following will crash if not. + x <- as.Date(testDateStr) + clrType = clrCallStatic('ClrFacade.ClrFacade', 'GetObjectTypeName', x) + expect_that( x, equals(as.Date(testDateStr)) ); + x <- as.Date(testDateStr) + 0:3 + clrType = clrCallStatic('ClrFacade.ClrFacade', 'GetObjectTypeName', x) + expect_that( x[1], equals(as.Date(testDateStr)) ); + expect_that( x[2], equals(as.Date(testDateStr)+1) ); + # End check http://r2clr.codeplex.com/workitem/37 + + #### daily sequences + # Dates + testDateStr='2001-01-01'; numDays = 5; + # Note that there no point looking below daily period wuth Date objects. consider: + # z <- ISOdate(2010, 04, 13, c(0,12)) + # str(unclass(as.Date(z))) + expect_true( clrCallStatic(cTypename, "CheckIsDailySequence", as.Date(testDateStr) + 0:(numDays-1), testDateStr, as.integer(numDays))) +}) From 37984acb10dc27aeb38cebd02ca6446d6ad0f602 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Mon, 26 Feb 2024 11:49:54 -0500 Subject: [PATCH 4/9] Fix windows build --- src/Makefile.win.in | 4 ++-- src/rSharp.cpp | 10 +--------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/Makefile.win.in b/src/Makefile.win.in index 46af24e..59945d8 100644 --- a/src/Makefile.win.in +++ b/src/Makefile.win.in @@ -83,8 +83,8 @@ rSharpLib: rSharpLibComp $(ROBOCP_CMD) ./packages/Microsoft.NETCore.App.Host.win-x64.8.0.2/runtimes/win-x64/native $(INSTDIR)/libs/ $(NETHOST).dll $(ROBOCP_CMD) ./ $(INSTDIR)/libs/ $(RUNTIMECONFIG).json; - -$(ROBOCP_CMD) ./ClrFacade/bin/$(BuildConfiguration)/net7.0/ $(INSTDIR)/libs/ $(CLR_FACADE_BINS) - -$(ROBOCP_CMD) ./ClrFacade/bin/$(BuildConfiguration)/net7.0/ $(INSTDIR)/libs/ $(RDOTNET_BINS) + -$(ROBOCP_CMD) ./ClrFacade/bin/$(BuildConfiguration)/net8.0/ $(INSTDIR)/libs/ $(CLR_FACADE_BINS) + -$(ROBOCP_CMD) ./ClrFacade/bin/$(BuildConfiguration)/net8.0/ $(INSTDIR)/libs/ $(RDOTNET_BINS) clean: $(MSB) $(SLN) //t:Clean diff --git a/src/rSharp.cpp b/src/rSharp.cpp index 932efb5..e5ea860 100644 --- a/src/rSharp.cpp +++ b/src/rSharp.cpp @@ -605,11 +605,7 @@ const char* get_type_full_name(RSharpGenericValue** genericValue) { const auto call_static = reinterpret_cast(get_full_type_name_fn_ptr); auto hr = call_static(genericValue); -#ifdef WINDOWS - return wstring_to_c_string(reinterpret_cast(hr)); -#else - return (char_t*)(hr); -#endif + return (char*)(hr); } RSharpGenericValue* get_RSharp_generic_value(SEXP clrObj); @@ -807,11 +803,7 @@ SEXP ConvertToSEXP(RSharpGenericValue& value) { return Rf_ScalarLogical(boolValue); } case RSharpValueType::STRING: { -#ifdef WINDOWS - const char* stringValue = wstring_to_c_string((const wchar_t*)value.value); -#else const char* stringValue = (char*)value.value; -#endif return make_char_single_sexp(stringValue); } /*case RSharpValueType::INT_ARRAY: { From 6dd6d8167f0b8c81d69757946406b96260e95e7a Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:23:41 -0500 Subject: [PATCH 5/9] remove unused code --- src/rSharp.cpp | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/rSharp.cpp b/src/rSharp.cpp index e5ea860..f114b77 100644 --- a/src/rSharp.cpp +++ b/src/rSharp.cpp @@ -578,24 +578,6 @@ SEXP r_get_object_direct() { return ConvertToSEXP(return_value); } -#ifdef WINDOWS -char* wstring_to_c_string(const wchar_t* src) { -#ifndef UNICODE // r_winnt - return src; -#else - // Convert the wchar_t string to a char* string. - // see http://msdn.microsoft.com/en-us/library/ms235631.aspx - size_t origsize = wcslen(src) + 1; - size_t convertedChars = 0; - const size_t newsize = origsize * 2; - char* nstring = new char[newsize]; - wcstombs_s(&convertedChars, nstring, newsize, src, _TRUNCATE); - return nstring; -#endif - -} -#endif - const char* get_type_full_name(RSharpGenericValue** genericValue) { char* ns_qualified_typename = NULL; From 8a1c6cd239c8c7f4e1839717be0b41bb91d8ef39 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:32:30 -0500 Subject: [PATCH 6/9] More robust Makevars system --- .RData | Bin 2595 -> 0 bytes .gitignore | 7 ++++++- RSharp.runtimeconfig.json | 0 src/Makevars | 28 +++++++++++++++++----------- src/Makevars.in | 28 +++++++++++++++++----------- 5 files changed, 40 insertions(+), 23 deletions(-) delete mode 100644 .RData delete mode 100644 RSharp.runtimeconfig.json diff --git a/.RData b/.RData deleted file mode 100644 index 4d3bc21b0dc44009335b2640b5a455a479bb1951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2595 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/dev/null -@mkdir -p $(INSTDIR)/libs$(R_ARCH) 2>/dev/null -rSharpInstrSharpUX: rSharpUX.so - cp -u -p rSharpUX.so $(INSTDIR)/libs$(R_ARCH) +rSharpInstrSharpUX: $(OUT_DIR)/rSharpUX.so + cp -u -p $< $(INSTDIR)/libs$(R_ARCH) rSharpLib: rSharpLibComp if [ -e symbols.rds ] ; then cp -u -p symbols.rds $(INSTDIR)/libs$(R_ARCH) ; fi @@ -122,8 +128,8 @@ rSharpLib: rSharpLibComp -cp -u -p $(CLR_FACADE_BINS) $(INSTDIR)/libs -cp -u -p ./$(RUNTIMECONFIG).json $(INSTDIR)/libs/ -rSharpNugetRestore: rSharp.cpp - -$(DOTNET_CMD) restore ; +rSharpNugetRestore: + -$(DOTNET_CMD) restore rSharpLibComp: rSharpNugetRestore "$(XBUILD)" build /t:$(MODE) $(SLNPROPERTIES) \ No newline at end of file diff --git a/src/Makevars.in b/src/Makevars.in index c0e1ae1..24463cb 100644 --- a/src/Makevars.in +++ b/src/Makevars.in @@ -14,11 +14,17 @@ BUILDTYPE ?= Debug TGTPLATFORM=x64 RUNTIMECONFIG=RSharp.runtimeconfig +OBJ_DIR := obj +OUT_DIR := out +SRC_DIR := . +SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp) +OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES)) + PKG_CPPFLAGS = --std=c++11 -lsupc++ MONO_INSTALL_PATH=@MONO_INSTALL_PATH@ MONO_INSTALL_PATH64=@MONO_INSTALL_PATH64@ -OBJECTS=rSharpUX.o +OBJECTS=$(OUT_DIR)/rSharpUX.so ifeq "$(MONO_INSTALL_PATH)" "" XBUILD=xbuild else @@ -88,16 +94,16 @@ RM = rm -f # .PHONY: all clean -all: printarch rSharpUX.so instdir rSharpLib rSharpInstrSharpUX +all: printarch instdir $(OUT_DIR)/rSharpUX.so rSharpLib rSharpInstrSharpUX clean: - ${RM} $(OBJECTS) $(SHLIB) $(RSHARP_LIBS) + ${RM} $(OUT_DIR)/* $(OBJ_DIR)/* -rSharpUX.o: - $(CXX) -std=c++11 -Ipackages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native $(ALL_CPPFLAGS) -I/usr/share/R/include/ $(ALL_CFLAGS) -fPIC -c rSharp.cpp -o rSharpUX.o -lsupc++ +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp + $(CXX) -std=c++11 -Ipackages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native $(ALL_CPPFLAGS) -I/usr/share/R/include/ $(ALL_CFLAGS) -fPIC -c $< -o $@ -lsupc++ -rSharpUX.so: rSharpUX.o - $(CXX) -std=c++11 -shared -Wl,-z,relro -o rSharpUX.so rSharpUX.o $(ALL_LIBS) -L./packages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native -l:libnethost.a +$(OUT_DIR)/rSharpUX.so: $(OBJ_FILES) + $(CXX) -std=c++11 -shared -Wl,-z,relro -o $@ $^ $(ALL_LIBS) -L./packages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native -l:libnethost.a printarch: -@echo **Variable information only for diagnosis purposes** @@ -113,8 +119,8 @@ instdir: -@mkdir -p $(INSTDIR) 2>/dev/null -@mkdir -p $(INSTDIR)/libs$(R_ARCH) 2>/dev/null -rSharpInstrSharpUX: rSharpUX.so - cp -u -p rSharpUX.so $(INSTDIR)/libs$(R_ARCH) +rSharpInstrSharpUX: $(OUT_DIR)/rSharpUX.so + cp -u -p $< $(INSTDIR)/libs$(R_ARCH) rSharpLib: rSharpLibComp if [ -e symbols.rds ] ; then cp -u -p symbols.rds $(INSTDIR)/libs$(R_ARCH) ; fi @@ -122,8 +128,8 @@ rSharpLib: rSharpLibComp -cp -u -p $(CLR_FACADE_BINS) $(INSTDIR)/libs -cp -u -p ./$(RUNTIMECONFIG).json $(INSTDIR)/libs/ -rSharpNugetRestore: rSharp.cpp - -$(DOTNET_CMD) restore ; +rSharpNugetRestore: + -$(DOTNET_CMD) restore rSharpLibComp: rSharpNugetRestore "$(XBUILD)" build /t:$(MODE) $(SLNPROPERTIES) \ No newline at end of file From 79be10ed76596fd21aca0ab5c1c3d5c33cce3b50 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:38:35 -0500 Subject: [PATCH 7/9] remove generated Makevars --- src/Makevars | 135 --------------------------------------------------- 1 file changed, 135 deletions(-) delete mode 100644 src/Makevars diff --git a/src/Makevars b/src/Makevars deleted file mode 100644 index 61f92ed..0000000 --- a/src/Makevars +++ /dev/null @@ -1,135 +0,0 @@ -# Emacs please make this -*- mode: makefile; tab-width: 8 -*- -# -# -# Copyright (C) 2013-2015 -# - -# WARNING: Makevars is generated from Makevars.in -# You may loose direct modifications to the file Makevars! - -BUILDTYPE ?= Debug - -# as of mono 4.0.3 on Debian, using monosgen fails. Need to offer the option to revert to boehm GC. -# other acceptable option is MONO_LIB = mono-2 - -TGTPLATFORM=x64 -RUNTIMECONFIG=RSharp.runtimeconfig -OBJ_DIR := obj -OUT_DIR := out -SRC_DIR := . -SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp) -OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES)) - -PKG_CPPFLAGS = --std=c++11 -lsupc++ - -MONO_INSTALL_PATH= -MONO_INSTALL_PATH64= -OBJECTS=$(OUT_DIR)/rSharpUX.so -ifeq "$(MONO_INSTALL_PATH)" "" -XBUILD=xbuild -else -XBUILD=$(MONO_INSTALL_PATH)/bin/xbuild -endif - -XBUILD=dotnet - -DOTNET_CMD=dotnet - -######## O/S dependent config -ifeq "$(R_OSTYPE)" "windows" -SLN=rSharp.sln - -ifeq "$(BUILDTYPE)" "Release" -BuildConfiguration=Release -else -BuildConfiguration=MonoInstallDebug -endif # ifeq "$(BUILDTYPE)" "Release" - -RSHARP_LIBS=rSharpUX$(SHLIB_EXT) - -# On a Win7 machine, 'pkg-config --cflags mono-2 glib-2.0' returns -# -mno-cygwin -mms-bitfields -mwindows -IF:/bin/Mono/include/mono-2.0 -IF:/bin/Mono/include/glib-2.0 -IF:/bin/Mono/lib/glib-2.0/include -# however 'which pkg-config' is in /cygdrive/f/bin/Mono/bin/pkg-config, something unusual for windows machines (?). -# Not sure what is to be expected on CRAN winbuilder. -# -mno-cygwin is a trouble flag somehow, not to be included. -# pkg-config --libs mono-2 glib-2.0 -# -Wl,--export-all-symbols -mno-cygwin -mms-bitfields -mwindows -LF:/bin/Mono/lib -# -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion -lgl -# ib-2.0 -lintl -PKG_CFLAGS = -mms-bitfields -mwindows -I"$(MONO_INSTALL_PATH)/include/mono-2.0" -I"$(MONO_INSTALL_PATH)/include/glib-2.0" -I"$(MONO_INSTALL_PATH)/lib/glib-2.0/include" -D MONO_CLR -D MONO_INST -PKG_LIBS = -mms-bitfields -mwindows -L"$(MONO_INSTALL_PATH)/lib" -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion -ifeq "$(R_ARCH)" "/x64" -PKG_LIBS = -mms-bitfields -mwindows -L"$(MONO_INSTALL_PATH64)/" -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion -# PKG_LIBS = -mms-bitfields -mwindows -LF:/bin/mono_built/lib -LF:/bin/mono_built/bin -lmono-2.0 -lws2_32 -lpsapi -lole32 -lwinmm -loleaut32 -ladvapi32 -lversion -endif ## ifeq "$(R_ARCH)" "/x64" - -RSHARPBINDIRFACADE= ./$(BuildConfiguration) - -else ## the OS is not 'windows' -SLN=rSharp_monodev.sln -ifeq "$(BUILDTYPE)" "Release" -BuildConfiguration=Unix -else -BuildConfiguration=UnixDebug -endif ## ifeq "$(BUILDTYPE)" "Release" - -PKG_CFLAGS_LOCAL=`pkg-config --cflags $(MONO_LIB) glib-2.0` -PKG_LIBS_LOCAL=`pkg-config --libs $(MONO_LIB) glib-2.0` -PKG_CFLAGS = $(PKG_CFLAGS_LOCAL) -g -D MONO_CLR -D MONO_INST -PKG_LIBS=$(PKG_LIBS_LOCAL) -# TODO: can I avoid having this platform dependent? Why did I not use BuildConfiguration folder under Linux? -RSHARPBINDIRFACADE= ./ClrFacade/bin/$(BUILDTYPE)/net8.0 -endif ## end if statement testing on "$(R_OSTYPE)" is "windows" or not - -CLR_FACADE_BINS=$(RSHARPBINDIRFACADE)/*.* - -NETHOST= libnethost -INSTDIR= ../inst - -MODE=Rebuild -# Note: consoleloggerparameters:ErrorsOnly works with msbuild.exe, but xbuild does not support it -SLNPROPERTIES=/p:Configuration=$(BuildConfiguration) /p:Platform="$(TGTPLATFORM)" /nologo /consoleloggerparameters:ErrorsOnly /verbosity:minimal - -RM = rm -f - -# .PHONY: all clean - -all: printarch instdir $(OUT_DIR)/rSharpUX.so rSharpLib rSharpInstrSharpUX - -clean: - ${RM} $(OUT_DIR)/* $(OBJ_DIR)/* - -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp - $(CXX) -std=c++11 -Ipackages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native $(ALL_CPPFLAGS) -I/usr/share/R/include/ $(ALL_CFLAGS) -fPIC -c $< -o $@ -lsupc++ - -$(OUT_DIR)/rSharpUX.so: $(OBJ_FILES) - $(CXX) -std=c++11 -shared -Wl,-z,relro -o $@ $^ $(ALL_LIBS) -L./packages/Microsoft.NETCore.App.Host.linux-x64.8.0.2/runtimes/linux-x64/native -l:libnethost.a - -printarch: - -@echo **Variable information only for diagnosis purposes** - -@echo R_ARCH=$(R_ARCH) - -@echo OBJECTS=$(OBJECTS) - -@echo SHLIB_EXT=$(SHLIB_EXT) - -@echo CC=$(CC) - -@echo CXX=$(CXX) - -@echo **END Variable** - -instdir: - -@rm -rf $(INSTDIR)/libs$(R_ARCH) - -@mkdir -p $(INSTDIR) 2>/dev/null - -@mkdir -p $(INSTDIR)/libs$(R_ARCH) 2>/dev/null - -rSharpInstrSharpUX: $(OUT_DIR)/rSharpUX.so - cp -u -p $< $(INSTDIR)/libs$(R_ARCH) - -rSharpLib: rSharpLibComp - if [ -e symbols.rds ] ; then cp -u -p symbols.rds $(INSTDIR)/libs$(R_ARCH) ; fi - -rm -f $(INSTDIR)/libs/*.* - -cp -u -p $(CLR_FACADE_BINS) $(INSTDIR)/libs - -cp -u -p ./$(RUNTIMECONFIG).json $(INSTDIR)/libs/ - -rSharpNugetRestore: - -$(DOTNET_CMD) restore - -rSharpLibComp: rSharpNugetRestore - "$(XBUILD)" build /t:$(MODE) $(SLNPROPERTIES) \ No newline at end of file From 93254caaf536ec2308ea9fd36772ecdc1527c7ad Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:45:28 -0500 Subject: [PATCH 8/9] add .idea to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e946f73..9b3b353 100644 --- a/.gitignore +++ b/.gitignore @@ -165,3 +165,4 @@ inst/libs/*.* src/Makevars src/Makefile.win src/rSharp.so +src/.idea From c9dfae8be5dd9d25aff76564da7d6ff821cdbfb7 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:46:50 -0500 Subject: [PATCH 9/9] remove files --- src/.idea/.idea.rSharp/.idea/.gitignore | 13 ------------- src/.idea/.idea.rSharp/.idea/.name | 1 - src/.idea/.idea.rSharp/.idea/indexLayout.xml | 8 -------- src/.idea/.idea.rSharp/.idea/vcs.xml | 6 ------ 4 files changed, 28 deletions(-) delete mode 100644 src/.idea/.idea.rSharp/.idea/.gitignore delete mode 100644 src/.idea/.idea.rSharp/.idea/.name delete mode 100644 src/.idea/.idea.rSharp/.idea/indexLayout.xml delete mode 100644 src/.idea/.idea.rSharp/.idea/vcs.xml diff --git a/src/.idea/.idea.rSharp/.idea/.gitignore b/src/.idea/.idea.rSharp/.idea/.gitignore deleted file mode 100644 index dfce26e..0000000 --- a/src/.idea/.idea.rSharp/.idea/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/contentModel.xml -/modules.xml -/projectSettingsUpdater.xml -/.idea.rSharp.iml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/src/.idea/.idea.rSharp/.idea/.name b/src/.idea/.idea.rSharp/.idea/.name deleted file mode 100644 index 3b67751..0000000 --- a/src/.idea/.idea.rSharp/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -rSharp \ No newline at end of file diff --git a/src/.idea/.idea.rSharp/.idea/indexLayout.xml b/src/.idea/.idea.rSharp/.idea/indexLayout.xml deleted file mode 100644 index 7b08163..0000000 --- a/src/.idea/.idea.rSharp/.idea/indexLayout.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/.idea/.idea.rSharp/.idea/vcs.xml b/src/.idea/.idea.rSharp/.idea/vcs.xml deleted file mode 100644 index 6c0b863..0000000 --- a/src/.idea/.idea.rSharp/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file