CLR.CLS 100.20160811 Date: 2016-08-11
Author: Manuel Raffel, Rony G. Flatscher

Overview Index
Overview of CLR.CLS, Version 100.20160811



Package: CLR.CLS

Classes

PUBLIC CLR
Description: The class that represents CLR objects and which is responsible for interacting with the peer CLR object on behalf of the ooRexx programmer. An instance of this class holds a reference to the peer CLR object and a reference to that object's type to ease reflective interactions.
Attributes: clr.object (GET) clr.object (SET) clr.type (GET) clr.type (SET)
Methods: clr.dispatch clr.import clr.setPropertyValue string unknown

PRIVATE CLR_Class
Description: The proxy class representing an imported CLR type. When sending messages to the class proxy object, then resolution starts with the static scope first, followed by the instance scope, if the static scope could not be resolved. The proxy class can be used to instantiate CLR objects in the ooRexx style by merely sending the proxy class the message "NEW", supplying the arguments, if any.
Attributes: clr.assembly clr.clzProxy clr.object clr.proxy clr.type clr.typeName
Methods: unknown

PRIVATE CLR_Enum
Description: Class to allow to wrap Enum values in order to ease comparing with Rexx strings. It implements the Rexx comparison methods "=", "\=", "<>", and "><" which in turn accept as the "other" object either another CLR Enumeration object (a proxy for an instance of a "System.Enum" type) or a Rexx string representing the Enum string value.
Methods: <> = >< \=

PRIVATE CLR_Event
Description: A proxy class to ease adding and removing event handler to/from CLR objects.
Attributes: eventName (GET)
Methods: + -

PRIVATE CLR_Proxy
Description: This class serves as a proxy for CLR/.Net objects of any type, returned from CLR/.Net. The routine clr.wrap() will use this class, if a pure BSF (Java) object is supplied, assuming it is from CLR/.Net.
author Rony G. Flatscher
since 2016-06-18

PUBLIC CLRLogger
Description: Utility class to allow logging merely by sending the messages "FATAL", "ERROR", "WARN", "INFO", "DEBUG" or "TRACE" with the log text as argument to the class object .CLRLogger. All interaction is with the class object directly, there is no instance one is allowed to create.
Attributes: doLogging (GET) logLevel (GET) logLevel (SET) logLevels (GET)
Methods: unknown

PUBLIC CLRThread
Description: A class that uses "java.lang.Thread" to create a thread for executing Rexx code in the context of CLR/.Net concurrently. To take advantage of this ooRexx class it is necessary to subclass it, and to implement the abstract method "run".
Methods: run start


Routines

Routine: clr.addAssembly
Accessmodifier PUBLIC
Returns Value Yes
PARSE ARG: assemblyName
Description: Routine that queries all exported types defined in the supplied assembly and caches their full names and assembly names in .clr.dir~assemblyName.
param assemblyName the assembly name to work on

Routine: clr.box
Accessmodifier PUBLIC
Returns Value Yes
USE strict ARG: typeIndicator, strValue
Description: Boxes (wraps) a Rexx string representing a primitive type into a CLR object using a CLR wrapper class. Rexx strings are turned into CLR string objects (type: System.String).
param typeIndicator one of the following strings:
  • "System.String", "STring"
  • "System.Boolean", "BOolean"
  • "System.Byte", "BYte"
  • "System.SByte", "SByte"
  • "System.Char", "CHAR"
  • "System.Decimal", "DEcimal"
  • "System.Double", "DOuble"
  • "System.Int16", "INT16"
  • "System.UInt16", "UINT16"
  • "System.Int32", "INT32"
  • "System.UInt32", "UINT32"
  • "System.Int64", "INT64"
  • "System.UInt64", "UINT64"
  • "System.Single", "SIngle"

param strValue the Rexx string containing the primitive value or plain string to box/wrap/convert
return the boxed CLR value, the CLR string value or .nil if .nil was supplied

Routine: clr.createArray
Accessmodifier PUBLIC
Returns Value Yes
use strict ARG: typeName, capacity
Description: Utility routine that allows creating a single dimensioned CLR array with the supplied type and capacity.
param typeName the fully qualified CLR type name
param capacity the capacity (a non-negative whole number)
return a System.Array instance (a CLR array object) of the specified type and capacity

