Permalink
Commits on Sep 4, 2018
  1. [mono-api-tools] Split properly for cross-platform (#9918)

    mattleibow authored and akoeplinger committed Sep 4, 2018
    When creating a diff on windows, the lines are split on the `\n` so the `\r\n` results in multiple lines:
    
    **START SNIP**
    Obsoleted methods:
    
    ```diff
     [Obsolete ("Use AddRoundRect instead.")]
    
     public void AddRoundedRect (SKRect rect, float rx, float ry, SKPathDirection dir);
    ```
    **END SNIP**
    
    This PR makes sure to use the platform line endings everywhere. When adding line endings, use the same that `StringBuilder` uses - platform endings. This makes it easy to split - just use the platform as that is what everyone is using.
Commits on Aug 3, 2018
  1. [mono-api-tools] Make the tools work as libraries (#9793)

    mattleibow authored and marek-safar committed Aug 3, 2018
    Right now, the set of mono-api-tools only works as console apps. This PR will make them work as normal dlls so they can be consumed by other apps and libraries. They will still work as .exes, so nothing visibly changes for existing users.
    
    The motivation for this is for some build process or third party tool to take an assembly and generate an .xml doc from it. Since the writer is in-memory, the tool can then parse the .xml and do whatever it needs to. The same goes for the diff tools - if the diff happens in-memory, then the tool can process it without having to save and then load from the file system.
    
    ## Libraries
     - [x] mono-api-info -> `Mono.ApiTools.ApiInfo`
     - [x] mono-api-diff -> `Mono.ApiTools.ApiDiff`
     - [x] mono-api-html -> `Mono.ApiTools.ApiDiffFormatted`
    
    ## Major changes
     - the existing `Driver` classes are now just thin wrappers to parse the args and pass it on to the generators
     - the "options" are now abstracted into config classes to avoid methods with numerous parameters
     - the APIs have new support for reading assembly and info `Stream`s instead of just file paths
     - added compiler flags to control the namespace and type visibility to make the library APIs nicer
     - added compiler flag to remove the `Driver` class and `Mono.Options` dependencies
     - the mono-api-info tool has some more options to allow it to run on libraries, and ignore dependencies that it cannot find - this makes it easier to use so that the entire dependency chain does not have to be loaded just to output the current assembly API
    
    ## Compiler defines
     - `EXCLUDE_DRIVER` will remove the console entry point and remove the dependency of Mono.Options
     - `USE_MONO_API_TOOLS_NAMESPACE` will switch the namespace to `Mono.ApiTools` so that libraries can have a nice API
     - `USE_INTERNAL_VISIBILITY` will make any non-essential, `public` APIs turn `internal`
    
    ## Review points
     - are there any variables/fields that are still static?
     - are there any exposed types/members that need to be hidden?
     - are the new names for the APIs and config classes OK?
     - are my whitespaces according to the guidelines?
     - did I go horribly wrong?
Commits on Jul 17, 2018
  1. Add support for an output path in mono-api-diff (#9556)

    mattleibow authored and marek-safar committed Jul 17, 2018
    Rather than always writing to the std out, provide an option to write to a file. This makes things easier for tooling by not requiring `RedirectStandardOutput = true`
Commits on Jul 15, 2018
  1. [mono-api-diff] Moved mono-api-diff into its own tools directory (#9563)

    mattleibow authored and marek-safar committed Jul 15, 2018
    * [mono-api-diff] Moved mono-api-diff into its own tools directory
    
    * [mono-api-diff] Making the requested changes
Commits on Apr 20, 2017
  1. [Mono.Options] CommandSet and PCL/NetStandard Support (#4719)

    mattleibow authored and jonpryor committed Apr 20, 2017
    When `PCL` is defined, the intent is that the resulting
    `Mono.Options.dll` assembly will be usable on all PCL profiles.
    This includes "silly" profiles such as Profile259, which lacks the
    `System.Console` type, meaning e.g. `Console.Out` doesn't exist.
    
    Unfortunately, the
    `CommandSet(string, Converter<string, string, TextWriter, TextWriter)`
    constructor would use `Console.Out` and `Console.Error` when the
    `TextWriter` parameters were `null`, meaning this constructor can't
    be provided for all PCL profiles.
    
    Altering the constructor to instead use `TextWriter.Null` would allow
    the constructor to be provided, but would be a *worse* experience,
    IMHO: anybody (everybody!) expecting the default values to
    "do something useful" will be sorely disappointed, as output and
    error messages would instead be dropped. :-(
    
    Instead, remove this constructor:
    
    	public CommandSet (string suite, MessageLocalizerConverter localizer = null, TextWriter output = null, TextWriter error = null);
    
    and replace it with these *two* constructors:
    
    	public CommandSet (string suite, MessageLocalizerConverter localizer = null)
    	public CommandSet (string suite, TextWriter output, TextWriter error, MessageLocalizerConverter localizer = null)
    
    The first constructor, which accepts no `TextWriter` parameters, is
    only provided in non-PCL builds, allowing it to use `Console.Out`.
    
    The second constructor is available in PCL profiles, and *requires*
    that `output` and `error` be non-`null`.
    
    Documentation has been updated accordingly.
Commits on Sep 1, 2016
  1. [Mono.Data.Sqlite] Using the Version class to do the version comparis…

    mattleibow committed Sep 1, 2016
    …on correctly
  2. [Mono.Data.Sqlite] Instead of try/catch and dlopen/dlsym, use a cross…

    mattleibow committed Sep 1, 2016
    …-platform, correct way of determining API features: version
Commits on Aug 31, 2016
  1. [Mono.Data.Sqlite] Make the fields read-only

    mattleibow committed Aug 31, 2016
  2. [Mono.Data.Sqlite] Added iOS specific checks for entry point existence:

    mattleibow committed Aug 31, 2016
     - using dlfcn.dlsym to avoid P/Invoke exceptions
Commits on Apr 1, 2016
  1. [Mono.Options] Added support for Enums in the PCL version

    mattleibow committed Apr 1, 2016
     - Support for String to Enum
     - Support for Number to Enum
     - Support for Flags to Enum
     - Added a UnitTest
Commits on Feb 22, 2016
  1. [Mono.Options] Changed the code a bit so that it works with PCL

    mattleibow committed Feb 22, 2016
     - TypeDescriptor is unavailable, but basic conversion can be done using IConvertible
Commits on Feb 11, 2016
Commits on Oct 15, 2014
  1. [system] WebSocket continuation frame incorrectly handles the message…

    mattleibow committed Oct 15, 2014
    … type opcode
    
    When a frame marked with OPCODE 0, it is a continuation frame. This frame does not carry the message type and should be derived from the previous frame.
Commits on Sep 1, 2014
  1. [system.data] DataRows with a NULL RowError incorrectly indicated Has…

    mattleibow committed Sep 1, 2014
    …Error:
    
     - MS.NET allows RowError to be set to NULL, but will convert it to string.Empty
Commits on Aug 22, 2014
  1. [system.transactions] Throw exception when an invalid TimeSpan is pro…

    mattleibow committed Aug 22, 2014
    …vided:
    
     - MS.NET throws
     - prevent construction when an invalid (negative) timeout is provided
Commits on Jun 27, 2014
  1. [system.data] Appended the fix to correct the whitespace Expression a…

    mattleibow committed Jun 27, 2014
    …nd argument checking
    
     - Whitespace Espressions:
     -- if a column expression is a pure whitespace, use an empty string instead
     -- if a column expression is surrounded by whitespace, preserve whitespace
     -- if a column expression is null/empty, use an empty string
     - Get a row's column value:
     -- make sure we throw exceptions if the column we are looking at is null
     -- make sure we throw exceptions if we can't find the column with the provided name
  2. [system.data] BUGFIX: fixes issue with expression columns and IsNull:

    mattleibow committed Jun 27, 2014
     - bugzilla.xamarin.com issue 20925
     - if an expression column was added ayer there were rows, and then IsNull is called, the result is incorrect (it will always be true)
Commits on Aug 21, 2012
  1. UInt32 is too large for Int32

    mattleibow committed Aug 21, 2012
    Fix for overflow exception as mapping a UInt32 to Int32 fails.
    Changed mapping of UInt32 to Int64 instead.
    
    Line 192 was moved to 184:
    case `DbType.UInt32:` was moved to make it map to `_sql.Bind_Int64(...)`