We override the behavior of equals, compare and hashcode to make chars seem as much like strings as possible. In Python there is no difference between these types.
Helper class that all custom type descriptor implementations call for the bulk of their implementation.
ExtensibleString is the base class that is used for types the user defines that derive from string. It carries along with it the string's value and our converter recognizes it as a string.
InstanceOps contains methods that get added to CLS types depending on what methods and constructors they define. These have not been added directly to PythonType since they need to be added conditionally. Possibilities include: __new__, one of 3 __new__ sets can be added: DefaultNew - This is the __new__ used for a PythonType (list, dict, object, etc...) that has only 1 default public constructor that takes no parameters. These types are mutable types, and __new__ returns a new instance of the type, and __init__ can be used to re-initialize the types. This __new__ allows an unlimited number of arguments to be passed if a non-default __init__ is also defined. NonDefaultNew - This is used when a type has more than one constructor, or only has one that takes more than zero parameters. This __new__ does not allow an arbitrary # of extra arguments. DefaultNewCls - This is the default new used for CLS types that have only a single ctor w/ an arbitray number of arguments. This constructor allows setting of properties based upon an extra set of kw-args, e.g.: System.Windows.Forms.Button(Text='abc'). It is only used on non-Python types. __init__: For types that do not define __init__ we have an __init__ function that takes an unlimited number of arguments and does nothing. All types share the same reference to 1 instance of this. next: Defined when a type is an enumerator to expose the Python iter protocol. repr: Added for types that override ToString get: added for types that implement IDescriptor
Contains Python extension methods that are added to object
Contains functions that are called directly from generated code to perform low-level runtime functionality.
StringOps is the static class that contains the methods defined on strings, i.e. 'abc' Here we define all of the methods that a Python user would see when doing dir('abc'). If the user is running in a CLS aware context they will also see all of the methods defined in the CLS System.String type.
Helper clas for calls to unicode(...). We generate code which checks if unicode is str and if it is we redirect those calls to the unicode function defined on this class.
Provides a debug view for user defined types. This class is declared as public because it is referred to from generated code. You should not use this class.