Routine: clr.createEventHandler
Accessmodifier PUBLIC
Returns Value Yes
USE strict ARG: rexxEventHandler, rexxData=.nil
Description: Creates an instance of "system.EventHandler" with the Rexx event handler object to handle any events.
param rexxEventHandler a Rexx object that handles the events
param rexxData an optional Rexx object that will be supplied with each event (last event argument, appended by BSF4ooRexx, which is a Rexx directory object; the "rexxData" object can be retrieved from it using as index the value "USERDATA"; cf. BSF4ooRexx)
return an instance of "System.EventHandler", where the rexxEventHandler object will process the events

Routine: clr.FieldName
Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, fieldName
Description: Returns the mixed case property name matching caselessly the supplied field name in the supplied CLR type.
param clrType the CLR type to look for the supplied field name
param fieldName the name of the field to look for in the supplied clrType
return .nil if no field found in the type by the given name (comparisons are caseless) or the correctly spelled field name

Routine: clr.findAssemblyName
Accessmodifier PRIVATE
Returns Value Yes
USE strict ARG: typeName
Description: Determine and return the assembly name from a fully qualified type name.
param typeName fully qualified type name
return assembly name where the type gets exported

Routine: clr.findMatchingEvent
Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, eventName
Description: Returns the mixed case event name matching caselessly the supplied event name in the supplied CLR type.
param clrType the CLR type to look for the supplied event name
param fieldName the name of the event to look for in the supplied clrType
return .nil if no event found in the type by the given name (comparisons are caseless) or the correctly spelled event name

Routine: clr.import
Accessmodifier PUBLIC
Returns Value Yes
USE strict ARG: typeName, rexxName4local=.nil
Description: Routine to import a CLR/.Net class, the imported class understands the NEW-message.
param typeName the fully qualified CLR/.net type name
param rexxName4local the name to store in .local, defaults to .nil, which inhibits the default entry of the CLR::CLR_IMPORT
return a Rexx class object, subclassing CLR_Class, proxying the CLR/.Net type object

Routine: clr.initAssemblies
Accessmodifier PRIVATE
Returns Value No
Description: Routine that makes sure that the fully qualified names of the exported types defined in the assemblies "mscorlib" and "System" get cached with their assembly names in .clr.dir~assemblyName.

Routine: clr.MethodName
Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, methodName
Description: Returns the mixed case method name matching caselessly the supplied method name in the supplied CLR type.
param clrType the CLR type to look for the supplied method name
param methodName the name of the method to look for in the supplied clrType
return .nil if no method found in the type by the given name (comparisons are caseless) or the correctly spelled method name

Routine: clr.PropertyName
Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, propertyName
Description: Returns the mixed case property name matching caselessly the supplied property name in the supplied CLR type.
param clrType the CLR type to look for the supplied method name
param propertyName the name of the property to look for in the supplied clrType
return .nil if no property found in the type by the given name (comparisons are caseless) or the correctly spelled property name

Routine: clr.unbox
Accessmodifier PUBLIC
Returns Value Yes
USE ARG: clrObject
Description: Routine to turn values of boxed/wrapped CLR primitive types or System.String values to Rexx strings, otherwise returns argument unchanged.
param clrObject the CLR object to unbox or to turn into a Rexx string
return a Rexx string or the argument unchanged, if clrObject does not represent a boxed CLR value or a CLR string

Routine: clr.wrap
Accessmodifier PUBLIC
Returns Value Yes
USE ARG: value
Description: Processes received parameter "value" depending on its type. Always returns a CLR. If a CLR object which is a system.Enum, but not an instance of the CLR_Enum class, then an instance of CLR_Enum will be created and returned using the CLR object's clr.object and clr.type attributes.

If a Rexx string is supplied which can be represented as a number, then a CLR object representing a wrapped system.Int32, system.Int64 or system.Decimal gets returned, depending on the value range. Otherwise a system.String object gets returned

