diff --git a/tracking and telemetry/Client/.vs/Client/DesignTimeBuild/.dtbcache b/tracking and telemetry/Client/.vs/Client/DesignTimeBuild/.dtbcache index 71f848e..0a801ad 100644 Binary files a/tracking and telemetry/Client/.vs/Client/DesignTimeBuild/.dtbcache and b/tracking and telemetry/Client/.vs/Client/DesignTimeBuild/.dtbcache differ diff --git a/tracking and telemetry/Client/.vs/Client/v16/.suo b/tracking and telemetry/Client/.vs/Client/v16/.suo index afceaf9..4e37a1e 100644 Binary files a/tracking and telemetry/Client/.vs/Client/v16/.suo and b/tracking and telemetry/Client/.vs/Client/v16/.suo differ diff --git a/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide b/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide index e024d40..13e7853 100644 Binary files a/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide and b/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide differ diff --git a/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide-shm b/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide-shm deleted file mode 100644 index 4ec457e..0000000 Binary files a/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide-shm and /dev/null differ diff --git a/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide-wal b/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide-wal deleted file mode 100644 index f902da8..0000000 Binary files a/tracking and telemetry/Client/.vs/Client/v16/Server/sqlite3/storage.ide-wal and /dev/null differ diff --git a/tracking and telemetry/Client/Client.Designer.cs b/tracking and telemetry/Client/Client.Designer.cs index e69c5dc..c267639 100644 --- a/tracking and telemetry/Client/Client.Designer.cs +++ b/tracking and telemetry/Client/Client.Designer.cs @@ -34,7 +34,6 @@ this.serialPort1 = new System.IO.Ports.SerialPort(this.components); this.listBox1 = new System.Windows.Forms.ListBox(); this.richTextBox1 = new System.Windows.Forms.RichTextBox(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.mav_messages_Label = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.txt_vehicleType = new System.Windows.Forms.TextBox(); @@ -44,6 +43,9 @@ this.label3 = new System.Windows.Forms.Label(); this.txt_system = new System.Windows.Forms.TextBox(); this.label4 = new System.Windows.Forms.Label(); + this.gmap = new GMap.NET.WindowsForms.GMapControl(); + this.button2 = new System.Windows.Forms.Button(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // @@ -81,22 +83,12 @@ // richTextBox1 // this.richTextBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.richTextBox1.Location = new System.Drawing.Point(219, 234); + this.richTextBox1.Location = new System.Drawing.Point(211, 234); this.richTextBox1.Name = "richTextBox1"; - this.richTextBox1.Size = new System.Drawing.Size(815, 137); + this.richTextBox1.Size = new System.Drawing.Size(823, 137); this.richTextBox1.TabIndex = 4; this.richTextBox1.Text = ""; // - // pictureBox1 - // - this.pictureBox1.Image = global::Client.Properties.Resources._74674993_115153423241475_4772277731842850816_n; - this.pictureBox1.Location = new System.Drawing.Point(-1, 377); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(1048, 168); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox1.TabIndex = 5; - this.pictureBox1.TabStop = false; - // // mav_messages_Label // this.mav_messages_Label.AutoSize = true; @@ -184,11 +176,59 @@ this.label4.TabIndex = 13; this.label4.Text = "System Status:"; // + // gmap + // + this.gmap.Bearing = 0F; + this.gmap.CanDragMap = true; + this.gmap.EmptyTileColor = System.Drawing.Color.Navy; + this.gmap.GrayScaleMode = false; + this.gmap.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow; + this.gmap.LevelsKeepInMemmory = 5; + this.gmap.Location = new System.Drawing.Point(1040, 5); + this.gmap.MarkersEnabled = true; + this.gmap.MaxZoom = 18; + this.gmap.MinZoom = 2; + this.gmap.MouseWheelZoomEnabled = true; + this.gmap.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; + this.gmap.Name = "gmap"; + this.gmap.NegativeMode = false; + this.gmap.PolygonsEnabled = true; + this.gmap.RetryLoadTile = 0; + this.gmap.RoutesEnabled = true; + this.gmap.ScaleMode = GMap.NET.WindowsForms.ScaleModes.Integer; + this.gmap.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225))))); + this.gmap.ShowTileGridLines = false; + this.gmap.Size = new System.Drawing.Size(910, 540); + this.gmap.TabIndex = 15; + this.gmap.Zoom = 13D; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(411, 159); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(170, 38); + this.button2.TabIndex = 16; + this.button2.Text = "button2"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // pictureBox1 + // + this.pictureBox1.Image = global::Client.Properties.Resources._74674993_115153423241475_4772277731842850816_n; + this.pictureBox1.Location = new System.Drawing.Point(-1, 377); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(1035, 168); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 5; + this.pictureBox1.TabStop = false; + // // client // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1046, 545); + this.ClientSize = new System.Drawing.Size(1950, 545); + this.Controls.Add(this.button2); + this.Controls.Add(this.gmap); this.Controls.Add(this.txt_system); this.Controls.Add(this.label4); this.Controls.Add(this.txt_baseMode); @@ -205,7 +245,7 @@ this.Controls.Add(this.CMB_comport); this.Name = "client"; this.Text = "Form1"; - this.Load += new System.EventHandler(this.simpleexample_Load); + this.Load += new System.EventHandler(this.client_Load); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -229,6 +269,8 @@ private System.Windows.Forms.Label label3; private System.Windows.Forms.TextBox txt_system; private System.Windows.Forms.Label label4; + private GMap.NET.WindowsForms.GMapControl gmap; + private System.Windows.Forms.Button button2; } } diff --git a/tracking and telemetry/Client/Client.cs b/tracking and telemetry/Client/Client.cs index c4bd149..d3fd920 100644 --- a/tracking and telemetry/Client/Client.cs +++ b/tracking and telemetry/Client/Client.cs @@ -10,6 +10,10 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using GMap.NET; +using GMap.NET.WindowsForms; +using GMap.NET.WindowsForms.Markers; +using GMap.NET.MapProviders; namespace Client { @@ -17,7 +21,6 @@ namespace Client public partial class client : Form { - MAVLink.MavlinkParse mavlink = new MAVLink.MavlinkParse(); // locking to prevent multiple reads on serial port object readlock = new object(); @@ -186,9 +189,16 @@ namespace Client } - private void simpleexample_Load(object sender, EventArgs e) + private void client_Load(object sender, EventArgs e) { + gmap.MapProvider = GMap.NET.MapProviders.GMapProviders.OpenStreetMap; + GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly; + gmap.ShowCenter = false; + gmap.SetPositionByKeywords("Paris, France"); + //gmap.ShowCenter = false; + + } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) @@ -200,5 +210,22 @@ namespace Client { } + + private void gmap_Load(object sender, EventArgs e) + { + + } + + private void button2_Click(object sender, EventArgs e) + { + + var original = new Bitmap(Properties.Resources.drone); + Bitmap resized = new Bitmap(original, new Size(original.Width / 8, original.Height / 8)); + + GMapOverlay markers = new GMapOverlay("markers"); + GMapMarker marker = new GMarkerGoogle(new PointLatLng(48.8617774, 2.349272), new Bitmap(resized)); + markers.Markers.Add(marker); + gmap.Overlays.Add(markers); + } } } diff --git a/tracking and telemetry/Client/Client.csproj b/tracking and telemetry/Client/Client.csproj index de53084..6eef51f 100644 --- a/tracking and telemetry/Client/Client.csproj +++ b/tracking and telemetry/Client/Client.csproj @@ -36,6 +36,14 @@ + + False + ..\..\..\GMap.NET.Core.dll + + + False + ..\..\..\GMap.NET.WindowsForms.dll + packages\IronPython.2.7.9\lib\net45\IronPython.dll @@ -628,6 +636,7 @@ + diff --git a/tracking and telemetry/Client/Properties/Resources.Designer.cs b/tracking and telemetry/Client/Properties/Resources.Designer.cs index 1824b59..ee96159 100644 --- a/tracking and telemetry/Client/Properties/Resources.Designer.cs +++ b/tracking and telemetry/Client/Properties/Resources.Designer.cs @@ -69,5 +69,15 @@ namespace Client.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap drone { + get { + object obj = ResourceManager.GetObject("drone", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/tracking and telemetry/Client/Properties/Resources.resx b/tracking and telemetry/Client/Properties/Resources.resx index f7508bc..444bc8e 100644 --- a/tracking and telemetry/Client/Properties/Resources.resx +++ b/tracking and telemetry/Client/Properties/Resources.resx @@ -121,4 +121,7 @@ ..\Resources\74674993_115153423241475_4772277731842850816_n.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\drone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/tracking and telemetry/Client/Resources/drone.png b/tracking and telemetry/Client/Resources/drone.png new file mode 100644 index 0000000..09b740f Binary files /dev/null and b/tracking and telemetry/Client/Resources/drone.png differ diff --git a/tracking and telemetry/Client/bin/Debug/Client.exe b/tracking and telemetry/Client/bin/Debug/Client.exe index bc12f52..7fd13b2 100644 Binary files a/tracking and telemetry/Client/bin/Debug/Client.exe and b/tracking and telemetry/Client/bin/Debug/Client.exe differ diff --git a/tracking and telemetry/Client/bin/Debug/Client.pdb b/tracking and telemetry/Client/bin/Debug/Client.pdb index 371092f..222d3be 100644 Binary files a/tracking and telemetry/Client/bin/Debug/Client.pdb and b/tracking and telemetry/Client/bin/Debug/Client.pdb differ diff --git a/tracking and telemetry/Client/bin/Debug/Enums.NET.dll b/tracking and telemetry/Client/bin/Debug/Enums.NET.dll deleted file mode 100644 index 7e44096..0000000 Binary files a/tracking and telemetry/Client/bin/Debug/Enums.NET.dll and /dev/null differ diff --git a/tracking and telemetry/Client/bin/Debug/Enums.NET.pdb b/tracking and telemetry/Client/bin/Debug/Enums.NET.pdb deleted file mode 100644 index dc870a9..0000000 Binary files a/tracking and telemetry/Client/bin/Debug/Enums.NET.pdb and /dev/null differ diff --git a/tracking and telemetry/Client/bin/Debug/Enums.NET.xml b/tracking and telemetry/Client/bin/Debug/Enums.NET.xml deleted file mode 100644 index 8df12bb..0000000 --- a/tracking and telemetry/Client/bin/Debug/Enums.NET.xml +++ /dev/null @@ -1,6882 +0,0 @@ - - - - Enums.NET - - - - - An collection. - - - - - The indexer. - - The index of the to retrieve. - The at the specified - - - - The number of s. - - - - - Indicates if the collection contains a . - - The attribute type. - Indication if the colleciton contains a . - - - - Indicates if the collection contains an that is an instance of . - - The attribute type. - Indication if the colleciton contains an that is an instance of . - is null. - - - - Retrieves the first in the collection if defined otherwise null. - - The attribute type. - The first in the collection if defined otherwise null. - - - - Retrieves the first that is an instance of in the collection if defined otherwise null. - - The attribute type. - The first that is an instance of in the collection if defined otherwise null. - is null. - - - - Retrieves all 's in the collection. - - The attribute type. - All 's in the collection. - - - - Retrieves all s that are an instance of in the collection. - - The attribute type. - All s that are an instance of in the collection. - is null. - - - - Returns an enumerator that iterates through the collection. - - An enumerator that iterates through the collection. - - - - An efficient enum comparer. - - - - - Gets a singleton instance of for the enum type provided. - - The enum type. - A singleton instance of for the enum type provided. - is null. - is not an enum type. - - - - Indicates if equals without boxing the values. - - The first enum value. - The second enum value. - Indication if equals without boxing the values. - - - - Retrieves a hash code for without boxing the value. - - The enum value. - Hash code for without boxing the value. - - - - Compares to without boxing the values. - - The first enum value. - The second enum value. - 1 if is greater than , 0 if equals , - and -1 if is less than . - - - - An efficient enum comparer which doesn't box the values. - - The enum type. - - - - The singleton instance of . - - is not an enum type. - - - - Indicates if equals without boxing the values. - - The first enum value. - The second enum value. - Indication if equals without boxing the values. - - - - Retrieves a hash code for without boxing the value. - - The enum value. - Hash code for without boxing the value. - - - - Compares to without boxing the values. - - The first enum value. - The second enum value. - 1 if is greater than , 0 if equals , - and -1 if is less than . - - - - Specifies the enum string representation formats. - - - - - Enum is represented by its decimal value. - - - - - Enum is represented by its hexadecimal value. - - - - - Enum is represented by its underlying value. - - - - - Enum is represented by its name. - - - - - Enum is represented by its . - - - - - Enum is represented by its . - - - - - Enum is represented by its . - - - - - An enum member which is composed of its name, value, and attributes. - - - - - The enum member's value. - - - - - The enum member's name. - - - - - The enum member's attributes. - - - - - Retrieves the enum member's name. - - The enum member's name. - - - - Retrieves the enum member's name. - - The enum member's name. - - - - Converts the enum member to its string representation using the specified . - - The output format to use. - A string representation of the enum member. - is an invalid value. - - - - Converts the enum member to its string representation using the specified . - - The output format to use. - A string representation of the enum member. - is an invalid value. - - - - Converts the enum member to its string representation using the specified formats. - - The first output format to use. - The second output format to use if using the first resolves to null. - A string representation of the enum member. - or is an invalid value. - - - - Converts the enum member to its string representation using the specified formats. - - The first output format to use. - The second output format to use if using the first resolves to null. - The third output format to use if using the first and second both resolve to null. - A string representation of the enum member. - , , or is an invalid value. - - - - Converts the enum member to its string representation using the specified . - - The output formats to use. - A string representation of the enum member. - contains an invalid value. - - - - Converts the enum member to its string representation using the specified . - - The output format to use. - A string representation of the enum member. - is null. - is an invalid value. - - - - Converts the enum member to its string representation using the specified . - - The output formats to use. - A string representation of the enum member. - is null. - contains an invalid value. - - - - Retrieves the enum member's underlying integral value. - - The enum member's underlying integral value. - - - - Converts to an . - - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - converted to a . - cannot fit within 's value range without overflowing. - - - - Converts to an . - - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - converted to a . - cannot fit within 's value range without overflowing. - - - - Converts to an . - - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - converted to a . - cannot fit within 's value range without overflowing. - - - - Converts to an . - - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - converted to a . - cannot fit within 's value range without overflowing. - - - - Retrieves the hash code of . - - The hash code of . - - - - Indicates whether the specified is equal to the current . - - The other . - Indication whether the specified is equal to the current . - - - - Indicates whether the specified is equal to the current . - - The other . - Indication whether the specified is equal to the current . - - - - An enum member which is composed of its name, value, and attributes. - - The enum type. - - - - The enum member's value. - - - - - Indicates whether the specified is equal to the current . - - The other . - Indication whether the specified is equal to the current . - - - - Specifies what enum members to include. - - - - - Include all enum members. - - - - - Include only distinct valued enum members. - - - - - Include each flag enum member. - - - - - Include enum members in display order using . - - - - - Static class that provides efficient type-safe enum operations through the use of cached enum members. - Many operations are exposed as C# extension methods for convenience. - - - - - Registers a custom with the specified formatter. - - The formatter. - A custom that is registered with the specified formatter. - is null. - - - - Retrieves the underlying type of . - - The enum type. - The underlying type of . - - - - Retrieves 's underlying type's . - - The enum type. - 's underlying type's . - - - - Retrieves 's member count. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's member count. - is an invalid value. - - - - Retrieves 's members in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members in increasing value order. - is an invalid value. - - - - Retrieves 's members' names in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members' names in increasing value order. - is an invalid value. - - - - Retrieves 's members' values in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members' values in increasing value order. - is an invalid value. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. Must be an , , , , - , , , , , , or Nullable of one of these. - The validation to perform on the result. - The specified converted to a . - is null. - is not a valid type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. Must be an , , , , - , , , , , , or Nullable of one of these. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is an invalid value. - - - - Indicates if is valid using the specified . - - The enum type. - The enum value. - The validation to perform on the value. - Indication if is valid. - is an invalid value. - - - - Indicates if is defined. - - The enum type. - The enum value. - Indication if is defined. - - - - Validates that is valid using the specified . - If it's not it throws an with the specified . - - The enum type. - The enum value. - The parameter name to be used if throwing an . - The validation to perform on the value. - for use in fluent API's and base constructor method calls. - is an invalid value - -or- - is invalid. - - - - Converts the specified to its string representation. - - The enum type. - The enum value. - A string representation of . - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - is an invalid value. - - - - Converts the specified to its string representation using the specified formats. - - The enum type. - The enum value. - The first output format to use. - The second output format to use if using the first resolves to null. - A string representation of . - or is an invalid value. - - - - Converts the specified to its string representation using the specified formats. - - The enum type. - The enum value. - The first output format to use. - The second output format to use if using the first resolves to null. - The third output format to use if using the first and second both resolve to null. - A string representation of . - , , or is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output formats to use. - A string representation of . - contains an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - is null. - is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output formats to use. - A string representation of . - is null. - contains an invalid value. - - - - Returns 's underlying integral value. - - The enum type. - The enum value. - 's underlying integral value. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - cannot fit within 's value range without overflowing. - - - - Retrieves the hash code of . It's more efficient as it doesn't require boxing and unboxing of . - - The enum type. - The enum value. - Hash code of . - - - - Indicates if equals . - - The enum type. - The enum value. - The other enum value. - Indication if equals . - - - - Compares to for ordering. - - The enum type. - The enum value. - The other enum value. - 1 if is greater than , 0 if equals , - and -1 if is less than . - - - - Retrieves 's enum member name if defined otherwise null. - - The enum type. - The enum value. - 's enum member name if defined otherwise null. - - - - Retrieves 's enum member attributes if defined otherwise null. - - The enum type. - The enum value. - 's enum member attributes if defined otherwise null. - - - - Retrieves an enum member with the specified if defined otherwise null. - - The enum type. - The enum value. - Enum member with the specified if defined otherwise null. - - - - Retrieves the enum member with the specified if defined otherwise null. - - The enum type. - The enum member name. - Enum member with the specified if defined otherwise null. - is null. - - - - Retrieves the enum member with the specified if defined otherwise null. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member name. - Indicates if the operation is case-insensitive. - Enum member with the specified if defined otherwise null. - is null. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - - The enum type. - The enum member's string representation. - The parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - - The enum type. - The enum member's string representation. - The first parsing enum format. - The second parsing enum format. - Enum member represented by if defined otherwise null. - is null. - or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - - The enum type. - The enum member's string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Enum member represented by if defined otherwise null. - is null. - , , or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - - The enum type. - The enum member's string representation. - The parsing enum formats. - Enum member represented by if defined otherwise null. - is null. - contains an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - Enum member represented by if defined otherwise null. - is null. - or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Enum member represented by if defined otherwise null. - is null. - , , or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - Enum member represented by if defined otherwise null. - is null. - contains an invalid value. - - - - Converts the string representation of one or more member names or values of to its respective value. - - The enum type. - The enum member names or values' string representation. - The value that is represented by . - is null. - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The parsing enum formats. - A value that is represented by . - is null. - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of to its respective value. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The value that is represented by . - is null. - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - contains an invalid value. - - - - Retrieves the underlying type of . - - The enum type. - The underlying type of . - is not an enum type. - - - - Retrieves 's underlying type's . - - The enum type. - 's underlying type's . - is not an enum type. - - - - Retrieves 's member count. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's member count. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's members in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members in increasing value order. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's members' names in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members' names in increasing value order. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's members' values in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members' values in increasing value order. - is not an enum type - -or- - is an invalid value. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. Must be an , , , , - , , , , , , or Nullable of one of these. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is not a valid type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. Must be an , , , , - , , , , , , or Nullable of one of these. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Indicates if is valid using the specified . - - The enum type. - The enum value. - The validation to perform on the value. - Indication if is valid. - is not an enum type - -or- - is an invalid value. - - - - Indicates if is defined. - - The enum type. - The enum value. - Indication if is defined. - is not an enum type. - - - - Validates that is valid using the specified . - If it's not it throws an with the specified . - - The enum type. - The enum value. - The parameter name to be used if throwing an . - The validation to perform on the value. - for use in fluent API's and base constructor method calls. - is not an enum type - -or- - is an invalid value - -or- - is invalid. - - - - Converts the specified to its string representation. - - The enum type. - The enum value. - A string representation of . - is not an enum type. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - is not an enum type. - is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - is not an enum type - -or- - is an invalid value. - - - - Converts the specified to its string representation using the specified formats. - - The enum type. - The enum value. - The first output format to use. - The second output format to use if using the first resolves to null. - A string representation of . - is not an enum type - -or- - or is an invalid value. - - - - Converts the specified to its string representation using the specified formats. - - The enum type. - The enum value. - The first output format to use. - The second output format to use if using the first resolves to null. - The third output format to use if using the first and second both resolve to null. - A string representation of . - is not an enum type - -or- - , , or is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output formats to use. - A string representation of . - is not an enum type - -or- - contains an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - is null. - is not an enum type. - is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output formats to use. - A string representation of . - is null. - is not an enum type - -or- - contains an invalid value. - - - - Returns 's underlying integral value. - - The enum type. - The enum value. - 's underlying integral value. - is not an enum type. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - is not an enum type. - cannot fit within 's value range without overflowing. - - - - Retrieves the hash code of . It's more efficient as it doesn't require boxing and unboxing of . - - The enum type. - The enum value. - Hash code of . - is not an enum type. - - - - Indicates if equals . - - The enum type. - The enum value. - The other enum value. - Indication if equals . - is not an enum type. - - - - Compares to for ordering. - - The enum type. - The enum value. - The other enum value. - 1 if is greater than , 0 if equals , - and -1 if is less than . - is not an enum type. - - - - Retrieves 's enum member name if defined otherwise null. - - The enum type. - The enum value. - 's enum member name if defined otherwise null. - is not an enum type. - - - - Retrieves 's enum member attributes if defined otherwise null. - - The enum type. - The enum value. - 's enum member attributes if defined otherwise null. - is not an enum type. - - - - Retrieves an enum member with the specified if defined otherwise null. - - The enum type. - The enum value. - Enum member with the specified if defined otherwise null. - is not an enum type. - - - - Retrieves the enum member with the specified if defined otherwise null. - Is case-sensitive. - - The enum type. - The enum member name. - Enum member with the specified if defined otherwise null. - is null. - is not an enum type. - - - - Retrieves the enum member with the specified if defined otherwise null. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member name. - Indicates if the operation is case-insensitive. - Enum member with the specified if defined otherwise null. - is null. - is not an enum type. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - - The enum type. - The enum member's string representation. - The parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - - The enum type. - The enum member's string representation. - The first parsing enum format. - The second parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - - The enum type. - The enum member's string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - - The enum type. - The enum member's string representation. - The parsing enum formats. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - Enum member represented by if defined otherwise null. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Converts the string representation of one or more member names or values of to its respective value. - - The enum type. - The enum member names or values' string representation. - A value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The parsing enum formats. - A value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of to its respective value. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - , , is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - , , is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is not an enum type - -or- - contains an invalid value. - - - - Retrieves the underlying type of . - - The enum type. - The underlying type of . - is null. - is not an enum type. - - - - Retrieves 's underlying type's . - - The enum type. - 's underlying type's . - is null. - is not an enum type. - - - - Retrieves 's member count. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's member count. - is null. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's members in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members in increasing value order. - is null. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's members' names in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members' names in increasing value order. - is null. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's members' values in increasing value order. - The parameter indicates what members to include. - - The enum type. - Indicates what members to include. - 's members' values in increasing value order. - is null. - is not an enum type - -or- - is an invalid value. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. Must be an , , , , - , , , , , , or Nullable of one of these. - The validation to perform on the result. - The specified converted to a . - or is null. - is not an enum type - -or- - is not a valid type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - or is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Converts the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - - The enum type. - Value to convert. - The validation to perform on the result. - The specified converted to a . - is null. - is not an enum type - -or- - is an invalid value - -or- - the result is invalid with the specified . - is outside the underlying type's value range. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. Must be an , , , , - , , , , , , or Nullable of one of these. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the specified to a value of type while checking that it doesn't overflow the - underlying type. The parameter specifies the validation to perform on the result. - The return value indicates whether the conversion succeeded. - - The enum type. - Value to try to convert. - If the conversion succeeds this contains a value of type whose value is . - The validation to perform on the result. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Indicates if is valid. If is a standard enum it returns whether the value is defined. - If is marked with it returns whether it's a valid flag combination of 's defined values - or is defined. Or if has an attribute that implements - then that attribute's method is used. - - The enum type. - The enum value. - The validation to perform on the value. - Indication if is valid. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - is an invalid value. - - - - Indicates if is defined. - - The enum type. - The enum value. - Indication if is defined. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Validates that is valid. If it's not it throws an with the specified . - - The enum type. - The enum value. - The parameter name to be used if throwing an . - The validation to perform on the value. - for use in fluent API's and base constructor method calls. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - is an invalid value - -or- - is invalid. - - - - Converts the specified to its string representation. - - The enum type. - The enum value. - A string representation of . - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - or is null. - is not an enum type - -or- - is of an invalid type. - is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - or is null. - is not an enum type - -or- - is an invalid value. - - - - Converts the specified to its string representation using the specified formats. - - The enum type. - The enum value. - The first output format to use. - The second output format to use if using the first resolves to null. - A string representation of . - or is null. - is not an enum type - -or- - or is an invalid value. - - - - Converts the specified to its string representation using the specified formats. - - The enum type. - The enum value. - The first output format to use. - The second output format to use if using the first resolves to null. - The third output format to use if using the first and second both resolve to null. - A string representation of . - or is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output formats to use. - A string representation of . - or is null. - is not an enum type - -or- - contains an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output format to use. - A string representation of . - , , or is null. - is not an enum type - -or- - is of an invalid type. - is an invalid value. - - - - Converts the specified to its string representation using the specified . - - The enum type. - The enum value. - The output formats to use. - A string representation of . - , , or is null. - is not an enum type - -or- - is of an invalid type - -or- - contains an invalid value. - - - - Returns 's underlying integral value. - - The enum type. - The enum value. - 's underlying integral value. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Converts to an . - - The enum type. - The enum value. - converted to an . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Converts to a . - - The enum type. - The enum value. - converted to a . - or is null. - is not an enum type - -or- - is of an invalid type. - cannot fit within 's value range without overflowing. - - - - Indicates if equals . - - The enum type. - The enum value. - The other enum value. - Indication if equals . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Compares to for ordering. - - The enum type. - The enum value. - The other enum value. - 1 if is greater than , 0 if equals , - and -1 if is less than . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Retrieves 's enum member name if defined otherwise null. - - The enum type. - The enum value. - 's enum member name if defined otherwise null. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves 's enum member attributes if defined otherwise null. - - The enum type. - The enum value. - 's enum member attributes if defined otherwise null. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves an enum member with the specified if defined otherwise null. - - The enum type. - The enum value. - Enum member with the specified if defined otherwise null. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves the enum member with the specified if defined otherwise null. - Is case-sensitive. - - The enum type. - The enum member name. - Enum member with the specified if defined otherwise null. - or is null. - is not an enum type. - - - - Retrieves the enum member with the specified if defined otherwise null. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member name. - Indicates if the operation is case-insensitive. - Enum member with the specified if defined otherwise null. - or is null. - is not an enum type. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - - The enum type. - The enum member's string representation. - The parsing enum format. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - - The enum type. - The enum member's string representation. - The first parsing enum format. - The second parsing enum format. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - - The enum type. - The enum member's string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - - The enum type. - The enum member's string representation. - The parsing enum formats. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - contains an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified formats is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Retrieves an enum member whose string representation using the specified is if defined otherwise null. - The parameter specifies whether the operation is case-insensitive. - - The enum type. - The enum member's string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - Enum member represented by if defined otherwise null. - or is null. - is not an enum type - -or- - contains an invalid value. - - - - Converts the string representation of one or more member names or values of to its respective value of type . - - The enum type. - The enum member names or values' string representation. - A value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The parsing enum formats. - A value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of to its respective value of type . - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Tries to convert the string representation of one or more member names or values of to its respective value of type . - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is null. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of to its respective value of type . - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is null. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Specifies the enum validation to perform. - - - - - No validation. - - - - - If the enum is a standard enum returns whether the value is defined. - If the enum is marked with the it returns whether it's a valid flag combination of the enum's defined values - or is defined. Or if the enum has an attribute that implements - then that attribute's method is used. - - - - - Returns if the value is defined. - - - - - Returns if the value is a valid flag combination of the enum's defined values. - - - - - Static class that provides efficient type-safe flag enum operations through the use of cached enum names, values, and attributes. - Many operations are exposed as C# extension methods for convenience. - - - - - Indicates if is marked with the . - - The enum type. - Indication if is marked with the . - - - - Retrieves all the flags defined by . - - The enum type. - All the flags defined by . - - - - Indicates whether is a valid flag combination of 's defined flags. - - The enum type. - The flags enum value. - Indication of whether is a valid flag combination of 's defined flags. - - - - Retrieves the names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - - - Retrieves 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The output format to use. - 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The first output format to use. - The second output format to use. - 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - or is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The first output format to use. - The second output format to use. - The third output format to use. - 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - , , or is an invalid value. - - - - Retrieves 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The output formats to use. - 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - contains an invalid value. - - - - Retrieves the names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - - - Retrieves 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The output format to use. - 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The first output format to use. - The second output format to use. - 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - or is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The first output format to use. - The second output format to use. - The third output format to use. - 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - , , or is an invalid value. - - - - Retrieves 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The output formats to use. - 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - contains an invalid value. - - - - Retrieves the flags that compose . - - The enum type. - The flags enum value. - The flags that compose . - - - - Retrieves the s of the flags that compose . - - The enum type. - The flags enum value. - The s of the flags that compose . - - - - Retrieves the flag count of . - - The enum type. - The flag count of . - - - - Retrieves the flag count of . - - The enum type. - The flags enum value. - The flag count of . - - - - Retrieves the flag count of that has. - - The enum type. - The flags enum value. - The other flags enum value. - The flag count of that has. - - - - Indicates if has any flags. - - The enum type. - The flags enum value. - Indication if has any flags. - - - - Indicates if has any flags that are in . - - The enum type. - The flags enum value. - The other flags enum value. - Indication if has any flags that are in . - - - - Indicates if has all of the flags that are defined in . - - The enum type. - The flags enum value. - Indication if has all of the flags that are defined in . - - - - Indicates if has all of the flags that are in . - - The enum type. - The flags enum value. - The other flags enum value. - Indication if has all of the flags that are in . - - - - Returns with all of it's flags toggled. Equivalent to the bitwise "xor" operator with . - - The enum type. - The flags enum value. - with all of it's flags toggled. - - - - Returns while toggling the flags that are in . Equivalent to the bitwise "xor" operator. - - The enum type. - The flags enum value. - The other flags enum value. - while toggling the flags that are in . - - - - Returns with only the flags that are also in . Equivalent to the bitwise "and" operation. - - The enum type. - The flags enum value. - The other flags enum value. - with only the flags that are also in . - - - - Combines the flags of and . Equivalent to the bitwise "or" operation. - - The enum type. - The flags enum value. - The other flags enum value. - Combination of with the flags in . - - - - Combines the flags of , , and . - - The enum type. - The first flags enum value. - The second flags enum value. - The third flags enum value. - Combination of the flags of , , and . - - - - Combines the flags of , , , and . - - The enum type. - The first flags enum value. - The second flags enum value. - The third flags enum value. - The fourth flags enum value. - Combination of the flags of , , , and . - - - - Combines the flags of , , , , and . - - The enum type. - The first flags enum value. - The second flags enum value. - The third flags enum value. - The fourth flags enum value. - The fifth flags enum value. - Combination of the flags of , , , , and . - - - - Combines all of the flags of . - - The enum type. - The flags enum values. - Combination of all of the flags of . - - - - Combines all of the flags of . - - The enum type. - The flags enum values. - Combination of all of the flags of . - - - - Returns without the flags specified in . - - The enum type. - The flags enum value. - The other flags enum value. - without the flags specified in . - - - - Converts the string representation of one or more member names or values of to its respective value. - - The enum type. - The enum member names or values' string representation. - A value that is represented by . - is null. - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The parsing enum formats. - A value that is represented by . - is null. - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of to its respective value. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The value that is represented by . - is null. - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of delimited with to its respective value. - - The enum type. - The enum member names or values' string representation. - The delimiter used to separate individual flags. - A value that is represented by . - is null. - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The parsing enum formats. - A value that is represented by . - is null. - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of delimited with to its respective value. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The value that is represented by . - is null. - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The parsing enum formats. - The value that is represented by . - is null. - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The first parsing enum format. - Indication whether the conversion succeeded. - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The first parsing enum format. - Indication whether the conversion succeeded. - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of delimited with to its respective value. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The first parsing enum format. - Indication whether the conversion succeeded. - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of delimited with to its respective value. - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The first parsing enum format. - Indication whether the conversion succeeded. - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - contains an invalid value. - - - - Indicates if is marked with the . - - The enum type. - Indication if is marked with the . - is not an enum type. - - - - Retrieves all the flags defined by . - - The enum type. - All the flags defined by . - is not an enum type. - - - - Indicates whether is a valid flag combination of 's defined flags. - - The enum type. - The flags enum value. - Indication of whether is a valid flag combination of 's defined flags. - is not an enum type. - - - - Retrieves the names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - is not an enum type. - - - - Retrieves 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The output format to use. - 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The first output format to use. - The second output format to use. - 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - is not an enum type - -or- - or is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The first output format to use. - The second output format to use. - The third output format to use. - 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - is not an enum type - -or- - , , or is an invalid value. - - - - Retrieves 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The output formats to use. - 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - is not an enum type - -or- - contains an invalid value. - - - - Retrieves the names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - is not an enum type. - - - - Retrieves 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The output format to use. - 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - is not an enum type - -or- - is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The first output format to use. - The second output format to use. - 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - is not an enum type - -or- - or is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The first output format to use. - The second output format to use. - The third output format to use. - 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - is not an enum type - -or- - , , or is an invalid value. - - - - Retrieves 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The output formats to use. - 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - is not an enum type - -or- - contains an invalid value. - - - - Retrieves the flags that compose . - - The enum type. - The flags enum value. - The flags that compose . - is not an enum type. - - - - Retrieves the s of the flags that compose . - - The enum type. - The flags enum value. - The s of the flags that compose . - is not an enum type. - - - - Retrieves the flag count of . - - The enum type. - The flag count of . - is not an enum type. - - - - Retrieves the flag count of . - - The enum type. - The flags enum value. - The flag count of . - is not an enum type. - - - - Retrieves the flag count of that has. - - The enum type. - The flags enum value. - The other flags enum value. - The flag count of that has. - is not an enum type. - - - - Indicates if has any flags. - - The enum type. - The flags enum value. - Indication if has any flags. - is not an enum type. - - - - Indicates if has any flags that are in . - - The enum type. - The flags enum value. - The other flags enum value. - Indication if has any flags that are in . - is not an enum type. - - - - Indicates if has all of the flags that are defined in . - - The enum type. - The flags enum value. - Indication if has all of the flags that are defined in . - is not an enum type. - - - - Indicates if has all of the flags that are in . - - The enum type. - The flags enum value. - The other flags enum value. - Indication if has all of the flags that are in . - is not an enum type. - - - - Returns with all of it's flags toggled. Equivalent to the bitwise "xor" operator with . - - The enum type. - The flags enum value. - with all of it's flags toggled. - is not an enum type. - - - - Returns while toggling the flags that are in . Equivalent to the bitwise "xor" operator. - - The enum type. - The flags enum value. - The other flags enum value. - while toggling the flags that are in . - is not an enum type. - - - - Returns with only the flags that are also in . Equivalent to the bitwise "and" operation. - - The enum type. - The flags enum value. - The other flags enum value. - with only the flags that are also in . - is not an enum type. - - - - Combines the flags of and . Equivalent to the bitwise "or" operation. - - The enum type. - The flags enum value. - The other flags enum value. - Combination of with the flags in . - is not an enum type. - - - - Combines the flags of , , and . - - The enum type. - The first flags enum value. - The second flags enum value. - The third flags enum value. - Combination of the flags of , , and . - is not an enum type. - - - - Combines the flags of , , , and . - - The enum type. - The first flags enum value. - The second flags enum value. - The third flags enum value. - The fourth flags enum value. - Combination of the flags of , , , and . - is not an enum type. - - - - Combines the flags of , , , , and . - - The enum type. - The first flags enum value. - The second flags enum value. - The third flags enum value. - The fourth flags enum value. - The fifth flags enum value. - Combination of the flags of , , , , and . - is not an enum type. - - - - Combines all of the flags of . - - The enum type. - The flags enum values. - Combination of all of the flags of . - is not an enum type. - - - - Combines all of the flags of . - - The enum type. - The flags enum values. - Combination of all of the flags of . - is not an enum type. - - - - Returns without the flags specified in . - - The enum type. - The flags enum value. - The other flags enum value. - without the flags specified in . - is not an enum type. - - - - Converts the string representation of one or more member names or values of to its respective value. - - The enum type. - The enum member names or values' string representation. - A value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The parsing enum formats. - A value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of to its respective value. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of delimited with to its respective value. - - The enum type. - The enum member names or values' string representation. - The delimiter used to separate individual flags. - A value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The parsing enum formats. - A value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of delimited with to its respective value. - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The parsing enum formats. - The value that is represented by . - is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of to its respective value. - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of delimited with to its respective value. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of delimited with to its respective value. - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - Indication whether the conversion succeeded. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is not an enum type - -or- - contains an invalid value. - - - - Indicates if is marked with the . - - The enum type. - Indication if is marked with the . - is null. - is not an enum type. - - - - Retrieves all the flags defined by . - - The enum type. - All the flags defined by . - is null. - is not an enum type. - - - - Indicates whether is a valid flag combination of 's defined flags. - - The enum type. - The flags enum value. - Indication of whether is a valid flag combination of 's defined flags. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves the names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The output format to use. - 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The first output format to use. - The second output format to use. - 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - or is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The first output format to use. - The second output format to use. - The third output format to use. - 's flags formatted with formats and delimited with commas - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - , , or is an invalid value. - - - - Retrieves 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The output formats to use. - 's flags formatted with and delimited with commas - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - contains an invalid value. - - - - Retrieves the names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0". - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The output format to use. - 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The first output format to use. - The second output format to use. - 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - or is an invalid value. - - - - Retrieves 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The first output format to use. - The second output format to use. - The third output format to use. - 's flags formatted with formats and delimited with - or if empty returns the zero flag formatted with formats. - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - , , or is an invalid value. - - - - Retrieves 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - - The enum type. - The flags enum value. - The delimiter to use to separate individual flags. - The output formats to use. - 's flags formatted with and delimited with - or if empty returns the zero flag formatted with . - If is not a valid flag combination null is returned. - or is null. - is not an enum type - -or- - is of an invalid type - -or- - contains an invalid value. - - - - Retrieves the flags that compose . - - The enum type. - The flags enum value. - The flags that compose . - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves the s of the flags that compose . - - The enum type. - The flags enum value. - The s of the flags that compose . - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves the flag count of . - - The enum type. - The flag count of . - is null. - is not an enum type. - - - - Retrieves the flag count of . - - The enum type. - The flags enum value. - The flag count of . - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Retrieves the flag count of that has. - - The enum type. - The flags enum value. - The other flags enum value. - The flag count of that has. - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Indicates if has any flags. - - The enum type. - The flags enum value. - Indication if has any flags. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Indicates if has any flags that are in . - - The enum type. - The flags enum value. - The other flags enum value. - Indication if has any flags that are in . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Indicates if has all of the flags that are defined in . - - The enum type. - The flags enum value. - Indication if has all of the flags that are defined in . - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Indicates if has all of the flags that are in . - - The enum type. - The flags enum value. - The other flags enum value. - Indication if has all of the flags that are in . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Returns with all of it's flags toggled. Equivalent to the bitwise "xor" operator with . - - The enum type. - The flags enum value. - with all of it's flags toggled. - or is null. - is not an enum type - -or- - is of an invalid type. - - - - Returns while toggling the flags that are in . Equivalent to the bitwise "xor" operator. - - The enum type. - The flags enum value. - The other flags enum value. - while toggling the flags that are in . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Returns with only the flags that are also in . Equivalent to the bitwise "and" operation. - - The enum type. - The flags enum value. - The other flags enum value. - with only the flags that are also in . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Combines the flags of and . Equivalent to the bitwise "or" operation. - - The enum type. - The flags enum value. - The other flags enum value. - Combination of with the flags in . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Combines all of the flags of . - - The enum type. - The flags enum values. - Combination of all of the flags of . - or one of the is null. - is not an enum type - -or- - contains a value that is of an invalid type. - - - - Combines all of the flags of . - - The enum type. - The flags enum values. - Combination of all of the flags of . - or one of the is null. - is not an enum type - -or- - contains a value that is of an invalid type. - - - - Returns without the flags specified in . - - The enum type. - The flags enum value. - The other flags enum value. - without the flags specified in . - , , or is null. - is not an enum type - -or- - or is of an invalid type. - - - - Converts the string representation of one or more member names or values of to its respective value of type . - - The enum type. - The enum member names or values' string representation. - A value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The parsing enum formats. - A value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of to its respective value of type . - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The parsing enum formats. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of delimited with to its respective value of type . - - The enum type. - The enum member names or values' string representation. - The delimiter used to separate individual flags. - A value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of 's underlying type. - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum format. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - The parsing enum formats. - A value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more member names or values of delimited with to its respective value of type . - The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member name or value of . - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum format. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - , , or is an invalid value. - is outside the range of the underlying type of . - - - - Converts the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - The parsing enum formats. - The value that is represented by . - or is null. - is not an enum type - -or- - doesn't represent a member or value of - -or- - contains an invalid value. - is outside the range of the underlying type of . - - - - Tries to convert the string representation of one or more member names or values of to its respective value of type . - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - If the conversion succeeds this contains a value of type that is represented by . - Indication whether the conversion succeeded. - is null. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of to its respective value of type . - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value of type that is represented by . - Indication whether the conversion succeeded. - is null. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of delimited with to its respective value of type . - The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - Indication whether the conversion succeeded. - is null. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum format. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Tries to convert the string representation of one or more member names or values of delimited with to its respective value of type . - The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded. - - The enum type. - The enum member names or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - Indication whether the conversion succeeded. - is null. - is not an enum type. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The first parsing enum format. - The second parsing enum format. - The third parsing enum format. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - , , or is an invalid value. - - - - Tries to convert the string representation of one or more members or values of delimited with to its respective value of type - using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive. - The return value indicates whether the conversion succeeded. - - The enum type. - The enum members or values' string representation. - Indicates if the operation is case-insensitive. - The delimiter used to separate individual flags. - If the conversion succeeds this contains a value of type that is represented by . - The parsing enum formats. - Indication whether the conversion succeeded. - is null. - is not an enum type - -or- - contains an invalid value. - - - - Indicates whether 's value is a valid flag combination of its enum's defined values. - - The enum member. - Indication of whether 's value is a valid flag combination of its enum's defined values. - is null. - - - - Retrieves the flags that compose 's value. - - The enum type. - The enum member. - The flags that compose 's value. - is null. - - - - Retrieves the s of the flags that compose 's value. - - The enum type. - The enum member. - The s of the flags that compose 's value. - is null. - - - - Indicates if 's value has any flags. - - The enum member. - Indication if 's has any flags. - is null. - - - - Indicates if 's value has all of the flags that are defined in its enum type. - - The enum member. - Indication if has all of the flags that are defined in its enum type. - is null. - - - - Retrieves the flag count of . - - The flags enum value. - The flag count of . - - - - Retrieves the flags that compose 's value. - - The enum member. - The flags that compose 's value. - is null. - - - - Retrieves the s of the flags that compose 's value. - - The enum member. - The s of the flags that compose 's value. - is null. - - - - Interface to be implemented on an enum validator attribute class to allow custom validation logic. - - The enum type. - - - - Indicates if is valid. - - The enum value. - Indication if is valid. - - - - Indicates if the enum member should be the primary enum member when there are duplicate values. - In the case of duplicate values, extension methods will use the enum member marked with this attribute. - - - - Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - - Gets the return value condition. - - - Specifies that the output will be non-null if the named parameter is non-null. - - - Initializes the attribute with the associated parameter name. - - The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null. - - - - Gets the associated parameter name. - - - diff --git a/tracking and telemetry/Client/bin/Debug/GMap.NET.Core.dll b/tracking and telemetry/Client/bin/Debug/GMap.NET.Core.dll new file mode 100644 index 0000000..fc80c74 Binary files /dev/null and b/tracking and telemetry/Client/bin/Debug/GMap.NET.Core.dll differ diff --git a/tracking and telemetry/Client/bin/Debug/GMap.NET.WindowsForms.dll b/tracking and telemetry/Client/bin/Debug/GMap.NET.WindowsForms.dll new file mode 100644 index 0000000..b99d328 Binary files /dev/null and b/tracking and telemetry/Client/bin/Debug/GMap.NET.WindowsForms.dll differ diff --git a/tracking and telemetry/Client/bin/Debug/MAVLink.dll b/tracking and telemetry/Client/bin/Debug/MAVLink.dll index bf6d23b..693c9aa 100644 Binary files a/tracking and telemetry/Client/bin/Debug/MAVLink.dll and b/tracking and telemetry/Client/bin/Debug/MAVLink.dll differ diff --git a/tracking and telemetry/Client/bin/Debug/MAVLink.pdb b/tracking and telemetry/Client/bin/Debug/MAVLink.pdb index a41661b..0313a41 100644 Binary files a/tracking and telemetry/Client/bin/Debug/MAVLink.pdb and b/tracking and telemetry/Client/bin/Debug/MAVLink.pdb differ diff --git a/tracking and telemetry/Client/bin/Release/Client.exe b/tracking and telemetry/Client/bin/Release/Client.exe new file mode 100644 index 0000000..8246f2a Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/Client.exe differ diff --git a/tracking and telemetry/Client/bin/Release/Client.exe.config b/tracking and telemetry/Client/bin/Release/Client.exe.config new file mode 100644 index 0000000..74ade9d --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/Client.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/tracking and telemetry/Client/bin/Release/Client.pdb b/tracking and telemetry/Client/bin/Release/Client.pdb new file mode 100644 index 0000000..12279ba Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/Client.pdb differ diff --git a/tracking and telemetry/Client/bin/Release/GMap.NET.Core.dll b/tracking and telemetry/Client/bin/Release/GMap.NET.Core.dll new file mode 100644 index 0000000..ba8b16b Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/GMap.NET.Core.dll differ diff --git a/tracking and telemetry/Client/bin/Release/GMap.NET.WindowsForms.dll b/tracking and telemetry/Client/bin/Release/GMap.NET.WindowsForms.dll new file mode 100644 index 0000000..ce3bcb7 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/GMap.NET.WindowsForms.dll differ diff --git a/tracking and telemetry/Client/bin/Release/IronPython.Modules.dll b/tracking and telemetry/Client/bin/Release/IronPython.Modules.dll new file mode 100644 index 0000000..1b1b7c9 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/IronPython.Modules.dll differ diff --git a/tracking and telemetry/Client/bin/Release/IronPython.Modules.xml b/tracking and telemetry/Client/bin/Release/IronPython.Modules.xml new file mode 100644 index 0000000..a59f8c3 --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/IronPython.Modules.xml @@ -0,0 +1,2565 @@ + + + + IronPython.Modules + + + + + Copy the latest data from the memory buffer. + + This won't always contain data, because comrpessed data is only written after a block is filled. + + + + + + Add data to the input buffer. This manipulates the position of the stream + to make it appear to the BZip2 stream that nothing has actually changed. + + The data to append to the buffer. + + + + Try to convert IList(Of byte) to byte[] without copying, if possible. + + + + + + + Throw TypeError with a specified message if object isn't callable. + + + + + Convert object to ushort, throwing ValueError on overflow. + + + + + Interface for "file-like objects" that implement the protocol needed by load() and friends. + This enables the creation of thin wrappers that make fast .NET types and slow Python types look the same. + + + + + Interface for "file-like objects" that implement the protocol needed by dump() and friends. + This enables the creation of thin wrappers that make fast .NET types and slow Python types look the same. + + + + + Call the appropriate reduce method for obj and pickle the object using + the resulting data. Use the first available of + copy_reg.dispatch_table[type(obj)], obj.__reduce_ex__, and obj.__reduce__. + + + + + Pickle the result of a reduce function. + + Only context, obj, func, and reduceCallable are required; all other arguments may be null. + + + + + Write value in pickle decimalnl_short format. + + + + + Write value in pickle float8 format. + + + + + Write value in pickle uint1 format. + + + + + Write value in pickle uint2 format. + + + + + Write value in pickle int4 format. + + + + + Write value in pickle decimalnl_short format. + + + + + Write value in pickle decimalnl_short format. + + + + + Write value in pickle decimalnl_long format. + + + + + Write value in pickle unicodestringnl format. + + + + + Write value in pickle unicodestring4 format. + + + + + Write value in pickle stringnl_noescape_pair format. + + + + + Return true if value is appropriate for formatting in pickle uint1 format. + + + + + Return true if value is appropriate for formatting in pickle uint2 format. + + + + + Return true if value is appropriate for formatting in pickle int4 format. + + + + + Emit a series of opcodes that will set append all items indexed by iter + to the object at the top of the stack. Use APPENDS if possible, but + append no more than BatchSize items at a time. + + + + + Emit a series of opcodes that will set all (key, value) pairs indexed by + iter in the object at the top of the stack. Use SETITEMS if possible, + but append no more than BatchSize items at a time. + + + + + Emit a series of opcodes that will set all (key, value) pairs indexed by + iter in the object at the top of the stack. Use SETITEMS if possible, + but append no more than BatchSize items at a time. + + + + + Find the module for obj and ensure that obj is reachable in that module by the given name. + + Throw PicklingError if any of the following are true: + - The module couldn't be determined. + - The module couldn't be loaded. + - The given name doesn't exist in the module. + - The given name is a different object than obj. + + Otherwise, return the name of the module. + + To determine which module obj lives in, obj.__module__ is used if available. The + module named by obj.__module__ is loaded if needed. If obj has no __module__ + attribute, then each loaded module is searched. If a loaded module has an + attribute with the given name, and that attribute is the same object as obj, + then that module is used. + + + + + Interpret everything from markIndex to the top of the stack as a sequence + of key, value, key, value, etc. Set dict[key] = value for each. Pop + everything from markIndex up when done. + + + + + Used to check the type to see if we can do a comparison. Returns true if we can + or false if we should return NotImplemented. May throw if the type's really wrong. + + + + + Helper function for doing the comparisons. time has no __cmp__ method + + + + + Base class used for iterator wrappers. + + + + + Error function on real values + + + + + Complementary error function on real values: erfc(x) = 1 - erf(x) + + + + + Gamma function on real values + + + + + Natural log of absolute value of Gamma function + + + + + Provides helper functions which need to be called from generated code to implement various + portions of modules. + + + + + Checks for the specific permissions, provided by the mode parameter, are available for the provided path. Permissions can be: + + F_OK: Check to see if the file exists + R_OK | W_OK | X_OK: Check for the specific permissions. Only W_OK is respected. + + + + + single instance of environment dictionary is shared between multiple runtimes because the environment + is shared by multiple runtimes. + + + + + lstat(path) -> stat result + Like stat(path), but do not follow symbolic links. + + + + + spawns a new process. + + If mode is nt.P_WAIT then then the call blocks until the process exits and the return value + is the exit code. + + Otherwise the call returns a handle to the process. The caller must then call nt.waitpid(pid, options) + to free the handle and get the exit code of the process. Failure to call nt.waitpid will result + in a handle leak. + + + + + spawns a new process. + + If mode is nt.P_WAIT then then the call blocks until the process exits and the return value + is the exit code. + + Otherwise the call returns a handle to the process. The caller must then call nt.waitpid(pid, options) + to free the handle and get the exit code of the process. Failure to call nt.waitpid will result + in a handle leak. + + + + + spawns a new process. + + If mode is nt.P_WAIT then then the call blocks until the process exits and the return value + is the exit code. + + Otherwise the call returns a handle to the process. The caller must then call nt.waitpid(pid, options) + to free the handle and get the exit code of the process. Failure to call nt.waitpid will result + in a handle leak. + + + + + spawns a new process. + + If mode is nt.P_WAIT then then the call blocks until the process exits and the return value + is the exit code. + + Otherwise the call returns a handle to the process. The caller must then call nt.waitpid(pid, options) + to free the handle and get the exit code of the process. Failure to call nt.waitpid will result + in a handle leak. + + + + + Copy elements from a Python mapping of dict environment variables to a StringDictionary. + + + + + Convert a sequence of args to a string suitable for using to spawn a process. + + + + + Python regular expression module. + + + + + Compiled reg-ex pattern + + + + + Preparses a regular expression text returning a ParsedRegex class + that can be used for further regular expressions. + + + + + Implementes a resource-based meta_path importer as described in PEP 302. + + + + + Instantiates a new meta_path importer using an embedded ZIP resource file. + + + + + + + Process a sequence of objects that are compatible with ObjectToSocket(). Return two + things as out params: an in-order List of sockets that correspond to the original + objects in the passed-in sequence, and a mapping of these socket objects to their + original objects. + + The socketToOriginal mapping is generated because the CPython select module supports + passing to select either file descriptor numbers or an object with a fileno() method. + We try to be faithful to what was originally requested when we return. + + + + + Return the System.Net.Sockets.Socket object that corresponds to the passed-in + object. obj can be a System.Net.Sockets.Socket, a PythonSocket.SocketObj, a + long integer (representing a socket handle), or a Python object with a fileno() + method (whose result is used to look up an existing PythonSocket.SocketObj, + which is in turn converted to a Socket. + + + + + Stops execution of Python or other .NET code on the main thread. If the thread is + blocked in native code the thread will be interrupted after it returns back to Python + or other .NET code. + + + + + Provides a dictionary storage implementation whose storage is local to + the thread. + + + + + Represents the date components that we found while parsing the date. Used for zeroing out values + which have different defaults from CPython. Currently we only know that we need to do this for + the year. + + + + + Samples on how to subtype built-in types from C# + + + + + an int variable for demonstration purposes + + + + + an int variable for demonstration purposes + + + + + BytesIO([initializer]) -> object + + Create a buffered I/O implementation using an in-memory bytes + buffer, ready for reading and writing. + + + + + close() -> None. Disable all I/O operations. + + + + + True if the file is closed. + + + + + getvalue() -> bytes. + + Retrieve the entire contents of the BytesIO object. + + + + + Remove all 'b's from mode string to simplify parsing + + + + + Read and decode the next chunk from the buffered reader. Returns true if EOF was + not reached. Places decoded string in _decodedChars. + + + + + Convert string or bytes into bytes + + + + + Convert most bytearray-like objects into IList of byte + + + + + Creates an optimized encoding mapping that can be consumed by an optimized version of charmap_encode. + + + + + Encodes the input string with the specified optimized encoding map. + + + + + Decodes the input string using the provided string mapping. + + + + + Optimized encoding mapping that can be consumed by charmap_encode. + + + + + Walks the queue calling back to the specified delegate for + each populated index in the queue. + + + + + Returns the dialects from the code context. + + + + + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + Provides support for interop with native code from Python code. + + + + + The meta class for ctypes array instances. + + + + + Converts an object into a function call parameter. + + + + + Base class for all ctypes interop types. + + + + + Creates a new CFuncPtr object from a tuple. The 1st element of the + tuple is the ordinal or function name. The second is an object with + a _handle property. The _handle property is the handle of the module + from which the function will be loaded. + + + + + Creates a new CFuncPtr which calls a COM method. + + + + + Creates a new CFuncPtr with the specfied address. + + + + + Creates a new CFuncPtr with the specfied address. + + + + + we need to keep alive any methods which have arguments for the duration of the + call. Otherwise they could be collected on the finalizer thread before we come back. + + + + + Creates a method for calling with the specified signature. The returned method has a signature + of the form: + + (IntPtr funcAddress, arg0, arg1, ..., object[] constantPool) + + where IntPtr is the address of the function to be called. The arguments types are based upon + the types that the ArgumentMarshaller requires. + + + + + Base class for marshalling arguments from the user provided value to the + call stub. This class provides the logic for creating the call stub and + calling it. + + + + + Emits the IL to get the argument for the call stub generated into + a dynamic method. + + + + + Gets the expression used to provide the argument. This is the expression + from an incoming DynamicMetaObject. + + + + + Gets an expression which keeps alive the argument for the duration of the call. + + Returns null if a keep alive is not necessary. + + + + + Provides marshalling of primitive values when the function type + has no type information or when the user has provided us with + an explicit cdata instance. + + + + + Provides marshalling for when the function type provide argument information. + + + + + Provides marshalling for when the user provides a native argument object + (usually gotten by byref or pointer) and the function type has no type information. + + + + + The meta class for ctypes function pointer instances. + + + + + Converts an object into a function call parameter. + + + + + Fields are created when a Structure is defined and provide + introspection of the structure. + + + + + Called for fields which have been limited to a range of bits. Given the + value for the full type this extracts the individual bits. + + + + + Called for fields which have been limited to a range of bits. Sets the + specified value into the bits for the field. + + + + + Common functionality that all of the meta classes provide which is part of + our implementation. This is used to implement the serialization/deserialization + of values into/out of memory, emit the marshalling logic for call stubs, and + provide common information (size/alignment) for the types. + + + + + Gets the native size of the type + + + + + Gets the required alignment for the type + + + + + Deserialized the value of this type from the given address at the given + offset. Any new objects which are created will keep the provided + MemoryHolder alive. + + raw determines if the cdata is returned or if the primitive value is + returned. This is only applicable for subtypes of simple cdata types. + + + + + Serializes the provided value into the specified address at the given + offset. + + + + + Gets the .NET type which is used when calling or returning the value + from native code. + + + + + Gets the .NET type which the native type is converted into when going to Python + code. This is usually int, BigInt, double, object, or a CData type. + + + + + Emits marshalling of an object from Python to native code. This produces the + native type from the Python type. + + + + + Emits marshalling from native code to Python code This produces the python type + from the native type. This is used for return values and parameters + to Python callable objects that are passed back out to native code. + + + + + Returns a string which describes the type. Used for _buffer_info implementation which + only exists for testing purposes. + + + + + The meta class for ctypes pointers. + + + + + Converts an object into a function call parameter. + + + + + Access an instance at the specified address + + + + + The meta class for ctypes simple data types. These include primitives like ints, + floats, etc... char/wchar pointers, and untyped pointers. + + + + + Converts an object into a function call parameter. + + + + + Helper function for reading char/wchar's. This is used for reading from + arrays and pointers to avoid creating lots of 1-char strings. + + + + + The enum used for tracking the various ctypes primitive types. + + + + 'c' + + + 'b' + + + 'B' + + + 'h' + + + 'H' + + + 'i' + + + 'I' + + + 'l' + + + 'L' + + + 'f' + + + 'd', 'g' + + + 'q' + + + 'Q' + + + 'O' + + + 'P' + + + 'z' + + + 'Z' + + + 'u' + + + '?' + + + 'v' + + + 'X' + + + + Meta class for structures. Validates _fields_ on creation, provides factory + methods for creating instances from addresses and translating to parameters. + + + + + Converts an object into a function call parameter. + + Structures just return themselves. + + + + + If our size/alignment hasn't been initialized then grabs the size/alignment + from all of our base classes. If later new _fields_ are added we'll be + initialized and these values will be replaced. + + + + + Base class for data structures. Subclasses can define _fields_ which + specifies the in memory layout of the values. Instances can then + be created with the initial values provided as the array. The values + can then be accessed from the instance by field name. The value can also + be passed to a foreign C API and the type can be used in other structures. + + class MyStructure(Structure): + _fields_ = [('a', c_int), ('b', c_int)] + + MyStructure(1, 2).a + MyStructure() + + class MyOtherStructure(Structure): + _fields_ = [('c', MyStructure), ('b', c_int)] + + MyOtherStructure((1, 2), 3) + MyOtherStructure(MyStructure(1, 2), 3) + + + + + The meta class for ctypes unions. + + + + + Converts an object into a function call parameter. + + + + + Gets a function which casts the specified memory. Because this is used only + w/ Python API we use a delegate as the return type instead of an actual address. + + + + + Implementation of our cast function. data is marshalled as a void* + so it ends up as an address. obj and type are marshalled as an object + so we need to unmarshal them. + + + + + Returns a new type which represents a pointer given the existing type. + + + + + Converts an address acquired from PyObj_FromPtr or that has been + marshaled as type 'O' back into an object. + + + + + Converts an object into an opaque address which can be handed out to + managed code. + + + + + Decreases the ref count on an object which has been increased with + Py_INCREF. + + + + + Increases the ref count on an object ensuring that it will not be collected. + + + + + returns address of C instance internal buffer. + + It is the callers responsibility to ensure that the provided instance will + stay alive if memory in the resulting address is to be used later. + + + + + Gets the required alignment of the given type. + + + + + Gets the required alignment of an object. + + + + + Returns a pointer instance for the given CData + + + + + Gets the ModuleBuilder used to generate our unsafe call stubs into. + + + + + Given a specific size returns a .NET type of the equivalent size that + we can use when marshalling these values across calls. + + + + + Shared helper between struct and union for getting field info and validating it. + + + + + Verifies that the provided bit field settings are valid for this type. + + + + + Shared helper to get the _fields_ list for struct/union and validate it. + + + + + Helper function for translating from memset to NT's FillMemory API. + + + + + Helper function for translating from memset to NT's FillMemory API. + + + + + Emits the marshalling code to create a CData object for reverse marshalling. + + + + + Wrapper class for emitting locals/variables during marshalling code gen. + + + + + A wrapper around allocated memory to ensure it gets released and isn't accessed + when it could be finalized. + + + + + Creates a new MemoryHolder and allocates a buffer of the specified size. + + + + + Creates a new MemoryHolder at the specified address which is not tracked + by us and we will never free. + + + + + Creates a new MemoryHolder at the specified address which will keep alive the + parent memory holder. + + + + + Gets the address of the held memory. The caller should ensure the MemoryHolder + is always alive as long as the address will continue to be accessed. + + + + + Gets a list of objects which need to be kept alive for this MemoryHolder to be + remain valid. + + + + + Used to track the lifetime of objects when one memory region depends upon + another memory region. For example if you have an array of objects that + each have an element which has it's own lifetime the array needs to keep + the individual elements alive. + + The keys used here match CPython's keys as tested by CPython's test_ctypes. + Typically they are a string which is the array index, "ffffffff" when + from_buffer is used, or when it's a simple type there's just a string + instead of the full dictionary - we store that under the key "str". + + + + + Copies the data in data into this MemoryHolder. + + + + + Copies memory from one location to another keeping the associated memory holders alive during the + operation. + + + + + Native functions used for exposing ctypes functionality. + + + + + Allocates memory that's zero-filled + + + + + Helper function for implementing memset. Could be more efficient if we + could P/Invoke or call some otherwise native code to do this. + + + + + Returns a new callable object with the provided initial set of arguments + bound to it. Calling the new function then appends to the additional + user provided arguments. + + + + + Creates a new partial object with the provided positional arguments. + + + + + Creates a new partial object with the provided positional and keyword arguments. + + + + + Gets the function which will be called + + + + + Gets the initially provided positional arguments. + + + + + Gets the initially provided keyword arguments or None. + + + + + Gets or sets the dictionary used for storing extra attributes on the partial object. + + + + + Calls func with the previously provided arguments and more positional arguments. + + + + + Calls func with the previously provided arguments and more positional arguments and keyword arguments. + + + + + Operator method to set arbitrary members on the partial object. + + + + + Operator method to get additional arbitrary members defined on the partial object. + + + + + Operator method to delete arbitrary members defined in the partial object. + + + + + Populates the given directory w/ the locale information from the given + CultureInfo. + + + + + Generator based on the .NET Core implementation of System.Random + + + + + handleToSocket allows us to translate from Python's idea of a socket resource (file + descriptor numbers) to .NET's idea of a socket resource (System.Net.Socket objects). + In particular, this allows the select module to convert file numbers (as returned by + fileno()) and convert them to Socket objects so that it can do something useful with them. + + + + + Return the internal System.Net.Sockets.Socket socket object associated with the given + handle (as returned by GetHandle()), or null if no corresponding socket exists. This is + primarily intended to be used by other modules (such as select) that implement + networking primitives. User code should not normally need to call this function. + + + + + Create a Python socket object from an existing .NET socket object + (like one returned from Socket.Accept()) + + + + + Perform initialization common to all constructors + + + + + Convert an object to a 32-bit integer. This adds two features to Converter.ToInt32: + 1. Sign is ignored. For example, 0xffff0000 converts to 4294901760, where Convert.ToInt32 + would throw because 0xffff0000 is less than zero. + 2. Overflow exceptions are thrown. Converter.ToInt32 throws TypeError if x is + an integer, but is bigger than 32 bits. Instead, we throw OverflowException. + + + + + Convert an object to a 16-bit integer. This adds two features to Converter.ToInt16: + 1. Sign is ignored. For example, 0xff00 converts to 65280, where Convert.ToInt16 + would throw because signed 0xff00 is -256. + 2. Overflow exceptions are thrown. Converter.ToInt16 throws TypeError if x is + an integer, but is bigger than 16 bits. Instead, we throw OverflowException. + + + + + Return a standard socket exception (socket.error) whose message and error code come from a SocketException + This will eventually be enhanced to generate the correct error type (error, herror, gaierror) based on the error code. + + + + + Convert an IPv6 address byte array to a string in standard colon-hex notation. + The .NET IPAddress.ToString() method uses dotted-quad for the last 32 bits, + which differs from the normal Python implementation (but is allowed by the IETF); + this method returns the standard (no dotted-quad) colon-hex form. + + + + + Handle conversion of "" to INADDR_ANY and "<broadcast>" to INADDR_BROADCAST. + Otherwise returns host unchanged. + + + + + Return the IP address associated with host, with optional address family checking. + host may be either a name or an IP address (in string form). + + If family is non-null, a gaierror will be thrown if the host's address family is + not the same as the specified family. gaierror is also raised if the hostname cannot be + converted to an IP address (e.g. through a name lookup failure). + + + + + Return the IP address associated with host, with optional address family checking. + host may be either a name or an IP address (in string form). + + If family is non-null, a gaierror will be thrown if the host's address family is + not the same as the specified family. gaierror is also raised if the hostname cannot be + converted to an IP address (e.g. through a name lookup failure). + + + + + Return fqdn, but with its domain removed if it's on the same domain as the local machine. + + + + + Convert a (host, port) tuple [IPv4] (host, port, flowinfo, scopeid) tuple [IPv6] + to its corresponding IPEndPoint. + + Throws gaierror if host is not a valid address. + Throws ArgumentTypeException if any of the following are true: + - address does not have exactly two elements + - address[0] is not a string + - address[1] is not an int + + + + + Convert an IPEndPoint to its corresponding (host, port) [IPv4] or (host, port, flowinfo, scopeid) [IPv6] tuple. + Throws SocketException if the address family is other than IPv4 or IPv6. + + + + + BER encoding of an integer value is the number of bytes + required to represent the integer followed by the bytes + + + + + Enum which specifies the format type for a compiled struct + + + + + Struct used to store the format and the number of times it should be repeated. + + + + + Duplicates a subprocess handle which was created for piping. + + This is only called when we're duplicating the handle to make it inheritable to the child process. In CPython + the parent handle is always reliably garbage collected. Because we know this handle is not going to be + used we close the handle being duplicated. + + + + + Wrapper provided for backwards compatibility. + + + + + Special hash function because IStructuralEquatable.GetHashCode is not allowed to throw. + + + + + Special equals because none of the special cases in Ops.Equals + are applicable here, and the reference equality check breaks some tests. + + + + + gets the object or throws a reference exception + + + + + Special equality function because IStructuralEquatable.Equals is not allowed to throw. + + + + + gets the object or throws a reference exception + + + + + Special equality function because IStructuralEquatable.Equals is not allowed to throw. + + + + + Returns the underlying .NET RegistryKey + + + + + + zip_searchorder defines how we search for a module in the Zip + archive: we first search for a package __init__, then for + non-package .pyc, .pyo and .py entries. The .pyc and .pyo entries + are swapped by initzipimport() if we run in optimized mode. Also, + '/' is replaced by SEP there. + + + + + Given a path to a Zip file and a toc_entry, return the (uncompressed) + data as a new reference. + + + + + + + + Return the code object for the module named by 'fullname' from the + Zip archive as a new reference. + + + + + + + + + + + Given a path to a Zip archive, build a dict, mapping file names + (local to the archive, using SEP as a separator) to toc entries. + + A toc_entry is a tuple: + (__file__, # value to use for __file__, available for all files + compress, # compression kind; 0 for uncompressed + data_size, # size of compressed data on disk + file_size, # size of decompressed data + file_offset, # offset of file header from start of archive + time, # mod time of file (in dos format) + date, # mod data of file (in dos format) + crc, # crc checksum of the data + ) + Directories can be recognized by the trailing SEP in the name, + data_size and file_offset are 0. + + + + + + + Given a (sub)modulename, write the potential file path in the + archive (without extension) to the path buffer. + + + + + + + + Determines the type of module we have (package or module, or not found). + + + + + + + + Provides a StreamContentProvider for a stream of content backed by a file on disk. + + + + + Delivers the remaining bits, left-aligned, in a byte. + + + + This is valid only if NumRemainingBits is less than 8; + in other words it is valid only after a call to Flush(). + + + + + + Reset the BitWriter. + + + + This is useful when the BitWriter writes into a MemoryStream, and + is used by a BZip2Compressor, which itself is re-used for multiple + distinct data blocks. + + + + + + Write some number of bits from the given value, into the output. + + + + The nbits value should be a max of 25, for safety. For performance + reasons, this method does not check! + + + + + + Write a full 8-bit byte into the output. + + + + + Write four 8-bit bytes into the output. + + + + + Write all available byte-aligned bytes. + + + + This method writes no new output, but flushes any accumulated + bits. At completion, the accumulator may contain up to 7 + bits. + + + This is necessary when re-assembling output from N independent + compressors, one for each of N blocks. The output of any + particular compressor will in general have some fragment of a byte + remaining. This fragment needs to be accumulated into the + parent BZip2OutputStream. + + + + + + Writes all available bytes, and emits padding for the final byte as + necessary. This must be the last method invoked on an instance of + BitWriter. + + + + Knuth's increments seem to work better than Incerpi-Sedgewick here. + Possibly because the number of elems to sort is usually small, typically + <= 20. + + + + BZip2Compressor writes its compressed data out via a BitWriter. This + is necessary because BZip2 does byte shredding. + + + + + The number of uncompressed bytes being held in the buffer. + + + + I am thinking this may be useful in a Stream that uses this + compressor class. In the Close() method on the stream it could + check this value to see if anything has been written at all. You + may think the stream could easily track the number of bytes it + wrote, which would eliminate the need for this. But, there is the + case where the stream writes a complete block, and it is full, and + then writes no more. In that case the stream may want to check. + + + + + + Accept new bytes into the compressor data buffer + + + + This method does the first-level (cheap) run-length encoding, and + stores the encoded data into the rle block. + + + + + + Process one input byte into the block. + + + + + To "process" the byte means to do the run-length encoding. + There are 3 possible return values: + + 0 - the byte was not written, in other words, not + encoded into the block. This happens when the + byte b would require the start of a new run, and + the block has no more room for new runs. + + 1 - the byte was written, and the block is not full. + + 2 - the byte was written, and the block is full. + + + + 0 if the byte was not written, non-zero if written. + + + + Append one run to the output block. + + + + + This compressor does run-length-encoding before BWT and etc. This + method simply appends a run to the output block. The append always + succeeds. The return value indicates whether the block is full: + false (not full) implies that at least one additional run could be + processed. + + + true if the block is now full; otherwise false. + + + + Compress the data that has been placed (Run-length-encoded) into the + block. The compressed data goes into the CompressedBytes array. + + + + Side effects: 1. fills the CompressedBytes array. 2. sets the + AvailableBytesOut property. + + + + + This is the most hammered method of this class. + +

+ This is the version using unrolled loops. +

+
+ + Method "mainQSort3", file "blocksort.c", BZip2 1.0.2 + + + Array instance identical to sfmap, both are used only + temporarily and independently, so we do not need to allocate + additional memory. + + + + A read-only decorator stream that performs BZip2 decompression on Read. + + + + + Compressor State + + + + + Create a BZip2InputStream, wrapping it around the given input Stream. + + + + The input stream will be closed when the BZip2InputStream is closed. + + + The stream from which to read compressed data + + + + Create a BZip2InputStream with the given stream, and + specifying whether to leave the wrapped stream open when + the BZip2InputStream is closed. + + The stream from which to read compressed data + + Whether to leave the input stream open, when the BZip2InputStream closes. + + + + + This example reads a bzip2-compressed file, decompresses it, + and writes the decompressed data into a newly created file. + + + var fname = "logfile.log.bz2"; + using (var fs = File.OpenRead(fname)) + { + using (var decompressor = new Ionic.BZip2.BZip2InputStream(fs)) + { + var outFname = fname + ".decompressed"; + using (var output = File.Create(outFname)) + { + byte[] buffer = new byte[2048]; + int n; + while ((n = decompressor.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer, 0, n); + } + } + } + } + + + + + + Read data from the stream. + + + + + To decompress a BZip2 data stream, create a BZip2InputStream, + providing a stream that reads compressed data. Then call Read() on + that BZip2InputStream, and the data read will be decompressed + as you read. + + + + A BZip2InputStream can be used only for Read(), not for Write(). + + + + The buffer into which the read data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Read a single byte from the stream. + + the byte read from the stream, or -1 if EOF + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Flush the stream. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the + total number of uncompressed bytes read in. + + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Calling this method always throws a . + + this parameter is never used + this parameter is never used + this parameter is never used + + + + Dispose the stream. + + + indicates whether the Dispose method was invoked by user code. + + + + + Read n bits from input, right justifying the result. + + + + For example, if you read 1 bit, the result is either 0 + or 1. + + + + The number of bits to read, always between 1 and 32. + + + + Called by createHuffmanDecodingTables() exclusively. + + + Called by recvDecodingTables() exclusively. + + + Freq table collected to save a pass over the data during + decompression. + + + Initializes the tt array. + + This method is called when the required length of the array is known. + I don't initialize it at construction time to avoid unneccessary + memory allocation when compressing small files. + + + + Dump the current state of the decompressor, to restore it in case of an error. + This allows the decompressor to be essentially "rewound" and retried when more + data arrives. + + This is only used by IronPython. + + The current state. + + + + Restore the internal compressor state if an error occurred. + + The old state. + + + + A write-only decorator stream that compresses data as it is + written using the BZip2 algorithm. + + + + + Constructs a new BZip2OutputStream, that sends its + compressed output to the given output stream. + + + + The destination stream, to which compressed output will be sent. + + + + + This example reads a file, then compresses it with bzip2 file, + and writes the compressed data into a newly created file. + + + var fname = "logfile.log"; + using (var fs = File.OpenRead(fname)) + { + var outFname = fname + ".bz2"; + using (var output = File.Create(outFname)) + { + using (var compressor = new Ionic.BZip2.BZip2OutputStream(output)) + { + byte[] buffer = new byte[2048]; + int n; + while ((n = fs.Read(buffer, 0, buffer.Length)) > 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + + + Constructs a new BZip2OutputStream with specified blocksize. + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + + + Constructs a new BZip2OutputStream. + + the destination stream. + + whether to leave the captive stream open upon closing this stream. + + + + + Constructs a new BZip2OutputStream with specified blocksize, + and explicitly specifies whether to leave the wrapped stream open. + + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + whether to leave the captive stream open upon closing this stream. + + + + + Flush the stream. + + + + + The blocksize parameter specified at construction time. + + + + + Write data to the stream. + + + + + Use the BZip2OutputStream to compress data while writing: + create a BZip2OutputStream with a writable output stream. + Then call Write() on that BZip2OutputStream, providing + uncompressed data as input. The data sent to the output stream will + be the compressed form of the input data. + + + + A BZip2OutputStream can be used only for Write() not for Read(). + + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Indicates whether the stream can be read. + + + The return value is always false. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value should always be true, unless and until the + object is disposed and closed. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the + total number of uncompressed bytes written through. + + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Calling this method always throws a . + + this parameter is never used + this parameter is never used + this parameter is never used + never returns anything; always throws + + + + A write-only decorator stream that compresses data as it is + written using the BZip2 algorithm. This stream compresses by + block using multiple threads. + + + This class performs BZIP2 compression through writing. For + more information on the BZIP2 algorithm, see + . + + + + This class is similar to , + except that this implementation uses an approach that employs multiple + worker threads to perform the compression. On a multi-cpu or multi-core + computer, the performance of this class can be significantly higher than + the single-threaded BZip2OutputStream, particularly for larger streams. + How large? Anything over 10mb is a good candidate for parallel + compression. + + + + The tradeoff is that this class uses more memory and more CPU than the + vanilla BZip2OutputStream. Also, for small files, the + ParallelBZip2OutputStream can be much slower than the vanilla + BZip2OutputStream, because of the overhead associated to using the + thread pool. + + + + + + + Constructs a new ParallelBZip2OutputStream, that sends its + compressed output to the given output stream. + + + + The destination stream, to which compressed output will be sent. + + + + + This example reads a file, then compresses it with bzip2 file, + and writes the compressed data into a newly created file. + + + var fname = "logfile.log"; + using (var fs = File.OpenRead(fname)) + { + var outFname = fname + ".bz2"; + using (var output = File.Create(outFname)) + { + using (var compressor = new Ionic.BZip2.ParallelBZip2OutputStream(output)) + { + byte[] buffer = new byte[2048]; + int n; + while ((n = fs.Read(buffer, 0, buffer.Length)) > 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + + + Constructs a new ParallelBZip2OutputStream with specified blocksize. + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + + + Constructs a new ParallelBZip2OutputStream. + + the destination stream. + + whether to leave the captive stream open upon closing this stream. + + + + + Constructs a new ParallelBZip2OutputStream with specified blocksize, + and explicitly specifies whether to leave the wrapped stream open. + + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + whether to leave the captive stream open upon closing this stream. + + + + + The maximum number of concurrent compression worker threads to use. + + + + + This property sets an upper limit on the number of concurrent worker + threads to employ for compression. The implementation of this stream + employs multiple threads from the .NET thread pool, via + ThreadPool.QueueUserWorkItem(), to compress the incoming data by + block. As each block of data is compressed, this stream re-orders the + compressed blocks and writes them to the output stream. + + + + A higher number of workers enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + By default, DotNetZip allocates 4 workers per CPU core, subject to the + upper limit specified in this property. For example, suppose the + application sets this property to 16. Then, on a machine with 2 + cores, DotNetZip will use 8 workers; that number does not exceed the + upper limit specified by this property, so the actual number of + workers used will be 4 * 2 = 8. On a machine with 4 cores, DotNetZip + will use 16 workers; again, the limit does not apply. On a machine + with 8 cores, DotNetZip will use 16 workers, because of the limit. + + + + For each compression "worker thread" that occurs in parallel, there is + up to 2mb of memory allocated, for buffering and processing. The + actual number depends on the property. + + + + CPU utilization will also go up with additional workers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + The application can set this value at any time, but it is effective + only before the first call to Write(), which is when the buffers are + allocated. + + + + + + Flush the stream. + + + + + The blocksize parameter specified at construction time. + + + + + Write data to the stream. + + + + + Use the ParallelBZip2OutputStream to compress data while + writing: create a ParallelBZip2OutputStream with a writable + output stream. Then call Write() on that + ParallelBZip2OutputStream, providing uncompressed data as + input. The data sent to the output stream will be the compressed + form of the input data. + + + + A ParallelBZip2OutputStream can be used only for + Write() not for Read(). + + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Indicates whether the stream can be read. + + + The return value is always false. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the + total number of uncompressed bytes written through. + + + + + The total number of bytes written out by the stream. + + + This value is meaningful only after a call to Close(). + + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Calling this method always throws a . + + this parameter is never used + this parameter is never used + this parameter is never used + never returns anything; always throws + + + + Returns the "random" number at a specific index. + + the index + the random number + + + + Computes a CRC-32. The CRC-32 algorithm is parameterized - you + can set the polynomial and enable or disable bit + reversal. This can be used for GZIP, BZip2, or ZIP. + + + This type is used internally by DotNetZip; it is generally not used + directly by applications wishing to create, read, or manipulate zip + archive files. + + + + + Indicates the total number of bytes applied to the CRC. + + + + + Indicates the current CRC for all blocks slurped in. + + + + + Returns the CRC32 for the specified stream. + + The stream over which to calculate the CRC32 + the CRC32 calculation + + + + Returns the CRC32 for the specified stream, and writes the input into the + output stream. + + The stream over which to calculate the CRC32 + The stream into which to deflate the input + the CRC32 calculation + + + + Get the CRC32 for the given (word,byte) combo. This is a + computation defined by PKzip for PKZIP 2.0 (weak) encryption. + + The word to start with. + The byte to combine it with. + The CRC-ized result. + + + + Update the value for the running CRC32 using the given block of bytes. + This is useful when using the CRC32() class in a Stream. + + block of bytes to slurp + starting point in the block + how many bytes within the block to slurp + + + + Process one byte in the CRC. + + the byte to include into the CRC . + + + + Process a run of N identical bytes into the CRC. + + + + This method serves as an optimization for updating the CRC when a + run of identical bytes is found. Rather than passing in a buffer of + length n, containing all identical bytes b, this method accepts the + byte value and the length of the (virtual) buffer - the length of + the run. + + + the byte to include into the CRC. + the number of times that byte should be repeated. + + + + Combines the given CRC32 value with the current running total. + + + This is useful when using a divide-and-conquer approach to + calculating a CRC. Multiple threads can each calculate a + CRC32 on a segment of the data, and then combine the + individual CRC32 values at the end. + + the crc value to be combined with this one + the length of data the CRC value was calculated on + + + + Create an instance of the CRC32 class using the default settings: no + bit reversal, and a polynomial of 0xEDB88320. + + + + + Create an instance of the CRC32 class, specifying whether to reverse + data bits or not. + + + specify true if the instance should reverse data bits. + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here. In the CRC-32 used by GZIP and PKZIP, the bits are not + reversed; Therefore if you want a CRC32 with compatibility with + those, you should pass false. + + + + + + Create an instance of the CRC32 class, specifying the polynomial and + whether to reverse data bits or not. + + + The polynomial to use for the CRC, expressed in the reversed (LSB) + format: the highest ordered bit in the polynomial value is the + coefficient of the 0th power; the second-highest order bit is the + coefficient of the 1 power, and so on. Expressed this way, the + polynomial for the CRC-32C used in IEEE 802.3, is 0xEDB88320. + + + specify true if the instance should reverse data bits. + + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here for the reverseBits parameter. In the CRC-32 used by + GZIP and PKZIP, the bits are not reversed; Therefore if you want a + CRC32 with compatibility with those, you should pass false for the + reverseBits parameter. + + + + + + Reset the CRC-32 class - clear the CRC "remainder register." + + + + Use this when employing a single instance of this class to compute + multiple, distinct CRCs on multiple, distinct data blocks. + + + + + + A Stream that calculates a CRC32 (a checksum) on all bytes read, + or on all bytes written. + + + + + This class can be used to verify the CRC of a ZipEntry when + reading from a stream, or to calculate a CRC when writing to a + stream. The stream should be used to either read, or write, but + not both. If you intermix reads and writes, the results are not + defined. + + + + This class is intended primarily for use internally by the + DotNetZip library. + + + + + + The default constructor. + + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). The stream uses the default CRC32 + algorithm, which implies a polynomial of 0xEDB88320. + + + The underlying stream + + + + The constructor allows the caller to specify how to handle the + underlying stream at close. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). + + + The underlying stream + The length of the stream to slurp + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(). + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(), and the CRC32 instance to use. + + + + The stream uses the specified CRC32 instance, which allows the + application to specify how the CRC gets calculated. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + the CRC32 instance to use to calculate the CRC32 + + + + Gets the total number of bytes run through the CRC32 calculator. + + + + This is either the total number of bytes read, or the total number of + bytes written, depending on the direction of this stream. + + + + + Provides the current CRC for all blocks slurped in. + + + + The running total of the CRC is kept as data is written or read + through the stream. read this property after all reads or writes to + get an accurate CRC for the entire stream. + + + + + + Indicates whether the underlying stream will be left open when the + CrcCalculatorStream is Closed. + + + + Set this at any point before calling . + + + + + + Read from the stream + + the buffer to read + the offset at which to start + the number of bytes to read + the number of bytes actually read + + + + Write to the stream. + + the buffer from which to write + the offset at which to start writing + the number of bytes to write + + + + Indicates whether the stream supports reading. + + + + + Indicates whether the stream supports seeking. + + + + Always returns false. + + + + + + Indicates whether the stream supports writing. + + + + + Flush the stream. + + + + + Returns the length of the underlying stream. + + + + + The getter for this property returns the total bytes read. + If you use the setter, it will throw + . + + + + + Seeking is not supported on this stream. This method always throws + + + N/A + N/A + N/A + + + + This method always throws + + + N/A + +
+
diff --git a/tracking and telemetry/Client/bin/Release/IronPython.SQLite.dll b/tracking and telemetry/Client/bin/Release/IronPython.SQLite.dll new file mode 100644 index 0000000..ae0a216 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/IronPython.SQLite.dll differ diff --git a/tracking and telemetry/Client/bin/Release/IronPython.SQLite.xml b/tracking and telemetry/Client/bin/Release/IronPython.SQLite.xml new file mode 100644 index 0000000..462d932 --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/IronPython.SQLite.xml @@ -0,0 +1,34 @@ + + + + IronPython.SQLite + + + + + Basic locking strategy for Console/Winform applications + + + + + Locking strategy for Medium Trust. It uses the same trick used in the native code for WIN_CE + which doesn't support LockFileEx as well. + + + + * The rest are extensions, not normally found in printf() */ + + + * beginning-of-error-codes */ + + + * previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ + + + * The methods above are in version 1 of the sqlite_module object. Those + + + * x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ + + + diff --git a/tracking and telemetry/Client/bin/Release/IronPython.Wpf.dll b/tracking and telemetry/Client/bin/Release/IronPython.Wpf.dll new file mode 100644 index 0000000..48160b8 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/IronPython.Wpf.dll differ diff --git a/tracking and telemetry/Client/bin/Release/IronPython.Wpf.xml b/tracking and telemetry/Client/bin/Release/IronPython.Wpf.xml new file mode 100644 index 0000000..0fa838b --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/IronPython.Wpf.xml @@ -0,0 +1,53 @@ + + + + IronPython.Wpf + + + + + Provides helpers for interacting with Windows Presentation Foundation applications. + + + + + Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided module. Any named objects are assigned to the object. + + The provided object is expected to be the same type as the root of the XAML element. + + + + + Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided module. Any named objects are assigned to the object. + + The provided object is expected to be the same type as the root of the XAML element. + + + + + Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided module. Any named objects are assigned to the object. + + The provided object is expected to be the same type as the root of the XAML element. + + + + + Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided module. Any named objects are assigned to the object. + + The provided object is expected to be the same type as the root of the XAML element. + + + + + Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided module. Any named objects are assigned to the object. + + The provided object is expected to be the same type as the root of the XAML element. + + + + diff --git a/tracking and telemetry/Client/bin/Release/IronPython.dll b/tracking and telemetry/Client/bin/Release/IronPython.dll new file mode 100644 index 0000000..6fc06a0 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/IronPython.dll differ diff --git a/tracking and telemetry/Client/bin/Release/IronPython.xml b/tracking and telemetry/Client/bin/Release/IronPython.xml new file mode 100644 index 0000000..b5a434a --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/IronPython.xml @@ -0,0 +1,7660 @@ + + + + IronPython + + + + + Gets the closure tuple from our parent context. + + + + + Scope for the comprehension. Because scopes are usually statements and comprehensions are expressions + this doesn't actually show up in the AST hierarchy and instead hangs off the comprehension expression. + + + + + Pulls the closure tuple from our function/generator which is flowed into each function call. + + + + + Returns an expression which creates the function object. + + + + + Creates the LambdaExpression which is the actual function body. + + + + + Creates the LambdaExpression which implements the body of the function. + + The functions signature is either "object Function(PythonFunction, ...)" + where there is one object parameter for each user defined parameter or + object Function(PythonFunction, object[]) for functions which take more + than PythonCallTargets.MaxArgs arguments. + + + + + Determines delegate type for the Python function + + + + + Rewrites the tree for performing lookups against globals instead of being bound + against the optimized scope. This is used if the user creates a function using public + PythonFunction ctor. + + + + + Returns true if the node can throw, false otherwise. Used to determine + whether or not we need to update the current dynamic stack info. + + + + + Creates a method frame for tracking purposes and enforces recursion + + + + + Removes the frames from generated code for when we're compiling the tracing delegate + which will track the frames it's self. + + + + + A temporary variable to track if the current line number has been emitted via the fault update block. + + For example consider: + + try: + raise Exception() + except Exception, e: + # do something here + raise + + At "do something here" we need to have already emitted the line number, when we re-raise we shouldn't add it + again. If we handled the exception then we should have set the bool back to false. + + We also sometimes directly check _lineNoUpdated to avoid creating this unless we have nested exceptions. + + + + + A temporary variable to track the current line number + + + + + Parameter base class + + + + + Position of the parameter: 0-based index + + + + + Parameter name + + + + + Top-level ast for all Python code. Typically represents a module but could also + be exec or eval code. + + + + + Creates a new PythonAst without a body. ParsingFinished should be called afterwards to set + the body. + + + + + Called when parsing is complete, the body is built, the line mapping and language features are known. + + This is used in conjunction with the constructor which does not take a body. It enables creating + the outer most PythonAst first so that nodes can always have a global parent. This lets an un-bound + tree to still provide it's line information immediately after parsing. When we set the location + of each node during construction we also set the global parent. When we name bind the global + parent gets replaced with the real parent ScopeStatement. + + a mapping of where each line begins + The body of code + The language features which were set during parsing. + + + + Binds an AST and makes it capable of being reduced and compiled. Before calling Bind an AST cannot successfully + be reduced. + + + + + Creates a variable at the global level. Called for known globals (e.g. __name__), + for variables explicitly declared global by the user, and names accessed + but not defined in the lexical scope. + + + + + Reduces the PythonAst to a LambdaExpression of type Type. + + + + + True division is enabled in this AST. + + + + + True if the with statement is enabled in this AST. + + + + + True if absolute imports are enabled + + + + + Returns a ScriptCode object for this PythonAst. The ScriptCode object + can then be used to execute the code against it's closed over scope or + to execute it against a different scope. + + + + + Rewrites the tree for performing lookups against globals instead of being bound + against the optimized scope. This is used if the user compiles optimied code and then + runs it against a different scope. + + + + + True if this is on-disk code which we don't really have an AST for. + + + + + Represents a reference to a name. A PythonReference is created for each name + referred to in a scope (global, class, or function). + + + + + True iff there is a path in control flow graph on which the variable is used before initialized (assigned or deleted). + + + + + True iff the variable is referred to from the inner scope. + + + + + PythonWalker class - The Python AST Walker (default result is true) + + + + + PythonWalkerNonRecursive class - The Python AST Walker (default result is false) + + + + + The variable used to hold out parents closure tuple in our local scope. + + + + + Gets the expression associated with the local CodeContext. If the function + doesn't have a local CodeContext then this is the global context. + + + + + True if this scope accesses a variable from an outer scope. + + + + + True if an inner scope is accessing a variable defined in this scope. + + + + + True if we are forcing the creation of a dictionary for storing locals. + + This occurs for calls to locals(), dir(), vars(), unqualified exec, and + from ... import *. + + + + + True if variables can be set in a late bound fashion that we don't + know about at code gen time - for example via from foo import *. + + This is tracked independently of the ContainsUnqualifiedExec/NeedsLocalsDictionary + + + + + Gets or creates the FunctionCode object for this FunctionDefinition. + + + + + Variables that are bound in an outer scope - but not a global scope + + + + + Variables that are bound to the global scope + + + + + Variables that are referred to from a nested scope and need to be + promoted to cells. + + + + + Gets the expression for updating the dynamic stack trace at runtime when an + exception is thrown. + + + + + Gets the expression for the actual updating of the line number for stack traces to be available + + + + + Wraps the body of a statement which should result in a frame being available during + exception handling. This ensures the line number is updated as the stack is unwound. + + + + + Provides a place holder for the expression which represents + a FunctionCode. For functions/classes this gets updated after + the AST has been generated because the FunctionCode needs to + know about the tree which gets generated. For modules we + immediately have the value because it always comes in as a parameter. + + + + + Reducible node so that re-writing for profiling does not occur until + after the script code has been completed and is ready to be compiled. + + Without this extra node profiling would force reduction of the node + and we wouldn't have setup our constant access correctly yet. + + + + + Fake ScopeStatement for FunctionCode's to hold on to after we have deserialized pre-compiled code. + + + + + True if the user provided a step parameter (either providing an explicit parameter + or providing an empty step parameter) false if only start and stop were provided. + + + + + The statements under the try-block. + + + + + Array of except (catch) blocks associated with this try. NULL if there are no except blocks. + + + + + The body of the optional Else block for this try. NULL if there is no Else block. + + + + + The body of the optional finally associated with this try. NULL if there is no finally block. + + + + + Transform multiple python except handlers for a try block into a single catch body. + + The variable for the exception in the catch block. + Null if there are no except handlers. Else the statement to go inside the catch handler + + + + Surrounds the body of an except block w/ the appropriate code for maintaining the traceback. + + + + + Local variable. + + Local variables can be referenced from nested lambdas + + + + + Parameter to a LambdaExpression + + Like locals, they can be referenced from nested lambdas + + + + + Global variable + + Should only appear in global (top level) lambda. + + + + + WithStatement is translated to the DLR AST equivalent to + the following Python code snippet (from with statement spec): + + mgr = (EXPR) + exit = mgr.__exit__ # Not calling it yet + value = mgr.__enter__() + exc = True + try: + VAR = value # Only if "as VAR" is present + BLOCK + except: + # The exceptional case is handled here + exc = False + if not exit(*sys.exc_info()): + raise + # The exception is swallowed if exit() returns true + finally: + # The normal and non-local-goto cases are handled here + if exc: + exit(None, None, None) + + + + + + A global allocator that puts all of the globals into an array access. The array is an + array of PythonGlobal objects. We then just close over the array for any inner functions. + + Once compiled a RuntimeScriptCode is produced which is closed over the entire execution + environment. + + + + + Provides globals for when we need to lookup into a dictionary for each global access. + + This is the slowest form of globals and is only used when we need to run against an + arbitrary dictionary given to us by a user. + + + + + Implements globals which are backed by a static type, followed by an array if the static types' slots become full. The global + variables are stored in static fields on a type for fast access. The type also includes fields for constants and call sites + so they can be accessed much fasetr. + + We don't generate any code into the type though - DynamicMethod's are much faster for code gen then normal ref emit. + + + Implements globals which are backed by a static type, followed by an array if the static types' slots become full. The global + variables are stored in static fields on a type for fast access. The type also includes fields for constants and call sites + so they can be accessed much fasetr. + + We don't generate any code into the type though - DynamicMethod's are much faster for code gen then normal ref emit. + + + + Ensures the underlying array is long enough to accomodate the given index + The context storage type corresponding to the given index + + + Ensures the underlying array is long enough to accomodate the given index + The constant storage type corresponding to the given index + + + Ensures the underlying array is long enough to accomodate the given index + The global storage type corresponding to the given index + + + Ensures the underlying array is long enough to accomodate the given index + The site storage type corresponding to the given index + + + + Small reducable node which just fetches the value from a ClosureCell + object. Like w/ global variables the compiler recognizes these on + sets and turns them into assignments on the python global object. + + + + + Gets the expression which points at the closure cell. + + + + + The original expression for the incoming parameter if this is a parameter closure. Otherwise + the value is null. + + + + + Gets the PythonVariable for which this closure expression was created. + + + + + Creates the storage for the closure cell. If this is a closure over a parameter it + captures the initial incoming parameter value. + + + + + Reduces the closure cell to a read of the value stored in the cell. + + + + + Assigns a value to the closure cell. + + + + + Removes the current value from the closure cell. + + + + + Tracking for variables lifted into closure objects. Used to store information in a function + about the outer variables it accesses. + + + + + Specifies the compilation mode which will be used during the AST transformation + + + + + Compilation will proceed in a manner in which the resulting AST can be serialized to disk. + + + + + Compilation will use a type and declare static fields for globals. The resulting type + is uncollectible and therefore extended use of this will cause memory leaks. + + + + + Compilation will use an array for globals. The resulting code will be fully collectible + and once all references are released will be collected. + + + + + Compilation will force all global accesses to do a full lookup. This will also happen for + any unbound local references. This is the slowest form of code generation and is only + used for exec/eval code where we can run against an arbitrary dictionary. + + + + + When finding a yield return or yield break, this rewriter flattens out + containing blocks, scopes, and expressions with stack state. All + scopes encountered have their variables promoted to the generator's + closure, so they survive yields. + + + + + Spills the right side into a temp, and replaces it with its temp. + Returns the expression that initializes the temp. + + + + + Makes an assignment to this variable. Pushes the assignment as far + into the right side as possible, to allow jumps into it. + + + + + Accesses the property of a tuple. The node can be created first and then the tuple and index + type can be filled in before the tree is actually generated. This enables creation of these + nodes before the tuple type is actually known. + + + + + Represents code which can be lazily compiled. + + The code is created in an AST which provides the Expression of T and + whether or not the code should be interpreted. For non-pre compiled + scenarios the code will not be compiled until the 1st time it is run. + + For pre-compiled scenarios the code is IExpressionSerializable and will + turn into a normal pre-compiled method. + + + + + A ScriptCode which has been loaded from an assembly which is saved on disk. + + + + + Creates a fake PythonAst object which is represenative of the on-disk script code. + + + + + Language features initialized on parser construction and possibly updated during parsing. + The code can set the language features (e.g. "from __future__ import division"). + + + + + Parse one or more lines of interactive input + + null if input is not yet valid but could be with more lines + + + + Given the interactive text input for a compound statement, calculate what the + indentation level of the next line should be + + + + + Peek if the next token is a 'yield' and parse a yield expression. Else return null. + + Called w/ yield already eaten. + + A yield expression if present, else null. + + + + Maybe eats a new line token returning true if the token was + eaten. + + Python always tokenizes to have only 1 new line character in a + row. But we also craete NLToken's and ignore them except for + error reporting purposes. This gives us the same errors as + CPython and also matches the behavior of the standard library + tokenize module. This function eats any present NL tokens and throws + them away. + + + + + Eats a new line token throwing if the next token isn't a new line. + + Python always tokenizes to have only 1 new line character in a + row. But we also craete NLToken's and ignore them except for + error reporting purposes. This gives us the same errors as + CPython and also matches the behavior of the standard library + tokenize module. This function eats any present NL tokens and throws + them away. + + + + + Creates a new PythonCompilerOptions with the default language features enabled. + + + + + Creates a new PythonCompilerOptions with the specified language features enabled. + + + + + Creates a new PythonCompilerOptions and enables or disables true division. + + This overload is obsolete, instead you should use the overload which takes a + ModuleOptions. + + + + + Gets or sets the initial indentation. This can be set to allow parsing + partial blocks of code that are already indented. + + For each element of the array there is an additional level of indentation. + Each integer value represents the number of spaces used for the indentation. + + If this value is null then no indentation level is specified. + + + + + Provides cached global variable for modules to enable optimized access to + module globals. Both the module global value and the cached value can be held + onto and the cached value can be invalidated by the providing LanguageContext. + + The cached value is provided by the LanguageContext.GetModuleCache API. + + + + + Small reducable node which just fetches the value from a PythonGlobal + object. The compiler recognizes these on sets and turns them into + assignments on the python global object. + + + + + A ScriptCode which can be saved to disk. We only create this when called via + the clr.CompileModules API. This ScriptCode does not support running. + + + + + Represents a script code which can be dynamically bound to execute against + arbitrary Scope objects. This is used for code when the user runs against + a particular scope as well as for exec and eval code as well. It is also + used when tracing is enabled. + + + + + Provides a wrapper around "dynamic" expressions which we've opened coded (for optimized code generation). + + This lets us recognize both normal Dynamic and our own Dynamic expressions and apply the combo binder on them. + + + + + Represents a script code which can be consumed at runtime as-is. This code has + no external dependencies and is closed over its scope. + + + + + Summary description for Token. + + + + + IronPython tokenizer + + + + + Used to create tokenizer for hosting API. + + + + + Equality comparer that can compare strings to our current token w/o creating a new string first. + + + + + True if the last characters in the buffer are a backslash followed by a new line indicating + that their is an incompletement statement which needs further input to complete. + + + + + Returns whether the + + + + + Resizes an array to a speficied new size and copies a portion of the original array into its beginning. + + + + + Provides helpers for interacting with IronPython. + + + + + Creates a new ScriptRuntime with the IronPython scipting engine pre-configured. + + + + + + Creates a new ScriptRuntime with the IronPython scipting engine pre-configured and + additional options. + + + + + Creates a new ScriptRuntime with the IronPython scripting engine pre-configured + in the specified AppDomain. The remote ScriptRuntime may be manipulated from + the local domain but all code will run in the remote domain. + + + + + Creates a new ScriptRuntime with the IronPython scripting engine pre-configured + in the specified AppDomain with additional options. The remote ScriptRuntime may + be manipulated from the local domain but all code will run in the remote domain. + + + + + Creates a new ScriptRuntime and returns the ScriptEngine for IronPython. If + the ScriptRuntime is required it can be acquired from the Runtime property + on the engine. + + + + + Creates a new ScriptRuntime with the specified options and returns the + ScriptEngine for IronPython. If the ScriptRuntime is required it can be + acquired from the Runtime property on the engine. + + + + + Creates a new ScriptRuntime and returns the ScriptEngine for IronPython. If + the ScriptRuntime is required it can be acquired from the Runtime property + on the engine. + + The remote ScriptRuntime may be manipulated from the local domain but + all code will run in the remote domain. + + + + + Creates a new ScriptRuntime with the specified options and returns the + ScriptEngine for IronPython. If the ScriptRuntime is required it can be + acquired from the Runtime property on the engine. + + The remote ScriptRuntime may be manipulated from the local domain but + all code will run in the remote domain. + + + + + Given a ScriptRuntime gets the ScriptEngine for IronPython. + + + + + Gets a ScriptScope which is the Python sys module for the provided ScriptRuntime. + + + + + Gets a ScriptScope which is the Python sys module for the provided ScriptEngine. + + + + + Gets a ScriptScope which is the Python __builtin__ module for the provided ScriptRuntime. + + + + + Gets a ScriptScope which is the Python __builtin__ module for the provided ScriptEngine. + + + + + Gets a ScriptScope which is the Python clr module for the provided ScriptRuntime. + + + + + Gets a ScriptScope which is the Python clr module for the provided ScriptEngine. + + + + + Imports the Python module by the given name and returns its ScriptSCope. If the + module does not exist an exception is raised. + + + + + Imports the Python module by the given name and returns its ScriptSCope. If the + module does not exist an exception is raised. + + + + + Imports the Python module by the given name and inserts it into the ScriptScope as that name. If the + module does not exist an exception is raised. + + + + + + + Sets sys.exec_prefix, sys.executable and sys.version and adds the prefix to sys.path + + + + + Sets sys.exec_prefix, sys.executable and sys.version and adds the prefix to sys.path + + + + + Enables call tracing for the current thread in this ScriptEngine. + + TracebackDelegate will be called back for each function entry, exit, exception, and line change. + + + + + Enables call tracing for the current thread for the Python engine in this ScriptRuntime. + + TracebackDelegate will be called back for each function entry, exit, exception, and line change. + + + + + Provides nested level debugging support when SetTrace or SetProfile are used. + + This saves the current tracing information and then calls the provided object. + + + + + Provides nested level debugging support when SetTrace or SetProfile are used. + + This saves the current tracing information and then calls the provided object. + + + + + Creates a ScriptRuntimeSetup object which includes the Python script engine with the specified options. + + The ScriptRuntimeSetup object can then be additional configured and used to create a ScriptRuntime. + + + + + Creates a LanguageSetup object which includes the Python script engine with the specified options. + + The LanguageSetup object can be used with other LanguageSetup objects from other languages to + configure a ScriptRuntimeSetup object. + + + + + Creates a new PythonModule with the specified name and published it in sys.modules. + + Returns the ScriptScope associated with the module. + + + + + Creates a new PythonModule with the specified name and filename published it + in sys.modules. + + Returns the ScriptScope associated with the module. + + + + + Creates a new PythonModule with the specified name, filename, and doc string and + published it in sys.modules. + + Returns the ScriptScope associated with the module. + + + + + Gets the list of loaded Python module files names which are available in the provided ScriptEngine. + + + + + A simple Python command-line should mimic the standard python.exe + + + + + Returns the display look for IronPython. + + The returned string uses This \n instead of Environment.NewLine for it's line seperator + because it is intended to be outputted through the Python I/O system. + + + + + Loads any extension DLLs present in sys.prefix\DLLs directory and adds references to them. + + This provides an easy drop-in location for .NET assemblies which should be automatically referenced + (exposed via import), COM libraries, and pre-compiled Python code. + + + + + Attempts to run a single interaction and handle any language-specific + exceptions. Base classes can override this and call the base implementation + surrounded with their own exception handling. + + Returns null if successful and execution should continue, or an exit code. + + + + + Parses a single interactive command and executes it. + + Returns null if successful and execution should continue, or the appropiate exit code. + + + + + Skip the first line of the code to execute. This is useful for executing Unix scripts which + have the command to execute specified in the first line. + This only apply to the script code executed by the ScriptEngine APIs, but not for other script code + that happens to get called as a result of the execution. + + + + On error. + + + + Helper class for implementing the Python class. + + This is exposed as a service through PythonEngine and the helper class + uses this service to get the correct remoting semantics. + + + + + Returns an ObjectHandle to a delegate of type Action[Action] which calls the current + command dispatcher. + + + + + The error involved an incomplete statement due to an unexpected EOF. + + + + + The error involved an incomplete token. + + + + + The mask for the actual error values + + + + + The error was a general syntax error + + + + + The error was an indentation error. + + + + + The error was a tab error. + + + + + syntax error shouldn't include a caret (no column offset should be included) + + + + + Marks that the return value of a function might include NotImplemented. + + This is added to an operator method to ensure that all necessary methods are called + if one cannot guarantee that it can perform the comparison. + + + + + Specialized version because enumerating tuples by Python's definition + doesn't call __getitem__, but filter does! + + + + + Opens a file and returns a new file object. + + name -> the name of the file to open. + mode -> the mode to open the file (r for reading, w for writing, a for appending, default is r). + bufsize -> the size of the buffer to be used (<= 0 indicates to use the default size) + + + + + Creates a new Python file object from a .NET stream object. + + stream -> the stream to wrap in a file object. + + + + + object overload of range - attempts to convert via __int__, and __trunc__ if arg is + an OldInstance + + + + + object overload of range - attempts to convert via __int__, and __trunc__ if arg is + an OldInstance + + + + + Gets the appropriate LanguageContext to be used for code compiled with Python's compile, eval, execfile, etc... + + + + Returns true if we should inherit our callers context (true division, etc...), false otherwise + + + Returns the default compiler flags or the flags the user specified. + + + + Gets a scope used for executing new code in optionally replacing the globals and locals dictionaries. + + + + + Returns detailed call statistics. Not implemented in IronPython and always returns None. + + + + + Handles output of the expression statement. + Prints the value and sets the __builtin__._ + + + + + Not used. + + + + + Not used. + + + + + Not an actual node. We don't create this, but it's here for compatibility. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to couldn't find member {0}. + + + + + Looks up a localized string similar to default value must be specified here. + + + + + Looks up a localized string similar to duplicate argument '{0}' in function definition. + + + + + Looks up a localized string similar to duplicate keyword argument. + + + + + Looks up a localized string similar to <eof> while reading string. + + + + + Looks up a localized string similar to EOF while scanning triple-quoted string. + + + + + Looks up a localized string similar to EOL while scanning single-quoted string. + + + + + Looks up a localized string similar to expected an indented block. + + + + + Looks up a localized string similar to expected name. + + + + + Looks up a localized string similar to Expecting identifier:. + + + + + Looks up a localized string similar to inconsistent use of tabs and spaces in indentation. + + + + + Looks up a localized string similar to unindent does not match any outer indentation level. + + + + + Looks up a localized string similar to Invalid argument value.. + + + + + Looks up a localized string similar to MakeGenericType on non-generic type. + + + + + Looks up a localized string similar to Invalid parameter collection for the function.. + + + + + Looks up a localized string similar to invalid token + + + + + Looks up a localized string similar to invalid syntax. + + + + + Looks up a localized string similar to object ({0}) is not creatable w/ keyword arguments. + + + + + Looks up a localized string similar to keywords must come before * args. + + + + + Looks up a localized string similar to type does not have {0} field. + + + + + Looks up a localized string similar to from __future__ imports must occur at the beginning of the file. + + + + + Looks up a localized string similar to 'return' outside function. + + + + + Looks up a localized string similar to 'yield' outside function. + + + + + Looks up a localized string similar to NEWLINE in double-quoted string. + + + + + Looks up a localized string similar to NEWLINE in single-quoted string. + + + + + Looks up a localized string similar to future statement does not support import *. + + + + + Looks up a localized string similar to non-keyword arg after keyword arg. + + + + + Looks up a localized string similar to not a chance. + + + + + Looks up a localized string similar to The method or operation is not implemented.. + + + + + Looks up a localized string similar to only one ** allowed. + + + + + Looks up a localized string similar to only one * allowed. + + + + + Looks up a localized string similar to Context must be PythonCompilerContext. + + + + + Looks up a localized string similar to cannot delete slot. + + + + + Looks up a localized string similar to cannot get slot. + + + + + Looks up a localized string similar to cannot set slot. + + + + + Looks up a localized string similar to static property '{0}' of '{1}' can only be read through a type, not an instance. + + + + + Looks up a localized string similar to static property '{0}' of '{1}' can only be assigned to through a type, not an instance. + + + + + Looks up a localized string similar to no value for this token. + + + + + Looks up a localized string similar to too many versions. + + + + + Looks up a localized string similar to unexpected token '{0}'. + + + + + Looks up a localized string similar to future feature is not defined:. + + + + + Provides support for emitting warnings when built in methods are invoked at runtime. + + + + + Backwards compatible Convert for the old sites that need to flow CodeContext + + + + + Creates a new InvokeBinder which will call with positional splatting. + + The signature of the target site should be object(function), object[], retType + + + + + + + Creates a new InvokeBinder which will call with positional and keyword splatting. + + The signature of the target site should be object(function), object[], dictionary, retType + + + + + Common helpers used by the various binding logic. + + + + + Tries to get the BuiltinFunction for the given name on the type of the provided MetaObject. + + Succeeds if the MetaObject is a BuiltinFunction or BuiltinMethodDescriptor. + + + + + Gets the best CallSignature from a MetaAction. + + The MetaAction should be either a Python InvokeBinder, or a DLR InvokeAction or + CreateAction. For Python we can use a full-fidelity + + + + + + + Transforms an invoke member into a Python GetMember/Invoke. The caller should + verify that the given attribute is not resolved against a normal .NET class + before calling this. If it is a normal .NET member then a fallback InvokeMember + is preferred. + + + + + Determines if the type associated with the first MetaObject is a subclass of the + type associated with the second MetaObject. + + + + + Adds a try/finally which enforces recursion limits around the target method. + + + + + Helper to do fallback for Invoke's so we can handle both StandardAction and Python's + InvokeBinder. + + + + + Converts arguments into a form which can be used for COM interop. + + The argument is only converted if we have an IronPython specific + conversion when calling COM methods. + + + + + Converts a single argument into a form which can be used for COM + interop. + + The argument is only converted if we have an IronPython specific + conversion when calling COM methods. + + + + + Fallback action for performing an invoke from Python. We translate the + CallSignature which supports splatting position and keyword args into + their expanded form. + + + + + Builds up a series of conditionals when the False clause isn't yet known. We can + keep appending conditions and if true's. Each subsequent true branch becomes the + false branch of the previous condition and body. Finally a non-conditional terminating + branch must be added. + + + + + Adds a new conditional and body. The first call this becomes the top-level + conditional, subsequent calls will have it added as false statement of the + previous conditional. + + + + + If present, converts the finish condition body be a normal conditional body. + The builder instance will become unfinished again. + + If no finish condition body is available, this extends the last condition check + with the new condition. + + + + + Adds the non-conditional terminating node. + + + + + Returns true if no conditions have been added + + + + + Returns true if a final, non-conditional, body has been added. + + + + + Gets the resulting meta object for the full body. FinishCondition + must have been called. + + + + + Adds a variable which will be scoped at the level of the final expression. + + + + + ArgBuilder which provides the CodeContext parameter to a method. + + + + + Fallback action for performing a new() on a foreign IDynamicMetaObjectProvider. used + when call falls back. + + + + + Base class for all of our fast get delegates. This holds onto the + delegate and provides the Update function. + + + + + Updates the call site when the current rule is no longer applicable. + + + + + Base class for all of our fast set delegates. This holds onto the + delegate and provides the Update and Optimize functions. + + + + + Updates the call site when the current rule is no longer applicable. + + + + + An interface that is implemented on DynamicMetaObjects. + + This allows objects to opt-into custom conversions when calling + COM APIs. The IronPython binders all call this interface before + doing any COM binding. + + + + + Interface used to mark objects which contain a dictionary of custom attributes that shadow + their existing attributes in a dynamic fashion. + + + + + Ensures that a non-null IDictionary instance is created for CustomAttributes and + returns it. + + + + + Meta-object which allows IPythonExpandable objects to behave like Python objects in their + ability to dynamically add and remove new or existing custom attributes, generally shadowing + existing built-in members. + + Getting: Member accesses first consult the object's CustomAttributes dictionary, then fall + through to the underlying object. + + Setting: Values can be bound to any member name, shadowing any existing attributes except + public non-PythonHidden fields and properties, which will bypass the dictionary. Thus, + it is possible for SetMember to fail, for example if the property is read-only or of + the wrong type. + + Deleting: Any member represented in the dictionary can be deleted, re-exposing the + underlying member if it exists. Any other deletions will fail. + + + + + Interface used to mark objects as being invokable from Python. These objects support + calling with splatted positional and keyword arguments. + + + + + Gets the PythonContext which the CallSiteBinder is associated with. + + + + + Provides a MetaObject for instances of Python's old-style classes. + + TODO: Lots of CodeConetxt references, need to move CodeContext onto OldClass and pull it from there. + + + + + Performs the actual work of binding to the function. + + Overall this works by going through the arguments and attempting to bind all the outstanding known + arguments - position arguments and named arguments which map to parameters are easy and handled + in the 1st pass for GetArgumentsForRule. We also pick up any extra named or position arguments which + will need to be passed off to a kw argument or a params array. + + After all the normal args have been assigned to do a 2nd pass in FinishArguments. Here we assign + a value to either a value from the params list, kw-dict, or defaults. If there is ambiguity between + this (e.g. we have a splatted params list, kw-dict, and defaults) we call a helper which extracts them + in the proper order (first try the list, then the dict, then the defaults). + + + + + Makes the test for our rule. + + + + + Makes the test when we just have simple positional arguments. + + + + + Makes the test when we have a keyword argument call or splatting. + + + + + + Gets the array of expressions which correspond to each argument for the function. These + correspond with the function as it's defined in Python and must be transformed for our + delegate type before being used. + + + + + Binds any missing arguments to values from params array, kw dictionary, or default values. + + + + + Creates the argument for the list expansion parameter. + + + + + Adds extra positional arguments to the start of the expanded list. + + + + + Creates the argument for the dictionary expansion parameter. + + + + + Adds an unbound keyword argument into the dictionary. + + + + + + Adds a check to the last parameter (so it's evaluated after we've extracted + all the parameters) to ensure that we don't have any extra params or kw-params + when we don't have a params array or params dict to expand them into. + + + + + Helper function to validate that a named arg isn't duplicated with by + a params list or the dictionary (or both). + + + + + Helper function to get a value (which has no default) from either the + params list or the dictionary (or both). + + + + + Helper function to get the specified variable from the dictionary. + + + + + Helper function to extract the variable from defaults, or to call a helper + to check params / kw-dict / defaults to see which one contains the actual value. + + + + + Helper function to extract from the params list or dictionary depending upon + which one has an available value. + + + + + Helper function to extract the next argument from the params list. + + + + + Fixes up the argument list for the appropriate target delegate type. + + + + + Helper function to get the function argument strongly typed. + + + + + Called when the user is expanding a dictionary - we copy the user + dictionary and verify that it contains only valid string names. + + + + + Called when the user is expanding a params argument + + + + + Called when the user hasn't supplied a dictionary to be expanded but the + function takes a dictionary to be expanded. + + + + + Helper function to create the expression for creating the actual tuple passed through. + + + + + Creates the code to invoke the target delegate function w/ the specified arguments. + + + + + Appends the initialization code for the call to the function if any exists. + + + + + Creates a target which creates a new dynamic method which contains a single + dynamic site that invokes the callable object. + + TODO: This should be specialized for each callable object + + + + + Creating a standard .NET type is easy - we just call it's constructor with the provided + arguments. + + + + + Creating a Python type involves calling __new__ and __init__. We resolve them + and generate calls to either the builtin funcions directly or embed sites which + call the slots at runtime. + + + + + Checks if we have a default new and init - in this case if we have any + arguments we don't allow the call. + + + + + Creates a test which tests the specific version of the type. + + + + + Base class for performing member binding. Derived classes override Add methods + to produce the actual final result based upon what the GetBinderHelper resolves. + + + + + + Provides the normal meta binder binding. + + + + + Provides delegate based fast binding. + + + + + Various helpers related to calling Python __*__ conversion methods + + + + + Helper for falling back - if we have a base object fallback to it first (which can + then fallback to the calling site), otherwise fallback to the calling site. + + + + + Helper for falling back - if we have a base object fallback to it first (which can + then fallback to the calling site), otherwise fallback to the calling site. + + + + + Provides the lookup logic for resolving a Python object. Subclasses + provide the actual logic for producing the binding result. Currently + there are two forms of the binding result: one is the DynamicMetaObject + form used for non-optimized bindings. The other is the Func of CallSite, + object, CodeContext, object form which is used for fast binding and + pre-compiled rules. + + + + + GetBinder which produces a DynamicMetaObject. This binder always + successfully produces a DynamicMetaObject which can perform the requested get. + + + + + Makes a rule which calls a user-defined __getattribute__ function and falls back to __getattr__ if that + raises an AttributeError. + + slot is the __getattribute__ method to be called. + + + + + Checks a range of the MRO to perform old-style class lookups if any old-style classes + are present. We will call this twice to produce a search before a slot and after + a slot. + + + + + Checks to see if this type has __getattribute__ that overrides all other attribute lookup. + + This is more complex then it needs to be. The problem is that when we have a + mixed new-style/old-style class we have a weird __getattribute__ defined. When + we always dispatch through rules instead of PythonTypes it should be easy to remove + this. + + + + + Helper for falling back - if we have a base object fallback to it first (which can + then fallback to the calling site), otherwise fallback to the calling site. + + + + + Looks up the associated PythonTypeSlot from the object. Indicates if the result + came from a standard .NET type in which case we will fallback to the sites binder. + + + + + Helper for falling back - if we have a base object fallback to it first (which can + then fallback to the calling site), otherwise fallback to the calling site. + + + + + Helper for falling back - if we have a base object fallback to it first (which can + then fallback to the calling site), otherwise fallback to the calling site. + + + + + Provides a way for the binder to provide a custom error message when lookup fails. Just + doing this for the time being until we get a more robust error return mechanism. + + + + + Provides a way for the binder to provide a custom error message when lookup fails. Just + doing this for the time being until we get a more robust error return mechanism. + + + + + Gets the PythonBinder associated with tihs CodeContext + + + + + Performs .NET member resolution. This looks within the given type and also + includes any extension members. Base classes and their extension members are + not searched. + + + + + Performs .NET member resolution. This looks within the given type and also + includes any extension members. Base classes and their extension members are + not searched. + + This version allows PythonType's for protected member resolution. It shouldn't + be called externally for other purposes. + + + + + Performs .NET member resolution. This looks the type and any base types + for members. It also searches for extension members in the type and any base types. + + + + + Gets the member names which are defined in this type and any extension members. + + This search does not include members in any subtypes or their extension members. + + + + + Gets the member names which are defined in the type and any subtypes. + + This search includes members in the type and any subtypes as well as extension + types of the type and its subtypes. + + + + + Creates the initial table of extension types. These are standard extension that we apply + to well known .NET types to make working with them better. Being added to this table does + not make a type a Python type though so that it's members are generally accessible w/o an + import clr and their type is not re-named. + + + + + Creates a table of standard .NET types which are also standard Python types. These types have a standard + set of extension types which are shared between all runtimes. + + + + + Event handler for when our domain manager has an assembly loaded by the user hosting the script + runtime. Here we can gather any information regarding extension methods. + + Currently DLR-style extension methods become immediately available w/o an explicit import step. + + + + + Provides a cache from Type/name -> PythonTypeSlot and also allows access to + all members (and remembering whether all members are cached). + + + + + Writes to a cache the result of a type lookup. Null values are allowed for the slots and they indicate that + the value does not exist. + + + + + Looks up a cached type slot for the specified member and type. This may return true and return a null slot - that indicates + that a cached result for a member which doesn't exist has been stored. Otherwise it returns true if a slot is found or + false if it is not. + + + + + Looks up a cached member group for the specified member and type. This may return true and return a null group - that indicates + that a cached result for a member which doesn't exist has been stored. Otherwise it returns true if a group is found or + false if it is not. + + + + + Checks to see if all members have been populated for the provided type. + + + + + Populates the type with all the provided members and marks the type + as being fully cached. + + The dictionary is used for the internal storage and should not be modified after + providing it to the cache. + + + + + Returns an enumerable object which provides access to all the members of the provided type. + + The caller must check that the type is fully cached and populate the cache if it isn't before + calling this method. + + + + + Python's Invoke is a non-standard action. Here we first try to bind through a Python + internal interface (IPythonInvokable) which supports CallSigantures. If that fails + and we have an IDO then we translate to the DLR protocol through a nested dynamic site - + this includes unsplatting any keyword / position arguments. Finally if it's just a plain + old .NET type we use the default binder which supports CallSignatures. + + + + + The Action used for Python call sites. This supports both splatting of position and keyword arguments. + + When a foreign object is encountered the arguments are expanded into normal position/keyword arguments. + + + + + Python's Invoke is a non-standard action. Here we first try to bind through a Python + internal interface (IPythonInvokable) which supports CallSigantures. If that fails + and we have an IDO then we translate to the DLR protocol through a nested dynamic site - + this includes unsplatting any keyword / position arguments. Finally if it's just a plain + old .NET type we use the default binder which supports CallSignatures. + + + + + Fallback - performs the default binding operation if the object isn't recognized + as being invokable. + + + + + Gets the CallSignature for this invocation which describes how the MetaObject array + is to be mapped. + + + + + Creates a nested dynamic site which uses the unpacked arguments. + + + + + Translates our CallSignature into a DLR Argument list and gives the simple MetaObject's which are extracted + from the tuple or dictionary parameters being splatted. + + + + + The result type of the operation. + + + + + Custom dynamic site kinds for simple sites that just take a fixed set of parameters. + + + + + Unary operator. + + Gets various documentation about the object returned as a string + + + + + Unary operator. + + Gets information about the type of parameters, returned as a string. + + + + + Unary operator. + + Checks whether the object is callable or not, returns true if it is. + + + + + Binary operator. + + Checks to see if the instance contains another object. Returns true or false. + + + + + Unary operator. + + Returns the number of items stored in the object. + + + + + Binary operator. + + Compares two instances returning an integer indicating the relationship between them. May + throw if the object types are uncomparable. + + + + + Binary operator. + + Returns both the dividend and quotioent of x / y. + + + + + Unary operator. + + Get the absolute value of the instance. + + + + + Unary operator. + + Gets the positive value of the instance. + + + + + Unary operator. + + Negates the instance and return the new value. + + + + + Unary operator. + + Returns the ones complement of the instance. + + + + + Unary operator. + + Boolean negation + + + + + Unary operator. + + Negation, returns object + + + + + Get enumerator for iteration binder. Returns a KeyValuePair<IEnumerator, IDisposable> + + The IEnumerator is used for iteration. The IDisposable is provided if the object was an + IEnumerable or IEnumerable<T> and is a disposable object. + + + + Operator for performing add + + + Operator for performing sub + + + Operator for performing pow + + + Operator for performing mul + + + Operator for performing floordiv + + + Operator for performing div + + + Operator for performing truediv + + + Operator for performing mod + + + Operator for performing lshift + + + Operator for performing rshift + + + Operator for performing and + + + Operator for performing or + + + Operator for performing xor + + + Operator for performing lt + + + Operator for performing gt + + + Operator for performing le + + + Operator for performing ge + + + Operator for performing eq + + + Operator for performing ne + + + Operator for performing lg + + + Operator for performing in-place add + + + Operator for performing in-place sub + + + Operator for performing in-place pow + + + Operator for performing in-place mul + + + Operator for performing in-place floordiv + + + Operator for performing in-place div + + + Operator for performing in-place truediv + + + Operator for performing in-place mod + + + Operator for performing in-place lshift + + + Operator for performing in-place rshift + + + Operator for performing in-place and + + + Operator for performing in-place or + + + Operator for performing in-place xor + + + Operator for performing reverse add + + + Operator for performing reverse sub + + + Operator for performing reverse pow + + + Operator for performing reverse mul + + + Operator for performing reverse floordiv + + + Operator for performing reverse div + + + Operator for performing reverse truediv + + + Operator for performing reverse mod + + + Operator for performing reverse lshift + + + Operator for performing reverse rshift + + + Operator for performing reverse and + + + Operator for performing reverse or + + + Operator for performing reverse xor + + + Operator for performing reverse divmod + + + + Provides binding logic which is implemented to follow various Python protocols. This includes + things such as calling __call__ to perform calls, calling __nonzero__/__len__ to convert to + bool, calling __add__/__radd__ to do addition, etc... + + This logic gets shared between both the IDynamicMetaObjectProvider implementation for Python objects as well + as the Python sites. This ensures the logic we follow for our builtin types and user defined + types is identical and properly conforming to the various protocols. + + + + + Gets a MetaObject which converts the provided object to a bool using __nonzero__ or __len__ + protocol methods. This code is shared between both our fallback for a site and our MetaObject + for user defined objects. + + + + + Used for conversions to bool + + + + + Creates a rule for the contains operator. This is exposed via "x in y" in + IronPython. It is implemented by calling the __contains__ method on x and + passing in y. + + If a type doesn't define __contains__ but does define __getitem__ then __getitem__ is + called repeatedly in order to see if the object is there. + + For normal .NET enumerables we'll walk the iterator and see if it's present. + + + + + Delegate for finishing the comparison. This takes in a condition and a return value and needs to update the ConditionalBuilder + with the appropriate resulting body. The condition may be null. + + + + + Helper to handle a comparison operator call. Checks to see if the call can + return NotImplemented and allows the caller to modify the expression that + is ultimately returned (e.g. to turn __cmp__ into a bool after a comparison) + + + + + calls __coerce__ for old-style classes and performs the operation if the coercion is successful. + + + + + Makes the comparison rule which returns an int (-1, 0, 1). TODO: Better name? + + + + + Python has three protocols for slicing: + Simple Slicing x[i:j] + Extended slicing x[i,j,k,...] + Long Slice x[start:stop:step] + + The first maps to __*slice__ (get, set, and del). + This takes indexes - i, j - which specify the range of elements to be + returned. In the slice variants both i, j must be numeric data types. + The 2nd and 3rd are both __*item__. + This receives a single index which is either a Tuple or a Slice object (which + encapsulates the start, stop, and step values) + + This is in addition to a simple indexing x[y]. + + For simple slicing and long slicing Python generates Operators.*Slice. For + the extended slicing and simple indexing Python generates a Operators.*Item + action. + + Extended slicing maps to the normal .NET multi-parameter input. + + So our job here is to first determine if we're to call a __*slice__ method or + a __*item__ method. + + + + + Helper to convert all of the arguments to their known types. + + + + + Gets the arguments that need to be provided to __*item__ when we need to pass a slice object. + + + + + Base class for calling indexers. We have two subclasses that target built-in functions and user defined callable objects. + + The Callable objects get handed off to ItemBuilder's which then call them with the appropriate arguments. + + + + + Creates a new CallableObject. If BuiltinFunction is available we'll create a BuiltinCallable otherwise + we create a SlotCallable. + + + + + Gets the arguments in a form that should be used for extended slicing. + + Python defines that multiple tuple arguments received (x[1,2,3]) get + packed into a Tuple. For most .NET methods we just want to expand + this into the multiple index arguments. For slots and old-instances + we want to pass in the tuple + + + + + Adds the target of the call to the rule. + + + + + Subclass of Callable for a built-in function. This calls a .NET method performing + the appropriate bindings. + + + + + Callable to a user-defined callable object. This could be a Python function, + a class defining __call__, etc... + + + + + Base class for building a __*item__ or __*slice__ call. + + + + + Derived IndexBuilder for calling __*slice__ methods + + + + + Derived IndexBuilder for calling __*item__ methods. + + + + + Helper to get the symbols for __*item__ and __*slice__ based upon if we're doing + a get/set/delete and the minimum number of arguments required for each of those. + + + + + Checks if a coercion check should be performed. We perform coercion under the following + situations: + 1. Old instances performing a binary operator (excluding rich comparisons) + 2. User-defined new instances calling __cmp__ but only if we wouldn't dispatch to a built-in __coerce__ on the parent type + + This matches the behavior of CPython. + + + + + + Produces an error message for the provided message and type names. The error message should contain + string formatting characters ({0}, {1}, etc...) for each of the type names. + + + + + Provides an abstraction for calling something which might be a builtin function or + might be some arbitrary user defined slot. If the object is a builtin function the + call will go directly to the underlying .NET method. If the object is an arbitrary + callable object we will setup a nested dynamic site for performing the additional + dispatch. + + TODO: We could probably do a specific binding to the object if it's another IDyanmicObject. + + + + + Combines two methods, which came from two different binary types, selecting the method which has the best + set of conversions (the conversions which result in the least narrowing). + + + + + Tries to get a MethodBinder associated with the slot for the specified type. + + If a method is found the binder is set and true is returned. + If nothing is found binder is null and true is returned. + If something other than a method is found false is returned. + + TODO: Remove rop + + + + + Implements a built-in module which is instanced per PythonContext. + + Implementers can subclass this type and then have a module which has efficient access + to internal state (this doesn't need to go through PythonContext.GetModuleState). These + modules can also declare module level globals which they'd like to provide efficient + access to by overloading GetGlobalVariableNames. When Initialize is called these + globals are provided and can be cached in the instance for fast global access. + + Just like normal static modules these modules are registered with the PythonModuleAttribute. + + + + + Initializes the module for it's first usage. By default this calls PerformModuleReload with the + the dictionary. + + The CodeContext for the module. + A list of globals which have optimize access. Contains at least all of the global variables reutrned by GetGlobalVariableNames. + + + + Gets a list of variable names which should have optimized storage (instances of PythonGlobal objects). + The module receives the global objects during the Initialize call and can hold onto them for + direct access to global members. + + + + + Called when the user attempts to reload() on your module and by the base class Initialize method. + + This provides an opportunity to allocate any per-module data which is not simply function definitions. + + A common usage here is to create exception objects which are allocated by the module using PythonExceptions.CreateSubType. + + + + + Provides access to the PythonContext which this module was created for. + + + + + Provides access to the CodeContext for the module. Returns null before Initialize() is called. + + + + + bytearray(string, encoding[, errors]) -> bytearray + bytearray(iterable) -> bytearray + + Construct a mutable bytearray object from: + - an iterable yielding values in range(256), including: + + a list of integer values + + a bytes, bytearray, buffer, or array object + - a text string encoded using the specified encoding + + bytearray([int]) -> bytearray + + Construct a zero-ititialized bytearray of the specified length. + (default=0) + + + + + return true if self is a titlecased string and there is at least one + character in self; also, uppercase characters may only follow uncased + characters (e.g. whitespace) and lowercase characters only cased ones. + return false otherwise. + + + + + Return a string which is the concatenation of the strings + in the sequence seq. The separator between elements is the + string providing this method + + + + + This overload is specifically implemented because in IronPython strings are unicode + + + + + return true if self is a titlecased string and there is at least one + character in self; also, uppercase characters may only follow uncased + characters (e.g. whitespace) and lowercase characters only cased ones. + return false otherwise. + + + + + Return a string which is the concatenation of the strings + in the sequence seq. The separator between elements is the + string providing this method + + + + + Returns a copy of the internal byte array. + + + System.Byte[] + + + + + This method returns the underlying byte array directly. + It should be used sparingly! + + + System.Byte[] + + + + + Marks a method as being a class method. The PythonType which was used to access + the method will then be passed as the first argument. + + + + + this class contains objecs and static methods used for + .NET/CLS interop with Python. + + + + + Gets the current ScriptDomainManager that IronPython is loaded into. The + ScriptDomainManager can then be used to work with the language portion of the + DLR hosting APIs. + + + + + Use(name) -> module + + Attempts to load the specified module searching all languages in the loaded ScriptRuntime. + + + + + Use(path, language) -> module + + Attempts to load the specified module belonging to a specific language loaded into the + current ScriptRuntime. + + + + + SetCommandDispatcher(commandDispatcher) + + Sets the current command dispatcher for the Python command line. + + The command dispatcher will be called with a delegate to be executed. The command dispatcher + should invoke the target delegate in the desired context. + + A common use for this is to enable running all REPL commands on the UI thread while the REPL + continues to run on a non-UI thread. + + + + + LoadTypeLibrary(rcw) -> type lib desc + + Gets an ITypeLib object from OLE Automation compatible RCW , + reads definitions of CoClass'es and Enum's from this library + and creates an object that allows to instantiate coclasses + and get actual values for the enums. + + + + + LoadTypeLibrary(guid) -> type lib desc + + Reads the latest registered type library for the corresponding GUID, + reads definitions of CoClass'es and Enum's from this library + and creates a IDynamicMetaObjectProvider that allows to instantiate coclasses + and get actual values for the enums. + + + + + AddReferenceToTypeLibrary(rcw) -> None + + Makes the type lib desc available for importing. See also LoadTypeLibrary. + + + + + AddReferenceToTypeLibrary(guid) -> None + + Makes the type lib desc available for importing. See also LoadTypeLibrary. + + + + + Gets the CLR Type object from a given Python type object. + + + + + Gets the Python type object from a given CLR Type object. + + + + + OBSOLETE: Gets the Python type object from a given CLR Type object. + + Use clr.GetPythonType instead. + + + + + accepts(*types) -> ArgChecker + + Decorator that returns a new callable object which will validate the arguments are of the specified types. + + + + + + + returns(type) -> ReturnChecker + + Returns a new callable object which will validate the return type is of the specified type. + + + + + Decorator for verifying the arguments to a function are of a specified type. + + + + + Returned value when using clr.accepts/ArgChecker. Validates the argument types and + then calls the original function. + + + + + Decorator for verifying the return type of functions. + + + + + Returned value when using clr.returns/ReturnChecker. Calls the original function and + validates the return type is of a specified type. + + + + + returns the result of dir(o) as-if "import clr" has not been performed. + + + + + Returns the result of dir(o) as-if "import clr" has been performed. + + + + + Attempts to convert the provided object to the specified type. Conversions that + will be attempted include standard Python conversions as well as .NET implicit + and explicit conversions. + + If the conversion cannot be performed a TypeError will be raised. + + + + + Provides a helper for compiling a group of modules into a single assembly. The assembly can later be + reloaded using the clr.AddReference API. + + + + + clr.CompileSubclassTypes(assemblyName, *typeDescription) + + Provides a helper for creating an assembly which contains pre-generated .NET + base types for new-style types. + + This assembly can then be AddReferenced or put sys.prefix\DLLs and the cached + types will be used instead of generating the types at runtime. + + This function takes the name of the assembly to save to and then an arbitrary + number of parameters describing the types to be created. Each of those + parameter can either be a plain type or a sequence of base types. + + clr.CompileSubclassTypes(object) -> create a base type for object + clr.CompileSubclassTypes(object, str, System.Collections.ArrayList) -> create + base types for both object and ArrayList. + + clr.CompileSubclassTypes(object, (object, IComparable)) -> create base types for + object and an object which implements IComparable. + + + + + + clr.GetSubclassedTypes() -> tuple + + Returns a tuple of information about the types which have been subclassed. + + This tuple can be passed to clr.CompileSubclassTypes to cache these + types on disk such as: + + clr.CompileSubclassTypes('assembly', *clr.GetSubclassedTypes()) + + + + + Provides a StreamContentProvider for a stream of content backed by a file on disk. + + + + + Goes through the list of files identifying the relationship between packages + and subpackages. Returns a dictionary with all of the package filenames (minus __init__.py) + mapping to their full name. For example given a structure: + + C:\ + someDir\ + package\ + __init__.py + a.py + b\ + __init.py + c.py + + Returns: + {r'C:\somedir\package' : 'package', r'C:\somedir\package\b', 'package.b'} + + This can then be used for calculating the full module name of individual files + and packages. For example a's full name is "package.a" and c's full name is + "package.b.c". + + + + + Returns a list of profile data. The values are tuples of Profiler.Data objects + + All times are expressed in the same unit of measure as DateTime.Ticks + + + + + Resets all profiler counters back to zero + + + + + Enable or disable profiling for the current ScriptEngine. This will only affect code + that is compiled after the setting is changed; previously-compiled code will retain + whatever setting was active when the code was originally compiled. + + The easiest way to recompile a module is to reload() it. + + + + + Serializes data using the .NET serialization formatter for complex + types. Returns a tuple identifying the serialization format and the serialized + data which can be fed back into clr.Deserialize. + + Current serialization formats include custom formats for primitive .NET + types which aren't already recognized as tuples. None is used to indicate + that the Binary .NET formatter is used. + + + + + Deserializes the result of a Serialize call. This can be used to perform serialization + for .NET types which are serializable. This method is the callable object provided + from __reduce_ex__ for .serializable .NET types. + + The first parameter indicates the serialization format and is the first tuple element + returned from the Serialize call. + + The second parameter is the serialized data. + + + + + Captures and flows the state of executing code from the generated + Python code into the IronPython runtime. + + + + + Creates a new CodeContext which is backed by the specified Python dictionary. + + + + + Gets the module state for top-level code. + + + + + Gets the DLR scope object that corresponds to the global variables of this context. + + + + + Gets the PythonContext which created the CodeContext. + + + + + Gets the dictionary for the global variables from the ModuleContext. + + + + + True if this global context should display CLR members on shared types (for example .ToString on int/bool/etc...) + + False if these attributes should be hidden. + + + + + Attempts to lookup the provided name in this scope or any outer scope. + + + + + Looks up a global variable. If the variable is not defined in the + global scope then built-ins is consulted. + + + + + Gets the dictionary used for storage of local variables. + + + + + Attempts to lookup the variable in the local scope. + + + + + Removes a variable from the local scope. + + + + + Sets a variable in the local scope. + + + + + Gets a variable from the global scope. + + + + + Sets a variable in the global scope. + + + + + Removes a variable from the global scope. + + + + + Returns the dictionary associated with __builtins__ if one is + set or null if it's not available. If __builtins__ is a module + the module's dictionary is returned. + + + + + General purpose storage used for most PythonDictionarys. + + This dictionary storage is thread safe for multiple readers or writers. + + Mutations to the dictionary involves a simple locking strategy of + locking on the DictionaryStorage object to ensure that only one + mutation happens at a time. + + Reads against the dictionary happen lock free. When the dictionary is mutated + it is either adding or removing buckets in a thread-safe manner so that the readers + will either see a consistent picture as if the read occured before or after the mutation. + + When resizing the dictionary the buckets are replaced atomically so that the reader + sees the new buckets or the old buckets. When reading the reader first reads + the buckets and then calls a static helper function to do the read from the bucket + array to ensure that readers are not seeing multiple bucket arrays. + + + + + Creates a new dictionary storage with no buckets + + + + + Creates a new dictionary storage with no buckets + + + + + Creates a new dictionary geting values/keys from the + items arary + + + + + Creates a new dictionary storage with the given set of buckets + and size. Used when cloning the dictionary storage. + + + + + Adds a new item to the dictionary, replacing an existing one if it already exists. + + + + + Initializes the buckets to their initial capacity, the caller + must check if the buckets are empty first. + + + + + Add helper that works over a single set of buckets. Used for + both the normal add case as well as the resize case. + + + + + Add helper which adds the given key/value (where the key is not null) with + a pre-computed hash code. + + + + + Removes an entry from the dictionary and returns true if the + entry was removed or false. + + + + + Removes an entry from the dictionary and returns true if the + entry was removed or false. The key will always be hashed + so if it is unhashable an exception will be thrown - even + if the dictionary has no buckets. + + + + + Checks to see if the key exists in the dictionary. + + + + + Trys to get the value associated with the given key and returns true + if it's found or false if it's not present. + + + + + Static helper to try and get the value from the dictionary. + + Used so the value lookup can run against a buckets while a writer + replaces the buckets. + + + + + Returns the number of key/value pairs currently in the dictionary. + + + + + Clears the contents of the dictionary. + + + + + Clones the storage returning a new DictionaryStorage object. + + + + + Helper to hash the given key w/ support for null. + + + + + Used to store a single hashed key/value. + + Bucket is not serializable because it stores the computed hash + code which could change between serialization and deserialization. + + + + + Special marker NullValue used during deserialization to not add + an extra field to the dictionary storage type. + + + + + Copy on write constant dictionary storage used for dictionaries created with constant items. + + + + + General conversion routine TryConvert - tries to convert the object to the desired type. + Try to avoid using this method, the goal is to ultimately remove it! + + + + + This function tries to convert an object to IEnumerator, or wraps it into an adapter + Do not use this function directly. It is only meant to be used by Ops.GetEnumerator. + + + + + This function tries to convert an object to IEnumerator, or wraps it into an adapter + Do not use this function directly. It is only meant to be used by Ops.GetEnumerator. + + + + + Attempts to convert value into a index usable for slicing and return the integer + value. If the conversion fails false is returned. + + If throwOverflowError is true then BigInteger's outside the normal range of integers will + result in an OverflowError. + + + + + Attempts to convert value into a index usable for slicing and return the integer + value. If the conversion fails false is returned. + + If throwOverflowError is true then BigInteger's outside the normal range of integers will + result in an OverflowError. + + + + + Converts a value to int ignoring floats + + + + + Gets all of the extra names and values stored in the dictionary. + + + + + Attemps to sets a value in the extra keys. Returns true if the value is set, false if + the value is not an extra key. + + + + + Attempts to get a value from the extra keys. Returns true if the value is an extra + key and has a value. False if it is not an extra key or doesn't have a value. + + + + + Attempts to remove the key. Returns true if the key is removed, false + if the key was not removed, or null if the key is not an extra key. + + + + + Adapts an IDictionary[object, object] for use as a PythonDictionary used for + our debug frames. Also hides the special locals which start with $. + + + + + Provides both helpers for implementing Python dictionaries as well + as providing public methods that should be exposed on all dictionary types. + + Currently these are published on IDictionary<object, object> + + + + + Abstract base class for all PythonDictionary storage. + + Defined as a class instead of an interface for performance reasons. Also not + using IDictionary* for keeping a simple interface. + + Full locking is defined as being on the DictionaryStorage object it's self, + not an internal member. This enables subclasses to provide their own locking + aruond large operations and call lock free functions. + + + + + Adds items from this dictionary into the other dictionary + + + + + Provides fast access to the __path__ attribute if the dictionary storage supports caching it. + + + + + Provides fast access to the __package__ attribute if the dictionary storage supports caching it. + + + + + Provides fast access to the __builtins__ attribute if the dictionary storage supports caching it. + + + + + Provides fast access to the __name__ attribute if the dictionary storage supports caching it. + + + + + Provides fast access to the __import__ attribute if the dictionary storage supports caching it. + + + + + Marks a type so that IronPython will not expose types which have GetMemberNames + as having a __dir__ method. + + Also suppresses __dir__ on something which implements IDynamicMetaObjectProvider + but is not an IPythonObject. + + + + + Marks a type so that IronPython will not expose the ICollection interface out as + __len__. + + + + + Marks a type so that IronPython will not expose the IDisposable interface out as + __enter__ and __exit__ methods of a context manager. + + + + + Marks a type so that IronPython will not expose the IEnumerable interface out as + __contains__ + + + + + Marks a type so that IronPython will not expose the IEnumerable interface out as + __iter__ + + + + + Singleton used for dictionaries which contain no items. + + + + + GeneratorExitException is a standard exception raised by Generator.Close() to allow a caller + to close out a generator. + + GeneratorExit is introduced in Pep342 for Python2.5. + + + + .NET exception thrown when a Python syntax error is related to incorrect indentation. + + + + + Implementation of the Python exceptions module and the IronPython/CLR exception mapping + mechanism. The exception module is the parent module for all Python exception classes + and therefore is built-in to IronPython.dll instead of IronPython.Modules.dll. + + The exception mapping mechanism is exposed as internal surface area available to only + IronPython / IronPython.Modules.dll. The actual exceptions themselves are all public. + + Because the oddity of the built-in exception types all sharing the same physical layout + (see also PythonExceptions.BaseException) some classes are defined as classes w/ their + proper name and some classes are defined as PythonType fields. When a class is defined + for convenience their's also an _TypeName version which is the PythonType. + + + + + Base class for all Python exception objects. + + When users throw exceptions they typically throw an exception which is + a subtype of this. A mapping is maintained between Python exceptions + and .NET exceptions and a corresponding .NET exception is thrown which + is associated with the Python exception. This class represents the + base class for the Python exception hierarchy. + + Users can catch exceptions rooted in either hierarchy. The hierarchy + determines whether the user catches the .NET exception object or the + Python exception object. + + Most built-in Python exception classes are actually instances of the BaseException + class here. This is important because in CPython the exceptions do not + add new members and therefore their layouts are compatible for multiple + inheritance. The exceptions to this rule are the classes which define + their own fields within their type, therefore altering their layout: + EnvironmentError + SyntaxError + IndentationError (same layout as SyntaxError) + TabError (same layout as SyntaxError) + SystemExit + UnicodeDecodeError + UnicodeEncodeError + UnicodeTranslateError + + These exceptions cannot be combined in multiple inheritance, e.g.: + class foo(EnvironmentError, IndentationError): pass + + fails but they can be combined with anything which is just a BaseException: + class foo(UnicodeDecodeError, SystemError): pass + + Therefore the majority of the classes are just BaseException instances with a + custom PythonType object. The specialized ones have their own .NET class + which inherits from BaseException. User defined exceptions likewise inherit + from this and have their own .NET class. + + + + + Initializes the Exception object with an unlimited number of arguments + + + + + Returns the exception 'message' if only a single argument was provided + during creation or an empty string. + + + + + Gets or sets the arguments used for creating the exception + + + + + Returns a tuple of (type, (arg0, ..., argN)) for implementing pickling/copying + + + + + Returns a tuple of (type, (arg0, ..., argN)) for implementing pickling/copying + + + + + Gets the nth member of the args property + + + + + Gets or sets the dictionary which is used for storing members not declared to have space reserved + within the exception object. + + + + + Updates the exception's state (dictionary) with the new values + + + + + Gets the CLR exception associated w/ this Python exception. Not visible + until a .NET namespace is imported. + + + + + Provides custom member lookup access that fallbacks to the dictionary + + + + + Provides custom member assignment which stores values in the dictionary + + + + + Provides custom member deletion which deletes values from the dictionary + or allows clearing 'message'. + + + + + Implements __repr__ which returns the type name + the args + tuple code formatted. + + + + + Initializes the Python exception from a .NET exception + + + + + + Helper to get the CLR exception associated w/ this Python exception + creating it if one has not already been created. + + + + + Creates a new throwable exception of type type where the type is an new-style exception. + + Used at runtime when creating the exception from a user provided type via the raise statement. + + + + + Creates a throwable exception of type type where the type is an OldClass. + + Used at runtime when creating the exception form a user provided type that's an old class (via the raise statement). + + + + + Returns the CLR exception associated with a Python exception + creating a new exception if necessary + + + + + Given a CLR exception returns the Python exception which most closely maps to the CLR exception. + + + + + Creates a new style Python exception from the .NET exception + + + + + Internal helper to associate a .NET exception and a Python exception. + + + + + Internal helper to get the associated Python exception from a .NET exception. + + + + + Converts the DLR SyntaxErrorException into a Python new-style SyntaxError instance. + + + + + Creates a PythonType for a built-in module. These types are mutable like + normal user types. + + + + + Creates a PythonType for a built-in module. These types are mutable like + normal user types. + + + + + Creates a PythonType for a built-in module, where the type may inherit + from multiple bases. These types are mutable like normal user types. + + + + + Creates a new type for a built-in exception which derives from another Python + type. . These types are built-in and immutable like any other normal type. For + example StandardError.x = 3 is illegal. This isn't for module exceptions which + are like user defined types. thread.error.x = 3 is legal. + + + + + Creates a new type for a built-in exception which is the root concrete type. + + + + + Gets the list of DynamicStackFrames for the current exception. + + + + + .NET exception that is thrown to signal the end of iteration in Python + + + + + .NET exception that is thrown to shutdown the interpretter and exit the system. + + + + + Result of sys.exit(n) + + + null if the script exited using "sys.exit(int_value)" + null if the script exited using "sys.exit(None)" + x if the script exited using "sys.exit(x)" where isinstance(x, int) == False + + + int_value if the script exited using "sys.exit(int_value)" + 1 otherwise + + + + + .NET Exception thrown when a Python syntax error is related to incorrect tabs. + + + + + returns string containing human readable representation of traceback + + + + + Represents the set of extension methods which are loaded into a module. + + This set is immutable (as far the external viewer is considered). When a + new extension method set is loaded into a module we create a new ExtensionMethodsSet object. + + Multiple modules which have the same set of extension methods use the same set. + + + + + Tracks the extension types that are loaded for a given assembly. + + We can have either types, namespaces, or a full assembly added as a reference. + + When the user just adds types we just add them to the type hash set. + + When the user adds namespaces we add them to the namespaces hashset. On the + next lookup we'll lazily load the types from that namespace and put them in Types. + + When the user adds assemblies we set the value to the NotYetLoadedButFullAssembly + value. The next load request will load the types from that namespace and put them + in Types. When we do that we'll mark the assembly as FullyLoaded so we don't + have to go through that again if the user adds a namespace. + + + + + Returns all of the extension methods with the given name. + + + + + Returns all of the extension methods which are applicable for the given type. + + + + + Helper NumberFormatInfo for use by int/BigInteger __format__ routines + for width specified leading zero support that contains ','s every 3 digits. + i.e. For use by d/g/G format specifiers. NOT for use by n format specifiers. + + + + + Set if the function includes a *args argument list. + + + + + Set if the function includes a **kwargs argument dictionary. + + + + + Set if the function is a generator. + + + + + Set if the function was compiled with future division. + + + + + IronPython specific: Set if the function includes nested exception handling and therefore can alter + sys.exc_info(). + + + + + IronPython specific: Set if the function includes a try/finally block. + + + + + Represents a piece of code. This can reference either a CompiledCode + object or a Function. The user can explicitly call FunctionCode by + passing it into exec or eval. + + + + + This is both the lock that is held while enumerating the threads or updating the thread accounting + information. It's also a marker CodeList which is put in place when we are enumerating the thread + list and all additions need to block. + + This lock is also acquired whenever we need to calculate how a function's delegate should be created + so that we don't race against sys.settrace/sys.setprofile. + + + + + Constructor used to create a FunctionCode for code that's been serialized to disk. + + Code constructed this way cannot be interpreted or debugged using sys.settrace/sys.setprofile. + + Function codes created this way do support recursion enforcement and are therefore registered in the global function code registry. + + + + + Constructor to create a FunctionCode at runtime. + + Code constructed this way supports both being interpreted and debugged. When necessary the code will + be re-compiled or re-interpreted for that specific purpose. + + Function codes created this way do support recursion enforcement and are therefore registered in the global function code registry. + + the initial delegate provided here should NOT be the actual code. It should always be a delegate which updates our Target lazily. + + + + + Registers the current function code in our global weak list of all function codes. + + The weak list can be enumerated with GetAllCode(). + + Ultimately there are 3 types of threads we care about races with: + 1. Other threads which are registering function codes + 2. Threads calling sys.settrace which require the world to stop and get updated + 3. Threads running cleanup (thread pool thread, or call to gc.collect). + + The 1st two must have perfect synchronization. We cannot have a thread registering + a new function which another thread is trying to update all of the functions in the world. Doing + so would mean we could miss adding tracing to a thread. + + But the cleanup thread can run in parallel to either registrying or sys.settrace. The only + thing it needs to take a lock for is updating our accounting information about the + number of code objects are alive. + + + + + Enumerates all function codes for updating the current type of targets we generate. + + While enumerating we hold a lock so that users cannot change sys.settrace/sys.setprofile + until the lock is released. + + + + + Returns a list of variable names which are accessed from nested functions. + + + + + Returns the byte code. IronPython does not implement this and always + returns an empty string for byte code. + + + + + Returns a list of constants used by the function. + + The first constant is the doc string, or None if no doc string is provided. + + IronPython currently does not include any other constants than the doc string. + + + + + Returns the filename that the code object was defined in. + + + + + Returns the 1st line number of the code object. + + + + + Returns a set of flags for the function. + + 0x04 is set if the function used *args + 0x08 is set if the function used **args + 0x20 is set if the function is a generator + + + + + Returns a list of free variables (variables accessed + from an outer scope). This does not include variables + accessed in the global scope. + + + + + Returns a mapping between byte code and line numbers. IronPython does + not implement this because byte code is not available. + + + + + Returns the name of the code (function name, class name, or <module>). + + + + + Returns a list of global variable names accessed by the code. + + + + + Returns the number of local varaibles defined in the function. + + + + + Returns the stack size. IronPython does not implement this + because byte code is not supported. + + + + + Creates a FunctionCode object for exec/eval/execfile'd/compile'd code. + + The code is then executed in a specific CodeContext by calling the .Call method. + + If the code is being used for compile (vs. exec/eval/execfile) then it needs to be + registered in case our tracing mode changes. + + + + + Called the 1st time a function is invoked by our OriginalCallTarget* methods + over in PythonCallTargets. This computes the real delegate which needs to be + created for the function. Usually this means starting off interpretering. It + also involves adding the wrapper function for recursion enforcement. + + Because this can race against sys.settrace/setprofile we need to take our + _ThreadIsEnumeratingAndAccountingLock to ensure no one is actively changing all + of the live functions. + + + + + Updates the delegate based upon current Python context settings for recursion enforcement + and for tracing. + + + + + Called to set the initial target delegate when the user has passed -X:Debug to enable + .NET style debugging. + + + + + Gets the LambdaExpression for tracing. + + If this is a generator function code then the lambda gets tranformed into the correct generator code. + + + + + Gets the correct final LambdaExpression for this piece of code. + + This is either just _lambda or _lambda re-written to be a generator expression. + + + + + Extremely light weight linked list of weak references used for tracking + all of the FunctionCode objects which get created and need to be updated + for purposes of recursion enforcement or tracing. + + + + + True iff the thread is currently inside the generator (ie, invoking the _next delegate). + This can be used to enforce that a generator does not call back into itself. + Pep255 says that a generator should throw a ValueError if called reentrantly. + + + + + We cache the GeneratorFinalizer of generators that were closed on the user + thread, and did not get finalized on the finalizer thread. We can then reuse + the object. Reusing objects with a finalizer is good because it reduces + the load on the GC's finalizer queue. + + + + + Fields set by Throw() to communicate an exception to the yield point. + These are plumbed through the generator to become parameters to Raise(...) invoked + at the yield suspension point in the generator. + + + + + Value sent by generator.send(). + Since send() could send an exception, we need to keep this different from throwable's value. + + + + + See PEP 342 (http://python.org/dev/peps/pep-0342/) for details of new methods on Generator. + Full signature including default params for throw is: + throw(type, value=None, traceback=None) + Use multiple overloads to resolve the default parameters. + + + + + Throw(...) is like Raise(...) being called from the yield point within the generator. + Note it must come from inside the generator so that the traceback matches, and so that it can + properly cooperate with any try/catch/finallys inside the generator body. + + If the generator catches the exception and yields another value, that is the return value of g.throw(). + + + + + send() was added in Pep342. It sends a result back into the generator, and the expression becomes + the result of yield when used as an expression. + + + + + Close introduced in Pep 342. + + + + + Gets the name of the function that produced this generator object. + + + + + Core implementation of IEnumerator.MoveNext() + + + + + Core implementation of Python's next() method. + + + + + Helper called from PythonOps after the yield statement + Keepin this in a helper method: + - reduces generated code size + - allows better coupling with PythonGenerator.Throw() + - avoids throws from emitted code (which can be harder to debug). + + + + + + Called to throw an exception set by Throw(). + + + + + True if the generator has finished (is "closed"), else false. + Python language spec mandates that calling Next on a closed generator gracefully throws a StopIterationException. + This can never be reset. + + + + + True if the generator can set sys exc info and therefore needs exception save/restore. + + + + + Importer class - used for importing modules. Used by Ops and __builtin__ + Singleton living on Python engine. + + + + + Gateway into importing ... called from Ops. Performs the initial import of + a module and returns the module. + + + + + Gateway into importing ... called from Ops. Performs the initial import of + a module and returns the module. This version returns light exceptions instead of throwing. + + + + + Gateway into importing ... called from Ops. This is called after + importing the module and is used to return individual items from + the module. The outer modules dictionary is then updated with the + result. + + + + + Called by the __builtin__.__import__ functions (general importing) and ScriptEngine (for site.py) + + level indiciates whether to perform absolute or relative imports. + -1 indicates both should be performed + 0 indicates only absolute imports should be performed + Positive numbers indicate the # of parent directories to search relative to the calling module + + + + + Interrogates the importing module for __name__ and __path__, which determine + whether the imported module (whose name is 'name') is being imported as nested + module (__path__ is present) or as sibling. + + For sibling import, the full name of the imported module is parent.sibling + For nested import, the full name of the imported module is parent.module.nested + where parent.module is the mod.__name__ + + + the globals dictionary + Name of the module to be imported + Output - full name of the module being imported + Path to use to search for "full" + the import level for relaive imports + the parent module + the global __package__ value + + + + + Given the parent module name looks up the __path__ property. + + + + + Trys to get an existing module and if that fails fall backs to searching + + + + + Attempts to load a module from sys.meta_path as defined in PEP 302. + + The meta_path provides a list of importer objects which can be used to load modules before + searching sys.path but after searching built-in modules. + + + + + Given a user defined importer object as defined in PEP 302 tries to load a module. + + First the find_module(fullName, path) is invoked to get a loader, then load_module(fullName) is invoked + + + + + Finds a user defined importer for the given path or returns null if no importer + handles this path. + + + + + Wrapper class used when a user defined type (new-style or old-style) + defines __index__. We provide a conversion from all user defined + types to the Index type so they can be used for determing and method bind + time the most appropriate method to dispatch to. + + + + + ModuleDictionaryStorage for a built-in module which is bound to a specific instance. + + These modules don't need to use PythonContext.GetModuleState() for storage and therefore + can provide efficient access to internal variables. They can also cache PythonGlobal + objects and provide efficient access to module globals. + + To the end user these modules appear just like any other module. These modules are + implemented by subclassing the BuiltinPythonModule class. + + + + + Defines the internal interface used for accessing weak references and adding finalizers + to user-defined types. + + + + + Gets the current WeakRefTracker for an object that can be used to + append additional weak references. + + + + + Attempts to set the WeakRefTracker for an object. Used on the first + addition of a weak ref tracker to an object. If the object doesn't + support adding weak references then it returns false. + + + + + Sets a WeakRefTracker on an object for the purposes of supporting finalization. + All user types (new-style and old-style) support finalization even if they don't + support weak-references, and therefore this function always succeeds. Note the + slot used to store the WeakRefTracker is still shared between SetWeakRef and + SetFinalizer if a type supports both. + + + + + + Allow types to implement weakvreference tracking by returning a proxy. + + The proxy can refer to the current Python context, whihc is the main purpose. + + + + + + + + + + Provides a list of all the members of an instance. ie. all the keys in the + dictionary of the object. Note that it can contain objects that are not strings. + + Such keys can be added in IronPython using syntax like: + obj.__dict__[100] = someOtherObject + + This Python specific version also supports filtering based upon the show cls + flag by flowing in the code context. + + + + + Represents a sequence which may have been provided as a set of parameters to an indexer. + + TODO: This should be removed, and all uses of this should go to [SpecialName]object GetItem(..., params object[] keys) + and [SpecialName]void SetItem(..., params object [] keys) or this[params object[]xyz] which is also legal. + + currently this exists for backwards compatibility w/ IronPython's "expandable tuples". + + + + + Creates a new list with the data in the array and a size + the same as the length of the array. The array is held + onto and may be mutated in the future by the list. + + params array to use for lists storage + + + + Gets a reasonable size for the addition of two arrays. We round + to a power of two so that we usually have some extra space if + the resulting array gets added to. + + + + + Non-thread safe adder, should only be used by internal callers that + haven't yet exposed their list. + + + + + Compares the two specified keys + + + + + Supports __index__ on arbitrary types, also prevents __float__ + + + + + we need to lock both objects (or copy all of one's data w/ it's lock held, and + then compare, which is bad). Therefore we have a strong order for locking on + the two objects based upon the hash code or object identity in case of a collision + + + + + Summary description for ConstantValue. + + + + + MemoryView slicing is somewhat different and more restricted than + standard slicing. + + + + + Validates that the current self object is usable for this method. + + + + + Captures the globals and other state of module code. + + + + + Creates a new ModuleContext which is backed by the specified dictionary. + + + + + Creates a new ModuleContext for the specified module. + + + + + Gets the dictionary used for the global variables in the module + + + + + Gets the language context which created this module. + + + + + Gets the DLR Scope object which is associated with the modules dictionary. + + + + + Gets the global CodeContext object which is used for execution of top-level code. + + + + + Gets the module object which this code is executing in. + + This module may or may not be published in sys.modules. For user defined + code typically the module gets published at the start of execution. But if + this ModuleContext is attached to a Scope, or if we've just created a new + module context for executing code it will not be in sys.modules. + + + + + Gets the features that code has been compiled with in the module. + + + + + Gets or sets whether code running in this context should display + CLR members (for example .ToString on objects). + + + + + Initializes __builtins__ for the module scope. + + + + + Enables lazy initialization of module dictionaries. + + + + + Cached global value. Created and maintained on a per-language basis. Default + implementation returns a singleton which indicates caching is not occuring. + + + + + Creates a new ModuleGlobalCache with the specified value. + + + + + True if the ModuleGlobalCache is participating in a caching strategy. + + + + + True if there is currently a value associated with this global variable. False if + it is currently unassigned. + + + + + Gets or sets the current cached value + + + + + Event handler for when the value has changed. Language implementors should call this when + the cached value is invalidated. + + + + + Enable true division (1/2 == .5) + + + + + Indicates that .NET methods such as .ToString should be available on Python objects. + + + + + Indicates that the module should be generated in an optimal form which will result + in it being uncollectable. + + + + + Indicates when the module should be executed immedatiately upon creation. + + + + + Enable usage of the with statement + + + + + Enable absolute imports + + + + + Indiciates that __builtins__ should not be set in the module + + + + + Indiciates that when the module is initialized it should set __builtins__ to the __builtin__ module + instead of the __builtin__ dictionary. + + + + + Marks code as being created for exec, eval. Code generated this way will + be capable of running against different scopes and will do lookups at runtime + for free global variables. + + + + + Indiciates that the first line of code should be skipped. + + + + + Enable usage of print as a function for better compatibility with Python 3.0. + + + + + Forces the code to be interpreted rather than compiled + + + + + String Literals should be parsed as Unicode strings + + + + + Include comments in the parse tree + + + + + Generated code should support light exceptions + + + + + New string formatter for 'str'.format(...) calls and support for the Formatter + library via the _formatter_parser / _formatter_field_name_split + methods. + + We parse this format: + + replacement_field = "{" field_name ["!" conversion] [":" format_spec] "}" + field_name = (identifier | integer) ("." attribute_name | "[" element_index "]")* + attribute_name = identifier + element_index = identifier + conversion = "r" | "s" + format_spec = any char, { must be balanced (for computed values), passed to __format__ method on object + + + + + Runs the formatting operation on the given format and keyword arguments + + + + + Gets the formatting information for the given format. This is a list of tuples. The tuples + include: + + text, field name, format spec, conversion + + + + + Parses a field name returning the argument name and an iterable + object which can be used to access the individual attribute + or element accesses. The iterator yields tuples of: + + bool (true if attribute, false if element index), attribute/index value + + + + + Base class used for parsing the format. Subclasss override Text/ReplacementField methods. Those + methods get called when they call Parse and then they can do the appropriate actions for the + format. + + + + + Gets an enumerable object for walking the parsed format. + + TODO: object array? struct? + + + + + Provides an enumerable of the parsed format. The elements of the tuple are: + the text preceding the format information + the field name + the format spec + the conversion + + + + + Handles {{ and }} within the string. Returns true if a double bracket + is found and yields the text + + + + + Parses the conversion character and returns it + + + + + Checks to see if we're at the end of the format. If there's no more characters left we report + the error, otherwise if we hit a } we return true to indicate parsing should stop. + + + + + Parses the format spec string and returns it. + + + + + Parses the field name and returns it. + + + + + Handles parsing the field name and the format spec and returns it. At the parse + level these are basically the same - field names just have more terminating characters. + + The most complex part of parsing them is they both allow nested braces and require + the braces are matched. Strangely though the braces need to be matched across the + combined field and format spec - not within each format. + + + + + Provides the built-in string formatter which is exposed to Python via the str.format API. + + + + + Inspects a format spec to see if it contains nested format specs which + we need to compute. If so runs another string formatter on the format + spec to compute those values. + + + + + Given the field name gets the object from our arguments running + any of the member/index accessors. + + + + + Applies the known built-in conversions to the object if a conversion is + specified. + + + + + Gets the initial object represented by the field name - e.g. the 0 or + keyword name. + + + + + Given the object value runs the accessors in the field name (if any) against the object. + + + + + Parses the field name including attribute access or element indexing. + + + + + Parses the field name including attribute access or element indexing. + + + + + Converts accessors from our internal structure into a PythonTuple matching how CPython + exposes these + + + + + Parses an identifier and returns it + + + + + Encodes all the information about the field name. + + + + + Encodes a single field accessor (.b or [number] or [str]) + + + + + Multiply two object[] arrays - slow version, we need to get the type, etc... + + + + + Multiply two object[] arrays - internal version used for objects backed by arrays + + + + + Add two arrays - internal versions for objects backed by arrays + + + + + + + + + + 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. + + + + + Returns the digits for the format spec, no sign is included. + + + + + Interface used for things which can convert to delegates w/o code gen. Currently + this is just non-overloaded builtin functions and bound builtin functions. Avoiding + the code gen is not only nice for compilation but it also enables delegates to be added + in C# and removed in Python. + + + + + Returns the digits for the format spec, no sign is included. + + + + + 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 + + + + + __dir__(self) -> Returns the list of members defined on a foreign IDynamicMetaObjectProvider. + + + + + Provides the implementation of __enter__ for objects which implement IDisposable. + + + + + Provides the implementation of __exit__ for objects which implement IDisposable. + + + + + Determines if a type member can be imported. This is used to treat static types like modules. + + + + + Implements __contains__ for types implementing IEnumerable of T. + + + + + Implements __contains__ for types implementing IEnumerable + + + + + Implements __contains__ for types implementing IEnumerable of T. + + + + + Implements __contains__ for types implementing IEnumerable + + + + + Implements __reduce_ex__ for .NET types which are serializable. This uses the .NET + serializer to get a string of raw data which can be serialized. + + + + + Contains Python extension methods that are added to object + + + + Types for which the pickle module has built-in support (from PEP 307 case 2) + + + + __class__, a custom slot so that it works for both objects and types. + + + + + Removes an attribute from the provided member + + + + + Returns the hash code of the given object + + + + + Gets the specified attribute from the object without running any custom lookup behavior + (__getattr__ and __getattribute__) + + + + + Initializes the object. The base class does nothing. + + + + + Initializes the object. The base class does nothing. + + + + + Initializes the object. The base class does nothing. + + + + + Creates a new instance of the type + + + + + Creates a new instance of the type + + + + + Creates a new instance of the type + + + + + Runs the pickle protocol + + + + + Runs the pickle protocol + + + + + Runs the pickle protocol + + + + + Returns the code representation of the object. The default implementation returns + a string which consists of the type and a unique numerical identifier. + + + + + Sets an attribute on the object without running any custom object defined behavior. + + + + + Returns the number of bytes of memory required to allocate the object. + + + + + Returns a friendly string representation of the object. + + + + + Return a dict that maps slot names to slot values, but only include slots that have been assigned to. + Looks up slots in base types as well as the current type. + + Sort-of Python equivalent (doesn't look up base slots, while the real code does): + return dict([(slot, getattr(self, slot)) for slot in type(self).__slots__ if hasattr(self, slot)]) + + Return null if the object has no __slots__, or empty dict if it has __slots__ but none are initialized. + + + + + Implements the default __reduce_ex__ method as specified by PEP 307 case 2 (new-style instance, protocol 0 or 1) + + + + + Returns the closest base class (in terms of MRO) that isn't defined in Python code + + + + + Implements the default __reduce_ex__ method as specified by PEP 307 case 3 (new-style instance, protocol 2) + + + + + Contains functions that are called directly from + generated code to perform low-level runtime functionality. + + + + + Creates a new dictionary extracting the keys and values from the + provided data array. Keys/values are adjacent in the array with + the value coming first. + + + + + Creates a new dictionary extracting the keys and values from the + provided data array. Keys/values are adjacent in the array with + the value coming first. + + + + + Wraps up all the semantics of multiplying sequences so that all of our sequences + don't duplicate the same logic. When multiplying sequences we need to deal with + only multiplying by valid sequence types (ints, not floats), support coercion + to integers if the type supports it, not multiplying by None, and getting the + right semantics for multiplying by negative numbers and 1 (w/ and w/o subclasses). + + This function assumes that it is only called for case where count is not implicitly + coercible to int so that check is skipped. + + + + + Supports calling of functions that require an explicit 'this' + Currently, we check if the function object implements the interface + that supports calling with 'this'. If not, the 'this' object is dropped + and a normal call is made. + + + + + Called from generated code emitted by NewTypeMaker. + + + + + Handles the descriptor protocol for user-defined objects that may implement __get__ + + + + + Handles the descriptor protocol for user-defined objects that may implement __set__ + + + + + Handles the descriptor protocol for user-defined objects that may implement __delete__ + + + + + Python runtime helper for raising assertions. Used by AssertStatement. + + + + + Python runtime helper for raising assertions. Used by AssertStatement. + + Object representing the assertion message + + + + Python runtime helper to create instance of Python List object. + + New instance of List + + + + Python runtime helper to create a populated instance of Python List object. + + + + + Python runtime helper to create a populated instance of Python List object w/o + copying the array contents. + + + + + Python runtime helper to create a populated instance of Python List object. + + List is populated by arbitrary user defined object. + + + + + Python runtime helper to create an instance of Python List object. + + List has the initial provided capacity. + + + + + Python runtime helper to create an instance of Tuple + + + + + + + Python runtime helper to create an instance of Tuple + + + + + + Python Runtime Helper for enumerator unpacking (tuple assignments, ...) + Creates enumerator from the input parameter e, and then extracts + expected number of values, returning them as array + + If the input is a Python tuple returns the tuples underlying data array. Callers + should not mutate the resulting tuple. + + The code context of the AST getting enumerator values. + object to enumerate + expected number of objects to extract from the enumerator + + array of objects (.Lengh == expected) if exactly expected objects are in the enumerator. + Otherwise throws exception + + + + + Python runtime helper to create instance of Slice object + + Start of the slice. + End of the slice. + Step of the slice. + Slice + + + + Prints newline into default standard output + + + + + Prints newline into specified destination. Sets softspace property to false. + + + + + Prints value into default standard output with Python comma semantics. + + + + + Prints value into specified destination with Python comma semantics. + + + + + Called from generated code when we are supposed to print an expression value + + + + + Called from generated code for: + + import spam.eggs + + + + + Python helper method called from generated code for: + + import spam.eggs as ham + + + + + Called from generated code for: + + from spam import eggs1, eggs2 + + + + + Imports one element from the module in the context of: + + from module import a, b, c, d + + Called repeatedly for all elements being imported (a, b, c, d above) + + + + + Called from generated code for: + + from spam import * + + + + + Unqualified exec statement support. + A Python helper which will be called for the statement: + + exec code + + + + + Qualified exec statement support, + Python helper which will be called for the statement: + + exec code in globals [, locals ] + + + + + Called from generated code at the start of a catch block. + + + + + Get an exception tuple for the "current" exception. This is used for sys.exc_info() + + + + + Get an exception tuple for a given exception. This is like the inverse of MakeException. + + the code context + the exception to create a tuple for. + a tuple of (type, value, traceback) + This is called directly by the With statement so that it can get an exception tuple + in its own private except handler without disturbing the thread-wide sys.exc_info(). + + + + helper function for re-raised exceptions. + + + + + helper function for re-raised exception. + This entry point is used by 'raise' inside 'with' statement + + + + + + + helper function for non-re-raise exceptions. + + type is the type of exception to throw or an instance. If it + is an instance then value should be null. + + If type is a type then value can either be an instance of type, + a Tuple, or a single value. This case is handled by EC.CreateThrowable. + + + + + Extracts an argument from either the dictionary or params + + + + + Creates a new array the values set to Uninitialized.Instance. The array + is large enough to hold for all of the slots allocated for the type and + its sub types. + + + + + Helper to determine if the value is a simple numeric type (int or big int or bool) - used for OldInstance + deprecated form of slicing. + + + + + Helper to determine if the type is a simple numeric type (int or big int or bool) - used for OldInstance + deprecated form of slicing. + + + + + Helper to determine if the type is a simple numeric type (int or big int or bool) but not a subclass + + + + + For slicing. Fixes up a BigInteger and returns an integer w/ the length of the + object added if the value is negative. + + + + + For slicing. Gets the length of the object, used to only get the length once. + + + + + Helper method for DynamicSite rules that check the version of their dynamic object + TODO - Remove this method for more direct field accesses + + + + + + + + Called from generated code. Gets a builtin function and the BuiltinFunctionData associated + with the object. Tests to see if the function is bound and has the same data for the generated + rule. + + + + + Convert object to a given type. This code is equivalent to NewTypeMaker.EmitConvertFromObject + except that it happens at runtime instead of compile time. + + + + + Provides access to AppDomain.DefineDynamicAssembly which cannot be called from a DynamicMethod + + + + + Generates a new delegate type. The last type in the array is the return type. + + + + + Generates a new delegate type. The last type in the array is the return type. + + + + + Provides the entry point for a compiled module. The stub exe calls into InitializeModule which + does the actual work of adding references and importing the main module. Upon completion it returns + the exit code that the program reported via SystemExit or 0. + + + + + Provides the entry point for a compiled module. The stub exe calls into InitializeModule which + does the actual work of adding references and importing the main module. Upon completion it returns + the exit code that the program reported via SystemExit or 0. + + + + + Called from generated code, helper to remove a name + + + + + Called from generated code, helper to do name lookup + + + + + Called from generated code, helper to do name assignment + + + + + Returns an IntPtr in the proper way to CPython - an int or a Python long + + + + + Create at TypeError exception for when Raise() can't create the exception requested. + + original type of exception requested + a TypeEror exception + + + + Gets a list of DynamicStackFrames for the given exception. These stack frames + can be programmatically inspected to understand the frames the exception crossed + through including Python frames. + + Dynamic stack frames are not preserved when an exception crosses an app domain + boundary. + + + + + 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. + + + + + Looks up __init__ avoiding calls to __getattribute__ and handling both + new-style and old-style classes in the MRO. + + + + + Gets a builtin function for the given declaring type and member infos. + + Given the same inputs this always returns the same object ensuring there's only 1 builtinfunction + for each .NET method. + + This method takes both a cacheName and a pythonName. The cache name is the real method name. The pythonName + is the name of the method as exposed to Python. + + + + + Checks to see if the provided members are always visible for the given type. + + This filters out methods such as GetHashCode and Equals on standard .NET + types that we expose directly as Python types (e.g. object, string, etc...). + + It also filters out the base helper overrides that are added for supporting + super calls on user defined types. + + + + + a function is static if it's a static .NET method and it's defined on the type or is an extension method + with StaticExtensionMethod decoration. + + + + + If we have only interfaces, we'll need to insert object's base + + + + + 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. + + + + + 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. + + + + + Returns a copy of this string converted to uppercase + + + + + return true if self is a titlecased string and there is at least one + character in self; also, uppercase characters may only follow uncased + characters (e.g. whitespace) and lowercase characters only cased ones. + return false otherwise. + + + + + Return a string which is the concatenation of the strings + in the sequence seq. The separator between elements is the + string providing this method + + + + + Replaces each replacement field in the string with the provided arguments. + + replacement_field = "{" field_name ["!" conversion] [":" format_spec] "}" + field_name = (identifier | integer) ("." identifier | "[" element_index "]")* + + format_spec: [[fill]align][sign][#][0][width][,][.precision][type] + + Conversion can be 'r' for repr or 's' for string. + + + + + Replaces each replacement field in the string with the provided arguments. + + replacement_field = "{" field_name ["!" conversion] [":" format_spec] "}" + field_name = (identifier | integer) ("." identifier | "[" element_index "]")* + + format_spec: [[fill]align][sign][#][0][width][.precision][type] + + Conversion can be 'r' for repr or 's' for string. + + + + + Gets the starting offset checking to see if the incoming bytes already include a preamble. + + + + When encoding or decoding strings if an error occurs CPython supports several different + behaviors, in addition it supports user-extensible behaviors as well. For the default + behavior we're ok - both of us support throwing and replacing. For custom behaviors + we define a single fallback for decoding and encoding that calls the python function to do + the replacement. + + When we do the replacement we call the provided handler w/ a UnicodeEncodeError or UnicodeDecodeError + object which contains: + encoding (string, the encoding the user requested) + end (the end of the invalid characters) + object (the original string being decoded) + reason (the error, e.g. 'unexpected byte code', not sure of others) + start (the start of the invalid sequence) + + The decoder returns a tuple of (unicode, int) where unicode is the replacement string + and int is an index where encoding should continue. + + + + Indexer for generic parameter resolution. We bind to one of the generic versions + available in this type collision. A user can also do someType[()] to force to + bind to the non-generic version, but we will always present the non-generic version + when no bindings are available. + + + + + Object.ToString() displays the CLI type name. But we want to display the class name (e.g. + '<foo object at 0x000000000000002C>' unless we've overridden __repr__ but not __str__ in + which case we'll display the result of __repr__. + + + + + 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. + + + + + Manages the acquisition of profiling data for a single ScriptRuntime + + + + + Get the unique Profiler instance for this ScriptRuntime + + + + + Given a MethodBase, return an index into the array of perf data. Treat each + CLR method as unique. + + + + + Given the unique name of something we're profiling, return an index into the array of perf data. + + + + + Add a new profiler entry. Not all names are unique. + + + + + Gets the current summary of profile data + + + + + Resets the current summary of profile data back to zero + + + + + Adds profiling calls to a Python method. + Calculates both the time spent only in this method + + + + + Wraps a call to a MethodInfo with profiling capture for that MethodInfo + + + + + Encapsulates profiler data to return to clients + + + + + Marks that this built-in method should be treated as external by the profiler. + When placed on a call emitted into a Python method, all the time spent in this + call will still show up in its parent's inclusive time, but will not be + part of its exclusive time. + + + + + Simple implementation of ASCII encoding/decoding. The default instance (PythonAsciiEncoding.Instance) is + setup to always convert even values outside of the ASCII range. The EncoderFallback/DecoderFallbacks can + be replaced with versions that will throw exceptions instead though. + + + + + A DynamicMetaObject which is just used to support custom conversions to COM. + + + + + A marker interface so we can recognize and access sequence members on our array objects. + + + + stored for copy_reg module, used for reduce protocol + + + stored for copy_reg module, used for reduce protocol + + + + Creates a new PythonContext not bound to Engine. + + + + + Gets or sets the maximum depth of function calls. Equivalent to sys.getrecursionlimit + and sys.setrecursionlimit. + + + + + Gets or sets the main thread which should be interupted by thread.interrupt_main + + + + + Checks to see if module state has the current value stored already. + + + + + Gets per-runtime state used by a module. The module should have a unique key for + each piece of state it needs to store. + + + + + Sets per-runtime state used by a module. The module should have a unique key for + each piece of state it needs to store. + + + + + Sets per-runtime state used by a module and returns the previous value. The module + should have a unique key for each piece of state it needs to store. + + + + + Sets per-runtime state used by a module and returns the previous value. The module + should have a unique key for each piece of state it needs to store. + + + + + Initializes the sys module on startup. Called both to load and reload sys + + + + + Reads one line keeping track of the # of bytes read + + + + + We use Assembly.LoadFile to load assemblies from a path specified by the script (in LoadAssemblyFromFileWithPath). + However, when the CLR loader tries to resolve any of assembly references, it will not be able to + find the dependencies, unless we can hook into the CLR loader. + + + + + Returns (and creates if necessary) the PythonService that is associated with this PythonContext. + + The PythonService is used for providing remoted convenience helpers for the DLR hosting APIs. + + + + + Gets or sets the default encoding for this system state / engine. + + + + + Dictionary from name to type of all known built-in module names. + + + + + Dictionary from type to name of all built-in modules. + + + + + TODO: Remove me, or stop caching built-ins. This is broken if the user changes __builtin__ + + + + + Gets the member names associated with the object + TODO: Move "GetMemberNames" functionality into MetaObject implementations + + + + Dictionary of error handlers for string codecs. + + + Table of functions used for looking for additional codecs. + + + + Gets a SiteLocalStorage when no call site is available. + + + + + Invokes the specified operation on the provided arguments and returns the new resulting value. + + operation is usually a value from StandardOperators (standard CLR/DLR operator) or + OperatorStrings (a Python specific operator) + + + + + Returns a shared code context for the current PythonContext. This shared + context can be used for performing general operations which usually + require a CodeContext. + + + + + Returns an overload resolver for the current PythonContext. The overload + resolver will flow the shared context through as it's CodeContext. + + + + + Returns a shared code context for the current PythonContext. This shared + context can be used for doing lookups which need to occur as if they + happened in a module which has done "import clr". + + + + + Sets the current command dispatcher for the Python command line. The previous dispatcher + is returned. Null can be passed to remove the current command dispatcher. + + The command dispatcher will be called with a delegate to be executed. The command dispatcher + should invoke the target delegate in the desired context. + + A common use for this is to enable running all REPL commands on the UI thread while the REPL + continues to run on a non-UI thread. + + The ipy.exe REPL will call into PythonContext.DispatchCommand to dispatch each execution to + the correct thread. Other REPLs can do the same to support this functionality as well. + + + + + Dispatches the command to the current command dispatcher. If there is no current command + dispatcher the command is executed immediately on the current thread. + + + + + Gets a function which can be used for comparing two values. If cmp is not null + then the comparison will use the provided comparison function. Otherwise + it will use the normal Python semantics. + + If type is null then a generic comparison function is returned. If type is + not null a comparison function is returned that's used for just that type. + + + + + Performs a GC collection including the possibility of freeing weak data structures held onto by the Python runtime. + + + + + + Gets a PythonContext given a DynamicMetaObjectBinder. + + + + + List of unary operators which we have sites for to enable fast dispatch that + doesn't collide with other operators. + + + + + Note: + IEnumerator innerEnum = Dictionary<K,V>.KeysCollections.GetEnumerator(); + innerEnum.MoveNext() will throw InvalidOperation even if the values get changed, + which is supported in python + + + + + Note: + IEnumerator innerEnum = Dictionary<K,V>.KeysCollections.GetEnumerator(); + innerEnum.MoveNext() will throw InvalidOperation even if the values get changed, + which is supported in python + + + + + Note: + IEnumerator innerEnum = Dictionary<K,V>.KeysCollections.GetEnumerator(); + innerEnum.MoveNext() will throw InvalidOperation even if the values get changed, + which is supported in python + + + + + A DynamicStackFrame which has Python specific data. Currently this + includes the code context which may provide access to locals and the + function code object which is needed to build frame objects from. + + + + + Gets the code context of the function. + + If the function included a call to locals() or the FullFrames + option is enabled then the code context includes all local variables. + + Null if deserialized. + + + + + Gets the code object for this frame. This is used in creating + the trace back. Null if deserialized. + + + + + Sets the mode to text or binary. Returns true if previously set to text, false if previously set to binary. + + + + + Truncates the file to the current length as indicated by tell(). + + + + + Truncates the file to the specified length. + + + + + + Created for a user-defined function. + + + + + Python ctor - maps to function.__new__ + + y = func(x.__code__, globals(), 'foo', None, (a, )) + + + + + The parent CodeContext in which this function was declared. + + + + + Captures the # of args and whether we have kw / arg lists. This + enables us to share sites for simple calls (calls that don't directly + provide named arguments or the list/dict params). + + + + + Calculates the _compat value which is used for call-compatibility checks + for simple calls. Whenver any of the dependent values are updated this + must be called again. + + The dependent values include: + _nparams - this is readonly, and never requies an update + _defaults - the user can mutate this (func_defaults) and that forces + an update + expand dict/list - based on nparams and flags, both read-only + + Bits are allocated as: + 00003fff - Normal argument count + 0fffb000 - Default count + 10000000 - unused + 20000000 - expand list + 40000000 - expand dict + 80000000 - unused + + Enforce recursion is added at runtime. + + + + + Generators w/ exception handling need to have some data stored + on them so that we appropriately set/restore the exception state. + + + + + Returns an ID for the function if one has been assigned, or zero if the + function has not yet required the use of an ID. + + + + + Gets the position for the expand list argument or -1 if the function doesn't have an expand list parameter. + + + + + Gets the position for the expand dictionary argument or -1 if the function doesn't have an expand dictionary parameter. + + + + + Gets the number of normal (not params or kw-params) parameters. + + + + + Gets the number of extra arguments (params or kw-params) + + + + + Marks a member as being hidden from Python code. + + + + + Marks a class as being hidden from the Python hierarchy. This is applied to the base class + and then all derived types will not see the base class in their hierarchy and will not be + able to access members declaredo on the base class. + + + + + Python module. Stores classes, functions, and data. Usually a module + is created by importing a file or package from disk. But a module can also + be directly created by calling the module type and providing a name or + optionally a documentation string. + + + + + Creates a new module backed by a Scope. Used for creating modules for foreign Scope's. + + + + + Creates a new PythonModule with the specified dictionary. + + Used for creating modules for builtin modules which don't have any code associated with them. + + + + + This assembly-level attribute specifies which types in the engine represent built-in Python modules. + + Members of a built-in module type should all be static as an instance is never created. + + + + + Creates a new PythonModuleAttribute that can be used to specify a built-in module that exists + within an assembly. + + The built-in module name + The type that implements the built-in module. + The valid platform identifiers for this module. + + + + The built-in module name + + + + + The type that implements the built-in module + + + + + Provides human readable names for how Python maps the various DLR NarrowingLevel's. + + + + + No narrowing conversions are performed + + + + + Double/Single to Decimal + PythonTuple to Array + Generic conversions + BigInteger to Int64 + + + + + Numeric conversions excluding from floating point values + Boolean conversions + Delegate conversions + Enumeration conversions + + + + + Enables Python protocol conversions (__int__, etc...) + + + + + Provides storage of IronPython specific data in the DLR Scope ScopeExtension. + + This enables IronPython to track code compilation flags such as from __future__ + flags and import clr flags across multiple executions of user-provided scopes. + + + + + Return a copy of this tuple's data array. + + + + + public class to get optimized + + + + + Marks a type as being a PythonType for purposes of member lookup, creating instances, etc... + + If defined a PythonType will use __new__ / __init__ when creating instances. This allows the + object to match the native Python behavior such as returning cached values from __new__ or + supporting initialization to run multiple times via __init__. + + The attribute also allows you to specify an alternate type name. This allows the .NET name to + be different from the Python name so they can follow .NET naming conventions. + + Types defining this attribute also don't show CLR methods such as Equals, GetHashCode, etc... until + the user has done an import clr. + + + + + Provides dictionary based storage which is backed by a Scope object. + + + + + Provides more specific type information for Python lists which are not strongly typed. + + This attribute can be applied to fields, parameters, proeprties, and return values. It can be + inspected to get type information about the types of the values of the expected + list or the returned list. + + + + + Mutable set class + + + + + Appends an IEnumerable to an existing set + + + + + Immutable set class + + + + + Iterator over sets + + + + + General-purpose storage used for Python sets and frozensets. + + The set storage is thread-safe for multiple readers or writers. + + Mutations to the set involve a simple locking strategy of locking on the SetStorage object + itself to ensure mutual exclusion. + + Reads against the set happen lock-free. When the set is mutated, it adds or removes buckets + in an atomic manner so that the readers will see a consistent picture as if the read + occurred either before or after the mutation. + + + + + Creates a new set storage with no buckets + + + + + Creates a new set storage with no buckets + + + + + Returns the number of items currently in the set + + + + + Adds a new item to the set, unless an equivalent item is already present + + + + + Static helper which adds the given non-null item with a precomputed hash code. Returns + true if the item was added, false if it was already present in the set. + + + + + Lock-free helper on a non-null item with a pre-calculated hash code. Removes the item + if it is present in the set, otherwise adds it. + + + + + Clears the contents of the set + + + + + Clones the set, returning a new SetStorage object + + + + + Checks to see if the given item exists in the set + + + + + Checks to see if the given item exists in the set, and tries to hash it even + if it is known not to be in the set. + + + + + + + Adds items from this set into the other set + + + + + Removes the first set element in the iteration order. + + true if an item was removed, false if the set was empty + + + + Removes an item from the set and returns true if it was present, otherwise returns + false + + + + + Removes an item from the set and returns true if it was removed. The item will always + be hashed, throwing if it is unhashable - even if the set has no buckets. + + + + + Lock-free helper to remove a non-null item + + + + + Determines whether the current set shares no elements with the given set + + + + + Determines whether the current set is a subset of the given set + + + + + Determines whether the current set is a strict subset of the given set + + + + + Mutates this set to contain its union with 'other'. The caller must lock the current + set if synchronization is desired. + + + + + Mutates this set to contain its intersection with 'other'. The caller must lock the + current set if synchronization is desired. + + + + + Mutates this set to contain its symmetric difference with 'other'. The caller must + lock the current set if synchronization is desired. + + + + + Mutates this set to contain its difference with 'other'. The caller must lock the + current set if synchronization is desired. + + + + + Computes the union of self and other, returning an entirely new set. This method is + thread-safe and makes no modifications to self or other. + + + + + Computes the intersection of self and other, returning an entirely new set. This + method is thread-safe and makes no modifications to self or other. + + + + + Computes the symmetric difference of self and other, returning an entirely new set. + This method is thread-safe and makes no modifications to self or other. + + + + + Computes the difference of self and other, returning an entirely new set. This + method is thread-safe and makes no modifications to self or other. + + + + + Used to store a single hashed item. + + Bucket is not serializable because it stores the computed hash code, which could change + between serialization and deserialization. + + + + + Helper to hash the given item w/ support for null + + + + + Helper which ensures that the first argument x requires the least work to enumerate + + + + + A factory which creates a SetStorage object from any Python iterable. It extracts + the underlying storage of a set or frozen set without copying, which is left to the + caller if necessary. + + + + + A factory which creates a SetStorage object from any Python iterable. It extracts + the underlying storage of a set or frozen set without copying, which is left to the + caller if necessary. + Returns true if the given object was a set or frozen set, false otherwise. + + + + + A factory which creates a SetStorage object from any Python iterable. It extracts + the underlying storage of a set or frozen set, copying in the former case, to return + a SetStorage object that is guaranteed not to receive any outside mutations. + + + + + Extracts the SetStorage object from o if it is a set or frozenset and returns true. + Otherwise returns false. + + + + + Creates a hashable set from the given set, or does nothing if the given object + is not a set. + + True if o is a set or frozenset, false otherwise + + + + Provides storage which is flowed into a callers site. The same storage object is + flowed for multiple calls enabling the callee to cache data that can be re-used + across multiple calls. + + Data is a public field so that this works properly with DynamicSite's as the reference + type (and EnsureInitialize) + + + + + Gets the indices for the deprecated __getslice__, __setslice__, __delslice__ functions + + This form is deprecated in favor of using __getitem__ w/ a slice object as an index. This + form also has subtly different mechanisms for fixing the slice index before calling the function. + + If an index is negative and __len__ is not defined on the object than an AttributeError + is raised. + + + + + Provides a representation and parsing for the default formatting specification. This is used + by object.__format__, int.__format__, long.__format__, and float.__format__ to do the common + format spec parsing. + + The default specification is: + + format_spec = [[fill]align][sign][#][0][width][,][.precision][type] + fill = a character other than } + align = "<" | ">" | "=" | "^" + sign = "+" | "-" | " " + width = integer + precision = integer + type = "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "x" | "X" | "%" + + + + + Parses a format spec and returns a new StringFormatSpec object. + + + + + StringFormatter provides Python's % style string formatting services. + + + + + Read a possible mapping key for %(key)s. + + The key name enclosed between the '%(key)s', + or null if there are no paranthesis such as '%s'. + + + + AppendBase appends an integer at the specified radix doing all the + special forms for Python. We have a copy and paste version of this + for BigInteger below that should be kept in sync. + + + + + BigInteger version of AppendBase. Should be kept in sync w/ AppendBase + + + + + Optimized storage for setting exc_type, exc_value, and exc_traceback. + + This optimization can go away in Python 3.0 when these attributes are no longer used. + + + + + BuiltinFunction represents any standard CLR function exposed to Python. + This is used for both methods on standard Python types such as list or tuple + and for methods from arbitrary .NET assemblies. + + All calls are made through the optimizedTarget which is created lazily. + + TODO: Back BuiltinFunction's by MethodGroup's. + + + + + Creates a new builtin function for a static .NET function. This is used for module methods + and well-known __new__ methods. + + + + + Creates a built-in function for a .NET method declared on a type. + + + + + Creates a bound built-in function. The instance may be null for built-in functions + accessed for None. + + + + + Returns a BuiltinFunction bound to the provided type arguments. Returns null if the binding + cannot be performed. + + + + + Returns a descriptor for the built-in function if one is + neededed + + + + + Gets the target methods that we'll be calling. + + + + + True if the method should be visible to non-CLS opt-in callers + + + + + Makes a test for the built-in function against the private _data + which is unique per built-in function. + + + + + Helper for generating the call to a builtin function. This is used for calls from built-in method + descriptors and built-in functions w/ and w/o a bound instance. + + This provides all sorts of common checks on top of the call while the caller provides a delegate + to do the actual call. The common checks include: + check for generic-only methods + reversed operator support + transforming arguments so the default binder can understand them (currently user defined mapping types to PythonDictionary) + returning NotImplemented from binary operators + Warning when calling certain built-in functions + + + The call binder we're doing the call for + An expression which points to the code context + the meta object for the built in function + true if we're calling with an instance + The arguments being passed to the function + A restriction for the built-in function, method desc, etc... + A delegate to perform the actual call to the method. + + + + Provides (for reflected methods) a mapping from a signature to the exact target + which takes this signature. + signature with syntax like the following: + someClass.SomeMethod.Overloads[str, int]("Foo", 123) + + + + + Gets the overload dictionary for the logical function. These overloads + are never bound to an instance. + + + + + Returns the instance used for binding. This differs on module functions implemented + using instance methods so the built-in functions there don't expose the instance. + + + + + A custom built-in function which supports indexing + + + + + Use indexing on generic methods to provide a new reflected method with targets bound with + the supplied type arguments. + + + + + Find matching overloads by checking signature against available targets + + Given signature + List of possible targets + If set to true, the method will check whether the first paramter of the + target is of the type CodeContext and removes it + Possible overloads + + + + Throws a formatted exception if no overload matchs. + + Passed signature which should be used + Given targets, which does not fit to the signature + + + + + + + Provides a CustomTracker which handles special fields which have custom + behavior on get/set. + + + + + Provides custom, versioned, dictionary access for instances. Used for both + new-style and old-style instances. + + Each class can allocate a version for instance storage using the + CustomInstanceDictionaryStorage.AllocateInstance method. The version allocated + is dependent upon the names which are likely to appear in the instance + dictionary. Currently these names are calculated by collecting the names + that are assigned to during the __init__ method and combining these with + all such names in the types MRO. + + When creating the dictionary for storing instance values the class can then create + a PythonDictionary backed by a CustomInstanceDictionaryStorage with it's + version. When doing a get/set optimized code can then be produced that + verifies we have CustomInstanceDictionaryStorage and it has the + correct version. If we have a matching dictionary then gets/sets can turn + into simple array accesses rather than dictionary gets/sets. For programs + which access a large number of instance variables this can dramatically + speed up the program. + + TODO: Should we attempt to unify all versions which share the same keys? + + + + + Creates a DLR OverloadDoc object which describes information about this overload. + + The method to document + The name of the method if it should override the name in the MethodBase + Parameters to skip at the end - used for removing the value on a setter method + true to include self on instance methods + + + + Converts a Type object into a string suitable for lookup in the help file. All generic types are + converted down to their generic type definition. + + + + + Gets the XPathDocument for the specified assembly, or null if one is not available. + + + + + Gets the Xml documentation for the specified MethodBase. + + + + + Gets the Xml documentation for the specified Type. + + + + + Gets the Xml documentation for the specified Field. + + + + + Gets the Xml documentation for the specified Field. + + + + + Converts the XML as stored in the config file into a human readable string. + + + + + Marks a type as being a suitable type to be used for user-defined classes. + + The requirements for this are that a type has to follow the patterns + that NewTypeMaker derived types follow. This includes: + The type's constructors must all take PythonType as the 1st parameter + which sets the underlying type for the actual object + The type needs to implement IPythonObject + Dictionary-based storage needs to be provided for setting individual members + Virtual methods exposed to Python need to support checking the types dictionary for invocations + + + + + Represents a set of attributes that different functions can have. + + + + No flags have been set + + + This is a function w/ no instance pointer + + + This is a method that requires an instance + + + Built-in functions can encapsulate both methods and functions, in which case both bits are set + + + True is the function/method should be visible from pure-Python code + + + True if this is a __r*__ method for a CLS overloaded operator method + + + + This method represents a binary operator method for a CLS overloaded operator method. + + Being a binary operator causes the following special behaviors to kick in: + A failed binding at call time returns NotImplemented instead of raising an exception + A reversed operator will automatically be created if: + 1. The parameters are both of the instance type + 2. The parameters are in reversed order (other, this) + + This enables simple .NET operator methods to be mapped into the Python semantics. + + + + + A method declared on a built-in module + + + + + Base class for helper which creates instances. We have two derived types: One for user + defined types which prepends the type before calling, and one for .NET types which + doesn't prepend the type. + + + + + This interface is used for implementing parts of the IronPython type system. It + is not intended for consumption from user programs. + + + + + Thread-safe dictionary set. Returns the dictionary set or the previous value if already set or + null if the dictionary set isn't supported. + + + + + + + Dictionary replacement. Returns true if replaced, false if the dictionary set isn't supported. + + + + + + + Calculates the method resolution order for a Python class + the rules are: + If A is a subtype of B, then A has precedence (A > B) + If C appears before D in the list of bases then C > D + If E > F in one __mro__ then E > F in all __mro__'s for our subtype + + class A(object): pass + class B(object): pass + class C(B): pass + class N(A,B,C): pass # illegal + + This is because: + C.__mro__ == (C, B, object) + N.__mro__ == (N, A, B, C, object) + which would conflict, but: + + N(B,A) is ok (N, B, a, object) + N(C, B, A) is ok (N, C, B, A, object) + + Calculates a C3 MRO as described in "The Python 2.3 Method Resolution Order" + plus support for old-style classes. + + We build up a list of our base classes MRO's plus our base classes themselves. + We go through the list in order. Look at the 1st class in the current list, and + if it's not the non-first class in any other list then remove it from all the lists + and append it to the mro. Otherwise continue to the next list. If all the classes at + the start are no-good then the MRO is bad and we throw. + + For old-style classes if the old-style class is the only one in the list of bases add + it as a depth-first old-style MRO, otherwise compute a new-style mro for all the classes + and use that. + + + + + + + + + Contains helper methods for converting C# names into Python names. + + + + + TypeInfo captures the minimal CLI information required by NewTypeMaker for a Python object + that inherits from a CLI type. + + + + + "bases" contains a set of PythonTypes. These can include types defined in Python (say cpy1, cpy2), + CLI types (say cCLI1, cCLI2), and CLI interfaces (say iCLI1, iCLI2). Here are some + examples of how this works: + + (bases) => baseType, {interfaceTypes} + + (cpy1) => System.Object, {} + (cpy1, cpy2) => System.Object, {} + (cpy1, cCLI1, iCLI1, iCLI2) => cCLI1, {iCLI1, iCLI2} + [some type that satisfies the line above] => + cCLI1, {iCLI1, iCLI2} + (cCLI1, cCLI2) => error + + + + + Filters out old-classes and throws if any non-types are included, returning a + yielding the remaining PythonType objects. + + + + + Python class hierarchy is represented using the __class__ field in the object. It does not + use the CLI type system for pure Python types. However, Python types which inherit from a + CLI type, or from a builtin Python type which is implemented in the engine by a CLI type, + do have to use the CLI type system to interoperate with the CLI world. This means that + objects of different Python types, but with the same CLI base type, can use the same CLI type - + they will just have different values for the __class__ field. + + The easiest way to inspect the functionality implemented by NewTypeMaker is to persist the + generated IL using "ipy.exe -X:SaveAssemblies", and then inspect the + persisted IL using ildasm. + + + + + Loads any available new types from the provided assembly and makes them + available via the GetNewType API. + + + + + Is this a type used for instances Python types (and not for the types themselves)? + + + + + Gets the position for the parameter which we are overriding. + + + + + + + + + Defines an interface on the type that forwards all calls + to a helper method in UserType. The method names all will + have Helper appended to them to get the name for UserType. The + UserType version should take 1 extra parameter (self). + + + + + Overrides methods - this includes all accessible virtual methods as well as protected non-virtual members + including statics and non-statics. + + + + + Loads all the incoming arguments and forwards them to mi which + has the same signature and then returns the result + + + + + Emits code to check if the class has overridden this specific + function. For example: + + MyDerivedType.SomeVirtualFunction = ... + or + + class MyDerivedType(MyBaseType): + def SomeVirtualFunction(self, ...): + + + + + + Emit code to convert object to a given type. This code is semantically equivalent + to PythonBinder.EmitConvertFromObject, except this version accepts ILGen whereas + PythonBinder accepts Compiler. The Binder will chagne soon and the two will merge. + + + + + Emits code to check if the class has overridden this specific + function. For example: + + MyDerivedType.SomeVirtualFunction = ... + or + + class MyDerivedType(MyBaseType): + def SomeVirtualFunction(self, ...): + + + + + + Emits the call to lookup a member defined in the user's type. Returns + the local which stores the resulting value and leaves a value on the + stack indicating the success of the lookup. + + + + + Creates a method for doing a base method dispatch. This is used to support + super(type, obj) calls. + + + + + Generates stub to receive the CLR call and then call the dynamic language code. + This code is same as StubGenerator.cs in the Microsoft.Scripting, except it + accepts ILGen instead of Compiler. + + + + + Called from PythonTypeOps - the BuiltinFunction._function lock must be held. + + + + + Same as the DLR ReturnFixer, but accepts lower level constructs, + such as LocalBuilder, ParameterInfos and ILGen. + + + + + Returns the dictionary used to store state for this object + + + + + OperatorMapping provides a mapping from DLR operators to their associated .NET methods. + + + + + Given an operator returns the OperatorMapping associated with the operator or null + + + + + The operator the OperatorMapping provides info for. + + + + + The primary method name associated with the method. This method name is + usally in the form of op_Operator (e.g. op_Addition). + + + + + The secondary method name associated with the method. This method name is + usually a standard .NET method name with pascal casing (e.g. Add). + + + + + The return type that must match for the alternate operator to be valid. + + This is available alternate operators don't have special names and therefore + could be confused for a normal method which isn't fulfilling the contract. + + + + + Cached CallSites. User types are cached on the PythonType and System types are cached on the + PythonContext to avoid cross-runtime contamination due to the binder on the site. + + + + + Represents a PythonType. Instances of PythonType are created via PythonTypeBuilder. + + + + + Provides delegates that will invoke a parameterless type ctor. The first key provides + the dictionary for a specific type, the 2nd key provides the delegate for a specific + call site type used in conjunction w/ our IFastInvokable implementation. + + + + + Shared built-in functions for creating instances of user defined types. Because all + types w/ the same UnderlyingSystemType share the same constructors these can be + shared across multiple types. + + + + + Creates a new type for a user defined type. The name, base classes (a tuple of type + objects), and a dictionary of members is provided. + + + + + Creates a new type for a user defined type. The name, base classes (a tuple of type + objects), and a dictionary of members is provided. + + + + + Creates a new PythonType object which is backed by the specified .NET type for + storage. The type is considered a system type which can not be modified + by the user. + + + + + + Creates a new PythonType which is a subclass of the specified PythonType. + + Used for runtime defined new-style classes which require multiple inheritance. The + primary example of this is the exception system. + + + + + Creates a new PythonType which is a subclass of the specified PythonTypes. + + Used for runtime defined new-style classes which require multiple inheritance. The + primary example of this is the exception system. + + + + + Creates a new PythonType which is a subclass of the specified PythonTypes. + + Used for runtime defined new-style classes which require multiple inheritance. The + primary example of this is the exception system. + + + + + Creates a new PythonType which is a subclass of the specified PythonType. + + Used for runtime defined new-style classes which require multiple inheritance. The + primary example of this is the exception system. + + + + + Creates a new PythonType which is a subclass of the specified PythonTypes. + + Used for runtime defined new-style classes which require multiple inheritance. The + primary example of this is the exception system. + + + + + Creates a new PythonType which is a subclass of the specified PythonTypes. + + Used for runtime defined new-style classes which require multiple inheritance. The + primary example of this is the exception system. + + + + + Creates a new PythonType object which represents an Old-style class. + + + + + Used in copy_reg which is the only consumer of __flags__ in the standard library. + + Set if the type is user defined + + + + + Set if the type has __abstractmethods__ defined + + + + + Check whether the current type is iterabel + + + True if it is iterable + + + + Returns true if the specified object is an instance of this type. + + + + + Gets the name of the dynamic type + + + + + Gets the resolution order used for attribute lookup + + + + + Gets the dynamic type that corresponds with the provided static type. + + Returns null if no type is available. TODO: In the future this will + always return a PythonType created by the DLR. + + + + + + + Sets the python type that corresponds with the provided static type. + + This is used for built-in types which have a metaclass. Currently + only used by ctypes. + + + + + Allocates the storage for the instance running the .NET constructor. This provides + the creation functionality for __new__ implementations. + + + + + Allocates the storage for the instance running the .NET constructor. This provides + the creation functionality for __new__ implementations. + + + + + Allocates the storage for the instance running the .NET constructor. This provides + the creation functionality for __new__ implementations. + + + + + Allocates the storage for the instance running the .NET constructor. This provides + the creation functionality for __new__ implementations. + + + + + Allocates the storage for the instance running the .NET constructor. This provides + the creation functionality for __new__ implementations. + + + + + Allocates the storage for the instance running the .NET constructor. This provides + the creation functionality for __new__ implementations. + + + + + Gets the underlying system type that is backing this type. All instances of this + type are an instance of the underlying system type. + + + + + Gets the extension type for this type. The extension type provides + a .NET type which can be inherited from to extend sealed classes + or value types which Python allows inheritance from. + + + + + Gets the base types from which this type inherits. + + + + + Returns true if this type is a subclass of other + + + + + True if the type is a system type. A system type is a type which represents an + underlying .NET type and not a subtype of one of these types. + + + + + Looks up a slot on the dynamic type + + + + + Searches the resolution order for a slot matching by name + + + + + Searches the resolution order for a slot matching by name. + + Includes searching for methods in old-style classes + + + + + Internal helper to add a new slot to the type + + + + + + + Gets a value from a dynamic type and any sub-types. Values are stored in slots (which serve as a level of + indirection). This searches the types resolution order and returns the first slot that + contains the value. + + + + + Attempts to lookup a member w/o using the customizer. Equivelent to object.__getattribute__ + but it doens't throw an exception. + + + + + + Gets a value from a dynamic type and any sub-types. Values are stored in slots (which serve as a level of + indirection). This searches the types resolution order and returns the first slot that + contains the value. + + + + + Attempts to lookup a member w/o using the customizer. + + + + + + Sets a value on an instance. If a slot is available in the most derived type the slot + is set there, otherwise the value is stored directly in the instance. + + + + + Attempst to set a value w/o going through the customizer. + + This enables languages to provide the "base" implementation for setting attributes + so that the customizer can call back here. + + + + + Returns a list of all slot names for the type and any subtypes. + + The context that is doing the inquiry of InvariantContext.Instance. + + + + Returns a list of all slot names for the type, any subtypes, and the instance. + + The context that is doing the inquiry of InvariantContext.Instance. + the instance to get instance members from, or null. + + + + Adds members from a user defined type. + + + + + Adds members from a user defined type instance + + + + + Gets the .NET type which is used for instances of the Python type. + + When overridden by a metaclass enables a customization of the .NET type which + is used for instances of the Python type. Meta-classes can construct custom + types at runtime which include new .NET methods, fields, custom attributes or + other features to better interoperate with .NET. + + + + + Initializes a PythonType that represents a standard .NET type. The same .NET type + can be shared with the Python type system. For example object, string, int, + etc... are all the same types. + + + + + Creates a __new__ method for the type. If the type defines interesting constructors + then the __new__ method will call that. Otherwise if it has only a single argless + + + + + This will return a unique integer for every version of every type in the system. + This means that DynamicSite code can generate a check to see if it has the correct + PythonType and version with a single integer compare. + + TODO - This method and related code should fail gracefully on overflow. + + + + + Internal helper function to add a subtype + + + + + Gets a list of weak references to all the subtypes of this class. May return null + if there are no subtypes of the class. + + + + + The type has a ctor which does not accept PythonTypes. This is used + for user defined types which implement __clrtype__ + + + + + Returns a CLR WeakReference object to this PythonType that can be shared + between anyone who needs a weak reference to the type. + + + + + Implements fast binding for user defined types. This ensures that common highly dynamic + scenarios will run fast (for instance creating new types repeatedly and only creating a limited + number of instances of them). It also gives better code sharing amongst different subclasses + of the same types and improved startup time due to reduced code generation. + + + + + Base class for doing fast type invoke binding. Subclasses are created using + reflection once during the binding. The subclasses can then proceed to do + the binding w/o using reflection. Otherwise we'd have lots more reflection + calls which would slow the binding up. + + + + + Gets or creates delegate for calling the constructor function. + + + + + Used when a type overrides __new__ with a Python function or other object + that can return an arbitrary value. If the return value is not the same type + as the type which had __new__ then we need to lookup __init__ on the type + and invoke it. Also handles initialization for finalization when __del__ + is defined for the same reasons. + + + + + target is the newly initialized value. + args are the arguments to be passed to __init__ + + + + + Provides a slot object for the dictionary to allow setting of the dictionary. + + + + + Helpers for interacting w/ .NET types. This includes: + + Member resolution via GetMember/GetMembers. This performs a member lookup which includes the registered + extension types in the PythonBinder. Internally the class has many MemberResolver's which provide + the various resolution behaviors. + + Cached member access - this is via static classes such as Object and provides various MemberInfo's so we're + not constantly looking up via reflection. + + + + list of resolvers which we run to resolve items + + + + Gets the statically known member from the type with the specific name. Searches the entire type hierarchy to find the specified member. + + + + + Gets all the statically known members from the specified type. Searches the entire type hierarchy to get all possible members. + + The result may include multiple resolution. It is the callers responsibility to only treat the 1st one by name as existing. + + + + + Gets the statically known member from the type with the specific name. Searches only the specified type to find the member. + + + + + Gets all the statically known members from the specified type. Searches only the specified type to find the members. + + The result may include multiple resolution. It is the callers responsibility to only treat the 1st one by name as existing. + + + + + Abstract class used for resolving members. This provides two methods of member look. The first is looking + up a single member by name. The other is getting all of the members. + + There are various subclasses of this which have different methods of resolving the members. The primary + function of the resolvers are to provide the name->value lookup. They also need to provide a simple name + enumerator. The enumerator is kept simple because it's allowed to return duplicate names as well as return + names of members that don't exist. The base MemberResolver will then verify their existance as well as + filter duplicates. + + + + + Looks up an individual member and returns a MemberGroup with the given members. + + + + + Returns a list of members that exist on the type. The ResolvedMember structure indicates both + the name and provides the MemberGroup. + + + + + Returns a list of possible members which could exist. ResolveMember needs to be called to verify their existance. Duplicate + names can also be returned. + + + + + One off resolver for various special methods which are known by name. A delegate is provided to provide the actual member which + will be resolved. + + + + + Standard resolver for looking up .NET members. Uses reflection to get the members by name. + + + + + Resolves methods mapped to __eq__ and __ne__ from IStructuralEquatable.Equals + + + + + Resolves methods mapped to __gt__, __lt__, __ge__, __le__, as well as providing an alternate resolution + for __eq__ and __ne__, from the comparable type's CompareTo method. + + This should be run after the EqualityResolver. + + + + + Resolves methods mapped to __*__ methods automatically from the .NET operator. + + + + + Filters alternative methods out that don't match the expected signature and therefore + are just sharing a common method name. + + + + + Removes Object.Equals methods as we never return these for PythonOperationKind. + + + + + Provides bindings to private members when that global option is enabled. + + + + + Provides resolutions for protected members that haven't yet been + subclassed by NewTypeMaker. + + + + + Creates the resolver table which includes all the possible resolutions. + + + + + + Provides a resolution for __complex__ + + + + + Provides a resolution for __float__ + + + + + Provides a resolution for __int__ + + + + + Provides a resolution for __long__ + + + + + Provides a resolution for __getitem__ + + + + + Provides a resolution for __setitem__ + + + + + Provides a resolution for __str__. + + + + + Provides a resolution for __repr__ + + + + + Helper to see if the type explicitly overrides the method. This ignores members + defined on object. + + + + + Provides a resolution for __hash__ looking for IStructuralEquatable.GetHashCode. + + + + + Provides a resolution for __new__. For standard .NET types __new__ resolves to their + constructor. For Python types they inherit __new__ from their base class. + + TODO: Can we just always fallback to object.__new__? If not why not? + + + + + Provides a resolution for next + + + + + Provides a resolution for __len__ + + + + + Provides a resolution for __iter__ + + + + + Looks for an Equals overload defined on the type and if one is present binds __ne__ to an + InstanceOps helper. + + + + + Provides an implementation of __contains__. We can pull contains from: + ICollection of T which defines Contains directly + IList which defines Contains directly + IDictionary which defines Contains directly + IDictionary of K,V which defines Contains directly + IEnumerable of K which we have an InstaceOps helper for + IEnumerable which we have an instance ops helper for + IEnumerator of K which we have an InstanceOps helper for + IEnumerator which we have an instance ops helper for + + String is ignored here because it defines __contains__ via extension methods already. + + The lookup is well ordered and not dependent upon the order of values returned by reflection. + + + + + Helper for IEnumerable/IEnumerator __contains__ + + + + + Base class used for resolving a name into a member on the type. + + + + + Gets an instance op method for the given type and name. + + Instance ops methods appaer on the base most class that's required to expose it. So + if we have: Array[int], Array, object we'd only add an instance op method to Array and + Array[int] inherits it. It's obviously not on object because if it was there we'd just + put the method in ObjectOps. + + Therefore the different binders expose this at the appropriate times. + + + + + MemberBinder which searches the entire type hierarchy and their extension types to find a member. + + + + + MemberBinder which searches only the current type and it's extension types to find a member. + + + + + Primary worker for getting the member(s) associated with a single name. Can be called with different MemberBinder's to alter the + scope of the search. + + + + + Primary worker for returning a list of all members in a type. Can be called with different MemberBinder's to alter the scope + of the search. + + + + + Helper to get a MemberGroup for methods declared on InstanceOps + + + + + Helper to get the proper typecasting method, according to the following precedence rules: + + 1. Strongest (most specific) declaring type + 2. Strongest (most specific) parameter type + 3. Type of conversion + i. Implicit + ii. Explicit + 4. Return type (order specified in toTypes) + + + + + Helper for creating a typecast resolver + + + + + Helper for creating __getitem__/__setitem__ resolvers + + false for a getter, true for a setter + + + + Filters out methods which are present on standard .NET types but shouldn't be there in Python + + + + + When private binding is enabled we can have a collision between the private Event + and private field backing the event. We filter this out and favor the event. + + This matches the v1.0 behavior of private binding. + + + + + Filters down to include only protected methods + + + + + If an operator is a reverisble operator (e.g. addition) then we need to filter down to just the forward/reverse + versions of the .NET method. For example consider: + + String.op_Multiplication(int, string) + String.op_Multiplication(string, int) + + If this method were defined on string it defines that you can do: + 2 * 'abc' + or: + 'abc' * 2 + + either of which will produce 'abcabc'. The 1st form is considered the reverse form because it is declared on string + but takes a non-string for the 1st argument. The 2nd is considered the forward form because it takes a string as the + 1st argument. + + When dynamically dispatching for 2 * 'abc' we'll first try __mul__ on int, which will fail with a string argument. Then we'll try + __rmul__ on a string which will succeed and dispatch to the (int, string) overload. + + For multiplication in this case it's not too interesting because it's commutative. For addition this might be more interesting + if, for example, we had unicode and ASCII strings. In that case Unicode strings would define addition taking both unicode and + ASCII strings in both forms. + + + + + Checks to see if the parameter type and the declaring type are compatible to determine + if an operator is forward or reverse. + + + + + Checks to see if this is an operator method which Python recognizes. For example + op_Comma is not recognized by Python and therefore should exposed to the user as + a method that is callable by name. + + + + + A TypeSlot is an item that gets stored in a type's dictionary. Slots provide an + opportunity to customize access at runtime when a value is get or set from a dictionary. + + + + + Gets the value stored in the slot for the given instance binding it to an instance if one is provided and + the slot binds to instances. + + + + + Sets the value of the slot for the given instance. + + true if the value was set, false if it can't be set + + + + Deletes the value stored in the slot from the instance. + + true if the value was deleted, false if it can't be deleted + + + + True if generating code for gets can result in more optimal accesses. + + + + + Gets an expression which is used for accessing this slot. If the slot lookup fails the error expression + is used again. + + The default implementation just calls the TryGetValue method. Subtypes of PythonTypeSlot can override + this and provide a more optimal implementation. + + + + + True if TryGetValue will always succeed, false if it may fail. + + This is used to optimize away error generation code. + + + + + The unbound representation of an event property + + + + + BoundEvent is the object that gets returned when the user gets an event object. An + BoundEvent tracks where the event was received from and is used to verify we get + a proper add when dealing w/ statics events. + + + + + Represents a ReflectedProperty created for an extension method. Logically the property is an + instance property but the method implementing it is static. + + + + + Convenience function for users to call directly + + + + + This function can be used to set a field on a value type without emitting a warning. Otherwise it is provided only to have symmetry with properties which have GetValue/SetValue for supporting explicitly implemented interfaces. + + Setting fields on value types usually warns because it can silently fail to update the value you expect. For example consider this example where Point is a value type with the public fields X and Y: + + arr = System.Array.CreateInstance(Point, 10) + arr[0].X = 42 + print arr[0].X + + prints 0. This is because reading the value from the array creates a copy of the value. Setting the value then mutates the copy and the array does not get updated. The same problem exists when accessing members of a class. + + + + + Base class for properties backed by methods. These include our slot properties, + indexers, and normal properties. This class provides the storage of these as well + as the storage of our optimized getter/setter methods, documentation for the property, + etc... + + + + + Provides access to non-default .NET indexers (aka properties w/ parameters). + + C# doesn't support these, but both COM and VB.NET do. The types dictionary + gets populated w/a ReflectedGetterSetter indexer which is a descriptor. Getting + the descriptor returns a bound indexer. The bound indexer supports indexing. + We support multiple indexer parameters via expandable tuples. + + + + + True if generating code for gets can result in more optimal accesses. + + + + + Convenience function for users to call directly + + + + + Convenience function for users to call directly + + + + + Represents a member of a user-defined type which defines __slots__. The names listed in + __slots__ have storage allocated for them with the type and provide fast get/set access. + + + + + Gets the index into the object array to be used for the slot storage. + + + + + Couples a MemberGroup and the name which produces the member group together + + + + + Represents an ops-extension which adds a new slot. The slot can have arbitrary + get/set behavior above and beyond normal .NET methods or properties. This is + typically in regards to how it processes access from instances or subtypes. + + + + + single finalizable instance used to track and deliver all the + callbacks for a single object that has been weakly referenced by + one or more references and proxies. The reference to this object + is held in objects that implement IWeakReferenceable. + + + + + Finalizable object used to hook up finalization calls for OldInstances. + + We create one of these each time an object w/ a finalizer gets created. The + only reference to this object is the instance so when that goes out of context + this does as well and this will get finalized. + + + + + Marks a method/field/property as being a wrapper descriptor. A wrapper desriptor + is a member defined on PythonType but is available both for type and other + instances of type. For example type.__bases__. + + + + + For IList arguments: Marks that the argument is typed to accept a bytes or + bytearray object. This attribute disallows passing a Python list object and + auto-applying our generic conversion. It also enables conversion of a string to + a IList of byte in IronPython 2.6. + + For string arguments: Marks that the argument is typed to accept a bytes object + as well. (2.6 only) + + + + + Provides more specific type information for Python dictionaries which are not strongly typed. + + This attribute can be applied to fields, parameters, proeprties, and return values. It can be + inspected to get type information about the types of the keys and values of the expected + dictionary or the returned dictionary. + + + + + Gets the collection of command line arguments. + + + + + Should we strip out all doc strings (the -O command line option). + + + + + Should we strip out all doc strings (the -OO command line option). + + + + + List of -W (warning filter) options collected from the command line. + + + + + Enables warnings related to Python 3.0 features. + + + + + Enables 3.0 features that are implemented in IronPython. + + + + + Enables debugging support. When enabled a .NET debugger can be attached + to the process to step through Python code. + + + + + Enables inspect mode. After running the main module the REPL will be started + within that modules context. + + + + + Suppresses addition of the user site directory. This is ignored by IronPython + except for updating sys.flags. + + + + + Disables import site on startup. + + + + + Ignore environment variables that configure the IronPython context. + + + + + Enables the verbose option which traces import statements. This is ignored by IronPython + except for setting sys.flags. + + + + + Sets the maximum recursion depth. Setting to Int32.MaxValue will disable recursion + enforcement. + + + + + Makes available sys._getframe. Local variables will not be available in frames unless the + function calls locals(), dir(), vars(), etc... For ensuring locals are always available use + the FullFrames option. + + + + + Makes available sys._getframe. All locals variables will live on the heap (for a considerable + performance cost) enabling introspection of all code. + + + + + Tracing is always available. Without this option tracing is only enabled when sys.settrace + is called. This means code that was already running before sys.settrace will not be debuggable. + + With this option pdb.set_trace and pdb.post_mortem will always work properly. + + + + + Severity of a warning that indentation is formatted inconsistently. + + + + + The division options (old, new, warn, warnall) + + + + + Forces all code to be compiled in a mode in which the code can be reliably collected by the CLR. + + + + + Enable profiling code + + + + + Returns a regular expression of Python files which should not be emitted in debug mode. + + + + + Gets the CPython version which IronPython will emulate. Currently limited + to either 2.6 or 3.0. + + + + diff --git a/tracking and telemetry/Client/bin/Release/MAVLink.dll b/tracking and telemetry/Client/bin/Release/MAVLink.dll new file mode 100644 index 0000000..983c786 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/MAVLink.dll differ diff --git a/tracking and telemetry/Client/bin/Release/MAVLink.pdb b/tracking and telemetry/Client/bin/Release/MAVLink.pdb new file mode 100644 index 0000000..875c5b9 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/MAVLink.pdb differ diff --git a/tracking and telemetry/Client/bin/Release/Microsoft.Dynamic.dll b/tracking and telemetry/Client/bin/Release/Microsoft.Dynamic.dll new file mode 100644 index 0000000..73f603c Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/Microsoft.Dynamic.dll differ diff --git a/tracking and telemetry/Client/bin/Release/Microsoft.Dynamic.xml b/tracking and telemetry/Client/bin/Release/Microsoft.Dynamic.xml new file mode 100644 index 0000000..7ce5218 --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/Microsoft.Dynamic.xml @@ -0,0 +1,8409 @@ + + + + Microsoft.Dynamic + + + + + Provides binding semantics for a language. This include conversions as well as support + for producing rules for actions. These optimized rules are used for calling methods, + performing operators, and getting members using the ActionBinder's conversion semantics. + + + + + Determines if the binder should allow access to non-public members. + + By default the binder does not allow access to non-public members. Base classes + can inherit and override this value to customize whether or not private binding + is available. + + + + + Converts an object at runtime into the specified type. + + + + + Determines if a conversion exists from fromType to toType at the specified narrowing level. + toNotNullable is true if the target variable doesn't allow null values. + + + + + Provides ordering for two parameter types if there is no conversion between the two parameter types. + + + + + Converts the provided expression to the given type. The expression is safe to evaluate multiple times. + + + + + Gets the members that are visible from the provided type of the specified name. + + The default implemetnation first searches the type, then the flattened heirachy of the type, and then + registered extension methods. + + + + + Called when a set is attempting to assign to a field or property from a derived class through the base class. + + The default behavior is to allow the assignment. + + + + + Creates an ErrorInfo object when a static property is accessed from an instance member. The default behavior is throw + an exception indicating that static members properties be accessed via an instance. Languages can override this to + customize the exception, message, or to produce an ErrorInfo object which reads or writes to the property being accessed. + + The static property being accessed through an instance + True if the user is assigning to the property, false if the user is reading from the property + The parameters being used to access the property. This includes the instance as the first entry, any index parameters, and the + value being assigned as the last entry if isAssignment is true. + + + + + Provides a way for the binder to provide a custom error message when lookup fails. Just + doing this for the time being until we get a more robust error return mechanism. + + Deprecated, use the non-generic version instead + + + + + Gets the extension members of the given name from the provided type. Base classes are also + searched for their extension members. Once any of the types in the inheritance hierarchy + provide an extension member the search is stopped. + + + + + Gets the extension members of the given name from the provided type. Subclasses of the + type and their extension members are not searched. + + + + + Provides an opportunity for languages to replace all MemberTracker's with their own type. + + Alternatlely a language can expose MemberTracker's directly. + + The member which is being returned to the user. + Tthe type which the memberTrack was accessed from + + + + + TODO: Alternatively, it should be sufficient to remember indices for this, list, dict and block. + + + + + Convention for an individual argument at a callsite. + + Multiple different callsites can match against a single declaration. + Some argument kinds can be "unrolled" into multiple arguments, such as list and dictionary. + + + + + Simple unnamed positional argument. + In Python: foo(1,2,3) are all simple arguments. + + + + + Argument with associated name at the callsite + In Python: foo(a=1) + + + + + Argument containing a list of arguments. + In Python: foo(*(1,2*2,3)) would match 'def foo(a,b,c)' with 3 declared arguments such that (a,b,c)=(1,4,3). + it could also match 'def foo(*l)' with 1 declared argument such that l=(1,4,3) + + + + + Argument containing a dictionary of named arguments. + In Python: foo(**{'a':1, 'b':2}) + + + + + Richly represents the signature of a callsite. + + + + + Array of additional meta information about the arguments, such as named arguments. + Null for a simple signature that's just an expression list. eg: foo(a*b,c,d) + + + + + Number of arguments in the signature. + + + + + All arguments are unnamed and matched by position. + + + + + True if the OldCallAction includes an ArgumentInfo of ArgumentKind.Dictionary or ArgumentKind.Named. + + + + + Gets the number of positional arguments the user provided at the call site. + + + + + Gets the index into _args array indicating the first post-splat argument or -1 of there are no splatted arguments. + For call site f(a,b,*c,d) and preSplatLimit == 1 and postSplatLimit == 2 + args would be (a,b,c[0],c[n-2],c[n-1],d) with splat index 3, where n = c.Count. + + + + + The number of arguments not counting the collapsed ones. + + + + + Gets the number of hidden arguments (used for error reporting). + + + + + Gets the total number of visible arguments passed to the call site including collapsed ones. + + + + + Binds named arguments to the parameters. Returns a permutation of indices that captures the relationship between + named arguments and their corresponding parameters. Checks for duplicate and unbound named arguments. + Ensures that for all i: namedArgs[i] binds to parameters[args.Length + bindingPermutation[i]] + + + + + ArgBuilder provides an argument value used by the MethodBinder. One ArgBuilder exists for each + physical parameter defined on a method. + + Contrast this with ParameterWrapper which represents the logical argument passed to the method. + + + + + Gets the priority. + + + + + The number of actual arguments consumed by this builder. + + + + + Provides the Expression which provides the value to be passed to the argument. + If null is returned the argument is skipped (not passed to the callee). + + + + + Returns the type required for the argument or null if the ArgBuilder + does not consume a type. + + + + + Provides an Expression which will update the provided value after a call to the method. May + return null if no update is required. + + + + + If the argument produces a return value (e.g. a ref or out value) this provides + the additional value to be returned. + + + + + An assignable value that is passed to a byref parameter + After the call it will contain the updated value + + + + + Indicates the specific type of failure, if any, from binding to a method. + + + + + The binding succeeded. Only one method was applicable or had the best conversion. + + + + + More than one method was applicable for the provided parameters and no method was considered the best. + + + + + There are no overloads that match the number of parameters required for the call + + + + + None of the target method(s) can successfully be called. The failure can be due to: + 1. Arguments could not be successfully converted for the call + 2. Keyword arguments could not be assigned to positional arguments + 3. Keyword arguments could be assigned but would result in an argument being assigned + multiple times (keyword and positional arguments conflit or dupliate keyword arguments). + + + + + Actual arguments cannot be constructed. + + + + + No method is callable. For example, all methods have an unbound generic parameter. + + + + + Encapsulates the result of an attempt to bind to one or methods using the OverloadResolver. + + Users should first check the Result property to see if the binding was successful or + to determine the specific type of failure that occured. If the binding was successful + MakeExpression can then be called to create an expression which calls the method. + If the binding was a failure callers can then create a custom error message based upon + the reason the call failed. + + + + + Creates a new BindingTarget when the method binding has succeeded. + + + + + Creates a new BindingTarget when the method binding has failed due to an incorrect argument count + + + + + Creates a new BindingTarget when the method binding has failued due to + one or more parameters which could not be converted. + + + + + Creates a new BindingTarget when the match was ambiguous + + + + + Other failure. + + + + + Gets the result of the attempt to bind. + + + + + Gets an Expression which calls the binding target if the method binding succeeded. + + Throws InvalidOperationException if the binding failed. + + + + + Returns the method if the binding succeeded, or null if no method was applicable. + + + + + Returns the selected overload if the binding succeeded, or null if no one was applicable. + + + + + Gets the name of the method as supplied to the OverloadResolver. + + + + + Returns the MethodTarget if the binding succeeded, or null if no method was applicable. + + + + + Returns the methods which don't have any matches or null if Result == BindingResult.AmbiguousMatch + + + + + Returns the methods and their associated conversion failures if Result == BindingResult.CallFailure. + + + + + Returns the acceptable number of arguments which can be passed to the method if Result == BindingResult.IncorrectArgumentCount. + + + + + Returns the total number of arguments provided to the call. 0 if the call succeeded or failed for a reason other + than argument count mismatch. + + + + + Gets the MetaObjects which we originally did binding against in their restricted form. + + The members of the array correspond to each of the arguments. All members of the array + have a value. + + + + + Returns the return type of the binding, or null if no method was applicable. + + + + + Gets the NarrowingLevel of the method if the call succeeded. + If the call failed returns NarrowingLevel.None. + + + + + Returns true if the binding was succesful, false if it failed. + This is an alias for BindingTarget.Result == BindingResult.Success. + + + + + Represents the reason why a call to a specific method could not be performed by the OverloadResolver. + + The reason for the failure is specified by the CallFailureReason property. Once this property + has been consulted the other properties can be consulted for more detailed information regarding + the failure. + + If reason is ConversionFailure the ConversionResults property will be non-null. + If reason is UnassignableKeyword the KeywordArguments property will be non-null and include + the keywords which could not be assigned. + If reason is DuplicateKeyword the KeywordArguments property will be non-null and include + the keywords which were duplicated (either by the keywords themselves or by positional + arguments). + + MethodTarget is always set and indicates the method which failed to bind. + + + + + Gets the MethodTarget which the call failed for. + + + + + Gets the reason for the call failure which determines the other + properties of the CallFailure which should be consulted. + + + + + Gets a list of ConversionResult's for each parameter indicating + whether the conversion was successful or failed and the types + being converted. + + + + + Gets the list of keyword arguments that were either dupliated or + unassignable. + + + + + Default value, their was no CallFailure. + + + + + One of more parameters failed to be converted + + + + + One or more keyword arguments could not be successfully assigned to a positional argument + + + + + One or more keyword arguments were duplicated or would have taken the spot of a + provided positional argument. + + + + + Type arguments could not be inferred + + + + + Represents a collection of MethodCandidate's which all accept the + same number of logical parameters. For example a params method + and a method with 3 parameters would both be a CandidateSet for 3 parameters. + + + + + Represents information about a failure to convert an argument from one + type to another. + + + + + Value of the argument or null if it is not available. + + + + + Argument actual type or its limit type if the value not known. + DynamicNull if the argument value is null. + + + + + ArgBuilder which provides a default parameter value for a method call. + + + + + The number of actual arguments consumed by this builder. + + + + + ArgBuilder which provides a value for a keyword argument. + + The KeywordArgBuilder calculates its position at emit time using it's initial + offset within the keyword arguments, the number of keyword arguments, and the + total number of arguments provided by the user. It then delegates to an + underlying ArgBuilder which only receives the single correct argument. + + Delaying the calculation of the position to emit time allows the method binding to be + done without knowing the exact the number of arguments provided by the user. Hence, + the method binder can be dependent only on the set of method overloads and keyword names, + but not the user arguments. While the number of user arguments could be determined + upfront, the current MethodBinder does not have this design. + + + + + The underlying builder should expect a single parameter as KeywordArgBuilder is responsible + for calculating the correct parameter to use + + + + + + Updates fields/properties of the returned value with unused keyword parameters. + + + + + MethodCandidate represents the different possible ways of calling a method or a set of method overloads. + A single method can result in multiple MethodCandidates. Some reasons include: + - Every optional parameter or parameter with a default value will result in a candidate + - The presence of ref and out parameters will add a candidate for languages which want to return the updated values as return values. + - ArgumentKind.List and ArgumentKind.Dictionary can result in a new candidate per invocation since the list might be different every time. + + Each MethodCandidate represents the parameter type for the candidate using ParameterWrapper. + + + + + Builds a new MethodCandidate which takes count arguments and the provided list of keyword arguments. + + The basic idea here is to figure out which parameters map to params or a dictionary params and + fill in those spots w/ extra ParameterWrapper's. + + + + + Narrowing conversions are conversions that cannot be proved to always succeed, conversions that are + known to possibly lose information, and conversions across domains of types sufficiently different + to merit narrowing notation like casts. + + Its upto every language to define the levels for conversions. The narrowling levels can be used by + for method overload resolution, where the overload is based on the parameter types (and not the number + of parameters). + + + + + Conversions at this level do not do any narrowing. Typically, this will include + implicit numeric conversions, Type.IsAssignableFrom, StringBuilder to string, etc. + + + + + Language defined prefered narrowing conversion. First level that introduces narrowing + conversions. + + + + + Language defined preferred narrowing conversion. Second level that introduces narrowing + conversions and should have more conversions than One. + + + + + Language defined preferred narrowing conversion. Third level that introduces narrowing + conversions and should have more conversions that Two. + + + + + A somewhat meaningful conversion is possible, but it will quite likely be lossy. + For eg. BigInteger to an Int32, Boolean to Int32, one-char string to a char, + larger number type to a smaller numeric type (where there is no overflow), etc + + + + + Builds the argument for an out argument when not passed a StrongBox. The out parameter + is returned as an additional return value. + + + + + Defines a method overload abstraction for the purpose of overload resolution. + It provides the overload resolver the metadata it needs to perform the resolution. + + + WARNING: This is a temporary API that will undergo breaking changes in future versions. + + + + + Null for constructors. + + + + + The method arity can vary, i.e. the method has params array or params dict parameters. + + + + + Represents a method overload that is bound to a . + + + Not thread safe. + WARNING: This is a temporary API that will undergo breaking changes in future versions. + + + + + Provides binding and overload resolution to .NET methods. + + MethodBinder's can be used for: + generating new AST code for calling a method + calling a method via reflection at runtime + (not implemented) performing an abstract call + + MethodBinder's support default arguments, optional arguments, by-ref (in and out), and keyword arguments. + + Implementation Details: + + The MethodBinder works by building up a CandidateSet for each number of effective arguments that can be + passed to a set of overloads. For example a set of overloads such as: + foo(object a, object b, object c) + foo(int a, int b) + + would have 2 target sets - one for 3 parameters and one for 2 parameters. For parameter arrays + we fallback and create the appropriately sized CandidateSet on demand. + + Each CandidateSet consists of a set of MethodCandidate's. Each MethodCandidate knows the flattened + parameters that could be received. For example for a function such as: + foo(params int[] args) + + When this method is in a CandidateSet of size 3 the MethodCandidate takes 3 parameters - all of them + ints; if it's in a CandidateSet of size 4 it takes 4 parameters. Effectively a MethodCandidate is + a simplified view that allows all arguments to be treated as required positional arguments. + + Each MethodCandidate in turn refers to a MethodTarget. The MethodTarget is composed of a set + of ArgBuilder's and a ReturnBuilder which know how to consume the positional arguments and pass + them to the appropriate argument of the destination method. This includes routing keyword + arguments to the correct position, providing the default values for optional arguments, etc... + + After binding is finished the MethodCandidates are thrown away and a BindingTarget is returned. + The BindingTarget indicates whether the binding was successful and if not any additional information + that should be reported to the user about the failed binding. It also exposes the MethodTarget which + allows consumers to get the flattened list of required parameters for the call. MethodCandidates + are not exposed and are an internal implementation detail of the MethodBinder. + + + + + Resolves a method overload and returns back a BindingTarget. + + The BindingTarget can then be tested for the success or particular type of + failure that prevents the method from being called. If successfully bound the BindingTarget + contains a list of argument meta-objects with additional restrictions that ensure the selection + of the particular overload. + + + + + Checks to see if the language allows named arguments to be bound to instance fields or + properties and turned into setters. By default this is only allowed on contructors. + + + + + Gets an expression that evaluates to the result of GetByRefArray operation. + + + + + Allow to bind an array/dictionary instance or a null reference to params array/dictionary parameter. + + + + + Called before arguments binding. + + + A bitmask that indicates (set bits) the parameters that were mapped by this method. + A default mapping will be constructed for the remaining parameters (cleared bits). + + + + + Return null if arguments cannot be constructed and overload resolution should produce an error. + + + + + Determines whether given overloads are overloaded on index-th parameter (the types of the index-th parameters are the same). + + + + + Selects the best (of two) candidates for conversion from actualType + + + + + Provides ordering for two parameter types if there is no conversion between the two parameter types. + + + + + The method is called each time an item of lazily splatted argument is needed. + + + + + Gets the next argument to consume. + + + + + Maps out parameters to return args and ref parameters to ones that don't accept StrongBox. + + + + + ParameterWrapper represents the logical view of a parameter. For eg. the byref-reduced signature + of a method with byref parameters will be represented using a ParameterWrapper of the underlying + element type, since the logical view of the byref-reduced signature is that the argument will be + passed by value (and the updated value is included in the return value). + + Contrast this with ArgBuilder which represents the real physical argument passed to the method. + + + + + ParameterInfo is not available. + + + + + True if the wrapper represents a params-array parameter (false for parameters created by expansion of a params-array). + + + + + True if the wrapper represents a params-dict parameter (false for parameters created by expansion of a params-dict). + + + + + Creates a parameter that represents an expanded item of params-array. + + + + + Builds the parameter for a params dictionary argument - this collects all the extra name/value + pairs provided to the function into a SymbolDictionary which is passed to the function. + + + + + An argument that the user wants to explicitly pass by-reference (with copy-in copy-out semantics). + The user passes a StrongBox[T] object whose value will get updated when the call returns. + + + + + True if there are restrictions beyond just simple type restrictions + + + + + Creates a ReturnBuilder + + the type the ReturnBuilder will leave on the stack + + + + Builds a parameter for a reference argument when a StrongBox has not been provided. The + updated return value is returned as one of the resulting return values. + + + + + SimpleArgBuilder produces the value produced by the user as the argument value. It + also tracks information about the original parameter and is used to create extended + methods for params arrays and param dictionary functions. + + + + + Parameter info is not available for this argument. + + + + + Type and whether the parameter is a params-array or params-dictionary is derived from info. + + + + + Gets the index of actual argument expression. + + + + + Gets the generic arguments for method based upon the constraints discovered during + type inference. Returns null if not all generic arguments had their types inferred. + + + + + Creates a new set of arg builders for the given generic method definition which target the new + parameters. + + + + + Creates a new list of ParameterWrappers for the generic method replacing the old parameters with the new ones. + + + + + Gets the generic type arguments sorted so that the type arguments + that are depended upon by other type arguments are sorted before + their dependencies. + + + + + Checks to see if the x type parameter is dependent upon the y type parameter. + + + + + Builds a mapping based upon generic parameter constraints between related generic + parameters. This is then used to sort the generic parameters so that we can process + the least dependent parameters first. For example given the method: + + void Foo{T0, T1}(T0 x, T1 y) where T0 : T1 + + We need to first infer the type information for T1 before we infer the type information + for T0 so that we can ensure the constraints are correct. + + + + + Returns a mapping from generic type parameter to the input DMOs which map to it. + + + + + Adds any additional ArgumentInputs entries for the given object and parameter type. + + + + + Walks the nested generic hierarchy to construct all of the generic parameters referred + to by this type. For example if getting the generic parameters for the x parameter on + the method: + + void Foo{T0, T1}(Dictionary{T0, T1} x); + + We would add both typeof(T0) and typeof(T1) to the list of generic arguments. + + + + + Maps a single type parameter to the possible parameters and DynamicMetaObjects + we can get inference from. For example for the signature: + + void Foo{T0, T1}(T0 x, T1 y, IList{T1} z); + + We would have one ArgumentInput for T0 which holds onto the DMO providing the argument + value for x. We would also have one ArgumentInput for T1 which holds onto the 2 DMOs + for y and z. Associated with y would be a GenericParameterInferer and associated with + z would be a ConstructedParameterInferer. + + + + + Provides generic type inference for a single parameter. + + + For example: + M{T}(T x) + M{T}(IList{T} x) + M{T}(ref T x) + M{T}(T[] x) + M{T}(ref Dictionary{T,T}[] x) + + + + + Provides generic type inference for a single parameter. + + + For example: + M{T}(T x) + M{T}(IList{T} x) + M{T}(ref T x) + M{T}(T[] x) + M{T}(ref Dictionary{T,T}[] x) + + + + + Checks if the constraints are violated by the given input for the specified generic method parameter. + + This method must be supplied with a mapping for any dependent generic method type parameters which + this one can be constrained to. For example for the signature "void Foo{T0, T1}(T0 x, T1 y) where T0 : T1". + we cannot know if the constraints are violated unless we know what we have calculated T1 to be. + + + + + Finds all occurences of genericParameter in openType and the corresponding concrete types in closedType. + Returns true iff all occurences of the generic parameter in the open type correspond to the same concrete type in the closed type + and this type satisfies given constraints. Returns the concrete type in match if so. + + + + + Implemented by DynamicMetaObject subclasses when the associated object + can participate in generic method type inference. This interface + is used when the inference engine is attempting to perform type inference + for a parameter which is typed to a delegate type. + + + + + Returns the type inferred for parameterType when performing + inference for a conversion to delegateType. + + + + + Provides information about the result of a custom object which dynamically infers back types. + Currently only used for invokable objects to feedback the types for a delegate type. + + + + + A tree rewriter which will find dynamic sites which consume dynamic sites and + turn them into a single combo dynamic site. The combo dynamic site will then run the + individual meta binders and produce the resulting code in a single dynamic site. + + + + + A reducible node which we use to generate the combo dynamic sites. Each time we encounter + a dynamic site we replace it with a ComboDynamicSiteExpression. When a child of a dynamic site + turns out to be a ComboDynamicSiteExpression we will then merge the child with the parent updating + the binding mapping info. If any of the inputs cause side effects then we'll stop the combination. + + + + + A binder which can combine multiple binders into a single dynamic site. The creator + of this needs to perform the mapping of parameters, constants, and sub-site expressions + and provide a List of BinderMappingInfo representing this data. From there the ComboBinder + just processes the list to create the resulting code. + + + + + Provides a mapping for inputs of combo action expressions. The input can map + to either an input of the new dynamic site, an input of a previous DynamicExpression, + or a ConstantExpression which has been pulled out of the dynamic site arguments. + + + + + Contains the mapping information for a single Combo Binder. This includes the original + meta-binder and the mapping of parameters, sub-sites, and constants into the binding. + + + + + Builds up a series of conditionals when the False clause isn't yet known. We can + keep appending conditions and if true's. Each subsequent true branch becomes the + false branch of the previous condition and body. Finally a non-conditional terminating + branch must be added. + + + + + Adds a new conditional and body. The first call this becomes the top-level + conditional, subsequent calls will have it added as false statement of the + previous conditional. + + + + + Adds the non-conditional terminating node. + + + + + Adds the non-conditional terminating node. + + + + + Gets the resulting meta object for the full body. FinishCondition + must have been called. + + + + + Adds a variable which will be scoped at the level of the final expression. + + + + + Determines the result of a conversion action. The result can either result in an exception, a value that + has been successfully converted or default(T), or a true/false result indicating if the value can be converted. + + + + + Attempts to perform available implicit conversions and throws if there are no available conversions. + + + + + Attempst to perform available implicit and explicit conversions and throws if there are no available conversions. + + + + + Attempts to perform available implicit conversions and returns default(ReturnType) if no conversions can be performed. + + If the return type of the rule is a value type then the return value will be zero-initialized. If the return type + of the rule is object or another class then the return type will be null (even if the conversion is to a value type). + This enables ImplicitTry to be used to do TryConvertTo even if the type is value type (and the difference between + null and a real value can be distinguished). + + + + + Attempts to perform available implicit and explicit conversions and returns default(ReturnType) if no conversions + can be performed. + + If the return type of the rule is a value type then the return value will be zero-initialized. If the return type + of the rule is object or another class then the return type will be null (even if the conversion is to a value type). + This enables ExplicitTry to be used to do TryConvertTo even if the type is value type (and the difference between + null and a real value can be distinguished). + + + + + A custom member tracker which enables languages to plug in arbitrary + members into the lookup process. + + + + + Provides binding semantics for a language. This include conversions as well as support + for producing rules for actions. These optimized rules are used for calling methods, + performing operators, and getting members using the ActionBinder's conversion semantics. + + + + + Checks if the conversion is to object and produces a target if it is. + + + + + Checks if any conversions are available and if so builds the target for that conversion. + + + + + Checks if the conversion can be handled by a simple cast. + + + + + Checks if the conversion can be handled by calling a user-defined conversion method. + + + + + Helper that checkes both types to see if either one defines the specified conversion + method. + + + + + Checks if any of the members of the MemberGroup provide the applicable conversion and + if so uses it to build a conversion rule. + + + + + Checks if the conversion is to applicable by extracting the value from Extensible of T. + + + + + Checks if there's an implicit numeric conversion for primitive data types. + + + + + Checks if there's a conversion to/from Nullable of T. + + + + + Checks to see if there's a conversion of null to a reference type + + + + + Helper to produce an error when a conversion cannot occur + + + + + Helper to produce a rule which just boxes a value type + + + + + Helper to produce a conversion rule by calling the helper method to do the convert + + + + + Helper to produce a conversion rule by calling the helper method to do the convert + + + + + Helper to produce a conversion rule by calling the method to do the convert. This version takes the parameter + to be passed to the conversion function and we call it w/ our own value or w/ our Extensible.Value. + + + + + Helper to wrap explicit conversion call into try/catch incase it throws an exception. If + it throws the default value is returned. + + + + + Helper to produce a rule when no conversion is required (the strong type of the expression + input matches the type we're converting to or has an implicit conversion at the IL level) + + + + + Helper to produce a rule when no conversion is required from an extensible type's + underlying storage to the type we're converting to. The type of extensible type + matches the type we're converting to or has an implicit conversion at the IL level. + + + + + Helper to extract the value from an Extensible of T + + + + + Helper to convert a null value to nullable of T + + + + + Helper to produce the rule for converting T to Nullable of T + + + + + Helper to produce the rule for converting T to Nullable of T + + + + + Returns a value which indicates failure when a OldConvertToAction of ImplicitTry or + ExplicitTry. + + + + + Helper to extract the Value of an Extensible of T from the + expression being converted. + + + + + Helper that checks if fromType is an Extensible of T or a subtype of + Extensible of T and if so returns the T. Otherwise it returns fromType. + + This is used to treat extensible types the same as their underlying types. + + + + + Creates a target which returns null for a reference type. + + + + + Provides a way for the binder to provide a custom error message when lookup fails. Just + doing this for the time being until we get a more robust error return mechanism. + + + + + Called when the user is accessing a protected or private member on a get. + + The default implementation allows access to the fields or properties using reflection. + + + + + Provides a way for the binder to provide a custom error message when lookup fails. Just + doing this for the time being until we get a more robust error return mechanism. + + + + if a member-injector is defined-on or registered-for this type call it + + + + Helper class for flowing information about the GetMember request. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed. + + The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being + returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing + so that it has an opportunity to perform custom boxing. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + Provides overload resolution and method binding for any calls which need to be performed for the GetMember. + + + Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed. + + The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being + returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing + so that it has an opportunity to perform custom boxing. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + An OverloadResolverFactory which can be used for performing overload resolution and method binding. + + + True if the operation should return Operation.Failed on failure, false if it + should return the exception produced by MakeMissingMemberError. + + + The meta object to be used if the get results in an error. + + + Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed. + + The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being + returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing + so that it has an opportunity to perform custom boxing. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + True if the operation should return Operation.Failed on failure, false if it + should return the exception produced by MakeMissingMemberError. + + + The meta object to be used if the get results in an error. + + + Returns a DynamicMetaObject which represents the value that will be returned when the member is accessed. + + The returned DynamicMetaObject may be strongly typed to a value type which needs boxing before being + returned from a standard DLR GetMemberBinder. The language is responsible for performing any boxing + so that it has an opportunity to perform custom boxing. + + + + if a member-injector is defined-on or registered-for this type call it + + + + Helper class for flowing information about the GetMember request. + + + + + Provides default binding for performing a call on the specified meta objects. + + The signature describing the call + The meta object to be called. + + Additional meta objects are the parameters for the call as specified by the CallSignature in the CallAction. + + A MetaObject representing the call or the error. + + + + Provides default binding for performing a call on the specified meta objects. + + The signature describing the call + The meta object to be called. + + Additional meta objects are the parameters for the call as specified by the CallSignature in the CallAction. + + Overload resolver factory. + A MetaObject representing the call or the error. + + + + Provides default binding for performing a call on the specified meta objects. + + The signature describing the call + The meta object to be called. + + Additional meta objects are the parameters for the call as specified by the CallSignature in the CallAction. + + Overload resolver factory. + The result should the object be uncallable. + A MetaObject representing the call or the error. + + + + Gets a TargetInfo object for performing a call on this object. + + If this object is a delegate we bind to the Invoke method. + If this object is a MemberGroup or MethodGroup we bind to the methods in the member group. + If this object is a BoundMemberTracker we bind to the methods with the bound instance. + If the underlying type has defined an operator Call method we'll bind to that method. + + + + + Binds to the methods in a method group. + + + + + Binds to the methods in a member group. + + TODO: We should really only have either MemberGroup or MethodGroup, not both. + + + + + Binds to the BoundMemberTracker and uses the instance in the tracker and restricts + based upon the object instance type. + + + + + Binds to the Invoke method on a delegate if this is a delegate type. + + + + + Attempts to bind to an operator Call method. + + + + + Encapsulates information about the target of the call. This includes an implicit instance for the call, + the methods that we'll be calling as well as any restrictions required to perform the call. + + + + + Performs binding against a set of overloaded methods using the specified arguments. The arguments are + consumed as specified by the CallSignature object. + + Overload resolver. + The methods to be called + A meta object which results from the call. + + + + Performs binding against a set of overloaded methods using the specified arguments. The arguments are + consumed as specified by the CallSignature object. + + Overload resolver. + The methods to be called + The name of the method or null to use the name from targets. + A meta object which results from the call. + + + + Performs binding against a set of overloaded methods using the specified arguments. The arguments are + consumed as specified by the CallSignature object. + + Overload resolver. + The methods to be called + Additional restrictions which should be applied to the resulting MetaObject. + A meta object which results from the call. + + + + Performs binding against a set of overloaded methods using the specified arguments. The arguments are + consumed as specified by the CallSignature object. + + Overload resolver. + The methods to be called + Additional restrictions which should be applied to the resulting MetaObject. + The name of the method or null to use the name from targets. + A meta object which results from the call. + + + + Performs binding against a set of overloaded methods using the specified arguments. The arguments are + consumed as specified by the CallSignature object. + + TODO. + TODO. + Overload resolver. + The methods to be called + Additional restrictions which should be applied to the resulting MetaObject. + The resulting binding target which can be used for producing error information. + The name of the method or null to use the name from targets. + A meta object which results from the call. + + + + Makes test for param arrays and param dictionary parameters. + + + + + Pulls out the right argument to build the splat test. MakeParamsTest makes the actual test. + + + + + Builds the restrictions for calling with a splatted argument array. Ensures that the + argument is still an ICollection of object and that it has the same number of arguments. + + + + + Builds the restrictions for calling with keyword arguments. The restrictions include + tests on the individual keys of the dictionary to ensure they have the same names. + + + + + Creates the MetaObject for indexing directly into arrays or indexing into objects which have + default members. Returns null if we're not an indexing operation. + + + + + Creates the MetaObject for indexing directly into arrays or indexing into objects which have + default members. Returns null if we're not an indexing operation. + + + + + Creates the meta object for the rest of the operations: comparisons and all other + ExpressionType. If the operation cannot be completed a MetaObject which indicates an + error will be returned. + + + + + Creates the meta object for the rest of the operations: comparisons and all other + ExpressionType. If the operation cannot be completed a MetaObject which indicates an + error will be returned. + + + + + Produces a rule for comparing a value to null - supports comparing object references and nullable types. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + The value being assigned to the target member. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + The value being assigned to the target member. + + + Provides overload resolution and method binding for any calls which need to be performed for the SetMember. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + The value being assigned to the target member. + + + Provides a DynamicMetaObject that is to be used as the result if the member cannot be set. If null then then a language + specific error code is provided by ActionBinder.MakeMissingMemberErrorForAssign which can be overridden by the language. + + + + + Builds a MetaObject for performing a member get. Supports all built-in .NET members, the OperatorMethod + GetBoundMember, and StrongBox instances. + + + The name of the member to retrieve. This name is not processed by the DefaultBinder and + is instead handed off to the GetMember API which can do name mangling, case insensitive lookups, etc... + + + The MetaObject from which the member is retrieved. + + + The value being assigned to the target member. + + + Provides overload resolution and method binding for any calls which need to be performed for the SetMember. + + + Provides a DynamicMetaObject that is to be used as the result if the member cannot be set. If null then then a language + specific error code is provided by ActionBinder.MakeMissingMemberErrorForAssign which can be overridden by the language. + + + + if a member-injector is defined-on or registered-for this type call it + + + + Returns true if the method should not be displayed in the stack frame. + + + + + Encapsulates information about the result that should be produced when + a OldDynamicAction cannot be performed. The ErrorInfo can hold one of: + an expression which creates an Exception to be thrown + an expression which produces a value which should be returned + directly to the user and represents an error has occured (for + example undefined in JavaScript) + an expression which produces a value which should be returned + directly to the user but does not actually represent an error. + + ErrorInfo's are produced by an ActionBinder in response to a failed + binding. + + + + + Private constructor - consumers must use static From* factories + to create ErrorInfo objects. + + + + + Creates a new ErrorInfo which represents an exception that should + be thrown. + + + + + Creates a new ErrorInfo which represents a value which should be + returned to the user. + + + + + Crates a new ErrorInfo which represents a value which should be returned + to the user but does not represent an error. + + + + + + + The ErrorInfo expression produces an exception + + + + + The ErrorInfo expression produces a value which represents the error (e.g. undefined) + + + + + The ErrorInfo expression produces a value which is not an error + + + + + A MetaObject which was produced as the result of a failed binding. + + + + + Doesn't need to check PrivateBinding setting: no method that is part of the event is public the entire event is private. + If the code has already a reference to the event tracker instance for a private event its "static-ness" is not influenced + by private-binding setting. + + + + + Gets the stub list for a COM Object. For COM objects we store the stub list + directly on the object using the Marshal APIs. This allows us to not have + any circular references to deal with via weak references which are challenging + in the face of COM. + + + + + Holds on a list of delegates hooked to the event. + We need the list because we cannot enumerate the delegates hooked to CLR event and we need to do so in + handler removal (we need to do custom delegate comparison there). If BCL enables the enumeration we could remove this. + + + + + Storage for the handlers - a key value pair of the callable object and the delegate handler. + + + + + Storage for the handlers - a key value pair of the callable object and the delegate handler. + + The delegate handler is closed over the callable object. Therefore as long as the object is alive the + delegate will stay alive and so will the callable object. That means it's fine to have a weak reference + to both of these objects. + + + + + Represents extension method. + + + + + Gets the declaring type of the extension method. Since this is an extension method, + the declaring type is in fact the type this extension method extends, + not Method.DeclaringType + + + + + Implemented by binders which support light exceptions. Dynamic objects + binding against a binder which implements this interface can check + SupportsLightThrow to see if the binder currently supports safely + returning a light exception. Light exceptions can be created with + LightException.Throw. + + Binders also need to implement GetlightBinder. This method + returns a new call site binder which may return light exceptions if + the binder supports them. + + + + + Returns true if a callsite binding against this binder can + return light exceptions. + + + + + Gets a binder which will support light exception if one is + available. + + + + + Interceptor prototype. The interceptor is a call site binder that wraps + a real call site binder and can perform arbitrary operations on the expression + trees that the wrapped binder produces: + * Dumping the trees + * Additional rewriting + * Static compilation + * ... + + + + + MemberGroups are a collection of MemberTrackers which are commonly produced + on-demand to talk about the available members. They can consist of a mix of + different member types or multiple membes of the same type. + + The most common source of MemberGroups is from ActionBinder.GetMember. From here + the DLR will perform binding to the MemberTrackers frequently producing the value + resulted from the user. If the result of the action produces a member it's self + the ActionBinder can provide the value exposed to the user via ReturnMemberTracker. + + ActionBinder provides default functionality for both getting members from a type + as well as exposing the members to the user. Getting members from the type maps + closely to reflection and exposing them to the user exposes the MemberTrackers + directly. + + + + + Specifies the action for which the default binder is requesting a member. + + + + + Represents a logical member of a type. The member could either be real concrete member on a type or + an extension member. + + This seperates the "physical" members that .NET knows exist on types from the members that + logically exist on a type. It also provides other abstractions above the level of .NET reflection + such as MemberGroups and NamespaceTracker's. + + It also provides a wrapper around the reflection APIs which cannot be extended from partial trust. + + + + + We ensure we only produce one MemberTracker for each member which logically lives on the declaring type. So + for example if you get a member from a derived class which is declared on the base class it should be the same + as getting the member from the base class. That’s easy enough until you get into extension members – here there + might be one extension member which is being applied to multiple types. Therefore we need to take into account the + extension type when ensuring that we only have 1 MemberTracker ever created. + + + + + The type of member tracker. + + + + + The logical declaring type of the member. + + + + + The name of the member. + + + + + Gets the expression that creates the value. + + Returns null if it's an error to get the value. The caller can then call GetErrorForGet to get + the correct error Expression (or null if they should provide a default). + + + + + Gets an expression that assigns a value to the left hand side. + + Returns null if it's an error to assign to. The caller can then call GetErrorForSet to + get the correct error Expression (or null if a default error should be provided). + + + + + Gets an expression that assigns a value to the left hand side. + + Returns null if it's an error to assign to. The caller can then call GetErrorForSet to + get the correct error Expression (or null if a default error should be provided). + + + + + Gets an expression that performs a call on the object using the specified arguments. + + Returns null if it's an error to perform the specific operation. The caller can then call + GetErrorsForDoCall to get the correct error Expression (or null if a default error should be provided). + + + + + Returns the error associated with getting the value. + + A null return value indicates that the default error message should be provided by the caller. + + + + + Returns the error associated with accessing this member via a bound instance. + + A null return value indicates that the default error message should be provided by the caller. + + + + + Helper for getting values that have been bound. Called from BoundMemberTracker. Custom member + trackers can override this to provide their own behaviors when bound to an instance. + + + + + Helper for setting values that have been bound. Called from BoundMemberTracker. Custom member + trackers can override this to provide their own behaviors when bound to an instance. + + + + + Helper for setting values that have been bound. Called from BoundMemberTracker. Custom member + trackers can override this to provide their own behaviors when bound to an instance. + + + + + Binds the member tracker to the specified instance rturning a new member tracker if binding + is possible. If binding is not possible the existing member tracker will be returned. For example + binding to a static field results in returning the original MemberTracker. Binding to an instance + field results in a new BoundMemberTracker which will get GetBoundValue/SetBoundValue to pass the + instance through. + + + + + MethodGroup's represent a unique collection of method's. Typically this + unique set is all the methods which are overloaded by the same name including + methods with different arity. These methods represent a single logically + overloaded element of a .NET type. + + The base DLR binders will produce MethodGroup's when provided with a MemberGroup + which contains only methods. The MethodGroup's will be unique instances per + each unique group of methods. + + + + + Returns a BuiltinFunction bound to the provided type arguments. Returns null if the binding + cannot be performed. + + + + + NamespaceTracker represent a CLS namespace. + + + + + Loads all the types from all assemblies that contribute to the current namespace (but not child namespaces) + + + + + Populates the tree with nodes for each part of the namespace + + + Full namespace name. It can be null (for top-level types) + + + + + As a fallback, so if the type does exist in any assembly. This would happen if a new type was added + that was not in the hardcoded list of types. + This code is not accurate because: + 1. We dont deal with generic types (TypeCollision). + 2. Previous calls to GetCustomMemberNames (eg. "from foo import *" in Python) would not have included this type. + 3. This does not deal with new namespaces added to the assembly + + + + + This stores all the public non-nested type names in a single namespace and from a single assembly. + This allows inspection of the namespace without eagerly loading all the types. Eagerly loading + types slows down startup, increases working set, and is semantically incorrect as it can trigger + TypeLoadExceptions sooner than required. + + + + + Marks a method as not having side effects. used by the combo binder + to allow calls to methods. + + + + + OperatorInfo provides a mapping from DLR ExpressionType to their associated .NET methods. + + + + + Given an operator returns the OperatorInfo associated with the operator or null + + + + + Gets the operator the OperatorInfo provides info for. + + + + + Gets the primary method name associated with the method. + This method name is usally in the form of op_Operator (e.g. op_Addition). + + + + + Gets the secondary method name associated with the method. + This method name is usually a standard .NET method name with pascal casing (e.g. Add). + + + + + Represents a logical Property as a member of a Type. This Property can either be a real + concrete Property on a type (implemented with a ReflectedPropertyTracker) or an extension + property (implemented with an ExtensionPropertyTracker). + + + + + Represents the top reflected package which contains extra information such as + all the assemblies loaded and the built-in modules. + + + + + returns the package associated with the specified namespace and + updates the associated module to mark the package as imported. + + + + + Ensures that the assembly is loaded + + + true if the assembly was loaded for the first time. + false if the assembly had already been loaded before + + + + When an (interop) assembly is loaded, we scan it to discover the GUIDs of COM interfaces so that we can + associate the type definition with COM objects with that GUID. + Since scanning all loaded assemblies can be expensive, in the future, we might consider a more explicit + user binder to trigger scanning of COM types. + + + + Specifies that the member is a constructor, representing a ConstructorTracker + + + Specifies that the member is an event, representing a EventTracker + + + Specifies that the member is a field, representing a FieldTracker + + + Specifies that the member is a method, representing a MethodTracker + + + Specifies that the member is a property, representing a PropertyTracker + + + Specifies that the member is a property, representing a TypeTracker + + + Specifies that the member is a namespace, representing a NamespaceTracker + + + Specifies that the member is a group of method overloads, representing a MethodGroup + + + Specifies that the member is a group of types that very by arity, representing a TypeGroup + + + Specifies that the member is a custom meber, represetning a CustomTracker + + + Specifies that the member is a bound to an instance, representing a BoundMemberTracker + + + + A TypeCollision is used when we have a collision between + two types with the same name. Currently this is only possible w/ generic + methods that should logically have arity as a portion of their name. For eg: + System.EventHandler and System.EventHandler[T] + System.Nullable and System.Nullable[T] + System.IComparable and System.IComparable[T] + + The TypeCollision provides an indexer but also is a real type. When used + as a real type it is the non-generic form of the type. + + The indexer allows the user to disambiguate between the generic and + non-generic versions. Therefore users must always provide additional + information to get the generic version. + + + + The merged list so far. Could be null + The new type(s) to add to the merged list + The merged list. Could be a TypeTracker or TypeGroup + + + Gets the arity of generic parameters + + + No non-generic type is represented by this group. + + + + This returns the DeclaringType of all the types in the TypeGroup + + + + + This returns the base name of the TypeGroup (the name shared by all types minus arity) + + + + + This will return the result only for the non-generic type if one exists, and will throw + an exception if all types in the TypeGroup are generic + + + + + This will return the result only for the non-generic type if one exists, and will throw + an exception if all types in the TypeGroup are generic + + + + + Enables implicit Type to TypeTracker conversions accross dynamic languages. + + + + + Factory methods. + + + + + Null coalescing expression + {result} ::= ((tmp = {_left}) == null) ? {right} : tmp + '??' operator in C#. + + + + + True coalescing expression. + {result} ::= IsTrue(tmp = {left}) ? {right} : tmp + Generalized AND semantics. + + + + + False coalescing expression. + {result} ::= IsTrue(tmp = {left}) ? tmp : {right} + Generalized OR semantics. + + + + + True coalescing expression. + {result} ::= IsTrue(tmp = {left}) ? {right} : tmp + Generalized AND semantics. + + + + + False coalescing expression. + {result} ::= IsTrue(tmp = {left}) ? tmp : {right} + Generalized OR semantics. + + + + + Wraps the given value in a WeakReference and returns a tree that will retrieve + the value from the WeakReference. + + + + + Creates a generator with type IEnumerable{T}, where T is the label.Type + + + + + + + + Creates new instance of the LambdaBuilder with the specified name and return type. + + Return type of the lambda being built. + Name for the lambda being built. + new LambdaBuilder instance + + + + The helper to create the AST method call node. Will add conversions (Utils.Convert) + to parameters and instance if necessary. + + + + + The helper to create the AST method call node. Will add conversions (Utils.Convert) + to parameters and instance if necessary. + + + + + The complex call helper to create the AST method call node. + Will add conversions (Expression.Convert()), deals with default parameter values and params arrays. + + + + + Converts an expression to a void type. + + An to convert to void. + An that has the property equal to and the and property set to void. + + + + Returns an expression that boxes a given value. Uses boxed objects cache for Int32 and Boolean types. + + + + + Determines whether specified expression type represents an assignment. + + + True if the expression type represents an assignment. + + + Note that some other nodes can also assign to variables, members or array items: + MemberInit, NewArrayInit, Call with ref params, New with ref params, Dynamic with ref params. + + + + + Determines if the left child of the given expression is read or written to or both. + + + + + Returns null if no expression was added into the builder. + If only a single expression was added returns it. + Otherwise returns a containing the expressions added to the builder. + + + + + If the number of items added to the builder is greater than 4 returns a read-only collection builder containing all the items. + Returns null otherwise. + + + + + Wrapping a tree in this node enables jumps from finally blocks + It does this by generating control-flow logic in the tree + + Reducing this node requires a full tree walk of its body + (but not nested lambdas) + + WARNING: this node cannot contain jumps across blocks, because it + assumes any unknown jumps are jumps to an outer scope. + + + + + The purpose of this rewriter is simple: ETs do not allow jumps (break, continue, return, goto) + that would go through a finally/fault. So we replace them with code that instead stores a flag, + and then jumps to the end of the finally/fault. At the end of the try-finally, we emit a switch + that then jumps to the correct label. + + A few things that make this more complicated: + + 1. If a finally contains a jump out, then jumps in the try/catch need to be replaced as well. + It's to support cases like this: + # returns 234 + def foo(): + try: return 123 + finally: return 234 + + We need to replace the "return 123" because after it jumps, we'll go to the finally, which + might decide to jump again, but once the IL finally exits, it ignores the finally jump and + keeps going with the original jump. The moral of the story is: if any jumps in finally are + rewritten, try/catch jumps must be also. + + 2. To generate better code, we only have one state variable, so if we have to jump out of + multiple finallys we just keep jumping. It looks sort of like this: + foo: + try { ... } finally { + try { ... } finally { + ... + if (...) { + // was: goto foo; + $flow = 1; goto endInnerFinally; + } + ... + endInnerFinally: + } + switch ($flow) { + case 1: goto endOuterFinally; + } + ... + endOuterFinally: + } + switch ($flow) { + case 1: $flow = 0; goto foo; + } + ... + + + + + + A parameterless generator, that is of type IEnumerable, IEnumerable{T}, + IEnumerator, or IEnumerator{T}. Its body can contain a series of + YieldExpressions. Each call into MoveNext on the enumerator reenters + the generator, and executes until it reaches a YieldReturn or YieldBreak + expression + + + + + The label used by YieldBreak and YieldReturn expressions to yield + from this generator + + + + + The body of the generator, which can contain YieldBreak and + YieldReturn expressions + + + + + Indicates whether the lhs instances are preserved when assignments + are made to expressions containing yields. + + + + + When finding a yield return or yield break, this rewriter flattens out + containing blocks, scopes, and expressions with stack state. All + scopes encountered have their variables promoted to the generator's + closure, so they survive yields. + + + + + Makes an assignment to this variable. Pushes the assignment as far + into the right side as possible, to allow jumps into it. + + + + + Returns true if the expression remains constant no matter when it is evaluated. + + + + + Implemented by expressions which can provide a version which is aware of light exceptions. + + Normally these expressions will simply reduce to a version which throws a real exception. + When the expression is used inside of a region of code which supports light exceptions + the light exception re-writer will call ReduceForLightExceptions. The expression can + then return a new expression which can return a light exception rather than throwing + a real .NET exception. + + + + + The builder for creating the LambdaExpression node. + + Since the nodes require that parameters and variables are created + before hand and then passed to the factories creating LambdaExpression + this builder keeps track of the different pieces and at the end creates + the LambdaExpression. + + TODO: This has some functionality related to CodeContext that should be + removed, in favor of languages handling their own local scopes + + + + + The name of the lambda. + Currently anonymous/unnamed lambdas are not allowed. + + + + + Return type of the lambda being created. + + + + + List of lambda's local variables for direct manipulation. + + + + + List of lambda's parameters for direct manipulation + + + + + The params array argument, if any. + + + + + The body of the lambda. This must be non-null. + + + + + The generated lambda should have dictionary of locals + instead of allocating them directly on the CLR stack. + + + + + The scope is visible (default). Invisible if false. + + + + + Creates a parameter on the lambda with a given name and type. + + Parameters maintain the order in which they are created, + however custom ordering is possible via direct access to + Parameters collection. + + + + + Creates a parameter on the lambda with a given name and type. + + Parameters maintain the order in which they are created, + however custom ordering is possible via direct access to + Parameters collection. + + + + + adds existing parameter to the lambda. + + Parameters maintain the order in which they are created, + however custom ordering is possible via direct access to + Parameters collection. + + + + + Creates a hidden parameter on the lambda with a given name and type. + + Parameters maintain the order in which they are created, + however custom ordering is possible via direct access to + Parameters collection. + + + + + Creates a params array argument on the labmda. + + The params array argument is added to the signature immediately. Before the lambda is + created, the builder validates that it is still the last (since the caller can modify + the order of parameters explicitly by maniuplating the parameter list) + + + + + Creates a local variable with specified name and type. + TODO: simplify by pushing logic into callers + + + + + Creates a local variable with specified name and type. + TODO: simplify by pushing logic into callers + + + + + Creates a temporary variable with specified name and type. + + + + + Adds the temporary variable to the list of variables maintained + by the builder. This is useful in cases where the variable is + created outside of the builder. + + + + + Creates the LambdaExpression from the builder. + After this operation, the builder can no longer be used to create other instances. + + Desired type of the lambda. + New LambdaExpression instance. + + + + Creates the LambdaExpression from the builder. + After this operation, the builder can no longer be used to create other instances. + + New LambdaExpression instance. + + + + Creates the generator LambdaExpression from the builder. + After this operation, the builder can no longer be used to create other instances. + + New LambdaExpression instance. + + + + Fixes up lambda body and parameters to match the signature of the given delegate if needed. + + + + + + Validates that the builder has enough information to create the lambda. + + + + + Provides a method call to a method which may return light exceptions. + + The call is to a method which supports light exceptions. When reducing + an additional check and throw is added. When a block code of is re-written + for light exceptions this instead reduces to not throw a .NET exception. + + + + + Internal re-writer class which creates code which is light exception aware. + + + + + Class used to be avoid overhead of creating expression trees when we're usually + + + + + Adds light exception handling to the provided expression which + is light exception aware. + + + + + Expression which produces a light exception value. This should be constructed + with the expression which creates the exception and this method will then call + a helper method which wraps the exception in our internal light exception class. + + + + + Represents either a YieldBreak or YieldReturn in a GeneratorExpression + If Value is non-null, it's a YieldReturn; otherwise it's a YieldBreak + and executing it will stop enumeration of the generator, causing + MoveNext to return false. + + + + + The value yieled from this expression, if it is a yield return + + + + + Gets the label used to yield from this generator + + + + + These are some generally useful helper methods. Currently the only methods are those to + cached boxed representations of commonly used primitive types so that they can be shared. + This is useful to most dynamic languages that use object as a universal type. + + The methods in RuntimeHelepers are caleld by the generated code. From here the methods may + dispatch to other parts of the runtime to get bulk of the work done, but the entry points + should be here. + + + + + Used by prologue code that is injected in lambdas to ensure that delegate signature matches what + lambda body expects. Such code typically unwraps subset of the params array manually, + but then passes the rest in bulk if lambda body also expects params array. + + This calls ArrayUtils.ShiftLeft, but performs additional checks that + ArrayUtils.ShiftLeft assumes. + + + + + A singleton boxed boolean true. + + + + + A singleton boxed boolean false. + + + + + Gets a singleton boxed value for the given integer if possible, otherwise boxes the integer. + + The value to box. + The boxed value. + + + + Helper method to create an instance. Work around for Silverlight where Activator.CreateInstance + is SecuritySafeCritical. + + TODO: Why can't we just emit the right thing for default(T)? + It's always null for reference types and it's well defined for value types + + + + + EventInfo.EventHandlerType getter is marked SecuritySafeCritical in CoreCLR + This method is to get to the property without using Reflection + + + + + + + Provides the test to see if an interpreted call site should switch over to being compiled. + + + + + Enables an object to be serializable to an Expression tree. The expression tree can then + be emitted into an assembly enabling the de-serialization of the object. + + + + + Wraps all arguments passed to a dynamic site with more arguments than can be accepted by a Func/Action delegate. + The binder generating a rule for such a site should unwrap the arguments first and then perform a binding to them. + + + + + Gets the number of items in _arguments that represent the arguments. + + + + + Helper methods that calls are generated to from the default DLR binders. + + + + + Helper function to combine an object array with a sequence of additional parameters that has been splatted for a function call. + + + + + EventInfo.EventHandlerType getter is marked SecuritySafeCritical in CoreCLR + This method is to get to the property without using Reflection + + + + + + + The MethodBinder will perform normal method binding. + + + + + The MethodBinder will return the languages definition of NotImplemented if the arguments are + incompatible with the signature. + + + + + The MethodBinder will set properties/fields for unused keyword arguments on the instance + that gets returned from the method. + + + + + The delegate representing the DLR Main function + + + + + Implements explicit casts supported by the runtime. + + + Implements explicit casts supported by the runtime. + + + + + Explicitly casts the object to a given type (and returns it as object) + + + + + Represents the context that is flowed for doing Compiler. Languages can derive + from this class to provide additional contextual information. + + + + + Gets the source unit currently being compiled in the CompilerContext. + + + + + Gets the sink for parser callbacks (e.g. brace matching, etc.). + + + + + Gets the current error sink. + + + + + Gets the compiler specific options. + + + + + Abstract base class used for optimized thread-safe dictionaries which have a set + of pre-defined string keys. + + Implementers derive from this class and override the GetExtraKeys, TrySetExtraValue, + and TryGetExtraValue methods. When looking up a value first the extra keys will be + searched using the optimized Try*ExtraValue functions. If the value isn't found there + then the value is stored in the underlying .NET dictionary. + + This dictionary can store object values in addition to string values. It also supports + null keys. + + + + + Gets a list of the extra keys that are cached by the the optimized implementation + of the module. + + + + + Try to set the extra value and return true if the specified key was found in the + list of extra values. + + + + + Try to get the extra value and returns true if the specified key was found in the + list of extra values. Returns true even if the value is Uninitialized. + + + + + Used as the value for the ScriptingRuntimeHelpers.GetDelegate method caching system + + + + + Generates stub to receive the CLR call and then call the dynamic language code. + + + + + Used as the key for the LanguageContext.GetDelegate method caching system + + + + + An attribute that is applied to saved ScriptCode's to be used to re-create the ScriptCode + from disk. + + + + + Gets names stored in optimized scope. + + + + + Provides a mechanism for providing documentation stored in an assembly as metadata. + + Applying this attribute will enable documentation to be provided to the user at run-time + even if XML Documentation files are unavailable. + + + + + Provides support for converting objects to delegates using the DLR binders + available by the provided language context. + + Primarily this supports converting objects implementing IDynamicMetaObjectProvider + to the appropriate delegate type. + + If the provided object is already a delegate of the appropriate type then the + delegate will simply be returned. + + + + + Creates a delegate with a given signature that could be used to invoke this object from non-dynamic code (w/o code context). + A stub is created that makes appropriate conversions/boxing and calls the object. + The stub should be executed within a context of this object's language. + + The converted delegate. + The object is either a subclass of Delegate but not the requested type or does not implement IDynamicMetaObjectProvider. + + + + Represents the type of a null value. + + + + + Private constructor is never called since 'null' is the only valid instance. + + + + + Updates an exception before it's getting re-thrown so + we can present a reasonable stack trace to the user. + + + + + Returns all the stack traces associates with an exception + + + + + Marks a class in the assembly as being an extension type for another type. + + + + + Marks a type in the assembly as being an extension type for another type. + + The type which is being extended + The type which provides the extension members. + + + + The type which contains extension members which are added to the type being extended. + + + + + The type which is being extended by the extension type. + + + + + Indicates that a DynamicMetaObject might be convertible to a CLR type. + + + + + Given an ID returns the object associated with that ID. + + + + + Gets a unique ID for an object + + + + + Goes over the hashtable and removes empty entries + + + + + Weak-ref wrapper caches the weak reference, our hash code, and the object ID. + + + + + WrapperComparer treats Wrapper as transparent envelope + + + + + Provides a list of all the members of an instance. + + + + + Indicates that a MetaObject is already representing a restricted type. Useful + when we're already restricted to a known type but this isn't captured in + the type info (e.g. the type is not sealed). + + + + + A useful interface for taking slices of numeric arrays, inspired by Python's Slice objects. + + + + + The starting index of the slice or null if no first index defined + + + + + The ending index of the slice or null if no ending index defined + + + + + The length of step to take + + + + + Internal class which binds a LanguageContext, StreamContentProvider, and Encoding together to produce + a TextContentProvider which reads binary data with the correct language semantics. + + + + + Provides support for light exceptions. These exceptions are propagated by + returning an instance of a private wrapper class containing the exception. Code + which is aware of light exceptions will branch to apporiate exception handling + blocks when in a try and otherwise return the value up the stack. This avoids + using the underlying CLR exception mechanism with overhead such as creating stack + traces. + + When a light exception reaches the boundary of code which is not light exception + aware the caller must check to see if a light exception is being thrown and if + so raise a .NET exception. + + This class provides methods for re-writing expression trees to support light exceptions, + methods to create light throw objects, check if an object is a light + throw object, and turn such an object back into a .NET Exception which can be thrown. + + Light exceptions also don't build up stack traces or interoperate with filter blocks + via 2-pass exception handling. + + + + + Rewrites the provided expression to support light exceptions. + + Calls to the returned expression, if not from other light-weight aware calls, + need to call GetLightException on return to see if an exception was thrown + and if so throw it. + + + + + Returns a new expression which will lazily reduce to a light + expression re-written version of the same expression. + + + + + Returns a new expression which is re-written for light exceptions + but will throw an exception if it escapes the expression. If this + expression is part of a larger experssion which is later re-written + for light exceptions then it will propagate the light exception up. + + + + + Returns an object which represents a light exception. + + + + + Returns an object which represents a light exception. + + + + + Returns an object which represents a light exception. + + + + + If the binder supports light exceptions then a light exception throwing expression is returned. + + Otherwise a normal throwing expression is returned. + + + + + If the binder supports light exceptions then a light exception throwing expression is returned. + + Otherwise a normal throwing expression is returned. + + + + + Throws the exception if the value represents a light exception + + + + + Wraps the expression in a check and rethrow. + + + + + Checks to see if the provided value is a light exception. + + + + + Gets the light exception from an object which may contain a light + exception. Returns null if the object is not a light exception. + + Used for throwing the exception at non-light exception boundaries. + + + + + Returns true if the call site binder is a light exception binder and supports + light throws. Returns false otherwise. + + + + + + + Sealed wrapper class to indicate something is a light exception. + + + + + Marks a method which may return a light exception. Such + methods need to have their return value checked and the exception + will need to be thrown if the caller is not light exception aware. + + + + + Creates a dictionary of locals in this scope + + + + + Returns Microsoft.Scripting.Runtime.DynamicNull if the object contains a null value, + otherwise, returns self.LimitType + + + + + Returns Microsoft.Scripting.Runtime.DynamicNull if the object contains a null value, + otherwise, returns self.RuntimeType + + + + + Event args for when a ScriptScope has had its contents changed. + + + + + Creates a new ModuleChangeEventArgs object with the specified name and type. + + + + + Creates a nwe ModuleChangeEventArgs with the specified name, type, and changed value. + + + + + Gets the name of the symbol that has changed. + + + + + Gets the way in which the symbol has changed: Set or Delete. + + + + + Gets the symbol has been set provides the new value. + + + + + The way in which a module has changed : Set or Delete + + + + + A new value has been set in the module (or a previous value has changed). + + + + + A value has been removed from the module. + + + + + A NullTextContentProvider to be provided when we have a pre-compiled ScriptCode which doesn't + have source code associated with it. + + + + + Singleton instance returned from an operator method when the operator method cannot provide a value. + + + + + Represents an ops-extension method which is added as an operator. + + The name must be a well-formed name such as "Add" that matches the CLS + naming conventions for adding overloads associated with op_* methods. + + + + + Efficiently tracks (line,column) information as text is added, and + collects line mappings between the original and generated source code + so we can generate correct debugging information later + + + + + Marks the current position of the writer as corresponding to the + original location passed in + + the line pragma corresponding to the + current position in the generated code + + + + Represents an ops-extension method which is used to implement a property. + + + + + Provides a cache of reflection members. Only one set of values is ever handed out per a + specific request. + + + + + TODO: Make me private again + + + + + Indicates an extension method should be added as a static method, not a instance method. + + + + + Sets the current position inside current token or one character behind it. + + + + + Sets the current position inside current token or one character behind it. + A relative displacement with respect to the current position in the token is specified. + + + + + Marks token end. Enables to read the current token. + + + + + Marks token start. It means the buffer can drop the current token. + Can be called even if no token has been read yet. + + + + + Reads till the end of line and returns the character that stopped the reading. + The returned character is not skipped. + + + + + Resizes an array to a speficied new size and copies a portion of the original array into its beginning. + + + + + Provides services for loading XAML and binding events to dynamic language code definitions. + + + + + Loads XAML from the specified stream and returns the deserialized object. Any event handlers + are bound to methods defined in the provided Scope and converted using the provided DynamicOperations + object. + + + + + Loads XAML from the specified filename and returns the deserialized object. Any event handlers + are bound to methods defined in the provided Scope and converted using the provided DynamicOperations + object. + + + + + Loads XAML from the specified XmlReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided Scope and converted using the provided DynamicOperations + object. + + + + + Loads XAML from the specified TextReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided Scope and converted using the provided DynamicOperations + object. + + + + + Loads XAML from the specified XamlXmlReader and returns the deserialized object. Any event handlers + are bound to methods defined in the provided Scope and converted using the provided DynamicOperations + object. + + + + + Returns the list of x:Name'd objects that we saw and should set on the root object. + + + + + Dummy, should never be called + + + + + Stores information needed to emit debugging symbol information for a + source file, in particular the file name and unique language identifier + + + + + Gets the source file name. + + + + + Gets the language's unique identifier, if any. + + + + + Gets the language vendor's unique identifier, if any. + + + + + ArgBuilder provides an argument value used by the MethodBinder. One ArgBuilder exists for each + physical parameter defined on a method. + + Contrast this with ParameterWrapper which represents the logical argument passed to the method. + + + + + Provides the Expression which provides the value to be passed to the argument. + + + + + Provides the Expression which provides the value to be passed to the argument. + This method is called when result is intended to be used ByRef. + + + + + Provides an Expression which will update the provided value after a call to the method. + May return null if no update is required. + + + + + Provides the implementation of performing AddAssign and SubtractAssign binary operations. + + The binder provided by the call site. + The handler for the operation. + The result of the operation. + true if the operation is complete, false if the call site should determine behavior. + + + + Adds a handler to an event. + + The handler to be added. + The original event with handler added. + + + + Removes handler from the event. + + The handler to be removed. + The original event with handler removed. + + + + Provides helper methods to bind COM objects dynamically. + + + + + Determines if an object is a COM object. + + The object to test. + true if the object is a COM object, false otherwise. + + + + Tries to perform binding of the dynamic get member operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + The new representing the result of the binding. + true if member evaluation may be delayed. + true if operation was bound successfully; otherwise, false. + + + + Tries to perform binding of the dynamic get member operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + The new representing the result of the binding. + true if operation was bound successfully; otherwise, false. + + + + Tries to perform binding of the dynamic set member operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + The representing the value for the set member operation. + The new representing the result of the binding. + true if operation was bound successfully; otherwise, false. + + + + Tries to perform binding of the dynamic invoke operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + An array of instances - arguments to the invoke member operation. + The new representing the result of the binding. + true if operation was bound successfully; otherwise, false. + + + + Tries to perform binding of the dynamic invoke member operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + An array of instances - arguments to the invoke member operation. + The new representing the result of the binding. + true if operation was bound successfully; otherwise, false. + + + + Tries to perform binding of the dynamic get index operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + An array of instances - arguments to the invoke member operation. + The new representing the result of the binding. + true if operation was bound successfully; otherwise, false. + + + + Tries to perform binding of the dynamic set index operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + An array of instances - arguments to the invoke member operation. + The representing the value for the set index operation. + The new representing the result of the binding. + true if operation was bound successfully; otherwise, false. + + + + Tries to perform binding of the dynamic Convert operation. + + An instance of the that represents the details of the dynamic operation. + The target of the dynamic operation. + The new representing the result of the binding. + true if operation was bound successfully; otherwise, false. + + + + Gets the member names associated with the object. + This function can operate only with objects for which returns true. + + The object for which member names are requested. + The collection of member names. + + + + Gets the member names of the data-like members associated with the object. + This function can operate only with objects for which returns true. + + The object for which member names are requested. + The collection of member names. + + + + Gets the data-like members and associated data for an object. + This function can operate only with objects for which returns true. + + The object for which data members are requested. + The enumeration of names of data members for which to retrieve values. + The collection of pairs that represent data member's names and their data. + + + + Special binder that indicates special semantics for COM GetMember operation. + + + + + This class implements an event sink for a particular RCW. + Unlike the implementation of events in TlbImp'd assemblies, + we will create only one event sink per RCW (theoretically RCW might have + several ComEventSink evenk sinks - but all these implement different source intefaces). + Each ComEventSink contains a list of ComEventSinkMethod objects - which represent + a single method on the source interface an a multicast delegate to redirect + the calls. Notice that we are chaining multicast delegates so that same + ComEventSinkMedhod can invoke multiple event handlers). + + ComEventSink implements an IDisposable pattern to Unadvise from the connection point. + Typically, when RCW is finalized the corresponding Dispose will be triggered by + ComEventSinksContainer finalizer. Notice that lifetime of ComEventSinksContainer + is bound to the lifetime of the RCW. + + + + + Contains a methods DISPID (in a string formatted of "[DISPID=N]" + and a chained list of delegates to invoke + + + + + ComEventSinkProxy class is responsible for handling QIs for sourceIid + on instances of ComEventSink. + + Background: When a COM even sink advises to a connection point it is + supposed to hand over the dispinterface. Now, some hosts will trust + the COM client to pass the correct pointer, but some will not. + E.g. Excel's implementation of Connection Points will not cause a + QI on the pointer that has been passed, however Word will QI the + pointer to return the required interface. + + ComEventSink does not, strongly speaking, implements the interface + that it claims to implement - it is just "faking" it by using IReflect. + Thus, Word's QIs on the pointer passed to ICP::Advise would fail. To + prevent this we take advangate of RealProxy's ability of + "dressing up" like other classes and hence successfully respond to QIs + for interfaces that it does not really support( it is OK to say + "I implement this interface" for event sinks only since the common + practice is to use IDistpach.Invoke when calling into event sinks). + + + + + ComEventSinksContainer is just a regular list with a finalizer. + This list is usually attached as a custom data for RCW object and + is finalized whenever RCW is finalized. + + + + + Layout of the IDispatch vtable + + + + + Invokes the object. If it falls back, just produce an error. + + + + + Splats the arguments to another nested dynamic site, which does the + real invocation of the IDynamicMetaObjectProvider. + + + + + Create a stub for the target of the optimized lopop. + + + + + + Gets expressions to access all the arguments. This includes the instance argument. + + + + + This is a helper class for runtime-callable-wrappers of COM instances. We create one instance of this type + for every generic RCW instance. + + + + + This is the factory method to get the ComObject corresponding to an RCW + + + + + + The parameter description of a method defined in a type library + + + + + Creates a representation for the paramter of a COM method + + + + + Creates a representation for the return value of a COM method + TODO: Return values should be represented by a different type + + + + + DBNull.Value if there is no default value + + + + + Look for typeinfo using IDispatch.GetTypeInfo + + + + Some COM objects just dont expose typeinfo. In these cases, this method will return null. + Some COM objects do intend to expose typeinfo, but may not be able to do so if the type-library is not properly + registered. This will be considered as acceptable or as an error condition depending on throwIfMissingExpectedTypeInfo + + + + + This method should be called when typeinfo is not available for an object. The function + will check if the typeinfo is expected to be missing. This can include error cases where + the same error is guaranteed to happen all the time, on all machines, under all circumstances. + In such cases, we just have to operate without the typeinfo. + + However, if accessing the typeinfo is failing in a transient way, we might want to throw + an exception so that we will eagerly predictably indicate the problem. + + + + + This class contains methods that either cannot be expressed in C#, or which require writing unsafe code. + Callers of these methods need to use them extremely carefully as incorrect use could cause GC-holes + and other problems. + + + + + + Ensure that "value" is a local variable in some caller's frame. So converting + the byref to an IntPtr is a safe operation. Alternatively, we could also allow + allowed "value" to be a pinned object. + + + + + We will emit an indirect call to an unmanaged function pointer from the vtable of the given interface pointer. + This approach can take only ~300 instructions on x86 compared with ~900 for Marshal.Release. We are relying on + the JIT-compiler to do pinvoke-stub-inlining and calling the pinvoke target directly. + + + + + We will emit an indirect call to an unmanaged function pointer from the vtable of the given IDispatch interface pointer. + It is not possible to express this in C#. Using an indirect pinvoke call allows us to do our own marshalling. + We can allocate the Variant arguments cheaply on the stack. We are relying on the JIT-compiler to do + pinvoke-stub-inlining and calling the pinvoke target directly. + The alternative of calling via a managed interface declaration of IDispatch would have a performance + penalty of going through a CLR stub that would have to re-push the arguments on the stack, etc. + Marshal.GetDelegateForFunctionPointer could be used here, but its too expensive (~2000 instructions on x86). + + + + + Cached information from a TLB. Only information that is required is saved. CoClasses are used + for event hookup. Enums are stored for accessing symbolic names from scripts. + + + + + Reads the latest registered type library for the corresponding GUID, + reads definitions of CoClass'es and Enum's from this library + and creates a IDynamicMetaObjectProvider that allows to instantiate coclasses + and get actual values for the enums. + + Type Library Guid + ComTypeLibDesc object + + + + Gets an ITypeLib object from OLE Automation compatible RCW , + reads definitions of CoClass'es and Enum's from this library + and creates a IDynamicMetaObjectProvider that allows to instantiate coclasses + and get actual values for the enums. + + OLE automation compatible RCW + ComTypeLibDesc object + + + + This represents a bound dispmember on a IDispatch object. + + + + + This is similar to ComTypes.EXCEPINFO, but lets us do our own custom marshaling + + + + + An object that implements IDispatch + + This currently has the following issues: + 1. If we prefer ComObjectWithTypeInfo over IDispatchComObject, then we will often not + IDispatchComObject since implementations of IDispatch often rely on a registered type library. + If we prefer IDispatchComObject over ComObjectWithTypeInfo, users get a non-ideal experience. + 2. IDispatch cannot distinguish between properties and methods with 0 arguments (and non-0 + default arguments?). So obj.foo() is ambiguous as it could mean invoking method foo, + or it could mean invoking the function pointer returned by property foo. + We are attempting to find whether we need to call a method or a property by examining + the ITypeInfo associated with the IDispatch. ITypeInfo tell's use what parameters the method + expects, is it a method or a property, what is the default property of the object, how to + create an enumerator for collections etc. + 3. IronPython processes the signature and converts ref arguments into return values. + However, since the signature of a DispMethod is not available beforehand, this conversion + is not possible. There could be other signature conversions that may be affected. How does + VB6 deal with ref arguments and IDispatch? + + We also support events for IDispatch objects: + Background: + COM objects support events through a mechanism known as Connect Points. + Connection Points are separate objects created off the actual COM + object (this is to prevent circular references between event sink + and event source). When clients want to sink events generated by + COM object they would implement callback interfaces (aka source + interfaces) and hand it over (advise) to the Connection Point. + + Implementation details: + When IDispatchComObject.TryGetMember request is received we first check + whether the requested member is a property or a method. If this check + fails we will try to determine whether an event is requested. To do + so we will do the following set of steps: + 1. Verify the COM object implements IConnectionPointContainer + 2. Attempt to find COM object's coclass's description + a. Query the object for IProvideClassInfo interface. Go to 3, if found + b. From object's IDispatch retrieve primary interface description + c. Scan coclasses declared in object's type library. + d. Find coclass implementing this particular primary interface + 3. Scan coclass for all its source interfaces. + 4. Check whether to any of the methods on the source interfaces matches + the request name + + Once we determine that TryGetMember requests an event we will return + an instance of BoundDispEvent class. This class has InPlaceAdd and + InPlaceSubtract operators defined. Calling InPlaceAdd operator will: + 1. An instance of ComEventSinksContainer class is created (unless + RCW already had one). This instance is hanged off the RCW in attempt + to bind the lifetime of event sinks to the lifetime of the RCW itself, + meaning event sink will be collected once the RCW is collected (this + is the same way event sinks lifetime is controlled by PIAs). + Notice: ComEventSinksContainer contains a Finalizer which will go and + unadvise all event sinks. + Notice: ComEventSinksContainer is a list of ComEventSink objects. + 2. Unless we have already created a ComEventSink for the required + source interface, we will create and advise a new ComEventSink. Each + ComEventSink implements a single source interface that COM object + supports. + 3. ComEventSink contains a map between method DISPIDs to the + multicast delegate that will be invoked when the event is raised. + 4. ComEventSink implements IReflect interface which is exposed as + custom IDispatch to COM consumers. This allows us to intercept calls + to IDispatch.Invoke and apply custom logic - in particular we will + just find and invoke the multicast delegate corresponding to the invoked + dispid. + + + + + ArgBuilder which always produces null. + + + + + SimpleArgBuilder produces the value produced by the user as the argument value. It + also tracks information about the original parameter and is used to create extended + methods for params arrays and param dictionary functions. + + + + + If a managed user type (as opposed to a primitive type or a COM object) is passed as an argument to a COM call, we need + to determine the VarEnum type we will marshal it as. We have the following options: + 1. Raise an exception. Languages with their own version of primitive types would not be able to call + COM methods using the language's types (for eg. strings in IronRuby are not System.String). An explicit + cast would be needed. + 2. We could marshal it as VT_DISPATCH. Then COM code will be able to access all the APIs in a late-bound manner, + but old COM components will probably malfunction if they expect a primitive type. + 3. We could guess which primitive type is the closest match. This will make COM components be as easily + accessible as .NET methods. + 4. We could use the type library to check what the expected type is. However, the type library may not be available. + + VarEnumSelector implements option # 3 + + + + + Gets the managed type that an object needs to be coverted to in order for it to be able + to be represented as a Variant. + + In general, there is a many-to-many mapping between Type and VarEnum. However, this method + returns a simple mapping that is needed for the current implementation. The reason for the + many-to-many relation is: + 1. Int32 maps to VT_I4 as well as VT_ERROR, and Decimal maps to VT_DECIMAL and VT_CY. However, + this changes if you throw the wrapper types into the mix. + 2. There is no Type to represent COM types. __ComObject is a private type, and Object is too + general. + + + + + Creates a family of COM types such that within each family, there is a completely non-lossy + conversion from a type to an earlier type in the family. + + + + + Get the (one representative type for each) primitive type families that the argument can be converted to + + + + + If there is more than one type family that the argument can be converted to, we will throw a + AmbiguousMatchException instead of randomly picking a winner. + + + + + Is there a unique primitive type that has the best conversion for the argument + + + + + Get the COM Variant type that argument should be marshaled as for a call to COM + + + + + Variant is the basic COM type for late-binding. It can contain any other COM data type. + This type definition precisely matches the unmanaged data layout so that the struct can be passed + to and from COM calls. + + + + + Primitive types are the basic COM types. It includes valuetypes like ints, but also reference types + like BStrs. It does not include composite types like arrays and user-defined COM types (IUnknown/IDispatch). + + + + + Get the managed object representing the Variant. + + + + + + Release any unmanaged memory associated with the Variant + + + + + + VariantBuilder handles packaging of arguments into a Variant for a call to IDispatch.Invoke + + + + + Strongly-typed and parameterized string factory. + + + Strongly-typed and parameterized string factory. + + + + + A string like "COM object is expected." + + + + + A string like "Cannot perform call." + + + + + A string like "COM object does not support events." + + + + + A string like "COM object does not support specified source interface." + + + + + A string like "Marshal.SetComObjectData failed." + + + + + A string like "This method exists only to keep the compiler happy." + + + + + A string like "Unexpected VarEnum {0}." + + + + + A string like "Error while invoking {0}." + + + + + A string like "Error while invoking {0}." + + + + + A string like "Error while invoking {0}. Named arguments are not supported." + + + + + A string like "Error while invoking {0}." + + + + + A string like "Could not convert argument {0} for call to {1}." + + + + + A string like "Error while invoking {0}. A required parameter was omitted." + + + + + A string like "ResolveComReference.CannotRetrieveTypeInformation." + + + + + A string like "IDispatch::GetIDsOfNames behaved unexpectedly for {0}." + + + + + A string like "Attempting to wrap an unsupported enum type." + + + + + A string like "Attempting to pass an event handler of an unsupported type." + + + + + A string like "Could not get dispatch ID for {0} (error: {1})." + + + + + A string like "There are valid conversions from {0} to {1}." + + + + + A string like "Variant.GetAccessor cannot handle {0}." + + + + + A string like "Cannot access member {1} declared on type {0} because the type contains generic parameters." + + + + + A string like "Type '{0}' is missing or cannot be loaded." + + + + + A string like "static property "{0}" of "{1}" can only be read through a type, not an instance" + + + + + A string like "static property "{0}" of "{1}" can only be assigned to through a type, not an instance" + + + + + A string like "Method precondition violated" + + + + + A string like "Invalid argument value" + + + + + A string like "Non-empty string required" + + + + + A string like "Non-empty collection required" + + + + + A string like "must by an Exception instance" + + + + + A string like "Type of test must be bool" + + + + + A string like "Type of the expression must be bool" + + + + + A string like "Empty string is not a valid path." + + + + + A string like "Invalid delegate type (Invoke method not found)." + + + + + A string like "expected only static property" + + + + + A string like "Property doesn't exist on the provided type" + + + + + A string like "Field doesn't exist on provided type" + + + + + A string like "Type doesn't have constructor with a given signature" + + + + + A string like "Type doesn't have a method with a given name." + + + + + A string like "Type doesn't have a method with a given name and signature." + + + + + A string like "Count must be non-negative." + + + + + A string like "arrayType must be an array type" + + + + + A string like "Either code or target must be specified." + + + + + A string like "Type parameter is {0}. Expected a delegate." + + + + + A string like "Cannot cast from type '{0}' to type '{1}" + + + + + A string like "unknown member type: '{0}'. " + + + + + A string like "RuleBuilder can only be used with delegates whose first argument is CallSite." + + + + + A string like "no instance for call." + + + + + A string like "Missing Test." + + + + + A string like "Missing Target." + + + + + A string like "The operation requires a non-generic type for {0}, but this represents generic types only" + + + + + A string like "Invalid operation: '{0}'" + + + + + A string like "Finally already defined." + + + + + A string like "Can not have fault and finally." + + + + + A string like "Fault already defined." + + + + + A string like "Cannot create default value for type {0}." + + + + + A string like "Unhandled convert: {0}" + + + + + A string like "{0}.{1} has no publiclly visible method." + + + + + A string like "Global/top-level local variable names must be unique." + + + + + A string like "Generating code from non-serializable CallSiteBinder." + + + + + A string like "Specified path is invalid." + + + + + A string like "Dictionaries are not hashable." + + + + + A string like "language already registered." + + + + + A string like "The method or operation is not implemented." + + + + + A string like "No exception." + + + + + A string like "Extension type {0} must be public." + + + + + A string like "Already initialized." + + + + + A string like "CreateScopeExtension must return a scope extension." + + + + + A string like "Invalid number of parameters for the service." + + + + + A string like "Invalid type of argument {0}; expecting {1}." + + + + + A string like "Cannot change non-caching value." + + + + + A string like "Field {0} is read-only" + + + + + A string like "Property {0} is read-only" + + + + + A string like "Expected event from {0}.{1}, got event from {2}.{3}." + + + + + A string like "expected bound event, got {0}." + + + + + A string like "Expected type {0}, got {1}." + + + + + A string like "can only write to member {0}." + + + + + A string like "No code to compile." + + + + + A string like "Invalid stream type: {0}." + + + + + A string like "Queue empty." + + + + + A string like "Enumeration has not started. Call MoveNext." + + + + + A string like "Enumeration already finished." + + + + + A string like "can't add another casing for identifier {0}" + + + + + A string like "can't add new identifier {0}" + + + + + A string like "Type '{0}' doesn't provide a suitable public constructor or its implementation is faulty: {1}" + + + + + A string like "Invalid output directory." + + + + + A string like "Invalid assembly name or file extension." + + + + + A string like "Cannot emit constant {0} ({1})" + + + + + A string like "No implicit cast from {0} to {1}" + + + + + A string like "No explicit cast from {0} to {1}" + + + + + A string like "name '{0}' not defined" + + + + + A string like "No default value for a given type." + + + + + A string like "Specified language provider type is not registered." + + + + + A string like "can't read from property" + + + + + A string like "can't write to property" + + + + + A string like "Cannot create instance of {0} because it contains generic parameters" + + + + + A string like "Non-verifiable assembly generated: {0}:\nAssembly preserved as {1}\nError text:\n{2}\n" + + + + + Strongly-typed and parameterized exception factory. + + + Strongly-typed and parameterized exception factory. + + + + + ArgumentException with message like "COM object does not support events." + + + + + ArgumentException with message like "COM object does not support specified source interface." + + + + + InvalidOperationException with message like "Marshal.SetComObjectData failed." + + + + + InvalidOperationException with message like "This method exists only to keep the compiler happy." + + + + + InvalidOperationException with message like "Unexpected VarEnum {0}." + + + + + System.Reflection.TargetParameterCountException with message like "Error while invoking {0}." + + + + + MissingMemberException with message like "Error while invoking {0}." + + + + + ArgumentException with message like "Error while invoking {0}. Named arguments are not supported." + + + + + OverflowException with message like "Error while invoking {0}." + + + + + ArgumentException with message like "Could not convert argument {0} for call to {1}." + + + + + ArgumentException with message like "Error while invoking {0}. A required parameter was omitted." + + + + + InvalidOperationException with message like "ResolveComReference.CannotRetrieveTypeInformation." + + + + + ArgumentException with message like "IDispatch::GetIDsOfNames behaved unexpectedly for {0}." + + + + + InvalidOperationException with message like "Attempting to wrap an unsupported enum type." + + + + + InvalidOperationException with message like "Attempting to pass an event handler of an unsupported type." + + + + + MissingMemberException with message like "Could not get dispatch ID for {0} (error: {1})." + + + + + System.Reflection.AmbiguousMatchException with message like "There are valid conversions from {0} to {1}." + + + + + NotImplementedException with message like "Variant.GetAccessor cannot handle {0}." + + + + + ArgumentException with message like "Either code or target must be specified." + + + + + InvalidOperationException with message like "Type parameter is {0}. Expected a delegate." + + + + + InvalidOperationException with message like "Cannot cast from type '{0}' to type '{1}" + + + + + InvalidOperationException with message like "unknown member type: '{0}'. " + + + + + InvalidOperationException with message like "RuleBuilder can only be used with delegates whose first argument is CallSite." + + + + + InvalidOperationException with message like "no instance for call." + + + + + InvalidOperationException with message like "Missing Test." + + + + + InvalidOperationException with message like "Missing Target." + + + + + TypeLoadException with message like "The operation requires a non-generic type for {0}, but this represents generic types only" + + + + + ArgumentException with message like "Invalid operation: '{0}'" + + + + + InvalidOperationException with message like "Finally already defined." + + + + + InvalidOperationException with message like "Can not have fault and finally." + + + + + InvalidOperationException with message like "Fault already defined." + + + + + ArgumentException with message like "Cannot create default value for type {0}." + + + + + ArgumentException with message like "Unhandled convert: {0}" + + + + + InvalidOperationException with message like "{0}.{1} has no publiclly visible method." + + + + + ArgumentException with message like "Global/top-level local variable names must be unique." + + + + + ArgumentException with message like "Generating code from non-serializable CallSiteBinder." + + + + + ArgumentException with message like "Specified path is invalid." + + + + + ArgumentTypeException with message like "Dictionaries are not hashable." + + + + + InvalidOperationException with message like "language already registered." + + + + + NotImplementedException with message like "The method or operation is not implemented." + + + + + InvalidOperationException with message like "No exception." + + + + + ArgumentException with message like "Extension type {0} must be public." + + + + + InvalidOperationException with message like "Already initialized." + + + + + InvalidImplementationException with message like "CreateScopeExtension must return a scope extension." + + + + + ArgumentException with message like "Invalid number of parameters for the service." + + + + + ArgumentException with message like "Invalid type of argument {0}; expecting {1}." + + + + + ArgumentException with message like "Cannot change non-caching value." + + + + + MissingMemberException with message like "Field {0} is read-only" + + + + + MissingMemberException with message like "Property {0} is read-only" + + + + + ArgumentException with message like "Expected event from {0}.{1}, got event from {2}.{3}." + + + + + ArgumentTypeException with message like "expected bound event, got {0}." + + + + + ArgumentTypeException with message like "Expected type {0}, got {1}." + + + + + MemberAccessException with message like "can only write to member {0}." + + + + + InvalidOperationException with message like "No code to compile." + + + + + ArgumentException with message like "Invalid stream type: {0}." + + + + + InvalidOperationException with message like "Queue empty." + + + + + InvalidOperationException with message like "Enumeration has not started. Call MoveNext." + + + + + InvalidOperationException with message like "Enumeration already finished." + + + + + InvalidOperationException with message like "can't add another casing for identifier {0}" + + + + + InvalidOperationException with message like "can't add new identifier {0}" + + + + + ArgumentException with message like "Invalid output directory." + + + + + ArgumentException with message like "Invalid assembly name or file extension." + + + + + ArgumentException with message like "Cannot emit constant {0} ({1})" + + + + + ArgumentException with message like "No implicit cast from {0} to {1}" + + + + + ArgumentException with message like "No explicit cast from {0} to {1}" + + + + + MissingMemberException with message like "name '{0}' not defined" + + + + + ArgumentException with message like "No default value for a given type." + + + + + ArgumentException with message like "Specified language provider type is not registered." + + + + + InvalidOperationException with message like "can't read from property" + + + + + InvalidOperationException with message like "can't write to property" + + + + + ArgumentException with message like "Cannot create instance of {0} because it contains generic parameters" + + + + + System.Security.VerificationException with message like "Non-verifiable assembly generated: {0}:\nAssembly preserved as {1}\nError text:\n{2}\n" + + + + + Used by compilers to provide additional debug information about LambdaExpression to DebugContext + + + + + Implemented by compilers to allow the traceback engine to get additional information. + + + + + Provides services to compilers for instrumenting code with tracebacks. + + + + + Creates a new instance of DebugContext + + + + + Transforms a LambdaExpression to a debuggable LambdaExpression + + + + + Transforms a LambdaExpression to a debuggable LambdaExpression + + + + + Resets a state associated with a source file that's maintained in the DebugContext + + + + + Threads + + + + + Hook + + + + + Thread + + + + + FrameOrder + + + + + Variables + + + + + CurrentSequencePointIndex + + + + + // This method is called from the generator to update the frame with generator's locals + + + + + Remaps the frame's state to use the generator for execution. + + Int32.MaxValue to map to latest version + + + + DebuggableLambdaBuilder is used to transform a DLR expression tree into a debuggable lambda expression. + + + + + Used to wrap a lambda that was already a generator prior to transform. + + + + + Used to rewrite expressions containing DebugInfoExpressions. + + + + + Combines source file and span. Also provides Contains and Intersects functionality. + + + + + Implementation of IDebugRuntimeVariables, which wraps IRuntimeVariables + FunctionInfo/DebugMarker + + + + + Default implementation of BaseDebugThread, which uses DLR's RuntimeVariablesExpression for lifting locals. + + + + + Default implementation of IDebugThreadFactory, which uses DLR's RuntimeVariablesExpression for lifting locals. + + + + + SequencePoints + + + + + Gets the name. + + + + + Gets the custom payload. + + + + + GetTraceLocations + + + + + + Callback that is fired by the traceback engine + + + + + Used to extract locals information from expressions. + + + + + Strongly-typed and parameterized string factory. + + + + + IDebugRuntimeVariables is used to wrap IRuntimeVariables and add properties for retrieving + FunctionInfo and DebugMarker from debuggable labmdas. + + + + + IDebugThreadFactory is used to abstract how frames and local variables are maintained at run/debug time. + + + + + Implements IRuntimeVariables in a way that preserves scoping within the lambda. + + + + + TraceSession. + + Basically holds a list of last encountered DebugFrame instances + (one per running thread). + + + + + Used to provide information about locals/parameters at debug time. + + + + + Index within byref variables list or within strongbox variables list. + + + + + Index within the combined list. + + + + + Gets the variable type. + + + + + Gets the name. + + + + + Gets or sets a value indicating whether it is a parameter. + + + + + This class holds onto internal debugging options used in this assembly. + These options can be set via environment variables DLR_{option-name}. + Boolean options map "true" to true and other values to false. + + These options are for internal debugging only, and should not be + exposed through any public APIs. + + + + + True if the MethodBase is method which is going to construct an object + + + + + Returns the System.Type for any object, including null. The type of null + is represented by None.Type and all other objects just return the + result of Object.GetType + + + + + Simply returns a Type[] from calling GetType on each element of args. + + + + + EMITTED + Used by default method binder to check types of splatted arguments. + + + + + Given a MethodInfo which may be declared on a non-public type this attempts to + return a MethodInfo which will dispatch to the original MethodInfo but is declared + on a public type. + + Returns the original method if the method if a public version cannot be found. + + + + + Non-public types can have public members that we find when calling type.GetMember(...). This + filters out the non-visible members by attempting to resolve them to the correct visible type. + + If no correct visible type can be found then the member is not visible and we won't call it. + + + + + Sees if two MemberInfos point to the same underlying construct in IL. This + ignores the ReflectedType property which exists on MemberInfos which + causes direct comparisons to be false even if they are the same member. + + + + + Returns a value which indicates failure when a OldConvertToAction of ImplicitTry or + ExplicitTry. + + + + + Creates an interpreted delegate for the lambda. + + The lambda to compile. + A delegate which can interpret the lambda. + + + + Creates an interpreted delegate for the lambda. + + The lambda to compile. + The number of iterations before the interpreter starts compiling + A delegate which can interpret the lambda. + + + + Creates an interpreted delegate for the lambda. + + The lambda's delegate type. + The lambda to compile. + A delegate which can interpret the lambda. + + + + Creates an interpreted delegate for the lambda. + + The lambda to compile. + The number of iterations before the interpreter starts compiling + A delegate which can interpret the lambda. + + + + Compiles the lambda into a method definition. + + the lambda to compile + A which will be used to hold the lambda's IL. + A parameter that indicates if debugging information should be emitted to a PDB symbol store. + + + + Compiles the LambdaExpression. + + If the lambda is compiled with emitDebugSymbols, it will be + generated into a TypeBuilder. Otherwise, this method is the same as + calling LambdaExpression.Compile() + + This is a workaround for a CLR limitiation: DynamicMethods cannot + have debugging information. + + the lambda to compile + true to generate a debuggable method, false otherwise + the compiled delegate + + + + Compiles the LambdaExpression, emitting it into a new type, and + optionally making it debuggable. + + This is a workaround for a CLR limitiation: DynamicMethods cannot + have debugging information. + + the lambda to compile + Debugging information generator used by the compiler to mark sequence points and annotate local variables. + True if debug symbols (PDBs) are emitted by the . + the compiled delegate + + + + Removes all live objects and places them in static fields of a type. + + + + + Reduces the provided DynamicExpression into site.Target(site, *args). + + + + + Tests to see if the expression is a constant with the given value. + + The expression to examine + The constant value to check for. + true/false + + + + Tests to see if the expression is a constant with the given value. + + The expression to examine + The constant value to check for. + true/false + + + + Provides a simple expression which enables embedding FieldBuilder's + in an AST before the type is complete. + + + + + Begins a catch block. + + + + + Begins an exception block for a filtered exception. + + + + + Begins an exception block for a non-filtered exception. + + + + + + Begins an exception fault block + + + + + Begins a finally block + + + + + Ends an exception block. + + + + + Begins a lexical scope. + + + + + Ends a lexical scope. + + + + + Declares a local variable of the specified type. + + + + + Declares a local variable of the specified type, optionally + pinning the object referred to by the variable. + + + + + Declares a new label. + + + + + Marks the label at the current position. + + + + + Emits an instruction. + + + + + Emits an instruction with a byte argument. + + + + + Emits an instruction with the metadata token for the specified contructor. + + + + + Emits an instruction with a double argument. + + + + + Emits an instruction with the metadata token for the specified field. + + + + + Emits an instruction with a float argument. + + + + + Emits an instruction with an int argument. + + + + + Emits an instruction with a label argument. + + + + + Emits an instruction with multiple target labels (switch). + + + + + Emits an instruction with a reference to a local variable. + + + + + Emits an instruction with a long argument. + + + + + Emits an instruction with the metadata token for a specified method. + + + + + Emits an instruction with a signed byte argument. + + + + + Emits an instruction with a short argument. + + + + + Emits an instruction with a signature token. + + + + + Emits an instruction with a string argument. + + + + + Emits an instruction with the metadata token for a specified type argument. + + + + + Emits a call or a virtual call to the varargs method. + + + + + Emits an unmanaged indirect call instruction. + + + + + Emits a managed indirect call instruction. + + + + + Marks a sequence point. + + + + + Specifies the namespace to be used in evaluating locals and watches for the + current active lexical scope. + + + + + Emits a Ldind* instruction for the appropriate type + + + + + Emits a Stind* instruction for the appropriate type. + + + + + Emits a Stelem* instruction for the appropriate type. + + + + + Boxes the value of the stack. No-op for reference types. Void is + converted to a null reference. For almost all value types this + method will box them in the standard way. Int32 and Boolean are + handled with optimized conversions that reuse the same object for + small values. For Int32 this is purely a performance optimization. + For Boolean this is use to ensure that True and False are always + the same objects. + + + + + Emits an array of constant values provided in the given list. + The array is strongly typed. + + + + + Emits an array of values of count size. The items are emitted via the callback + which is provided with the current item index to emit. + + + + + Emits an array construction code. + The code assumes that bounds for all dimensions + are already emitted. + + + + + Emits default(T) + Semantics match C# compiler behavior + + + + + A simple dictionary of queues, keyed off a particular type + This is useful for storing free lists of variables + + + + + Helper class to remove methods w/ identical signatures. Used for GetDefaultMembers + which returns members from all types in the hierarchy. + + + + + Directory where snippet assembly will be saved if SaveSnippets is set. + + + + + Save snippets to an assembly (see also SnippetsDirectory, SnippetsFileName). + + + + + Serializes constants and dynamic sites so the code can be saved to disk + + + + + Gets the Compiler associated with the Type Initializer (cctor) creating it if necessary. + + + + + Command line hosting service. + + + + + Scope is not remotable, and this only works in the same AppDomain. + + + + + Executes the comand line - depending upon the options provided we will + either run a single file, a single command, or enter the interactive loop. + + + + + Runs the command line. Languages can override this to provide custom behavior other than: + 1. Running a single command + 2. Running a file + 3. Entering the interactive console loop. + + + + + + Runs the specified filename + + + + + Starts the interactive loop. Performs any initialization necessary before + starting the loop and then calls RunInteractiveLoop to start the loop. + + Returns the exit code when the interactive loop is completed. + + + + + Runs the interactive loop. Repeatedly parse and run interactive actions + until an exit code is received. If any exceptions are unhandled displays + them to the console + + + + + Attempts to run a single interaction and handle any language-specific + exceptions. Base classes can override this and call the base implementation + surrounded with their own exception handling. + + Returns null if successful and execution should continue, or an exit code. + + + + + Parses a single interactive command or a set of statements and executes it. + + Returns null if successful and execution should continue, or the appropiate exit code. + + We check if the code read is an interactive command or statements is by checking for NewLine + If the code contains NewLine, it's a set of statements (most probably from SendToConsole) + If the code does not contain a NewLine, it's an interactive command typed by the user at the prompt + + + + + Private helper function to see if we should treat the current input as a blank link. + + We do this if we only have auto-indent text. + + + + + Read a statement, which can potentially be a multiple-line statement suite (like a class declaration). + + Should the console session continue, or did the user indicate + that it should be terminated? + Expression to evaluate. null for empty input + + + + Gets the next level for auto-indentation + + + + + Core functionality to implement an interactive console. This should be derived for concrete implementations + + + + + Console Host entry-point .exe name. + + + + + Request (from another thread) the console REPL loop to terminate + + The caller can specify the exitCode corresponding to the event triggering + the termination. This will be returned from CommandLine.Run + + + + To be called from entry point. + + + + + + + + name == null means that the argument doesn't specify an option; the value contains the entire argument + name == "" means that the option name is empty (argument separator); the value is null then + + + + + Literal script command given using -c option + + + + + Filename to execute passed on the command line options. + + + + + Only print the version of the script interpreter and exit + + + + + Used to dispatch a single interactive command. It can be used to control things like which Thread + the command is executed on, how long the command is allowed to execute, etc + + + + + Handles input and output for the console. It is comparable to System.IO.TextReader, + System.IO.TextWriter, System.Console, etc + + + + + Read a single line of interactive input, or a block of multi-line statements. + + An event-driven GUI console can implement this method by creating a thread that + blocks and waits for an event indicating that input is available + + The indentation level to be used for the current suite of a compound statement. + The console can ignore this argument if it does not want to support auto-indentation + null if the input stream has been closed. A string with a command to execute otherwise. + It can be a multi-line string which should be processed as block of statements + + + + On error. + + + + Supports detecting the remote runtime being killed, and starting up a new one. + + Threading model: + + ConsoleRestartManager creates a separate thread on which to create and execute the consoles. + There are usually atleast three threads involved: + + 1. Main app thread: Instantiates ConsoleRestartManager and accesses its APIs. This thread has to stay + responsive to user input and so the ConsoleRestartManager APIs cannot be long-running or blocking. + Since the remote runtime process can terminate asynchronously, the current RemoteConsoleHost can + change at any time (if auto-restart is enabled). The app should typically not care which instance of + RemoteConsoleHost is currently being used. The flowchart of this thread is: + Create ConsoleRestartManager + ConsoleRestartManager.Start + Loop: + Respond to user input | Send user input to console for execution | BreakExecution | RestartConsole | GetMemberNames + ConsoleRestartManager.Terminate + TODO: Currently, BreakExecution and GetMemberNames are called by the main thread synchronously. + Since they execute code in the remote runtime, they could take arbitrarily long. We should change + this so that the main app thread can never be blocked indefinitely. + + 2. Console thread: Dedicated thread for creating RemoteConsoleHosts and executing code (which could + take a long time or block indefinitely). + Wait for ConsoleRestartManager.Start to be called + Loop: + Create RemoteConsoleHost + Wait for signal for: + Execute code | RestartConsole | Process.Exited + + 3. CompletionPort async callbacks: + Process.Exited | Process.OutputDataReceived | Process.ErrorDataReceived + + 4. Finalizer thred + Some objects may have a Finalize method (which possibly calls Dispose). Not many (if any) types + should have a Finalize method. + + + + + + Accessing _remoteConsoleHost from a thread other than console thread can result in race. + If _remoteConsoleHost is accessed while holding _accessLock, it is guaranteed to be + null or non-disposed. + + + + + This is created on the "creating thread", and goes on standby. Start needs to be called for activation. + + A host might want one of two behaviors: + 1. Keep the REPL loop alive indefinitely, even when a specific instance of the RemoteConsoleHost terminates normally + 2. Close the REPL loop when an instance of the RemoteConsoleHost terminates normally, and restart the loop + only if the instance terminates abnormally. + + + + Needs to be called for activation. + + + + + Request (from another thread) the console REPL loop to terminate + + + + + This allows the RemoteConsoleHost to abort a long-running operation. The RemoteConsoleHost itself + does not know which ThreadPool thread might be processing the remote call, and so it needs + cooperation from the remote runtime server. + + + + + Since OnOutputDataReceived is sent async, it can arrive late. The remote console + cannot know if all output from the current command has been received. So + RemoteCommandDispatcher writes out a marker to indicate the end of the output + + + + + Aborts the current active call to Execute by doing Thread.Abort + + true if a Thread.Abort was actually called. false if there is no active call to Execute + + + + Customize the CommandLine for remote scenarios + + + + + CommandDispatcher to ensure synchronize output from the remote runtime + + + + + ConsoleHost where the ScriptRuntime is hosted in a separate process (referred to as the remote runtime server) + + The RemoteConsoleHost spawns the remote runtime server and specifies an IPC channel name to use to communicate + with each other. The remote runtime server creates and initializes a ScriptRuntime and a ScriptEngine, and publishes + it over the specified IPC channel at a well-known URI. Note that the RemoteConsoleHost cannot easily participate + in the initialization of the ScriptEngine as classes like LanguageContext are not remotable. + + The RemoteConsoleHost then starts the interactive loop and executes commands on the ScriptEngine over the remoting channel. + The RemoteConsoleHost listens to stdout of the remote runtime server and echos it locally to the user. + + + + + Called if the remote runtime process exits by itself. ie. without the remote console killing it. + + + + + Allows the console to customize the environment variables, working directory, etc. + + At the least, processInfo.FileName should be initialized + + + + Aborts the current active call to Execute by doing Thread.Abort + + true if a Thread.Abort was actually called. false if there is no active call to Execute + + + + The remote runtime server uses this class to publish an initialized ScriptEngine and ScriptRuntime + over a remoting channel. + + + + + Publish objects so that the host can use it, and then block indefinitely (until the input stream is open). + + Note that we should publish only one object, and then have other objects be accessible from it. Publishing + multiple objects can cause problems if the client does a call like "remoteProxy1(remoteProxy2)" as remoting + will not be able to know if the server object for both the proxies is on the same server. + + The IPC channel that the remote console expects to use to communicate with the ScriptEngine + A intialized ScriptScope that is ready to start processing script commands + + + + Class managing the command history. + + + + + List of available options + + + + + Cursor position management + + + + + Beginning position of the cursor - top coordinate. + + + + + Beginning position of the cursor - left coordinate. + + + + + The console input buffer. + + + + + Current position - index into the input buffer + + + + + The number of white-spaces displayed for the auto-indenation of the current line + + + + + Length of the output currently rendered on screen. + + + + + Command history + + + + + Tab options available in current context + + + + + Cursort anchor - position of cursor when the routine was called + + + + + The command line that this console is attached to. + + + + + Displays the next option in the option list, + or beeps if no options available for current input prefix. + If no input prefix, simply print tab. + + + + + + + Handle the enter key. Adds the current input (if not empty) to the history. + + + The input string. + + + + The number of arguments including "this" for instance methods. + + + + Instruction can't be created due to insufficient privileges. + + + Instruction can't be created due to insufficient privileges. + + + + Gets the next type or null if no more types are available. + + + + + Uses reflection to create new instance of the appropriate ReflectedCaller + + + + + Fast creation works if we have a known primitive types for the entire + method siganture. If we have any non-primitive types then FastCreate + falls back to SlowCreate which works for all types. + + Fast creation is fast because it avoids using reflection (MakeGenericType + and Activator.CreateInstance) to create the types. It does this through + calling a series of generic methods picking up each strong type of the + signature along the way. When it runs out of types it news up the + appropriate CallInstruction with the strong-types that have been built up. + + One relaxation is that for return types which are non-primitive types + we can fallback to object due to relaxed delegates. + + + + + This instruction implements a goto expression that can jump out of any expression. + It pops values (arguments) from the evaluation stack that the expression tree nodes in between + the goto expression and the target label node pushed and not consumed yet. + A goto expression can jump into a node that evaluates arguments only if it carries + a value and jumps right after the first argument (the carried value will be used as the first argument). + Goto can jump into an arbitrary child of a BlockExpression since the block doesn’t accumulate values + on evaluation stack as its child expressions are being evaluated. + + Goto needs to execute any finally blocks on the way to the target label. + + { + f(1, 2, try { g(3, 4, try { goto L } finally { ... }, 6) } finally { ... }, 7, 8) + L: ... + } + + The goto expression here jumps to label L while having 4 items on evaluation stack (1, 2, 3 and 4). + The jump needs to execute both finally blocks, the first one on stack level 4 the + second one on stack level 2. So, it needs to jump the first finally block, pop 2 items from the stack, + run second finally block and pop another 2 items from the stack and set instruction pointer to label L. + + Goto also needs to rethrow ThreadAbortException iff it jumps out of a catch handler and + the current thread is in "abort requested" state. + + + + + The first instruction of finally block. + + + + + The last instruction of finally block. + + + + + The last instruction of a catch exception handler. + + + + + The last instruction of a fault exception handler. + + + + + Implements dynamic call site with many arguments. Wraps the arguments into . + + + + + Attaches a cookie to the last emitted instruction. + + + + Instruction can't be created due to insufficient privileges. + + + + Contains compiler state corresponding to a LabelTarget + See also LabelScopeInfo. + + + + + Returns true if we can jump into this node + + + + + A single interpreted frame might be represented by multiple subsequent Interpreter.Run CLR frames. + This method filters out the duplicate CLR frames. + + + + + A simple forth-style stack machine for executing Expression trees + without the need to compile to IL and then invoke the JIT. This trades + off much faster compilation time for a slower execution performance. + For code that is only run a small number of times this can be a + sweet spot. + + The core loop in the interpreter is the RunInstructions method. + + + + + Runs instructions within the given frame. + + + Interpreted stack frames are linked via Parent reference so that each CLR frame of this method corresponds + to an interpreted stack frame in the chain. It is therefore possible to combine CLR stack traces with + interpreted stack traces by aligning interpreted frames to the frames of this method. + Each group of subsequent frames of Run method corresponds to a single interpreted frame. + + + + + Manages creation of interpreted delegates. These delegates will get + compiled if they are executed often enough. + + + + + true if the compiled delegate has the same type as the lambda; + false if the type was changed for interpretation. + + + + + Used by LightLambda to get the compiled delegate. + + + + + Create a compiled delegate for the LightLambda, and saves it so + future calls to Run will execute the compiled code instead of + interpreting. + + + + + Provides notification that the LightLambda has been compiled. + + + + + Visits a LambdaExpression, replacing the constants with direct accesses + to their StrongBox fields. This is very similar to what + ExpressionQuoter does for LambdaCompiler. + + Also inserts debug information tracking similar to what the interpreter + would do. + + + + + Local variable mapping. + + + + + The variable that holds onto the StrongBox{object}[] closure from + the interpreter + + + + + A stack of variables that are defined in nested scopes. We search + this first when resolving a variable in case a nested scope shadows + one of our variable instances. + + + + + Walks the lambda and produces a higher order function, which can be + used to bind the lambda to a closure array from the interpreter. + + The lambda to bind. + Variables which are being accessed defined in the outer scope. + A delegate that can be called to produce a delegate bound to the passed in closure array. + + + + Provides a list of variables, supporing read/write of the values + + + + + Gets a copy of the local variables which are defined in the current scope. + + + + + + Checks to see if the given variable is defined within the current local scope. + + + + + Gets the variables which are defined in an outer scope and available within the current scope. + + + + + Tracks where a variable is defined and what range of instructions it's used in + + + + + marks a field, class, or struct as being safe to have statics which can be accessed + from multiple runtimes. + + Static fields which are not read-only or marked with this attribute will be flagged + by a test which looks for state being shared between runtimes. Before applying this + attribute you should ensure that it is safe to share the state. This is typically + state which is lazy initialized or state which is caching values which are identical + in all runtimes and are immutable. + + + + + Sets the value at the given index for a tuple of the given size. This set supports + walking through nested tuples to get the correct final index. + + + + + Gets the value at the given index for a tuple of the given size. This get + supports walking through nested tuples to get the correct final index. + + + + + Gets the unbound generic Tuple type which has at lease size slots or null if a large enough tuple is not available. + + + + + Creates a generic tuple with the specified types. + + If the number of slots fits within the maximum tuple size then we simply + create a single tuple. If it's greater then we create nested tuples + (e.g. a Tuple`2 which contains a Tuple`128 and a Tuple`8 if we had a size of 136). + + + + + Gets the number of usable slots in the provided Tuple type including slots available in nested tuples. + + + + + Creates a new instance of tupleType with the specified args. If the tuple is a nested + tuple the values are added in their nested forms. + + + + + Gets the values from a tuple including unpacking nested values. + + + + + Gets the series of properties that needs to be accessed to access a logical item in a potentially nested tuple. + + + + + Gets the series of properties that needs to be accessed to access a logical item in a potentially nested tuple. + + + + + Provides an expression for creating a tuple with the specified values. + + + + + This class is useful for quickly collecting performance counts for expensive + operations. Usually this means operations involving either reflection or + code gen. Long-term we need to see if this can be plugged better into the + standard performance counter architecture. + + + + + temporary categories for quick investigation, use a custom key if you + need to track multiple items, and if you want to keep it then create + a new Categories entry and rename all your temporary entries. + + + + + Gets custom data to be serialized when saving script codes to disk. + + + + + ScriptCode is an instance of compiled code that is bound to a specific LanguageContext + but not a specific ScriptScope. The code can be re-executed multiple times in different + scopes. Hosting API counterpart for this class is CompiledCode. + + + + + This takes an assembly name including extension and saves the provided ScriptCode objects into the assembly. + + The provided script codes can constitute code from multiple languages. The assemblyName can be either a fully qualified + or a relative path. The DLR will simply save the assembly to the desired location. The assembly is created by the DLR and + if a file already exists than an exception is raised. + + The DLR determines the internal format of the ScriptCode and the DLR can feel free to rev this as appropriate. + + + + + This will take an assembly object which the user has loaded and return a new set of ScriptCode’s which have + been loaded into the provided ScriptDomainManager. + + If the language associated with the ScriptCode’s has not already been loaded the DLR will load the + LanguageContext into the ScriptDomainManager based upon the saved LanguageContext type. + + If the LanguageContext or the version of the DLR the language was compiled against is unavailable a + TypeLoadException will be raised unless policy has been applied by the administrator to redirect bindings. + + + + + Provides a StreamContentProvider for a stream of content backed by a file on disk. + + + + + Converts a generic ICollection of T into an array of T. + + If the collection is already an array of T the original collection is returned. + + + + + Converts a generic ICollection of T into an array of R using a given conversion. + + If the collection is already an array of R the original collection is returned. + + + + + Provides a dictionary-like object used for caches which holds onto a maximum + number of elements specified at construction time. + + This class is not thread safe. + + + + + Creates a dictionary-like object used for caches. + + The maximum number of elements to store. + + + + Tries to get the value associated with 'key', returning true if it's found and + false if it's not present. + + + + + Adds a new element to the cache, replacing and moving it to the front if the + element is already present. + + + + + Returns the value associated with the given key, or throws KeyNotFoundException + if the key is not present. + + + + + Not all .NET enumerators throw exceptions if accessed in an invalid state. This type + can be used to throw exceptions from enumerators implemented in IronPython. + + + + + Wraps the provided enumerable into a ReadOnlyCollection{T} + + Copies all of the data into a new array, so the data can't be + changed after creation. The exception is if the enumerable is + already a ReadOnlyCollection{T}, in which case we just return it. + + + + + Allows wrapping of proxy types (like COM RCWs) to expose their IEnumerable functionality + which is supported after casting to IEnumerable, even though Reflection will not indicate + IEnumerable as a supported interface + + + + + Requires the specified index to point inside the array. + + Array is null. + Index is outside the array. + + + + Requires the specified index to point inside the array. + + Index is outside the array. + + + + Requires the specified index to point inside the array or at the end + + Array is null. + Index is outside the array. + + + + Requires the specified index to point inside the array or at the end + + Array is null. + Index is outside the array. + + + + Requires the range [offset, offset + count] to be a subset of [0, array.Count]. + + Offset or count are out of range. + + + + Requires the range [offset, offset + count] to be a subset of [0, array.Count]. + + Offset or count are out of range. + + + + Requires the range [offset, offset + count] to be a subset of [0, array.Count]. + + Array is null. + Offset or count are out of range. + + + + Requires the range [offset, offset + count] to be a subset of [0, array.Count]. + + String is null. + Offset or count are out of range. + + + + Requires the array and all its items to be non-null. + + + + + Requires the enumerable collection and all its items to be non-null. + + + + + List optimized for few writes and multiple reads. It provides thread-safe read and write access. + Iteration is not thread-safe by default, but GetCopyForRead allows for iteration + without taking a lock. + + + + + Gets a copy of the contents of the list. The copy will not change even if the original + CopyOnWriteList object is modified. This method should be used to iterate the list in + a thread-safe way if no lock is taken. Iterating on the original list is not guaranteed + to be thread-safe. + + The returned copy should not be modified by the caller. + + + + Presents a flat enumerable view of multiple dictionaries + + + + + Returns the list of expressions represented by the instances. + + An array of instances to extract expressions from. + The array of expressions. + + + + Creates an instance of for a runtime value and the expression that represents it during the binding process. + + The runtime value to be represented by the . + An expression to represent this during the binding process. + The new instance of . + + + + Produces an interpreted binding using the given binder which falls over to a compiled + binding after hitCount tries. + + This method should be called whenever an interpreted binding is required. Sometimes it will + return a compiled binding if a previous binding was produced and it's hit count was exhausted. + In this case the binder will not be called back for a new binding - the previous one will + be used. + + The delegate type being used for the call site + The binder used for the call site + The number of calls before the binder should switch to a compiled mode. + The arguments that are passed for the binding (as received in a BindDelegate call) + A delegate which represents the interpreted binding. + + + + Expression which reduces to the normal test but under the interpreter adds a count down + check which enables compiling when the count down is reached. + + + + + Base class for storing information about the binding that a specific rule is applicable for. + + We have a derived generic class but this class enables us to refer to it w/o having the + generic type information around. + + This class tracks both the count down to when we should compile. When we compile we + take the Expression[T] that was used before and compile it. While this is happening + we continue to allow the interpreted code to run. When the compilation is complete we + store a thread static which tells us what binding failed and the current rule is no + longer functional. Finally the language binder will call us again and we'll retrieve + and return the compiled overload. + + + + + A hybrid dictionary which compares based upon object identity. + + + + + Seeks the first character of a specified line in the text stream. + + The reader. + Line number. The current position is assumed to be line #1. + + Returns true if the line is found, false otherwise. + + + + + Reads characters to a string until end position or a terminator is reached. + Doesn't include the terminator into the resulting string. + Returns null, if the reader is at the end position. + + + + + Reads characters until end position or a terminator is reached. + Returns true if the character has been found (the reader is positioned right behind the character), + false otherwise. + + + + + Calculates the quotient of two 32-bit signed integers rounded towards negative infinity. + + Dividend. + Divisor. + The quotient of the specified numbers rounded towards negative infinity, or (int)Floor((double)x/(double)y). + is 0. + The caller must check for overflow (x = Int32.MinValue, y = -1) + + + + Calculates the quotient of two 64-bit signed integers rounded towards negative infinity. + + Dividend. + Divisor. + The quotient of the specified numbers rounded towards negative infinity, or (int)Floor((double)x/(double)y). + is 0. + The caller must check for overflow (x = Int64.MinValue, y = -1) + + + + Calculates the remainder of floor division of two 32-bit signed integers. + + Dividend. + Divisor. + The remainder of of floor division of the specified numbers, or x - (int)Floor((double)x/(double)y) * y. + is 0. + + + + Calculates the remainder of floor division of two 32-bit signed integers. + + Dividend. + Divisor. + The remainder of of floor division of the specified numbers, or x - (int)Floor((double)x/(double)y) * y. + is 0. + + + + Behaves like Math.Round(value, MidpointRounding.AwayFromZero) + Needed because CoreCLR doesn't support this particular overload of Math.Round + + + + + Behaves like Math.Round(value, precision, MidpointRounding.AwayFromZero) + However, it works correctly on negative precisions and cases where precision is + outside of the [-15, 15] range. + + (This function is also needed because CoreCLR lacks this overload.) + + + + + Evaluates a polynomial in v0 where the coefficients are ordered in increasing degree + + + + + Evaluates a polynomial in v0 where the coefficients are ordered in increasing degree + if reverse is false, and increasing degree if reverse is true. + + + + + A numerically precise version of sin(v0 * pi) + + + + + A numerically precise version of |sin(v0 * pi)| + + + + + Take the quotient of the 2 polynomials forming the Lanczos approximation + with N=13 and G=13.144565 + + + + + Computes the Gamma function on positive values, using the Lanczos approximation. + Lanczos parameters are N=13 and G=13.144565. + + + + + Computes the Log-Gamma function on positive values, using the Lanczos approximation. + Lanczos parameters are N=13 and G=13.144565. + + + + + Thread safe dictionary that allows lazy-creation where readers will block for + the creation of the lazily created value. Call GetOrCreateValue w/ a key + and a callback function. If the value exists it is returned, if not the create + callback is called (w/o any locks held). The create call back will only be called + once for each key. + + + + + Helper class which stores the published value + + + + + Converts a boxed enum value to the underlying integer value. + + + + + Creates an open delegate for the given (dynamic)method. + + + + + Creates a closed delegate for the given (dynamic)method. + + + + + Gets a Func of CallSite, object * paramCnt, object delegate type + that's suitable for use in a non-strongly typed call site. + + + + + Returns true if the specified parameter is mandatory, i.e. is not optional and doesn't have a default value. + + + + + Yields all ancestors of the given type including the type itself. + Does not include implemented interfaces. + + + + + Like Type.GetInterfaces, but only returns the interfaces implemented by this type + and not its parents. + + + + + Enumerates extension methods in given assembly. Groups the methods by declaring namespace. + Uses a global cache if is true. + + + + + Binds occurances of generic parameters in against corresponding types in . + Invokes (parameter, type) for each such binding. + Returns false if the is structurally different from or if the binder returns false. + + + + + Determines if a given type matches the type that the method extends. + The match might be non-trivial if the extended type is an open generic type with constraints. + + + + + Splits text and optionally indents first lines - breaks along words, not characters. + + + + + Dictionary[TKey, TValue] is not thread-safe in the face of concurrent reads and writes. SynchronizedDictionary + provides a thread-safe implementation. It holds onto a Dictionary[TKey, TValue] instead of inheriting from + it so that users who need to do manual synchronization can access the underlying Dictionary[TKey, TValue]. + + + + + This returns the raw unsynchronized Dictionary[TKey, TValue]. Users are responsible for locking + on it before accessing it. Also, it should not be arbitrarily handed out to other code since deadlocks + can be caused if other code incorrectly locks on it. + + + + + Provides fast strongly typed thread local storage. This is significantly faster than + Thread.GetData/SetData. + + + + + True if the caller will guarantee that all cleanup happens as the thread + unwinds. + + This is typically used in a case where the thread local is surrounded by + a try/finally block. The try block pushes some state, the finally block + restores the previous state. Therefore when the thread exits the thread + local is back to it's original state. This allows the ThreadLocal object + to not check the current owning thread on retrieval. + + + + + Gets or sets the value for the current thread. + + + + + Gets the current value if its not == null or calls the provided function + to create a new value. + + + + + Calls the provided update function with the current value and + replaces the current value with the result of the function. + + + + + Replaces the current value with a new one and returns the old value. + + + + + Gets the StorageInfo for the current thread. + + + + + Called when the fast path storage lookup fails. if we encountered the Empty storage + during the initial fast check then spin until we hit non-empty storage and try the fast + path again. + + + + + Creates the StorageInfo for the thread when one isn't already present. + + + + + Helper class for storing the value. We need to track if a ManagedThreadId + has been re-used so we also store the thread which owns the value. + + + + + Caches type member lookup. + + + When enumerating members (methods, properties, events) of a type (declared or inherited) Reflection enumerates all + runtime members of the type and its base types and caches the result. + When looking for a member of a specific name Reflection still enumerates all and filters out those that don't match the name. + That's inefficient when looking for members of multiple names one by one. + Instead we build a map of name to member list and then answer subsequent queries by simply looking up the dictionary. + + + + + Returns a numerical code of the size of a type. All types get both a horizontal + and vertical code. Types that are lower in both dimensions have implicit conversions + to types that are higher in both dimensions. + + + + + Represents an array that has value equality. + + + + + Simple class for tracking a list of items and enumerating over them. + The items are stored in weak references; if the objects are collected, + they will not be seen when enumerating. + + The type of the collection element. + + + + Similar to Dictionary[TKey,TValue], but it also ensures that the keys will not be kept alive + if the only reference is from this collection. The value will be kept alive as long as the key + is alive. + + This currently has a limitation that the caller is responsible for ensuring that an object used as + a key is not also used as a value in *any* instance of a WeakHash. Otherwise, it will result in the + object being kept alive forever. This effectively means that the owner of the WeakHash should be the + only one who has access to the object used as a value. + + Currently, there is also no guarantee of how long the values will be kept alive even after the keys + get collected. This could be fixed by triggerring CheckCleanup() to be called on every garbage-collection + by having a dummy watch-dog object with a finalizer which calls CheckCleanup(). + + + + + Check if any of the keys have gotten collected + + Currently, there is also no guarantee of how long the values will be kept alive even after the keys + get collected. This could be fixed by triggerring CheckCleanup() to be called on every garbage-collection + by having a dummy watch-dog object with a finalizer which calls CheckCleanup(). + + + + + Changes the semantics of GC handle to return null instead of throwing + an . + + + + + This class represents adler32 checksum algorithm. + + + + + This static method returns adler32 checksum of the buffer data + + + + + Implementation of the Deflate compression algorithm. + + + + + Deflate algorithm configuration parameters class + + + + + reduce lazy search above this match length + + + + + do not perform lazy search above this match length + + + + + quit search above this match length + + + + + Constructor which initializes class inner fields + + + + + Maximum memory level + + + + + Defalult compression method + + + + + Default memory level + + + + + Deflate class congiration table + + + + + block not completed, need more input or more output + + + + + Block internalFlush performed + + + + + Finish started, need only more output at next deflate + + + + + finish done, accept no more input or output + + + + + preset dictionary flag in zlib header + + + + + The deflate compression method + + + + + The size of the buffer + + + + + repeat previous bit length 3-6 times (2 bits of repeat count) + + + + + repeat a zero length 3-10 times (3 bits of repeat count) + + + + + repeat a zero length 11-138 times (7 bits of repeat count) + + + + + Gets or sets the Compression level. + + + + + Gets or sets the Number of bytes in the pending buffer. + + + + + Gets or sets the Output pending buffer. + + + + + Gets or sets the next pending byte to output to the stream. + + + + + Gets or sets a value indicating whether to suppress zlib header and adler32. + + + + + Pointer back to this zlib stream + + + + + As the name implies + + + + + Size of Pending_buf + + + + + UNKNOWN, BINARY or ASCII + + + + + STORED (for zip only) or DEFLATED + + + + + Value of internalFlush parameter for previous deflate call + + + + + LZ77 Window size (32K by default) + + + + + log2(w_size) (8..16) + + + + + w_size - 1 + + + + + Sliding Window. Input bytes are ReadPos into the second half of the Window, + and move to the first half later to keep a dictionary of at least wSize + bytes. With this organization, matches are limited to a distance of + wSize-MAX_MATCH bytes, but this ensures that IO is always + performed with a length multiple of the block size. Also, it limits + the Window size to 64K, which is quite useful on MSDOS. + To do: use the user input buffer as sliding Window. + + + + + Actual size of Window: 2*wSize, except when the user input buffer is directly used as sliding Window. + + + + + Link to older string with same hash index. To limit the size of this + array to 64K, this link is maintained only for the last 32K strings. + An index in this array is thus a Window index modulo 32K. + + + + + Heads of the hash chains or NIL. + + + + + hash index of string to be inserted + + + + + number of elements in hash table + + + + + log2(hash_size) + + + + + hash_size-1 + + + + + Number of bits by which ins_h must be shifted at each input + step. It must be such that after MIN_MATCH steps, the oldest + byte no longer takes part in the hash key, that is: + hash_shift * MIN_MATCH >= hash_bits + + + + + Window position at the beginning of the current output block. Gets negative when the Window is moved backwards. + + + + + length of best match + + + + + previous match + + + + + set if previous match exists + + + + + start of string to insert + + + + + start of matching string + + + + + number of valid bytes ahead in Window + + + + + Length of the best match at previous step. Matches not greater than this + are discarded. This is used in the lazy match evaluation. + + + + + To speed up deflation, hash chains are never searched beyond this + length. A higher limit improves compression ratio but degrades the speed. + + + + + Attempt to find a better match only when the current match is strictly + smaller than this value. This mechanism is used only for compression + levels >= 4. + + + + + favor or force Huffman coding + + + + + Use a faster search when the previous match is longer than this + + + + + Stop searching when current match exceeds this + + + + + literal and length tree + + + + + distance tree + + + + + Huffman tree for bit lengths + + + + + Desc for literal tree + + + + + desc for distance tree + + + + + desc for bit length tree + + + + + number of codes at each bit length for an optimal tree + + + + + heap used to build the Huffman trees + + + + + number of elements in the heap + + + + + element of largest frequency + + + + + Depth of each subtree used as tie breaker for trees of equal frequency + + + + + index for literals or lengths + + + + + Size of match buffer for literals/lengths. There are 4 reasons for + limiting lit_bufsize to 64K: + - frequencies can be kept in 16 bit counters + - if compression is not successful for the first block, all input + data is still in the Window so we can still emit a stored block even + when input comes from standard input. (This can also be done for + all blocks if lit_bufsize is not greater than 32K.) + - if compression is not successful for a file smaller than 64K, we can + even emit a stored file instead of a stored block (saving 5 bytes). + This is applicable only for zip (not gzip or zlib). + - creating new Huffman trees less frequently may not provide fast + adaptation to changes in the input data statistics. (Take for + example a binary file with poorly compressible code followed by + a highly compressible string table.) Smaller buffer sizes give + fast adaptation but have of course the overhead of transmitting + trees more frequently. + - I can't count above 4 + + + + + running index in l_buf + + + + + index of pendig_buf + + + + + bit length of current block with optimal trees + + + + + bit length of current block with static trees + + + + + number of string matches in current block + + + + + bit length of EOB code for last block + + + + + Output buffer. bits are inserted starting at the bottom (least + significant bits). + + + + + Number of valid bits in bi_buf. All bits above the last valid bit + are always zero. + + + + + Default constructor + + + + + Initialization + + + + + Initialize the tree data structures for a new zlib stream. + + + + + Initializes block + + + + + Restore the heap property by moving down the tree starting at node k, + exchanging a node with the smallest of its two sons if necessary, stopping + when the heap property is re-established (each father smaller than its + two sons). + + + + + Scan a literal or distance tree to determine the frequencies of the codes + in the bit length tree. + + + + + Construct the Huffman tree for the bit lengths and return the index in + bl_order of the last bit length code to send. + + + + + Send the header for a block using dynamic Huffman trees: the counts, the + lengths of the bit length codes, the literal tree and the distance tree. + IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + + + + + Send a literal or distance tree in compressed form, using the codes in + bl_tree. + + + + + Output a byte on the stream. + IN assertion: there is enough room in Pending_buf. + + + + + Adds a byte to the buffer + + + + + Send one empty static block to give enough lookahead for inflate. + This takes 10 bits, of which 7 may remain in the bit buffer. + The current inflate code requires 9 bits of lookahead. If the + last two codes for the previous block (real code plus EOB) were coded + on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode + the last real code. In this case we send two empty static blocks instead + of one. (There are no problems if the previous block is stored or fixed.) + To simplify the code, we assume the worst case of last real code encoded + on one bit only. + + + + + Save the match info and tally the frequency counts. Return true if + the current block must be flushed. + + + + + Send the block data compressed using the given Huffman trees + + + + + Set the data type to ASCII or BINARY, using a crude approximation: + binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise. + IN assertion: the fields freq of dyn_ltree are set and the total of all + frequencies does not exceed 64K (to fit in an int on 16 bit machines). + + + + + Flush the bit buffer, keeping at most 7 bits in it. + + + + + Flush the bit buffer and align the output on a byte boundary + + + + + Copy a stored block, storing first the length and its + one's complement if requested. + + + + + Flushes block + + + + + Copy without compression as much as possible from the input stream, return + the current block state. + This function does not insert new strings in the dictionary since + uncompressible data is probably not useful. This function is used + only for the level=0 compression option. + NOTE: this function should be optimized to avoid extra copying from + Window to Pending_buf. + + + + + Send a stored block + + + + + Determine the best encoding for the current block: dynamic trees, static + trees or store, and output the encoded block to the zip file. + + + + + Fill the Window when the lookahead becomes insufficient. + Updates strstart and lookahead. + + IN assertion: lookahead less than MIN_LOOKAHEAD + OUT assertions: strstart less than or equal to window_size-MIN_LOOKAHEAD + At least one byte has been ReadPos, or _avail_in == 0; reads are + performed for at least two bytes (required for the zip translate_eol + option -- not supported here). + + + + + Compress as much as possible from the input stream, return the current + block state. + This function does not perform lazy evaluation of matches and inserts + new strings in the dictionary only for unmatched strings or for short + matches. It is used only for the fast compression options. + + + + + Same as above, but achieves better compression. We use a lazy + evaluation for matches: a match is finally adopted only if there is + no better match at the next Window position. + + + + + Finds the longest matching data part + + + + + Deflate algorithm initialization + + ZStream object + Compression level + Window bits + A result code + + + + Initializes deflate algorithm + + ZStream object + Compression level + Operation result result code + + + + Deflate algorithm initialization + + ZStream object + Compression level + Window bits + Memory level + Compression strategy + Operation result code + + + + Resets the current state of deflate object + + + + + Finish compression with deflate algorithm + + + + + Sets deflate algorithm parameters + + + + + Sets deflate dictionary + + + + + Performs data compression with the deflate algorithm + + + + + Static constructor initializes config_table + + + + + current inflate_block mode + + + + + if STORED, bytes left to copy + + + + + table lengths (14 bits) + + + + + index into blens (or border) + + + + + bit lengths of codes + + + + + bit length tree depth + + + + + bit length decoding tree + + + + + if CODES, current state + + + + + true if this block is the last block + + + + + single malloc for tree space + + + + + need check + + + + + check on output + + + + + Gets or sets the sliding window. + + + + + Gets or sets the one byte after sliding Window. + + + + + Gets or sets the Window ReadPos pointer. + + + + + Gets or sets the Window WritePos pointer. + + + + + Gets or sets the bits in bit buffer. + + + + + Gets or sets the bit buffer. + + + + + Resets this InfBlocks class instance + + + + + Block processing functions + + + + + Frees inner buffers + + + + + Sets dictionary + + + + + Returns true if inflate is currently at the End of a block generated + by Z_SYNC_FLUSH or Z_FULL_FLUSH. + + + + + copy as much as possible from the sliding Window to the output area + + + + + Inflate codes mode + + + + + This class is used by the InfBlocks class + + + + + current inflate_codes mode + + + + + length + + + + + pointer into tree + + + + + current index of the tree + + + + + + + + + + ltree bits decoded per branch + + + + + dtree bits decoded per branch + + + + + literal/length/eob tree + + + + + literal/length/eob tree index + + + + + distance tree + + + + + distance tree index + + + + + Constructor which takes literal, distance trees, corresponding bites decoded for branches, corresponding indexes and a ZStream object + + + + + Constructor which takes literal, distance trees, corresponding bites decoded for branches and a ZStream object + + + + + Block processing method + + An instance of the InfBlocks class + A ZStream object + A result code + + + + Frees allocated resources + + + + + Fast inflate procedure. Called with number of bytes left to WritePos in Window at least 258 + (the maximum string length) and number of input bytes available + at least ten. The ten bytes are six bytes for the longest length/ + distance pair plus four bytes for overloading the bit buffer. + + + + + This enumeration contains modes of inflate processing + + + + + waiting for method byte + + + + + waiting for flag byte + + + + + four dictionary check bytes to go + + + + + three dictionary check bytes to go + + + + + two dictionary check bytes to go + + + + + one dictionary check byte to go + + + + + waiting for inflateSetDictionary + + + + + decompressing blocks + + + + + four check bytes to go + + + + + three check bytes to go + + + + + two check bytes to go + + + + + one check byte to go + + + + + finished check, done + + + + + got an error--stay here + + + + + current inflate mode + + + + + if FLAGS, method byte + + + + + computed check value + + + + + stream check value + + + + + if BAD, inflateSync's marker bytes count + + + + + flag for no wrapper + + + + + log2(Window size) (8..15, defaults to 15) + + + + + current inflate_blocks state + + + + + Resets the Inflate algorithm + + A ZStream object + A result code + + + + Finishes the inflate algorithm processing + + A ZStream object + Operation result code + + + + Initializes the inflate algorithm + + A ZStream object + Window size + Operation result code + + + + Runs inflate algorithm + + A ZStream object + Flush strategy + Operation result code + + + + Sets dictionary for the inflate operation + + A ZStream object + An array of byte - dictionary + Dictionary length + Operation result code + + + + Inflate synchronization + + A ZStream object + Operation result code + + + + Returns true if inflate is currently at the End of a block generated + by Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP + implementation to provide an additional safety check. PPP uses Z_SYNC_FLUSH + but removes the length bytes of the resulting empty stored block. When + decompressing, PPP checks that at the End of input packet, inflate is + waiting for these length bytes. + + + + + Creates header remover. + As long as header is not completed, call to Remover.MoveNext() returns true and + adjust state of z. + + Stream where gzip header will appear. + + + + + Contains utility information for the InfTree class + + + + + Given a list of code lengths and a maximum table size, make a set of + tables to decode that set of codes. + + Return (int)ZLibResultCode.Z_OK on success, (int)ZLibResultCode.Z_DATA_ERROR if the given code set is incomplete (the tables are still built in this case), (int)ZLibResultCode.Z_DATA_ERROR if the input is invalid (an over-subscribed set of lengths), or (int)ZLibResultCode.Z_DATA_ERROR if not enough memory. + + + + + Build trees + + + + + Builds dynamic trees + + + + + Build fixed trees + + + + + Bit length codes must not exceed MAX_BL_BITS bits + + + + + This class represents a tree and is used in the Deflate class + + + + + The dynamic tree + + + + + Largest code with non zero frequency + + + + + the corresponding static tree + + + + + The dynamic tree + + + + + Largest code with non zero frequency + + + + + the corresponding static tree + + + + + Mapping from a distance to a distance code. dist is the distance - 1 and + must not have side effects. _dist_code[256] and _dist_code[257] are never + used. + + + + + Compute the optimal bit lengths for a tree and update the total bit length + for the current block. + IN assertion: the fields freq and dad are set, heap[heap_max] and + above are the tree nodes sorted by increasing frequency. + OUT assertions: the field count is set to the optimal bit length, the + array bl_count contains the frequencies for each bit length. + The length opt_len is updated; static_len is also updated if stree is + not null. + + + + + Construct one Huffman tree and assigns the code bit strings and lengths. + Update the total bit length for the current block. + IN assertion: the field freq is set for all tree elements. + OUT assertions: the fields count and code are set to the optimal bit length + and corresponding code. The length opt_len is updated; static_len is + also updated if stree is not null. The field max_code is set. + + + + + Generate the codes for a given tree and bit counts (which need not be + optimal). + IN assertion: the array bl_count contains the bit length statistics for + the given tree and the field count is set for all tree elements. + OUT assertion: the field code is set for all tree elements of non + zero code length. + + + + + Reverse the first count bits of a code, using straightforward code (a faster + method would use a table) + + + + + Some constants for specifying compression levels. Methods which takes a compression level as a parameter expects an integer value from 0 to 9. You can either specify an integer value or use constants for some most widely used compression levels. + + + + + No compression should be used at all. + + + + + Minimal compression, but greatest speed. + + + + + Maximum compression, but slowest. + + + + + Select default compression level (good compression, good speed). + + + + + Compression strategies. The strategy parameter is used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. + + + + + This strategy is designed for filtered data. Data which consists of mostly small values, with random distribution should use Z_FILTERED. With this strategy, less string matching is performed. + + + + + Z_HUFFMAN_ONLY forces Huffman encoding only (no string match) + + + + + The default strategy is the most commonly used. With this strategy, string matching and huffman compression are balanced. + + + + + Flush strategies + + + + + Do not internalFlush data, but just write data as normal to the output buffer. This is the normal way in which data is written to the output buffer. + + + + + Obsolete. You should use Z_SYNC_FLUSH instead. + + + + + All pending output is flushed to the output buffer and the output is aligned on a byte boundary, so that the decompressor can get all input data available so far. + + + + + All output is flushed as with Z_SYNC_FLUSH, and the compression state is reset so that decompression can restart from this point if previous compressed data has been damaged or if random access is desired. Using Z_FULL_FLUSH too often can seriously degrade the compression. ZLib_InflateSync will locate points in the compression string where a full has been performed. + + + + + Notifies the module that the input has now been exhausted. Pending input is processed, pending output is flushed and calls return with Z_STREAM_END if there was enough output space. + + + + + Results of operations in ZLib library + + + + + No failure was encountered, the operation completed without problem. + + + + + No failure was encountered, and the input has been exhausted. + + + + + A preset dictionary is required for decompression of the data. + + + + + An internal error occurred + + + + + The stream structure was inconsistent + + + + + Input data has been corrupted (for decompression). + + + + + Memory allocation failed. + + + + + There was not enough space in the output buffer. + + + + + The version supplied does not match that supported by the ZLib module. + + + + + States of deflate operation + + + + + Data block types, i.e. binary or ascii text + + + + + Helper class + + + + + Copies large array which was passed as srcBuf to the Initialize method into the destination array which were passes as destBuff + + The number of bytes copied + + + + Max Window size + + + + + preset dictionary flag in zlib header + + + + + The size of the buffer + + + + + Deflate compression method index + + + + + This method returns the literal value received + + The literal to return + The received value + + + + This method returns the literal value received + + The literal to return + The received value + + + + This method returns the literal value received + + The literal to return + The received value + + + + This method returns the literal value received + + The literal to return + The received value + + + + Performs an unsigned bitwise right shift with the specified number + + Number to operate on + Ammount of bits to shift + The resulting number from the shift operation + + + + Performs an unsigned bitwise right shift with the specified number + + Number to operate on + Ammount of bits to shift + The resulting number from the shift operation + + + + Performs an unsigned bitwise right shift with the specified number + + Number to operate on + Ammount of bits to shift + The resulting number from the shift operation + + + + Performs an unsigned bitwise right shift with the specified number + + Number to operate on + Ammount of bits to shift + The resulting number from the shift operation + + + Reads a number of characters from the current source Stream and writes the data to the target array at the specified index. + The source Stream to ReadPos from. + Contains the array of characters ReadPos from the source Stream. + The starting index of the target array. + The maximum number of characters to ReadPos from the source Stream. + The number of characters ReadPos. The number will be less than or equal to count depending on the data available in the source Stream. Returns -1 if the End of the stream is reached. + + + Reads a number of characters from the current source TextReader and writes the data to the target array at the specified index. + The source TextReader to ReadPos from + Contains the array of characteres ReadPos from the source TextReader. + The starting index of the target array. + The maximum number of characters to ReadPos from the source TextReader. + The number of characters ReadPos. The number will be less than or equal to count depending on the data available in the source TextReader. Returns -1 if the End of the stream is reached. + + + + Converts a string to an array of bytes + + The string to be converted + The new array of bytes + + + + Converts an array of bytes to an array of chars + + The array of bytes to convert + The new array of chars + + + + see definition of array dist_code below + + + + + ZStream is used to store user data to compress/decompress. + + + + + Maximum memory level + + + + + Next input byte array + + + + + Index of the first byte in the input array. + + + + + Number of bytes available at _next_in + + + + + total nb of input bytes ReadPos so far + + + + + Byte array for the next output block + + + + + Index of the first byte in the _next_out array + + + + + Remaining free space at _next_out + + + + + Total number of bytes in output array + + + + + A string to store operation result message (corresponding to result codes) + + + + + A deflate object to perform data compression + + + + + Inflate object to perform data decompression + + + + + Adler-32 value for uncompressed data processed so far. + + + + + Best guess about the data type: ascii or binary + + + + + Gets/Sets the next input byte array. + + + + + Index of the first byte in the input array. + + + + + Gets/Sets the number of bytes available in the input buffer. + + + + + Gets/Sets the total number of bytes in the input buffer. + + + + + Gets/Sets the buffer for the next output data. + + + + + Gets/Sets the index of the first byte in the byte array to write to. + + + + + Gets/Sets the remaining free space in the buffer. + + + + + Gets/Sets the total number of bytes in the output array. + + + + + Gets sets the last error message occurred during class operations. + + + + + A deflate object to perform data compression + + + + + Inflate object to perform data decompression + + + + + Initializes the internal stream state for decompression. The fields , must be + initialized before by the caller. If is not null and is large + enough (the exact value depends on the compression method), determines the compression + method from the ZLib header and allocates all data structures accordingly; otherwise the allocation will be deferred + to the first call of . + + + inflateInit returns if success, if there was not enough memory, + if the ZLib library version is incompatible with the version assumed by the caller. + is set to null if there is no error message. does not perform any decompression + apart from reading the ZLib header if present: this will be done by . (So and + may be modified, but and are unchanged.) + + + + + This is another version of with an extra parameter. The fields , must be + initialized before by the caller. If is not null and is large enough + (the exact value depends on the compression method), determines the compression method from + the ZLib header and allocates all data structures accordingly; otherwise the allocation will be deferred to the first + call of . + + The windowBits parameter is the base two logarithm of the maximum window size (the size of the history buffer). + It should be in the range 8..15 for this version of the library. The default value is 15 if is used instead. + If a compressed stream with a larger window size is given as input, will return with the error code + instead of trying to allocate a larger window. + + inflateInit returns if success, if there was not enough memory, + if a parameter is invalid (such as a negative memLevel). is set to null + if there is no error message. does not perform any decompression apart from reading the ZLib header + if present: this will be done by . (So and may be modified, + but and are unchanged.) + + + + + This method decompresses as much data as possible, and stops when the input buffer () becomes empty or + the output buffer () becomes full. It may some introduce some output latency (reading input without producing any output) + except when forced to flush. + The detailed semantics are as follows. performs one or both of the following actions: + + + Decompress more input starting at and update and + accordingly. If not all input can be processed (because there is not enough room in the output buffer), is updated and + processing will resume at this point for the next call of . + Provide more output starting at and update and + accordingly. provides as much output as possible, until there is no more input data or no more space in + the output buffer (see below about the parameter). + + + + Flush strategy to use. + + Before the call of , the application should ensure that at least one of the actions is possible, by providing + more input and/or consuming more output, and updating the next_* and avail_* values accordingly. The application can consume the uncompressed + output when it wants, for example when the output buffer is full (avail_out == 0), or after each call of . + If returns and with zero , it must be called again + after making room in the output buffer because there might be more output pending. + If the parameter is set to , flushes + as much output as possible to the output buffer. The flushing behavior of is not specified for values of + the parameter other than and , + but the current implementation actually flushes as much output as possible anyway. + should normally be called until it returns or an error. + However if all decompression is to be performed in a single step (a single call of inflate), the parameter + should be set to . In this case all pending input is processed and all pending output is flushed; + must be large enough to hold all the uncompressed data. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The next operation on this stream must be to deallocate the decompression + state. The use of is never required, but can be used to inform that a faster + routine may be used for the single call. + If a preset dictionary is needed at this point (see ), sets strm-adler + to the adler32 checksum of the dictionary chosen by the compressor and returns ; otherwise it + sets strm->adler to the adler32 checksum of all output produced so far (that is, bytes) and returns + , or an error code as described below. At the end of the stream, + ) checks that its computed adler32 checksum is equal to that saved by the compressor and returns + only if the checksum is correct. + + + returns if some progress has been made (more input processed or more output produced), + if the end of the compressed data has been reached and all uncompressed output has been produced, + if a preset dictionary is needed at this point, if + the input data was corrupted (input stream not conforming to the ZLib format or incorrect adler32 checksum), + if the stream structure was inconsistent (for example if or + was null), if there was not enough memory, + if no progress is possible or if there was not enough room in the output buffer + when is used. In the case, the application + may then call to look for a good compression block. + + + + + All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any + pending output. + + + inflateEnd returns if success, + if the stream state was inconsistent. In the error case, msg may be set but then points to a static string (which must not be deallocated). + + + + + Skips invalid compressed data until a full flush point (see the description of deflate with Z_FULL_FLUSH) can be found, + or until all available input is skipped. No output is provided. + + + returns if a full flush point has been found, + if no more input was provided, if no flush point has been found, or + if the stream structure was inconsistent. In the success case, the application may save the current + current value of which indicates where valid compressed data was found. In the error case, the application may repeatedly + call , providing more input each time, until success or end of the input data. + + + + + Initializes the decompression dictionary from the given uncompressed byte sequence. This function must be called immediately after a call of if this call returned . The dictionary chosen by the compressor can be determined from the Adler32 value returned by this call of . The compressor and decompresser must use exactly the same dictionary. + + A byte array - a dictionary. + The length of the dictionary. + + inflateSetDictionary returns if success, if a parameter is invalid (such as null dictionary) or the stream state is inconsistent, if the given dictionary doesn't match the expected one (incorrect Adler32 value). inflateSetDictionary does not perform any decompression: this will be done by subsequent calls of . + + + + + Initializes the internal stream state for compression. + + An integer value from 0 to 9 indicating the desired compression level. + + DeflateInit returns if success, if there was not enough memory, + if level is not a valid compression level. is set to null if there is + no error message. does not perform any compression: this will be done by . + + + + + Initializes the internal stream state for compression. + + An integer value from 0 to 9 indicating the desired compression level. + The windowBits parameter is the base two logarithm of the window size (the size of the history buffer). It should be in the + range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage. + The default value is 15 if DeflateInit is used instead. + + DeflateInit returns if success, if there was not enough memory, + if level is not a valid compression level. is set to null if there + is no error message. does not perform any compression: this will be done by . + + + + + Deflate compresses as much data as possible, and stops when the input buffer becomes empty or the + output buffer becomes full. It may introduce some output latency (reading input without producing any output) + except when forced to flush. + The detailed semantics are as follows. deflate performs one or both of the following actions: + + Compress more input starting at and update and accordingly. + If not all input can be processed (because there is not enough room in the output buffer), and + are updated and processing will resume at this point for the next call of . + Provide more output starting at and update and accordingly. + This action is forced if the parameter flush is non zero. Forcing flush frequently degrades the compression ratio, so this parameter should + be set only when necessary (in interactive applications). Some output may be provided even if flush is not set. + + + + The flush strategy to use. + + + Before the call of , the application should ensure that at least one of the actions is possible, by providing + more input and/or consuming more output, and updating or accordingly ; + should never be zero before the call. The application can consume the compressed output when it wants, for example when the output buffer is full + (avail_out == 0), or after each call of . If returns + and with zero , it must be called again after making room in the output buffer because there might be more output pending. + + + If the parameter is set to , all pending output is flushed to the + output buffer and the output is aligned on a byte boundary, so that the decompressor can get all input + data available so far. (In particular is zero after the call if enough output space has been provided before the call.) + Flushing may degrade compression for some compression algorithms and so it should be used only when necessary. + + + If flush is set to , all output is flushed as with , + and the compression state is reset so that decompression can restart from this point if previous compressed data has been damaged or if + random access is desired. Using too often can seriously degrade the compression. + + + + + If deflate returns with == 0, this function must be called again with the same value of the flush + parameter and more output space (updated ), until the flush is complete ( returns with + non-zero ). + + + If the parameter is set to , pending input is processed, pending + output is flushed and deflate returns with if there was enough output space ; + if deflate returns with , this function must be called again with + and more output space (updated ) but no more input data, until it returns with + or an error. After deflate has returned , the only possible operation on the stream is + . + + can be used immediately after if all the compression is to be + done in a single step. In this case, avail_out must be at least 0.1% larger than avail_in plus 12 bytes. If deflate does not return + Z_STREAM_END, then it must be called again as described above. + + + sets strm-> adler to the adler32 checksum of all input read so far (that is, bytes). + + + may update data_type if it can make a good guess about the input data type (Z_ASCII or Z_BINARY). + In doubt, the data is considered binary. This field is only for information purposes and does not affect the compression algorithm in any manner. + + + returns if some progress has been made (more input processed or more output produced), + if all input has been consumed and all output has been produced (only when flush is set to + ), if the stream state was inconsistent (for example if + or was null), if no progress is possible + (for example or was zero). + + + + + + All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending + output. + + + deflateEnd returns if success, if the stream state was inconsistent, + if the stream was freed prematurely (some input or output was discarded). In the error case, + may be set but then points to a static string (which must not be deallocated). + + + + + Dynamically update the compression level and compression strategy. The interpretation of level is as in . + This can be used to switch between compression and straight copy of the input data, or to switch to a different kind of input data + requiring a different strategy. If the compression level is changed, the input available so far is compressed with the old level + (and may be flushed); the new level will take effect only at the next call of + + An integer value indicating the desired compression level. + A flush strategy to use. + + Before the call of , the stream state must be set as for a call of , since the + currently available input may have to be compressed and flushed. In particular, must be non-zero. + + + deflateParams returns if success, if the source stream + state was inconsistent or if a parameter was invalid, if was zero. + + + + + Initializes the compression dictionary from the given byte sequence without producing any compressed output. This function must be called + immediately after , before any call of . The compressor and decompressor must use + exactly the same dictionary (see ). + + A byte array - a dictionary. + The length of the dictionary byte array + + + The dictionary should consist of strings (byte sequences) that are likely to be encountered later in the data to be compressed, + with the most commonly used strings preferably put towards the end of the dictionary. Using a dictionary is most useful when the data + to be compressed is short and can be predicted with good accuracy; the data can then be compressed better than with the default empty dictionary. + + Depending on the size of the compression data structures selected by , a part of the dictionary may + in effect be discarded, for example if the dictionary is larger than the window size in . Thus the strings most likely + to be useful should be put at the end of the dictionary, not at the front. + Upon return of this function, adler is set to the Adler32 value of the dictionary; the decompresser may later use this value to determine + which dictionary has been used by the compressor. (The Adler32 value applies to the whole dictionary even if only a subset of the dictionary + is actually used by the compressor.) + + + deflateSetDictionary returns if success, or if a parameter + is invalid (such as null dictionary) or the stream state is inconsistent (for example if has already been + called for this stream or if the compression method is bsort). does not perform any compression: + this will be done by . + + + + + Flush as much pending output as possible. All output goes through this function so some applications may wish to + modify it to avoid allocating a large buffer and copying into it. + + + + + + Read a new buffer from the current input stream, update the adler32 and total number of bytes read. All input goes + through this function so some applications may wish to modify it to avoid allocating a large buffer and copying from it. + + + + + + Frees all inner buffers. + + + + + Exceptions that occur in ZStream + + + + + Default constructor. + + + + + Constructor which takes one parameter - an error message + + + + diff --git a/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.Metadata.dll b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.Metadata.dll new file mode 100644 index 0000000..1178709 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.Metadata.dll differ diff --git a/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.Metadata.xml b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.Metadata.xml new file mode 100644 index 0000000..a03cad5 --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.Metadata.xml @@ -0,0 +1,373 @@ + + + + Microsoft.Scripting.Metadata + + + + + Represents a block in memory. + + + + + Reads data from a memory block. Maintains a position. + + + + + Reads zero terminated sequence of bytes of given maximal length and converts it into an ASCII string. + + + + + Zero terminated, UTF8 encoded sequence of bytes representing a name in metadata (a type name, a member name, etc). + The name is bound to the module it was retrieved from. The module is kept alive until all its metadata names are collected. + Doesn't cache hashcode, byte or character count. + + + + + Gets the module whose metadata tables this instance represents. + Null if the tables reflect unloaded module file. + + + + + Gets the path of the module whose metadata tables this instance represents. + Null for in-memory modules that are not backed by a file. + + The path is not accessible in partial trust. + + + + Returns AssemblyDef for manifest modules, null token otherwise. + + + + + Token is null or represents a row in a metadata table. + + + + + Gets the number of records in the view. + If the view is over an entire table this operation is O(1), + otherwise it might take up to O(log(#records in the table)). + + + + + Module table entry (0x00 tokens). + + + + + TypeRef table entry (0x01 tokens). + + + + + AssemblyRef: + If the target type is defined in a different Assembly from the current module. + TypeRef: + Target type is nested in TypeRef. + ModuleRef: + Target type is defined in another module within the same Assembly as this one. + ModuleDef: + If the target type is defined in the current module (this should not occur in a CLI "compressed metadata" module). + Null token: + There shall be a row in the ExportedType table for this Type - its Implementation field shall contain + a File token or an AssemblyRef token that says where the type is defined. + + + + + TypeDef table entry (0x02 tokens). + + + + + Flags field in TypeDef table. + + + + + Finds a nesting type-def. The search time is logarithmic in the number of nested types defined in the owning module. + Returns a null token if this is not a nested type-def. + + + + + O(log(#generic parameters in module)) + + + + + This typedef represents a container of global functions and fields (manufactured <Module> type). + + + + + Combines Field (0x04 tokens), FieldRVA (0x1d tokens) and Constant (0x0B) table entries. + + + + + Flags field in the Field table. + + + + + O(log(#fields, parameters and properties with default value)). + Returns if the field doesn't have a default value. + + + + + Returns null reference iff the field has no RVA. + If size is 0 the memory block will span over the rest of the data section. + O(log(#fields with RVAs)). + + + + + Finds type-def that declares this field. The search time is logarithmic in the number of types defined in the owning module. + + + + + MethodDef table entry (0x06 tokens). + + + + + ImplFlags field in the MethodDef table. + + + + + Flags field in the MethodDef table. + + + + + Returns a null reference iff the method has no body. + If size is 0 the memory block will span over the rest of the data section. + + + + + Finds type-def that declares this method. The search time is logarithmic in the number of types defined in the owning module. + + + + + O(log(#generic parameters in module)) + + + + + Param table entry (0x08 tokens). + + + + + Value greater or equal to zero and less than or equal to the number of parameters in owner method. + A value of 0 refers to the owner method's return type; its parameters are then numbered from 1 onwards. + Not all parameters need to have a corresponding ParamDef entry. + + + + + O(log(#fields, parameters and properties with default value)). + Returns if the field doesn't have a default value. + + + + + Binary searches MethodDef table for a method that declares this parameter. + + + + + InterfaceImpl table entry (0x09 tokens). + TODO: we might not need this - TypeDef.ImplementedInterfaces might be a special enumerator that directly returns InterfaceType tokens. + + + + + Could be a null token in EnC scenarios. + + + + + TypeDef, TypeRef, or TypeSpec. + + + + + MemberRef table entry (0x0A tokens). + Stores MethodRefs and FieldRefs. + + + + + TypeRef or TypeDef: + If the class that defines the member is defined in another module. + Note that it is unusual, but valid, to use a TypeRef token when the member is defined in this same module, + in which case, its TypeDef token can be used instead. + ModuleRef: + If the member is defined, in another module of the same assembly, as a global function or variable. + MethodDef: + When used to supply a call-site signature for a vararg method that is defined in this module. + The Name shall match the Name in the corresponding MethodDef row. + The Signature shall match the Signature in the target method definition + TypeSpec: + If the member is a member of a generic type + + + + + CustomAttribute table entry (0x0C tokens). + + + + + Any token except the CustomAttribute. + + + + + Returns the value of Type column in the CustomAttribute table. + MethodDef or MemberRef. + + + + + Value blob. + + + + + StandAloneSig table entry (0x11 token). + + + + + Combines information from PropertyMap (0x15), MethodSemantics (0x18) and Property (0x17) tables. + + + + + O(log(#fields, parameters and properties with default value)). + Returns if the field doesn't have a default value. + + + + + Finds type-def that declares this property. The search time is logarithmic in the number of types with properties defined in the owning module. + + + + + Combines information from EventMap (0x15), MethodSemantics (0x18) and Event (0x17) tables. + + + + + Finds type-def that declares this event. The search time is logarithmic in the number of types with events defined in the owning module. + + + + + ModuleRef table entry (0x1A tokens). + + + + + TypeSpec table entry (0x1B tokens). + + + + + Assembly table entry (0x20 tokens). + + + + + Assembly table entry (0x23 tokens). + + + + + File table entry (0x26 tokens). + + + + + ExportedType table entry (0x27 tokens). + + + + + Forwarded type: AssemblyRef + Nested types: ExportedType + Type in another module of this assembly: FileDef + + + + + ManifestResource table entry (0x28 tokens). + + + + + NestedClass table entry (0x29 tokens). + TODO: Don't need if we exposed nested types enumeration on type-def directly and build TypeNesting mapping lazily. + + + + + GenericParam table entry (0x2A tokens). + + + + + Value greater or equal to zero and less than or equal to the number of parameters in owner method/type. + All generic parameters are listed in the table. + + + + + TypeDef or MethodDef. + + + + + GenericParamConstraint table entry (0x2C tokens). + + + + + TypeDef, TypeRef, or TypeSpec. + + + + + MethodSpec table entry (0x2B tokens). + Used when decoding IL instructions. + + + + + MethodDef or MethodRef. + + + + + We need to be able to construct tokens out of byte-code. + + + + diff --git a/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.dll b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.dll new file mode 100644 index 0000000..9b2f773 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.dll differ diff --git a/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.xml b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.xml new file mode 100644 index 0000000..c6b0e49 --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/Microsoft.Scripting.xml @@ -0,0 +1,3837 @@ + + + + Microsoft.Scripting + + + + + Class that represents compiler options. + Note that this class is likely to change when hosting API becomes part of .Net + + + + + This overload will be called when a SourceUnit is not available. This can happen if the code is being executed remotely, + since SourceUnit cannot be marshaled across AppDomains. + + + + + Hosting API counterpart for . + + + + + Engine that compiled this code. + + + + + Default scope for this code. + + + + + Executes code in a default scope. + + + + + Execute code within a given scope and returns the result. + + + + + Executes code in in a default scope and converts to a given type. + + + + + Execute code within a given scope and converts result to a given type. + + + + + Executes the code in an empty scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + + + + Executes the code in the specified scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + + + + Executes the code in an empty scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + If an exception is thrown the exception is caught and an ObjectHandle to + the exception is provided. + + + Use this API to handle non-serializable exceptions (exceptions might not be serializable due to security restrictions) + or if an exception serialization loses information. + + + + + Executes the expression in the specified scope and return a result. + Returns an ObjectHandle wrapping the resulting value of running the code. + + If an exception is thrown the exception is caught and an ObjectHandle to + the exception is provided. + + + Use this API to handle non-serializable exceptions (exceptions might not be serializable due to security restrictions) + or if an exception serialization loses information. + + + + + Provides documentation against live objects for use in a REPL window. + + + + + Gets the available members defined on the provided object. + + + + + Gets the overloads available for the provided object if it is invokable. + + + + + Gets the available members on the provided remote object. + + + + + Gets the overloads available for the provided remote object if it is invokable. + + + + + The host can use this class to track for errors reported during script parsing and compilation. + Hosting API counterpart for . + + + + + Bridges ErrorSink and ErrorListener. + Errors reported by language compilers to ErrorSink are forwarded to the ErrorListener provided by the host. + + + This proxy is created in the scenario when the compiler is processing a single SourceUnit. + Therefore it could maintain one to one mapping from SourceUnit to ScriptSource. + In a case, which shouldn't happen, that the compiler reports an error in a different SourceUnit we just create + a new instance of the ScriptSource each time. + + TODO: Consider compilation of multiple source units and creating a hashtable mapping SourceUnits to ScriptSources + within the context of compilation unit. + + + + + Bridges ErrorListener and ErrorSink. It provides the reverse functionality as ErrorSinkProxyListener + + + + + Stores information needed to setup a language + + + + + Creates a new LanguageSetup + + assembly qualified type name of the language + provider + + + + Creates a new LanguageSetup with the provided options + TODO: remove this overload? + + + + + Creates a new LanguageSetup with the provided options + + + + + Gets an option as a strongly typed value. + + + + + The assembly qualified type name of the language provider + + + + + Display name of the language. If empty, it will be set to the first + name in the Names list. + + + + + Case-insensitive language names. + + + + + Case-insensitive file extension, optionally starts with a dot. + + + + + Option names are case-sensitive. + + + + + Provides documentation about a member in a live object. + + + + + The name of the member + + + + + The kind of the member if it's known. + + + + + Specifies the type of member. + + + + + ObjectOperations provide a large catalogue of object operations such as member access, conversions, + indexing, and things like addition. There are several introspection and tool support services available + for more advanced hosts. + + You get ObjectOperation instances from ScriptEngine, and they are bound to their engines for the semantics + of the operations. There is a default instance of ObjectOperations you can share across all uses of the + engine. However, very advanced hosts can create new instances. + + + + + Returns true if the object can be called, false if it cannot. + + Even if an object is callable Call may still fail if an incorrect number of arguments or type of arguments are provided. + + + + + Invokes the provided object with the given parameters and returns the result. + + The prefered way of calling objects is to convert the object to a strongly typed delegate + using the ConvertTo methods and then invoking that delegate. + + + + + Invokes a member on the provided object with the given parameters and returns the result. + + + + + Creates a new instance from the provided object using the given parameters, and returns the result. + + + + + Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only. + + + + + Gets the member name from the object obj and converts it to the type T. Throws an exception if the + member does not exist, is write-only, or cannot be converted. + + + + + Gets the member name from the object obj. Returns true if the member is successfully retrieved and + stores the value in the value out param. + + + + + Returns true if the object has a member named name, false if the member does not exist. + + + + + Removes the member name from the object obj. + + + + + Sets the member name on object obj to value. + + + + + Sets the member name on object obj to value. This overload can be used to avoid + boxing and casting of strongly typed members. + + + + + Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only. + + + + + Gets the member name from the object obj and converts it to the type T. Throws an exception if the + member does not exist, is write-only, or cannot be converted. + + + + + Gets the member name from the object obj. Returns true if the member is successfully retrieved and + stores the value in the value out param. + + + + + Returns true if the object has a member named name, false if the member does not exist. + + + + + Removes the member name from the object obj. + + + + + Sets the member name on object obj to value. + + + + + Sets the member name on object obj to value. This overload can be used to avoid + boxing and casting of strongly typed members. + + + + + Converts the object obj to the type T. The conversion will be explicit or implicit depending on + what the langauge prefers. + + + + + Converts the object obj to the type type. The conversion will be explicit or implicit depending on + what the langauge prefers. + + + + + Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot. + + The conversion will be explicit or implicit depending on what the langauge prefers. + + + + + Converts the object obj to the type type. Returns true if the value can be converted, false if it cannot. + + The conversion will be explicit or implicit depending on what the langauge prefers. + + + + + Converts the object obj to the type T including explicit conversions which may lose information. + + + + + Converts the object obj to the type type including explicit conversions which may lose information. + + + + + Converts the object obj to the type T including explicit conversions which may lose information. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type type including explicit conversions which may lose information. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type T including implicit conversions. + + + + + Converts the object obj to the type type including implicit conversions. + + + + + Converts the object obj to the type T including implicit conversions. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type type including implicit conversions. + + Returns true if the value can be converted, false if it cannot. + + + + + Performs a generic unary operation on the specified target and returns the result. + + + + + Performs a generic unary operation on the strongly typed target and returns the value as the specified type + + + + + Performs the generic binary operation on the specified targets and returns the result. + + + + + Peforms the generic binary operation on the specified strongly typed targets and returns + the strongly typed result. + + + + + Performs addition on the specified targets and returns the result. Throws an exception + if the operation cannot be performed. + + + + + Performs subtraction on the specified targets and returns the result. Throws an exception + if the operation cannot be performed. + + + + + Raises the first object to the power of the second object. Throws an exception + if the operation cannot be performed. + + + + + Multiplies the two objects. Throws an exception + if the operation cannot be performed. + + + + + Divides the first object by the second object. Throws an exception + if the operation cannot be performed. + + + + + Performs modulus of the 1st object by the second object. Throws an exception + if the operation cannot be performed. + + + + + Shifts the left object left by the right object. Throws an exception if the + operation cannot be performed. + + + + + Shifts the left object right by the right object. Throws an exception if the + operation cannot be performed. + + + + + Performs a bitwise-and of the two operands. Throws an exception if the operation + cannot be performed. + + + + + Performs a bitwise-or of the two operands. Throws an exception if the operation + cannot be performed. + + + + + Performs a exclusive-or of the two operands. Throws an exception if the operation + cannot be performed. + + + + + Compares the two objects and returns true if the left object is less than the right object. + Throws an exception if hte comparison cannot be performed. + + + + + Compares the two objects and returns true if the left object is greater than the right object. + Throws an exception if hte comparison cannot be performed. + + + + + Compares the two objects and returns true if the left object is less than or equal to the right object. + Throws an exception if hte comparison cannot be performed. + + + + + Compares the two objects and returns true if the left object is greater than or equal to the right object. + Throws an exception if hte comparison cannot be performed. + + + + + Compares the two objects and returns true if the left object is equal to the right object. + Throws an exception if the comparison cannot be performed. + + + + + Compares the two objects and returns true if the left object is not equal to the right object. + Throws an exception if hte comparison cannot be performed. + + + + + Returns a string which describes the object as it appears in source code + + + + + Returns a string representation of the object in a language specific object display format. + + + + + Returns a list of strings which contain the known members of the object. + + + + + Returns a string providing documentation for the specified object. + + + + + Returns a list of signatures applicable for calling the specified object in a form displayable to the user. + + + + + Returns true if the remote object is callable. + + + + + Invokes the specified remote object with the specified remote parameters. + + Though delegates are preferable for calls they may not always be usable for remote objects. + + + + + Invokes the specified remote object with the local parameters which will be serialized + to the remote app domain. + + + + + Creates a new remote instance from the provided remote object using the given parameters, and returns the result. + + + + + Creates a new remote instance from the provided remote object using the given parameters, and returns the result. + + + + + Sets the remote object as a member on the provided remote object. + + + + + Sets the member name on the remote object obj to value. This overload can be used to avoid + boxing and casting of strongly typed members. + + + + + Gets the member name on the remote object. Throws an exception if the member is not defined or + is write-only. + + + + + Gets the member name on the remote object. Throws an exception if the member is not defined or + is write-only. + + + + + Gets the member name on the remote object. Returns false if the member is not defined or + is write-only. + + + + + Tests to see if the member name is defined on the remote object. + + + + + Removes the member from the remote object + + + + + Converts the remote object into the specified type returning a handle to + the new remote object. The conversion will be explicit or implicit depending on + what the langauge prefers. + + + + + Converts the remote object into the specified type returning a handle to + the new remote object. The conversion will be explicit or implicit depending on + what the langauge prefers. + + + + + Converts the remote object into the specified type returning a handle to + the new remote object. Returns true if the value can be converted, + false if it cannot. The conversion will be explicit or implicit depending on + what the langauge prefers. + + + + + Converts the remote object into the specified type returning a handle to + the new remote object. Returns true if the value can be converted, + false if it cannot. The conversion will be explicit or implicit depending on + what the langauge prefers. + + + + + Converts the object obj to the type T including explicit conversions which may lose information. + + + + + Converts the object obj to the type type including explicit conversions which may lose information. + + + + + Converts the object obj to the type T including explicit conversions which may lose information. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type type including explicit conversions which may lose information. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type T including implicit conversions. + + + + + Converts the object obj to the type type including implicit conversions. + + + + + Converts the object obj to the type T including implicit conversions. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type type including implicit conversions. + + Returns true if the value can be converted, false if it cannot. + + + + + Unwraps the remote object and converts it into the specified type before + returning it. + + + + + Performs the specified unary operator on the remote object. + + + + + Performs the specified binary operator on the remote object. + + + + + Adds the two remote objects. Throws an exception if the operation cannot be performed. + + + + + Subtracts the 1st remote object from the second. Throws an exception if the operation cannot be performed. + + + + + Raises the 1st remote object to the power of the 2nd. Throws an exception if the operation cannot be performed. + + + + + Multiplies the two remote objects. Throws an exception if the operation cannot be performed. + + + + + Divides the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed. + + + + + Performs modulus on the 1st remote object by the 2nd. Throws an exception if the operation cannot be performed. + + + + + Shifts the 1st remote object left by the 2nd remote object. Throws an exception if the operation cannot be performed. + + + + + Shifts the 1st remote object right by the 2nd remote object. Throws an exception if the operation cannot be performed. + + + + + Performs bitwise-and on the two remote objects. Throws an exception if the operation cannot be performed. + + + + + Performs bitwise-or on the two remote objects. Throws an exception if the operation cannot be performed. + + + + + Performs exclusive-or on the two remote objects. Throws an exception if the operation cannot be performed. + + + + + Compares the two remote objects and returns true if the 1st is less than the 2nd. Throws an exception if the operation cannot be performed. + + + + + Compares the two remote objects and returns true if the 1st is greater than the 2nd. Throws an exception if the operation cannot be performed. + + + + + Compares the two remote objects and returns true if the 1st is less than or equal to the 2nd. Throws an exception if the operation cannot be performed. + + + + + Compares the two remote objects and returns true if the 1st is greater than or equal to than the 2nd. Throws an exception if the operation cannot be performed. + + + + + Compares the two remote objects and returns true if the 1st is equal to the 2nd. Throws an exception if the operation cannot be performed. + + + + + Compares the two remote objects and returns true if the 1st is not equal to the 2nd. Throws an exception if the operation cannot be performed. + + + + + Returns a string representation of the object in a langauge specific object display format. + + + + + Returns a list of strings which contain the known members of the remote object. + + + + + Returns a string providing documentation for the specified remote object. + + + + + Returns a list of signatures applicable for calling the specified object in a form displayable to the user. + + + + + Helper to unwrap an object - in the future maybe we should validate the current app domain. + + + + + Helper to unwrap multiple objects + + + + + Provides documentation for a single overload of an invokable object. + + + + + The name of the invokable object. + + + + + The documentation for the overload or null if no documentation is available. + + + + + The parameters for the invokable object. + + + + + Information about the return value. + + + + + Provides documentation for a single parameter. + + + + + The name of the parameter + + + + + The type name of the parameter or null if no type information is available. + + + + + Provides addition information about the parameter such as if it's a parameter array. + + + + + Gets the documentation string for this parameter or null if no documentation is available. + + + + + Indications extra information about a parameter such as if it's a parameter array. + + + + + Advanced APIs for HAPI providers. These methods should not be used by hosts. + They are provided for other hosting API implementers that would like to leverage existing HAPI and + extend it with language specific functionality, for example. + + + + is a null reference. + is remote. + + + e is a null reference. + is remote. + + + is a null reference. + is remote. + + + is a null reference. + is remote. + + + is a null reference. + is remote. + + + is a null reference. + is remote. + + + is a null reference. + is a null reference. + is a transparent proxy. + + + + Performs a callback in the ScriptEngine's app domain and returns the result. + + + + + Creates a new DocumentationOperations object from the given DocumentationProvider. + + + + + Represents a language in Hosting API. + Hosting API counterpart for . + + + + + Returns a default ObjectOperations for the engine. + + Because an ObjectOperations object caches rules for the types of + objects and operations it processes, using the default ObjectOperations for + many objects could degrade the caching benefits. Eventually the cache for + some operations could degrade to a point where ObjectOperations stops caching and + does a full search for an implementation of the requested operation for the given objects. + + Another reason to create a new ObjectOperations instance is to have it bound + to the specific view of a ScriptScope. Languages may attach per-language + behavior to a ScriptScope which would alter how the operations are performed. + + For simple hosting situations, this is sufficient behavior. + + + + + + + Returns a new ObjectOperations object. See the Operations property for why you might want to call this. + + + + + Returns a new ObjectOperations object that inherits any semantics particular to the provided ScriptScope. + + See the Operations property for why you might want to call this. + + + + + Executes an expression. The execution is not bound to any particular scope. + + The engine doesn't support code execution. + is a null reference. + + + + Executes an expression within the specified scope. + + The engine doesn't support code execution. + is a null reference. + is a null reference. + + + + Executes an expression within a new scope and converts result to the given type. + + The engine doesn't support code execution. + is a null reference. + + + + Executes an expression within the specified scope and converts result to the given type. + + The engine doesn't support code execution. + is a null reference. + is a null reference. + + + + Executes content of the specified file in a new scope and returns that scope. + + The engine doesn't support code execution. + is a null reference. + + + + Executes content of the specified file against the given scope. + + The . + The engine doesn't support code execution. + is a null reference. + is a null reference. + + + + Executes the expression in the specified scope and return a result. + Returns an ObjectHandle wrapping the resulting value of running the code. + + + + + Executes the code in an empty scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + + + + Executes the expression in the specified scope and return a result. + Returns an ObjectHandle wrapping the resulting value of running the code. + + If an exception is thrown the exception is caught and an ObjectHandle to + the exception is provided. + + + Use this API in case the exception is not serializable (for example, due to security restrictions) or its serialization + loses information that you need to access. + + + + + Executes the code in an empty scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + If an exception is thrown the exception is caught and an ObjectHandle to + the exception is provided. + + + Use this API in case the exception is not serializable (for example, due to security restrictions) or its serialization + loses information that you need to access. + + + + + Creates a new ScriptScope using the default storage container + + + + + Creates a new ScriptScope whose storage contains the provided dictionary of objects + + Accesses to the ScriptScope will turn into get,set, and delete members against this dictionary + + + + + Creates a new ScriptScope whose storage is an arbitrary object. + + Accesses to the ScriptScope will turn into get, set, and delete members against the object. + + + + + This method returns the ScriptScope in which a ScriptSource of given path was executed. + + The ScriptSource.Path property is the key to finding the ScriptScope. Hosts need + to make sure they create a ScriptSource and set its Path property appropriately. + + GetScope is primarily useful for tools that need to map files to their execution scopes. For example, + an editor and interpreter tool might run a file Foo that imports or requires a file Bar. + + The editor's user might later open the file Bar and want to execute expressions in its context. + The tool would need to find Bar's ScriptScope for setting the appropriate context in its interpreter window. + This method helps with this scenario. + + + + + Return a ScriptSource object from string contents with the current engine as the language binding. + + The default SourceCodeKind is AutoDetect. + + The ScriptSource's Path property defaults to null. + + + + + Return a ScriptSource object from string contents with the current engine as the language binding. + + The ScriptSource's Path property defaults to null. + + + + + Return a ScriptSource object from string contents with the current engine as the language binding. + + The default SourceCodeKind is AutoDetect. + + + + + Return a ScriptSource object from string contents. These are helpers for creating ScriptSources' with the right language binding. + + + + + Return a ScriptSource object from file contents with the current engine as the language binding. + + The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions + or map to this language engine with ScriptRuntime.GetEngineByFileExtension. + + The default SourceCodeKind is File. + + The ScriptSource's Path property will be the path argument. + + The encoding defaults to System.Text.Encoding.Default. + + + + + Return a ScriptSource object from file contents with the current engine as the language binding. + + The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions + or map to this language engine with ScriptRuntime.GetEngineByFileExtension. + + The default SourceCodeKind is File. + + The ScriptSource's Path property will be the path argument. + + + + + Return a ScriptSource object from file contents with the current engine as the language binding. + + The path's extension does NOT have to be in ScriptRuntime.GetRegisteredFileExtensions + or map to this language engine with ScriptRuntime.GetEngineByFileExtension. + + The ScriptSource's Path property will be the path argument. + + + + + This method returns a ScriptSource object from a System.CodeDom.CodeObject. + This is a factory method for creating a ScriptSources with this language binding. + + The expected CodeDom support is extremely minimal for syntax-independent expression of semantics. + + Languages may do more, but hosts should only expect CodeMemberMethod support, + and only sub nodes consisting of the following: + CodeSnippetStatement + CodeSnippetExpression + CodePrimitiveExpression + CodeMethodInvokeExpression + CodeExpressionStatement (for holding MethodInvoke) + + + + + This method returns a ScriptSource object from a System.CodeDom.CodeObject. + This is a factory method for creating a ScriptSources with this language binding. + + The expected CodeDom support is extremely minimal for syntax-independent expression of semantics. + + Languages may do more, but hosts should only expect CodeMemberMethod support, + and only sub nodes consisting of the following: + CodeSnippetStatement + CodeSnippetExpression + CodePrimitiveExpression + CodeMethodInvokeExpression + CodeExpressionStatement (for holding MethodInvoke) + + + + + This method returns a ScriptSource object from a System.CodeDom.CodeObject. + This is a factory method for creating a ScriptSources with this language binding. + + The expected CodeDom support is extremely minimal for syntax-independent expression of semantics. + + Languages may do more, but hosts should only expect CodeMemberMethod support, + and only sub nodes consisting of the following: + CodeSnippetStatement + CodeSnippetExpression + CodePrimitiveExpression + CodeMethodInvokeExpression + CodeExpressionStatement (for holding MethodInvoke) + + + + + This method returns a ScriptSource object from a System.CodeDom.CodeObject. + This is a factory method for creating a ScriptSources with this language binding. + + The expected CodeDom support is extremely minimal for syntax-independent expression of semantics. + + Languages may do more, but hosts should only expect CodeMemberMethod support, + and only sub nodes consisting of the following: + CodeSnippetStatement + CodeSnippetExpression + CodePrimitiveExpression + CodeMethodInvokeExpression + CodeExpressionStatement (for holding MethodInvoke) + + + + + These methods return ScriptSource objects from stream contents with the current engine as the language binding. + + The default SourceCodeKind is File. + + The encoding defaults to Encoding.Default. + + + + + These methods return ScriptSource objects from stream contents with the current engine as the language binding. + + The default SourceCodeKind is File. + + + + + These methods return ScriptSource objects from stream contents with the current engine as the language binding. + + The encoding defaults to Encoding.Default. + + + + + This method returns a ScriptSource with the content provider supplied with the current engine as the language binding. + + This helper lets you own the content provider so that you can implement a stream over internal host data structures, such as an editor's text representation. + + + + + This method returns a language-specific service. + + It provides a point of extensibility for a language implementation + to offer more functionality than the standard engine members discussed here. + + Commonly available services include: + TokenCategorizer + Provides standardized tokenization of source code + ExceptionOperations + Provides formatting of exception objects. + DocumentationProvidera + Provides documentation for live object. + + + + + This property returns readon-only LanguageOptions this engine is using. + + + The values are determined during runtime initialization and read-only afterwards. + You can change the settings via a configuration file or explicitly using ScriptRuntimeSetup class. + + + + + This property returns the ScriptRuntime for the context in which this engine executes. + + + + + This property returns the engine's version as a string. The format is language-dependent. + + + + + Sets the search paths used by the engine for loading files when a script wants + to import or require another file of code. + + The language doesn't allow to set search paths. + + + + Gets the search paths used by the engine for loading files when a script wants + to import or require another file of code. + + + + + ScriptHost is collocated with ScriptRuntime in the same app-domain. + The host can implement a derived class to consume some notifications and/or + customize operations like TryGetSourceUnit,ResolveSourceUnit, etc. + + The areguments to the the constructor of the derived class are specified in ScriptRuntimeSetup + instance that enters ScriptRuntime initialization. + + If the host is remote with respect to DLR (i.e. also with respect to ScriptHost) + and needs to access objects living in its app-domain it can pass MarshalByRefObject + as an argument to its ScriptHost subclass constructor. + + + + + The runtime the host is attached to. + + + + + Invoked after the initialization of the associated Runtime is finished. + The host can override this method to perform additional initialization of runtime (like loading assemblies etc.). + + + + + Invoked after a new language is loaded into the Runtime. + The host can override this method to perform additional initialization of language engines. + + + + + Provides hosting to DLR. Forwards DLR requests to the ScriptHost. + + + + + Provides host-redirectable IO streams used by DLR languages for default IO. + + + + + Used if the host stores the output as binary data. + + Binary stream to write data to. + Encoding used to convert textual data written to the output by the script. + + + + Used if the host handles both kinds of data (textual and binary) by itself. + + + + + Represents a Dynamic Language Runtime in Hosting API. + Hosting API counterpart for . + + + + + Creates ScriptRuntime in the current app-domain and initialized according to the the specified settings. + Creates an instance of host class specified in the setup and associates it with the created runtime. + Both Runtime and ScriptHost are collocated in the current app-domain. + + + + + Creates a new runtime with languages set up according to the current application configuration + (using System.Configuration). + + + + + Creates ScriptRuntime in the current app-domain and initialized according to the the specified settings. + Creates an instance of host class specified in the setup and associates it with the created runtime. + Both Runtime and ScriptHost are collocated in the specified app-domain. + + + + + + + + + Gets engine for the specified language. + + + + + Looks up the engine for the specified language. If the engine hasn't been created in this Runtime, it is instantiated here. + The method doesn't lock nor send notifications to the host. + + + + + path is empty, contains one or more of the invalid characters defined in GetInvalidPathChars or doesn't have an extension. + + + + path is null + file extension does not map to language engine + language does not have any search paths + file does exist in language's search path + + + + This property returns the "global object" or name bindings of the ScriptRuntime as a ScriptScope. + + You can set the globals scope, which you might do if you created a ScriptScope with an + IAttributesCollection so that your host could late bind names. + + + + + This method walks the assembly's namespaces and name bindings to ScriptRuntime.Globals + to represent the types available in the assembly. Each top-level namespace name gets + bound in Globals to a dynamic object representing the namespace. Within each top-level + namespace object, nested namespace names are bound to dynamic objects representing each + tier of nested namespaces. When this method encounters the same namespace-qualified name, + it merges names together objects representing the namespaces. + + + + + + Stores information needed to setup a ScriptRuntime + + + + + The list of language setup information for languages to load into + the runtime + + + + + Indicates that the script runtime is in debug mode. + This means: + + 1) Symbols are emitted for debuggable methods (methods associated with SourceUnit). + 2) Debuggable methods are emitted to non-collectable types (this is due to CLR limitations on dynamic method debugging). + 3) JIT optimization is disabled for all methods + 4) Languages may disable optimizations based on this value. + + + + + Ignore CLR visibility checks + + + + + Can be any derived class of ScriptHost. When set, it allows the + host to override certain methods to control behavior of the runtime + + + + + Option names are case-sensitive. + + + + + Arguments passed to the host type when it is constructed + + + + + Reads setup from .NET configuration system (.config files). + If there is no configuration available returns an empty setup. + + + + + Reads setup from a specified XML stream. + + + + + Reads setup from a specified XML file. + + + + + A ScriptScope is a unit of execution for code. It consists of a global Scope which + all code executes in. A ScriptScope can have an arbitrary initializer and arbitrary + reloader. + + ScriptScope is not thread safe. Host should either lock when multiple threads could + access the same module or should make a copy for each thread. + + Hosting API counterpart for . + + + + + Gets an engine for the language associated with this scope. + Returns invariant engine if the scope is language agnostic. + + + + + Gets a value stored in the scope under the given name. + + The specified name is not defined in the scope. + is a null reference. + + + + Gets a value stored in the scope under the given name. + Converts the result to the specified type using the conversion that the language associated with the scope defines. + If no language is associated with the scope, the default CLR conversion is attempted. + + The specified name is not defined in the scope. + is a null reference. + + + + Tries to get a value stored in the scope under the given name. + + is a null reference. + + + + Tries to get a value stored in the scope under the given name. + Converts the result to the specified type using the conversion that the language associated with the scope defines. + If no language is associated with the scope, the default CLR conversion is attempted. + + is a null reference. + + + + Sets the name to the specified value. + + is a null reference. + + + + Gets a handle for a value stored in the scope under the given name. + + The specified name is not defined in the scope. + is a null reference. + + + + Tries to get a handle for a value stored in the scope under the given name. + Returns true if there is such name, false otherwise. + + is a null reference. + + + + Sets the name to the specified value. + + + The value held by the handle isn't from the scope's app-domain and isn't serializable or MarshalByRefObject. + + or is a null reference. + + + + Determines if this context or any outer scope contains the defined name. + + is a null reference. + + + + Removes the variable of the given name from this scope. + + true if the value existed in the scope before it has been removed. + is a null reference. + + + + Gets a list of variable names stored in the scope. + + + + + Gets an array of variable names and their values stored in the scope. + + + + + Hosting counterpart for . + + + + + Identification of the source unit. Assigned by the host. + The format and semantics is host dependent (could be a path on file system or URL). + null for anonymous script source. + Cannot be an empty string. + + + + + Compile the ScriptSource into CompileCode object that can be executed + repeatedly in its default scope or in other scopes without having to recompile the code. + + Code cannot be compiled. + + + + Errors are reported to the specified listener. + Returns null if the parser cannot compile the code due to errors. + + + + + Errors are reported to the specified listener. + Returns null if the parser cannot compile the code due to error(s). + + + + + Errors are reported to the specified listener. + Returns null if the parser cannot compile the code due to error(s). + + + + + Executes the code in the specified scope. + Returns an object that is the resulting value of running the code. + + When the ScriptSource is a file or statement, the engine decides what is + an appropriate value to return. Some languages return the value produced + by the last expression or statement, but languages that are not expression + based may return null. + + Code cannot be compiled. + + + + Executes the source code. The execution is not bound to any particular scope. + + + + + Executes the code in a specified scope and converts the result to the specified type. + The conversion is language specific. + + + + + Executes the code in an empty scope and converts the result to the specified type. + The conversion is language specific. + + + + + Executes the code in an empty scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + + + + Executes the code in the specified scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + + + + Executes the code in an empty scope. + Returns an ObjectHandle wrapping the resulting value of running the code. + + If an exception is thrown the exception is caught and an ObjectHandle to + the exception is provided. + + + Use this API to handle non-serializable exceptions (exceptions might not be serializable due to security restrictions) + or if an exception serialization loses information. + + + + + Executes the expression in the specified scope and return a result. + Returns an ObjectHandle wrapping the resulting value of running the code. + + If an exception is thrown the exception is caught and an ObjectHandle to + the exception is provided. + + + Use this API to handle non-serializable exceptions (exceptions might not be serializable due to security restrictions) + or if an exception serialization loses information. + + + + + Runs a specified code as if it was a program launched from OS command shell. + and returns a process exit code indicating the success or error condition + of executing the code. + + Exact behavior depends on the language. Some languages have a dedicated "exit" exception that + carries the exit code, in which case the exception is cought and the exit code is returned. + The default behavior returns the result of program's execution converted to an integer + using a language specific conversion. + + Code cannot be compiled. + + + + Detects the encoding of the content. + + + An encoding that is used by the reader of the script source to transcode its content to Unicode text. + Null if the content is already textual and no transcoding is performed. + + + Note that the default encoding specified when the script source is created could be overridden by + an encoding that is found in the content preamble (Unicode BOM or a language specific encoding preamble). + In that case the preamble encoding is returned. Otherwise, the default encoding is returned. + + An I/O error occurs. + + + + Reads specified range of lines (or less) from the source unit. + + 1-based number of the first line to fetch. + The number of lines to fetch. + + Which character sequences are considered line separators is language specific. + If language doesn't specify otherwise "\r", "\n", "\r\n" are recognized line separators. + + An I/O error occurs. + + + + Reads a specified line. + + 1-based line number. + Line content. Line separator is not included. + An I/O error occurs. + + Which character sequences are considered line separators is language specific. + If language doesn't specify otherwise "\r", "\n", "\r\n" are recognized line separators. + + + + + Gets script source content. + + Entire content. + An I/O error occurs. + + The result includes language specific preambles (e.g. "#coding:UTF-8" encoding preamble recognized by Ruby), + but not the preamble defined by the content encoding (e.g. BOM). + The entire content of the source unit is encoded by single encoding (if it is read from binary stream). + + + + + The current internal state of the scanner. + + + + + The current startLocation of the scanner. + + + + + Move the tokenizer past the next token and return its category. + + The token information associated with the token just scanned. + + + + Move the tokenizer past the next token. + + False if the end of stream has been reached, true otherwise. + + + + Get all tokens over a block of the stream. + + + + The scanner should return full tokens. If startLocation + length lands in the middle of a token, the full token + should be returned. + + s + Tokens are read until at least given amount of characters is read or the stream ends. + A enumeration of tokens. + + + + Scan from startLocation to at least startLocation + length. + + Tokens are read until at least given amount of characters is read or the stream ends. + + This method is used to determine state at arbitrary startLocation. + + False if the end of stream has been reached, true otherwise. + + + + This structure represents an immutable integer interval that describes a range of values, from Start to End. + + It is closed on the left and open on the right: [Start .. End). + + + + + Dynamically choose between interpreting, simple compilation and compilation + that takes advantage of runtime history. + + + + + The number of iterations before the interpreter starts compiling.s + + + + + Display exception detail (callstack) when exception gets caught + + + + + Whether to gather performance statistics. + + + + + Initial file search paths provided by the host. + + + + + Reads an option whose value is expected to be a collection of non-null strings. + Reaturns a read-only copy of the option's value. + + + + + Abstracts system operations that are used by DLR and could potentially be platform specific. + The host can implement its PAL to adapt DLR to the platform it is running on. + For example, the Silverlight host adapts some file operations to work against files on the server. + + + + Invalid path. + + + Invalid path. + + + + Represents a language context. Typically there is at most 1 context + associated with each language, but some languages may use more than one context + to identify code that should be treated differently. Contexts are used during + member and operator lookup. + + + + + Registers a language within the system with the specified name. + + + + + Looks up the context ID for the specified context identifier + + + + + Singleton for each language. + + + + + Must not be called under a lock as it can potentially call a user code. + + The language context's implementation failed to instantiate. + + + + Gets a value indicating whether the application is in debug mode. + This means: + + 1) Symbols are emitted for debuggable methods (methods associated with SourceUnit). + 2) Debuggable methods are emitted to non-collectable types (this is due to CLR limitations on dynamic method debugging). + 3) JIT optimization is disabled for all methods + 4) Languages may disable optimizations based on this value. + + + + + Ignore CLR visibility checks. + + + + + Provides language specific documentation for live objects. + + + + + ObjectOperations provide a large catalogue of object operations such as member access, conversions, + indexing, and things like addition. There are several introspection and tool support services available + for more advanced hosts. + + You get ObjectOperation instances from ScriptEngine, and they are bound to their engines for the semantics + of the operations. There is a default instance of ObjectOperations you can share across all uses of the + engine. However, very advanced hosts can create new instances. + + + + a dictionary of SiteKey's which are used to cache frequently used operations, logically a set + + + the # of sites we had created at the last cleanup + + + the total number of sites we've ever created + + + the number of sites required before we'll try cleaning up the cache... + + + the minimum difference between the average that is required to remove + + + the maximum number we'll remove on a single cache cleanup + + + the number of sites we should clear after if we can't make progress cleaning up otherwise + + + + Calls the provided object with the given parameters and returns the result. + + The prefered way of calling objects is to convert the object to a strongly typed delegate + using the ConvertTo methods and then invoking that delegate. + + + + + Invokes a member on the provided object with the given parameters and returns the result. + + + + + Invokes a member on the provided object with the given parameters and returns the result. + + + + + Creates a new instance from the provided object using the given parameters, and returns the result. + + + + + Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only. + + + + + Gets the member name from the object obj and converts it to the type T. Throws an exception if the + member does not exist, is write-only, or cannot be converted. + + + + + Gets the member name from the object obj. Returns true if the member is successfully retrieved and + stores the value in the value out param. + + + + + Returns true if the object has a member named name, false if the member does not exist. + + + + + Removes the member name from the object obj. + + + + + Sets the member name on object obj to value. + + + + + Sets the member name on object obj to value. This overload can be used to avoid + boxing and casting of strongly typed members. + + + + + Gets the member name from the object obj. Throws an exception if the member does not exist or is write-only. + + + + + Gets the member name from the object obj and converts it to the type T. The conversion will be explicit or implicit + depending on what the langauge prefers. Throws an exception if the member does not exist, is write-only, or cannot be converted. + + + + + Gets the member name from the object obj. Returns true if the member is successfully retrieved and + stores the value in the value out param. + + + + + Returns true if the object has a member named name, false if the member does not exist. + + + + + Removes the member name from the object obj. Returns true if the member was successfully removed + or false if the member does not exist. + + + + + Sets the member name on object obj to value. + + + + + Sets the member name on object obj to value. This overload can be used to avoid + boxing and casting of strongly typed members. + + + + + Converts the object obj to the type T. The conversion will be explicit or implicit + depending on what the langauge prefers. + + + + + Converts the object obj to the type type. The conversion will be explicit or implicit + depending on what the langauge prefers. + + + + + Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot. + + The conversion will be explicit or implicit depending on what the langauge prefers. + + + + + Converts the object obj to the type type. Returns true if the value can be converted, false if it cannot. + + The conversion will be explicit or implicit depending on what the langauge prefers. + + + + + Convers the object obj to the type T including explicit conversions which may lose information. + + + + + Converts the object obj to the type type including explicit conversions which may lose information. + + + + + Converts the object obj to the type type including explicit conversions which may lose information. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot. + + + + + Convers the object obj to the type T including implicit conversions. + + + + + Converts the object obj to the type type including implicit conversions. + + + + + Converts the object obj to the type type including implicit conversions. + + Returns true if the value can be converted, false if it cannot. + + + + + Converts the object obj to the type T. Returns true if the value can be converted, false if it cannot. + + + + + Performs a generic unary operation on the strongly typed target and returns the value as the specified type + + + + + Peforms the generic binary operation on the specified strongly typed targets and returns + the strongly typed result. + + + + + Returns a list of strings which contain the known members of the object. + + + + + Returns a string representation of the object in a language specific object display format. + + + + + Gets or creates a dynamic site w/ the specified type parameters for the provided binder. + + + This will either get the site from the cache or create a new site and return it. The cache + may be cleaned if it's gotten too big since the last usage. + + + + + Gets or creates a dynamic site w/ the specified type parameters for the provided binder. + + + This will either get the site from the cache or create a new site and return it. The cache + may be cleaned if it's gotten too big since the last usage. + + + + + Gets or creates a dynamic site w/ the specified type parameters for the provided binder. + + + This will either get the site from the cache or create a new site and return it. The cache + may be cleaned if it's gotten too big since the last usage. + + + + + Gets or creates a dynamic site w/ the specified type parameters for the provided binder. + + + This will either get the site from the cache or create a new site and return it. The cache + may be cleaned if it's gotten too big since the last usage. + + + + + Gets or creates a dynamic site w/ the specified type parameters for the provided binder. + + + This will either get the site from the cache or create a new site and return it. The cache + may be cleaned if it's gotten too big since the last usage. + + + + + Helper to create to get or create the dynamic site - called by the GetSite methods. + + + + + Removes items from the cache that have the lowest usage... + + + + + Helper class for tracking all of our unique dynamic sites and their + usage patterns. We hash on the combination of the binder and site type. + + We also track the hit count and the key holds the site associated w/ the + key. Logically this is a set based upon the binder and site-type but we + store it in a dictionary. + + + + + DLR requires any Hosting API provider to implement this class and provide its instance upon Runtime initialization. + DLR calls on it to perform basic host/system dependent operations. + + + + + Abstracts system operations that are used by DLR and could potentially be platform specific. + + + + + Helper for storing information about stack frames. + + + + + Singleton LanguageContext which represents a language-neutral LanguageContext + + + + + Internal class which binds a LanguageContext, StreamContentProvider, and Encoding together to produce + a TextContentProvider which reads binary data with the correct language semantics. + + + + + Provides language specific facilities which are typically called by the runtime. + + + + + Provides the ContextId which includes members that should only be shown for this LanguageContext. + + ContextId's are used for filtering by Scope's. + + + + + Gets the ScriptDomainManager that this LanguageContext is running within. + + + + + Whether the language can parse code and create source units. + + + + + Gets the scope associated with a file, or null if none was available + + + + + Creates a new ScriptScope using the default storage container + + + + + Creates a new ScriptScope whose storage contains the provided dictionary of objects + + Accesses to the ScriptScope will turn into get,set, and delete members against this dictionary + + + + + Creates a new ScriptScope whose storage is an arbitrary object. + + Accesses to the ScriptScope will turn into get, set, and delete members against the object. + + + + + Provides access to setting variables in scopes. + + By default this goes through ObjectOperations which can be rather slow. + Languages can override this to provide fast customized access which avoids + ObjectOperations. Languages can provide fast access to commonly used scope + types for that language. Typically this includes ScopeStorage and any other + classes which the language themselves uses for backing of a Scope. + + + + + Provides access to try getting variables in scopes. + + By default this goes through ObjectOperations which can be rather slow. + Languages can override this to provide fast customized access which avoids + ObjectOperations. Languages can provide fast access to commonly used scope + types for that language. Typically this includes ScopeStorage and any other + classes which the language themselves uses for backing of a Scope. + + + + + Provides access to getting variables in scopes and converting the result. + + By default this goes through ObjectOperations which can be rather slow. + Languages can override this to provide fast customized access which avoids + ObjectOperations. Languages can provide fast access to commonly used scope + types for that language. Typically this includes ScopeStorage and any other + classes which the language themselves uses for backing of a Scope. + + + + + Provides access to getting variables in scopes. + + By default this goes through ObjectOperations which can be rather slow. + Languages can override this to provide fast customized access which avoids + ObjectOperations. Languages can provide fast access to commonly used scope + types for that language. Typically this includes ScopeStorage and any other + classes which the language themselves uses for backing of a Scope. + + + + + Provides a text reader for source code that is to be read from a given stream. + + The stream open for reading. The stream must also allow seeking. + An encoding that should be used if the stream doesn't have Unicode or language specific preamble. + the path of the source unit if available + The reader. + An I/O error occurs. + + + + Creates the language specific CompilerOptions object for compilation of code not bound to any particular scope. + The language should flow any relevant options from LanguageContext to the newly created options instance. + + + + + Creates the language specific CompilerOptions object for compilation of code bound to a given scope. + + + + + Parses the source code within a specified compiler context. + The source unit to parse is held on by the context. + + null on failure. + Could also set the code properties and line/file mappings on the source unit. + + + + Creates a conversion binder. + + If explicitCast is true then the binder should do explicit conversions. + If explicitCast is false then the binder should do implicit conversions. + + If explicitCast is null it is up to the language to select the conversions + which closest match their normal behavior. + + + + + Gets the member names associated with the object + By default, only returns IDO names + + + + + Returns a string representation of the object in a language specific object display format. + + Dynamic sites container that could be used for any dynamic dispatches necessary for formatting. + Object to format. + A string representation of object. + + + + This attribute marks a parameter that is not allowed to be null. + It is used by the method binding infrastructure to generate better error + messages and method selection. + + + + + This attribute marks a parameter whose type is an array that is not allowed to have null items. + It is used by the method binding infrastructure to generate better error + messages and method selection. + + + + + Wraps a an IDictionary[object, object] and exposes it as an IDynamicMetaObjectProvider so that + users can access string attributes using member accesses. + + + + + Represents a host-provided variables for executable code. The variables are + typically backed by a host-provided dictionary. Languages can also associate per-language + information with the context by using scope extensions. This can be used for tracking + state which is used across multiple executions, for providing custom forms of + storage (for example object keyed access), or other language specific semantics. + + Scope objects are thread-safe as long as their underlying storage is thread safe. + + Script hosts can choose to use thread safe or thread unsafe modules but must be sure + to constrain the code they right to be single-threaded if using thread unsafe + storage. + + + + + Creates a new scope with a new empty thread-safe dictionary. + + + + + Creates a new scope which is backed by an arbitrary object for it's storage. + + + + + + Gets the ScopeExtension associated with the provided ContextId. + + + + + Sets the ScopeExtension to the provided value for the given ContextId. + + The extension can only be set once. The returned value is either the new ScopeExtension + if no value was previously set or the previous value. + + + + + Gets or sets a collection of environment variables. + + + + + Event for when a host calls LoadAssembly. After hooking this + event languages will need to call GetLoadedAssemblyList to + get any assemblies which were loaded before the language was + loaded. + + + + + Only host should redirect I/O. + + + + + Exposes a IDictionary[string, object] as a dynamic object. Gets/sets/deletes turn + into accesses on the underlying dictionary. + + + + + The current internal state of the scanner. + + + + + The current startLocation of the scanner. + + + + + Move the tokenizer past the next token and return its category. + + The token information associated with the token just scanned. + + + + Move the tokenizer past the next token. + + False if the end of stream has been reached, true otherwise. + + + + Get all tokens over a block of the stream. + + + + The scanner should return full tokens. If startLocation + length lands in the middle of a token, the full token + should be returned. + + + Tokens are read until at least given amount of characters is read or the stream ends. + A enumeration of tokens. + + + + Scan from startLocation to at least startLocation + length. + + The mininum number of characters to process while getting tokens. + + This method is used to determine state at arbitrary startLocation. + + False if the end of stream has been reached, true otherwise. + + + + This attribute is used to mark a parameter that can accept any keyword parameters that + are not bound to normal arguments. The extra keyword parameters will be + passed in a dictionary which is created for the call. + + Most languages which support params dictionaries will support the following types: + IDictionary<string, anything> + IDictionary<object, anything> + Dictionary<string, anything> + Dictionary<object, anything> + IDictionary + IAttributesCollection (deprecated) + + For languages which don't have language level support the user will be required to + create and populate the dictionary by hand. + + This attribute is the dictionary equivalent of the System.ParamArrayAttribute. + + + public static void KeywordArgFunction([ParamsDictionary]IDictionary<string, object> dict) { + foreach (var v in dict) { + Console.WriteLine("Key: {0} Value: {1}", v.Key, v.Value); + } + } + + Called from Python: + + KeywordArgFunction(a = 2, b = "abc") + + will print: + Key: a Value = 2 + Key: b Value = abc + + + + + Provides optimized and cacheable support for scope storage. + + This is the default object used for storing values in a scope. + + + + The implementation uses a case-insensitive dictionary which holds + onto ScopeVariableIgnoreCase objects. The SVIC's hold onto ScopeVariable + objects for each possible casing. + + + + + Gets the named value from the scope optionally ignoring case. + + If the named value is not present an InvalidOperationException is raised. + + + + + Attempts to get the named value from the scope optionally ignoring the case. + + Returns true if the value is present, false if it is not. + + + + + Sets the named value in the scope optionally ignoring the case. + + + + + Deletes the named value from the scope optionally ignoring the case. + + + + + Checks if the named value is present in the scope optionally ignoring the case. + + + + + Gets the IScopeVariable for the scope optionally ignoring case. + + The IScopeVariable can be held onto and get/set/deleted without performing + a dictionary lookup on subsequent accesses. + + + + + Gets the ScopeVariable for the scope in a case-sensitive manner. + + The ScopeVariable can be held onto and get/set/deleted without performing + a dictionary lookup on subsequent accesses. + + + + + Gets the ScopeVariableIgnoreCase for the scope in a case-insensitive manner. + + The ScopeVariable can be held onto and get/set/deleted without performing + a dictionary lookup on subsequent accesses. + + + + + Provides convenient case-sensitive value access. + + + + + Returns all of the member names which currently have values in the scope. + + The list contains all available casings. + + + + + Returns all of the member names and their associated values from the scope. + + The list contains all available casings. + + + + + Provides a common interface for accessing both case sensitive and + case insensitive variable storage. + + + + + True if the scope has a value, false if it does not. + + + + + Atempts to get the value. If a value is assigned it returns true otherwise + it returns false. + + + + + Sets the current value in the scope. + + + + + Removes the current value from the scope. + + + + + Boxes the value for storage in a scope. Languages or consumers of the scope + can save this value and use it to get/set the current value in the scope for + commonly accessed values. + + ScopeVariables are case sensitive and will only refer to a single value. + + + + + True if the scope has a value, false if it does not. + + + + + Atempts to get the value. If a value is assigned it returns true otherwise + it returns false. + + + + + Sets the current value in the scope. + + + + + Removes the current value from the scope. + + + + + Boxes the value for storage in a scope. Languages or consumers of the scope + can save this value and use it to get/set the current value in the scope for + commonly accessed values. + + ScopeVariablesIgnoreCase are case insensitive and may access different casings + depending on how other gets/sets occur in the scope. + + + + + True if the scope has a value, false if it does not. + + + + + Atempts to get the value. If a value is assigned it returns true otherwise + it returns false. + + + + + Sets the current value in the scope. + + + + + Removes the current value from the scope. + + + + + ScriptCode is an instance of compiled code that is bound to a specific LanguageContext + but not a specific ScriptScope. The code can be re-executed multiple times in different + scopes. Hosting API counterpart for this class is CompiledCode. + + + + + Provides a factory to create streams over one source of binary content. + + StreamContentProvider's are used when opening a file of an unknown encoding. The + StreamContentProvider will be wrapped in a TextContentProvider provided by the language + which can support a language specific way of interpreting the binary data into text. + + For example some languages allow a marker at the beginning of the file which specifies + the encoding of the rest of the file. + + + + + Creates a new Stream which is backed by the content the StreamContentProvider was created for. + + For example if the StreamContentProvider was backing a file then GetStream re-opens the file and returns + the new stream. + + This method may be called multiple times. For example once to compile the code and again to get + the source code to display error messages. + + + + + See also Microsoft.VisualStudio.Package.TokenTriggers. + + + + + Source code is a syntactically correct. + + + + + Source code represents an empty statement/expression. + + + + + Source code is already invalid and no suffix can make it syntactically correct. + + + + + Last token is incomplete. Source code can still be completed correctly. + + + + + Last statement is incomplete. Source code can still be completed correctly. + + + + + Defines a kind of the source code. The parser sets its initial state accordingly. + + + + + The code is an expression. + + + + + The code is a sequence of statements. + + + + + The code is a single statement. + + + + + The code is a content of a file. + + + + + The code is an interactive command. + + + + + The language parser auto-detects the kind. A syntax error is reported if it is not able to do so. + + + + + Converts a generic ICollection of T into an array of T. + + If the collection is already an array of T the original collection is returned. + + + + + Wraps the provided enumerable into a ReadOnlyCollection{T} + + Copies all of the data into a new array, so the data can't be + changed after creation. The exception is if the enumerable is + already a ReadOnlyCollection{T}, in which case we just return it. + + + + + Console input stream (Console.OpenStandardInput) has a bug that manifests itself if reading small amounts of data. + This class wraps the standard input stream with a buffer that ensures that enough data are read from the underlying stream. + + + + + Requires the range [offset, offset + count] to be a subset of [0, array.Count]. + + Offset or count are out of range. + + + + Requires the range [offset, offset + count] to be a subset of [0, array.Count]. + + Offset or count are out of range. + + + + Requires the array and all its items to be non-null. + + + + + Requires the enumerable collection and all its items to be non-null. + + + + + Requires the range [offset, offset + count] to be a subset of [0, array.Count]. + + Array is null. + Offset or count are out of range. + + + + Emits an object delegate(CallSite, object * paramCount, object) that's suitable for use in a non-strongly typed call site. + Use this helper only for delegates with more parameters than Func has. + + + + + Source code reader. + + + + + Gets the encoding that is used by the reader to convert binary data read from an underlying binary stream. + Null if the reader is reading from a textual source (not performing any byte to character transcoding). + + + + + Seeks the first character of a specified line in the text stream. + + Line number. The current position is assumed to be line #1. + + Returns true if the line is found, false otherwise. + + + + + Provides a StreamContentProvider for a stream of content backed by a file on disk. + + + + + Represents a location in source code. + + + + + Creates a new source location. + + The index in the source stream the location represents (0-based). + The line in the source stream the location represents (1-based). + The column in the source stream the location represents (1-based). + + + + The index in the source stream the location represents (0-based). + + + + + The line in the source stream the location represents (1-based). + + + + + The column in the source stream the location represents (1-based). + + + + + Compares two specified location values to see if they are equal. + + One location to compare. + The other location to compare. + True if the locations are the same, False otherwise. + + + + Compares two specified location values to see if they are not equal. + + One location to compare. + The other location to compare. + True if the locations are not the same, False otherwise. + + + + Compares two specified location values to see if one is before the other. + + One location to compare. + The other location to compare. + True if the first location is before the other location, False otherwise. + + + + Compares two specified location values to see if one is after the other. + + One location to compare. + The other location to compare. + True if the first location is after the other location, False otherwise. + + + + Compares two specified location values to see if one is before or the same as the other. + + One location to compare. + The other location to compare. + True if the first location is before or the same as the other location, False otherwise. + + + + Compares two specified location values to see if one is after or the same as the other. + + One location to compare. + The other location to compare. + True if the first location is after or the same as the other location, False otherwise. + + + + Compares two specified location values. + + One location to compare. + The other location to compare. + 0 if the locations are equal, -1 if the left one is less than the right one, 1 otherwise. + + + + A location that is valid but represents no location at all. + + + + + An invalid location. + + + + + A minimal valid location. + + + + + Whether the location is a valid location. + + True if the location is valid, False otherwise. + + + + Stores the location of a span of text in a source file. + + + + + Constructs a new span with a specific start and end location. + + The beginning of the span. + The end of the span. + + + + The start location of the span. + + + + + The end location of the span. Location of the first character behind the span. + + + + + Length of the span (number of characters inside the span). + + + + + A valid span that represents no location. + + + + + An invalid span. + + + + + Whether the locations in the span are valid. + + + + + Compares two specified Span values to see if they are equal. + + One span to compare. + The other span to compare. + True if the spans are the same, False otherwise. + + + + Compares two specified Span values to see if they are not equal. + + One span to compare. + The other span to compare. + True if the spans are not the same, False otherwise. + + + + Identification of the source unit. Assigned by the host. + The format and semantics is host dependent (could be a path on file system or URL). + Empty string for anonymous source units. + + + + + LanguageContext of the language of the unit. + + + + + Reads specified range of lines (or less) from the source unit. + Line numbers starts with 1. + + + + + Errors are reported to the specified sink. + Returns null if the parser cannot compile the code due to error(s). + + + + + Executes against a specified scope. + + + + + Executes against a specified scope and reports errors to the given error sink. + + + + + Executes in a new scope created by the language. + + + + + Executes in a new scope created by the language. + + + + + Executes in a new scope created by the language. + + + + + Unmapped span. + + + + + Provides a factory to create TextReader's over one source of textual content. + + TextContentProvider's are used when reading from a source which is already decoded + or has a known specific decoding. + + For example a text editor might provide a TextContentProvider whose backing is + an in-memory text buffer that the user can actively edit. + + + + + Creates a new TextReader which is backed by the content the TextContentProvider was created for. + + This method may be called multiple times. For example once to compile the code and again to get + the source code to display error messages. + + + + + A token marking an end of stream. + + + + + A space, tab, or newline. + + + + + A block comment. + + + + + A single line comment. + + + + + A documentation comment. + + + + + A numeric literal. + + + + + A character literal. + + + + + A string literal. + + + + + A regular expression literal. + + + + + A keyword. + + + + + A directive (e.g. #line). + + + + + A punctuation character that has a specific meaning in a language. + + + + + A token that operates as a separator between two language elements. + + + + + An identifier (variable, $variable, @variable, @@variable, $variable$, function!, function?, [variable], i'variable', ...) + + + + + Braces, parenthesis, brackets. + + + + + Errors. + + + + + Strongly-typed and parameterized string factory. + + + + + A string like "Cannot access member {1} declared on type {0} because the type contains generic parameters." + + + + + A string like "Type '{0}' is missing or cannot be loaded." + + + + + A string like "static property "{0}" of "{1}" can only be read through a type, not an instance" + + + + + A string like "static property "{0}" of "{1}" can only be assigned to through a type, not an instance" + + + + + A string like "Method precondition violated" + + + + + A string like "Invalid argument value" + + + + + A string like "Non-empty string required" + + + + + A string like "Non-empty collection required" + + + + + A string like "must by an Exception instance" + + + + + A string like "Type of test must be bool" + + + + + A string like "Type of the expression must be bool" + + + + + A string like "Empty string is not a valid path." + + + + + A string like "Invalid delegate type (Invoke method not found)." + + + + + A string like "expected only static property" + + + + + A string like "Property doesn't exist on the provided type" + + + + + A string like "Field doesn't exist on provided type" + + + + + A string like "Type doesn't have constructor with a given signature" + + + + + A string like "Type doesn't have a method with a given name." + + + + + A string like "Type doesn't have a method with a given name and signature." + + + + + A string like "Count must be non-negative." + + + + + A string like "arrayType must be an array type" + + + + + A string like "Either code or target must be specified." + + + + + A string like "Type parameter is {0}. Expected a delegate." + + + + + A string like "Cannot cast from type '{0}' to type '{1}" + + + + + A string like "unknown member type: '{0}'. " + + + + + A string like "RuleBuilder can only be used with delegates whose first argument is CallSite." + + + + + A string like "no instance for call." + + + + + A string like "Missing Test." + + + + + A string like "Missing Target." + + + + + A string like "The operation requires a non-generic type for {0}, but this represents generic types only" + + + + + A string like "Invalid operation: '{0}'" + + + + + A string like "Finally already defined." + + + + + A string like "Can not have fault and finally." + + + + + A string like "Fault already defined." + + + + + A string like "Cannot create default value for type {0}." + + + + + A string like "Unhandled convert: {0}" + + + + + A string like "{0}.{1} has no publiclly visible method." + + + + + A string like "Global/top-level local variable names must be unique." + + + + + A string like "Generating code from non-serializable CallSiteBinder." + + + + + A string like "Specified path is invalid." + + + + + A string like "Dictionaries are not hashable." + + + + + A string like "language already registered." + + + + + A string like "The method or operation is not implemented." + + + + + A string like "No exception." + + + + + A string like "Extension type {0} must be public." + + + + + A string like "Already initialized." + + + + + A string like "CreateScopeExtension must return a scope extension." + + + + + A string like "Invalid number of parameters for the service." + + + + + A string like "Invalid type of argument {0}; expecting {1}." + + + + + A string like "Cannot change non-caching value." + + + + + A string like "Field {0} is read-only" + + + + + A string like "Property {0} is read-only" + + + + + A string like "Expected event from {0}.{1}, got event from {2}.{3}." + + + + + A string like "expected bound event, got {0}." + + + + + A string like "Expected type {0}, got {1}." + + + + + A string like "can only write to member {0}." + + + + + A string like "No code to compile." + + + + + A string like "Invalid stream type: {0}." + + + + + A string like "Queue empty." + + + + + A string like "Enumeration has not started. Call MoveNext." + + + + + A string like "Enumeration already finished." + + + + + A string like "can't add another casing for identifier {0}" + + + + + A string like "can't add new identifier {0}" + + + + + A string like "Type '{0}' doesn't provide a suitable public constructor or its implementation is faulty: {1}" + + + + + A string like "Invalid output directory." + + + + + A string like "Invalid assembly name or file extension." + + + + + A string like "Cannot emit constant {0} ({1})" + + + + + A string like "No implicit cast from {0} to {1}" + + + + + A string like "No explicit cast from {0} to {1}" + + + + + A string like "name '{0}' not defined" + + + + + A string like "No default value for a given type." + + + + + A string like "Specified language provider type is not registered." + + + + + A string like "can't read from property" + + + + + A string like "can't write to property" + + + + + A string like "Cannot create instance of {0} because it contains generic parameters" + + + + + A string like "Non-verifiable assembly generated: {0}:\nAssembly preserved as {1}\nError text:\n{2}\n" + + + + + Strongly-typed and parameterized exception factory. + + + + + ArgumentException with message like "Either code or target must be specified." + + + + + InvalidOperationException with message like "Type parameter is {0}. Expected a delegate." + + + + + InvalidOperationException with message like "Cannot cast from type '{0}' to type '{1}" + + + + + InvalidOperationException with message like "unknown member type: '{0}'. " + + + + + InvalidOperationException with message like "RuleBuilder can only be used with delegates whose first argument is CallSite." + + + + + InvalidOperationException with message like "no instance for call." + + + + + InvalidOperationException with message like "Missing Test." + + + + + InvalidOperationException with message like "Missing Target." + + + + + TypeLoadException with message like "The operation requires a non-generic type for {0}, but this represents generic types only" + + + + + ArgumentException with message like "Invalid operation: '{0}'" + + + + + InvalidOperationException with message like "Finally already defined." + + + + + InvalidOperationException with message like "Can not have fault and finally." + + + + + InvalidOperationException with message like "Fault already defined." + + + + + ArgumentException with message like "Cannot create default value for type {0}." + + + + + ArgumentException with message like "Unhandled convert: {0}" + + + + + InvalidOperationException with message like "{0}.{1} has no publiclly visible method." + + + + + ArgumentException with message like "Global/top-level local variable names must be unique." + + + + + ArgumentException with message like "Generating code from non-serializable CallSiteBinder." + + + + + ArgumentException with message like "Specified path is invalid." + + + + + ArgumentTypeException with message like "Dictionaries are not hashable." + + + + + InvalidOperationException with message like "language already registered." + + + + + NotImplementedException with message like "The method or operation is not implemented." + + + + + InvalidOperationException with message like "No exception." + + + + + ArgumentException with message like "Extension type {0} must be public." + + + + + InvalidOperationException with message like "Already initialized." + + + + + InvalidImplementationException with message like "CreateScopeExtension must return a scope extension." + + + + + ArgumentException with message like "Invalid number of parameters for the service." + + + + + ArgumentException with message like "Invalid type of argument {0}; expecting {1}." + + + + + ArgumentException with message like "Cannot change non-caching value." + + + + + MissingMemberException with message like "Field {0} is read-only" + + + + + MissingMemberException with message like "Property {0} is read-only" + + + + + ArgumentException with message like "Expected event from {0}.{1}, got event from {2}.{3}." + + + + + ArgumentTypeException with message like "expected bound event, got {0}." + + + + + ArgumentTypeException with message like "Expected type {0}, got {1}." + + + + + MemberAccessException with message like "can only write to member {0}." + + + + + InvalidOperationException with message like "No code to compile." + + + + + ArgumentException with message like "Invalid stream type: {0}." + + + + + InvalidOperationException with message like "Queue empty." + + + + + InvalidOperationException with message like "Enumeration has not started. Call MoveNext." + + + + + InvalidOperationException with message like "Enumeration already finished." + + + + + InvalidOperationException with message like "can't add another casing for identifier {0}" + + + + + InvalidOperationException with message like "can't add new identifier {0}" + + + + + ArgumentException with message like "Invalid output directory." + + + + + ArgumentException with message like "Invalid assembly name or file extension." + + + + + ArgumentException with message like "Cannot emit constant {0} ({1})" + + + + + ArgumentException with message like "No implicit cast from {0} to {1}" + + + + + ArgumentException with message like "No explicit cast from {0} to {1}" + + + + + MissingMemberException with message like "name '{0}' not defined" + + + + + ArgumentException with message like "No default value for a given type." + + + + + ArgumentException with message like "Specified language provider type is not registered." + + + + + InvalidOperationException with message like "can't read from property" + + + + + InvalidOperationException with message like "can't write to property" + + + + + ArgumentException with message like "Cannot create instance of {0} because it contains generic parameters" + + + + + System.Security.VerificationException with message like "Non-verifiable assembly generated: {0}:\nAssembly preserved as {1}\nError text:\n{2}\n" + + + + diff --git a/tracking and telemetry/Client/bin/Release/log4net.dll b/tracking and telemetry/Client/bin/Release/log4net.dll new file mode 100644 index 0000000..93fb476 Binary files /dev/null and b/tracking and telemetry/Client/bin/Release/log4net.dll differ diff --git a/tracking and telemetry/Client/bin/Release/log4net.xml b/tracking and telemetry/Client/bin/Release/log4net.xml new file mode 100644 index 0000000..df56743 --- /dev/null +++ b/tracking and telemetry/Client/bin/Release/log4net.xml @@ -0,0 +1,32464 @@ + + + + log4net + + + + + Appender that logs to a database. + + + + appends logging events to a table within a + database. The appender can be configured to specify the connection + string by setting the property. + The connection type (provider) can be specified by setting the + property. For more information on database connection strings for + your specific database see http://www.connectionstrings.com/. + + + Records are written into the database either using a prepared + statement or a stored procedure. The property + is set to (System.Data.CommandType.Text) to specify a prepared statement + or to (System.Data.CommandType.StoredProcedure) to specify a stored + procedure. + + + The prepared statement text or the name of the stored procedure + must be set in the property. + + + The prepared statement or stored procedure can take a number + of parameters. Parameters are added using the + method. This adds a single to the + ordered list of parameters. The + type may be subclassed if required to provide database specific + functionality. The specifies + the parameter name, database type, size, and how the value should + be generated using a . + + + + An example of a SQL Server table that could be logged to: + + CREATE TABLE [dbo].[Log] ( + [ID] [int] IDENTITY (1, 1) NOT NULL , + [Date] [datetime] NOT NULL , + [Thread] [varchar] (255) NOT NULL , + [Level] [varchar] (20) NOT NULL , + [Logger] [varchar] (255) NOT NULL , + [Message] [varchar] (4000) NOT NULL + ) ON [PRIMARY] + + + + An example configuration to log to the above table: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Julian Biddle + Nicko Cadell + Gert Driesen + Lance Nehring + + + + Abstract base class implementation of that + buffers events in a fixed size buffer. + + + + This base class should be used by appenders that need to buffer a + number of events before logging them. For example the + buffers events and then submits the entire contents of the buffer to + the underlying database in one go. + + + Subclasses should override the + method to deliver the buffered events. + + The BufferingAppenderSkeleton maintains a fixed size cyclic + buffer of events. The size of the buffer is set using + the property. + + A is used to inspect + each event as it arrives in the appender. If the + triggers, then the current buffer is sent immediately + (see ). Otherwise the event + is stored in the buffer. For example, an evaluator can be used to + deliver the events immediately when an ERROR event arrives. + + + The buffering appender can be configured in a mode. + By default the appender is NOT lossy. When the buffer is full all + the buffered events are sent with . + If the property is set to true then the + buffer will not be sent when it is full, and new events arriving + in the appender will overwrite the oldest event in the buffer. + In lossy mode the buffer will only be sent when the + triggers. This can be useful behavior when you need to know about + ERROR events but not about events with a lower level, configure an + evaluator that will trigger when an ERROR event arrives, the whole + buffer will be sent which gives a history of events leading up to + the ERROR event. + + + Nicko Cadell + Gert Driesen + + + + Abstract base class implementation of . + + + + This class provides the code for common functionality, such + as support for threshold filtering and support for general filters. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface for your own strategies for printing log statements. + + + + Implementors should consider extending the + class which provides a default implementation of this interface. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Log the logging event in Appender specific way. + + The event to log + + + This method is called to log a message into this appender. + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + The name uniquely identifies the appender. + + + + + Interface for appenders that support bulk logging. + + + + This interface extends the interface to + support bulk logging of objects. Appenders + should only implement this interface if they can bulk log efficiently. + + + Nicko Cadell + + + + Log the array of logging events in Appender specific way. + + The events to log + + + This method is called to log an array of events into this appender. + + + + + + Interface used to delay activate a configured object. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then the method + must be called by the container after its all the configured properties have been set + and before the component can be used. + + + Nicko Cadell + + + + Activate the options that were previously set with calls to properties. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then this method must be called + after its properties have been set before the component can be used. + + + + + + Interface that can be implemented by Appenders that buffer logging data and expose a method. + + + + + Flushes any buffered log data. + + + Appenders that implement the method must do so in a thread-safe manner: it can be called concurrently with + the method. + + Typically this is done by locking on the Appender instance, e.g.: + + + + + + The parameter is only relevant for appenders that process logging events asynchronously, + such as . + + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Default constructor + + + Empty default constructor + + + + + Finalizes this appender by calling the implementation's + method. + + + + If this appender has not been closed then the Finalize method + will call . + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Closes the appender and release resources. + + + + Release any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + This method cannot be overridden by subclasses. This method + delegates the closing of the appender to the + method which must be overridden in the subclass. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The event to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the abstract method. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The array of events to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the method. + + + + + + Test if the logging event should we output by this appender + + the event to test + true if the event should be output, false if the event should be ignored + + + This method checks the logging event against the threshold level set + on this appender and also against the filters specified on this + appender. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + + + + + Adds a filter to the end of the filter chain. + + the filter to add to this appender + + + The Filters are organized in a linked list. + + + Setting this property causes the new filter to be pushed onto the + back of the filter chain. + + + + + + Clears the filter list for this appender. + + + + Clears the filter list for this appender. + + + + + + Checks if the message level is below this appender's threshold. + + to test against. + + + If there is no threshold set, then the return value is always true. + + + + true if the meets the + requirements of this appender. + + + + + Is called when the appender is closed. Derived classes should override + this method if resources need to be released. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Subclasses of should implement this method + to perform actual logging. + + The event to append. + + + A subclass must implement this method to perform + logging of the . + + This method will be called by + if all the conditions listed for that method are met. + + + To restrict the logging of events in the appender + override the method. + + + + + + Append a bulk array of logging events. + + the array of logging events + + + This base class implementation calls the + method for each element in the bulk array. + + + A sub class that can better process a bulk array of events should + override this method in addition to . + + + + + + Called before as a precondition. + + + + This method is called by + before the call to the abstract method. + + + This method can be overridden in a subclass to extend the checks + made before the event is passed to the method. + + + A subclass should ensure that they delegate this call to + this base class if it is overridden. + + + true if the call to should proceed. + + + + Renders the to a string. + + The event to render. + The event rendered as a string. + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Where possible use the alternative version of this method + . + That method streams the rendering onto an existing Writer + which can give better performance if the caller already has + a open and ready for writing. + + + + + + Renders the to a string. + + The event to render. + The TextWriter to write the formatted event to + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Use this method in preference to + where possible. If, however, the caller needs to render the event + to a string then does + provide an efficient mechanism for doing so. + + + + + + Flushes any buffered log data. + + + This implementation doesn't flush anything and always returns true + + True if all logging events were flushed successfully, else false. + + + + The layout of this appender. + + + See for more information. + + + + + The name of this appender. + + + See for more information. + + + + + The level threshold of this appender. + + + + There is no level threshold filtering by default. + + + See for more information. + + + + + + It is assumed and enforced that errorHandler is never null. + + + + It is assumed and enforced that errorHandler is never null. + + + See for more information. + + + + + + The first filter in the filter chain. + + + + Set to null initially. + + + See for more information. + + + + + + The last filter in the filter chain. + + + See for more information. + + + + + Flag indicating if this appender is closed. + + + See for more information. + + + + + The guard prevents an appender from repeatedly calling its own DoAppend method + + + + + StringWriter used to render events + + + + + The fully qualified type of the AppenderSkeleton class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the threshold of this appender. + + + The threshold of the appender. + + + + All log events with lower level than the threshold level are ignored + by the appender. + + + In configuration files this option is specified by setting the + value of the option to a level + string, such as "DEBUG", "INFO" and so on. + + + + + + Gets or sets the for this appender. + + The of the appender + + + The provides a default + implementation for the property. + + + + + + The filter chain. + + The head of the filter chain filter chain. + + + Returns the head Filter. The Filters are organized in a linked list + and so all Filters on this Appender are available through the result. + + + + + + Gets or sets the for this appender. + + The layout of the appender. + + + See for more information. + + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + + The name uniquely identifies the appender. + + + + + + Tests if this appender requires a to be set. + + + + In the rather exceptional case, where the appender + implementation admits a layout but can also work without it, + then the appender should return true. + + + This default implementation always returns false. + + + + true if the appender requires a layout object, otherwise false. + + + + + The default buffer size. + + + The default size of the cyclic buffer used to store events. + This is set to 512 by default. + + + + + Initializes a new instance of the class. + + + + Protected default constructor to allow subclassing. + + + + + + Initializes a new instance of the class. + + the events passed through this appender must be + fixed by the time that they arrive in the derived class' SendBuffer method. + + + Protected constructor to allow subclassing. + + + The should be set if the subclass + expects the events delivered to be fixed even if the + is set to zero, i.e. when no buffering occurs. + + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Flush the currently buffered events + + + + Flushes any events that have been buffered. + + + If the appender is buffering in mode then the contents + of the buffer will NOT be flushed to the appender. + + + + + + Flush the currently buffered events + + set to true to flush the buffer of lossy events + + + Flushes events that have been buffered. If is + false then events will only be flushed if this buffer is non-lossy mode. + + + If the appender is buffering in mode then the contents + of the buffer will only be flushed if is true. + In this case the contents of the buffer will be tested against the + and if triggering will be output. All other buffered + events will be discarded. + + + If is true then the buffer will always + be emptied by calling this method. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Close this appender instance. + + + + Close this appender instance. If this appender is marked + as not then the remaining events in + the buffer must be sent when the appender is closed. + + + + + + This method is called by the method. + + the event to log + + + Stores the in the cyclic buffer. + + + The buffer will be sent (i.e. passed to the + method) if one of the following conditions is met: + + + + The cyclic buffer is full and this appender is + marked as not lossy (see ) + + + An is set and + it is triggered for the + specified. + + + + Before the event is stored in the buffer it is fixed + (see ) to ensure that + any data referenced by the event will be valid when the buffer + is processed. + + + + + + Sends the contents of the buffer. + + The first logging event. + The buffer containing the events that need to be send. + + + The subclass must override . + + + + + + Sends the events. + + The events that need to be send. + + + The subclass must override this method to process the buffered events. + + + + + + The size of the cyclic buffer used to hold the logging events. + + + Set to by default. + + + + + The cyclic buffer used to store the logging events. + + + + + The triggering event evaluator that causes the buffer to be sent immediately. + + + The object that is used to determine if an event causes the entire + buffer to be sent immediately. This field can be null, which + indicates that event triggering is not to be done. The evaluator + can be set using the property. If this appender + has the ( property) set to + true then an must be set. + + + + + Indicates if the appender should overwrite events in the cyclic buffer + when it becomes full, or if the buffer should be flushed when the + buffer is full. + + + If this field is set to true then an must + be set. + + + + + The triggering event evaluator filters discarded events. + + + The object that is used to determine if an event that is discarded should + really be discarded or if it should be sent to the appenders. + This field can be null, which indicates that all discarded events will + be discarded. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + The events delivered to the subclass must be fixed. + + + + + Gets or sets a value that indicates whether the appender is lossy. + + + true if the appender is lossy, otherwise false. The default is false. + + + + This appender uses a buffer to store logging events before + delivering them. A triggering event causes the whole buffer + to be send to the remote sink. If the buffer overruns before + a triggering event then logging events could be lost. Set + to false to prevent logging events + from being lost. + + If is set to true then an + must be specified. + + + + + Gets or sets the size of the cyclic buffer used to hold the + logging events. + + + The size of the cyclic buffer used to hold the logging events. + + + + The option takes a positive integer + representing the maximum number of logging events to collect in + a cyclic buffer. When the is reached, + oldest events are deleted as new events are added to the + buffer. By default the size of the cyclic buffer is 512 events. + + + If the is set to a value less than + or equal to 1 then no buffering will occur. The logging event + will be delivered synchronously (depending on the + and properties). Otherwise the event will + be buffered. + + + + + + Gets or sets the that causes the + buffer to be sent immediately. + + + The that causes the buffer to be + sent immediately. + + + + The evaluator will be called for each event that is appended to this + appender. If the evaluator triggers then the current buffer will + immediately be sent (see ). + + If is set to true then an + must be specified. + + + + + Gets or sets the value of the to use. + + + The value of the to use. + + + + The evaluator will be called for each event that is discarded from this + appender. If the evaluator triggers then the current buffer will immediately + be sent (see ). + + + + + + Gets or sets a value indicating if only part of the logging event data + should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the + event data to be fixed and serialized. This will improve performance. + + + See for more information. + + + + + + Gets or sets a the fields that will be fixed in the event + + + The event fields that will be fixed before the event is buffered + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + + Initializes a new instance of the class. + + + Public default constructor to initialize a new instance of this class. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Override the parent method to close the database + + + + Closes the database command and database connection. + + + + + + Inserts the events into the database. + + The events to insert into the database. + + + Insert all the events specified in the + array into the database. + + + + + + Adds a parameter to the command. + + The parameter to add to the command. + + + Adds a parameter to the ordered list of command parameters. + + + + + + Writes the events to the database using the transaction specified. + + The transaction that the events will be executed under. + The array of events to insert into the database. + + + The transaction argument can be null if the appender has been + configured not to use transactions. See + property for more information. + + + + + + Formats the log message into database statement text. + + The event being logged. + + This method can be overridden by subclasses to provide + more control over the format of the database statement. + + + Text that can be passed to a . + + + + + Creates an instance used to connect to the database. + + + This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary). + + The of the object. + The connectionString output from the ResolveConnectionString method. + An instance with a valid connection string. + + + + Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey + property. + + + ConnectiongStringName is only supported on .NET 2.0 and higher. + + Additional information describing the connection string. + A connection string used to connect to the database. + + + + Retrieves the class type of the ADO.NET provider. + + + + Gets the Type of the ADO.NET provider to use to connect to the + database. This method resolves the type specified in the + property. + + + Subclasses can override this method to return a different type + if necessary. + + + The of the ADO.NET provider + + + + Connects to the database. + + + + + Cleanup the existing connection. + + + Calls the IDbConnection's method. + + + + + The list of objects. + + + + The list of objects. + + + + + + The security context to use for privileged calls + + + + + The that will be used + to insert logging events into a database. + + + + + Database connection string. + + + + + The appSettings key from App.Config that contains the connection string. + + + + + The connectionStrings key from App.Config that contains the connection string. + + + + + String type name of the type name. + + + + + The text of the command. + + + + + The command type. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Indicates whether to reconnect when a connection is lost. + + + + + The fully qualified type of the AdoNetAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the database connection string that is used to connect to + the database. + + + The database connection string used to connect to the database. + + + + The connections string is specific to the connection type. + See for more information. + + + Connection string for MS Access via ODBC: + "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" + + Another connection string for MS Access via ODBC: + "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" + + Connection string for MS Access via OLE DB: + "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" + + + + + The appSettings key from App.Config that contains the connection string. + + + + + The connectionStrings key from App.Config that contains the connection string. + + + This property requires at least .NET 2.0. + + + + + Gets or sets the type name of the connection + that should be created. + + + The type name of the connection. + + + + The type name of the ADO.NET provider to use. + + + The default is to use the OLE DB provider. + + + Use the OLE DB Provider. This is the default value. + System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the MS SQL Server Provider. + System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the ODBC Provider. + Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for ODBC .NET Data Provider. + + Use the Oracle Provider. + System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for .NET Managed Provider for Oracle. + + + + + Gets or sets the command text that is used to insert logging events + into the database. + + + The command text used to insert logging events into the database. + + + + Either the text of the prepared statement or the + name of the stored procedure to execute to write into + the database. + + + The property determines if + this text is a prepared statement or a stored procedure. + + + If this property is not set, the command text is retrieved by invoking + . + + + + + + Gets or sets the command type to execute. + + + The command type to execute. + + + + This value may be either (System.Data.CommandType.Text) to specify + that the is a prepared statement to execute, + or (System.Data.CommandType.StoredProcedure) to specify that the + property is the name of a stored procedure + to execute. + + + The default value is (System.Data.CommandType.Text). + + + + + + Should transactions be used to insert logging events in the database. + + + true if transactions should be used to insert logging events in + the database, otherwise false. The default value is true. + + + + Gets or sets a value that indicates whether transactions should be used + to insert logging events in the database. + + + When set a single transaction will be used to insert the buffered events + into the database. Otherwise each event will be inserted without using + an explicit transaction. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Should this appender try to reconnect to the database on error. + + + true if the appender should try to reconnect to the database after an + error has occurred, otherwise false. The default value is false, + i.e. not to try to reconnect. + + + + The default behaviour is for the appender not to try to reconnect to the + database if an error occurs. Subsequent logging events are discarded. + + + To force the appender to attempt to reconnect to the database set this + property to true. + + + When the appender attempts to connect to the database there may be a + delay of up to the connection timeout specified in the connection string. + This delay will block the calling application's thread. + Until the connection can be reestablished this potential delay may occur multiple times. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to insert + logging events into a database. Classes deriving from + can use this property to get or set this . Use the + underlying returned from if + you require access beyond that which provides. + + + + + Parameter type used by the . + + + + This class provides the basic database parameter properties + as defined by the interface. + + This type can be subclassed to provide database specific + functionality. The two methods that are called externally are + and . + + + + + + Initializes a new instance of the class. + + + Default constructor for the AdoNetAppenderParameter class. + + + + + Prepare the specified database command object. + + The command to prepare. + + + Prepares the database command object by adding + this parameter to its collection of parameters. + + + + + + Renders the logging event and set the parameter value in the command. + + The command containing the parameter. + The event to be rendered. + + + Renders the logging event using this parameters layout + object. Sets the value of the parameter on the command object. + + + + + + The name of this parameter. + + + + + The database type for this parameter. + + + + + Flag to infer type rather than use the DbType + + + + + The precision for this parameter. + + + + + The scale for this parameter. + + + + + The size for this parameter. + + + + + The to use to render the + logging event into an object for this parameter. + + + + + Gets or sets the name of this parameter. + + + The name of this parameter. + + + + The name of this parameter. The parameter name + must match up to a named parameter to the SQL stored procedure + or prepared statement. + + + + + + Gets or sets the database type for this parameter. + + + The database type for this parameter. + + + + The database type for this parameter. This property should + be set to the database type from the + enumeration. See . + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the type from the value. + + + + + + + Gets or sets the precision for this parameter. + + + The precision for this parameter. + + + + The maximum number of digits used to represent the Value. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the precision from the value. + + + + + + + Gets or sets the scale for this parameter. + + + The scale for this parameter. + + + + The number of decimal places to which Value is resolved. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the scale from the value. + + + + + + + Gets or sets the size for this parameter. + + + The size for this parameter. + + + + The maximum size, in bytes, of the data within the column. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the size from the value. + + + For BLOB data types like VARCHAR(max) it may be impossible to infer the value automatically, use -1 as the size in this case. + + + + + + + Gets or sets the to use to + render the logging event into an object for this + parameter. + + + The used to render the + logging event into an object for this parameter. + + + + The that renders the value for this + parameter. + + + The can be used to adapt + any into a + for use in the property. + + + + + + Appends logging events to the terminal using ANSI color escape sequences. + + + + AnsiColorTerminalAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific level of message to be set. + + + This appender expects the terminal to understand the VT100 control set + in order to interpret the color codes. If the terminal or console does not + understand the control codes the behavior is not defined. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + When configuring the ANSI colored terminal appender, a mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + + These color values cannot be combined together to make new colors. + + + The attributes can be any combination of the following: + + Brightforeground is brighter + Dimforeground is dimmer + Underscoremessage is underlined + Blinkforeground is blinking (does not work on all terminals) + Reverseforeground and background are reversed + Hiddenoutput is hidden + Strikethroughmessage has a line through it + + While any of these attributes may be combined together not all combinations + work well together, for example setting both Bright and Dim attributes makes + no sense. + + + Patrick Wagstrom + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Ansi code to reset terminal + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Add a mapping of level to color + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colours + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Target is the value of the console output stream. + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible display attributes + + + + The following flags can be combined together to + form the ANSI color attributes. + + + + + + + text is bright + + + + + text is dim + + + + + text is underlined + + + + + text is blinking + + + Not all terminals support this attribute + + + + + text and background colors are reversed + + + + + text is hidden + + + + + text is displayed with a strikethrough + + + + + text color is light + + + + + The enum of possible foreground or background color values for + use with the color mapping method + + + + The output can be in one for the following ANSI colors. + + + + + + + color is black + + + + + color is red + + + + + color is green + + + + + color is yellow + + + + + color is blue + + + + + color is magenta + + + + + color is cyan + + + + + color is white + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + An entry in the + + + + This is an abstract base class for types that are stored in the + object. + + + Nicko Cadell + + + + Default protected constructor + + + + Default protected constructor + + + + + + Initialize any options defined on this entry + + + + Should be overridden by any classes that need to initialise based on their options + + + + + + The level that is the key for this mapping + + + The that is the key for this mapping + + + + Get or set the that is the key for this + mapping subclass. + + + + + + Initialize the options for the object + + + + Combine the and together + and append the attributes. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level + + + + + + The color attributes for the specified level + + + + Required property. + The color attributes for the specified level + + + + + + The combined , and + suitable for setting the ansi terminal color. + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a AppenderCollection instance. + + list to create a readonly wrapper arround + + An AppenderCollection wrapper that is read-only. + + + + + An empty readonly static AppenderCollection + + + + + Initializes a new instance of the AppenderCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the AppenderCollection class + that has the specified initial capacity. + + + The number of elements that the new AppenderCollection is initially capable of storing. + + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified AppenderCollection. + + The AppenderCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire AppenderCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire AppenderCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the AppenderCollection. + + The to be added to the end of the AppenderCollection. + The index at which the value has been added. + + + + Removes all elements from the AppenderCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the AppenderCollection. + + The to check for. + true if is found in the AppenderCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the AppenderCollection. + + The to locate in the AppenderCollection. + + The zero-based index of the first occurrence of + in the entire AppenderCollection, if found; otherwise, -1. + + + + + Inserts an element into the AppenderCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the AppenderCollection. + + The to remove from the AppenderCollection. + + The specified was not found in the AppenderCollection. + + + + + Removes the element at the specified index of the AppenderCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the AppenderCollection. + + An for the entire AppenderCollection. + + + + Adds the elements of another AppenderCollection to the current AppenderCollection. + + The AppenderCollection whose elements should be added to the end of the current AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a array to the current AppenderCollection. + + The array whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a collection to the current AppenderCollection. + + The collection whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Sets the capacity to the actual number of elements. + + + + + Return the collection elements as an array + + the array + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the AppenderCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the AppenderCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + + + + + Appends log events to the ASP.NET system. + + + + + Diagnostic information and tracing messages that you specify are appended to the output + of the page that is sent to the requesting browser. Optionally, you can view this information + from a separate trace viewer (Trace.axd) that displays trace information for every page in a + given application. + + + Trace statements are processed and displayed only when tracing is enabled. You can control + whether tracing is displayed to a page, to the trace viewer, or both. + + + The logging event is passed to the or + method depending on the level of the logging event. + The event's logger name is the default value for the category parameter of the Write/Warn method. + + + Nicko Cadell + Gert Driesen + Ron Grabowski + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the ASP.NET trace + + the event to log + + + Write the logging event to the ASP.NET trace + HttpContext.Current.Trace + (). + + + + + + Defaults to %logger + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The category parameter sent to the Trace method. + + + + Defaults to %logger which will use the logger name of the current + as the category parameter. + + + + + + + + Buffers events and then forwards them to attached appenders. + + + + The events are buffered in this appender until conditions are + met to allow the appender to deliver the events to the attached + appenders. See for the + conditions that cause the buffer to be sent. + + The forwarding appender can be used to specify different + thresholds and filters for the same appender at different locations + within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Interface for attaching appenders to objects. + + + + Interface for attaching, removing and retrieving appenders. + + + Nicko Cadell + Gert Driesen + + + + Attaches an appender. + + The appender to add. + + + Add the specified appender. The implementation may + choose to allow or deny duplicate appenders. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Returns an attached appender with the specified. + If no appender with the specified name is found null will be + returned. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Gets all attached appenders. + + + A collection of attached appenders. + + + + Gets a collection of attached appenders. + If there are no attached appenders the + implementation should return an empty + collection rather than null. + + + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Send the events. + + The events that need to be send. + + + Forwards the events to the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this buffering appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Appends logging events to the console. + + + + ColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes directly to the application's attached console + not to the System.Console.Out or System.Console.Error TextWriter. + The System.Console.Out and System.Console.Error streams can be + programmatically redirected (for example NUnit does this to capture program output). + This appender will ignore these redirections because it needs to use Win32 + API calls to colorize the output. To respect these redirections the + must be used. + + + When configuring the colored console appender, mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + combination of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + HighIntensity + + + + Rick Hobbs + Nicko Cadell + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + The console output stream writer to write to + + + + This writer is not thread safe. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The enum of possible color values for use with the color mapping method + + + + The following flags can be combined together to + form the colors. + + + + + + + color is blue + + + + + color is green + + + + + color is red + + + + + color is white + + + + + color is yellow + + + + + color is purple + + + + + color is cyan + + + + + color is intensified + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + Initialize the options for the object + + + + Combine the and together. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + The combined and suitable for + setting the console color. + + + + + Appends logging events to the console. + + + + ConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + Nicko Cadell + Gert Driesen + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + debug system. + + + Events are written using the + method. The event's logger name is passed as the value for the category name to the Write method. + + + Nicko Cadell + + + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + If is true then the + is called. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Defaults to a with %logger as the pattern. + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + Formats the category parameter sent to the Debug method. + + + + Defaults to a with %logger as the pattern which will use the logger name of the current + as the category parameter. + + + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Writes events to the system event log. + + + + The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges. + See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog + + + The EventID of the event log entry can be + set using the EventID property () + on the . + + + The Category of the event log entry can be + set using the Category property () + on the . + + + There is a limit of 32K characters for an event log message + + + When configuring the EventLogAppender a mapping can be + specified to map a logging level to an event log entry type. For example: + + + <mapping> + <level value="ERROR" /> + <eventLogEntryType value="Error" /> + </mapping> + <mapping> + <level value="DEBUG" /> + <eventLogEntryType value="Information" /> + </mapping> + + + The Level is the standard log4net logging level and eventLogEntryType can be any value + from the enum, i.e.: + + Erroran error event + Warninga warning event + Informationan informational event + + + + Aspi Havewala + Douglas de la Torre + Nicko Cadell + Gert Driesen + Thomas Voss + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class + with the specified . + + The to use with this appender. + + + Obsolete constructor. + + + + + + Add a mapping of level to - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the event log entry type for a level. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create an event log source + + + Uses different API calls under NET_2_0 + + + + + This method is called by the + method. + + the event to log + + Writes the event to the system event log using the + . + + If the event has an EventID property (see ) + set then this integer will be used as the event log event id. + + + There is a limit of 32K characters for an event log message + + + + + + Get the equivalent for a + + the Level to convert to an EventLogEntryType + The equivalent for a + + Because there are fewer applicable + values to use in logging levels than there are in the + this is a one way mapping. There is + a loss of information during the conversion. + + + + + The log name is the section in the event logs where the messages + are stored. + + + + + Name of the application to use when logging. This appears in the + application column of the event log named by . + + + + + The name of the machine which holds the event log. This is + currently only allowed to be '.' i.e. the current machine. + + + + + Mapping from level object to EventLogEntryType + + + + + The security context to use for privileged calls + + + + + The event ID to use unless one is explicitly specified via the LoggingEvent's properties. + + + + + The event category to use unless one is explicitly specified via the LoggingEvent's properties. + + + + + The fully qualified type of the EventLogAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + The maximum size supported by default. + + + http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx + The 32766 documented max size is two bytes shy of 32K (I'm assuming 32766 + may leave space for a two byte null terminator of #0#0). The 32766 max + length is what the .NET 4.0 source code checks for, but this is WRONG! + Strings with a length > 31839 on Windows Vista or higher can CORRUPT + the event log! See: System.Diagnostics.EventLogInternal.InternalWriteEvent() + for the use of the 32766 max size. + + + + + The maximum size supported by a windows operating system that is vista + or newer. + + + See ReportEvent API: + http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx + ReportEvent's lpStrings parameter: + "A pointer to a buffer containing an array of + null-terminated strings that are merged into the message before Event Viewer + displays the string to the user. This parameter must be a valid pointer + (or NULL), even if wNumStrings is zero. Each string is limited to 31,839 characters." + + Going beyond the size of 31839 will (at some point) corrupt the event log on Windows + Vista or higher! It may succeed for a while...but you will eventually run into the + error: "System.ComponentModel.Win32Exception : A device attached to the system is + not functioning", and the event log will then be corrupt (I was able to corrupt + an event log using a length of 31877 on Windows 7). + + The max size for Windows Vista or higher is documented here: + http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx. + Going over this size may succeed a few times but the buffer will overrun and + eventually corrupt the log (based on testing). + + The maxEventMsgSize size is based on the max buffer size of the lpStrings parameter of the ReportEvent API. + The documented max size for EventLog.WriteEntry for Windows Vista and higher is 31839, but I'm leaving room for a + terminator of #0#0, as we cannot see the source of ReportEvent (though we could use an API monitor to examine the + buffer, given enough time). + + + + + The maximum size that the operating system supports for + a event log message. + + + Used to determine the maximum string length that can be written + to the operating system event log and eventually truncate a string + that exceeds the limits. + + + + + This method determines the maximum event log message size allowed for + the current environment. + + + + + + The name of the log where messages will be stored. + + + The string name of the log where messages will be stored. + + + This is the name of the log as it appears in the Event Viewer + tree. The default value is to log into the Application + log, this is where most applications write their events. However + if you need a separate log for your application (or applications) + then you should set the appropriately. + This should not be used to distinguish your event log messages + from those of other applications, the + property should be used to distinguish events. This property should be + used to group together events into a single log. + + + + + + Property used to set the Application name. This appears in the + event logs when logging. + + + The string used to distinguish events from different sources. + + + Sets the event log source property. + + + + + This property is used to return the name of the computer to use + when accessing the event logs. Currently, this is the current + computer, denoted by a dot "." + + + The string name of the machine holding the event log that + will be logged into. + + + This property cannot be changed. It is currently set to '.' + i.e. the local machine. This may be changed in future. + + + + + Gets or sets the used to write to the EventLog. + + + The used to write to the EventLog. + + + + The system security context used to write to the EventLog. + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the EventId to use unless one is explicitly specified via the LoggingEvent's properties. + + + + The EventID of the event log entry will normally be + set using the EventID property () + on the . + This property provides the fallback value which defaults to 0. + + + + + + Gets or sets the Category to use unless one is explicitly specified via the LoggingEvent's properties. + + + + The Category of the event log entry will normally be + set using the Category property () + on the . + This property provides the fallback value which defaults to 0. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and its event log entry type. + + + + + + The for this entry + + + + Required property. + The for this entry + + + + + + Appends logging events to a file. + + + + Logging events are sent to the file specified by + the property. + + + The file can be opened in either append or overwrite mode + by specifying the property. + If the file path is relative it is taken as relative from + the application base directory. The file encoding can be + specified by setting the property. + + + The layout's and + values will be written each time the file is opened and closed + respectively. If the property is + then the file may contain multiple copies of the header and footer. + + + This appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + The supports pluggable file locking models via + the property. + The default behavior, implemented by + is to obtain an exclusive write lock on the file until this appender is closed. + The alternative models only hold a + write lock while the appender is writing a logging event () + or synchronize by using a named system wide Mutex (). + + + All locking strategies have issues and you should seriously consider using a different strategy that + avoids having multiple processes logging to the same file. + + + Nicko Cadell + Gert Driesen + Rodrigo B. de Oliveira + Douglas de la Torre + Niall Daley + + + + Sends logging events to a . + + + + An Appender that writes to a . + + + This appender may be used stand alone if initialized with an appropriate + writer, however it is typically used as a base class for an appender that + can open a to write to. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class and + sets the output destination to a new initialized + with the specified . + + The layout to use with this appender. + The to output to. + + + Obsolete constructor. + + + + + + Initializes a new instance of the class and sets + the output destination to the specified . + + The layout to use with this appender + The to output to + + The must have been previously opened. + + + + Obsolete constructor. + + + + + + This method determines if there is a sense in attempting to append. + + + + This method checks if an output target has been set and if a + layout has been set. + + + false if any of the preconditions fail. + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + This method writes all the bulk logged events to the output writer + before flushing the stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + Closed appenders cannot be reused. + + + + + Writes the footer and closes the underlying . + + + + Writes the footer and closes the underlying . + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Clears internal references to the underlying + and other variables. + + + + Subclasses can override this method for an alternate closing behavior. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Called to allow a subclass to lazily initialize the writer + + + + This method is called when an event is logged and the or + have not been set. This allows a subclass to + attempt to initialize the writer multiple times. + + + + + + This is the where logging events + will be written to. + + + + + Immediate flush means that the underlying + or output stream will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logging events are not actually persisted if and when the application + crashes. + + + The default value is true. + + + + + + The fully qualified type of the TextWriterAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Gets or set whether the appender will flush at the end + of each append operation. + + + + The default behavior is to flush at the end of each + append operation. + + + If this option is set to false, then the underlying + stream can defer persisting the logging event to a later + time. + + + + Avoiding the flush operation at the end of each append results in + a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + Sets the where the log output will go. + + + + The specified must be open and writable. + + + The will be closed when the appender + instance is closed. + + + Note: Logging to an unopened will fail. + + + + + + Gets or set the and the underlying + , if any, for this appender. + + + The for this appender. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Gets or sets the where logging events + will be written to. + + + The where logging events are written. + + + + This is the where logging events + will be written to. + + + + + + Default constructor + + + + Default constructor + + + + + + Construct a new appender using the layout, file and append mode. + + the layout to use with this appender + the full path to the file to write to + flag to indicate if the file should be appended to + + + Obsolete constructor. + + + + + + Construct a new appender using the layout and file specified. + The file will be appended to. + + the layout to use with this appender + the full path to the file to write to + + + Obsolete constructor. + + + + + + Activate the options on the file appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This will cause the file to be opened. + + + + + + Closes any previously opened file and calls the parent's . + + + + Resets the filename and the file stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + + + Called to initialize the file writer + + + + Will be called for each logged message until the file is + successfully opened. + + + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + Acquires the output file locks once before writing all the events to + the stream. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Closes the previously opened file. + + + + Writes the to the file and then + closes the file. + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + Calls but guarantees not to throw an exception. + Errors are passed to the . + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + If there was already an opened file, then the previous file + is closed first. + + + This method will ensure that the directory structure + for the specified exists. + + + + + + Sets the quiet writer used for file output + + the file stream that has been opened for writing + + + This implementation of creates a + over the and passes it to the + method. + + + This method can be overridden by sub classes that want to wrap the + in some way, for example to encrypt the output + data using a System.Security.Cryptography.CryptoStream. + + + + + + Sets the quiet writer being used. + + the writer over the file stream that has been opened for writing + + + This method can be overridden by sub classes that want to + wrap the in some way. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + Flag to indicate if we should append to the file + or overwrite the file. The default is to append. + + + + + The name of the log file. + + + + + The encoding to use for the file stream. + + + + + The security context to use for privileged calls + + + + + The stream to log to. Has added locking semantics + + + + + The locking model to use + + + + + The fully qualified type of the FileAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the path to the file that logging will be written to. + + + The path to the file that logging will be written to. + + + + If the path is relative it is taken as relative from + the application base directory. + + + + + + Gets or sets a flag that indicates whether the file should be + appended to or overwritten. + + + Indicates whether the file should be appended to or overwritten. + + + + If the value is set to false then the file will be overwritten, if + it is set to true then the file will be appended to. + + The default value is true. + + + + + Gets or sets used to write to the file. + + + The used to write to the file. + + + + The default encoding set is + which is the encoding for the system's current ANSI code page. + + + + + + Gets or sets the used to write to the file. + + + The used to write to the file. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the used to handle locking of the file. + + + The used to lock the file. + + + + Gets or sets the used to handle locking of the file. + + + There are three built in locking models, , and . + The first locks the file from the start of logging to the end, the + second locks only for the minimal amount of time when logging each message + and the last synchronizes processes using a named system wide Mutex. + + + The default locking model is the . + + + + + + Write only that uses the + to manage access to an underlying resource. + + + + + True asynchronous writes are not supported, the implementation forces a synchronous write. + + + + + Exception base type for log4net. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class with + the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Locking model base class + + + + Base class for the locking models available to the derived loggers. + + + + + + Open the output file + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Helper method that creates a FileStream under CurrentAppender's SecurityContext. + + + + Typically called during OpenFile or AcquireLock. + + + If the directory portion of the does not exist, it is created + via Directory.CreateDirecctory. + + + + + + + + + + Helper method to close under CurrentAppender's SecurityContext. + + + Does not set to null. + + + + + + Gets or sets the for this LockingModel + + + The for this LockingModel + + + + The file appender this locking model is attached to and working on + behalf of. + + + The file appender is used to locate the security context and the error handler to use. + + + The value of this property will be set before is + called. + + + + + + Hold an exclusive lock on the output file + + + + Open the file once for writing and hold it open until is called. + Maintains an exclusive lock on the file during this time. + + + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Release the lock on the file + + + + Does nothing. The lock will be released when the file is closed. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Acquires the file lock for each write + + + + Opens the file once for each / cycle, + thus holding the lock for the minimal amount of time. This method of locking + is considerably slower than but allows + other processes to move/delete the log file whilst logging continues. + + + + + + Prepares to open the file when the first message is logged. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Provides cross-process file locking. + + Ron Grabowski + Steve Wranovsky + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + - and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Releases the lock and allows others to acquire a lock. + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + This appender forwards logging events to attached appenders. + + + + The forwarding appender can be used to specify different thresholds + and filters for the same appender at different locations within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Forward the logging event to the attached appenders + + The event to log. + + + Delivers the logging event to all the attached appenders. + + + + + + Forward the logging events to the attached appenders + + The array of events to log. + + + Delivers the logging events to all the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Logs events to a local syslog service. + + + + This appender uses the POSIX libc library functions openlog, syslog, and closelog. + If these functions are not available on the local system then this appender will not work! + + + The functions openlog, syslog, and closelog are specified in SUSv2 and + POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. + + + This appender talks to a local syslog service. If you need to log to a remote syslog + daemon and you cannot configure your local syslog service to do this you may be + able to use the to log via UDP. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a local syslog service. + + + + + Add a mapping of level to severity + + The mapping to add + + + Adds a to this appender. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Close the syslog when the appender is closed + + + + Close the syslog when the appender is closed + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + + The facility. The default facility is . + + + + + The message identity + + + + + Marshaled handle to the identity string. We have to hold on to the + string as the openlog and syslog APIs just hold the + pointer to the ident and dereference it for each log message. + + + + + Mapping from level object to syslog severity + + + + + Open connection to system logger. + + + + + Generate a log message. + + + + The libc syslog method takes a format string and a variable argument list similar + to the classic printf function. As this type of vararg list is not supported + by C# we need to specify the arguments explicitly. Here we have specified the + format string with a single message argument. The caller must set the format + string to "%s". + + + + + + Close descriptor used to write to system logger. + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + syslog severities + + + + The log4net Level maps to a syslog severity using the + method and the + class. The severity is set on . + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facility defines which subsystem the logging comes from. + This is set on the property. + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Appends colorful logging events to the console, using the .NET 2 + built-in capabilities. + + + + ManagedColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + When configuring the colored console appender, mappings should be + specified to map logging levels to colors. For example: + + + + + + + + + + + + + + + + + + + + + + The Level is the standard log4net logging level while + ForeColor and BackColor are the values of + enumeration. + + + Based on the ColoredConsoleAppender + + + Rick Hobbs + Nicko Cadell + Pavlos Touboulidis + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + Stores logging events in an array. + + + + The memory appender stores all the logging events + that are appended in an in-memory array. + + + Use the method to get + and clear the current list of events that have been appended. + + + Use the method to get the current + list of events that have been appended. Note there is a + race-condition when calling and + in pairs, you better use in that case. + + + Use the method to clear the + current list of events. Note there is a + race-condition when calling and + in pairs, you better use in that case. + + + Julian Biddle + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Gets the events that have been logged. + + The events that have been logged + + + Gets the events that have been logged. + + + + + + This method is called by the method. + + the event to log + + Stores the in the events list. + + + + + Clear the list of events + + + Clear the list of events + + + + + Gets the events that have been logged and clears the list of events. + + The events that have been logged + + + Gets the events that have been logged and clears the list of events. + + + + + + The list of events that have been appended. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + Gets or sets a value indicating whether only part of the logging event + data should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the event + data to be fixed and stored in the appender, hereby improving performance. + + + See for more information. + + + + + + Gets or sets the fields that will be fixed in the event + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + Logs entries by sending network messages using the + native function. + + + + You can send messages only to names that are active + on the network. If you send the message to a user name, + that user must be logged on and running the Messenger + service to receive the message. + + + The receiver will get a top most window displaying the + messages one at a time, therefore this appender should + not be used to deliver a high volume of messages. + + + The following table lists some possible uses for this appender : + + + + + Action + Property Value(s) + + + Send a message to a user account on the local machine + + + = <name of the local machine> + + + = <user name> + + + + + Send a message to a user account on a remote machine + + + = <name of the remote machine> + + + = <user name> + + + + + Send a message to a domain user account + + + = <name of a domain controller | uninitialized> + + + = <user name> + + + + + Send a message to all the names in a workgroup or domain + + + = <workgroup name | domain name>* + + + + + Send a message from the local machine to a remote machine + + + = <name of the local machine | uninitialized> + + + = <name of the remote machine> + + + + + + + Note : security restrictions apply for sending + network messages, see + for more information. + + + + + An example configuration section to log information + using this appender from the local machine, named + LOCAL_PC, to machine OPERATOR_PC : + + + + + + + + + + Nicko Cadell + Gert Driesen + + + + The DNS or NetBIOS name of the server on which the function is to execute. + + + + + The sender of the network message. + + + + + The message alias to which the message should be sent. + + + + + The security context to use for privileged calls + + + + + Initializes the appender. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified. + + + The required property was not specified. + + + + This method is called by the method. + + The event to log. + + + Sends the event using a network message. + + + + + + Sends a buffer of information to a registered message alias. + + The DNS or NetBIOS name of the server on which the function is to execute. + The message alias to which the message buffer should be sent + The originator of the message. + The message text. + The length, in bytes, of the message text. + + + The following restrictions apply for sending network messages: + + + + + Platform + Requirements + + + Windows NT + + + No special group membership is required to send a network message. + + + Admin, Accounts, Print, or Server Operator group membership is required to + successfully send a network message on a remote server. + + + + + Windows 2000 or later + + + If you send a message on a domain controller that is running Active Directory, + access is allowed or denied based on the access control list (ACL) for the securable + object. The default ACL permits only Domain Admins and Account Operators to send a network message. + + + On a member server or workstation, only Administrators and Server Operators can send a network message. + + + + + + + For more information see Security Requirements for the Network Management Functions. + + + + + If the function succeeds, the return value is zero. + + + + + + Gets or sets the sender of the message. + + + The sender of the message. + + + If this property is not specified, the message is sent from the local computer. + + + + + Gets or sets the message alias to which the message should be sent. + + + The recipient of the message. + + + This property should always be specified in order to send a message. + + + + + Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. + + + DNS or NetBIOS name of the remote server on which the function is to execute. + + + + For Windows NT 4.0 and earlier, the string should begin with \\. + + + If this property is not specified, the local computer is used. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appends log events to the OutputDebugString system. + + + + OutputDebugStringAppender appends log events to the + OutputDebugString system. + + + The string is passed to the native OutputDebugString + function. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the output debug string API + + the event to log + + + Write the logging event to the output debug string API + + + + + + Stub for OutputDebugString native method + + the string to output + + + Stub for OutputDebugString native method + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Logs events to a remote syslog daemon. + + + + The BSD syslog protocol is used to remotely log to + a syslog daemon. The syslogd listens for for messages + on UDP port 514. + + + The syslog UDP protocol is not authenticated. Most syslog daemons + do not accept remote log messages because of the security implications. + You may be able to use the LocalSyslogAppender to talk to a local + syslog service. + + + There is an RFC 3164 that claims to document the BSD Syslog Protocol. + This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. + This appender generates what the RFC calls an "Original Device Message", + i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation + this format of message will be accepted by all current syslog daemon + implementations. The daemon will attach the current time and the source + hostname or IP address to any messages received. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Sends logging events as connectionless UDP datagrams to a remote host or a + multicast group using an . + + + + UDP guarantees neither that messages arrive, nor that they arrive in the correct order. + + + To view the logging results, a custom application can be developed that listens for logging + events. + + + When decoding events send via this appender remember to use the same encoding + to decode the events as was used to send the events. See the + property to specify the encoding to use. + + + + This example shows how to log receive logging events that are sent + on IP address 244.0.0.1 and port 8080 to the console. The event is + encoded in the packet as a unicode string and it is decoded as such. + + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + UdpClient udpClient; + byte[] buffer; + string loggingEvent; + + try + { + udpClient = new UdpClient(8080); + + while(true) + { + buffer = udpClient.Receive(ref remoteEndPoint); + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); + Console.WriteLine(loggingEvent); + } + } + catch(Exception e) + { + Console.WriteLine(e.ToString()); + } + + + Dim remoteEndPoint as IPEndPoint + Dim udpClient as UdpClient + Dim buffer as Byte() + Dim loggingEvent as String + + Try + remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) + udpClient = new UdpClient(8080) + + While True + buffer = udpClient.Receive(ByRef remoteEndPoint) + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) + Console.WriteLine(loggingEvent) + Wend + Catch e As Exception + Console.WriteLine(e.ToString()) + End Try + + + An example configuration section to log information using this appender to the + IP 224.0.0.1 on port 8080: + + + + + + + + + + Gert Driesen + Nicko Cadell + + + + Initializes a new instance of the class. + + + The default constructor initializes all fields to their default values. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified or + an invalid remote or local TCP port number was specified. + + + The required property was not specified. + The TCP port number assigned to or is less than or greater than . + + + + This method is called by the method. + + The event to log. + + + Sends the event using an UDP datagram. + + + Exceptions are passed to the . + + + + + + Closes the UDP connection and releases all resources associated with + this instance. + + + + Disables the underlying and releases all managed + and unmanaged resources associated with the . + + + + + + Initializes the underlying connection. + + + + The underlying is initialized and binds to the + port number from which you intend to communicate. + + + Exceptions are passed to the . + + + + + + The IP address of the remote host or multicast group to which + the logging event will be sent. + + + + + The TCP port number of the remote host or multicast group to + which the logging event will be sent. + + + + + The cached remote endpoint to which the logging events will be sent. + + + + + The TCP port number from which the will communicate. + + + + + The instance that will be used for sending the + logging events. + + + + + The encoding to use for the packet. + + + + + Gets or sets the IP address of the remote host or multicast group to which + the underlying should sent the logging event. + + + The IP address of the remote host or multicast group to which the logging event + will be sent. + + + + Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to + 239.255.255.255). Multicast packets can pass across different networks through routers, so + it is possible to use multicasts in an Internet scenario as long as your network provider + supports multicasting. + + + Hosts that want to receive particular multicast messages must register their interest by joining + the multicast group. Multicast messages are not sent to networks where no host has joined + the multicast group. Class D IP addresses are used for multicast groups, to differentiate + them from normal host addresses, allowing nodes to easily detect if a message is of interest. + + + Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: + + + + + IP Address + Description + + + 224.0.0.1 + + + Sends a message to all system on the subnet. + + + + + 224.0.0.2 + + + Sends a message to all routers on the subnet. + + + + + 224.0.0.12 + + + The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. + + + + + + + A complete list of actually reserved multicast addresses and their owners in the ranges + defined by RFC 3171 can be found at the IANA web site. + + + The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative + addresses. These addresses can be reused with other local groups. Routers are typically + configured with filters to prevent multicast traffic in this range from flowing outside + of the local network. + + + + + + Gets or sets the TCP port number of the remote host or multicast group to which + the underlying should sent the logging event. + + + An integer value in the range to + indicating the TCP port number of the remote host or multicast group to which the logging event + will be sent. + + + The underlying will send messages to this TCP port number + on the remote host or multicast group. + + The value specified is less than or greater than . + + + + Gets or sets the TCP port number from which the underlying will communicate. + + + An integer value in the range to + indicating the TCP port number from which the underlying will communicate. + + + + The underlying will bind to this port for sending messages. + + + Setting the value to 0 (the default) will cause the udp client not to bind to + a local port. + + + The value specified is less than or greater than . + + + + Gets or sets used to write the packets. + + + The used to write the packets. + + + + The used to write the packets. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to send logging events + over a network. Classes deriving from can use this + property to get or set this . Use the underlying + returned from if you require access beyond that which + provides. + + + + + Gets or sets the cached remote endpoint to which the logging events should be sent. + + + The cached remote endpoint to which the logging events will be sent. + + + The method will initialize the remote endpoint + with the values of the and + properties. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Syslog port 514 + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a remote syslog daemon. + + + + + Add a mapping of level to severity + + The mapping to add + + + Add a mapping to this appender. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to syslog severity mappings set on this appender. + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + Generate a syslog priority. + + + + + + The facility. The default facility is . + + + + + The message identity + + + + + Mapping from level object to syslog severity + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + syslog severities + + + + The syslog severities. + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facilities + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Delivers logging events to a remote logging sink. + + + + This Appender is designed to deliver events to a remote sink. + That is any object that implements the + interface. It delivers the events using .NET remoting. The + object to deliver events to is specified by setting the + appenders property. + + The RemotingAppender buffers events before sending them. This allows it to + make more efficient use of the remoting infrastructure. + + Once the buffer is full the events are still not sent immediately. + They are scheduled to be sent using a pool thread. The effect is that + the send occurs asynchronously. This is very important for a + number of non obvious reasons. The remoting infrastructure will + flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + Because the events are sent asynchronously using pool threads it is possible to close + this appender before all the queued events have been sent. + When closing the appender attempts to wait until all the queued events have been sent, but + this will timeout after 30 seconds regardless. + + If this appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. If the runtime terminates the threads before + the queued events have been sent then they will be lost. To ensure that all events + are sent the appender must be closed before the application exits. See + for details on how to shutdown + log4net programmatically. + + + Nicko Cadell + Gert Driesen + Daniel Cazzulino + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Send the contents of the buffer to the remote sink. + + + The events are not sent immediately. They are scheduled to be sent + using a pool thread. The effect is that the send occurs asynchronously. + This is very important for a number of non obvious reasons. The remoting + infrastructure will flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + The events to send. + + + + Override base class close. + + + + This method waits while there are queued work items. The events are + sent asynchronously using work items. These items + will be sent once a thread pool thread is available to send them, therefore + it is possible to close the appender before all the queued events have been + sent. + + This method attempts to wait until all the queued events have been sent, but this + method will timeout after 30 seconds regardless. + + If the appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + A work item is being queued into the thread pool + + + + + A work item from the thread pool has completed + + + + + Send the contents of the buffer to the remote sink. + + + This method is designed to be used with the . + This method expects to be passed an array of + objects in the state param. + + the logging events to send + + + + The URL of the remote sink. + + + + + The local proxy (.NET remoting) for the remote logging sink. + + + + + The number of queued callbacks currently waiting or executing + + + + + Event used to signal when there are no queued work items + + + This event is set when there are no queued work items. In this + state it is safe to close the appender. + + + + + Gets or sets the URL of the well-known object that will accept + the logging events. + + + The well-known URL of the remote sink. + + + + The URL of the remoting sink that will accept logging events. + The sink must implement the + interface. + + + + + + Interface used to deliver objects to a remote sink. + + + This interface must be implemented by a remoting sink + if the is to be used + to deliver logging events to the sink. + + + + + Delivers logging events to the remote sink + + Array of events to log. + + + Delivers logging events to the remote sink + + + + + + Appender that rolls log files based on size or date or both. + + + + RollingFileAppender can roll log files based on size or date or both + depending on the setting of the property. + When set to the log file will be rolled + once its size exceeds the . + When set to the log file will be rolled + once the date boundary specified in the property + is crossed. + When set to the log file will be + rolled once the date boundary specified in the property + is crossed, but within a date boundary the file will also be rolled + once its size exceeds the . + When set to the log file will be rolled when + the appender is configured. This effectively means that the log file can be + rolled once per program execution. + + + A of few additional optional features have been added: + + Attach date pattern for current log file + Backup number increments for newer files + Infinite number of backups by file size + + + + + + For large or infinite numbers of backup files a + greater than zero is highly recommended, otherwise all the backup files need + to be renamed each time a new backup is created. + + + When Date/Time based rolling is used setting + to will reduce the number of file renamings to few or none. + + + + + + Changing or without clearing + the log file directory of backup files will cause unexpected and unwanted side effects. + + + + + If Date/Time based rolling is enabled this appender will attempt to roll existing files + in the directory without a Date/Time tag based on the last write date of the base log file. + The appender only rolls the log file when a message is logged. If Date/Time based rolling + is enabled then the appender will not roll the log file at the Date/Time boundary but + at the point when the next message is logged after the boundary has been crossed. + + + + The extends the and + has the same behavior when opening the log file. + The appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + When rolling a backup file necessitates deleting an older backup file the + file to be deleted is moved to a temporary name before being deleted. + + + + + A maximum number of backup files when rolling on date/time boundaries is not supported. + + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + Edward Smit + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Cleans up all resources used by this appender. + + + + + The fully qualified type of the RollingFileAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Sets the quiet writer being used. + + + This method can be overridden by sub classes. + + the writer to set + + + + Write out a logging event. + + the event to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Write out an array of logging events. + + the events to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Performs any required rolling before outputting the next event + + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Creates and opens the file for logging. If + is false then the fully qualified name is determined and used. + + the name of the file to open + true to append to existing file + + This method will ensure that the directory structure + for the specified exists. + + + + + Get the current output file name + + the base file name + the output file name + + The output file name is based on the base fileName specified. + If is set then the output + file name is the same as the base file passed in. Otherwise + the output file depends on the date pattern, on the count + direction or both. + + + + + Determines curSizeRollBackups (only within the current roll point) + + + + + Generates a wildcard pattern that can be used to find all files + that are similar to the base file name. + + + + + + + Builds a list of filenames for all files matching the base filename plus a file + pattern. + + + + + + + Initiates a roll over if needed for crossing a date boundary since the last run. + + + + + Initializes based on existing conditions at time of . + + + + Initializes based on existing conditions at time of . + The following is done + + determine curSizeRollBackups (only within the current roll point) + initiates a roll over if needed for crossing a date boundary since the last run. + + + + + + + Does the work of bumping the 'current' file counter higher + to the highest count when an incremental file name is seen. + The highest count is either the first file (when count direction + is greater than 0) or the last file (when count direction less than 0). + In either case, we want to know the highest count that is present. + + + + + + + Attempts to extract a number from the end of the file name that indicates + the number of the times the file has been rolled over. + + + Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes. + + + + + + + Takes a list of files and a base file name, and looks for + 'incremented' versions of the base file. Bumps the max + count up to the highest count seen. + + + + + + + Calculates the RollPoint for the datePattern supplied. + + the date pattern to calculate the check period for + The RollPoint that is most accurate for the date pattern supplied + + Essentially the date pattern is examined to determine what the + most suitable roll point is. The roll point chosen is the roll point + with the smallest period that can be detected using the date pattern + supplied. i.e. if the date pattern only outputs the year, month, day + and hour then the smallest roll point that can be detected would be + and hourly roll point as minutes could not be detected. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Sets initial conditions including date/time roll over information, first check, + scheduledFilename, and calls to initialize + the current number of backups. + + + + + + + + + .1, .2, .3, etc. + + + + + Rollover the file(s) to date/time tagged file(s). + + set to true if the file to be rolled is currently open + + + Rollover the file(s) to date/time tagged file(s). + Resets curSizeRollBackups. + If fileIsOpen is set then the new file is opened (through SafeOpenFile). + + + + + + Renames file to file . + + Name of existing file to roll. + New name for file. + + + Renames file to file . It + also checks for existence of target file and deletes if it does. + + + + + + Test if a file exists at a specified path + + the path to the file + true if the file exists + + + Test if a file exists at a specified path + + + + + + Deletes the specified file if it exists. + + The file to delete. + + + Delete a file if is exists. + The file is first moved to a new filename then deleted. + This allows the file to be removed even when it cannot + be deleted, but it still can be moved. + + + + + + Implements file roll base on file size. + + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. Moreover, File is + renamed File.1 and closed. + + + A new file is created to receive further log output. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + + + + Implements file roll. + + the base name to rename + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + This is called by to rename the files. + + + + + + Get the start time of the next window for the current rollpoint + + the current date + the type of roll point we are working with + the start time for the next roll point an interval after the currentDateTime date + + + Returns the date of the next roll point after the currentDateTime date passed to the method. + + + The basic strategy is to subtract the time parts that are less significant + than the rollpoint from the current time. This should roll the time back to + the start of the time window for the current rollpoint. Then we add 1 window + worth of time and get the start time of the next window for the rollpoint. + + + + + + This object supplies the current date/time. Allows test code to plug in + a method to control this class when testing date/time based rolling. The default + implementation uses the underlying value of DateTime.Now. + + + + + The date pattern. By default, the pattern is set to ".yyyy-MM-dd" + meaning daily rollover. + + + + + The actual formatted filename that is currently being written to + or will be the file transferred to on roll over + (based on staticLogFileName). + + + + + The timestamp when we shall next recompute the filename. + + + + + Holds date of last roll over + + + + + The type of rolling done + + + + + The default maximum file size is 10MB + + + + + There is zero backup files by default + + + + + How many sized based backups have been made so far + + + + + The rolling file count direction. + + + + + The rolling mode used in this appender. + + + + + Cache flag set if we are rolling by date. + + + + + Cache flag set if we are rolling by size. + + + + + Value indicating whether to always log to the same file. + + + + + Value indicating whether to preserve the file name extension when rolling. + + + + + FileName provided in configuration. Used for rolling properly + + + + + A mutex that is used to lock rolling of files. + + + + + The 1st of January 1970 in UTC + + + + + Gets or sets the strategy for determining the current date and time. The default + implementation is to use LocalDateTime which internally calls through to DateTime.Now. + DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying + . + + + An implementation of the interface which returns the current date and time. + + + + Gets or sets the used to return the current date and time. + + + There are two built strategies for determining the current date and time, + + and . + + + The default strategy is . + + + + + + Gets or sets the date pattern to be used for generating file names + when rolling over on date. + + + The date pattern to be used for generating file names when rolling + over on date. + + + + Takes a string in the same format as expected by + . + + + This property determines the rollover schedule when rolling over + on date. + + + + + + Gets or sets the maximum number of backup files that are kept before + the oldest is erased. + + + The maximum number of backup files that are kept before the oldest is + erased. + + + + If set to zero, then there will be no backup files and the log file + will be truncated when it reaches . + + + If a negative number is supplied then no deletions will be made. Note + that this could result in very slow performance as a large number of + files are rolled over unless is used. + + + The maximum applies to each time based group of files and + not the total. + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size in bytes that the output file is allowed to reach before being + rolled over to backup files. + + + + This property is equivalent to except + that it is required for differentiating the setter taking a + argument from the setter taking a + argument. + + + The default maximum file size is 10MB (10*1024*1024). + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size that the output file is allowed to reach before being + rolled over to backup files. + + + + This property allows you to specify the maximum size with the + suffixes "KB", "MB" or "GB" so that the size is interpreted being + expressed respectively in kilobytes, megabytes or gigabytes. + + + For example, the value "10KB" will be interpreted as 10240 bytes. + + + The default maximum file size is 10MB. + + + If you have the option to set the maximum file size programmatically + consider using the property instead as this + allows you to set the size in bytes as a . + + + + + + Gets or sets the rolling file count direction. + + + The rolling file count direction. + + + + Indicates if the current file is the lowest numbered file or the + highest numbered file. + + + By default newer files have lower numbers ( < 0), + i.e. log.1 is most recent, log.5 is the 5th backup, etc... + + + >= 0 does the opposite i.e. + log.1 is the first backup made, log.5 is the 5th backup made, etc. + For infinite backups use >= 0 to reduce + rollover costs. + + The default file count direction is -1. + + + + + Gets or sets the rolling style. + + The rolling style. + + + The default rolling style is . + + + When set to this appender's + property is set to false, otherwise + the appender would append to a single file rather than rolling + the file each time it is opened. + + + + + + Gets or sets a value indicating whether to preserve the file name extension when rolling. + + + true if the file name extension should be preserved. + + + + By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup. + However, under Windows the new file name will loose any program associations as the + extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or + file.curSizeRollBackup.log to maintain any program associations. + + + + + + Gets or sets a value indicating whether to always log to + the same file. + + + true if always should be logged to the same file, otherwise false. + + + + By default file.log is always the current file. Optionally + file.log.yyyy-mm-dd for current formatted datePattern can by the currently + logging file (or file.log.curSizeRollBackup or even + file.log.yyyy-mm-dd.curSizeRollBackup). + + + This will make time based rollovers with a large number of backups + much faster as the appender it won't have to rename all the backups! + + + + + + Style of rolling to use + + + + Style of rolling to use + + + + + + Roll files once per program execution + + + + Roll files once per program execution. + Well really once each time this appender is + configured. + + + Setting this option also sets AppendToFile to + false on the RollingFileAppender, otherwise + this appender would just be a normal file appender. + + + + + + Roll files based only on the size of the file + + + + + Roll files based only on the date + + + + + Roll files based on both the size and date of the file + + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + + + Roll the log not based on the date + + + + + Roll the log for each minute + + + + + Roll the log for each hour + + + + + Roll the log twice a day (midday and midnight) + + + + + Roll the log each day (midnight) + + + + + Roll the log each week + + + + + Roll the log each month + + + + + This interface is used to supply Date/Time information to the . + + + This interface is used to supply Date/Time information to the . + Used primarily to allow test classes to plug themselves in so they can + supply test date/times. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Default implementation of that returns the current time. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Implementation of that returns the current time as the coordinated universal time (UTC). + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Send an e-mail when a specific logging event occurs, typically on errors + or fatal errors. + + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. + For these features to be enabled you need to ensure that you are using a version of + the log4net assembly that is built against the MS .NET 1.1 framework and that you are + running the your application on the MS .NET 1.1 runtime. On all other platforms only sending + unauthenticated messages to a server listening on port 25 (the default) is supported. + + + Authentication is supported by setting the property to + either or . + If using authentication then the + and properties must also be set. + + + To set the SMTP server port use the property. The default port is 25. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + + Send the email message + + the body text to include in the mail + + + + trims leading and trailing commas or semicolons + + + + + Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions). + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + + Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses + that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions). + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses + that will be blind carbon copied. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of recipient e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the name of the SMTP relay mail server to use to send + the e-mail messages. + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + + + Obsolete + + + Use the BufferingAppenderSkeleton Fix methods instead + + + + Obsolete property. + + + + + + The mode to use to authentication with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + Valid Authentication mode values are: , + , and . + The default value is . When using + you must specify the + and to use to authenticate. + When using the Windows credentials for the current + thread, if impersonating, or the process will be used to authenticate. + + + + + + The username to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the username will be ignored. + + + + + + The password to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the password will be ignored. + + + + + + The port on which the SMTP server is listening + + + Server Port is only available on the MS .NET 1.1 runtime. + + The port on which the SMTP server is listening. The default + port is 25. The Port can only be changed when running on + the MS .NET 1.1 runtime. + + + + + + Gets or sets the priority of the e-mail message + + + One of the values. + + + + Sets the priority of the e-mails generated by this + appender. The default priority is . + + + If you are using this appender to report errors then + you may want to set the priority to . + + + + + + Enable or disable use of SSL when sending e-mail message + + + This is available on MS .NET 2.0 runtime and higher + + + + + Gets or sets the reply-to e-mail address. + + + This is available on MS .NET 2.0 runtime and higher + + + + + Gets or sets the subject encoding to be used. + + + The default encoding is the operating system's current ANSI codepage. + + + + + Gets or sets the body encoding to be used. + + + The default encoding is the operating system's current ANSI codepage. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Values for the property. + + + + SMTP authentication modes. + + + + + + No authentication + + + + + Basic authentication. + + + Requires a username and password to be supplied + + + + + Integrated authentication + + + Uses the Windows credentials from the current thread or process to authenticate. + + + + + Send an email when a specific logging event occurs, typically on errors + or fatal errors. Rather than sending via smtp it writes a file into the + directory specified by . This allows services such + as the IIS SMTP agent to manage sending the messages. + + + + The configuration for this appender is identical to that of the SMTPAppender, + except that instead of specifying the SMTPAppender.SMTPHost you specify + . + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Niall Daley + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + Sends the contents of the cyclic buffer as an e-mail message. + + + + + + Activate the options on this appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + The security context to use for privileged calls + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the path to write the messages to. + + + + Gets or sets the path to write the messages to. This should be the same + as that used by the agent sending the messages. + + + + + + Gets or sets the file extension for the generated files + + + The file extension for the generated files + + + + The file extension for the generated files + + + + + + Gets or sets the used to write to the pickup directory. + + + The used to write to the pickup directory. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Appender that allows clients to connect via Telnet to receive log messages + + + + The TelnetAppender accepts socket connections and streams logging messages + back to the client. + The output is provided in a telnet-friendly way so that a log can be monitored + over a TCP/IP socket. + This allows simple remote monitoring of application logging. + + + The default is 23 (the telnet port). + + + Keith Long + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + The fully qualified type of the TelnetAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Overrides the parent method to close the socket handler + + + + Closes all the outstanding connections. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Create the socket handler and wait for connections + + + + + + Writes the logging event to each connected client. + + The event to log. + + + Writes the logging event to each connected client. + + + + + + Gets or sets the TCP port number on which this will listen for connections. + + + An integer value in the range to + indicating the TCP port number on which this will listen for connections. + + + + The default value is 23 (the telnet port). + + + The value specified is less than + or greater than . + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Helper class to manage connected clients + + + + The SocketHandler class is used to accept connections from + clients. It is threaded so that clients can connect/disconnect + asynchronously. + + + + + + Opens a new server port on + + the local port to listen on for connections + + + Creates a socket handler on the specified local server port. + + + + + + Sends a string message to each of the connected clients + + the text to send + + + Sends a string message to each of the connected clients + + + + + + Add a client to the internal clients list + + client to add + + + + Remove a client from the internal clients list + + client to remove + + + + Callback used to accept a connection on the server socket + + The result of the asynchronous operation + + + On connection adds to the list of connections + if there are two many open connections you will be disconnected + + + + + + Close all network connections + + + + Make sure we close all network connections + + + + + + Test if this handler has active connections + + + true if this handler has active connections + + + + This property will be true while this handler has + active connections, that is at least one connection that + the handler will attempt to send a message to. + + + + + + Class that represents a client connected to this handler + + + + Class that represents a client connected to this handler + + + + + + Create this for the specified + + the client's socket + + + Opens a stream writer on the socket. + + + + + + Write a string to the client + + string to send + + + Write a string to the client + + + + + + Cleanup the clients connection + + + + Close the socket connection. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + trace system. + + + Events are written using the System.Diagnostics.Trace.Write(string,string) + method. The event's logger name is the default value for the category parameter + of the Write method. + + + Compact Framework
+ The Compact Framework does not support the + class for any operation except Assert. When using the Compact Framework this + appender will write to the system rather than + the Trace system. This appender will therefore behave like the . +
+
+ Douglas de la Torre + Nicko Cadell + Gert Driesen + Ron Grabowski +
+ + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Defaults to %logger + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + The category parameter sent to the Trace method. + + + + Defaults to %logger which will use the logger name of the current + as the category parameter. + + + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Assembly level attribute that specifies a domain to alias to this assembly's repository. + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's domain to its repository by + specifying this attribute with the name of the target domain. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required domains. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies a repository to alias to this assembly's repository. + + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's repository to its repository by + specifying this attribute with the name of the target repository. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required repositories. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + The repository to alias to this assemby's repository. + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + + + + + Gets or sets the repository to alias to this assemby's repository. + + + The repository to alias to this assemby's repository. + + + + The name of the repository to alias to this assemby's repository. + + + + + + Initializes a new instance of the class with + the specified domain to alias to this assembly's repository. + + The domain to alias to this assemby's repository. + + + Obsolete. Use instead of . + + + + + + Use this class to quickly configure a . + + + + Allows very simple programmatic configuration of log4net. + + + Only one appender can be configured using this configurator. + The appender is set at the root of the hierarchy and all logging + events will be delivered to that appender. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + The fully qualified type of the BasicConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Initializes the log4net system with a default configuration. + + + + Initializes the log4net logging system using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the log4net system using the specified appenders. + + The appenders to use to log all logging events. + + + Initializes the log4net system using the specified appenders. + + + + + + Initializes the log4net system using the specified appender. + + The appender to use to log all logging events. + + + Initializes the log4net system using the specified appender. + + + + + + Initializes the with a default configuration. + + The repository to configure. + + + Initializes the specified repository using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the using the specified appender. + + The repository to configure. + The appender to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Initializes the using the specified appenders. + + The repository to configure. + The appenders to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Base class for all log4net configuration attributes. + + + This is an abstract class that must be extended by + specific configurators. This attribute allows the + configurator to be parameterized by an assembly level + attribute. + + Nicko Cadell + Gert Driesen + + + + Constructor used by subclasses. + + the ordering priority for this configurator + + + The is used to order the configurator + attributes before they are invoked. Higher priority configurators are executed + before lower priority ones. + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Abstract method implemented by a subclass. When this method is called + the subclass should configure the . + + + + + + Compare this instance to another ConfiguratorAttribute + + the object to compare to + see + + + Compares the priorities of the two instances. + Sorts by priority in descending order. Objects with the same priority are + randomly ordered. + + + + + + Assembly level attribute that specifies the logging domain for the assembly. + + + + DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + Assemblies are mapped to logging domains. Each domain has its own + logging repository. This attribute specified on the assembly controls + the configuration of the domain. The property specifies the name + of the domain that this assembly is a part of. The + specifies the type of the repository objects to create for the domain. If + this attribute is not specified and a is not specified + then the assembly will be part of the default shared logging domain. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute that specifies the logging repository for the assembly. + + + + Assemblies are mapped to logging repository. This attribute specified + on the assembly controls + the configuration of the repository. The property specifies the name + of the repository that this assembly is a part of. The + specifies the type of the object + to create for the assembly. If this attribute is not specified or a + is not specified then the assembly will be part of the default shared logging repository. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize a new instance of the class + with the name of the repository. + + The name of the repository. + + + Initialize the attribute with the name for the assembly's repository. + + + + + + Gets or sets the name of the logging repository. + + + The string name to use as the name of the repository associated with this + assembly. + + + + This value does not have to be unique. Several assemblies can share the + same repository. They will share the logging configuration of the repository. + + + + + + Gets or sets the type of repository to create for this assembly. + + + The type of repository to create for this assembly. + + + + The type of the repository to create for the assembly. + The type must implement the + interface. + + + This will be the type of repository created when + the repository is created. If multiple assemblies reference the + same repository then the repository is only created once using the + of the first assembly to call into the + repository. + + + + + + Initializes a new instance of the class. + + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Initialize a new instance of the class + with the name of the domain. + + The name of the domain. + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + The repository to configure. + + + + Configures log4net using a log4net element + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The element to parse. + + + + Configures the using the specified XML + element. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration file. + + A stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Assembly level attribute to configure the . + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + Gert Driesen + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + If neither of the or + properties are set the configuration is loaded from the application's .config file. + If set the property takes priority over the + property. The property + specifies a path to a file to load the config from. The path is relative to the + application's base directory; . + The property is used as a postfix to the assembly file name. + The config file must be located in the application's base directory; . + For example in a console application setting the to + config has the same effect as not specifying the or + properties. + + + The property can be set to cause the + to watch the configuration file for changes. + + + + Log4net will only look for assembly level configuration attributes once. + When using the log4net assembly level attributes to control the configuration + of log4net you must ensure that the first call to any of the + methods is made from the assembly with the configuration + attributes. + + + If you cannot guarantee the order in which log4net calls will be made from + different assemblies you must use programmatic configuration instead, i.e. + call the method directly. + + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Configure the repository using the . + The specified must extend the + class otherwise the will not be able to + configure it. + + + The does not extend . + + + + Attempt to load configuration from the local file system + + The assembly that this attribute was defined on. + The repository to configure. + + + + Configure the specified repository using a + + The repository to configure. + the FileInfo pointing to the config file + + + + Attempt to load configuration from a URI + + The assembly that this attribute was defined on. + The repository to configure. + + + + The fully qualified type of the XmlConfiguratorAttribute class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the filename of the configuration file. + + + The filename of the configuration file. + + + + If specified, this is the name of the configuration file to use with + the . This file path is relative to the + application base directory (). + + + The takes priority over the . + + + + + + Gets or sets the extension of the configuration file. + + + The extension of the configuration file. + + + + If specified this is the extension for the configuration file. + The path to the config file is built by using the application + base directory (), + the assembly file name and the config file extension. + + + If the is set to MyExt then + possible config file names would be: MyConsoleApp.exe.MyExt or + MyClassLibrary.dll.MyExt. + + + The takes priority over the . + + + + + + Gets or sets a value indicating whether to watch the configuration file. + + + true if the configuration should be watched, false otherwise. + + + + If this flag is specified and set to true then the framework + will watch the configuration file and will reload the config each time + the file is modified. + + + The config file can only be watched if it is loaded from local disk. + In a No-Touch (Smart Client) deployment where the application is downloaded + from a web server the config file may not reside on the local disk + and therefore it may not be able to watch it. + + + Watching configuration is not supported on the SSCLI. + + + + + + Class to register for the log4net section of the configuration file + + + The log4net section of the configuration file needs to have a section + handler registered. This is the section handler used. It simply returns + the XML element that is the root of the section. + + + Example of registering the log4net section handler : + + + +
+ + + log4net configuration XML goes here + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Parses the configuration section. + + The configuration settings in a corresponding parent configuration section. + The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. + The for the log4net section. + The for the log4net section. + + + Returns the containing the configuration data, + + + + + + Assembly level attribute that specifies a plugin to attach to + the repository. + + + + Specifies the type of a plugin to create and attach to the + assembly's repository. The plugin type must implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Interface used to create plugins. + + + + Interface used to create a plugin. + + + Nicko Cadell + Gert Driesen + + + + Creates the plugin object. + + the new plugin instance + + + Create and return a new plugin instance. + + + + + + Initializes a new instance of the class + with the specified type. + + The type name of plugin to create. + + + Create the attribute with the plugin type specified. + + + Where possible use the constructor that takes a . + + + + + + Initializes a new instance of the class + with the specified type. + + The type of plugin to create. + + + Create the attribute with the plugin type specified. + + + + + + Creates the plugin object defined by this attribute. + + + + Creates the instance of the object as + specified by this attribute. + + + The plugin object. + + + + Returns a representation of the properties of this object. + + + + Overrides base class method to + return a representation of the properties of this object. + + + A representation of the properties of this object + + + + Gets or sets the type for the plugin. + + + The type for the plugin. + + + + The type for the plugin. + + + + + + Gets or sets the type name for the plugin. + + + The type name for the plugin. + + + + The type name for the plugin. + + + Where possible use the property instead. + + + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + + + + Construct provider attribute with type specified + + the type of the provider to use + + + The provider specified must subclass the + class. + + + + + + Configures the SecurityContextProvider + + The assembly that this attribute was defined on. + The repository to configure. + + + Creates a provider instance from the specified. + Sets this as the default security context provider . + + + + + + The fully qualified type of the SecurityContextProviderAttribute class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the type of the provider to use. + + + the type of the provider to use. + + + + The provider specified must subclass the + class. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + The repository to configure. + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + + + + + Configures log4net using a log4net element + + + + Loads the log4net configuration from the XML element + supplied as . + + + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration URI. + + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The must support the URI scheme specified. + + + + + + Configures log4net using the specified configuration data stream. + + A stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified XML + element. + + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + URI. + + The repository to configure. + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The must support the URI scheme specified. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the specified repository using a log4net element. + + The hierarchy to configure. + The element to parse. + + + Loads the log4net configuration from the XML element + supplied as . + + + This method is ultimately called by one of the Configure methods + to load the configuration from an . + + + + + + Maps repository names to ConfigAndWatchHandler instances to allow a particular + ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is + reconfigured. + + + + + The fully qualified type of the XmlConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Class used to watch config files. + + + + Uses the to monitor + changes to a specified file. Because multiple change notifications + may be raised when the file is modified, a timer is used to + compress the notifications into a single event. The timer + waits for time before delivering + the event notification. If any further + change notifications arrive while the timer is waiting it + is reset and waits again for to + elapse. + + + + + + The default amount of time to wait after receiving notification + before reloading the config file. + + + + + Holds the FileInfo used to configure the XmlConfigurator + + + + + Holds the repository being configured. + + + + + The timer used to compress the notification events. + + + + + Watches file for changes. This object should be disposed when no longer + needed to free system handles on the watched resources. + + + + + Initializes a new instance of the class to + watch a specified config file used to configure a repository. + + The repository to configure. + The configuration file to watch. + + + Initializes a new instance of the class. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Called by the timer when the configuration has been updated. + + null + + + + Release the handles held by the watcher and timer. + + + + + The implementation of the interface suitable + for use with the compact framework + + + + This implementation is a simple + mapping between repository name and + object. + + + The .NET Compact Framework 1.0 does not support retrieving assembly + level attributes therefore unlike the DefaultRepositorySelector + this selector does not examine the calling assembly for attributes. + + + Nicko Cadell + + + + Interface used by the to select the . + + + + The uses a + to specify the policy for selecting the correct + to return to the caller. + + + Nicko Cadell + Gert Driesen + + + + Gets the for the specified assembly. + + The assembly to use to lookup to the + The for the assembly. + + + Gets the for the specified assembly. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. The results of this method must be repeatable, i.e. + when called again with the same arguments the result must be the + save value. + + + + + + Gets the named . + + The name to use to lookup to the . + The named + + Lookup a named . This is the repository created by + calling . + + + + + Creates a new repository for the assembly specified. + + The assembly to use to create the domain to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the domain + specified such that a call to with the + same assembly specified will return the same repository instance. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. + + + + + + Creates a new repository with the name specified. + + The name to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the name + specified such that a call to with the + same name will return the same repository instance. + + + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets an array of all currently defined repositories. + + + An array of the instances created by + this . + + + Gets an array of all of the repositories created by this selector. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Create a new repository selector + + the type of the repositories to create, must implement + + + Create an new compact repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + throw if is null + throw if does not implement + + + + Get the for the specified assembly + + not used + The default + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Get the named + + the name of the repository to lookup + The named + + + Get the named . The default + repository is log4net-default-repository. Other repositories + must be created using the . + If the named repository does not exist an exception is thrown. + + + throw if is null + throw if the does not exist + + + + Create a new repository for the assembly specified + + not used + the type of repository to create, must implement + the repository created + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + If the is null then the + default repository type specified to the constructor is used. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Create a new repository for the repository specified + + the repository to associate with the + the type of repository to create, must implement . + If this param is null then the default repository type is used. + the repository created + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + If the named repository already exists an exception will be thrown. + + + If is null then the default + repository type specified to the constructor is used. + + + throw if is null + throw if the already exists + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + The fully qualified type of the CompactRepositorySelector class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Notify the registered listeners that the repository has been created + + The repository that has been created + + + Raises the LoggerRepositoryCreatedEvent + event. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + The default implementation of the interface. + + + + Uses attributes defined on the calling assembly to determine how to + configure the hierarchy for the repository. + + + Nicko Cadell + Gert Driesen + + + + Creates a new repository selector. + + The type of the repositories to create, must implement + + + Create an new repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + is . + does not implement . + + + + Gets the for the specified assembly. + + The assembly use to lookup the . + + + The type of the created and the repository + to create can be overridden by specifying the + attribute on the . + + + The default values are to use the + implementation of the interface and to use the + as the name of the repository. + + + The created will be automatically configured using + any attributes defined on + the . + + + The for the assembly + is . + + + + Gets the for the specified repository. + + The repository to use to lookup the . + The for the specified repository. + + + Returns the named repository. If is null + a is thrown. If the repository + does not exist a is thrown. + + + Use to create a repository. + + + is . + does not exist. + + + + Create a new repository for the assembly specified + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the assembly specified. + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The name to assign to the created repository + Set to true to read and apply the assembly attributes + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the specified repository. + + The repository to associate with the . + The type of repository to create, must implement . + If this param is then the default repository type is used. + The new repository. + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + is . + already exists. + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Aliases a repository to an existing repository. + + The repository to alias. + The repository that the repository is aliased to. + + + The repository specified will be aliased to the repository when created. + The repository must not already exist. + + + When the repository is created it must utilize the same repository type as + the repository it is aliased to, otherwise the aliasing will fail. + + + + is . + -or- + is . + + + + + Notifies the registered listeners that the repository has been created. + + The repository that has been created. + + + Raises the event. + + + + + + Gets the repository name and repository type for the specified assembly. + + The assembly that has a . + in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. + in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. + is . + + + + Configures the repository using information from the assembly. + + The assembly containing + attributes which define the configuration for the repository. + The repository to configure. + + is . + -or- + is . + + + + + Loads the attribute defined plugins on the assembly. + + The assembly that contains the attributes. + The repository to add the plugins to. + + is . + -or- + is . + + + + + Loads the attribute defined aliases on the assembly. + + The assembly that contains the attributes. + The repository to alias to. + + is . + -or- + is . + + + + + The fully qualified type of the DefaultRepositorySelector class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Defined error codes that can be passed to the method. + + + + Values passed to the method. + + + Nicko Cadell + + + + A general error + + + + + Error while writing output + + + + + Failed to flush file + + + + + Failed to close file + + + + + Unable to open output file + + + + + No layout specified + + + + + Failed to parse address + + + + + An evaluator that triggers on an Exception type + + + + This evaluator will trigger if the type of the Exception + passed to + is equal to a Type in . /// + + + Drew Schaeffer + + + + Test if an triggers an action + + + + Implementations of this interface allow certain appenders to decide + when to perform an appender specific action. + + + The action or behavior triggered is defined by the implementation. + + + Nicko Cadell + + + + Test if this event triggers the action + + The event to check + true if this event triggers the action, otherwise false + + + Return true if this event triggers the action + + + + + + The type that causes the trigger to fire. + + + + + Causes subclasses of to cause the trigger to fire. + + + + + Default ctor to allow dynamic creation through a configurator. + + + + + Constructs an evaluator and initializes to trigger on + + the type that triggers this evaluator. + If true, this evaluator will trigger on subclasses of . + + + + Is this the triggering event? + + The event to check + This method returns true, if the logging event Exception + Type is . + Otherwise it returns false + + + This evaluator will trigger if the Exception Type of the event + passed to + is . + + + + + + The type that triggers this evaluator. + + + + + If true, this evaluator will trigger on subclasses of . + + + + + Appenders may delegate their error handling to an . + + + + Error handling is a particularly tedious to get right because by + definition errors are hard to predict and to reproduce. + + + Nicko Cadell + Gert Driesen + + + + Handles the error and information about the error condition is passed as + a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + The error code associated with the error. + + + Handles the error and information about the error condition is passed as + a parameter. + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + + + See . + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + + + See . + + + + + + Interface for objects that require fixing. + + + + Interface that indicates that the object requires fixing before it + can be taken outside the context of the appender's + method. + + + When objects that implement this interface are stored + in the context properties maps + and + are fixed + (see ) the + method will be called. + + + Nicko Cadell + + + + Get a portable version of this object + + the portable instance of this object + + + Get a portable instance object that represents the current + state of this object. The portable object can be stored + and logged from any thread with identical results. + + + + + + Interface that all loggers implement + + + + This interface supports logging events and testing if a level + is enabled for logging. + + + These methods will not throw exceptions. Note to implementor, ensure + that the implementation of these methods cannot allow an exception + to be thrown to the caller. + + + Nicko Cadell + Gert Driesen + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + the exception to log, including its stack trace. Pass null to not log an exception. + + + Generates a logging event for the specified using + the and . + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + + + + Gets the name of the logger. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Base interface for all wrappers + + + + Base interface for all wrappers. + + + All wrappers must implement this interface. + + + Nicko Cadell + + + + Get the implementation behind this wrapper object. + + + The object that in implementing this object. + + + + The object that in implementing this + object. The Logger object may not + be the same object as this object because of logger decorators. + This gets the actual underlying objects that is used to process + the log events. + + + + + + Delegate used to handle logger repository creation event notifications + + The which created the repository. + The event args + that holds the instance that has been created. + + + Delegate used to handle logger repository creation event notifications. + + + + + + Provides data for the event. + + + + A + event is raised every time a is created. + + + + + + The created + + + + + Construct instance using specified + + the that has been created + + + Construct instance using specified + + + + + + The that has been created + + + The that has been created + + + + The that has been created + + + + + + Defines the default set of levels recognized by the system. + + + + Each has an associated . + + + Levels have a numeric that defines the relative + ordering between levels. Two Levels with the same + are deemed to be equivalent. + + + The levels that are recognized by log4net are set for each + and each repository can have different levels defined. The levels are stored + in the on the repository. Levels are + looked up by name from the . + + + When logging at level INFO the actual level used is not but + the value of LoggerRepository.LevelMap["INFO"]. The default value for this is + , but this can be changed by reconfiguring the level map. + + + Each level has a in addition to its . The + is the string that is written into the output log. By default + the display name is the same as the level name, but this can be used to alias levels + or to localize the log output. + + + Some of the predefined levels recognized by the system are: + + + + . + + + . + + + . + + + . + + + . + + + . + + + . + + + + Nicko Cadell + Gert Driesen + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + The display name for this level. This may be localized or otherwise different from the name + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Returns the representation of the current + . + + + A representation of the current . + + + + Returns the level . + + + + + + Compares levels. + + The object to compare against. + true if the objects are equal. + + + Compares the levels of instances, and + defers to base class if the target object is not a + instance. + + + + + + Returns a hash code + + A hash code for the current . + + + Returns a hash code suitable for use in hashing algorithms and data + structures like a hash table. + + + Returns the hash code of the level . + + + + + + Compares this instance to a specified object and returns an + indication of their relative values. + + A instance or to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the + values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + This instance is less than . + + + Zero + This instance is equal to . + + + Greater than zero + + This instance is greater than . + -or- + is . + + + + + + + must be an instance of + or ; otherwise, an exception is thrown. + + + is not a . + + + + Returns a value indicating whether a specified + is greater than another specified . + + A + A + + true if is greater than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than another specified . + + A + A + + true if is less than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is greater than or equal to another specified . + + A + A + + true if is greater than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than or equal to another specified . + + A + A + + true if is less than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have the same value. + + A or . + A or . + + true if the value of is the same as the + value of ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have different values. + + A or . + A or . + + true if the value of is different from + the value of ; otherwise, false. + + + + Compares two levels. + + + + + + Compares two specified instances. + + The first to compare. + The second to compare. + + A 32-bit signed integer that indicates the relative order of the + two values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + is less than . + + + Zero + is equal to . + + + Greater than zero + is greater than . + + + + + + Compares two levels. + + + + + + The level designates a higher level than all the rest. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events + that will presumably lead the application to abort. + + + + + The level designates very severe error events. + Take immediate action, alerts. + + + + + The level designates very severe error events. + Critical condition, critical. + + + + + The level designates very severe error events. + + + + + The level designates error events that might + still allow the application to continue running. + + + + + The level designates potentially harmful + situations. + + + + + The level designates informational messages + that highlight the progress of the application at the highest level. + + + + + The level designates informational messages that + highlight the progress of the application at coarse-grained level. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates the lowest level possible. + + + + + Gets the name of this level. + + + The name of this level. + + + + Gets the name of this level. + + + + + + Gets the value of this level. + + + The value of this level. + + + + Gets the value of this level. + + + + + + Gets the display name of this level. + + + The display name of this level. + + + + Gets the display name of this level. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a LevelCollection instance. + + list to create a readonly wrapper arround + + A LevelCollection wrapper that is read-only. + + + + + Initializes a new instance of the LevelCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the LevelCollection class + that has the specified initial capacity. + + + The number of elements that the new LevelCollection is initially capable of storing. + + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified LevelCollection. + + The LevelCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + Copies the entire LevelCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire LevelCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the LevelCollection. + + The to be added to the end of the LevelCollection. + The index at which the value has been added. + + + + Removes all elements from the LevelCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the LevelCollection. + + The to check for. + true if is found in the LevelCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the LevelCollection. + + The to locate in the LevelCollection. + + The zero-based index of the first occurrence of + in the entire LevelCollection, if found; otherwise, -1. + + + + + Inserts an element into the LevelCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the LevelCollection. + + The to remove from the LevelCollection. + + The specified was not found in the LevelCollection. + + + + + Removes the element at the specified index of the LevelCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the LevelCollection. + + An for the entire LevelCollection. + + + + Adds the elements of another LevelCollection to the current LevelCollection. + + The LevelCollection whose elements should be added to the end of the current LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a array to the current LevelCollection. + + The array whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a collection to the current LevelCollection. + + The collection whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the LevelCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Gets or sets the number of elements the LevelCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + A value + + + + + Supports simple iteration over a . + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + An evaluator that triggers at a threshold level + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + Nicko Cadell + + + + The threshold for triggering + + + + + Create a new evaluator using the threshold. + + + + Create a new evaluator using the threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Create a new evaluator using the specified threshold. + + the threshold to trigger at + + + Create a new evaluator using the specified threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the event level + is equal or higher than the . + Otherwise it returns false + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + the threshold to trigger at + + + The that will cause this evaluator to trigger + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Mapping between string name and Level object + + + + Mapping between string name and object. + This mapping is held separately for each . + The level name is case insensitive. + + + Nicko Cadell + + + + Mapping from level name to Level object. The + level name is case insensitive + + + + + Construct the level map + + + + Construct the level map. + + + + + + Clear the internal maps of all levels + + + + Clear the internal maps of all levels + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + + + Create a new Level and add it to the map + + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + the display name to give to the Level + + + Create a new Level and add it to the map + + + + + + Add a Level to the map + + the Level to add + + + Add a Level to the map + + + + + + Lookup a named level from the map + + the name of the level to lookup is taken from this level. + If the level is not set on the map then this level is added + the level in the map with the name specified + + + Lookup a named level from the map. The name of the level to lookup is taken + from the property of the + argument. + + + If no level with the specified name is found then the + argument is added to the level map + and returned. + + + + + + Lookup a by name + + The name of the Level to lookup + a Level from the map with the name specified + + + Returns the from the + map with the name specified. If the no level is + found then null is returned. + + + + + + Return all possible levels as a list of Level objects. + + all possible levels as a list of Level objects + + + Return all possible levels as a list of Level objects. + + + + + + The internal representation of caller location information. + + + + This class uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. + + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + Nicko Cadell + Gert Driesen + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + Constructor + + The declaring type of the method that is + the stack boundary into the logging system for this call. + + + Initializes a new instance of the + class based on the current thread. + + + + + + Constructor + + The fully qualified class name. + The method name. + The file name. + The line number of the method within the file. + + + Initializes a new instance of the + class with the specified data. + + + + + + The fully qualified type of the LocationInfo class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + Gets the stack frames from the stack trace of the caller making the log request + + + + + Static manager that controls the creation of repositories + + + + Static manager that controls the creation of repositories + + + This class is used by the wrapper managers (e.g. ) + to provide access to the objects. + + + This manager also holds the that is used to + lookup and create repositories. The selector can be set either programmatically using + the property, or by setting the log4net.RepositorySelector + AppSetting in the applications config file to the fully qualified type name of the + selector to use. + + + Nicko Cadell + Gert Driesen + + + + Private constructor to prevent instances. Only static methods should be used. + + + + Private constructor to prevent instances. Only static methods should be used. + + + + + + Hook the shutdown event + + + + On the full .NET runtime, the static constructor hooks up the + AppDomain.ProcessExit and AppDomain.DomainUnload> events. + These are used to shutdown the log4net system as the application exits. + + + + + + Register for ProcessExit and DomainUnload events on the AppDomain + + + + This needs to be in a separate method because the events make + a LinkDemand for the ControlAppDomain SecurityPermission. Because + this is a LinkDemand it is demanded at JIT time. Therefore we cannot + catch the exception in the method itself, we have to catch it in the + caller. + + + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + Returns the default instance. + + + + + + Returns the named logger if it exists. + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified repository. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns the named logger if it exists. + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified assembly's repository. + + + + If the named logger exists (in the specified assembly's repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Retrieves or creates a named logger. + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Retrieves or creates a named logger. + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Shorthand for . + + The repository to lookup in. + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shorthand for . + + the assembly to use to lookup the repository + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The repository to shutdown. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The assembly to use to lookup the repository. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Resets all values contained in this repository instance to their defaults. + + The repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + The assembly to use to lookup the repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Gets an array of all currently defined repositories. + + An array of all the known objects. + + + Gets an array of all currently defined repositories. + + + + + + Internal method to get pertinent version info. + + A string of version info. + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + The fully qualified type of the LoggerManager class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Initialize the default repository selector + + + + + Gets or sets the repository selector used by the . + + + The repository selector used by the . + + + + The repository selector () is used by + the to create and select repositories + (). + + + The caller to supplies either a string name + or an assembly (if not supplied the assembly is inferred using + ). + + + This context is used by the selector to lookup a specific repository. + + + For the full .NET Framework, the default repository is DefaultRepositorySelector; + for the .NET Compact Framework CompactRepositorySelector is the default + repository. + + + + + + Implementation of the interface. + + + + This class should be used as the base for all wrapper implementations. + + + Nicko Cadell + Gert Driesen + + + + Constructs a new wrapper for the specified logger. + + The logger to wrap. + + + Constructs a new wrapper for the specified logger. + + + + + + The logger that this object is wrapping + + + + + Gets the implementation behind this wrapper object. + + + The object that this object is implementing. + + + + The Logger object may not be the same object as this object + because of logger decorators. + + + This gets the actual underlying objects that is used to process + the log events. + + + + + + Portable data structure used by + + + + Portable data structure used by + + + Nicko Cadell + + + + The logger name. + + + + The logger name. + + + + + + Level of logging event. + + + + Level of logging event. Level cannot be Serializable + because it is a flyweight. Due to its special serialization it + cannot be declared final either. + + + + + + The application supplied message. + + + + The application supplied message of logging event. + + + + + + The name of thread + + + + The name of thread in which this logging event was generated + + + + + + Gets or sets the local time the event was logged + + + + Prefer using the setter, since local time can be ambiguous. + + + + + + Location information for the caller. + + + + Location information for the caller. + + + + + + String representation of the user + + + + String representation of the user's windows name, + like DOMAIN\username + + + + + + String representation of the identity. + + + + String representation of the current thread's principal identity. + + + + + + The string representation of the exception + + + + The string representation of the exception + + + + + + String representation of the AppDomain. + + + + String representation of the AppDomain. + + + + + + Additional event specific properties + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + + + + Gets or sets the UTC time the event was logged + + + + The TimeStamp is stored in the UTC time zone. + + + + + + Flags passed to the property + + + + Flags passed to the property + + + Nicko Cadell + + + + Fix the MDC + + + + + Fix the NDC + + + + + Fix the rendered message + + + + + Fix the thread name + + + + + Fix the callers location information + + + CAUTION: Very slow to generate + + + + + Fix the callers windows user name + + + CAUTION: Slow to generate + + + + + Fix the domain friendly name + + + + + Fix the callers principal name + + + CAUTION: May be slow to generate + + + + + Fix the exception text + + + + + Fix the event properties. Active properties must implement in order to be eligible for fixing. + + + + + No fields fixed + + + + + All fields fixed + + + + + Partial fields fixed + + + + This set of partial fields gives good performance. The following fields are fixed: + + + + + + + + + + + + + The internal representation of logging events. + + + + When an affirmative decision is made to log then a + instance is created. This instance + is passed around to the different log4net components. + + + This class is of concern to those wishing to extend log4net. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino + + + + The key into the Properties map for the host name value. + + + + + The key into the Properties map for the thread identity value. + + + + + The key into the Properties map for the user name value. + + + + + Initializes a new instance of the class + from the supplied parameters. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + The name of the logger of this event. + The level of this event. + The message of this event. + The exception for this event. + + + Except , and , + all fields of LoggingEvent are filled when actually needed. Call + to cache all data locally + to prevent inconsistencies. + + This method is called by the log4net framework + to create a logging event. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + The fields in the struct that have already been fixed. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + The parameter should be used to specify which fields in the + struct have been preset. Fields not specified in the + will be captured from the environment if requested or fixed. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Initializes a new instance of the class + using specific data. + + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Serialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Ensure that the repository is set. + + the value for the repository + + + + Write the rendered message to a TextWriter + + the writer to write the message to + + + Unlike the property this method + does store the message data in the internal cache. Therefore + if called only once this method should be faster than the + property, however if the message is + to be accessed multiple times then the property will be more efficient. + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + The data in this event must be fixed before it can be serialized. + + + The method must be called during the + method call if this event + is to be used outside that method. + + + + + + Gets the portable data for this . + + The for this event. + + + A new can be constructed using a + instance. + + + Does a fix of the data + in the logging event before returning the event data. + + + + + + Gets the portable data for this . + + The set of data to ensure is fixed in the LoggingEventData + The for this event. + + + A new can be constructed using a + instance. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Obsolete. Use instead. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Returns this event's exception's rendered using the + . + + + + + + Fix instance fields that hold volatile data. + + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + incurred by calling but it + is essential to maintaining data consistency. + + + Calling is equivalent to + calling passing the parameter + false. + + + See for more + information. + + + + + + Fixes instance fields that hold volatile data. + + Set to true to not fix data that takes a long time to fix. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + The param controls the data that + is fixed. Some of the data that can be fixed takes a long time to + generate, therefore if you do not require those settings to be fixed + they can be ignored by setting the param + to true. This setting will ignore the + and settings. + + + Set to false to ensure that all + settings are fixed. + + + + + + Fix the fields specified by the parameter + + the fields to fix + + + Only fields specified in the will be fixed. + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Lookup a composite property in this event + + the key for the property to lookup + the value for the property + + + This event has composite properties that combine together properties from + several different contexts in the following order: + + + this events properties + + This event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + + Get all the composite properties in this event + + the containing all the properties + + + See for details of the composite properties + stored by the event. + + + This method returns a single containing all the + properties defined for this event. + + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The fully qualified Type of the calling + logger class in the stack frame (i.e. the declaring type of the method). + + + + + The application supplied message of logging event. + + + + + The exception that was thrown. + + + This is not serialized. The string representation + is serialized instead. + + + + + The repository that generated the logging event + + + This is not serialized. + + + + + The fix state for this event + + + These flags indicate which fields have been fixed. + Not serialized. + + + + + Indicated that the internal cache is updateable (ie not fixed) + + + This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler + changes in the caching strategy. + + + + + Gets the time when the current process started. + + + This is the time when this process started. + + + + The TimeStamp is stored internally in UTC and converted to the local time zone for this computer. + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the UTC time when the current process started. + + + This is the UTC time when this process started. + + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the of the logging event. + + + The of the logging event. + + + + Gets the of the logging event. + + + + + + Gets the time of the logging event. + + + The time of the logging event. + + + + The TimeStamp is stored in UTC and converted to the local time zone for this computer. + + + + + + Gets UTC the time of the logging event. + + + The UTC time of the logging event. + + + + + Gets the name of the logger that logged the event. + + + The name of the logger that logged the event. + + + + Gets the name of the logger that logged the event. + + + + + + Gets the location information for this logging event. + + + The location information for this logging event. + + + + The collected information is cached for future use. + + + See the class for more information on + supported frameworks and the different behavior in Debug and + Release builds. + + + + + + Gets the message object used to initialize this event. + + + The message object used to initialize this event. + + + + Gets the message object used to initialize this event. + Note that this event may not have a valid message object. + If the event is serialized the message object will not + be transferred. To get the text of the message the + property must be used + not this property. + + + If there is no defined message object for this event then + null will be returned. + + + + + + Gets the exception object used to initialize this event. + + + The exception object used to initialize this event. + + + + Gets the exception object used to initialize this event. + Note that this event may not have a valid exception object. + If the event is serialized the exception object will not + be transferred. To get the text of the exception the + method must be used + not this property. + + + If there is no defined exception object for this event then + null will be returned. + + + + + + The that this event was created in. + + + + The that this event was created in. + + + + + + Gets the message, rendered through the . + + + The message rendered through the . + + + + The collected information is cached for future use. + + + + + + Gets the name of the current thread. + + + The name of the current thread, or the thread ID when + the name is not available. + + + + The collected information is cached for future use. + + + + + + Gets the name of the current user. + + + The name of the current user, or NOT AVAILABLE when the + underlying runtime has no support for retrieving the name of the + current user. + + + + Calls WindowsIdentity.GetCurrent().Name to get the name of + the current windows user. + + + To improve performance, we could cache the string representation of + the name, and reuse that as long as the identity stayed constant. + Once the identity changed, we would need to re-assign and re-render + the string. + + + However, the WindowsIdentity.GetCurrent() call seems to + return different objects every time, so the current implementation + doesn't do this type of caching. + + + Timing for these operations: + + + + Method + Results + + + WindowsIdentity.GetCurrent() + 10000 loops, 00:00:00.2031250 seconds + + + WindowsIdentity.GetCurrent().Name + 10000 loops, 00:00:08.0468750 seconds + + + + This means we could speed things up almost 40 times by caching the + value of the WindowsIdentity.GetCurrent().Name property, since + this takes (8.04-0.20) = 7.84375 seconds. + + + + + + Gets the identity of the current thread principal. + + + The string name of the identity of the current thread principal. + + + + Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get + the name of the current thread principal. + + + + + + Gets the AppDomain friendly name. + + + The AppDomain friendly name. + + + + Gets the AppDomain friendly name. + + + + + + Additional event specific properties. + + + Additional event specific properties. + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + This property is for events that have been added directly to + this event. The aggregate properties (which include these + event properties) can be retrieved using + and . + + + Once the properties have been fixed this property + returns the combined cached properties. This ensures that updates to + this property are always reflected in the underlying storage. When + returning the combined properties there may be more keys in the + Dictionary than expected. + + + + + + The fixed fields in this event + + + The set of fields that are fixed in this event + + + + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Implementation of wrapper interface. + + + + This implementation of the interface + forwards to the held by the base class. + + + This logger has methods to allow the caller to log at the following + levels: + + + + DEBUG + + The and methods log messages + at the DEBUG level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + INFO + + The and methods log messages + at the INFO level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + WARN + + The and methods log messages + at the WARN level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + ERROR + + The and methods log messages + at the ERROR level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + FATAL + + The and methods log messages + at the FATAL level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + + The values for these levels and their semantic meanings can be changed by + configuring the for the repository. + + + Nicko Cadell + Gert Driesen + + + + The ILog interface is use by application to log messages into + the log4net framework. + + + + Use the to obtain logger instances + that implement this interface. The + static method is used to get logger instances. + + + This class contains methods for logging at different levels and also + has properties for determining if those logging levels are + enabled in the current configuration. + + + This interface can be implemented in different ways. This documentation + specifies reasonable behavior that a caller can expect from the actual + implementation, however different implementations reserve the right to + do things differently. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + Log a message object with the level. + + Log a message object with the level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Logs a message object with the INFO level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + For some ILog interface log, when you write: + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, string construction and concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed (who isn't), then you should write: + + + if (log.IsDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in and once in + the . This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. This is the preferred style of logging. + + Alternatively if your logger is available statically then the is debug + enabled state can be stored in a static variable like this: + + + private static readonly bool isDebugEnabled = log.IsDebugEnabled; + + + Then when you come to log you can write: + + + if (isDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way the debug enabled state is only queried once + when the class is loaded. Using a private static readonly + variable is the most efficient because it is a run time constant + and can be heavily optimized by the JIT compiler. + + + Of course if you use a static readonly variable to + hold the enabled state of the logger then you cannot + change the enabled state at runtime to vary the logging + that is produced. You have to decide if you need absolute + speed or runtime flexibility. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Construct a new wrapper for the specified logger. + + The logger to wrap. + + + Construct a new wrapper for the specified logger. + + + + + + Virtual method called when the configuration of the repository changes + + the repository holding the levels + + + Virtual method called when the configuration of the repository changes + + + + + + Logs a message object with the DEBUG level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + DEBUG level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the DEBUG level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the DEBUG level including + the stack trace of the passed + as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + INFO level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the INFO level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the WARN level. + + the message object to log + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + WARN level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the WARN level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the WARN level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the ERROR level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + ERROR level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the ERROR level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the ERROR level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the FATAL level. + + The message object to log. + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + FATAL level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the FATAL level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the FATAL level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Event handler for the event + + the repository + Empty + + + + The fully qualified name of this declaring type not the type of any subclass. + + + + + Checks if this logger is enabled for the DEBUG + level. + + + true if this logger is enabled for DEBUG events, + false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + + For some log Logger object, when you write: + + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed, then you should write: + + + if (log.IsDebugEnabled()) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in IsDebugEnabled and once in + the Debug. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. + + + + + + Checks if this logger is enabled for the INFO level. + + + true if this logger is enabled for INFO events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the WARN level. + + + true if this logger is enabled for WARN events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the ERROR level. + + + true if this logger is enabled for ERROR events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + Checks if this logger is enabled for the FATAL level. + + + true if this logger is enabled for FATAL events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + provides method information without actually referencing a System.Reflection.MethodBase + as that would require that the containing assembly is loaded. + + + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + constructs a method item for an unknown method. + + + + + constructs a method item from the name of the method. + + + + + + constructs a method item from the name of the method and its parameters. + + + + + + + constructs a method item from a method base by determining the method name and its parameters. + + + + + + The fully qualified type of the StackFrameItem class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the method name of the caller making the logging + request. + + + The method name of the caller making the logging + request. + + + + Gets the method name of the caller making the logging + request. + + + + + + Gets the method parameters of the caller making + the logging request. + + + The method parameters of the caller making + the logging request + + + + Gets the method parameters of the caller making + the logging request. + + + + + + A SecurityContext used by log4net when interacting with protected resources + + + + A SecurityContext used by log4net when interacting with protected resources + for example with operating system services. This can be used to impersonate + a principal that has been granted privileges on the system resources. + + + Nicko Cadell + + + + Impersonate this SecurityContext + + State supplied by the caller + An instance that will + revoke the impersonation of this SecurityContext, or null + + + Impersonate this security context. Further calls on the current + thread should now be made in the security context provided + by this object. When the result + method is called the security + context of the thread should be reverted to the state it was in + before was called. + + + + + + The providers default instances. + + + + A configured component that interacts with potentially protected system + resources uses a to provide the elevated + privileges required. If the object has + been not been explicitly provided to the component then the component + will request one from this . + + + By default the is + an instance of which returns only + objects. This is a reasonable default + where the privileges required are not know by the system. + + + This default behavior can be overridden by subclassing the + and overriding the method to return + the desired objects. The default provider + can be replaced by programmatically setting the value of the + property. + + + An alternative is to use the log4net.Config.SecurityContextProviderAttribute + This attribute can be applied to an assembly in the same way as the + log4net.Config.XmlConfiguratorAttribute". The attribute takes + the type to use as the as an argument. + + + Nicko Cadell + + + + The default provider + + + + + Protected default constructor to allow subclassing + + + + Protected default constructor to allow subclassing + + + + + + Create a SecurityContext for a consumer + + The consumer requesting the SecurityContext + An impersonation context + + + The default implementation is to return a . + + + Subclasses should override this method to provide their own + behavior. + + + + + + Gets or sets the default SecurityContextProvider + + + The default SecurityContextProvider + + + + The default provider is used by configured components that + require a and have not had one + given to them. + + + By default this is an instance of + that returns objects. + + + The default provider can be set programmatically by setting + the value of this property to a sub class of + that has the desired behavior. + + + + + + provides stack frame information without actually referencing a System.Diagnostics.StackFrame + as that would require that the containing assembly is loaded. + + + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + returns a stack frame item from a stack frame. This + + + + + + + The fully qualified type of the StackFrameItem class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + An evaluator that triggers after specified number of seconds. + + + + This evaluator will trigger if the specified time period + has passed since last check. + + + Robert Sevcik + + + + The default time threshold for triggering in seconds. Zero means it won't trigger at all. + + + + + The time threshold for triggering in seconds. Zero means it won't trigger at all. + + + + + The UTC time of last check. This gets updated when the object is created and when the evaluator triggers. + + + + + Create a new evaluator using the time threshold in seconds. + + + + Create a new evaluator using the time threshold in seconds. + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Create a new evaluator using the specified time threshold in seconds. + + + The time threshold in seconds to trigger after. + Zero means it won't trigger at all. + + + + Create a new evaluator using the specified time threshold in seconds. + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the specified time period + has passed since last check.. + Otherwise it returns false + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + The time threshold in seconds to trigger after + + + The time threshold in seconds to trigger after. + Zero means it won't trigger at all. + + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Delegate used to handle creation of new wrappers. + + The logger to wrap in a wrapper. + + + Delegate used to handle creation of new wrappers. This delegate + is called from the + method to construct the wrapper for the specified logger. + + + The delegate to use is supplied to the + constructor. + + + + + + Maps between logger objects and wrapper objects. + + + + This class maintains a mapping between objects and + objects. Use the method to + lookup the for the specified . + + + New wrapper instances are created by the + method. The default behavior is for this method to delegate construction + of the wrapper to the delegate supplied + to the constructor. This allows specialization of the behavior without + requiring subclassing of this type. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the + + The handler to use to create the wrapper objects. + + + Initializes a new instance of the class with + the specified handler to create the wrapper objects. + + + + + + Gets the wrapper object for the specified logger. + + The wrapper object for the specified logger + + + If the logger is null then the corresponding wrapper is null. + + + Looks up the wrapper it it has previously been requested and + returns it. If the wrapper has never been requested before then + the virtual method is + called. + + + + + + Creates the wrapper object for the specified logger. + + The logger to wrap in a wrapper. + The wrapper object for the logger. + + + This implementation uses the + passed to the constructor to create the wrapper. This method + can be overridden in a subclass. + + + + + + Called when a monitored repository shutdown event is received. + + The that is shutting down + + + This method is called when a that this + is holding loggers for has signaled its shutdown + event . The default + behavior of this method is to release the references to the loggers + and their wrappers generated for this repository. + + + + + + Event handler for repository shutdown event. + + The sender of the event. + The event args. + + + + Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings + + + + + The handler to use to create the extension wrapper objects. + + + + + Internal reference to the delegate used to register for repository shutdown events. + + + + + Gets the map of logger repositories. + + + Map of logger repositories. + + + + Gets the hashtable that is keyed on . The + values are hashtables keyed on with the + value being the corresponding . + + + + + + Formats a as "HH:mm:ss,fff". + + + + Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". + + + Nicko Cadell + Gert Driesen + + + + Render a as a string. + + + + Interface to abstract the rendering of a + instance into a string. + + + The method is used to render the + date to a text writer. + + + Nicko Cadell + Gert Driesen + + + + Formats the specified date as a string. + + The date to format. + The writer to write to. + + + Format the as a string and write it + to the provided. + + + + + + String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. + + + + + String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. + + + + + String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. + + + + + Renders the date into a string. Format is "HH:mm:ss". + + The date to render into a string. + The string builder to write to. + + + Subclasses should override this method to render the date + into a string using a precision up to the second. This method + will be called at most once per second and the result will be + reused if it is needed again during the same second. + + + + + + Renders the date into a string. Format is "HH:mm:ss,fff". + + The date to render into a string. + The writer to write to. + + + Uses the method to generate the + time string up to the seconds and then appends the current + milliseconds. The results from are + cached and is called at most once + per second. + + + Sub classes should override + rather than . + + + + + + Last stored time with precision up to the second. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Formats a as "dd MMM yyyy HH:mm:ss,fff" + + + + Formats a in the format + "dd MMM yyyy HH:mm:ss,fff" for example, + "06 Nov 1994 15:49:37,459". + + + Nicko Cadell + Gert Driesen + Angelika Schnagl + + + + Default constructor. + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" + for example, "06 Nov 1994 15:49:37". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + The format info for the invariant culture. + + + + + Formats the as "yyyy-MM-dd HH:mm:ss,fff". + + + + Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + Formats the using the method. + + + + Formats the using the method. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The format string. + + + Initializes a new instance of the class + with the specified format string. + + + The format string must be compatible with the options + that can be supplied to . + + + + + + Formats the date using . + + The date to convert to a string. + The writer to write to. + + + Uses the date format string supplied to the constructor to call + the method to format the date. + + + + + + The format string used to format the . + + + + The format string must be compatible with the options + that can be supplied to . + + + + + + This filter drops all . + + + + You can add this filter to the end of a filter chain to + switch from the default "accept all unless instructed otherwise" + filtering behavior to a "deny all unless instructed otherwise" + behavior. + + + Nicko Cadell + Gert Driesen + + + + Subclass this type to implement customized logging event filtering + + + + Users should extend this class to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface to provide customized logging event filtering + + + + Users should implement this interface to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Decide if the logging event should be logged through an appender. + + The LoggingEvent to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Points to the next filter in the filter chain. + + + + See for more information. + + + + + + Initialize the filter with the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Typically filter's options become active immediately on set, + however this method must still be called. + + + + + + Decide if the should be logged through an appender. + + The to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + This method is marked abstract and must be implemented + in a subclass. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Default constructor + + + + + Always returns the integer constant + + the LoggingEvent to filter + Always returns + + + Ignores the event being logged and just returns + . This can be used to change the default filter + chain behavior from to . This filter + should only be used as the last filter in the chain + as any further filters will be ignored! + + + + + + The return result from + + + + The return result from + + + + + + The log event must be dropped immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This filter is neutral with respect to the log event. + The remaining filters, if any, should be consulted for a final decision. + + + + + The log event must be logged immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This is a very simple filter based on matching. + + + + The filter admits two options and + . If there is an exact match between the value + of the option and the of the + , then the method returns in + case the option value is set + to true, if it is false then + is returned. If the does not match then + the result will be . + + + Nicko Cadell + Gert Driesen + + + + flag to indicate if the filter should on a match + + + + + the to match against + + + + + Default constructor + + + + + Tests if the of the logging event matches that of the filter + + the event to filter + see remarks + + + If the of the event matches the level of the + filter then the result of the function depends on the + value of . If it is true then + the function will return , it it is false then it + will return . If the does not match then + the result will be . + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + The level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + This is a simple filter based on matching. + + + + The filter admits three options and + that determine the range of priorities that are matched, and + . If there is a match between the range + of priorities and the of the , then the + method returns in case the + option value is set to true, if it is false + then is returned. If there is no match, is returned. + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when matching a + + + + + the minimum value to match + + + + + the maximum value to match + + + + + Default constructor + + + + + Check if the event should be logged. + + the logging event to check + see remarks + + + If the of the logging event is outside the range + matched by this filter then + is returned. If the is matched then the value of + is checked. If it is true then + is returned, otherwise + is returned. + + + + + + when matching and + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Set the minimum matched + + + + The minimum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Sets the maximum matched + + + + The maximum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a string in the event's logger name. + + + + The works very similar to the . It admits two + options and . If the + of the starts + with the value of the option, then the + method returns in + case the option value is set to true, + if it is false then is returned. + + + Daniel Cazzulino + + + + Flag to indicate the behavior when we have a match + + + + + The logger name string to substring match against the event + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the equals the beginning of + the incoming () + then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + This filter will attempt to match this value against logger name in + the following way. The match will be done against the beginning of the + logger name (using ). The match is + case sensitive. If a match is found then + the result depends on the value of . + + + + + + Simple filter to match a keyed string in the + + + + Simple filter to match a keyed string in the + + + As the MDC has been replaced with layered properties the + should be used instead. + + + Nicko Cadell + Gert Driesen + + + + Simple filter to match a string an event property + + + + Simple filter to match a string in the value for a + specific event property + + + Nicko Cadell + + + + Simple filter to match a string in the rendered message + + + + Simple filter to match a string in the rendered message + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when we have a match + + + + + The string to substring match against the message + + + + + A string regex to match + + + + + A regex object to match (generated from m_stringRegexToMatch) + + + + + Default constructor + + + + + Initialize and precompile the Regex if required + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the occurs as a substring within + the message then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + when matching or + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Sets the static string to match + + + + The string that will be substring matched against + the rendered message. If the message contains this + string then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + Sets the regular expression to match + + + + The regular expression pattern that will be matched against + the rendered message. If the message matches this + pattern then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + The key to use to lookup the string from the event properties + + + + + Default constructor + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The event property for the is matched against + the . + If the occurs as a substring within + the property value then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + The key to lookup in the event properties and then match against. + + + + The key name to use to lookup in the properties map of the + . The match will be performed against + the value of this property if it exists. + + + + + + Simple filter to match a string in the + + + + Simple filter to match a string in the + + + As the MDC has been replaced with named stacks stored in the + properties collections the should + be used instead. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Sets the to "NDC". + + + + + + Write the event appdomain name to the output + + + + Writes the to the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + Nicko Cadell + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + + Nicko Cadell + Gert Driesen + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Protected constructor + + + + Initializes a new instance of the class. + + + + + + Evaluate this pattern converter and write the output to a writer. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the appropriate way. + + + + + + Set the next pattern converter in the chains + + the pattern converter that should follow this converter in the chain + the next converter + + + The PatternConverter can merge with its neighbor during this method (or a sub class). + Therefore the return value may or may not be the value of the argument passed in. + + + + + + Write the pattern converter to the writer with appropriate formatting + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + This method calls to allow the subclass to perform + appropriate conversion of the pattern converter. If formatting options have + been specified via the then this method will + apply those formattings before writing the output. + + + + + + Fast space padding method. + + to which the spaces will be appended. + The number of spaces to be padded. + + + Fast space padding method. + + + + + + The option string to the converter + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an object to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the Object to a writer. If the specified + is not null then it is used to render the object to text, otherwise + the object's ToString method is called. + + + + + + Get the next pattern converter in the chain + + + the next pattern converter in the chain + + + + Get the next pattern converter in the chain + + + + + + Gets or sets the formatting info for this converter + + + The formatting info for this converter + + + + Gets or sets the formatting info for this converter + + + + + + Gets or sets the option value for this converter + + + The option for this converter + + + + Gets or sets the option value for this converter + + + + + + + + + + + Initializes a new instance of the class. + + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + + Flag indicating if this converter handles exceptions + + + false if this converter handles exceptions + + + + + Flag indicating if this converter handles the logging event exception + + false if this converter handles the logging event exception + + + If this converter handles the exception object contained within + , then this property should be set to + false. Otherwise, if the layout ignores the exception + object, then the property should be set to true. + + + Set this value to override a this default setting. The default + value is true, this converter does not handle the exception. + + + + + + Write the event appdomain name to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output . + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Abstract class that provides access to the current HttpContext () that + derived classes need. + + + This class handles the case when HttpContext.Current is null by writing + to the writer. + + Ron Grabowski + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. If no property has been set, all key value pairs from the Cache will + be written to the output. + + + + + + Converter for items in the . + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net HttpContext item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. If no property has been set, all key value pairs from the Session will + be written to the output. + + + + + + Date pattern converter, uses a to format + the date of a . + + + + Render the to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter pattern based on the property. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert the pattern into the rendered message + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone. + + + + + + The fully qualified type of the DatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the exception text to the output + + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Nicko Cadell + + + + Default constructor + + + + + Write the exception text to the output + + that will receive the formatted result. + the event being logged + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception or the exception property specified + by the Option value does not exist then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Recognized values for the Option parameter are: + + + + Message + + + Source + + + StackTrace + + + TargetSite + + + HelpLink + + + + + + + Writes the caller location file name to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location file name to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Write the caller location info to the output + + + + Writes the to the output writer. + + + Nicko Cadell + + + + Write the caller location info to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Writes the event identity to the output + + + + Writes the value of the to + the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Writes the event identity to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the + to + the output . + + + + + + Write the event level to the output + + + + Writes the display name of the event + to the writer. + + + Nicko Cadell + + + + Write the event level to the output + + that will receive the formatted result. + the event being logged + + + Writes the of the + to the . + + + + + + Write the caller location line number to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location line number to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Converter for logger name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Converter to output and truncate '.' separated strings + + + + This abstract class supports truncating a '.' separated string + to show a specified number of elements from the right hand side. + This is used to truncate class names that are fully qualified. + + + Subclasses should override the method to + return the fully qualified string. + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Get the fully qualified string data + + the event being logged + the fully qualified name + + + Overridden by subclasses to get the fully qualified name before the + precision is applied to it. + + + Return the fully qualified '.' (dot/period) separated string. + + + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + Render the to the precision + specified by the property. + + + + + The fully qualified type of the NamedPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the fully qualified name of the logger + + the event being logged + The fully qualified logger name + + + Returns the of the . + + + + + + Writes the event message to the output + + + + Uses the method + to write out the event message. + + + Nicko Cadell + + + + Writes the event message to the output + + that will receive the formatted result. + the event being logged + + + Uses the method + to write out the event message. + + + + + + Write the method name to the output + + + + Writes the caller location to + the output. + + + Nicko Cadell + + + + Write the method name to the output + + that will receive the formatted result. + the event being logged + + + Writes the caller location to + the output. + + + + + + Converter to include event NDC + + + + Outputs the value of the event property named NDC. + + + The should be used instead. + + + Nicko Cadell + + + + Write the event NDC to the output + + that will receive the formatted result. + the event being logged + + + As the thread context stacks are now stored in named event properties + this converter simply looks up the value of the NDC property. + + + The should be used instead. + + + + + + Property pattern converter + + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + the event being logged + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Converter to output the relative time of the event + + + + Converter to output the time of the event relative to the start of the program. + + + Nicko Cadell + + + + Write the relative time to the output + + that will receive the formatted result. + the event being logged + + + Writes out the relative time of the event in milliseconds. + That is the number of milliseconds between the event + and the . + + + + + + Helper method to get the time difference between two DateTime objects + + start time (in the current local time zone) + end time (in the current local time zone) + the time difference in milliseconds + + + + Write the caller stack frames to the output + + + + Writes the to the output writer, using format: + type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) + + + Adam Davies + + + + Write the caller stack frames to the output + + + + Writes the to the output writer, using format: + type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 + + + Michael Cromwell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the strack frames to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Returns the Name of the method + + + This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter + string + + + + The fully qualified type of the StackTracePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + The fully qualified type of the StackTraceDetailPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Converter to include event thread name + + + + Writes the to the output. + + + Nicko Cadell + + + + Write the ThreadName to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the . + + + + + + Pattern converter for the class name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Gets the fully qualified name of the class + + the event being logged + The fully qualified type name for the caller location + + + Returns the of the . + + + + + + Converter to include event user name + + Douglas de la Torre + Nicko Cadell + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + + + Write the TimeStamp to the output + + + + Date pattern converter, uses a to format + the date of a . + + + Uses a to format the + in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the TimeStamp to the output + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone, this is converted + to Universal time before it is rendered. + + + + + + + The fully qualified type of the UtcDatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + A flexible layout configurable with pattern string that re-evaluates on each call. + + + This class is built on and provides all the + features and capabilities of PatternLayout. PatternLayout is a 'static' class + in that its layout is done once at configuration time. This class will recreate + the layout on each reference. + One important difference between PatternLayout and DynamicPatternLayout is the + treatment of the Header and Footer parameters in the configuration. The Header and Footer + parameters for DynamicPatternLayout must be syntactically in the form of a PatternString, + but should not be marked as type log4net.Util.PatternString. Doing so causes the + pattern to be statically converted at configuration time and causes DynamicPatternLayout + to perform the same as PatternLayout. + Please see for complete documentation. + + <layout type="log4net.Layout.DynamicPatternLayout"> + <param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline" /> + <param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline" /> + </layout> + + + + + + A flexible layout configurable with pattern string. + + + + The goal of this class is to a + as a string. The results + depend on the conversion pattern. + + + The conversion pattern is closely related to the conversion + pattern of the printf function in C. A conversion pattern is + composed of literal text and format control expressions called + conversion specifiers. + + + You are free to insert any literal text within the conversion + pattern. + + + Each conversion specifier starts with a percent sign (%) and is + followed by optional format modifiers and a conversion + pattern name. The conversion pattern name specifies the type of + data, e.g. logger, level, date, thread name. The format + modifiers control such things as field width, padding, left and + right justification. The following is a simple example. + + + Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume + that the log4net environment was set to use a PatternLayout. Then the + statements + + + ILog log = LogManager.GetLogger(typeof(TestApp)); + log.Debug("Message 1"); + log.Warn("Message 2"); + + would yield the output + + DEBUG [main]: Message 1 + WARN [main]: Message 2 + + + Note that there is no explicit separator between text and + conversion specifiers. The pattern parser knows when it has reached + the end of a conversion specifier when it reads a conversion + character. In the example above the conversion specifier + %-5level means the level of the logging event should be left + justified to a width of five characters. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + a + Equivalent to appdomain + + + appdomain + + Used to output the friendly name of the AppDomain where the + logging event was generated. + + + + aspnet-cache + + + Used to output all cache items in the case of %aspnet-cache or just one named item if used as %aspnet-cache{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-context + + + Used to output all context items in the case of %aspnet-context or just one named item if used as %aspnet-context{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-request + + + Used to output all request parameters in the case of %aspnet-request or just one named param if used as %aspnet-request{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-session + + + Used to output all session items in the case of %aspnet-session or just one named item if used as %aspnet-session{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + c + Equivalent to logger + + + C + Equivalent to type + + + class + Equivalent to type + + + d + Equivalent to date + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + exception + + + Used to output the exception passed in with the log message. + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + F + Equivalent to file + + + file + + + Used to output the file name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + WARNING Generating caller information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + l + Equivalent to location + + + L + Equivalent to line + + + location + + + Used to output location information of the caller which generated + the logging event. + + + The location information depends on the CLI implementation but + usually consists of the fully qualified name of the calling + method followed by the callers source the file name and line + number between parentheses. + + + The location information can be very useful. However, its + generation is extremely slow. Its use should be avoided + unless execution speed is not an issue. + + + See the note below on the availability of caller location information. + + + + + level + + + Used to output the level of the logging event. + + + + + line + + + Used to output the line number from where the logging request + was issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + logger + + + Used to output the logger of the logging event. The + logger conversion specifier can be optionally followed by + precision specifier, that is a decimal constant in + brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the logger name will be + printed. By default the logger name is printed in full. + + + For example, for the logger name "a.b.c" the pattern + %logger{2} will output "b.c". + + + + + m + Equivalent to message + + + M + Equivalent to method + + + message + + + Used to output the application supplied message associated with + the logging event. + + + + + mdc + + + The MDC (old name for the ThreadContext.Properties) is now part of the + combined event properties. This pattern is supported for compatibility + but is equivalent to property. + + + + + method + + + Used to output the method name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + n + Equivalent to newline + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + ndc + + + Used to output the NDC (nested diagnostic context) associated + with the thread that generated the logging event. + + + + + p + Equivalent to level + + + P + Equivalent to property + + + properties + Equivalent to property + + + property + + + Used to output the an event specific property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are added to events by loggers or appenders. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the event properties + + The event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + r + Equivalent to timestamp + + + stacktrace + + + Used to output the stack trace of the logging event + The stack trace level specifier may be enclosed + between braces. For example, %stacktrace{level}. + If no stack trace level specifier is given then 1 is assumed + + + Output uses the format: + type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 + + + This pattern is not available for Compact Framework assemblies. + + + + + stacktracedetail + + + Used to output the stack trace of the logging event + The stack trace level specifier may be enclosed + between braces. For example, %stacktracedetail{level}. + If no stack trace level specifier is given then 1 is assumed + + + Output uses the format: + type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) + + + This pattern is not available for Compact Framework assemblies. + + + + + t + Equivalent to thread + + + timestamp + + + Used to output the number of milliseconds elapsed since the start + of the application until the creation of the logging event. + + + + + thread + + + Used to output the name of the thread that generated the + logging event. Uses the thread number if no name is available. + + + + + type + + + Used to output the fully qualified type name of the caller + issuing the logging request. This conversion specifier + can be optionally followed by precision specifier, that + is a decimal constant in brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the class name will be + printed. By default the class name is output in fully qualified form. + + + For example, for the class name "log4net.Layout.PatternLayout", the + pattern %type{1} will output "PatternLayout". + + + WARNING Generating the caller class information is + slow. Thus, its use should be avoided unless execution speed is + not an issue. + + + See the note below on the availability of caller location information. + + + + + u + Equivalent to identity + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + WARNING Generating caller WindowsIdentity information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + w + Equivalent to username + + + x + Equivalent to ndc + + + X + Equivalent to mdc + + + % + + + The sequence %% outputs a single percent sign. + + + + + + The single letter patterns are deprecated in favor of the + longer more descriptive pattern names. + + + By default the relevant information is output as is. However, + with the aid of format modifiers it is possible to change the + minimum field width, the maximum field width and justification. + + + The optional format modifier is placed between the percent sign + and the conversion pattern name. + + + The first optional format modifier is the left justification + flag which is just the minus (-) character. Then comes the + optional minimum field width modifier. This is a decimal + constant that represents the minimum number of characters to + output. If the data item requires fewer characters, it is padded on + either the left or the right until the minimum width is + reached. The default is to pad on the left (right justify) but you + can specify right padding with the left justification flag. The + padding character is space. If the data item is larger than the + minimum field width, the field is expanded to accommodate the + data. The value is never truncated. + + + This behavior can be changed using the maximum field + width modifier which is designated by a period followed by a + decimal constant. If the data item is longer than the maximum + field, then the extra characters are removed from the + beginning of the data item and not from the end. For + example, it the maximum field width is eight and the data item is + ten characters long, then the first two characters of the data item + are dropped. This behavior deviates from the printf function in C + where truncation is done from the end. + + + Below are various format modifier examples for the logger + conversion specifier. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none + + Left pad with spaces if the logger name is less than 20 + characters long. + +
%-20loggertrue20none + + Right pad with spaces if the logger + name is less than 20 characters long. + +
%.30loggerNAnone30 + + Truncate from the beginning if the logger + name is longer than 30 characters. + +
%20.30loggerfalse2030 + + Left pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
%-20.30loggertrue2030 + + Right pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
+
+ + Note about caller location information.
+ The following patterns %type %file %line %method %location %class %C %F %L %l %M + all generate caller location information. + Location information uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. +
+ + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + + Additional pattern converters may be registered with a specific + instance using the method. + +
+ + This is a more detailed pattern. + %timestamp [%thread] %level %logger %ndc - %message%newline + + + A similar pattern except that the relative time is + right padded if less than 6 digits, thread name is right padded if + less than 15 characters and truncated if longer and the logger + name is left padded if shorter than 30 characters and truncated if + longer. + %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino +
+ + + Extend this abstract class to create your own log layout format. + + + + This is the base implementation of the + interface. Most layout objects should extend this class. + + + + + + Subclasses must implement the + method. + + + Subclasses should set the in their default + constructor. + + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by layout objects + + + + An object is used to format a + as text. The method is called by an + appender to transform the into a string. + + + The layout can also supply and + text that is appender before any events and after all the events respectively. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text and output to a writer. + + + If the caller does not have a and prefers the + event to be formatted as a then the following + code can be used to format the event into a . + + + StringWriter writer = new StringWriter(); + Layout.Format(writer, loggingEvent); + string formattedEvent = writer.ToString(); + + + + + + The content type output by this layout. + + The content type + + + The content type output by this layout. + + + This is a MIME type e.g. "text/plain". + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handle exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + + + + The header text + + + + See for more information. + + + + + + The footer text + + + + See for more information. + + + + + + Flag indicating if this layout handles exceptions + + + + false if this layout handles exceptions + + + + + + Empty default constructor + + + + Empty default constructor + + + + + + Activate component options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This method must be implemented by the subclass. + + + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text. + + + + + + Convenience method for easily formatting the logging event into a string variable. + + + + Creates a new StringWriter instance to store the formatted logging event. + + + + + The content type output by this layout. + + The content type is "text/plain" + + + The content type output by this layout. + + + This base class uses the value "text/plain". + To change this value a subclass must override this + property. + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handles exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + Set this value to override a this default setting. The default + value is true, this layout does not handle the exception. + + + + + + Default pattern string for log output. + + + + Default pattern string for log output. + Currently set to the string "%message%newline" + which just prints the application supplied message. + + + + + + A detailed conversion pattern + + + + A conversion pattern which includes Time, Thread, Logger, and Nested Context. + Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. + + + + + + Internal map of converter identifiers to converter types. + + + + This static map is overridden by the m_converterRegistry instance map + + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternLayout only + + + + + Initialize the global registry + + + + Defines the builtin global rules. + + + + + + Constructs a PatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + As per the contract the + method must be called after the properties on this object have been + configured. + + + + + + Constructs a PatternLayout using the supplied conversion pattern + + the pattern to use + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + When using this constructor the method + need not be called. This may not be the case when using a subclass. + + + + + + Create the pattern parser instance + + the pattern to parse + The that will format the event + + + Creates the used to parse the conversion string. Sets the + global and instance rules on the . + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string as specified by the conversion pattern. + + the event being logged + The TextWriter to write the formatted event to + + + Parse the using the patter format + specified in the property. + + + + + + Add a converter to this PatternLayout + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternLayout + + the name of the conversion pattern for this converter + the type of the converter + + + Add a named pattern converter to this instance. This + converter will be used in the formatting of the event. + This method must be called before . + + + The specified must extend the + type. + + + + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + The header PatternString + + + + + The footer PatternString + + + + + Constructs a DynamicPatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + + + + Constructs a DynamicPatternLayout using the supplied conversion pattern + + the pattern to use + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + The pattern will be formatted on each get operation. + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + The pattern will be formatted on each get operation. + + + + + A Layout that renders only the Exception text from the logging event + + + + A Layout that renders only the Exception text from the logging event. + + + This Layout should only be used with appenders that utilize multiple + layouts (e.g. ). + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Constructs a ExceptionLayout + + + + + + Activate component options + + + + Part of the component activation + framework. + + + This method does nothing as options become effective immediately. + + + + + + Gets the exception text from the logging event + + The TextWriter to write the formatted event to + the event being logged + + + Write the exception string to the . + The exception string is retrieved from . + + + + + + Interface for raw layout objects + + + + Interface used to format a + to an object. + + + This interface should not be confused with the + interface. This interface is used in + only certain specialized situations where a raw object is + required rather than a formatted string. The + is not generally useful than this interface. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The event to format + returns the formatted event + + + Implement this method to create your own layout format. + + + + + + Adapts any to a + + + + Where an is required this adapter + allows a to be specified. + + + Nicko Cadell + Gert Driesen + + + + The layout to adapt + + + + + Construct a new adapter + + the layout to adapt + + + Create the adapter for the specified . + + + + + + Format the logging event as an object. + + The event to format + returns the formatted event + + + Format the logging event as an object. + + + Uses the object supplied to + the constructor to perform the formatting. + + + + + + Type converter for the interface + + + + Used to convert objects to the interface. + Supports converting from the interface to + the interface using the . + + + Nicko Cadell + Gert Driesen + + + + Interface supported by type converters + + + + This interface supports conversion from arbitrary types + to a single target type. See . + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Test if the can be converted to the + type supported by this converter. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Converts the to the type supported + by this converter. + + + + + + Can the sourceType be converted to an + + the source to be to be converted + true if the source type can be converted to + + + Test if the can be converted to a + . Only is supported + as the . + + + + + + Convert the value to a object + + the value to convert + the object + + + Convert the object to a + object. If the object + is a then the + is used to adapt between the two interfaces, otherwise an + exception is thrown. + + + + + + Extract the value of a property from the + + + + Extract the value of a property from the + + + Nicko Cadell + + + + Constructs a RawPropertyLayout + + + + + Lookup the property for + + The event to format + returns property value + + + Looks up and returns the object value of the property + named . If there is no property defined + with than name then null will be returned. + + + + + + The name of the value to lookup in the LoggingEvent Properties collection. + + + Value to lookup in the LoggingEvent Properties collection + + + + String name of the property to lookup in the . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in local time. To format the time stamp + in universal time use . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawUtcTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in universal time. To format the time stamp + in local time use . + + + + + + A very simple layout + + + + SimpleLayout consists of the level of the log statement, + followed by " - " and then the log message itself. For example, + + DEBUG - Hello world + + + + Nicko Cadell + Gert Driesen + + + + Constructs a SimpleLayout + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a simple formatted output. + + the event being logged + The TextWriter to write the formatted event to + + + Formats the event as the level of the even, + followed by " - " and then the log message itself. The + output is terminated by a newline. + + + + + + Layout that formats the log events as XML elements. + + + + The output of the consists of a series of + log4net:event elements. It does not output a complete well-formed XML + file. The output is designed to be included as an external entity + in a separate file to form a correct XML file. + + + For example, if abc is the name of the file where + the output goes, then a well-formed XML file would + be: + + + <?xml version="1.0" ?> + + <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> + + <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> + &data; + </log4net:events> + + + This approach enforces the independence of the + and the appender where it is embedded. + + + The version attribute helps components to correctly + interpret output generated by . The value of + this attribute should be "1.2" for release 1.2 and later. + + + Alternatively the Header and Footer properties can be + configured to output the correct XML header, open tag and close tag. + When setting the Header and Footer properties it is essential + that the underlying data store not be appendable otherwise the data + will become invalid XML. + + + Nicko Cadell + Gert Driesen + + + + Layout that formats the log events as XML elements. + + + + This is an abstract class that must be subclassed by an implementation + to conform to a specific schema. + + + Deriving classes must implement the method. + + + Nicko Cadell + Gert Driesen + + + + Protected constructor to support subclasses + + + + Initializes a new instance of the class + with no location info. + + + + + + Protected constructor to support subclasses + + + + The parameter determines whether + location information will be output by the layout. If + is set to true, then the + file name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string. + + The event being logged. + The TextWriter to write the formatted event to + + + Format the and write it to the . + + + This method creates an that writes to the + . The is passed + to the method. Subclasses should override the + method rather than this method. + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Subclasses should override this method to format + the as XML. + + + + + + Flag to indicate if location information should be included in + the XML events. + + + + + The string to replace invalid chars with + + + + + Gets a value indicating whether to include location information in + the XML events. + + + true if location information should be included in the XML + events; otherwise, false. + + + + If is set to true, then the file + name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The string to replace characters that can not be expressed in XML with. + + + Not all characters may be expressed in XML. This property contains the + string to replace those that can not with. This defaults to a ?. Set it + to the empty string to simply remove offending characters. For more + details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets + Character replacement will occur in the log message, the property names + and the property values. + + + + + + + Gets the content type output by this layout. + + + As this is the XML layout, the value is always "text/xml". + + + + As this is the XML layout, the value is always "text/xml". + + + + + + Constructs an XmlLayout + + + + + Constructs an XmlLayout. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SmtpAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Builds a cache of the element names + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Override the base class method + to write the to the . + + + + + + The prefix to use for all generated element names + + + + + The prefix to use for all element names + + + + The default prefix is log4net. Set this property + to change the prefix. If the prefix is set to an empty string + then no prefix will be written. + + + + + + Set whether or not to base64 encode the message. + + + + By default the log message will be written as text to the xml + output. This can cause problems when the message contains binary + data. By setting this to true the contents of the message will be + base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the log message. + + + + + + Set whether or not to base64 encode the property values. + + + + By default the properties will be written as text to the xml + output. This can cause problems when one or more properties contain + binary data. By setting this to true the values of the properties + will be base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the property values. + + + + + + Layout that formats the log events as XML elements compatible with the log4j schema + + + + Formats the log events according to the http://logging.apache.org/log4j schema. + + + Nicko Cadell + + + + The 1st of January 1970 in UTC + + + + + Constructs an XMLLayoutSchemaLog4j + + + + + Constructs an XMLLayoutSchemaLog4j. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Actually do the writing of the xml + + the writer to use + the event to write + + + Generate XML that is compatible with the log4j schema. + + + + + + The version of the log4j schema to use. + + + + Only version 1.2 of the log4j schema is supported. + + + + + + The default object Renderer. + + + + The default renderer supports rendering objects and collections to strings. + + + See the method for details of the output. + + + Nicko Cadell + Gert Driesen + + + + Implement this interface in order to render objects as strings + + + + Certain types require special case conversion to + string form. This conversion is done by an object renderer. + Object renderers implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a + string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + + + + Default constructor + + + + Default constructor + + + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + The default renderer supports rendering objects to strings as follows: + + + + Value + Rendered String + + + null + + "(null)" + + + + + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + , & + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: {a, b, c}. + + + All collection classes that implement its subclasses, + or generic equivalents all implement the interface. + + + + + + + + Rendered as the key, an equals sign ('='), and the value (using the appropriate + renderer). + + + For example: key=value. + + + + + other + + Object.ToString() + + + + + + + + Render the array argument into a string + + The map used to lookup renderers + the array to render + The writer to render to + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + + Render the enumerator argument into a string + + The map used to lookup renderers + the enumerator to render + The writer to render to + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + {a, b, c}. + + + + + + Render the DictionaryEntry argument into a string + + The map used to lookup renderers + the DictionaryEntry to render + The writer to render to + + + Render the key, an equals sign ('='), and the value (using the appropriate + renderer). For example: key=value. + + + + + + Map class objects to an . + + + + Maintains a mapping between types that require special + rendering and the that + is used to render them. + + + The method is used to render an + object using the appropriate renderers defined in this map. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Default constructor. + + + + + + Render using the appropriate renderer. + + the object to render to a string + the object rendered as a string + + + This is a convenience method used to render an object to a string. + The alternative method + should be used when streaming output to a . + + + + + + Render using the appropriate renderer. + + the object to render to a string + The writer to render to + + + Find the appropriate renderer for the type of the + parameter. This is accomplished by calling the + method. Once a renderer is found, it is + applied on the object and the result is returned + as a . + + + + + + Gets the renderer for the specified object type + + the object to lookup the renderer for + the renderer for + + + Gets the renderer for the specified object type. + + + Syntactic sugar method that calls + with the type of the object parameter. + + + + + + Gets the renderer for the specified type + + the type to lookup the renderer for + the renderer for the specified type + + + Returns the renderer for the specified type. + If no specific renderer has been defined the + will be returned. + + + + + + Internal function to recursively search interfaces + + the type to lookup the renderer for + the renderer for the specified type + + + + Clear the map of renderers + + + + Clear the custom renderers defined by using + . The + cannot be removed. + + + + + + Register an for . + + the type that will be rendered by + the renderer for + + + Register an object renderer for a specific source type. + This renderer will be returned from a call to + specifying the same as an argument. + + + + + + Get the default renderer instance + + the default renderer + + + Get the default renderer + + + + + + Interface implemented by logger repository plugins. + + + + Plugins define additional behavior that can be associated + with a . + The held by the + property is used to store the plugins for a repository. + + + The log4net.Config.PluginAttribute can be used to + attach plugins to repositories created using configuration + attributes. + + + Nicko Cadell + Gert Driesen + + + + Attaches the plugin to the specified . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + Gets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Creates a read-only wrapper for a PluginCollection instance. + + list to create a readonly wrapper arround + + A PluginCollection wrapper that is read-only. + + + + + Initializes a new instance of the PluginCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the PluginCollection class + that has the specified initial capacity. + + + The number of elements that the new PluginCollection is initially capable of storing. + + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified PluginCollection. + + The PluginCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Allow subclasses to avoid our default constructors + + + + + + + Copies the entire PluginCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire PluginCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Adds a to the end of the PluginCollection. + + The to be added to the end of the PluginCollection. + The index at which the value has been added. + + + + Removes all elements from the PluginCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the PluginCollection. + + The to check for. + true if is found in the PluginCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the PluginCollection. + + The to locate in the PluginCollection. + + The zero-based index of the first occurrence of + in the entire PluginCollection, if found; otherwise, -1. + + + + + Inserts an element into the PluginCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the PluginCollection. + + The to remove from the PluginCollection. + + The specified was not found in the PluginCollection. + + + + + Removes the element at the specified index of the PluginCollection. + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or greater than . + + + + + Returns an enumerator that can iterate through the PluginCollection. + + An for the entire PluginCollection. + + + + Adds the elements of another PluginCollection to the current PluginCollection. + + The PluginCollection whose elements should be added to the end of the current PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a array to the current PluginCollection. + + The array whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a collection to the current PluginCollection. + + The collection whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets the number of elements actually contained in the PluginCollection. + + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + + The at the specified index. + + The zero-based index of the element to get or set. + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false. + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false. + + + + Gets or sets the number of elements the PluginCollection can contain. + + + The number of elements the PluginCollection can contain. + + + + + Supports type-safe iteration over a . + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + + + + Map of repository plugins. + + + + This class is a name keyed map of the plugins that are + attached to a repository. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The repository that the plugins should be attached to. + + + Initialize a new instance of the class with a + repository that the plugins should be attached to. + + + + + + Adds a to the map. + + The to add to the map. + + + The will be attached to the repository when added. + + + If there already exists a plugin with the same name + attached to the repository then the old plugin will + be and replaced with + the new plugin. + + + + + + Removes a from the map. + + The to remove from the map. + + + Remove a specific plugin from this map. + + + + + + Gets a by name. + + The name of the to lookup. + + The from the map with the name specified, or + null if no plugin is found. + + + + Lookup a plugin by name. If the plugin is not found null + will be returned. + + + + + + Gets all possible plugins as a list of objects. + + All possible plugins as a list of objects. + + + Get a collection of all the plugins defined in this map. + + + + + + Base implementation of + + + + Default abstract implementation of the + interface. This base class can be used by implementors + of the interface. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + the name of the plugin + + Initializes a new Plugin with the specified name. + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + The name of this plugin. + + + + + The repository this plugin is attached to. + + + + + Gets or sets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + The name of the plugin must not change one the + plugin has been attached to a repository. + + + + + + The repository for this plugin + + + The that this plugin is attached to. + + + + Gets or sets the that this plugin is + attached to. + + + + + + Plugin that listens for events from the + + + + This plugin publishes an instance of + on a specified . This listens for logging events delivered from + a remote . + + + When an event is received it is relogged within the attached repository + as if it had been raised locally. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + The property must be set. + + + + + + Construct with sink Uri. + + The name to publish the sink under in the remoting infrastructure. + See for more details. + + + Initializes a new instance of the class + with specified name. + + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + When the plugin is shutdown the remote logging + sink is disconnected. + + + + + + The fully qualified type of the RemoteLoggingServerPlugin class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the URI of this sink. + + + The URI of this sink. + + + + This is the name under which the object is marshaled. + + + + + + + Delivers objects to a remote sink. + + + + Internal class used to listen for logging events + and deliver them to the local repository. + + + + + + Constructor + + The repository to log to. + + + Initializes a new instance of the for the + specified . + + + + + + Logs the events to the repository. + + The events to log. + + + The events passed are logged to the + + + + + + Obtains a lifetime service object to control the lifetime + policy for this instance. + + null to indicate that this instance should live forever. + + + Obtains a lifetime service object to control the lifetime + policy for this instance. This object should live forever + therefore this implementation returns null. + + + + + + The underlying that events should + be logged to. + + + + + Default implementation of + + + + This default implementation of the + interface is used to create the default subclass + of the object. + + + Nicko Cadell + Gert Driesen + + + + Interface abstracts creation of instances + + + + This interface is used by the to + create new objects. + + + The method is called + to create a named . + + + Implement this interface to create new subclasses of . + + + Nicko Cadell + Gert Driesen + + + + Create a new instance + + The that will own the . + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Create a new instance + + The that will own the . + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default internal subclass of + + + + This subclass has no additional behavior over the + class but does allow instances + to be created. + + + + + + Implementation of used by + + + + Internal class used to provide implementation of + interface. Applications should use to get + logger instances. + + + This is one of the central classes in the log4net implementation. One of the + distinctive features of log4net are hierarchical loggers and their + evaluation. The organizes the + instances into a rooted tree hierarchy. + + + The class is abstract. Only concrete subclasses of + can be created. The + is used to create instances of this type for the . + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + + + + This constructor created a new instance and + sets its name. + + The name of the . + + + This constructor is protected and designed to be used by + a subclass that is not abstract. + + + Loggers are constructed by + objects. See for the default + logger creator. + + + + + + Add to the list of appenders of this + Logger instance. + + An appender to add to this logger + + + Add to the list of appenders of this + Logger instance. + + + If is already in the list of + appenders, then it won't be added again. + + + + + + Look for the appender named as name + + The name of the appender to lookup + The appender with the name specified, or null. + + + Returns the named appender, or null if the appender is not found. + + + + + + Remove all previously added appenders from this Logger instance. + + + + Remove all previously added appenders from this Logger instance. + + + This is useful when re-reading configuration information. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The appender to remove + The appender removed from the list + + + Remove the appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The name of the appender to remove + The appender removed from the list + + + Remove the named appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the and . + + + This method must not throw any exception to the caller. + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + This method must not throw any exception to the caller. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + This method must not throw any exception to the caller. + + + + + + Deliver the to the attached appenders. + + The event to log. + + + Call the appenders in the hierarchy starting at + this. If no appenders could be found, emit a + warning. + + + This method calls all the appenders inherited from the + hierarchy circumventing any evaluation of whether to log or not + to log the particular log request. + + + + + + Closes all attached appenders implementing the interface. + + + + Used to ensure that the appenders are correctly shutdown. + + + + + + This is the most generic printing method. This generic form is intended to be used by wrappers + + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the . + + + + + + Creates a new logging event and logs the event without further checks. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generates a logging event and delivers it to the attached + appenders. + + + + + + Creates a new logging event and logs the event without further checks. + + The event being logged. + + + Delivers the logging event to the attached appenders. + + + + + + The fully qualified type of the Logger class. + + + + + The name of this logger. + + + + + The assigned level of this logger. + + + + The level variable need not be + assigned a value in which case it is inherited + form the hierarchy. + + + + + + The parent of this logger. + + + + The parent of this logger. + All loggers have at least one ancestor which is the root logger. + + + + + + Loggers need to know what Hierarchy they are in. + + + + Loggers need to know what Hierarchy they are in. + The hierarchy that this logger is a member of is stored + here. + + + + + + Helper implementation of the interface + + + + + Flag indicating if child loggers inherit their parents appenders + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl + + + + + Gets or sets the parent logger in the hierarchy. + + + The parent logger in the hierarchy. + + + + Part of the Composite pattern that makes the hierarchy. + The hierarchy is parent linked rather than child linked. + + + + + + Gets or sets a value indicating if child loggers inherit their parent's appenders. + + + true if child loggers inherit their parent's appenders. + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Gets the effective level for this logger. + + The nearest level in the logger hierarchy. + + + Starting from this logger, searches the logger hierarchy for a + non-null level and returns it. Otherwise, returns the level of the + root logger. + + The Logger class is designed so that this method executes as + quickly as possible. + + + + + Gets or sets the where this + Logger instance is attached to. + + The hierarchy that this logger belongs to. + + + This logger must be attached to a single . + + + + + + Gets or sets the assigned , if any, for this Logger. + + + The of this logger. + + + + The assigned can be null. + + + + + + Get the appenders contained in this logger as an + . + + A collection of the appenders in this logger + + + Get the appenders contained in this logger as an + . If no appenders + can be found, then a is returned. + + + + + + Gets the logger name. + + + The name of the logger. + + + + The name of this logger + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Construct a new Logger + + the name of the logger + + + Initializes a new instance of the class + with the specified name. + + + + + + Delegate used to handle logger creation event notifications. + + The in which the has been created. + The event args that hold the instance that has been created. + + + Delegate used to handle logger creation event notifications. + + + + + + Provides data for the event. + + + + A event is raised every time a + is created. + + + + + + The created + + + + + Constructor + + The that has been created. + + + Initializes a new instance of the event argument + class,with the specified . + + + + + + Gets the that has been created. + + + The that has been created. + + + + The that has been created. + + + + + + Hierarchical organization of loggers + + + + The casual user should not have to deal with this class + directly. + + + This class is specialized in retrieving loggers by name and + also maintaining the logger hierarchy. Implements the + interface. + + + The structure of the logger hierarchy is maintained by the + method. The hierarchy is such that children + link to their parent but parents do not have any references to their + children. Moreover, loggers can be instantiated in any order, in + particular descendant before ancestor. + + + In case a descendant is created before a particular ancestor, + then it creates a provision node for the ancestor and adds itself + to the provision node. Other descendants of the same ancestor add + themselves to the previously created provision node. + + + Nicko Cadell + Gert Driesen + + + + Base implementation of + + + + Default abstract implementation of the interface. + + + Skeleton implementation of the interface. + All types can extend this type. + + + Nicko Cadell + Gert Driesen + + + + Interface implemented by logger repositories. + + + + This interface is implemented by logger repositories. e.g. + . + + + This interface is used by the + to obtain interfaces. + + + Nicko Cadell + Gert Driesen + + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + The name of the logger to lookup + The Logger object with the name specified + + + If the names logger exists it is returned, otherwise + null is returned. + + + + + + Returns all the currently defined loggers as an Array. + + All the defined loggers + + + Returns all the currently defined loggers as an Array. + + + + + + Returns a named logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Returns a named logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + Shutdown the repository + + + Shutting down a repository will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The name of the repository + + + The name of the repository + + + + The name of the repository. + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Collection of internal messages captured during the most + recent configuration process. + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + + These properties can be specified on a repository specific basis. + + + + + + Default Constructor + + + + Initializes the repository with default (empty) properties. + + + + + + Construct the repository using specific properties + + the properties to set for this repository + + + Initializes the repository with specified properties. + + + + + + Test if logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the repository + + All the defined loggers + + + Returns all the currently defined loggers in the repository as an Array. + + + + + + Return a new logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Return a new logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + + Shutdown the repository + + + + Shutdown the repository. Can be overridden in a subclass. + This base class implementation notifies the + listeners and all attached plugins of the shutdown event. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The fully qualified type of the LoggerRepositorySkeleton class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Adds an object renderer for a specific class. + + The type that will be rendered by the renderer supplied. + The object renderer used to render the object. + + + Adds an object renderer for a specific class. + + + + + + Notify the registered listeners that the repository is shutting down + + Empty EventArgs + + + Notify any listeners that this repository is shutting down. + + + + + + Notify the registered listeners that the repository has had its configuration reset + + Empty EventArgs + + + Notify any listeners that this repository's configuration has been reset. + + + + + + Notify the registered listeners that the repository has had its configuration changed + + Empty EventArgs + + + Notify any listeners that this repository's configuration has changed. + + + + + + Raise a configuration changed event on this repository + + EventArgs.Empty + + + Applications that programmatically change the configuration of the repository should + raise this event notification to notify listeners. + + + + + + Flushes all configured Appenders that implement . + + The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed, + or to wait indefinitely. + True if all logging events were flushed successfully, else false. + + + + The name of the repository + + + The string name of the repository + + + + The name of this repository. The name is + used to store and lookup the repositories + stored by the . + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Contains a list of internal messages captures during the + last configuration. + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + These properties can be specified on a repository specific basis + + + + + Basic Configurator interface for repositories + + + + Interface used by basic configurator to configure a + with a default . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified appender + + the appender to use to log all logging events + + + Configure the repository to route all logging events to the + specified appender. + + + + + + Initialize the repository using the specified appenders + + the appenders to use to log all logging events + + + Configure the repository to route all logging events to the + specified appenders. + + + + + + Configure repository using XML + + + + Interface used by Xml configurator to configure a . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified config + + the element containing the root of the config + + + The schema for the XML configuration data is defined by + the implementation. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Construct with properties + + The properties to pass to this repository. + + + Initializes a new instance of the class. + + + + + + Construct with a logger factory + + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Construct with properties and a logger factory + + The properties to pass to this repository. + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Test if a logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the hierarchy. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the hierarchy as an Array + + All the defined loggers + + + Returns all the currently defined loggers in the hierarchy as an Array. + The root logger is not included in the returned + enumeration. + + + + + + Return a new logger instance named as the first parameter using + the default factory. + + + + Return a new logger instance named as the first parameter using + the default factory. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + The name of the logger to retrieve + The logger object with the name specified + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The Shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset all values contained in this hierarchy instance to their default. + + + + Reset all values contained in this hierarchy instance to their + default. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this hierarchy. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are currently configured + + An array containing all the currently configured appenders + + + Returns all the instances that are currently configured. + All the loggers are searched for appenders. The appenders may also be containers + for appenders and these are also searched for additional loggers. + + + The list returned is unordered but does not contain duplicates. + + + + + + Collect the appenders from an . + The appender may also be a container. + + + + + + + Collect the appenders from an container + + + + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + + Initialize the log4net system using the specified appenders + + the appenders to use to log all logging events + + + + Initialize the log4net system using the specified appenders + + the appenders to use to log all logging events + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Test if this hierarchy is disabled for the specified . + + The level to check against. + + true if the repository is disabled for the level argument, false otherwise. + + + + If this hierarchy has not been configured then this method will + always return true. + + + This method will return true if this repository is + disabled for level object passed as parameter and + false otherwise. + + + See also the property. + + + + + + Clear all logger definitions from the internal hashtable + + + + This call will clear all logger definitions from the internal + hashtable. Invoking this method will irrevocably mess up the + logger hierarchy. + + + You should really know what you are doing before + invoking this method. + + + + + + Return a new logger instance named as the first parameter using + . + + The name of the logger to retrieve + The factory that will make the new logger instance + The logger object with the name specified + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated by the + parameter and linked with its existing + ancestors as well as children. + + + + + + Sends a logger creation event to all registered listeners + + The newly created logger + + Raises the logger creation event. + + + + + Updates all the parents of the specified logger + + The logger to update the parents for + + + This method loops through all the potential parents of + . There 3 possible cases: + + + + No entry for the potential parent of exists + + We create a ProvisionNode for this potential + parent and insert in that provision node. + + + + The entry is of type Logger for the potential parent. + + The entry is 's nearest existing parent. We + update 's parent field with this entry. We also break from + he loop because updating our parent's parent is our parent's + responsibility. + + + + The entry is of type ProvisionNode for this potential parent. + + We add to the list of children for this + potential parent. + + + + + + + + Replace a with a in the hierarchy. + + + + + + We update the links for all the children that placed themselves + in the provision node 'pn'. The second argument 'log' is a + reference for the newly created Logger, parent of all the + children in 'pn'. + + + We loop on all the children 'c' in 'pn'. + + + If the child 'c' has been already linked to a child of + 'log' then there is no need to update 'c'. + + + Otherwise, we set log's parent field to c's parent and set + c's parent field to log. + + + + + + Define or redefine a Level using the values in the argument + + the level values + + + Define or redefine a Level using the values in the argument + + + Supports setting levels via the configuration file. + + + + + + Set a Property using the values in the argument + + the property value + + + Set a Property using the values in the argument. + + + Supports setting property values via the configuration file. + + + + + + The fully qualified type of the Hierarchy class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Event used to notify that a logger has been created. + + + + Event raised when a logger is created. + + + + + + Has no appender warning been emitted + + + + Flag to indicate if we have already issued a warning + about not having an appender warning. + + + + + + Get the root of this hierarchy + + + + Get the root of this hierarchy. + + + + + + Gets or sets the default instance. + + The default + + + The logger factory is used to create logger instances. + + + + + + A class to hold the value, name and display name for a level + + + + A class to hold the value, name and display name for a level + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Value of the level + + + + If the value is not set (defaults to -1) the value will be looked + up for the current level with the same name. + + + + + + Name of the level + + + The name of the level + + + + The name of the level. + + + + + + Display name for the level + + + The display name of the level + + + + The display name of the level. + + + + + + Used internally to accelerate hash table searches. + + + + Internal class used to improve performance of + string keyed hashtables. + + + The hashcode of the string is cached for reuse. + The string is stored as an interned value. + When comparing two objects for equality + the reference equality of the interned strings is compared. + + + Nicko Cadell + Gert Driesen + + + + Construct key with string name + + + + Initializes a new instance of the class + with the specified name. + + + Stores the hashcode of the string and interns + the string key to optimize comparisons. + + + The Compact Framework 1.0 the + method does not work. On the Compact Framework + the string keys are not interned nor are they + compared by reference. + + + The name of the logger. + + + + Returns a hash code for the current instance. + + A hash code for the current instance. + + + Returns the cached hashcode. + + + + + + Determines whether two instances + are equal. + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + Compares the references of the interned strings. + + + + + + Provision nodes are used where no logger instance has been specified + + + + instances are used in the + when there is no specified + for that node. + + + A provision node holds a list of child loggers on behalf of + a logger that does not exist. + + + Nicko Cadell + Gert Driesen + + + + Create a new provision node with child node + + A child logger to add to this node. + + + Initializes a new instance of the class + with the specified child logger. + + + + + + The sits at the root of the logger hierarchy tree. + + + + The is a regular except + that it provides several guarantees. + + + First, it cannot be assigned a null + level. Second, since the root logger cannot have a parent, the + property always returns the value of the + level field without walking the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Construct a + + The level to assign to the root logger. + + + Initializes a new instance of the class with + the specified logging level. + + + The root logger names itself as "root". However, the root + logger cannot be retrieved by name. + + + + + + The fully qualified type of the RootLogger class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the assigned level value without walking the logger hierarchy. + + The assigned level value without walking the logger hierarchy. + + + Because the root logger cannot have a parent and its level + must not be null this property just returns the + value of . + + + + + + Gets or sets the assigned for the root logger. + + + The of the root logger. + + + + Setting the level of the root logger to a null reference + may have catastrophic results. We prevent this here. + + + + + + Initializes the log4net environment using an XML DOM. + + + + Configures a using an XML DOM. + + + Nicko Cadell + Gert Driesen + + + + Construct the configurator for a hierarchy + + The hierarchy to build. + + + Initializes a new instance of the class + with the specified . + + + + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + The root element to parse. + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + + + + + Parse appenders by IDREF. + + The appender ref element. + The instance of the appender that the ref refers to. + + + Parse an XML element that represents an appender and return + the appender. + + + + + + Parses an appender element. + + The appender element. + The appender instance or null when parsing failed. + + + Parse an XML element that represents an appender and return + the appender instance. + + + + + + Parses a logger element. + + The logger element. + + + Parse an XML element that represents a logger. + + + + + + Parses the root logger element. + + The root element. + + + Parse an XML element that represents the root logger. + + + + + + Parses the children of a logger element. + + The category element. + The logger instance. + Flag to indicate if the logger is the root logger. + + + Parse the child elements of a <logger> element. + + + + + + Parses an object renderer. + + The renderer element. + + + Parse an XML element that represents a renderer. + + + + + + Parses a level element. + + The level element. + The logger object to set the level on. + Flag to indicate if the logger is the root logger. + + + Parse an XML element that represents a level. + + + + + + Sets a parameter on an object. + + The parameter element. + The object to set the parameter on. + + The parameter name must correspond to a writable property + on the object. The value of the parameter is a string, + therefore this function will attempt to set a string + property first. If unable to set a string property it + will inspect the property and its argument type. It will + attempt to call a static method called Parse on the + type of the property. This method will take a single + string argument and return a value that can be used to + set the property. + + + + + Test if an element has no attributes or child elements + + the element to inspect + true if the element has any attributes or child elements, false otherwise + + + + Test if a is constructible with Activator.CreateInstance. + + the type to inspect + true if the type is creatable using a default constructor, false otherwise + + + + Look for a method on the that matches the supplied + + the type that has the method + the name of the method + the method info found + + + The method must be a public instance method on the . + The method must be named or "Add" followed by . + The method must take a single parameter. + + + + + + Converts a string value to a target type. + + The type of object to convert the string to. + The string value to use as the value of the object. + + + An object of type with value or + null when the conversion could not be performed. + + + + + + Creates an object as specified in XML. + + The XML element that contains the definition of the object. + The object type to use if not explicitly specified. + The type that the returned object must be or must inherit from. + The object or null + + + Parse an XML element and create an object instance based on the configuration + data. + + + The type of the instance may be specified in the XML. If not + specified then the is used + as the type. However the type is specified it must support the + type. + + + + + + key: appenderName, value: appender. + + + + + The Hierarchy being configured. + + + + + The fully qualified type of the XmlHierarchyConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + + + + + + + + + + + + + + + + + Delegate used to handle logger repository shutdown event notifications + + The that is shutting down. + Empty event args + + + Delegate used to handle logger repository shutdown event notifications. + + + + + + Delegate used to handle logger repository configuration reset event notifications + + The that has had its configuration reset. + Empty event args + + + Delegate used to handle logger repository configuration reset event notifications. + + + + + + Delegate used to handle event notifications for logger repository configuration changes. + + The that has had its configuration changed. + Empty event arguments. + + + Delegate used to handle event notifications for logger repository configuration changes. + + + + + + Write the name of the current AppDomain to the output + + + + Write the name of the current AppDomain to the output writer + + + Nicko Cadell + + + + Write the name of the current AppDomain to the output + + the writer to write to + null, state is not set + + + Writes name of the current AppDomain to the output . + + + + + + AppSetting pattern converter + + + + This pattern converter reads appSettings from the application configuration file. + + + If the is specified then that will be used to + lookup a single appSettings value. If no is specified + then all appSettings will be dumped as a list of key value pairs. + + + A typical use is to specify a base directory for log files, e.g. + + + + + ... + + + ]]> + + + + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Write the current date to the output + + + + Date pattern converter, uses a to format + the current date and time to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The date and time is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current date to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date and time passed is in the local time zone. + + + + + + The fully qualified type of the DatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write an folder path to the output + + + + Write an special path environment folder path to the output writer. + The value of the determines + the name of the variable to output. + should be a value in the enumeration. + + + Ron Grabowski + + + + Write an special path environment folder path to the output + + the writer to write to + null, state is not set + + + Writes the special path environment folder path to the output . + The name of the special path environment folder path to output must be set + using the + property. + + + + + + The fully qualified type of the EnvironmentFolderPathPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write an environment variable to the output + + + + Write an environment variable to the output writer. + The value of the determines + the name of the variable to output. + + + Nicko Cadell + + + + Write an environment variable to the output + + the writer to write to + null, state is not set + + + Writes the environment variable to the output . + The name of the environment variable to output must be set + using the + property. + + + + + + The fully qualified type of the EnvironmentPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the current thread identity to the output + + + + Write the current thread identity to the output writer + + + Nicko Cadell + + + + Write the current thread identity to the output + + the writer to write to + null, state is not set + + + Writes the current thread identity to the output . + + + + + + The fully qualified type of the IdentityPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Pattern converter for literal string instances in the pattern + + + + Writes the literal string value specified in the + property to + the output. + + + Nicko Cadell + + + + Set the next converter in the chain + + The next pattern converter in the chain + The next pattern converter + + + Special case the building of the pattern converter chain + for instances. Two adjacent + literals in the pattern can be represented by a single combined + pattern converter. This implementation detects when a + is added to the chain + after this converter and combines its value with this converter's + literal value. + + + + + + Write the literal to the output + + the writer to write to + null, not set + + + Override the formatting behavior to ignore the FormattingInfo + because we have a literal instead. + + + Writes the value of + to the output . + + + + + + Convert this pattern into the rendered message + + that will receive the formatted result. + null, not set + + + This method is not used. + + + + + + Writes a newline to the output + + + + Writes the system dependent line terminator to the output. + This behavior can be overridden by setting the : + + + + Option Value + Output + + + DOS + DOS or Windows line terminator "\r\n" + + + UNIX + UNIX line terminator "\n" + + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current process ID to the output + + + + Write the current process ID to the output writer + + + Nicko Cadell + + + + Write the current process ID to the output + + the writer to write to + null, state is not set + + + Write the current process ID to the output . + + + + + + The fully qualified type of the ProcessIdPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Property pattern converter + + + + This pattern converter reads the thread and global properties. + The thread properties take priority over global properties. + See for details of the + thread properties. See for + details of the global properties. + + + If the is specified then that will be used to + lookup a single property. If no is specified + then all properties will be dumped as a list of key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + A Pattern converter that generates a string of random characters + + + + The converter generates a string of random characters. By default + the string is length 4. This can be changed by setting the + to the string value of the length required. + + + The random characters in the string are limited to uppercase letters + and numbers only. + + + The random number generator used by this class is not cryptographically secure. + + + Nicko Cadell + + + + Shared random number generator + + + + + Length of random string to generate. Default length 4. + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write a randoim string to the output + + the writer to write to + null, state is not set + + + Write a randoim string to the output . + + + + + + The fully qualified type of the RandomStringPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the current threads username to the output + + + + Write the current threads username to the output writer + + + Nicko Cadell + + + + Write the current threads username to the output + + the writer to write to + null, state is not set + + + Write the current threads username to the output . + + + + + + The fully qualified type of the UserNamePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the UTC date time to the output + + + + Date pattern converter, uses a to format + the current date and time in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the current date and time to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date is in Universal time when it is rendered. + + + + + + + The fully qualified type of the UtcDatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Type converter for Boolean. + + + + Supports conversion from string to bool type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Exception base type for conversion errors. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class + with the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + An instance of the . + + + Creates a new instance of the class. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + A nested exception to include. + An instance of the . + + + Creates a new instance of the class. + + + + + + Register of type converters for specific types. + + + + Maintains a registry of type converters used to convert between + types. + + + Use the and + methods to register new converters. + The and methods + lookup appropriate converters to use. + + + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + Initializes a new instance of the class. + + + + + Static constructor. + + + + This constructor defines the intrinsic type converters. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type converter to use to convert to the destination type. + + + Adds a converter instance for a specific type. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type of the type converter to use to convert to the destination type. + + + Adds a converter for a specific type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted from. + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Lookups the type converter to use as specified by the attributes on the + destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + + Creates the instance of the type converter. + + The type of the type converter. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + The type specified for the type converter must implement + the or interfaces + and must have a public default (no argument) constructor. + + + + + + The fully qualified type of the ConverterRegistry class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Mapping from to type converter. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an encoding + the encoding + + + Uses the method to + convert the argument to an . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Interface supported by type converters + + + + This interface supports conversion from a single type to arbitrary types. + See . + + + Nicko Cadell + + + + Returns whether this converter can convert the object to the specified type + + A Type that represents the type you want to convert to + true if the conversion is possible + + + Test if the type supported by this converter can be converted to the + . + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Converts the (which must be of the type supported + by this converter) to the specified.. + + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an IPAddress + the IPAddress + + + Uses the method to convert the + argument to an . + If that fails then the string is resolved as a DNS hostname. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternLayout + the PatternLayout + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Convert between string and + + + + Supports conversion from string to type, + and from a type to a string. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the target type be converted to the type supported by this object + + A that represents the type you want to convert to + true if the conversion is possible + + + Returns true if the is + assignable from a type. + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + . To check for this condition use the + method. + + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternString + the PatternString + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a Type + the Type + + + Uses the method to convert the + argument to a . + Additional effort is made to locate partially specified types + by searching the loaded assemblies. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Attribute used to associate a type converter + + + + Class and Interface level attribute that specifies a type converter + to use with the associated type. + + + To associate a type converter with a target type apply a + TypeConverterAttribute to the target type. Specify the + type of the type converter on the attribute. + + + Nicko Cadell + Gert Driesen + + + + The string type name of the type converter + + + + + Default constructor + + + + Default constructor + + + + + + Create a new type converter attribute for the specified type name + + The string type name of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + Create a new type converter attribute for the specified type + + The type of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + The string type name of the type converter + + + The string type name of the type converter + + + + The type specified must implement the + or the interfaces. + + + + + + A straightforward implementation of the interface. + + + + This is the default implementation of the + interface. Implementors of the interface + should aggregate an instance of this type. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Append on on all attached appenders. + + The event being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Append on on all attached appenders. + + The array of events being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Calls the DoAppende method on the with + the objects supplied. + + The appender + The events + + + If the supports the + interface then the will be passed + through using that interface. Otherwise the + objects in the array will be passed one at a time. + + + + + + Attaches an appender. + + The appender to add. + + + If the appender is already in the list it won't be added again. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Lookup an attached appender by name. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + List of appenders + + + + + Array of appenders, used to cache the m_appenderList + + + + + The fully qualified type of the AppenderAttachedImpl class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets all attached appenders. + + + A collection of attached appenders, or null if there + are no attached appenders. + + + + The read only collection of all currently attached appenders. + + + + + + This class aggregates several PropertiesDictionary collections together. + + + + Provides a dictionary style lookup over an ordered list of + collections. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Add a Properties Dictionary to this composite collection + + the properties to add + + + Properties dictionaries added first take precedence over dictionaries added + later. + + + + + + Flatten this composite collection into a single properties dictionary + + the flattened dictionary + + + Reduces the collection of ordered dictionaries to a single dictionary + containing the resultant values for the keys. + + + + + + Gets the value of a property + + + The value for the property with the specified key + + + + Looks up the value for the specified. + The collections are searched + in the order in which they were added to this collection. The value + returned is the value held by the first collection that contains + the specified key. + + + If none of the collections contain the specified key then + null is returned. + + + + + + Base class for Context Properties implementations + + + + This class defines a basic property get set accessor + + + Nicko Cadell + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Wrapper class used to map converter names to converter types + + + + Pattern converter info class used during configuration by custom + PatternString and PatternLayer converters. + + + + + + default constructor + + + + + + + + + + + Gets or sets the name of the conversion pattern + + + + The name of the pattern in the format string + + + + + + Gets or sets the type of the converter + + + + The value specified must extend the + type. + + + + + + + + + + + Subclass of that maintains a count of + the number of bytes written. + + + + This writer counts the number of bytes written. + + + Nicko Cadell + Gert Driesen + + + + that does not leak exceptions + + + + does not throw exceptions when things go wrong. + Instead, it delegates error handling to its . + + + Nicko Cadell + Gert Driesen + + + + Adapter that extends and forwards all + messages to an instance of . + + + + Adapter that extends and forwards all + messages to an instance of . + + + Nicko Cadell + + + + The writer to forward messages to + + + + + Create an instance of that forwards all + messages to a . + + The to forward to + + + Create an instance of that forwards all + messages to a . + + + + + + Closes the writer and releases any system resources associated with the writer + + + + + + + + + Dispose this writer + + flag indicating if we are being disposed + + + Dispose this writer + + + + + + Flushes any buffered output + + + + Clears all buffers for the writer and causes any buffered data to be written + to the underlying device + + + + + + Writes a character to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a character to the wrapped TextWriter + + + + + + Writes a character buffer to the wrapped TextWriter + + the data buffer + the start index + the number of characters to write + + + Writes a character buffer to the wrapped TextWriter + + + + + + Writes a string to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a string to the wrapped TextWriter + + + + + + Gets or sets the underlying . + + + The underlying . + + + + Gets or sets the underlying . + + + + + + The Encoding in which the output is written + + + The + + + + The Encoding in which the output is written + + + + + + Gets an object that controls formatting + + + The format provider + + + + Gets an object that controls formatting + + + + + + Gets or sets the line terminator string used by the TextWriter + + + The line terminator to use + + + + Gets or sets the line terminator string used by the TextWriter + + + + + + Constructor + + the writer to actually write to + the error handler to report error to + + + Create a new QuietTextWriter using a writer and error handler + + + + + + Writes a character to the underlying writer + + the char to write + + + Writes a character to the underlying writer + + + + + + Writes a buffer to the underlying writer + + the buffer to write + the start index to write from + the number of characters to write + + + Writes a buffer to the underlying writer + + + + + + Writes a string to the output. + + The string data to write to the output. + + + Writes a string to the output. + + + + + + Closes the underlying output writer. + + + + Closes the underlying output writer. + + + + + + The error handler instance to pass all errors to + + + + + Flag to indicate if this writer is closed + + + + + Gets or sets the error handler that all errors are passed to. + + + The error handler that all errors are passed to. + + + + Gets or sets the error handler that all errors are passed to. + + + + + + Gets a value indicating whether this writer is closed. + + + true if this writer is closed, otherwise false. + + + + Gets a value indicating whether this writer is closed. + + + + + + Constructor + + The to actually write to. + The to report errors to. + + + Creates a new instance of the class + with the specified and . + + + + + + Writes a character to the underlying writer and counts the number of bytes written. + + the char to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a buffer to the underlying writer and counts the number of bytes written. + + the buffer to write + the start index to write from + the number of characters to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a string to the output and counts the number of bytes written. + + The string data to write to the output. + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Total number of bytes written. + + + + + Gets or sets the total number of bytes written. + + + The total number of bytes written. + + + + Gets or sets the total number of bytes written. + + + + + + A fixed size rolling buffer of logging events. + + + + An array backed fixed size leaky bucket. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The maximum number of logging events in the buffer. + + + Initializes a new instance of the class with + the specified maximum number of buffered logging events. + + + The argument is not a positive integer. + + + + Appends a to the buffer. + + The event to append to the buffer. + The event discarded from the buffer, if the buffer is full, otherwise null. + + + Append an event to the buffer. If the buffer still contains free space then + null is returned. If the buffer is full then an event will be dropped + to make space for the new event, the event dropped is returned. + + + + + + Get and remove the oldest event in the buffer. + + The oldest logging event in the buffer + + + Gets the oldest (first) logging event in the buffer and removes it + from the buffer. + + + + + + Pops all the logging events from the buffer into an array. + + An array of all the logging events in the buffer. + + + Get all the events in the buffer and clear the buffer. + + + + + + Clear the buffer + + + + Clear the buffer of all events. The events in the buffer are lost. + + + + + + Gets the th oldest event currently in the buffer. + + The th oldest event currently in the buffer. + + + If is outside the range 0 to the number of events + currently in the buffer, then null is returned. + + + + + + Gets the maximum size of the buffer. + + The maximum size of the buffer. + + + Gets the maximum size of the buffer + + + + + + Gets the number of logging events in the buffer. + + The number of logging events in the buffer. + + + This number is guaranteed to be in the range 0 to + (inclusive). + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + The singleton instance of the empty collection. + + + + + Gets the singleton instance of the empty collection. + + The singleton instance of the empty collection. + + + Gets the singleton instance of the empty collection. + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Adds an element with the provided key and value to the + . + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + As the collection is empty no new values can be added. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Removes all elements from the . + + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Determines whether the contains an element + with the specified key. + + The key to locate in the . + false + + + As the collection is empty the method always returns false. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Removes the element with the specified key from the . + + The key of the element to remove. + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + The singleton instance of the empty dictionary. + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + Gets a value indicating whether the has a fixed size. + + true + + + As the collection is empty always returns true. + + + + + + Gets a value indicating whether the is read-only. + + true + + + As the collection is empty always returns true. + + + + + + Gets an containing the keys of the . + + An containing the keys of the . + + + As the collection is empty a is returned. + + + + + + Gets an containing the values of the . + + An containing the values of the . + + + As the collection is empty a is returned. + + + + + + Gets or sets the element with the specified key. + + The key of the element to get or set. + null + + + As the collection is empty no values can be looked up or stored. + If the index getter is called then null is returned. + A is thrown if the setter is called. + + + This dictionary is always empty and cannot be modified. + + + + Contain the information obtained when parsing formatting modifiers + in conversion modifiers. + + + + Holds the formatting information extracted from the format string by + the . This is used by the + objects when rendering the output. + + + Nicko Cadell + Gert Driesen + + + + Defaut Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + + + Initializes a new instance of the class + with the specified parameters. + + + + + + Gets or sets the minimum value. + + + The minimum value. + + + + Gets or sets the minimum value. + + + + + + Gets or sets the maximum value. + + + The maximum value. + + + + Gets or sets the maximum value. + + + + + + Gets or sets a flag indicating whether left align is enabled + or not. + + + A flag indicating whether left align is enabled or not. + + + + Gets or sets a flag indicating whether left align is enabled or not. + + + + + + Implementation of Properties collection for the + + + + This class implements a properties collection that is thread safe and supports both + storing properties and capturing a read only copy of the current propertied. + + + This class is optimized to the scenario where the properties are read frequently + and are modified infrequently. + + + Nicko Cadell + + + + The read only copy of the properties. + + + + This variable is declared volatile to prevent the compiler and JIT from + reordering reads and writes of this thread performed on different threads. + + + + + + Lock object used to synchronize updates within this instance + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property from the global context + + the key for the entry to remove + + + Removing an entry from the global context properties is relatively expensive compared + with reading a value. + + + + + + Clear the global context properties + + + + + Get a readonly immutable copy of the properties + + the current global context properties + + + This implementation is fast because the GlobalContextProperties class + stores a readonly copy of the properties. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Reading the value for a key is faster than setting the value. + When the value is written a new read only copy of + the properties is created. + + + + + + The static class ILogExtensions contains a set of widely used + methods that ease the interaction with the ILog interface implementations. + + + + This class contains methods for logging at different levels and checks the + properties for determining if those logging levels are enabled in the current + configuration. + + + Simple example of logging messages + + using log4net.Util; + + ILog log = LogManager.GetLogger("application-log"); + + log.InfoExt("Application Start"); + log.DebugExt("This is a debug message"); + + + + + + The fully qualified type of the Logger class. + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is WARN + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is WARN enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is WARN + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is WARN enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is ERROR + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is ERROR enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is ERROR + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is ERROR enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is FATAL + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is FATAL enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is FATAL + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is FATAL enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Manages a mapping from levels to + + + + Manages an ordered mapping from instances + to subclasses. + + + Nicko Cadell + + + + Default constructor + + + + Initialise a new instance of . + + + + + + Add a to this mapping + + the entry to add + + + If a has previously been added + for the same then that entry will be + overwritten. + + + + + + Lookup the mapping for the specified level + + the level to lookup + the for the level or null if no mapping found + + + Lookup the value for the specified level. Finds the nearest + mapping value for the level that is equal to or less than the + specified. + + + If no mapping could be found then null is returned. + + + + + + Initialize options + + + + Caches the sorted list of in an array + + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + This class stores its properties in a slot on the named + log4net.Util.LogicalThreadContextProperties. + + + For .NET Standard 1.3 this class uses + System.Threading.AsyncLocal rather than . + + + The requires a link time + for the + . + If the calling code does not have this permission then this context will be disabled. + It will not store any property values set on it. + + + Nicko Cadell + + + + Flag used to disable this context if we don't have permission to access the CallContext. + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove the value for the specified from the context. + + + + + + Clear all the context properties + + + + Clear all the context properties + + + + + + Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doings so. + + + + + + Gets the call context get data. + + The peroperties dictionary stored in the call context + + The method has a + security link demand, therfore we must put the method call in a seperate method + that we can wrap in an exception handler. + + + + + Sets the call context data. + + The properties. + + The method has a + security link demand, therfore we must put the method call in a seperate method + that we can wrap in an exception handler. + + + + + The fully qualified type of the LogicalThreadContextProperties class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Get or set the property value for the specified. + + + + + + Delegate type used for LogicalThreadContextStack's callbacks. + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + The name of this within the + . + + + + + The callback used to let the register a + new instance of a . + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this thread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The depth to trim the stack to when this instance is disposed + + + + + The outer LogicalThreadContextStack. + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + The fully qualified type of the ThreadContextStacks class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + + + + + + + + Outputs log statements from within the log4net assembly. + + + + Log4net components cannot make log4net logging calls. However, it is + sometimes useful for the user to learn about what log4net is + doing. + + + All log4net internal debug calls go to the standard output stream + whereas internal error messages are sent to the standard error output + stream. + + + Nicko Cadell + Gert Driesen + + + + Formats Prefix, Source, and Message in the same format as the value + sent to Console.Out and Trace.Write. + + + + + + Initializes a new instance of the class. + + + + + + + + + Static constructor that initializes logging by reading + settings from the application configuration file. + + + + The log4net.Internal.Debug application setting + controls internal debugging. This setting should be set + to true to enable debugging. + + + The log4net.Internal.Quiet application setting + suppresses all internal logging including error messages. + This setting should be set to true to enable message + suppression. + + + + + + Raises the LogReceived event when an internal messages is received. + + + + + + + + + Writes log4net internal debug messages to the + standard output stream. + + + The message to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The Type that generated this message. + The message to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The Type that generated this message. + The message to log. + + + All internal error messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes output to the standard output stream. + + The message to log. + + + Writes to both Console.Out and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Writes output to the standard error stream. + + The message to log. + + + Writes to both Console.Error and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Default debug level + + + + + In quietMode not even errors generate any output. + + + + + The event raised when an internal message has been received. + + + + + The Type that generated the internal message. + + + + + The DateTime stamp of when the internal message was received. + + + + + The UTC DateTime stamp of when the internal message was received. + + + + + A string indicating the severity of the internal message. + + + "log4net: ", + "log4net:ERROR ", + "log4net:WARN " + + + + + The internal log message. + + + + + The Exception related to the message. + + + Optional. Will be null if no Exception was passed. + + + + + Gets or sets a value indicating whether log4net internal logging + is enabled or disabled. + + + true if log4net internal logging is enabled, otherwise + false. + + + + When set to true, internal debug level logging will be + displayed. + + + This value can be set by setting the application setting + log4net.Internal.Debug in the application configuration + file. + + + The default value is false, i.e. debugging is + disabled. + + + + + The following example enables internal debugging using the + application configuration file : + + + + + + + + + + + + + Gets or sets a value indicating whether log4net should generate no output + from internal logging, not even for errors. + + + true if log4net should generate no output at all from internal + logging, otherwise false. + + + + When set to true will cause internal logging at all levels to be + suppressed. This means that no warning or error reports will be logged. + This option overrides the setting and + disables all debug also. + + This value can be set by setting the application setting + log4net.Internal.Quiet in the application configuration file. + + + The default value is false, i.e. internal logging is not + disabled. + + + + The following example disables internal logging using the + application configuration file : + + + + + + + + + + + + + + + + + Test if LogLog.Debug is enabled for output. + + + true if Debug is enabled + + + + Test if LogLog.Debug is enabled for output. + + + + + + Test if LogLog.Warn is enabled for output. + + + true if Warn is enabled + + + + Test if LogLog.Warn is enabled for output. + + + + + + Test if LogLog.Error is enabled for output. + + + true if Error is enabled + + + + Test if LogLog.Error is enabled for output. + + + + + + Subscribes to the LogLog.LogReceived event and stores messages + to the supplied IList instance. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a native error code and message. + + + + Represents a Win32 platform native error. + + + Nicko Cadell + Gert Driesen + + + + Create an instance of the class with the specified + error number and message. + + The number of the native error. + The message of the native error. + + + Create an instance of the class with the specified + error number and message. + + + + + + Create a new instance of the class for the last Windows error. + + + An instance of the class for the last windows error. + + + + The message for the error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Create a new instance of the class. + + the error number for the native error + + An instance of the class for the specified + error number. + + + + The message for the specified error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Retrieves the message corresponding with a Win32 message identifier. + + Message identifier for the requested message. + + The message corresponding with the specified message identifier. + + + + The message will be searched for in system message-table resource(s) + using the native FormatMessage function. + + + + + + Return error information string + + error information string + + + Return error information string + + + + + + Formats a message string. + + Formatting options, and how to interpret the parameter. + Location of the message definition. + Message identifier for the requested message. + Language identifier for the requested message. + If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . + If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. + Pointer to an array of values that are used as insert values in the formatted message. + + + The function requires a message definition as input. The message definition can come from a + buffer passed into the function. It can come from a message table resource in an + already-loaded module. Or the caller can ask the function to search the system's message + table resource(s) for the message definition. The function finds the message definition + in a message table resource based on a message identifier and a language identifier. + The function copies the formatted message text to an output buffer, processing any embedded + insert sequences if requested. + + + To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. + + + + + If the function succeeds, the return value is the number of TCHARs stored in the output + buffer, excluding the terminating null character. + + + If the function fails, the return value is zero. To get extended error information, + call . + + + + + + Gets the number of the native error. + + + The number of the native error. + + + + Gets the number of the native error. + + + + + + Gets the message of the native error. + + + The message of the native error. + + + + + Gets the message of the native error. + + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance. + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current key from the enumerator. + + + Throws an exception because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current value from the enumerator. + + The current value from the enumerator. + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current entry from the enumerator. + + + Throws an because the + never has a current entry. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Test if the enumerator can advance, if so advance + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + Get the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + A SecurityContext used when a SecurityContext is not required + + + + The is a no-op implementation of the + base class. It is used where a + is required but one has not been provided. + + + Nicko Cadell + + + + Singleton instance of + + + + Singleton instance of + + + + + + Private constructor + + + + Private constructor for singleton pattern. + + + + + + Impersonate this SecurityContext + + State supplied by the caller + null + + + No impersonation is done and null is always returned. + + + + + + Implements log4net's default error handling policy which consists + of emitting a message for the first error in an appender and + ignoring all subsequent errors. + + + + The error message is processed using the LogLog sub-system by default. + + + This policy aims at protecting an otherwise working application + from being flooded with error messages when logging fails. + + + Nicko Cadell + Gert Driesen + Ron Grabowski + + + + Default Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + The prefix to use for each message. + + + Initializes a new instance of the class + with the specified prefix. + + + + + + Reset the error handler back to its initial disabled state. + + + + + Log an Error + + The error message. + The exception. + The internal error code. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + Log the very first error + + The error message. + The exception. + The internal error code. + + + Sends the error information to 's Error method. + + + + + + Log an Error + + The error message. + The exception. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + Log an error + + The error message. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + The UTC date the error was recorded. + + + + + Flag to indicate if it is the first error + + + + + The message recorded during the first error. + + + + + The exception recorded during the first error. + + + + + The error code recorded during the first error. + + + + + String to prefix each message with + + + + + The fully qualified type of the OnlyOnceErrorHandler class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Is error logging enabled + + + + Is error logging enabled. Logging is only enabled for the + first error delivered to the . + + + + + + The date the first error that trigged this error handler occurred, or if it has not been triggered. + + + + + The UTC date the first error that trigged this error handler occured, or if it has not been triggered. + + + + + The message from the first error that trigged this error handler. + + + + + The exception from the first error that trigged this error handler. + + + May be . + + + + + The error code from the first error that trigged this error handler. + + + Defaults to + + + + + A convenience class to convert property values to specific types. + + + + Utility functions for converting types and parsing values. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Converts a string to a value. + + String to convert. + The default value. + The value of . + + + If is "true", then true is returned. + If is "false", then false is returned. + Otherwise, is returned. + + + + + + Parses a file size into a number. + + String to parse. + The default value. + The value of . + + + Parses a file size of the form: number[KB|MB|GB] into a + long value. It is scaled with the appropriate multiplier. + + + is returned when + cannot be converted to a value. + + + + + + Converts a string to an object. + + The target type to convert to. + The string to convert to an object. + + The object converted from a string or null when the + conversion failed. + + + + Converts a string to an object. Uses the converter registry to try + to convert the string value into the specified target type. + + + + + + Checks if there is an appropriate type conversion from the source type to the target type. + + The type to convert from. + The type to convert to. + true if there is a conversion from the source type to the target type. + + Checks if there is an appropriate type conversion from the source type to the target type. + + + + + + + Converts an object to the target type. + + The object to convert to the target type. + The type to convert to. + The converted object. + + + Converts an object to the target type. + + + + + + Instantiates an object given a class name. + + The fully qualified class name of the object to instantiate. + The class to which the new object should belong. + The object to return in case of non-fulfillment. + + An instance of the or + if the object could not be instantiated. + + + + Checks that the is a subclass of + . If that test fails or the object could + not be instantiated, then is returned. + + + + + + Performs variable substitution in string from the + values of keys found in . + + The string on which variable substitution is performed. + The dictionary to use to lookup variables. + The result of the substitutions. + + + The variable substitution delimiters are ${ and }. + + + For example, if props contains key=value, then the call + + + + string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); + + + + will set the variable s to "Value of key is value.". + + + If no value could be found for the specified key, then substitution + defaults to an empty string. + + + For example, if system properties contains no value for the key + "nonExistentKey", then the call + + + + string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); + + + + will set s to "Value of nonExistentKey is []". + + + An Exception is thrown if contains a start + delimiter "${" which is not balanced by a stop delimiter "}". + + + + + + Converts the string representation of the name or numeric value of one or + more enumerated constants to an equivalent enumerated object. + + The type to convert to. + The enum string value. + If true, ignore case; otherwise, regard case. + An object of type whose value is represented by . + + + + The fully qualified type of the OptionConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Most of the work of the class + is delegated to the PatternParser class. + + + + The PatternParser processes a pattern string and + returns a chain of objects. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The pattern to parse. + + + Initializes a new instance of the class + with the specified pattern string. + + + + + + Parses the pattern into a chain of pattern converters. + + The head of a chain of pattern converters. + + + Parses the pattern into a chain of pattern converters. + + + + + + Build the unified cache of converters from the static and instance maps + + the list of all the converter names + + + Build the unified cache of converters from the static and instance maps + + + + + + Internal method to parse the specified pattern to find specified matches + + the pattern to parse + the converter names to match in the pattern + + + The matches param must be sorted such that longer strings come before shorter ones. + + + + + + Process a parsed literal + + the literal text + + + + Process a parsed converter pattern + + the name of the converter + the optional option for the converter + the formatting info for the converter + + + + Resets the internal state of the parser and adds the specified pattern converter + to the chain. + + The pattern converter to add. + + + + The first pattern converter in the chain + + + + + the last pattern converter in the chain + + + + + The pattern + + + + + Internal map of converter identifiers to converter types + + + + This map overrides the static s_globalRulesRegistry map. + + + + + + The fully qualified type of the PatternParser class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Get the converter registry used by this parser + + + The converter registry used by this parser + + + + Get the converter registry used by this parser + + + + + + Sort strings by length + + + + that orders strings by string length. + The longest strings are placed first + + + + + + This class implements a patterned string. + + + + This string has embedded patterns that are resolved and expanded + when the string is formatted. + + + This class functions similarly to the + in that it accepts a pattern and renders it to a string. Unlike the + however the PatternString + does not render the properties of a specific but + of the process in general. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + appdomain + + + Used to output the friendly name of the current AppDomain. + + + + + appsetting + + + Used to output the value of a specific appSetting key in the application + configuration file. + + + + + date + + + Used to output the current date and time in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + env + + + Used to output the a specific environment variable. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %env{COMPUTERNAME} would include the value + of the COMPUTERNAME environment variable. + + + The env pattern is not supported on the .NET Compact Framework. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern name offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + processid + + + Used to output the system process ID for the current process. + + + + + property + + + Used to output a specific context property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are stored in logging contexts. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + random + + + Used to output a random string of characters. The string is made up of + uppercase letters and numbers. By default the string is 4 characters long. + The length of the string can be specified within braces directly following the + pattern specifier, e.g. %random{8} would output an 8 character string. + + + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + % + + + The sequence %% outputs a single percent sign. + + + + + + Additional pattern converters may be registered with a specific + instance using or + . + + + See the for details on the + format modifiers supported by the patterns. + + + Nicko Cadell + + + + Internal map of converter identifiers to converter types. + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternString only + + + + + Initialize the global registry + + + + + Default constructor + + + + Initialize a new instance of + + + + + + Constructs a PatternString + + The pattern to use with this PatternString + + + Initialize a new instance of with the pattern specified. + + + + + + Initialize object options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create the used to parse the pattern + + the pattern to parse + The + + + Returns PatternParser used to parse the conversion string. Subclasses + may override this to return a subclass of PatternParser which recognize + custom conversion pattern name. + + + + + + Produces a formatted string as specified by the conversion pattern. + + The TextWriter to write the formatted event to + + + Format the pattern to the . + + + + + + Format the pattern as a string + + the pattern formatted as a string + + + Format the pattern to a string. + + + + + + Add a converter to this PatternString + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternString + + the name of the conversion pattern for this converter + the type of the converter + + + Add a converter to this PatternString + + + + + + Gets or sets the pattern formatting string + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + String keyed object map. + + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + String keyed object map that is read only. + + + + This collection is readonly and cannot be modified. + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + The Hashtable used to store the properties data + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Copy Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Deserialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Gets the key names. + + An array of all the keys. + + + Gets the key names. + + + + + + Test if the dictionary contains a specified key + + the key to look for + true if the dictionary contains the specified key + + + Test if the dictionary contains a specified key + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + Serializes this object into the provided. + + + + + + See + + + + + See + + + + + + See + + + + + + + Remove all properties from the properties collection + + + + + See + + + + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + The hashtable used to store the properties + + + The internal collection used to store the properties + + + + The hashtable used to store the properties + + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + The number of properties in this collection + + + + + See + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Because this class is sealed the serialization constructor is private. + + + + + + Remove the entry with the specified key from this dictionary + + the key for the entry to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + an enumerator + + + Returns a over the contest of this collection. + + + + + + See + + the key to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + the key to lookup in the collection + true if the collection contains the specified key + + + Test if this collection contains a specified key. + + + + + + Remove all properties from the properties collection + + + + Remove all properties from the properties collection + + + + + + See + + the key + the value to store for the key + + + Store a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + + + See + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + See + + + false + + + + This collection is modifiable. This property always + returns false. + + + + + + See + + + The value for the key specified. + + + + Get or set a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + A class to hold the key and data for a property set in the config file + + + + A class to hold the key and data for a property set in the config file + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Property Key + + + Property Key + + + + Property Key. + + + + + + Property Value + + + Property Value + + + + Property Value. + + + + + + A that ignores the message + + + + This writer is used in special cases where it is necessary + to protect a writer from being closed by a client. + + + Nicko Cadell + + + + Constructor + + the writer to actually write to + + + Create a new ProtectCloseTextWriter using a writer + + + + + + Attach this instance to a different underlying + + the writer to attach to + + + Attach this instance to a different underlying + + + + + + Does not close the underlying output writer. + + + + Does not close the underlying output writer. + This method does nothing. + + + + + + Defines a lock that supports single writers and multiple readers + + + + ReaderWriterLock is used to synchronize access to a resource. + At any given time, it allows either concurrent read access for + multiple threads, or write access for a single thread. In a + situation where a resource is changed infrequently, a + ReaderWriterLock provides better throughput than a simple + one-at-a-time lock, such as . + + + If a platform does not support a System.Threading.ReaderWriterLock + implementation then all readers and writers are serialized. Therefore + the caller must not rely on multiple simultaneous readers. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Acquires a reader lock + + + + blocks if a different thread has the writer + lock, or if at least one thread is waiting for the writer lock. + + + + + + Decrements the lock count + + + + decrements the lock count. When the count + reaches zero, the lock is released. + + + + + + Acquires the writer lock + + + + This method blocks if another thread has a reader lock or writer lock. + + + + + + Decrements the lock count on the writer lock + + + + ReleaseWriterLock decrements the writer lock count. + When the count reaches zero, the writer lock is released. + + + + + + A that can be and reused + + + + A that can be and reused. + This uses a single buffer for string operations. + + + Nicko Cadell + + + + Create an instance of + + the format provider to use + + + Create an instance of + + + + + + Override Dispose to prevent closing of writer + + flag + + + Override Dispose to prevent closing of writer + + + + + + Reset this string writer so that it can be reused. + + the maximum buffer capacity before it is trimmed + the default size to make the buffer + + + Reset this string writer so that it can be reused. + The internal buffers are cleared and reset. + + + + + + Utility class for system specific information. + + + + Utility class of static methods for system specific information. + + + Nicko Cadell + Gert Driesen + Alexey Solofnenko + + + + Private constructor to prevent instances. + + + + Only static methods are exposed from this type. + + + + + + Initialize default values for private static fields. + + + + Only static methods are exposed from this type. + + + + + + Gets the assembly location path for the specified assembly. + + The assembly to get the location for. + The location of the assembly. + + + This method does not guarantee to return the correct path + to the assembly. If only tries to give an indication as to + where the assembly was loaded from. + + + + + + Gets the fully qualified name of the , including + the name of the assembly from which the was + loaded. + + The to get the fully qualified name for. + The fully qualified name for the . + + + This is equivalent to the Type.AssemblyQualifiedName property, + but this method works on the .NET Compact Framework 1.0 as well as + the full .NET runtime. + + + + + + Gets the short name of the . + + The to get the name for. + The short name of the . + + + The short name of the assembly is the + without the version, culture, or public key. i.e. it is just the + assembly's file name without the extension. + + + Use this rather than Assembly.GetName().Name because that + is not available on the Compact Framework. + + + Because of a FileIOPermission security demand we cannot do + the obvious Assembly.GetName().Name. We are allowed to get + the of the assembly so we + start from there and strip out just the assembly name. + + + + + + Gets the file name portion of the , including the extension. + + The to get the file name for. + The file name of the assembly. + + + Gets the file name portion of the , including the extension. + + + + + + Loads the type specified in the type string. + + A sibling type to use to load the type. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified, it will be loaded from the assembly + containing the specified relative type. If the type is not found in the assembly + then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the + assembly that is directly calling this method. If the type is not found + in the assembly then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + An assembly to load the type from. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the specified + assembly. If the type is not found in the assembly then all the loaded assemblies + will be searched for the type. + + + + + + Generate a new guid + + A new Guid + + + Generate a new guid + + + + + + Create an + + The name of the parameter that caused the exception + The value of the argument that causes this exception + The message that describes the error + the ArgumentOutOfRangeException object + + + Create a new instance of the class + with a specified error message, the parameter name, and the value + of the argument. + + + The Compact Framework does not support the 3 parameter constructor for the + type. This method provides an + implementation that works for all platforms. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Lookup an application setting + + the application settings key to lookup + the value for the key, or null + + + Configuration APIs are not supported under the Compact Framework + + + + + + Convert a path into a fully qualified local file path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + The path specified must be a local file path, a URI is not supported. + + + + + + Creates a new case-insensitive instance of the class with the default initial capacity. + + A new case-insensitive instance of the class with the default initial capacity + + + The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. + + + + + + Tests two strings for equality, the ignoring case. + + + If the platform permits, culture information is ignored completely (ordinal comparison). + The aim of this method is to provide a fast comparison that deals with null and ignores different casing. + It is not supposed to deal with various, culture-specific habits. + Use it to compare against pure ASCII constants, like keywords etc. + + The one string. + The other string. + true if the strings are equal, false otherwise. + + + + Gets an empty array of types. + + + + The Type.EmptyTypes field is not available on + the .NET Compact Framework 1.0. + + + + + + The fully qualified type of the SystemInfo class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Cache the host name for the current machine + + + + + Cache the application friendly name + + + + + Text to output when a null is encountered. + + + + + Text to output when an unsupported feature is requested. + + + + + Start time for the current process. + + + + + Gets the system dependent line terminator. + + + The system dependent line terminator. + + + + Gets the system dependent line terminator. + + + + + + Gets the base directory for this . + + The base directory path for the current . + + + Gets the base directory for this . + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the configuration file for the current . + + The path to the configuration file for the current . + + + The .NET Compact Framework 1.0 does not have a concept of a configuration + file. For this runtime, we use the entry assembly location as the root for + the configuration file name. + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the file that first executed in the current . + + The path to the entry assembly. + + + Gets the path to the file that first executed in the current . + + + + + + Gets the ID of the current thread. + + The ID of the current thread. + + + On the .NET framework, the AppDomain.GetCurrentThreadId method + is used to obtain the thread ID for the current thread. This is the + operating system ID for the thread. + + + On the .NET Compact Framework 1.0 it is not possible to get the + operating system thread ID for the current thread. The native method + GetCurrentThreadId is implemented inline in a header file + and cannot be called. + + + On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this + gives a stable id unrelated to the operating system thread ID which may + change if the runtime is using fibers. + + + + + + Get the host name or machine name for the current machine + + + The hostname or machine name + + + + Get the host name or machine name for the current machine + + + The host name () or + the machine name (Environment.MachineName) for + the current machine, or if neither of these are available + then NOT AVAILABLE is returned. + + + + + + Get this application's friendly name + + + The friendly name of this application as a string + + + + If available the name of the application is retrieved from + the AppDomain using AppDomain.CurrentDomain.FriendlyName. + + + Otherwise the file name of the entry assembly is used. + + + + + + Get the start time for the current process. + + + + This is the time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Get the UTC start time for the current process. + + + + This is the UTC time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Text to output when a null is encountered. + + + + Use this value to indicate a null has been encountered while + outputting a string representation of an item. + + + The default value is (null). This value can be overridden by specifying + a value for the log4net.NullText appSetting in the application's + .config file. + + + + + + Text to output when an unsupported feature is requested. + + + + Use this value when an unsupported feature is requested. + + + The default value is NOT AVAILABLE. This value can be overridden by specifying + a value for the log4net.NotAvailableText appSetting in the application's + .config file. + + + + + + Utility class that represents a format string. + + + + Utility class that represents a format string. + + + Nicko Cadell + + + + Initialise the + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + + + Format the string and arguments + + the formatted string + + + + Replaces the format item in a specified with the text equivalent + of the value of a corresponding instance in a specified array. + A specified parameter supplies culture-specific formatting information. + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + A copy of format in which the format items have been replaced by the + equivalent of the corresponding instances of in args. + + + + This method does not throw exceptions. If an exception thrown while formatting the result the + exception and arguments are returned in the result string. + + + + + + Process an error during StringFormat + + + + + Dump the contents of an array into a string builder + + + + + Dump an object to a string + + + + + The fully qualified type of the SystemStringFormat class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + Each thread will automatically have its instance. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Remove a property + + the key for the entry to remove + + + Remove a property + + + + + + Get the keys stored in the properties. + + + Gets the keys stored in the properties. + + a set of the defined keys + + + + Clear all properties + + + + Clear all properties + + + + + + Get the PropertiesDictionary for this thread. + + create the dictionary if it does not exist, otherwise return null if does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doing so. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this tread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The ThreadContextStack internal stack + + + + + The depth to trim the stack to when this instance is disposed + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + The fully qualified type of the ThreadContextStacks class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + Utility class for transforming strings. + + + + Utility class for transforming strings. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Write a string to an + + the writer to write to + the string to write + The string to replace non XML compliant chars with + + + The test is escaped either using XML escape entities + or using CDATA sections. + + + + + + Replace invalid XML characters in text string + + the XML text input string + the string to use in place of invalid characters + A string that does not contain invalid XML characters. + + + Certain Unicode code points are not allowed in the XML InfoSet, for + details see: http://www.w3.org/TR/REC-xml/#charsets. + + + This method replaces any illegal characters in the input string + with the mask string specified. + + + + + + Count the number of times that the substring occurs in the text + + the text to search + the substring to find + the number of times the substring occurs in the text + + + The substring is assumed to be non repeating within itself. + + + + + + Characters illegal in XML 1.0 + + + + + Impersonate a Windows Account + + + + This impersonates a Windows account. + + + How the impersonation is done depends on the value of . + This allows the context to either impersonate a set of user credentials specified + using username, domain name and password or to revert to the process credentials. + + + + + + Default constructor + + + + Default constructor + + + + + + Initialize the SecurityContext based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The security context will try to Logon the specified user account and + capture a primary token for impersonation. + + + The required , + or properties were not specified. + + + + Impersonate the Windows account specified by the and properties. + + caller provided state + + An instance that will revoke the impersonation of this SecurityContext + + + + Depending on the property either + impersonate a user using credentials supplied or revert + to the process credentials. + + + + + + Create a given the userName, domainName and password. + + the user name + the domain name + the password + the for the account specified + + + Uses the Windows API call LogonUser to get a principal token for the account. This + token is used to initialize the WindowsIdentity. + + + + + + Gets or sets the impersonation mode for this security context + + + The impersonation mode for this security context + + + + Impersonate either a user with user credentials or + revert this thread to the credentials of the process. + The value is one of the + enum. + + + The default value is + + + When the mode is set to + the user's credentials are established using the + , and + values. + + + When the mode is set to + no other properties need to be set. If the calling thread is + impersonating then it will be reverted back to the process credentials. + + + + + + Gets or sets the Windows username for this security context + + + The Windows username for this security context + + + + This property must be set if + is set to (the default setting). + + + + + + Gets or sets the Windows domain name for this security context + + + The Windows domain name for this security context + + + + The default value for is the local machine name + taken from the property. + + + This property must be set if + is set to (the default setting). + + + + + + Sets the password for the Windows account specified by the and properties. + + + The password for the Windows account specified by the and properties. + + + + This property must be set if + is set to (the default setting). + + + + + + The impersonation modes for the + + + + See the property for + details. + + + + + + Impersonate a user using the credentials supplied + + + + + Revert this the thread to the credentials of the process + + + + + Adds to + + + + Helper class to expose the + through the interface. + + + + + + Constructor + + the impersonation context being wrapped + + + Constructor + + + + + + Revert the impersonation + + + + Revert the impersonation + + + + + + The log4net Global Context. + + + + The GlobalContext provides a location for global debugging + information to be stored. + + + The global context has a properties map and these properties can + be included in the output of log messages. The + supports selecting and outputing these properties. + + + By default the log4net:HostName property is set to the name of + the current machine. + + + + + GlobalContext.Properties["hostname"] = Environment.MachineName; + + + + Nicko Cadell + + + + Private Constructor. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + The global context properties instance + + + + + The global properties map. + + + The global properties map. + + + + The global properties map. + + + + + + Provides information about the environment the assembly has + been built for. + + + + Version of the assembly + + + Version of the framework targeted + + + Type of framework targeted + + + Does it target a client profile? + + + + Identifies the version and target for this assembly. + + + + + The log4net Logical Thread Context. + + + + The LogicalThreadContext provides a location for specific debugging + information to be stored. + The LogicalThreadContext properties override any or + properties with the same name. + + + For .NET Standard 1.3 this class uses + System.Threading.AsyncLocal rather than . + + + The Logical Thread Context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Logical Thread Context provides a diagnostic context for the current call context. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Logical Thread Context is managed on a per basis. + + + The requires a link time + for the + . + If the calling code does not have this permission then this context will be disabled. + It will not store any property values set on it. + + + Example of using the thread context properties to store a username. + + LogicalThreadContext.Properties["user"] = userName; + log.Info("This log message has a LogicalThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) + { + log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The LogicalThreadContext properties override any + or properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The logical thread stacks. + + + + + + This class is used by client applications to request logger instances. + + + + This class has static methods that are used by a client to request + a logger instance. The method is + used to retrieve a logger. + + + See the interface for more details. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + Returns the named logger if it exists. + + Returns the named logger if it exists. + + + + If the named logger exists (in the default repository) then it + returns a reference to the logger, otherwise it returns null. + + + The fully qualified logger name to look for. + The logger found, or null if no logger could be found. + + + Get the currently defined loggers. + + Returns all the currently defined loggers in the default repository. + + + The root logger is not included in the returned array. + + All the defined loggers. + + + Get or create a logger. + + Retrieves or creates a named logger. + + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The name of the logger to retrieve. + The logger with the name specified. + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the logger doesn't exist in the specified + repository. + + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the repository for the specified assembly) then it + returns a reference to the logger, otherwise it returns + null. + + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger, or null if the logger doesn't exist in the specified + assembly's repository. + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Get the logger for the fully qualified name of the type specified. + + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The repository to lookup in. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The assembly to use to lookup the repository. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + Shutdown a logger repository. + + Shuts down the default repository. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + default repository. + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The repository to shutdown. + + + + Shuts down the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The assembly to use to lookup the repository. + + + Reset the configuration of a repository + + Resets all values contained in this repository instance to their defaults. + + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The repository to reset. + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The assembly to use to lookup the repository to reset. + + + Get the logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Get a logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Create a domain + + Creates a repository with the specified repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + Create a logger repository. + + Creates a repository with the specified repository type. + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + + + + Creates a repository with the specified name. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name. + + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Creates a repository for the specified assembly and repository type. + + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Gets the list of currently defined repositories. + + + + Get an array of all the objects that have been created. + + + An array of all the known objects. + + + + Flushes logging events buffered in all configured appenders in the default repository. + + The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed. + True if all logging events were flushed successfully, else false. + + + + Looks up the wrapper object for the logger specified. + + The logger to get the wrapper for. + The wrapper for the logger specified. + + + + Looks up the wrapper objects for the loggers specified. + + The loggers to get the wrappers for. + The wrapper objects for the loggers specified. + + + + Create the objects used by + this manager. + + The logger to wrap. + The wrapper for the logger specified. + + + + The wrapper map to use to hold the objects. + + + + + Implementation of Mapped Diagnostic Contexts. + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + The MDC class is similar to the class except that it is + based on a map instead of a stack. It provides mapped + diagnostic contexts. A Mapped Diagnostic Context, or + MDC in short, is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The MDC is managed on a per thread basis. + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Gets the context value identified by the parameter. + + The key to lookup in the MDC. + The string value held for the key, or a null reference if no corresponding value is found. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + If the parameter does not look up to a + previously defined context then null will be returned. + + + + + + Add an entry to the MDC + + The key to store the value under. + The value to store. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Puts a context value (the parameter) as identified + with the parameter into the current thread's + context map. + + + If a value is already defined for the + specified then the value will be replaced. If the + is specified as null then the key value mapping will be removed. + + + + + + Removes the key value mapping for the key specified. + + The key to remove. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove the specified entry from this thread's MDC + + + + + + Clear all entries in the MDC + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove all the entries from this thread's MDC + + + + + + Implementation of Nested Diagnostic Contexts. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + A Nested Diagnostic Context, or NDC in short, is an instrument + to distinguish interleaved log output from different sources. Log + output is typically interleaved when a server handles multiple + clients near-simultaneously. + + + Interleaved log output can still be meaningful if each log entry + from different contexts had a distinctive stamp. This is where NDCs + come into play. + + + Note that NDCs are managed on a per thread basis. The NDC class + is made up of static methods that operate on the context of the + calling thread. + + + How to push a message into the context + + using(NDC.Push("my context message")) + { + ... all log calls will have 'my context message' included ... + + } // at the end of the using block the message is automatically removed + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Clears all the contextual information held on the current thread. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Clears the stack of NDC data held on the current thread. + + + + + + Creates a clone of the stack of context information. + + A clone of the context info for this thread. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The results of this method can be passed to the + method to allow child threads to inherit the context of their + parent thread. + + + + + + Inherits the contextual information from another thread. + + The context stack to inherit. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This thread will use the context information from the stack + supplied. This can be used to initialize child threads with + the same contextual information as their parent threads. These + contexts will NOT be shared. Any further contexts that + are pushed onto the stack will not be visible to the other. + Call to obtain a stack to pass to + this method. + + + + + + Removes the top context from the stack. + + + The message in the context that was removed from the top + of the stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Remove the top context from the stack, and return + it to the caller. If the stack is empty then an + empty string (not null) is returned. + + + + + + Pushes a new context message. + + The new context message. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.NDC.Push("NDC_Message")) + { + log.Warn("This should have an NDC message"); + } + + + + + + Pushes a new context message. + + The new context message string format. + Arguments to be passed into messageFormat. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + var someValue = "ExampleContext" + using(log4net.NDC.PushFormat("NDC_Message {0}", someValue)) + { + log.Warn("This should have an NDC message"); + } + + + + + + Removes the context information for this thread. It is + not required to call this method. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This method is not implemented. + + + + + + Forces the stack depth to be at most . + + The maximum depth of the stack + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Forces the stack depth to be at most . + This may truncate the head of the stack. This only affects the + stack in the current thread. Also it does not prevent it from + growing, it only sets the maximum depth at the time of the + call. This can be used to return to a known context depth. + + + + + + Gets the current context depth. + + The current context depth. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The number of context values pushed onto the context stack. + + + Used to record the current depth of the context. This can then + be restored using the method. + + + + + + + The log4net Thread Context. + + + + The ThreadContext provides a location for thread specific debugging + information to be stored. + The ThreadContext properties override any + properties with the same name. + + + The thread context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Thread Context provides a diagnostic context for the current thread. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Thread Context is managed on a per thread basis. + + + Example of using the thread context properties to store a username. + + ThreadContext.Properties["user"] = userName; + log.Info("This log message has a ThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(ThreadContext.Stacks["NDC"].Push("my context message")) + { + log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + The thread properties map + + + The thread properties map + + + + The ThreadContext properties override any + properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The thread local stacks. + + + + + diff --git a/tracking and telemetry/Client/obj/Debug/Client.Properties.Resources.resources b/tracking and telemetry/Client/obj/Debug/Client.Properties.Resources.resources index e24cc5c..d2df52a 100644 Binary files a/tracking and telemetry/Client/obj/Debug/Client.Properties.Resources.resources and b/tracking and telemetry/Client/obj/Debug/Client.Properties.Resources.resources differ diff --git a/tracking and telemetry/Client/obj/Debug/Client.csproj.FileListAbsolute.txt b/tracking and telemetry/Client/obj/Debug/Client.csproj.FileListAbsolute.txt index 4aeccab..f0ede1e 100644 --- a/tracking and telemetry/Client/obj/Debug/Client.csproj.FileListAbsolute.txt +++ b/tracking and telemetry/Client/obj/Debug/Client.csproj.FileListAbsolute.txt @@ -26,9 +26,6 @@ C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Debug\Client.exe C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Debug\Client.pdb C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Debug\Client.Client.resources -C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\Enums.NET.dll -C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\Enums.NET.pdb -C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\Enums.NET.xml C:\Users\Giorgos Ger\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\Client.exe.config C:\Users\Giorgos Ger\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\Client.exe C:\Users\Giorgos Ger\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\Client.pdb @@ -60,3 +57,5 @@ C:\Users\Giorgos Ger\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and te C:\Users\Giorgos Ger\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Debug\Client.csproj.CopyComplete C:\Users\Giorgos Ger\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Debug\Client.exe C:\Users\Giorgos Ger\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Debug\Client.pdb +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\GMap.NET.Core.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Debug\GMap.NET.WindowsForms.dll diff --git a/tracking and telemetry/Client/obj/Debug/Client.csproj.GenerateResource.cache b/tracking and telemetry/Client/obj/Debug/Client.csproj.GenerateResource.cache index 7c39a06..75ed2fb 100644 Binary files a/tracking and telemetry/Client/obj/Debug/Client.csproj.GenerateResource.cache and b/tracking and telemetry/Client/obj/Debug/Client.csproj.GenerateResource.cache differ diff --git a/tracking and telemetry/Client/obj/Debug/Client.csprojAssemblyReference.cache b/tracking and telemetry/Client/obj/Debug/Client.csprojAssemblyReference.cache index fe5e3ac..536101f 100644 Binary files a/tracking and telemetry/Client/obj/Debug/Client.csprojAssemblyReference.cache and b/tracking and telemetry/Client/obj/Debug/Client.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Client/obj/Debug/Client.exe b/tracking and telemetry/Client/obj/Debug/Client.exe index bc12f52..7fd13b2 100644 Binary files a/tracking and telemetry/Client/obj/Debug/Client.exe and b/tracking and telemetry/Client/obj/Debug/Client.exe differ diff --git a/tracking and telemetry/Client/obj/Debug/Client.pdb b/tracking and telemetry/Client/obj/Debug/Client.pdb index 371092f..222d3be 100644 Binary files a/tracking and telemetry/Client/obj/Debug/Client.pdb and b/tracking and telemetry/Client/obj/Debug/Client.pdb differ diff --git a/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferences.cache index 56afca7..2708768 100644 Binary files a/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferences.cache and b/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 17e3720..af341ce 100644 Binary files a/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/tracking and telemetry/Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/tracking and telemetry/Client/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/tracking and telemetry/Client/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll index 617ede3..b3d1b33 100644 Binary files a/tracking and telemetry/Client/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and b/tracking and telemetry/Client/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/tracking and telemetry/Client/obj/Release/Client.Properties.Resources.resources b/tracking and telemetry/Client/obj/Release/Client.Properties.Resources.resources new file mode 100644 index 0000000..e24cc5c Binary files /dev/null and b/tracking and telemetry/Client/obj/Release/Client.Properties.Resources.resources differ diff --git a/tracking and telemetry/Client/obj/Release/Client.client.resources b/tracking and telemetry/Client/obj/Release/Client.client.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/tracking and telemetry/Client/obj/Release/Client.client.resources differ diff --git a/tracking and telemetry/Client/obj/Debug/build.force b/tracking and telemetry/Client/obj/Release/Client.csproj.CopyComplete similarity index 100% rename from tracking and telemetry/Client/obj/Debug/build.force rename to tracking and telemetry/Client/obj/Release/Client.csproj.CopyComplete diff --git a/tracking and telemetry/Client/obj/Release/Client.csproj.FileListAbsolute.txt b/tracking and telemetry/Client/obj/Release/Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..1a35742 --- /dev/null +++ b/tracking and telemetry/Client/obj/Release/Client.csproj.FileListAbsolute.txt @@ -0,0 +1,30 @@ +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Client.exe.config +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Client.exe +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Client.pdb +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\GMap.NET.Core.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\GMap.NET.WindowsForms.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.Modules.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.SQLite.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.Wpf.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\log4net.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\MAVLink.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Microsoft.Dynamic.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Microsoft.Scripting.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Microsoft.Scripting.Metadata.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\MAVLink.pdb +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.Modules.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.SQLite.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\IronPython.Wpf.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\log4net.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Microsoft.Dynamic.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Microsoft.Scripting.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\bin\Release\Microsoft.Scripting.Metadata.xml +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Release\Client.csprojAssemblyReference.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Release\Client.Properties.Resources.resources +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Release\Client.client.resources +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Release\Client.csproj.GenerateResource.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Release\Client.csproj.CopyComplete +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Release\Client.exe +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Client\obj\Release\Client.pdb diff --git a/tracking and telemetry/Client/obj/Release/Client.csproj.GenerateResource.cache b/tracking and telemetry/Client/obj/Release/Client.csproj.GenerateResource.cache new file mode 100644 index 0000000..093058f Binary files /dev/null and b/tracking and telemetry/Client/obj/Release/Client.csproj.GenerateResource.cache differ diff --git a/tracking and telemetry/Client/obj/Release/Client.csprojAssemblyReference.cache b/tracking and telemetry/Client/obj/Release/Client.csprojAssemblyReference.cache new file mode 100644 index 0000000..727ace7 Binary files /dev/null and b/tracking and telemetry/Client/obj/Release/Client.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Client/obj/Release/Client.exe b/tracking and telemetry/Client/obj/Release/Client.exe new file mode 100644 index 0000000..8246f2a Binary files /dev/null and b/tracking and telemetry/Client/obj/Release/Client.exe differ diff --git a/tracking and telemetry/Client/obj/Release/Client.pdb b/tracking and telemetry/Client/obj/Release/Client.pdb new file mode 100644 index 0000000..12279ba Binary files /dev/null and b/tracking and telemetry/Client/obj/Release/Client.pdb differ diff --git a/tracking and telemetry/Client/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/tracking and telemetry/Client/obj/Release/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..420b791 Binary files /dev/null and b/tracking and telemetry/Client/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/tracking and telemetry/Mavlink/bin/Debug/MAVLink.1.0.5.nupkg b/tracking and telemetry/Mavlink/bin/Debug/MAVLink.1.0.5.nupkg index 07f26b4..6dc2278 100644 Binary files a/tracking and telemetry/Mavlink/bin/Debug/MAVLink.1.0.5.nupkg and b/tracking and telemetry/Mavlink/bin/Debug/MAVLink.1.0.5.nupkg differ diff --git a/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.dll b/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.dll index 7fd8d86..202346a 100644 Binary files a/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.dll and b/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.pdb b/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.pdb index 2e2beb2..1d9db97 100644 Binary files a/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.pdb and b/tracking and telemetry/Mavlink/bin/Debug/net35/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.dll b/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.dll index bf6d23b..693c9aa 100644 Binary files a/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.dll and b/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.pdb b/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.pdb index a41661b..0313a41 100644 Binary files a/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.pdb and b/tracking and telemetry/Mavlink/bin/Debug/net461/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.dll b/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.dll index 667ac08..6738f6f 100644 Binary files a/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.dll and b/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.pdb b/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.pdb index 40aedf5..29aa412 100644 Binary files a/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.pdb and b/tracking and telemetry/Mavlink/bin/Debug/netstandard2.0/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/bin/Release/MAVLink.1.0.5.nupkg b/tracking and telemetry/Mavlink/bin/Release/MAVLink.1.0.5.nupkg new file mode 100644 index 0000000..ca81b62 Binary files /dev/null and b/tracking and telemetry/Mavlink/bin/Release/MAVLink.1.0.5.nupkg differ diff --git a/tracking and telemetry/Mavlink/bin/Release/net35/MAVLink.dll b/tracking and telemetry/Mavlink/bin/Release/net35/MAVLink.dll new file mode 100644 index 0000000..7ef6fe8 Binary files /dev/null and b/tracking and telemetry/Mavlink/bin/Release/net35/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/bin/Release/net35/MAVLink.pdb b/tracking and telemetry/Mavlink/bin/Release/net35/MAVLink.pdb new file mode 100644 index 0000000..29b1f1c Binary files /dev/null and b/tracking and telemetry/Mavlink/bin/Release/net35/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/bin/Release/net461/MAVLink.dll b/tracking and telemetry/Mavlink/bin/Release/net461/MAVLink.dll new file mode 100644 index 0000000..983c786 Binary files /dev/null and b/tracking and telemetry/Mavlink/bin/Release/net461/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/bin/Release/net461/MAVLink.pdb b/tracking and telemetry/Mavlink/bin/Release/net461/MAVLink.pdb new file mode 100644 index 0000000..875c5b9 Binary files /dev/null and b/tracking and telemetry/Mavlink/bin/Release/net461/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.deps.json b/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.deps.json new file mode 100644 index 0000000..059f89f --- /dev/null +++ b/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.deps.json @@ -0,0 +1,47 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "MAVLink/1.0.5": { + "dependencies": { + "NETStandard.Library": "2.0.3" + }, + "runtime": { + "MAVLink.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + } + } + }, + "libraries": { + "MAVLink/1.0.5": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.dll b/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.dll new file mode 100644 index 0000000..b50a85d Binary files /dev/null and b/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.pdb b/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.pdb new file mode 100644 index 0000000..b01fea9 Binary files /dev/null and b/tracking and telemetry/Mavlink/bin/Release/netstandard2.0/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/MAVLink.1.0.5.nuspec b/tracking and telemetry/Mavlink/obj/Debug/MAVLink.1.0.5.nuspec index 01e3d8e..4a22c0f 100644 --- a/tracking and telemetry/Mavlink/obj/Debug/MAVLink.1.0.5.nuspec +++ b/tracking and telemetry/Mavlink/obj/Debug/MAVLink.1.0.5.nuspec @@ -16,8 +16,8 @@ - - - + + + \ No newline at end of file diff --git a/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.csprojAssemblyReference.cache b/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.csprojAssemblyReference.cache index 890390c..2ae24a1 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.csprojAssemblyReference.cache and b/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.dll b/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.dll index 7fd8d86..202346a 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.dll and b/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.pdb b/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.pdb index 2e2beb2..1d9db97 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.pdb and b/tracking and telemetry/Mavlink/obj/Debug/net35/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.csprojAssemblyReference.cache b/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.csprojAssemblyReference.cache index cc76628..7dd6f98 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.csprojAssemblyReference.cache and b/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.dll b/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.dll index bf6d23b..693c9aa 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.dll and b/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.pdb b/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.pdb index a41661b..0313a41 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.pdb and b/tracking and telemetry/Mavlink/obj/Debug/net461/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.csprojAssemblyReference.cache b/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.csprojAssemblyReference.cache index a8dff7c..0de1628 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.csprojAssemblyReference.cache and b/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.dll b/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.dll index 667ac08..6738f6f 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.dll and b/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.pdb b/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.pdb index 40aedf5..29aa412 100644 Binary files a/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.pdb and b/tracking and telemetry/Mavlink/obj/Debug/netstandard2.0/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/obj/Release/MAVLink.1.0.5.nuspec b/tracking and telemetry/Mavlink/obj/Release/MAVLink.1.0.5.nuspec new file mode 100644 index 0000000..6350c6d --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/MAVLink.1.0.5.nuspec @@ -0,0 +1,23 @@ + + + + MAVLink + 1.0.5 + Michael Oborne + Michael Oborne + false + MAVLink 1/2 for Ardupilot + Michael Oborne + + + + + + + + + + + + + \ No newline at end of file diff --git a/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.AssemblyInfo.cs b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.AssemblyInfo.cs new file mode 100644 index 0000000..b61e007 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.AssemblyInfo.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Michael Oborne")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyCopyrightAttribute("Michael Oborne")] +[assembly: System.Reflection.AssemblyDescriptionAttribute("MAVLink 1/2 for Ardupilot")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.5.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.5")] +[assembly: System.Reflection.AssemblyProductAttribute("MAVLink")] +[assembly: System.Reflection.AssemblyTitleAttribute("MAVLink")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Resources.NeutralResourcesLanguageAttribute("en")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.AssemblyInfoInputs.cache b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.AssemblyInfoInputs.cache new file mode 100644 index 0000000..fc71ab8 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +1bc62334a99925fe2b716421d0f5a983cbf2309e diff --git a/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.assets.cache b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.assets.cache new file mode 100644 index 0000000..16c6068 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.assets.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.csproj.FileListAbsolute.txt b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..cbceee9 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.csproj.FileListAbsolute.txt @@ -0,0 +1,7 @@ +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\bin\Release\net35\MAVLink.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\bin\Release\net35\MAVLink.pdb +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net35\MAVLink.csprojAssemblyReference.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net35\MAVLink.AssemblyInfoInputs.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net35\MAVLink.AssemblyInfo.cs +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net35\MAVLink.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net35\MAVLink.pdb diff --git a/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.csprojAssemblyReference.cache b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.csprojAssemblyReference.cache new file mode 100644 index 0000000..7b45a39 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.dll b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.dll new file mode 100644 index 0000000..7ef6fe8 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.pdb b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.pdb new file mode 100644 index 0000000..29b1f1c Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net35/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.AssemblyInfo.cs b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.AssemblyInfo.cs new file mode 100644 index 0000000..b61e007 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.AssemblyInfo.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Michael Oborne")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyCopyrightAttribute("Michael Oborne")] +[assembly: System.Reflection.AssemblyDescriptionAttribute("MAVLink 1/2 for Ardupilot")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.5.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.5")] +[assembly: System.Reflection.AssemblyProductAttribute("MAVLink")] +[assembly: System.Reflection.AssemblyTitleAttribute("MAVLink")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Resources.NeutralResourcesLanguageAttribute("en")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.AssemblyInfoInputs.cache b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.AssemblyInfoInputs.cache new file mode 100644 index 0000000..fc71ab8 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +1bc62334a99925fe2b716421d0f5a983cbf2309e diff --git a/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.assets.cache b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.assets.cache new file mode 100644 index 0000000..611e2c1 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.assets.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.csproj.FileListAbsolute.txt b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..45cad8c --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.csproj.FileListAbsolute.txt @@ -0,0 +1,7 @@ +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\bin\Release\net461\MAVLink.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\bin\Release\net461\MAVLink.pdb +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net461\MAVLink.csprojAssemblyReference.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net461\MAVLink.AssemblyInfoInputs.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net461\MAVLink.AssemblyInfo.cs +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net461\MAVLink.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\net461\MAVLink.pdb diff --git a/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.csprojAssemblyReference.cache b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.csprojAssemblyReference.cache new file mode 100644 index 0000000..32472c0 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.dll b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.dll new file mode 100644 index 0000000..983c786 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.pdb b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.pdb new file mode 100644 index 0000000..875c5b9 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/net461/MAVLink.pdb differ diff --git a/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.AssemblyInfo.cs b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.AssemblyInfo.cs new file mode 100644 index 0000000..b61e007 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.AssemblyInfo.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Michael Oborne")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyCopyrightAttribute("Michael Oborne")] +[assembly: System.Reflection.AssemblyDescriptionAttribute("MAVLink 1/2 for Ardupilot")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.5.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.5")] +[assembly: System.Reflection.AssemblyProductAttribute("MAVLink")] +[assembly: System.Reflection.AssemblyTitleAttribute("MAVLink")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Resources.NeutralResourcesLanguageAttribute("en")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.AssemblyInfoInputs.cache b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.AssemblyInfoInputs.cache new file mode 100644 index 0000000..fc71ab8 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +1bc62334a99925fe2b716421d0f5a983cbf2309e diff --git a/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.assets.cache b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.assets.cache new file mode 100644 index 0000000..abc4e63 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.assets.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.csproj.FileListAbsolute.txt b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..b34b258 --- /dev/null +++ b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.csproj.FileListAbsolute.txt @@ -0,0 +1,8 @@ +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\bin\Release\netstandard2.0\MAVLink.deps.json +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\bin\Release\netstandard2.0\MAVLink.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\bin\Release\netstandard2.0\MAVLink.pdb +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\netstandard2.0\MAVLink.csprojAssemblyReference.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\netstandard2.0\MAVLink.AssemblyInfoInputs.cache +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\netstandard2.0\MAVLink.AssemblyInfo.cs +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\netstandard2.0\MAVLink.dll +C:\Users\GeorgiosGerontakis\Desktop\Talos_Drones_Tracking_and_Telemetry\tracking and telemetry\Mavlink\obj\Release\netstandard2.0\MAVLink.pdb diff --git a/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.csprojAssemblyReference.cache b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.csprojAssemblyReference.cache new file mode 100644 index 0000000..dffb5bb Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.csprojAssemblyReference.cache differ diff --git a/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.dll b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.dll new file mode 100644 index 0000000..b50a85d Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.dll differ diff --git a/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.pdb b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.pdb new file mode 100644 index 0000000..b01fea9 Binary files /dev/null and b/tracking and telemetry/Mavlink/obj/Release/netstandard2.0/MAVLink.pdb differ