If a BSF (Java proxy) object is supplied it will be wrapped either as a CLR_Enum or as a CLR_Proxy object.
param value a CLR, a BSF or a Rexx string object
return a CLR object wrapping up the supplied value


Routine: pp.line
Accessmodifier PRIVATE
Returns Value Yes
use strict arg: lineNr
Description: Private utility method to "pretty-print" ooRexx line numbers in debug statements. Intended for taking advantage of the ooRexx class CLRLogger in this Rexx package.

Requires

Package: BSF.CLS

Source: work/svn/bsf4oorexx/trunk/bsf4oorexx.dev/oorexx.net/src/clr.cls


PUBLIC Class: CLR

Metaclass: Class

Description:
The class that represents CLR objects and which is responsible for interacting with the peer CLR object on behalf of the ooRexx programmer. An instance of this class holds a reference to the peer CLR object and a reference to that object's type to ease reflective interactions.

Init

init PUBLIC
Expose: clr.object clr.type
USE ARG: typeName, param=.nil, ...
Description: Constructor method.
param typeName the fully qualified name of a CLR type to instantiate
param param optionally one or more paramaters to pass on to the CLR constructor

Methods Summary

PUBLIC clr.dispatch
PUBLIC clr.import CLASS
PRIVATE clr.setPropertyValue CLASS
PUBLIC string
PUBLIC unknown CLASS

Attributes

Attribute: PUBLIC clr.object GET
Description: Getter attribute method to get the peer clr.object.
return the CLR object (a BSF object) that is a peer of the CLR object it represents

Attribute: PRIVATE clr.object SET
Description: Private setter attribute method to set the peer clr.object.
param the BSF (sic!) object that is the peer of the CLR object it represents

Attribute: PUBLIC clr.type GET
Description: Getter attribute method to get the clr.type of the clr.object.
return the CLR type object (a BSF object) that is the type of the clr.object

Attribute: PRIVATE clr.type SET
Description: Private setter attribute method to set the peer clr.type.
param the BSF (sic!) object that is the CLR type of clr.object

Methods

Method: clr.dispatch
Accessmodifier: PUBLIC
Returns Value: Yes
PARSE ARG: messageName
Description: Directly forwards a message to the "unknown" method of this CLR. This is needed if a method on .NET side is to be called which is named like a method on the ooRexx side. Examples are the ooRexx methods "class", "start" or "init" (inherited from the ooRexx root class .Object).
param messageName the name of the .NET message

Method: clr.import
Accessmodifier: PUBLIC
Returns Value: Yes
Option(s): CLASS
USE strict ARG: typeName, rexxName4Local=(typeName)
Description: Class method to import a CLR type into ooRexx and allow that type to be treated as an ooRexx class that possesses the new class method to create instances of the CLR type it represents.
param typeName the fully qualified type name which should be imported into ooRexx as an ooRexx class proxy
param rexxName4Local optional string which gets used to store the imported class proxy in the .local directory. Prepending a dot to that name (using it as an environment symbol) will cause ooRexx to automatically search for this entry in .nil. If this argument is given and set to .nil, then no entry will be created in the ooRexx .local directory.
return the ooRexx class object representing the CLR type, i.e. an instance of class "CLR_Class"

Method: clr.setPropertyValue
Accessmodifier: PRIVATE
Returns Value: Yes
Option(s): CLASS
Expose: clr.object clr.type
USE ARG: propertyName, propertyValue
Description: Private method that sets the specified property to the supplied value in the .NET object proxied via this CLR proxy object.
param propertyName the name of the property to be set
param propertyValue the value the property is to be set to eturn self

Method: string
Accessmodifier: PUBLIC
Returns Value: Yes
Expose: clr.object
Description: The method that renders the CLR proxy object in a format that indicates its type by including the CLR type name.
return a string representing the CLR proxy object

Method: unknown
Accessmodifier: PUBLIC
Returns Value: Yes
Option(s): CLASS
Expose: clr.object clr.type
USE ARG: msgName, msgArgs
Description: The unknown method tries to find methods, properties, fields or events (in that order) that match the unknown message name. It will carry out the appropriate operation. The implementation allows also to assign new values to CLR properties, if the ooRexx programmer employs them like an ooRexx attribute. In addition it allows for adding an event handler to an event object by the name of the message.
param msgName the name of the message that was not understood (no method by that name was found)
param msgArgs an array containing the arguments supplied with the message, if any
return returns the appropriate object or .nil, if appropriate

Instantiated Classes

CLR_Class CLR_Event CLR_Proxy CLRLogger

Requires

Package: BSF.CLS


PRIVATE Class: CLR_Class

Subclass: clr
Metaclass: Class

Description:
The proxy class representing an imported CLR type. When sending messages to the class proxy object, then resolution starts with the static scope first, followed by the instance scope, if the static scope could not be resolved. The proxy class can be used to instantiate CLR objects in the ooRexx style by merely sending the proxy class the message "NEW", supplying the arguments, if any.

Init

init PUBLIC
Description: Constructor that creates a CLR proxy object by means of reflection. Any supplied arguments will be relayed to CLR.

Methods Summary

PUBLIC unknown CLASS

Attributes

Attribute: PUBLIC clr.assembly CLASS
Description: Class attribute that stores the CLR assembly object that was used to load this type.

Attribute: PUBLIC clr.clzProxy CLASS
Description: Class attribute that stores the CLR instance that represents this CLR type. Its clr.object and clr.type attributes refer the clr.object Java proxy, thereby allowing the resolution of messages that are aimed at static members (methods, properties, fields, events) of the proxied CLR type.

Attribute: PUBLIC clr.object CLASS
Description: Class attribute that stores the proxy Java type object (an instance of BSF) that represents the CLR type.

Attribute: PUBLIC clr.proxy CLASS
Description: Class attribute that stores the CLR instance that represents this CLR type. Its clr.object and clr.type attributes refer the clr.object and clr.type, respectively. This allows the resolution of messages that are aimed at instance members (methods, properties, fields, events) of the proxied CLR type.

Attribute: PUBLIC clr.type CLASS
Description: Class attribute that stores the proxy Java type object (an instance of BSF) that represents the type/class object of clr.object.

Attribute: PUBLIC clr.typeName CLASS
Description: Class attribute that stores the CLR type name for which this class object is a peer.

Methods

Method: unknown
Accessmodifier: PUBLIC
Returns Value: Yes
Option(s): CLASS
Expose: clr.object clr.type clr.proxy clr.clzProxy
Description: Class unknown method that first forwards a message to clr.clzProxy which in effect tries to resolve the static context. If this is not successful (the CLR unknown method raises a condition), then another attempt is made by forwarding the message to clr.proxy which resolves the instance context.

Instantiated Classes

CLRLogger

Requires

Package: BSF.CLS


PRIVATE Class: CLR_Enum

Subclass: CLR_PROXY
Metaclass: Class

Description:
Class to allow to wrap Enum values in order to ease comparing with Rexx strings. It implements the Rexx comparison methods "=", "\=", "<>", and "><" which in turn accept as the "other" object either another CLR Enumeration object (a proxy for an instance of a "System.Enum" type) or a Rexx string representing the Enum string value.

Methods Summary

PUBLIC <>
PUBLIC =
PUBLIC >< CLASS
PUBLIC \=

Methods

Method: <>
Accessmodifier: PUBLIC
Returns Value: No
Description: A synonym for method "\=", to which the invocation gets forwarded to.

Method: =
Accessmodifier: PUBLIC
Returns Value: Yes
use strict arg: otherValue
Description: The equal comparison method. If "other" is a Rexx string then the comparison is carried out caselessly.
param other mandatory value, either a CLR proxy for a "System.Enum" instance or a Rexx string
return .true if the this value and "other" value are the same, .false else

Method: ><
Accessmodifier: PUBLIC
Returns Value: No
Option(s): CLASS
Description: A synonym for method "\=", to which the invocation gets forwarded to.

Method: \=
Accessmodifier: PUBLIC
Returns Value: Yes
use strict arg: otherValue
Description: The unequal comparison method. If "other" is a Rexx string then the comparison is carried out caselessly.
param other mandatory value, either a CLR proxy for a "System.Enum" instance or a Rexx string
return .true if the this value and "other" value are not the same, .false else

Instantiated Classes

CLRLogger

Requires

Package: BSF.CLS


PRIVATE Class: CLR_Event

Subclass: CLR_Proxy
Metaclass: Class

Description:
A proxy class to ease adding and removing event handler to/from CLR objects.

Init

init
Expose: eventName
use strict arg: o, eventName
Description: Constructor.
param o the CLR object for which event handling should become possible
param eventName the event name for which adding and removing event handler should become possible

Methods Summary

PUBLIC +
PUBLIC - ABSTRACT CLASS

Attributes

Attribute: PUBLIC eventName GET
Description: Attribute getter method to allow querying the event name for which this object allows to add or remove event handlers.

Methods

Method: +
Accessmodifier: PUBLIC
Returns Value: Yes
Expose: eventName
USE ARG: eventHandler
Description: Method to add an event handler for the named event eventName of the CLR object.
param eventHandler a Java Rexx proxy to be added as an event handler
return self

Method: -
Accessmodifier: PUBLIC
Returns Value: Yes
Option(s): ABSTRACT CLASS
Expose: eventName
USE ARG: eventHandler
Description: Method to remove an event handler for the named event eventName from the CLR object.
param eventHandler a Java Rexx proxy serving as an event handler that should be removed
return self

Instantiated Classes

CLRLogger

Requires

Package: BSF.CLS


Class: CLR_Proxy

Subclass: clr
Metaclass: Class

Description:
This class serves as a proxy for CLR/.Net objects of any type, returned from CLR/.Net. The routine clr.wrap() will use this class, if a pure BSF (Java) object is supplied, assuming it is from CLR/.Net.
author Rony G. Flatscher
since 2016-06-18

Init

init
use strict arg: argObj, argType=.nil
Description: Constructor.
param argObj mandatory object, can be a CLR or BSF object
param argType optional object, if supplied, must be a BSF object

Requires

Package: BSF.CLS


PUBLIC Class: CLRLogger

Metaclass: Class

Description:
Utility class to allow logging merely by sending the messages "FATAL", "ERROR", "WARN", "INFO", "DEBUG" or "TRACE" with the log text as argument to the class object .CLRLogger. All interaction is with the class object directly, there is no instance one is allowed to create.

Init

init PUBLIC
Expose: logLevels logLevel doLogging logStream
Description: Constructor, defining the log levels "OFF", "FATAL", "ERROR", * "WARN", "INFO", "DEBUG" and "TRACE", setting the attribute logLevel to "OFF". Determines whether the ooRexx version in use has the .traceOutput stream, if not the .error stream is used for log output instead.

Methods Summary

PUBLIC unknown CLASS

Attributes

Attribute: PUBLIC doLogging GET CLASS
Description: Getter attribute method that indicates whether log messages get processed.
return .true if logging is active, .false if not

Attribute: PUBLIC logLevel GET CLASS
Description: Getter attribute method that returns the current logLevel setting.
return one of the strings: "OFF", "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE"

Attribute: PUBLIC logLevel SET CLASS
Description: Setter attribute method that returns a copy of the log levels directory. If set to "OFF", then the attribute doLogging is set to .false, otherwise to .true.
param desiredLevel, one of "OFF", "FATAL", "ERROR", "WARN", "INFO", "DEBUG" and "TRACE".

Attribute: PUBLIC logLevels GET CLASS
Description: Getter attribute method that returns a copy of the log levels directory.
return copy of logLevels directory object

Methods

Method: unknown
Accessmodifier: PUBLIC
Returns Value: Yes
Option(s): CLASS
Expose: logLevel logLevels logStream
USE ARG: levelName, args
Description: Unknown method that handles the messages "OFF", "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", depending on the value of the attribute logLevel. The handling is determined by the following relation: "OFF" < "FATAL" < "ERROR" < "WARN" < "INFO" < "DEBUG" < "TRACE". Hence, if the attribute logLevel is set to "OFF" no log messages get displayed. By contrast, if logLevel is set to "TRACE" all log messages get displayed.
param levelName the unknown message name
param args an array object containing the arguments supplied with the unknown message

Requires

Package: BSF.CLS


PUBLIC Class: CLRThread

Metaclass: Class

Description:
A class that uses "java.lang.Thread" to create a thread for executing Rexx code in the context of CLR/.Net concurrently. To take advantage of this ooRexx class it is necessary to subclass it, and to implement the abstract method "run".

Methods Summary

PUBLIC run ABSTRACT CLASS
PUBLIC start ABSTRACT

Methods

Method: run
Accessmodifier: PUBLIC
Returns Value: No
Option(s): ABSTRACT CLASS
Description: Abstract method that needs to be implemented in the subclassed Rexx class.

Method: start
Accessmodifier: PUBLIC
Returns Value: No
Option(s): ABSTRACT
USE strict ARG: rexxData=.nil
Description: This method creates a new thread.
param rexxData optional, if supplied this Rexx object gets supplied, if a Java method invocation causes any Rexx method of the subclassed Rexx class to be executed. In that case BSF4ooRexx will append a "slotDir" Rexx directory argument to the Java arguments, that will have an entry "USERDATA" returning this Rexx object "rexxData"

Instantiated Classes

CLRLogger

Requires

Package: BSF.CLS


PUBLIC Routine: clr.addAssembly

Accessmodifier PUBLIC
Returns Value Yes
PARSE ARG: assemblyName
Description: Routine that queries all exported types defined in the supplied assembly and caches their full names and assembly names in .clr.dir~assemblyName.
param assemblyName the assembly name to work on

Requires

Package: BSF.CLS



PUBLIC Routine: clr.box

Accessmodifier PUBLIC
Returns Value Yes
USE strict ARG: typeIndicator, strValue
Description: Boxes (wraps) a Rexx string representing a primitive type into a CLR object using a CLR wrapper class. Rexx strings are turned into CLR string objects (type: System.String).
param typeIndicator one of the following strings:
  • "System.String", "STring"
  • "System.Boolean", "BOolean"
  • "System.Byte", "BYte"
  • "System.SByte", "SByte"
  • "System.Char", "CHAR"
  • "System.Decimal", "DEcimal"
  • "System.Double", "DOuble"
  • "System.Int16", "INT16"
  • "System.UInt16", "UINT16"
  • "System.Int32", "INT32"
  • "System.UInt32", "UINT32"
  • "System.Int64", "INT64"
  • "System.UInt64", "UINT64"
  • "System.Single", "SIngle"

param strValue the Rexx string containing the primitive value or plain string to box/wrap/convert
return the boxed CLR value, the CLR string value or .nil if .nil was supplied

Requires

Package: BSF.CLS



PUBLIC Routine: clr.createArray

Accessmodifier PUBLIC
Returns Value Yes
use strict ARG: typeName, capacity
Description: Utility routine that allows creating a single dimensioned CLR array with the supplied type and capacity.
param typeName the fully qualified CLR type name
param capacity the capacity (a non-negative whole number)
return a System.Array instance (a CLR array object) of the specified type and capacity

Requires

Package: BSF.CLS



PUBLIC Routine: clr.createEventHandler

Accessmodifier PUBLIC
Returns Value Yes
USE strict ARG: rexxEventHandler, rexxData=.nil
Description: Creates an instance of "system.EventHandler" with the Rexx event handler object to handle any events.
param rexxEventHandler a Rexx object that handles the events
param rexxData an optional Rexx object that will be supplied with each event (last event argument, appended by BSF4ooRexx, which is a Rexx directory object; the "rexxData" object can be retrieved from it using as index the value "USERDATA"; cf. BSF4ooRexx)
return an instance of "System.EventHandler", where the rexxEventHandler object will process the events

Requires

Package: BSF.CLS



PRIVATE Routine: clr.FieldName

Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, fieldName
Description: Returns the mixed case property name matching caselessly the supplied field name in the supplied CLR type.
param clrType the CLR type to look for the supplied field name
param fieldName the name of the field to look for in the supplied clrType
return .nil if no field found in the type by the given name (comparisons are caseless) or the correctly spelled field name

Requires

Package: BSF.CLS



PRIVATE Routine: clr.findAssemblyName

Accessmodifier PRIVATE
Returns Value Yes
Options CLASS
USE strict ARG: typeName
Description: Determine and return the assembly name from a fully qualified type name.
param typeName fully qualified type name
return assembly name where the type gets exported

Requires

Package: BSF.CLS



PRIVATE Routine: clr.findMatchingEvent

Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, eventName
Description: Returns the mixed case event name matching caselessly the supplied event name in the supplied CLR type.
param clrType the CLR type to look for the supplied event name
param fieldName the name of the event to look for in the supplied clrType
return .nil if no event found in the type by the given name (comparisons are caseless) or the correctly spelled event name

Requires

Package: BSF.CLS



PUBLIC Routine: clr.import

Accessmodifier PUBLIC
Returns Value Yes
USE strict ARG: typeName, rexxName4local=.nil
Description: Routine to import a CLR/.Net class, the imported class understands the NEW-message.
param typeName the fully qualified CLR/.net type name
param rexxName4local the name to store in .local, defaults to .nil, which inhibits the default entry of the CLR::CLR_IMPORT
return a Rexx class object, subclassing CLR_Class, proxying the CLR/.Net type object

Requires

Package: BSF.CLS



PRIVATE Routine: clr.initAssemblies

Accessmodifier PRIVATE
Returns Value No
Description: Routine that makes sure that the fully qualified names of the exported types defined in the assemblies "mscorlib" and "System" get cached with their assembly names in .clr.dir~assemblyName.

Requires

Package: BSF.CLS



PRIVATE Routine: clr.MethodName

Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, methodName
Description: Returns the mixed case method name matching caselessly the supplied method name in the supplied CLR type.
param clrType the CLR type to look for the supplied method name
param methodName the name of the method to look for in the supplied clrType
return .nil if no method found in the type by the given name (comparisons are caseless) or the correctly spelled method name

Requires

Package: BSF.CLS



PRIVATE Routine: clr.PropertyName

Accessmodifier PRIVATE
Returns Value Yes
USE ARG: clrType, propertyName
Description: Returns the mixed case property name matching caselessly the supplied property name in the supplied CLR type.
param clrType the CLR type to look for the supplied method name
param propertyName the name of the property to look for in the supplied clrType
return .nil if no property found in the type by the given name (comparisons are caseless) or the correctly spelled property name

Requires

Package: BSF.CLS



PUBLIC Routine: clr.unbox

Accessmodifier PUBLIC
Returns Value Yes
Options CLASS
USE ARG: clrObject
Description: Routine to turn values of boxed/wrapped CLR primitive types or System.String values to Rexx strings, otherwise returns argument unchanged.
param clrObject the CLR object to unbox or to turn into a Rexx string
return a Rexx string or the argument unchanged, if clrObject does not represent a boxed CLR value or a CLR string

Requires

Package: BSF.CLS



PUBLIC Routine: clr.wrap

Accessmodifier PUBLIC
Returns Value Yes
USE ARG: value
Description: Processes received parameter "value" depending on its type. Always returns a CLR. If a CLR object which is a system.Enum, but not an instance of the CLR_Enum class, then an instance of CLR_Enum will be created and returned using the CLR object's clr.object and clr.type attributes.

If a Rexx string is supplied which can be represented as a number, then a CLR object representing a wrapped system.Int32, system.Int64 or system.Decimal gets returned, depending on the value range. Otherwise a system.String object gets returned

If a BSF (Java proxy) object is supplied it will be wrapped either as a CLR_Enum or as a CLR_Proxy object.
param value a CLR, a BSF or a Rexx string object
return a CLR object wrapping up the supplied value

Requires

Package: BSF.CLS



PRIVATE Routine: pp.line

Accessmodifier PRIVATE
Returns Value Yes
use strict arg: lineNr
Description: Private utility method to "pretty-print" ooRexx line numbers in debug statements. Intended for taking advantage of the ooRexx class CLRLogger in this Rexx package.

Requires

Package: BSF.CLS